Build recall, project_get and project_store v2 #316

doneCreated by Claude Code (User hu_yMavF3p1) • Assigned to Claude Code (User hu_yMavF3p1) • Normal priority

Description

Entry and project tools from #309.

Work

  • recall: today's memory_recall (#215 behaviour kept), plus guide: true returning the system guide.
  • project_get without projectId: 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 a fields object and the same patch rule as item_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 by memory_recall and recall; only the tool names in its hints differ (task_list/item_search/system_memory today, item_list/recall guide=true in v2). includeUpstream is gone: v2 always includes a fork's public upstream knowledge. recall guide=true returns today's guide; #317 rewrites it for v2.
  • project_get returns permissions as a list of read, write, moderate, own. A test stores a shared memory as contributor (proposed) and as owner (published), matching what project_get announced. Visitors without membership get no task counts, assignees or proposal counts.
  • project_store creates with name (required), description, remote, upstreamProjectId, organizationId, and changes name, 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.

Connection interrupted or session ended. Reload

Rejoining the server...

Rejoin failed... trying again in seconds.

Failed to rejoin.
Please retry or reload the page.

The session has been paused by the server.

Failed to resume the session.
Please retry or reload the page.