Repository navigation
A conversation can be told only about its own work (agents.set_scope) - #2462
Merged
Merged
Conversation
…tion context A conversation's meta.json can now store scope "conversation". Such a conversation gets no <elsewhere> block on its turns, and its tasks tool lists and addresses only its own tasks (no other conversations' landed rows, no running-in-other-windows or everywhere sections). The default, project, keeps today's behaviour. The word is written under the meta lock and read beside the turn and in the tasks tool, so a live conversation follows it from its next turn. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…pening it
agents.set_scope {id, scope} stores project or conversation in the
conversation's meta.json and answers the stored word. It never opens, warms or
interrupts the conversation. Engines that serve it announce agents.scope.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… the scope The new scope words are WorkScopeProject/WorkScopeConversation (ScopeProject already names an answer scope). agents.set_scope returns *AgentScope as typed handlers must. saveMetaLocked keeps the stored scope when a whole-Meta writer loaded before a scope change saves with none, and project is stored as its own word so a reset survives that rule too. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
AbirAbbas
force-pushed
the
workstreams/l-fix9-cross
branch
from
November 6, 2026 14:30
ea56746 to
2e3f564
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
A conversation can now be told only about its own work. Today every conversation in a folder gets an
<elsewhere>block with the other conversations' landed and running work there (with the files each wrote), and itstaskstool lists the folder's whole task index. A client that keeps a long-lived conversation in a person's shared work folder needs that conversation to see only its own work while keeping its folder, transcript and history.session.Meta.Scope:conversation, or absent forproject(today's behaviour). Written bysession.SetConversationScopeunder the existing cross-process meta lock; the session's own stamps patch only their fields, so it survives them.refreshElsewhereand in thetaskstool (both already read disk), so a live conversation follows the stored word from its next turn with no remote-protocol change. Scoped: no<elsewhere>block; the tasks tool lists and addresses only this conversation's rows; no running-in-other-windows or everywhere sections. The person's@list, task nodes and the write-safety warnings (ground shift, preflight) are unchanged.agents.set_scope {id, scope}→{id, scope}; hello featureagents.scope. It never opens, warms or interrupts the conversation (likeagents.mark_seen).bad_params,not_found,conflict(lent conversation or no local folder),unknown_methodon engines without the door.Why a stored switch rather than moving a conversation to another folder:
Config.Workspaceis captured at launch and the session folder, task index, presence, told stamp and transcript URIs are keyed on it; a move would re-key all of them. A live in-memory dial would need new remote-protocol plumbing because app conversations areremote.Agentconnections. The stored word is one field, one setter and two read sites. (The Workstreams plan, L-FIX9.)Validation contract
<elsewhere>block despite another conversation's recent landing and running taskTestConversationScopeLeavesOtherWorkOutOfTurnContextTestConversationScopeTasksReachOnlyItsOwnRows,TestConversationScopeKeepsItsLiveGraphWhileFilteringTheMergedIndex,TestConversationScopeLeavesATaskNodesChildrenVisibleprojectbehaves exactly as beforeTestProjectScopeKeepsOtherWorkVisible,TestConversationScopeDefaultsQuietlyToProjectTestConversationScopeSurvivesReloadAndLaterMetadataStampsTestConversationScopeClearsAnEarlierBlockOnTheNextReadingTestConversationScopeChangesOnlyItsStoredWord,TestConversationScopeStaysInMetaBesideSealedConversationSettingsinternal/appwire/agent_scope_test.go,cmd/codeaf/appscope_test.goTestConversationScopeRefusesUnknownWordsAndMissingConversationsLeft for later
The scope is local meta.json state: it is not carried when a conversation moves to another computer.
🤖 Generated with Claude Code