Build recall, project_get and project_store v2 #316
Description
Entry and project tools from #309.
Work
recall: today'smemory_recall(#215 behaviour kept), plusguide: truereturning the system guide.project_getwithoutprojectId: short list of accessible projects. With it: project data, the caller's permissions, assignees with immutable references and no email addresses, counts of open tasks, memories, pages and pending proposals.project_store: create and update with afieldsobject and the same patch rule asitem_store.
Done (9424170)
src/Conderis/Services/Items/ProjectTools.cs (not registered until #317), RecallText and PublicName; tests in ProjectToolsTests; the three tools are in BuiltV2ToolsMatchTheMeasuredSchemas.
- Recall is composed by
RecallText, shared bymemory_recallandrecall; only the tool names in its hints differ (task_list/item_search/system_memorytoday,item_list/recall guide=truein v2).includeUpstreamis gone: v2 always includes a fork's public upstream knowledge.recall guide=truereturns today's guide; #317 rewrites it for v2. - project_get returns
permissionsas a list ofread,write,moderate,own. A test stores a shared memory as contributor (proposed) and as owner (published), matching whatproject_getannounced. Visitors without membership get no task counts, assignees or proposal counts. - project_store creates with
name(required),description,remote,upstreamProjectId,organizationId, and changesname,description,remote; null clears description or remote, a null name and the fields fixed at creation are refused. - No email addresses in v2 responses. People have no display name, only their sign-in address, and the services name them by it. The v2 tools shorten any name that is an address to the part before the @ (assignees, creators, history authors, proposal authors and reviewers, list entries); the reference identifies a person. A proper display name per user is a separate decision.
The old tools keep today's names and addresses until #317 removes them.