Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
299 commits
Select commit Hold shift + click to select a range
2159b6f
fixup! feat(migration): add parent_id column to conversation table fo…
Leoyzen Mar 6, 2026
11da468
fixup! feat(RFC-0011): implement subagent independent session generation
Leoyzen Mar 6, 2026
bc63244
fixup! feat(RFC-0011): implement subagent independent session generation
Leoyzen Mar 6, 2026
c5e1265
fixup! feat(sessions): add parent_id filtering to SessionStore protoc…
Leoyzen Mar 6, 2026
f3697ca
fixup! feat: implement RFC-0004 configurable skills loading paths
Leoyzen Mar 6, 2026
9c27992
fixup! feat(events): add SpawnSessionStart event for explicit subsess…
Leoyzen Mar 6, 2026
21deebf
fixup! fix(rebase): adapt code to main branch session/storage archite…
Leoyzen Mar 6, 2026
2ffa769
fix(tests): fix collection errors blocking test suite
Leoyzen Mar 6, 2026
caa33e6
fix(skills): fix skill parsing to use correct field names and frontma…
Leoyzen Mar 6, 2026
27bf370
fixup! fixup! fix(rebase): adapt code to main branch session/storage …
Leoyzen Mar 6, 2026
b3fa449
fixup! fixup! fix(rebase): adapt code to main branch session/storage …
Leoyzen Mar 6, 2026
5d39902
fixup! feat(config): implement unified config-relative path resolution
Leoyzen Mar 6, 2026
fcce914
fixup! feat: implement unified session storage API with StorageManager
Leoyzen Mar 6, 2026
9c2b15a
fixup! feat: implement unified session storage API with StorageManager
Leoyzen Mar 6, 2026
ec1e2fa
chore: update rfcs directory structure.
Leoyzen Mar 9, 2026
44b3e50
fix: add missing AsyncGenerator import
Leoyzen Mar 9, 2026
e8eb5a4
fix(mcp_client): preserve parameter descriptions from MCP tools
Leoyzen Mar 10, 2026
a09bf3b
feat(opencode): add multi-question elicitation support
Leoyzen Mar 12, 2026
7e18a60
test(opencode): add multi-question elicitation tests
Leoyzen Mar 12, 2026
611a717
docs(rfc): mark RFC-0015 as approved with implementation notes
Leoyzen Mar 12, 2026
725a241
fix(opencode): add missing priority field to Todo model and API response
Leoyzen Mar 12, 2026
49265fa
fix(opencode): use json.dumps instead of anyenv.dump_json for better …
Leoyzen Mar 16, 2026
6c85207
fixup! feat(opencode): implement EventProcessor and EventProcessorCon…
Leoyzen Mar 16, 2026
e993e99
fix(opencode): use standard message.part.delta events for text/thinki…
Leoyzen Mar 17, 2026
254c18e
fix(migration): make agent_type migration idempotent
Leoyzen Mar 17, 2026
e173913
fixup! fix(migration): make agent_type migration idempotent
Leoyzen Mar 17, 2026
3e511a6
fixup! fix(migration): make agent_type migration idempotent
Leoyzen Mar 17, 2026
9c17472
fixup! feat(opencode): implement EventProcessor and EventProcessorCon…
Leoyzen Mar 17, 2026
2c1b2c1
feat(slash-commands): RFC-0016 - Unified Skill-to-Slash Command Archi…
Leoyzen Mar 18, 2026
5a29ee0
feat(opencode): RFC-0017 Skill Commands Support
Leoyzen Mar 18, 2026
4af377d
fix: add missing SessionUpdatedEvent import in session_routes.py
Leoyzen Mar 19, 2026
72b02bd
fix: allow safe break from run_stream() by isolating pydantic-ai iter…
Leoyzen Mar 23, 2026
c95c0cc
fix(opencode): mark all agents as primary role
Leoyzen Mar 27, 2026
356202d
fix(opencode): sync model changes from TUI to agent
Leoyzen Mar 27, 2026
188d6f3
debug(opencode): add detailed logging for model switching diagnostics
Leoyzen Mar 27, 2026
6dfde52
fix(opencode): use model_id as variant name for model switching
Leoyzen Mar 27, 2026
6624ebb
feat(skills): add support for Agent Skills Spec frontmatter fields
Leoyzen Apr 1, 2026
1e01bd7
feat(skills): filter disable_model_invocation skills in tools
Leoyzen Apr 1, 2026
e1f3dca
fix(opencode): add per-session locks to prevent concurrent message pr…
Leoyzen Apr 2, 2026
12177eb
test(opencode): fix outdated test expectations for PartDeltaEvent
Leoyzen Apr 2, 2026
e8cd77e
fix(opencode): create user message before lock to show queued status
Leoyzen Apr 2, 2026
0d74e19
feat(opencode): use agent.queue_prompt() for busy session handling
Leoyzen Apr 2, 2026
8db2357
feat: Implement RFC-0019 MCP Server Display Name Separation
Leoyzen Apr 2, 2026
e6b08f2
fix(opencode-server): set input_provider when switching sessions
Leoyzen Apr 2, 2026
691ece6
fix: session title persistence in OpenCode protocol
Leoyzen Apr 2, 2026
231db51
fix: resolve OpenCode TUI session recovery issues
Leoyzen Apr 2, 2026
5fa234b
fix: OpenCodeStorageProvider creates session files on save_session
Leoyzen Apr 2, 2026
f59728d
fix: resolve OpenCode TUI session recovery issues and add MessageWith…
Leoyzen Apr 2, 2026
2c84dc1
fix: trigger title generation on first user message in OpenCode server
Leoyzen Apr 2, 2026
aca06db
fix: enable attachment capability for manually configured model_variants
Leoyzen Apr 2, 2026
3907a9c
fix: enable multimodal image support for OpenCode server
Leoyzen Apr 2, 2026
97df476
fix: use storage manager's get_session_messages in native agent load_…
Leoyzen Apr 2, 2026
97b5e62
fix: correct TypeAdapter type annotations in serialization module
Leoyzen Apr 3, 2026
e7876ea
fix(opencode): prevent cross-session history contamination
Leoyzen Apr 3, 2026
a3a1e5d
fixup! fix(opencode): prevent cross-session history contamination
Leoyzen Apr 4, 2026
35fd6b7
fix(opencode): include child_session_id in subagent_key to prevent du…
Leoyzen Apr 4, 2026
997b7fa
fix(agents): correct finally block to only set cancelled on actual ca…
Leoyzen Apr 5, 2026
a89c06c
refactor(agents): migrate _cancelled and _current_stream_task to Agen…
Leoyzen Apr 5, 2026
ea1528a
refactor(agents): migrate _event_queue and _injection_manager to Agen…
Leoyzen Apr 5, 2026
e763ef7
docs(rfc): update RFC-0021 status to ACCEPTED and add implementation …
Leoyzen Apr 5, 2026
9d58270
test(opencode): fix subagent_key format in SpawnSessionStart tests
Leoyzen Apr 5, 2026
c8699b7
fix(agents): pass run_ctx to get_context in _stream_events
Leoyzen Apr 5, 2026
b108337
fix(agents): propagate run_ctx in tool_wrapping to fix event queue is…
Leoyzen Apr 5, 2026
24cdb56
fixup! fix(agents): propagate run_ctx in tool_wrapping to fix event q…
Leoyzen Apr 5, 2026
cdfb2a3
fix(agents): pass run_ctx to get_agentlet() for tool context isolation
Leoyzen Apr 5, 2026
82135ac
fixup! fix(agents): propagate run_ctx in tool_wrapping to fix event q…
Leoyzen Apr 5, 2026
4c9b4f0
feat(workers): add RFC-0015 session management to worker tools
Leoyzen Apr 7, 2026
f54ff89
Merge PR-1 through PR-4: Core infrastructure and RFC implementations
Apr 7, 2026
f83bf74
Merge PR-1 through PR-4: Core infrastructure and RFC implementations
Apr 7, 2026
85950e6
Merge PR-5: OpenCode Subagent Core (RFC-0012/0013/0014)
Apr 7, 2026
bfdf07c
Implement RFC-0015: Cross-Session Event Routing (Core Only)
Leoyzen Feb 12, 2026
5c11512
docs(rfc): mark RFC-0015 as approved with implementation notes
Leoyzen Mar 12, 2026
82efdf0
feat(opencode): add multi-question elicitation support
Leoyzen Mar 12, 2026
65a0280
test(opencode): add multi-question elicitation tests
Leoyzen Mar 12, 2026
df6f2e7
fix: enable multimodal image support for OpenCode server
Leoyzen Apr 2, 2026
4b0cd69
fix: enable attachment capability for manually configured model_variants
Leoyzen Apr 2, 2026
ba9bcaf
Merge PR-6: Cross-Session Event Routing (RFC-0015/0016)
Apr 7, 2026
7d7d1d9
Merge PR-6: Cross-Session Event Routing (RFC-0015/0016)
Apr 7, 2026
4808166
fix(tests): update test_openai_config to use valid OpenAI identifier
Apr 7, 2026
ed831e6
feat(slash-commands): RFC-0016 - Unified Skill-to-Slash Command Archi…
Leoyzen Mar 18, 2026
c1d27da
fix: allow safe break from run_stream() by isolating pydantic-ai iter…
Leoyzen Mar 23, 2026
0c379c8
fix(opencode): mark all agents as primary role
Leoyzen Mar 27, 2026
018853c
debug(opencode): add detailed logging for model switching diagnostics
Leoyzen Mar 27, 2026
cfeb7a8
feat(skills): add support for Agent Skills Spec frontmatter fields
Leoyzen Apr 1, 2026
d036afa
feat(skills): filter disable_model_invocation skills in tools
Leoyzen Apr 1, 2026
3459bab
fix(opencode): add per-session locks to prevent concurrent message pr…
Leoyzen Apr 2, 2026
2c435c7
fix(opencode): create user message before lock to show queued status
Leoyzen Apr 2, 2026
0a834c3
feat(opencode): use agent.queue_prompt() for busy session handling
Leoyzen Apr 2, 2026
ac49d42
feat(opencode): RFC-0017 Skill Commands Support
Leoyzen Mar 18, 2026
7bb5376
test(opencode): fix outdated test expectations for PartDeltaEvent
Leoyzen Apr 2, 2026
bb9e78f
feat: Implement RFC-0019 MCP Server Display Name Separation
Leoyzen Apr 2, 2026
c33d0e2
Merge PR-7: Skills Command System (RFC-0016/0017/0019)
Apr 7, 2026
c2e4d8f
test(manifest): add metadata field tests (red)
Leoyzen Jan 28, 2026
1ef1f28
feat(manifest): allow yaml anchors and metadata fields
Leoyzen Jan 28, 2026
3a27bef
test(manifest): fix regression test for missing response reference
Leoyzen Jan 28, 2026
1025ea5
fix: update logging format and fix type issues
Leoyzen Jan 28, 2026
15bcb9d
feat(manifest): add patternProperties schema for YAML LSP compatibility
Leoyzen Jan 28, 2026
39f1a88
fix: Pass subagent_display_mode to AgentPoolACPAgent in _start_async
Leoyzen Jan 30, 2026
71d7e0c
optimize acp event handling.
Leoyzen Feb 1, 2026
c5d9696
feat(tools): implement extended tool definitions with native Pydantic…
Leoyzen Feb 2, 2026
9b69bcb
docs: update and move RFC-0002 to implemented
Leoyzen Feb 2, 2026
d6cb98d
docs(rfc): move RFC-0003 to accepted
Leoyzen Feb 2, 2026
1654994
Merge: develop/agentic into feature/merge_phi65_phase7-skill-commands
Leoyzen Feb 6, 2026
794ea2f
Merge develop/agentic into feature/merge-phi65-phase7-skill-commands
Apr 7, 2026
0259db6
fix: resolve merge conflicts in event_converter and tests
Apr 7, 2026
caf36df
fix: add missing ACPPoolServerConfig import
Apr 7, 2026
e2a9c19
fix: resolve syntax errors in sql_provider.py
Apr 7, 2026
48e3bcf
Fix set_run_context calls in codex_agent, acp_agent, and claude_code_…
Apr 7, 2026
6f4402f
fix: convert config_file_path to absolute path
Apr 7, 2026
9c27f3c
fix: convert primary_path to absolute path in resolve_config
Apr 7, 2026
9ccc350
fix: remove duplicate manifest assignment
Apr 7, 2026
13c8462
fix: remove duplicate manifest and model_validate
Apr 7, 2026
8f8db3d
fix: correct indentation in serve_opencode.py
Apr 7, 2026
6ae45c5
fix: remove duplicate manifest, fix indentation, convert paths to abs…
Apr 7, 2026
4932089
fix: remove duplicate manifest.model_copy() call in serve_opencode.py
Apr 7, 2026
34c8732
fix: correct ResolvedConfig field name to primary_path
Apr 7, 2026
4d1f195
fix: resolve config_file_path for agents/teams and ensure ConfigConte…
Apr 7, 2026
40c1820
fix: resolve config_file_path for agents/teams and ensure ConfigConte…
Apr 7, 2026
f48c9ab
fix: delete some markdown files
Apr 7, 2026
d21341e
fix: del commit
Apr 7, 2026
d418ee5
fix: del some private code
Apr 7, 2026
742ac61
fix: resolve runtime import and type errors
Apr 8, 2026
b0de27b
refactor: implement RFC-0021 concurrent execution safety
Apr 8, 2026
26ff6b4
perf: convert blocking I/O to async operations
Apr 8, 2026
fed853b
chore: move ag-ui-protocol to core dependencies
Apr 8, 2026
7a8d44e
test: add comprehensive tests for code fixes
Apr 8, 2026
62f05a2
fix: resolve clawd_code_sdk import issues in claude_provider
Apr 8, 2026
7eae884
test: fix test imports and ContextVar test
Apr 8, 2026
328f875
Merge upstream/develop/agentic for latest claude_sdk code
Apr 8, 2026
24b2896
test: fix async I/O test mocking for SessionMetadata
Apr 8, 2026
9ad86a3
fix: resolve merge conflicts - remove duplicate agent execution and a…
Apr 8, 2026
6bc2cf2
refactor: remove duplicate session existence check in SQLModelProvide…
Apr 8, 2026
070c72d
fix: resolve type and lint errors in storage/manager.py
Apr 8, 2026
973ac1e
fix: restore MemorySessionStore fallback in get_session_store
Apr 8, 2026
21d652a
fix: make SQL provider database dialect-agnostic
Apr 8, 2026
f034bdb
fix: remove restrictive history processor parameter name validation
Apr 8, 2026
1257c3b
Enhance claude_message_to_events to support TextBlock, ThinkingBlock,…
Apr 8, 2026
0b06c7f
fix: resolve code review issues from PR #10
Apr 8, 2026
86d3720
fix: resolve code review issues from PR #10 - high priority fixes
Apr 8, 2026
49c1c26
fix: code review — run_ctx isolation, Claude paths, history processors
Apr 8, 2026
1419f73
fix: Claude session title fallback and ACP subagent_display_mode typing
Apr 8, 2026
b343c55
fix: resolve code review issues from PR Leoyzen#10 - diff priority fixes
Apr 8, 2026
3dd829f
docs(test): document Conversation.parent_id and add ORM regression test
Apr 8, 2026
de99330
docs(sql): clarify log_session parent_id vs Conversation ORM and migr…
Apr 8, 2026
80aef41
fix: restore session storage methods accidentally removed in 070c72d8b
Apr 8, 2026
2502f08
fix(acp): narrow set_session_model except for unsupported model switc…
Apr 8, 2026
7e8cef7
fix(sql): handle duplicate session log_session upsert on MySQL/MariaDB
Apr 8, 2026
4b5b79c
fix: ContextVar reset, dialect-scoped insert, tool name in Claude events
Apr 8, 2026
a1829fc
chore: address code review — cleanup, narrower model-switch errors
Apr 8, 2026
4e59c0d
fix(opencode): handle RunStartedEvent to update session status to busy
Leoyzen Apr 8, 2026
bdec9e4
test: lock PR #10 review invariants; restore stable model-switch hand…
Apr 8, 2026
559839f
fix(tools): validate schema_override.parameters; document ON CONFLICT id
Apr 8, 2026
4527c03
fix(base_agent): guard ContextVar reset token in finally (RFC-0021)
Apr 8, 2026
39daf3b
fix(tools): suppress known ToolResult return-schema UserWarning in _g…
Apr 8, 2026
de5a3cc
fix(agents): preserve user message on elicitation cancel
Leoyzen Apr 8, 2026
816061a
test(agents): add test for elicitation cancel history preservation
Leoyzen Apr 8, 2026
a460770
Merge pull request #10 from ykf173/feature/merge-phi65-phase7-skill-c…
Leoyzen Apr 9, 2026
c03b78e
fix: PR #10 review + get_message session scoping
Apr 8, 2026
9db915b
Security improvements and async fixes
Apr 8, 2026
33c8004
fix: use agent_type parameter in create_child_session
Apr 8, 2026
c8602fd
fix: preserve tool inputs in ToolCallCompleteEvent
Apr 8, 2026
dd3ccb7
fix: allow string session type in history_processors check
Apr 8, 2026
31e7559
feat: fix bug, reset config-schema.json
Apr 9, 2026
db4eb94
fix: resolve code review issues from PR #11
Apr 9, 2026
003b25b
Merge pull request #11 from ykf173/feature/fix_project_path
Leoyzen Apr 9, 2026
ead6a58
fix skills path
Apr 9, 2026
8a5f59c
Merge pull request #13 from ykf173/feature/fix_skills_config
Leoyzen Apr 9, 2026
148608b
feat(opencode): implement GET /skill endpoint for skills listing
Leoyzen Apr 10, 2026
d27d6a2
chore: update rfcs
Leoyzen Apr 10, 2026
ee98cc1
feat(skills): implement MCP Skills Resources Provider Protocol
Leoyzen Apr 13, 2026
396e64b
fix(opencode): restructure exception handling to prevent hang on abort
Leoyzen Apr 13, 2026
2af2c87
fix: add opencode v144 event protocol support rfc.
Leoyzen Apr 15, 2026
5bec455
fix(skills): preserve MCP skill original_name for read_resource URI c…
Leoyzen Apr 16, 2026
639f775
feat(skills): normalize skill names to kebab-case and update test fix…
Leoyzen Apr 16, 2026
b4d2e11
fix(skill-refs): resolve skill:// URI reference loading across provid…
Leoyzen Apr 17, 2026
e8a671e
fix(skill-refs): return only reference content when loading skill:// …
Leoyzen Apr 17, 2026
5f2765f
Fix/title gen nonblocking (#17)
Leoyzen Apr 18, 2026
376d4d1
fix(agents): improve interrupt to directly cancel iteration task and …
Leoyzen Apr 17, 2026
705f11d
fix(opencode): expose skills in TUI slash command autocomplete (#19)
Leoyzen Apr 18, 2026
3013b8b
test(opencode): add integration tests for skill autocomplete and sess…
Leoyzen Apr 18, 2026
41c9326
fix(opencode): unify session cwd source and add directory query param…
Leoyzen Apr 18, 2026
7683dfd
feat(opencode-server): OpenCode v1.4.4+ compatibility (#21)
Leoyzen Apr 19, 2026
33b2470
fix(opencode): propagate model_id and mode in SubAgentEvent/SpawnSess…
Leoyzen Apr 19, 2026
dacfb71
fix(storage): add cwd parameter to list_session_ids across storage pr…
Leoyzen Apr 19, 2026
a418ffa
fix(opencode): list sessions by cwd instead of agent_name to show cro…
Leoyzen Apr 19, 2026
b7e16cc
fix(opencode-server): inherit project_id and directory from parent se…
Leoyzen Apr 19, 2026
e946f1b
fix(opencode): restructure Model/Provider schema for opencode SDK com…
Leoyzen Apr 19, 2026
4ba3d75
fix(opencode): transition subagent ToolPart to error state on RunErro…
Leoyzen Apr 23, 2026
68a88ea
feat(opencode): per-session agent isolation (RFC-0026) (#18)
Leoyzen Apr 24, 2026
dfbbd22
RFC-0029: Agent Reactivation via Pending Prompt Queue (#27)
Leoyzen Apr 30, 2026
336d5c7
docs: RFC-0028 Delegation Provider Session Adaptation (#25)
Leoyzen Apr 30, 2026
528164d
fix(storage): add cwd parameter to OpenCodeStorageProvider.list_sessi…
Leoyzen May 1, 2026
a2877be
fix(opencode): clear session revert marker on new message
Leoyzen May 8, 2026
6aa2167
feat(acp): add elicitation schema types
Leoyzen May 13, 2026
f6fdaf1
feat: add acp streamable http rfc. (#31)
Leoyzen May 22, 2026
8f4f10c
feat(acp): add elicitation/create JSON-RPC method with capability neg…
Leoyzen May 22, 2026
125a16f
fix: Improve shutdown handling in WebSocket serve functions (#32)
A-Qiang May 25, 2026
c8533a0
fix(acp): align ElicitationCapabilities with ACP spec
Leoyzen May 22, 2026
3d6a0fc
fix: isolate session-level MCP servers to prevent tool name conflicts
Leoyzen May 22, 2026
2234b8a
feat(acp): add --show-events and --show-events-detailed CLI flags for…
Leoyzen May 26, 2026
afc8cf3
fixup! feat(acp): add elicitation/create JSON-RPC method with capabil…
Leoyzen May 26, 2026
b77775b
fix(acp): expose skill commands in initialize response
Leoyzen May 26, 2026
a93aab4
fix: migrate PydanticAI deprecated APIs to v1.102
Leoyzen May 26, 2026
5f9d01d
feat: ACP Slash Commands Protocol Compliance (#33)
Leoyzen May 26, 2026
a3462c8
feat(acp): implement per-session agent isolation (#34)
Leoyzen May 26, 2026
802999c
fix(opencode-server): align /project/current ID with GlobalEvent proj…
Leoyzen May 26, 2026
c0a071e
fix(acp): respect manifest skills.include_default for ACP skill loading
Leoyzen May 26, 2026
b8d2e1e
docs(acp): ACP Session Config Options
Leoyzen May 27, 2026
3054e80
fix(acp): align session close capability with ACP spec
Leoyzen May 27, 2026
c25634b
fix(acp): suppress all exceptions during sender.close() to prevent We…
Leoyzen May 27, 2026
16ce06d
fix(acp): advertise session/fork capability correctly (P1 #2)
Leoyzen May 27, 2026
484ed53
refactor(acp): rename session/stop -> session/close internally (P1 #1)
Leoyzen May 27, 2026
bec2169
fix(acp): make ToolCallLocation.line optional (P1 #4)
Leoyzen May 27, 2026
79c351e
feat(acp): implement typed providers/* native methods (P1 #3)
Leoyzen May 27, 2026
aed9a92
fix(acp): emit ToolCallStart immediately on tool name, then update to…
Leoyzen May 27, 2026
d4880b8
feat: Per-Session TodoTracker Isolation (#36)
Leoyzen May 27, 2026
44c40e7
fix(acp): emit ToolCallStart on PartStartEvent for ToolCallPart and u…
Leoyzen May 27, 2026
3dbe7a3
fix(acp): disable built-in command exposure to align with OpenCode
Leoyzen May 27, 2026
65a3f22
fix(acp): inject skill instructions into staged_content for slash com…
Leoyzen May 28, 2026
d752951
fix(pool): include MCP skills in SkillsInstructionProvider
Leoyzen May 28, 2026
ddf0cb6
fix: include user args in skill command staged content
Leoyzen May 28, 2026
a7f280e
fix(acp): send available_commands_update during session init
Leoyzen May 28, 2026
a792868
fix(acp): capture AvailableCommandsUpdate during session load
Leoyzen May 28, 2026
111ffcd
fix(acp): prevent race condition in load_session notification processing
Leoyzen May 28, 2026
76e98c0
fix(acp-server): send error notifications synchronously to prevent or…
Leoyzen May 28, 2026
d7c1c4c
test(acp): add notification replay coverage
Leoyzen May 28, 2026
a5f76a5
test(acp-server): add available commands update coverage
Leoyzen May 28, 2026
57aa2f0
test(acp-server): add session load and resume coverage
Leoyzen May 28, 2026
6d71a7a
feat(acp): add toast notification mechanism via ExtNotification
Leoyzen May 28, 2026
2ec7c73
test(acp): add toast notification tests
Leoyzen May 28, 2026
c1c2c94
fix(acp): propagate pool-level MCP tools to per-session agents
Leoyzen May 28, 2026
33d8152
fix(acp): Register global commands from manifest and improve permissi…
A-Qiang May 29, 2026
720ee8a
fix(acp): route session/resume and session/fork in _agent_handler
Leoyzen May 29, 2026
bcd8ac8
feat(acp): MCP-over-ACP Transport Support (#35)
Leoyzen Jun 1, 2026
7dea913
feat(orchestrator): implement unified session orchestration, capabili…
Leoyzen Jun 5, 2026
0fad1a0
fix(acp_server): address PR review comments on race conditions and ty…
Leoyzen Jun 1, 2026
5e49b4a
chore(openspec): archive completed changes and sync specs to main
Leoyzen Jun 5, 2026
fc31c57
fix(agentpool): forward input_provider through SessionPool.run_stream…
Leoyzen Jun 5, 2026
645f6a4
fix(agentpool): propagate input_provider through OpenCode/ACP to prev…
Leoyzen Jun 5, 2026
bfffc60
fix(agentpool): persist input_provider in SessionState for auto-resume
Leoyzen Jun 5, 2026
2a0e8d7
fix(acp): support bidirectional mcp/message per MCP-over-ACP spec
Leoyzen Jun 5, 2026
1b547e3
fix(resource_providers): set __wrapped__ on pydantic-ai wrapper for p…
Leoyzen Jun 5, 2026
02f76f2
fix(acp): expose session MCP tools to native agent via SessionPool
Leoyzen Jun 5, 2026
51ee46d
feat(config): default-enable session pool for ACP and OpenCode
Leoyzen Jun 5, 2026
560ad8e
fix(acp_server): deduplicate session MCP providers on repeated prompts
Leoyzen Jun 5, 2026
ad638fe
refactor(storage): remove sync title callback, use metadata_generated…
Leoyzen Jun 5, 2026
c662f29
docs(openspec): archive remove-title-callback-use-metadata-signal change
Leoyzen Jun 5, 2026
2eacba4
fix(agentpool): propagate input_provider to subagent and worker deleg…
Leoyzen Jun 5, 2026
857159f
feat(orchestrator): unify TurnRunner, bind InputProvider to SessionSt…
Leoyzen Jun 6, 2026
6294c5f
fix(mcp-over-acp): add correlation registry for elicitation passthrough
Leoyzen Jun 8, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
152 changes: 152 additions & 0 deletions .claude/commands/opsx/apply.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,152 @@
---
name: "OPSX: Apply"
description: Implement tasks from an OpenSpec change (Experimental)
category: Workflow
tags: [workflow, artifacts, experimental]
---

Implement tasks from an OpenSpec change.

**Input**: Optionally specify a change name (e.g., `/opsx:apply add-auth`). If omitted, check if it can be inferred from conversation context. If vague or ambiguous you MUST prompt for available changes.

**Steps**

1. **Select the change**

If a name is provided, use it. Otherwise:
- Infer from conversation context if the user mentioned a change
- Auto-select if only one active change exists
- If ambiguous, run `openspec list --json` to get available changes and use the **AskUserQuestion tool** to let the user select

Always announce: "Using change: <name>" and how to override (e.g., `/opsx:apply <other>`).

2. **Check status to understand the schema**
```bash
openspec status --change "<name>" --json
```
Parse the JSON to understand:
- `schemaName`: The workflow being used (e.g., "spec-driven")
- Which artifact contains the tasks (typically "tasks" for spec-driven, check status for others)

3. **Get apply instructions**

```bash
openspec instructions apply --change "<name>" --json
```

This returns:
- `contextFiles`: artifact ID -> array of concrete file paths (varies by schema)
- Progress (total, complete, remaining)
- Task list with status
- Dynamic instruction based on current state

**Handle states:**
- If `state: "blocked"` (missing artifacts): show message, suggest using `/opsx:continue`
- If `state: "all_done"`: congratulate, suggest archive
- Otherwise: proceed to implementation

4. **Read context files**

Read every file path listed under `contextFiles` from the apply instructions output.
The files depend on the schema being used:
- **spec-driven**: proposal, specs, design, tasks
- Other schemas: follow the contextFiles from CLI output

5. **Show current progress**

Display:
- Schema being used
- Progress: "N/M tasks complete"
- Remaining tasks overview
- Dynamic instruction from CLI

6. **Implement tasks (loop until done or blocked)**

For each pending task:
- Show which task is being worked on
- Make the code changes required
- Keep changes minimal and focused
- Mark task complete in the tasks file: `- [ ]` → `- [x]`
- Continue to next task

**Pause if:**
- Task is unclear → ask for clarification
- Implementation reveals a design issue → suggest updating artifacts
- Error or blocker encountered → report and wait for guidance
- User interrupts

7. **On completion or pause, show status**

Display:
- Tasks completed this session
- Overall progress: "N/M tasks complete"
- If all done: suggest archive
- If paused: explain why and wait for guidance

**Output During Implementation**

```
## Implementing: <change-name> (schema: <schema-name>)

Working on task 3/7: <task description>
[...implementation happening...]
✓ Task complete

Working on task 4/7: <task description>
[...implementation happening...]
✓ Task complete
```

**Output On Completion**

```
## Implementation Complete

**Change:** <change-name>
**Schema:** <schema-name>
**Progress:** 7/7 tasks complete ✓

### Completed This Session
- [x] Task 1
- [x] Task 2
...

All tasks complete! You can archive this change with `/opsx:archive`.
```

**Output On Pause (Issue Encountered)**

```
## Implementation Paused

**Change:** <change-name>
**Schema:** <schema-name>
**Progress:** 4/7 tasks complete

### Issue Encountered
<description of the issue>

**Options:**
1. <option 1>
2. <option 2>
3. Other approach

What would you like to do?
```

**Guardrails**
- Keep going through tasks until done or blocked
- Always read context files before starting (from the apply instructions output)
- If task is ambiguous, pause and ask before implementing
- If implementation reveals issues, pause and suggest artifact updates
- Keep code changes minimal and scoped to each task
- Update task checkbox immediately after completing each task
- Pause on errors, blockers, or unclear requirements - don't guess
- Use contextFiles from CLI output, don't assume specific file names

**Fluid Workflow Integration**

This skill supports the "actions on a change" model:

- **Can be invoked anytime**: Before all artifacts are done (if tasks exist), after partial implementation, interleaved with other actions
- **Allows artifact updates**: If implementation reveals design issues, suggest updating artifacts - not phase-locked, work fluidly
157 changes: 157 additions & 0 deletions .claude/commands/opsx/archive.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,157 @@
---
name: "OPSX: Archive"
description: Archive a completed change in the experimental workflow
category: Workflow
tags: [workflow, archive, experimental]
---

Archive a completed change in the experimental workflow.

**Input**: Optionally specify a change name after `/opsx:archive` (e.g., `/opsx:archive add-auth`). If omitted, check if it can be inferred from conversation context. If vague or ambiguous you MUST prompt for available changes.

**Steps**

1. **If no change name provided, prompt for selection**

Run `openspec list --json` to get available changes. Use the **AskUserQuestion tool** to let the user select.

Show only active changes (not already archived).
Include the schema used for each change if available.

**IMPORTANT**: Do NOT guess or auto-select a change. Always let the user choose.

2. **Check artifact completion status**

Run `openspec status --change "<name>" --json` to check artifact completion.

Parse the JSON to understand:
- `schemaName`: The workflow being used
- `artifacts`: List of artifacts with their status (`done` or other)

**If any artifacts are not `done`:**
- Display warning listing incomplete artifacts
- Prompt user for confirmation to continue
- Proceed if user confirms

3. **Check task completion status**

Read the tasks file (typically `tasks.md`) to check for incomplete tasks.

Count tasks marked with `- [ ]` (incomplete) vs `- [x]` (complete).

**If incomplete tasks found:**
- Display warning showing count of incomplete tasks
- Prompt user for confirmation to continue
- Proceed if user confirms

**If no tasks file exists:** Proceed without task-related warning.

4. **Assess delta spec sync state**

Check for delta specs at `openspec/changes/<name>/specs/`. If none exist, proceed without sync prompt.

**If delta specs exist:**
- Compare each delta spec with its corresponding main spec at `openspec/specs/<capability>/spec.md`
- Determine what changes would be applied (adds, modifications, removals, renames)
- Show a combined summary before prompting

**Prompt options:**
- If changes needed: "Sync now (recommended)", "Archive without syncing"
- If already synced: "Archive now", "Sync anyway", "Cancel"

If user chooses sync, use Task tool (subagent_type: "general-purpose", prompt: "Use Skill tool to invoke openspec-sync-specs for change '<name>'. Delta spec analysis: <include the analyzed delta spec summary>"). Proceed to archive regardless of choice.

5. **Perform the archive**

Create the archive directory if it doesn't exist:
```bash
mkdir -p openspec/changes/archive
```

Generate target name using current date: `YYYY-MM-DD-<change-name>`

**Check if target already exists:**
- If yes: Fail with error, suggest renaming existing archive or using different date
- If no: Move the change directory to archive

```bash
mv openspec/changes/<name> openspec/changes/archive/YYYY-MM-DD-<name>
```

6. **Display summary**

Show archive completion summary including:
- Change name
- Schema that was used
- Archive location
- Spec sync status (synced / sync skipped / no delta specs)
- Note about any warnings (incomplete artifacts/tasks)

**Output On Success**

```
## Archive Complete

**Change:** <change-name>
**Schema:** <schema-name>
**Archived to:** openspec/changes/archive/YYYY-MM-DD-<name>/
**Specs:** ✓ Synced to main specs

All artifacts complete. All tasks complete.
```

**Output On Success (No Delta Specs)**

```
## Archive Complete

**Change:** <change-name>
**Schema:** <schema-name>
**Archived to:** openspec/changes/archive/YYYY-MM-DD-<name>/
**Specs:** No delta specs

All artifacts complete. All tasks complete.
```

**Output On Success With Warnings**

```
## Archive Complete (with warnings)

**Change:** <change-name>
**Schema:** <schema-name>
**Archived to:** openspec/changes/archive/YYYY-MM-DD-<name>/
**Specs:** Sync skipped (user chose to skip)

**Warnings:**
- Archived with 2 incomplete artifacts
- Archived with 3 incomplete tasks
- Delta spec sync was skipped (user chose to skip)

Review the archive if this was not intentional.
```

**Output On Error (Archive Exists)**

```
## Archive Failed

**Change:** <change-name>
**Target:** openspec/changes/archive/YYYY-MM-DD-<name>/

Target archive directory already exists.

**Options:**
1. Rename the existing archive
2. Delete the existing archive if it's a duplicate
3. Wait until a different date to archive
```

**Guardrails**
- Always prompt for change selection if not provided
- Use artifact graph (openspec status --json) for completion checking
- Don't block archive on warnings - just inform and confirm
- Preserve .openspec.yaml when moving to archive (it moves with the directory)
- Show clear summary of what happened
- If sync is requested, use the Skill tool to invoke `openspec-sync-specs` (agent-driven)
- If delta specs exist, always run the sync assessment and show the combined summary before prompting
Loading
Loading