|
|
@@ -10,11 +10,13 @@ flowchart LR
|
|
|
pkg_attachment["attachment"]
|
|
|
svc_attachments["ctx.attachments<br/>Durable binary attachment storage"]
|
|
|
pkg_attachment_local["attachment-local"]
|
|
|
- pkg_host_runtime["host-runtime"]
|
|
|
+ pkg_api_session_controller["api-session-controller"]
|
|
|
+ pkg_host_apiproxy["host-apiproxy"]
|
|
|
+ pkg_tool_fs["tool-fs"]
|
|
|
pkg_llm_pi_ai["llm-pi-ai"]
|
|
|
+ pkg_llm_deepseek["llm-deepseek"]
|
|
|
pkg_llm["llm"]
|
|
|
svc_llm["ctx.llm<br/>LLM adapter registry"]
|
|
|
- pkg_llm_deepseek["llm-deepseek"]
|
|
|
pkg_llm_replay["llm-replay"]
|
|
|
pkg_agent_loop["agent-loop"]
|
|
|
pkg_compaction_basic["compaction-basic"]
|
|
|
@@ -32,12 +34,10 @@ flowchart LR
|
|
|
pkg_session_persistence["session-persistence"]
|
|
|
pkg_session_query["session-query"]
|
|
|
pkg_session_query_sqlite["session-query-sqlite"]
|
|
|
- pkg_subagent_inprocess["subagent-inprocess"]
|
|
|
+ pkg_subagent_in_process_driver["subagent-in-process-driver"]
|
|
|
pkg_invariants["invariants"]
|
|
|
pkg_message_feedback["message-feedback"]
|
|
|
- pkg_api_session_controller["api-session-controller"]
|
|
|
svc_sessionController["ctx.sessionController<br/>Host Session Remote controller"]
|
|
|
- pkg_apiproxy["apiproxy"]
|
|
|
pkg_api_workspace_controller["api-workspace-controller"]
|
|
|
svc_workspaceController["ctx.workspaceController<br/>Host Workspace Remote controller"]
|
|
|
svc_invariants["ctx.invariants<br/>Package-owned invariant registry"]
|
|
|
@@ -89,7 +89,6 @@ flowchart LR
|
|
|
pkg_system_prompt["system-prompt"]
|
|
|
svc_systemPrompt["ctx.systemPrompt<br/>System prompt assembly registry"]
|
|
|
pkg_tools["tools"]
|
|
|
- pkg_tool_fs["tool-fs"]
|
|
|
pkg_tool_terminal["tool-terminal"]
|
|
|
pkg_tool_web["tool-web"]
|
|
|
svc_tools["ctx.tools<br/>Tool registry and guarded execution pipeline"]
|
|
|
@@ -107,7 +106,6 @@ flowchart LR
|
|
|
svc_commands["ctx.commands<br/>Human command registry"]
|
|
|
pkg_session_projection["session-projection"]
|
|
|
svc_sessionProjections["ctx.sessionProjections<br/>Session projection units"]
|
|
|
- pkg_host_apiproxy["host-apiproxy"]
|
|
|
pkg_session_projection_cache["session-projection-cache"]
|
|
|
svc_sessionProjectionCache["ctx.sessionProjectionCache<br/>Persisted projection cache"]
|
|
|
pkg_skill["skill"]
|
|
|
@@ -151,13 +149,13 @@ flowchart LR
|
|
|
pkg_sandbox_policy["sandbox-policy"]
|
|
|
svc_sandboxPolicy["ctx.sandboxPolicy<br/>Sandbox policy home"]
|
|
|
pkg_fs_sandbox["fs-sandbox"]
|
|
|
- pkg_approval["approval"]
|
|
|
+ pkg_user_approval["user-approval"]
|
|
|
svc_approval["ctx.approval<br/>Approval seam"]
|
|
|
pkg_permission_presets["permission-presets"]
|
|
|
svc_permissionPresets["ctx.permissionPresets<br/>Permission presets"]
|
|
|
pkg_code_runtime["code-runtime"]
|
|
|
svc_codeRuntime["ctx.codeRuntime<br/>Code-execution seam"]
|
|
|
- pkg_code_runtime_worker["code-runtime-worker"]
|
|
|
+ pkg_code_runtime_worker_thread["code-runtime-worker-thread"]
|
|
|
pkg_fs["fs"]
|
|
|
svc_fs["ctx.fs<br/>Filesystem provider seam"]
|
|
|
pkg_fs_local["fs-local"]
|
|
|
@@ -171,9 +169,9 @@ flowchart LR
|
|
|
pkg_subagent_dsh_sdk["subagent-dsh-sdk"]
|
|
|
pkg_tool_subagent_control["tool-subagent-control"]
|
|
|
pkg_tool_ralph["tool-ralph"]
|
|
|
- pkg_agent_team["agent-team"]
|
|
|
+ pkg_experimental_agent_team["experimental-agent-team"]
|
|
|
svc_agentTeams["ctx.agentTeams<br/>Agent Teams coordination domain"]
|
|
|
- pkg_tool_agent_team["tool-agent-team"]
|
|
|
+ pkg_experimental_tool_agent_team["experimental-tool-agent-team"]
|
|
|
pkg_jobs["jobs"]
|
|
|
svc_jobs["ctx.jobs<br/>Background job registry"]
|
|
|
pkg_jobs_local["jobs-local"]
|
|
|
@@ -188,15 +186,15 @@ flowchart LR
|
|
|
svc_spillStore["ctx.spillStore<br/>Spill storage seam"]
|
|
|
pkg_spill_local["spill-local"]
|
|
|
pkg_spill_policy["spill-policy"]
|
|
|
- pkg_directory_picker["directory-picker"]
|
|
|
+ pkg_host_directory_picker["host-directory-picker"]
|
|
|
svc_directoryPicker["ctx.directoryPicker<br/>Workspace-directory picking seam"]
|
|
|
- pkg_directory_picker_native["directory-picker-native"]
|
|
|
- pkg_directory_picker_browse["directory-picker-browse"]
|
|
|
- pkg_webserver["webserver"]
|
|
|
+ pkg_host_directory_picker_native["host-directory-picker-native"]
|
|
|
+ pkg_host_directory_picker_browse["host-directory-picker-browse"]
|
|
|
+ pkg_host_webserver["host-webserver"]
|
|
|
svc_webServer["ctx.webServer<br/>HTTP route registration"]
|
|
|
- pkg_connection["connection"]
|
|
|
- pkg_modules["modules"]
|
|
|
- pkg_hmr["hmr"]
|
|
|
+ pkg_client_connection["client-connection"]
|
|
|
+ pkg_client_modules["client-modules"]
|
|
|
+ pkg_client_hmr["client-hmr"]
|
|
|
svc_clientModules["ctx.clientModules<br/>Client plugin graph host"]
|
|
|
pkg_workflow["workflow"]
|
|
|
svc_workflowEngine["ctx.workflowEngine<br/>Workflow script engine"]
|
|
|
@@ -207,30 +205,26 @@ flowchart LR
|
|
|
pkg_webhook_github["webhook-github"]
|
|
|
pkg_lsp["lsp"]
|
|
|
svc_lsp["ctx.lsp<br/>Language-server navigation seam"]
|
|
|
- pkg_lsp_local["lsp-local"]
|
|
|
pkg_tool_lsp["tool-lsp"]
|
|
|
svc_apiProxy["ctx.apiProxy<br/>Host API dispatch"]
|
|
|
pkg_cordis_host_runner["cordis-host-runner"]
|
|
|
svc_dynamicCordisRunner["ctx.dynamicCordisRunner<br/>Dynamic Cordis package host runner"]
|
|
|
svc_cordisInspect["ctx.cordisInspect<br/>Dynamic Cordis inspect registry"]
|
|
|
- pkg_acp --> svc_approval
|
|
|
pkg_agent --> svc_agents
|
|
|
pkg_agent_default_model --> svc_agentDefaultModel
|
|
|
pkg_agent_loop --> svc_agentLoop
|
|
|
pkg_agent_presets --> svc_agentPresets
|
|
|
- pkg_agent_team --> svc_agentTeams
|
|
|
pkg_api_gateway --> svc_typertGateway
|
|
|
pkg_api_session_controller --> svc_sessionController
|
|
|
pkg_api_workspace_controller --> svc_workspaceController
|
|
|
- pkg_apiproxy --> svc_apiProxy
|
|
|
- pkg_approval --> svc_approval
|
|
|
pkg_attachment --> svc_attachments
|
|
|
pkg_attachment_local --> svc_attachments
|
|
|
pkg_authorization --> svc_authorization
|
|
|
pkg_bash_local --> svc_shell
|
|
|
pkg_bash_sandbox --> svc_shell
|
|
|
+ pkg_client_modules --> svc_clientModules
|
|
|
pkg_code_runtime --> svc_codeRuntime
|
|
|
- pkg_code_runtime_worker --> svc_codeRuntime
|
|
|
+ pkg_code_runtime_worker_thread --> svc_codeRuntime
|
|
|
pkg_commands --> svc_commands
|
|
|
pkg_compaction --> svc_compaction
|
|
|
pkg_compaction_basic --> svc_compaction
|
|
|
@@ -240,10 +234,8 @@ flowchart LR
|
|
|
pkg_credentials --> svc_credentials
|
|
|
pkg_credentials_local --> svc_credentials
|
|
|
pkg_deepseek_llm_api_extensions --> svc_deepseekLlmApiExtensions
|
|
|
- pkg_directory_picker --> svc_directoryPicker
|
|
|
- pkg_directory_picker_browse --> svc_directoryPicker
|
|
|
- pkg_directory_picker_native --> svc_directoryPicker
|
|
|
pkg_e2b --> svc_e2b
|
|
|
+ pkg_experimental_agent_team --> svc_agentTeams
|
|
|
pkg_file_reference --> svc_fileReferences
|
|
|
pkg_file_reference_local --> svc_fileReferences
|
|
|
pkg_fs --> svc_fs
|
|
|
@@ -251,6 +243,11 @@ flowchart LR
|
|
|
pkg_fs_local --> svc_fs
|
|
|
pkg_fs_sandbox --> svc_fs
|
|
|
pkg_goal --> svc_goals
|
|
|
+ pkg_host_apiproxy --> svc_apiProxy
|
|
|
+ pkg_host_directory_picker --> svc_directoryPicker
|
|
|
+ pkg_host_directory_picker_browse --> svc_directoryPicker
|
|
|
+ pkg_host_directory_picker_native --> svc_directoryPicker
|
|
|
+ pkg_host_webserver --> svc_webServer
|
|
|
pkg_invariants --> svc_invariants
|
|
|
pkg_jobs --> svc_jobs
|
|
|
pkg_jobs_local --> svc_jobs
|
|
|
@@ -259,9 +256,8 @@ flowchart LR
|
|
|
pkg_llm_pi_ai --> svc_llm
|
|
|
pkg_llm_replay --> svc_llm
|
|
|
pkg_lsp --> svc_lsp
|
|
|
- pkg_lsp_local --> svc_lsp
|
|
|
+ pkg_lsp_stdio --> svc_lsp
|
|
|
pkg_message_feedback --> svc_messageFeedback
|
|
|
- pkg_modules --> svc_clientModules
|
|
|
pkg_permission_presets --> svc_permissionPresets
|
|
|
pkg_plan_mode --> svc_planMode
|
|
|
pkg_plugin_package_inventory_deepseek --> svc_deepseekLlmApiExtensions
|
|
|
@@ -314,6 +310,7 @@ flowchart LR
|
|
|
pkg_tool_subagent --> svc_subagentModelSelection
|
|
|
pkg_tools --> svc_tools
|
|
|
pkg_typert_registry --> svc_typert
|
|
|
+ pkg_user_approval --> svc_approval
|
|
|
pkg_user_questions --> svc_userQuestions
|
|
|
pkg_web --> svc_web
|
|
|
pkg_web_fetch_http --> svc_web
|
|
|
@@ -321,32 +318,35 @@ flowchart LR
|
|
|
pkg_web_search_exa --> svc_web
|
|
|
pkg_web_search_perplexity --> svc_web
|
|
|
pkg_webhook --> svc_webhookRuntime
|
|
|
- pkg_webserver --> svc_webServer
|
|
|
pkg_workflow --> svc_workflowEngine
|
|
|
pkg_workflow_worker_thread --> svc_workflowEngine
|
|
|
pkg_workspace --> svc_workspaceRegistry
|
|
|
svc_agentDefaultModel --> pkg_headless
|
|
|
svc_agentDefaultModel --> pkg_host_apiproxy
|
|
|
svc_agentLoop --> pkg_agent_spine_demo
|
|
|
- svc_agentTeams --> pkg_tool_agent_team
|
|
|
+ svc_agentTeams --> pkg_experimental_tool_agent_team
|
|
|
svc_agents --> pkg_acp
|
|
|
svc_agents --> pkg_agent_loop
|
|
|
- svc_agents --> pkg_subagent_inprocess
|
|
|
- svc_apiProxy --> pkg_connection
|
|
|
+ svc_agents --> pkg_subagent_in_process_driver
|
|
|
+ svc_apiProxy --> pkg_client_connection
|
|
|
+ svc_approval --> pkg_acp
|
|
|
svc_approval --> pkg_tool_bash
|
|
|
svc_approval --> pkg_tools
|
|
|
- svc_attachments --> pkg_host_runtime
|
|
|
+ svc_attachments --> pkg_api_session_controller
|
|
|
+ svc_attachments --> pkg_host_apiproxy
|
|
|
+ svc_attachments --> pkg_llm_deepseek
|
|
|
svc_attachments --> pkg_llm_pi_ai
|
|
|
+ svc_attachments --> pkg_tool_fs
|
|
|
svc_authorization --> pkg_llm_pi_ai
|
|
|
- svc_clientModules --> pkg_hmr
|
|
|
+ svc_clientModules --> pkg_client_hmr
|
|
|
svc_codeRuntime --> pkg_tools
|
|
|
svc_compaction --> pkg_compaction_basic
|
|
|
svc_cordisInspect --> pkg_tool_cordis
|
|
|
- svc_credentials --> pkg_apiproxy
|
|
|
+ svc_credentials --> pkg_host_apiproxy
|
|
|
svc_credentials --> pkg_llm_deepseek
|
|
|
svc_credentials --> pkg_llm_pi_ai
|
|
|
svc_deepseekLlmApiExtensions --> pkg_llm_deepseek
|
|
|
- svc_directoryPicker --> pkg_apiproxy
|
|
|
+ svc_directoryPicker --> pkg_host_apiproxy
|
|
|
svc_dynamicCordisRunner --> pkg_tool_cordis
|
|
|
svc_e2b --> pkg_fs_e2b
|
|
|
svc_e2b --> pkg_subprocess_e2b
|
|
|
@@ -367,7 +367,7 @@ flowchart LR
|
|
|
svc_sandboxPolicy --> pkg_bash_sandbox
|
|
|
svc_sandboxPolicy --> pkg_fs_sandbox
|
|
|
svc_sandboxPolicy --> pkg_terminal_bash
|
|
|
- svc_sessionController --> pkg_apiproxy
|
|
|
+ svc_sessionController --> pkg_host_apiproxy
|
|
|
svc_sessionPersistence --> pkg_agent_loop
|
|
|
svc_sessionPersistence --> pkg_hooks_claude_code
|
|
|
svc_sessionPersistence --> pkg_hooks_codex
|
|
|
@@ -388,8 +388,8 @@ flowchart LR
|
|
|
svc_sessions --> pkg_session_persistence
|
|
|
svc_sessions --> pkg_session_query
|
|
|
svc_sessions --> pkg_session_query_sqlite
|
|
|
- svc_sessions --> pkg_subagent_inprocess
|
|
|
- svc_settings --> pkg_apiproxy
|
|
|
+ svc_sessions --> pkg_subagent_in_process_driver
|
|
|
+ svc_settings --> pkg_host_apiproxy
|
|
|
svc_settings --> pkg_llm_deepseek
|
|
|
svc_settings --> pkg_llm_pi_ai
|
|
|
svc_shell --> pkg_hooks_claude_code
|
|
|
@@ -436,39 +436,40 @@ flowchart LR
|
|
|
svc_typert --> pkg_typert_loader
|
|
|
svc_userQuestions --> pkg_tool_ask_user
|
|
|
svc_web --> pkg_tool_web
|
|
|
- svc_webServer --> pkg_connection
|
|
|
- svc_webServer --> pkg_hmr
|
|
|
- svc_webServer --> pkg_modules
|
|
|
+ svc_webServer --> pkg_client_connection
|
|
|
+ svc_webServer --> pkg_client_hmr
|
|
|
+ svc_webServer --> pkg_client_modules
|
|
|
svc_webhookRuntime --> pkg_webhook_github
|
|
|
svc_workflowEngine --> pkg_tool_ralph
|
|
|
svc_workflowEngine --> pkg_tool_workflow
|
|
|
- svc_workspaceRegistry --> pkg_apiproxy
|
|
|
+ svc_workspaceRegistry --> pkg_api_session_controller
|
|
|
+ svc_workspaceRegistry --> pkg_api_workspace_controller
|
|
|
svc_fs -. event gate .-> pkg_fs_observation_policy
|
|
|
```
|
|
|
|
|
|
| ctx key | Role | Owner | Implementations | Direct consumers | Companion plugins | Note |
|
|
|
| --- | --- | --- | --- | --- | --- | --- |
|
|
|
-| `ctx.attachments` | `seam` | [`attachment`](../packages/attachment/attachment) | [`attachment-local`](../packages/attachment/attachment-local) | `host-runtime`, [`llm-pi-ai`](../packages/llm/llm-pi-ai) | - | The host commits accepted images before session events; provider adapters resolve authorized durable references into provider-native content. |
|
|
|
+| `ctx.attachments` | `seam` | [`attachment`](../packages/attachment/attachment) | [`attachment-local`](../packages/attachment/attachment-local) | [`api-session-controller`](../packages/api/session-controller), [`host-apiproxy`](../packages/host/apiproxy), [`tool-fs`](../packages/fs/tool-fs), [`llm-pi-ai`](../packages/llm/llm-pi-ai), [`llm-deepseek`](../packages/llm/llm-deepseek) | - | The host commits accepted images before session events; provider adapters resolve authorized durable references into provider-native content. |
|
|
|
| `ctx.llm` | `seam` | [`llm`](../packages/llm/llm) | [`llm-deepseek`](../packages/llm/llm-deepseek), [`llm-pi-ai`](../packages/llm/llm-pi-ai), [`llm-replay`](../packages/test-support/llm-replay) | [`agent-loop`](../packages/core/agent-loop), [`compaction-basic`](../packages/compaction/compaction-basic) | - | Adapters register provider implementations; the loop and compaction call the provider-neutral stream service. |
|
|
|
| `ctx.deepseekLlmApiExtensions` | `seam` | [`deepseek-llm-api-extensions`](../packages/llm/deepseek-llm-api-extensions) | [`session-log-deepseek`](../packages/session/session-log-deepseek), [`plugin-package-inventory-deepseek`](../packages/llm/plugin-package-inventory-deepseek) | [`llm-deepseek`](../packages/llm/llm-deepseek) | - | Plugins prepare independent top-level fields; the official adapter merges them and commits their delivery state after HTTP acceptance. |
|
|
|
| `ctx.tokenMeter` | `core` | [`token-meter`](../packages/llm/token-meter) | - | [`compaction-basic`](../packages/compaction/compaction-basic) | - | Owns isolated per-session replay folds; pressure consumers share immutable revisioned measurements. |
|
|
|
| `ctx.toolResultPruner` | `core` | [`compaction-tool-result-pruner`](../packages/compaction/compaction-tool-result-pruner) | - | [`compaction-basic`](../packages/compaction/compaction-basic) | - | Rewrites oversized current tool results through replayable single-node surface replacements before summary compaction. |
|
|
|
-| `ctx.sessions` | `core` | [`session`](../packages/core/session) | - | [`agent-loop`](../packages/core/agent-loop), [`agent`](../packages/core/agent), [`session-persistence`](../packages/session/session-persistence), [`session-query`](../packages/session-query/session-query), [`session-query-sqlite`](../packages/session-query/session-query-sqlite), `subagent-inprocess`, [`invariants`](../packages/runtime-diagnostics/invariants), [`message-feedback`](../packages/feedback/message-feedback) | - | Owns append-only Session instances and emits the durable session event feed. |
|
|
|
-| `ctx.sessionController` | `core` | [`api-session-controller`](../packages/api/session-controller) | - | `apiproxy` | - | Owns Session commands, cold reads, durable-event following, live control state, and Agent activation policy; apiProxy reuses its inspection and Agent-resolution operations for Session-aware domains. |
|
|
|
+| `ctx.sessions` | `core` | [`session`](../packages/core/session) | - | [`agent-loop`](../packages/core/agent-loop), [`agent`](../packages/core/agent), [`session-persistence`](../packages/session/session-persistence), [`session-query`](../packages/session-query/session-query), [`session-query-sqlite`](../packages/session-query/session-query-sqlite), [`subagent-in-process-driver`](../packages/subagent/subagent-in-process-driver), [`invariants`](../packages/runtime-diagnostics/invariants), [`message-feedback`](../packages/feedback/message-feedback) | - | Owns append-only Session instances and emits the durable session event feed. |
|
|
|
+| `ctx.sessionController` | `core` | [`api-session-controller`](../packages/api/session-controller) | - | [`host-apiproxy`](../packages/host/apiproxy) | - | Owns Session commands, cold reads, durable-event following, live control state, and Agent activation policy; apiProxy reuses its inspection and Agent-resolution operations for Session-aware domains. |
|
|
|
| `ctx.workspaceController` | `core` | [`api-workspace-controller`](../packages/api/workspace-controller) | - | - | - | Owns Workspace commands and reconnect-safe Workspace state delivery through the generated Remote namespace. |
|
|
|
| `ctx.invariants` | `core` | [`invariants`](../packages/runtime-diagnostics/invariants) | - | [`session`](../packages/core/session), [`agent`](../packages/core/agent), [`scope`](../packages/core/scope), [`agent-loop`](../packages/core/agent-loop) | - | Companion subpaths register owner-local checks; the service owns selection, uniqueness, child fibers, and package-attributed failures. |
|
|
|
| `ctx.typert` | `core` | [`typert-registry`](../packages/typert/registry) | - | [`typert-loader`](../packages/typert/loader), [`api-gateway`](../packages/api/gateway) | - | Plugins register live zod contributions directly or through dsh-typert-loader; the API gateway consumes invocation descriptors and providers, while other runtime consumers query schemas and reflection metadata at their own edges. |
|
|
|
| `ctx.typertGateway` | `core` | [`api-gateway`](../packages/api/gateway) | - | - | - | Associates generated Remote descriptors with live Cordis services, resolves registered identities, and exposes unary calls through the shared Connection RPC carrier. |
|
|
|
| `ctx.sessionPersistence` | `seam` | [`session-persistence`](../packages/session/session-persistence) | [`session-persistence-jsonl`](../packages/session/session-persistence-jsonl), [`session-persistence-sqlite`](../packages/session/session-persistence-sqlite) | [`agent-loop`](../packages/core/agent-loop), [`tool-bash`](../packages/shell/tool-bash), [`hooks-claude-code`](../packages/hooks/hooks-claude-code), [`hooks-codex`](../packages/hooks/hooks-codex), [`session-query`](../packages/session-query/session-query), [`session-query-sqlite`](../packages/session-query/session-query-sqlite), [`message-feedback`](../packages/feedback/message-feedback) | - | Backends persist the same SessionEvent vocabulary; apps choose a backend at composition time. |
|
|
|
-| `ctx.settings` | `seam` | [`settings`](../packages/settings/settings) | [`settings-file`](../packages/settings/settings-file) | [`llm-deepseek`](../packages/llm/llm-deepseek), [`llm-pi-ai`](../packages/llm/llm-pi-ai), `apiproxy` | - | Plugins register namespace schemas and resolve layered values; providers store the raw document. The LLM adapters register their entry config as the composition base under the user section; the web gateway serves redacted layered descriptors and writes the user layer. |
|
|
|
+| `ctx.settings` | `seam` | [`settings`](../packages/settings/settings) | [`settings-file`](../packages/settings/settings-file) | [`llm-deepseek`](../packages/llm/llm-deepseek), [`llm-pi-ai`](../packages/llm/llm-pi-ai), [`host-apiproxy`](../packages/host/apiproxy) | - | Plugins register namespace schemas and resolve layered values; providers store the raw document. The LLM adapters register their entry config as the composition base under the user section; the web gateway serves redacted layered descriptors and writes the user layer. |
|
|
|
| `ctx.subagentModelSelection` | `core` | [`tool-subagent`](../packages/subagent/tool-subagent) | - | [`tool-subagent`](../packages/subagent/tool-subagent) | - | Owns the default-off settings namespace that Agent-scoped delegation tools sample when composing a new top-level Session. |
|
|
|
-| `ctx.credentials` | `seam` | [`credentials`](../packages/credentials/credentials) | [`credentials-local`](../packages/credentials/credentials-local) | [`llm-deepseek`](../packages/llm/llm-deepseek), [`llm-pi-ai`](../packages/llm/llm-pi-ai), `apiproxy` | - | Configuration carries references to secrets; providers own the values. Consumers resolve per operation, so a rotated credential reaches the very next request; the web gateway exposes value-free views and write-only storage. |
|
|
|
+| `ctx.credentials` | `seam` | [`credentials`](../packages/credentials/credentials) | [`credentials-local`](../packages/credentials/credentials-local) | [`llm-deepseek`](../packages/llm/llm-deepseek), [`llm-pi-ai`](../packages/llm/llm-pi-ai), [`host-apiproxy`](../packages/host/apiproxy) | - | Configuration carries references to secrets; providers own the values. Consumers resolve per operation, so a rotated credential reaches the very next request; the web gateway exposes value-free views and write-only storage. |
|
|
|
| `ctx.authorization` | `seam` | [`authorization`](../packages/credentials/authorization) | - | [`llm-pi-ai`](../packages/llm/llm-pi-ai) | - | Flows are registered by the plugin that knows how to obtain one credential and keyed by the record they write; the seam owns the conversation and the one-attempt-per-key lifecycle, never the protocol. |
|
|
|
| `ctx.sessionTelemetry` | `seam` | [`session-telemetry`](../packages/session/session-telemetry) | [`session-telemetry-otel`](../packages/session/session-telemetry-otel) | - | - | The seam captures, redacts, and hands session records to one backend; nothing else consumes the service — its output leaves the process. |
|
|
|
| `ctx.storage` | `seam` | [`storage`](../packages/storage/storage) | [`storage-json`](../packages/storage/storage-json), [`storage-sqlite`](../packages/storage/storage-sqlite) | [`storage-domain`](../packages/storage/storage-domain) | - | Backends register side by side under names; data forms (domain first) mount on the hub and translate typed operations into opaque KV-unit primitives. |
|
|
|
| `ctx.storageDomain` | `core` | [`storage-domain`](../packages/storage/storage-domain) | - | [`workspace`](../packages/workspace/workspace), [`message-feedback`](../packages/feedback/message-feedback) | - | Waits for every configured backend, then publishes the domain form as one lifecycle-bound service for typed durable state. |
|
|
|
| `ctx.messageFeedback` | `core` | [`message-feedback`](../packages/feedback/message-feedback) | - | - | - | Owns local per-assistant-message feedback, lifecycle and target validation, per-item compare-and-set, and the Host unary Remote contract without entering Session history or telemetry. |
|
|
|
-| `ctx.workspaceRegistry` | `core` | [`workspace`](../packages/workspace/workspace) | - | `apiproxy` | - | Owns WorkspaceId-branded records over the domain facility; stable sessionIds accounts drive Host RPC and GUI projections. |
|
|
|
+| `ctx.workspaceRegistry` | `core` | [`workspace`](../packages/workspace/workspace) | - | [`api-workspace-controller`](../packages/api/workspace-controller), [`api-session-controller`](../packages/api/session-controller) | - | Owns WorkspaceId-branded records over the domain facility; stable sessionIds accounts drive Host RPC and GUI projections. |
|
|
|
| `ctx.sessionQuery` | `seam` | [`session-query`](../packages/session-query/session-query) | [`session-query-sqlite`](../packages/session-query/session-query-sqlite) | [`session-reference`](../packages/context/session-reference), [`tool-session-query`](../packages/session-query/tool-session-query) | - | The interface supplies exact reads, filters, and traces; its concrete backend adds full-text reconciliation, ranking, snippets, and cursor generations, while the model consumer owns workspace authority and cursor-free rendering. |
|
|
|
| `ctx.fileReferences` | `seam` | [`file-reference`](../packages/context/file-reference) | [`file-reference-local`](../packages/context/file-reference-local) | - | - | The interface returns path-only completion candidates within the addressed Agent cwd through its unary Remote contract; providers own namespace access and ranking without reading file contents. |
|
|
|
| `ctx.sessionReferenceResolver` | `core` | [`session-reference`](../packages/context/session-reference) | - | - | - | Projects bounded current-surface conversation snapshots into durable untrusted message context; host adapters own mention syntax. |
|
|
|
@@ -482,7 +483,7 @@ flowchart LR
|
|
|
| `ctx.sessionProjections` | `core` | [`session-projection`](../packages/session/session-projection) | - | [`tool-todo`](../packages/todo/tool-todo), [`session-title`](../packages/session/session-title), [`host-apiproxy`](../packages/host/apiproxy) | - | Domains register state-driven fold units; the eager drive keeps per-session watermark states and api-proxy serves baselines and pushes changed values. |
|
|
|
| `ctx.sessionProjectionCache` | `core` | [`session-projection-cache`](../packages/session/session-projection-cache) | - | [`host-apiproxy`](../packages/host/apiproxy) | - | Durably checkpoints projection unit states per session (throttled + turn/end/detach mandatory points) and serves the cold-read ladder: cache row + persistence tail replay, so listings never load full logs. |
|
|
|
| `ctx.skills` | `seam` | [`skill`](../packages/skill/skill) | [`skill-badge`](../packages/skill/skill-badge), [`skill-filesystem`](../packages/skill/skill-filesystem) | [`tool-skill`](../packages/skill/tool-skill) | - | Merges provider skill catalogs; tool-skill renders the session-prefix catalog and loads complete skill bodies. |
|
|
|
-| `ctx.agents` | `core` | [`agent`](../packages/core/agent) | - | [`agent-loop`](../packages/core/agent-loop), [`acp`](../packages/acp/acp), `subagent-inprocess` | - | Owns live Agent handles, the create/resume factory seam, and process-local initiator propagation. |
|
|
|
+| `ctx.agents` | `core` | [`agent`](../packages/core/agent) | - | [`agent-loop`](../packages/core/agent-loop), [`acp`](../packages/acp/acp), [`subagent-in-process-driver`](../packages/subagent/subagent-in-process-driver) | - | Owns live Agent handles, the create/resume factory seam, and process-local initiator propagation. |
|
|
|
| `ctx.agentDefaultModel` | `core` | [`agent-default-model`](../packages/core/agent-default-model) | - | [`headless`](../packages/bundle/headless), [`host-apiproxy`](../packages/host/apiproxy) | - | Layers the default ModelSelection through settings so direct and Host-backed Agent entry points share one state owner. |
|
|
|
| `ctx.agentLoop` | `bundle` | [`agent-loop`](../packages/core/agent-loop) | - | [`agent-spine-demo`](../packages/examples/agent-spine-demo) | - | The one concrete loop plugin; extension packages depend on dsh-agent events and services, not on this package. |
|
|
|
| `ctx.goals` | `core` | [`goal`](../packages/goal/goal) | - | - | - | Folds revisioned objective state from the session log and keeps live continuation activation process-local. |
|
|
|
@@ -493,23 +494,23 @@ flowchart LR
|
|
|
| `ctx.terminals` | `seam` | [`terminal`](../packages/terminal/terminal) | [`terminal-bash`](../packages/terminal/terminal-bash) | [`tool-terminal`](../packages/terminal/tool-terminal) | - | The registry owns exact-Agent session identity and cleanup; backends own terminal mechanics, while tool-terminal exposes the owner-scoped model tools. |
|
|
|
| `ctx.sandbox` | `seam` | [`sandbox`](../packages/sandbox/sandbox) | [`sandbox-local`](../packages/sandbox/sandbox-local) | [`bash-sandbox`](../packages/shell/bash-sandbox), [`terminal-bash`](../packages/terminal/terminal-bash) | - | Consumers hand over the exact argv they are about to spawn; same-world backends wrap it under a per-call policy and report enforcement. |
|
|
|
| `ctx.sandboxPolicy` | `core` | [`sandbox-policy`](../packages/sandbox/sandbox-policy) | - | [`bash-sandbox`](../packages/shell/bash-sandbox), [`fs-sandbox`](../packages/fs/fs-sandbox), [`terminal-bash`](../packages/terminal/terminal-bash) | - | The one home for the deployment default mode + workspace root; only the sandboxed executor and provider read the service (the tool layers use the pure `sandbox/mode` fold it also exports). Both enforcing families read it so bash and fs cannot confine to different roots. |
|
|
|
-| `ctx.approval` | `seam` | `approval` | [`acp`](../packages/acp/acp) | [`tools`](../packages/core/tools), [`tool-bash`](../packages/shell/tool-bash) | - | One-shot permission decisions dispatched over the `approval/request` waterfall; answerers are listeners (the ACP bridge for its own agents), absence fails closed to `unavailable`. |
|
|
|
+| `ctx.approval` | `seam` | [`user-approval`](../packages/interaction/user-approval) | - | [`tools`](../packages/core/tools), [`tool-bash`](../packages/shell/tool-bash), [`acp`](../packages/acp/acp) | - | One-shot permission decisions dispatched over the `approval/request` waterfall; answerers are listeners (the ACP bridge for its own agents), absence fails closed to `unavailable`. |
|
|
|
| `ctx.permissionPresets` | `core` | [`permission-presets`](../packages/interaction/permission-presets) | - | - | - | User-facing preset table (`workspace-write`/`danger-full-access`) bundling the sandbox-mode and approval-policy knobs; a switch writes one `permission/preset` event through to both knob events. |
|
|
|
-| `ctx.codeRuntime` | `seam` | [`code-runtime`](../packages/code-runtime/code-runtime) | `code-runtime-worker` | [`tools`](../packages/core/tools) | - | Runs one model-written program against host-provided async bindings; backends differ by substrate and language (the tool registry consumes it for Code Mode). |
|
|
|
+| `ctx.codeRuntime` | `seam` | [`code-runtime`](../packages/code-runtime/code-runtime) | [`code-runtime-worker-thread`](../packages/code-runtime/code-runtime-worker-thread) | [`tools`](../packages/core/tools) | - | Runs one model-written program against host-provided async bindings; backends differ by substrate and language (the tool registry consumes it for Code Mode). |
|
|
|
| `ctx.fs` | `seam` | [`fs`](../packages/fs/fs) | [`fs-local`](../packages/fs/fs-local), [`fs-sandbox`](../packages/fs/fs-sandbox), [`fs-e2b`](../packages/e2b/fs-e2b) | [`tool-fs`](../packages/fs/tool-fs) | [`fs-observation-policy`](../packages/fs/fs-observation-policy) | tool-fs executes read/write/edit through ctx.fs; fs-sandbox fences mutations by the shared sandbox mode; fs-observation-policy contributes observed-state checks through the fs/* event gate. |
|
|
|
| `ctx.compaction` | `seam` | [`compaction`](../packages/compaction/compaction) | [`compaction-basic`](../packages/compaction/compaction-basic) | [`compaction-basic`](../packages/compaction/compaction-basic) | - | The basic backend consumes post-step pressure and request-error recovery events; there is no model-facing compact tool. |
|
|
|
| `ctx.subagents` | `seam` | [`subagent`](../packages/subagent/subagent) | [`subagent-spawn-in-process`](../packages/subagent/subagent-spawn-in-process), [`subagent-fork-in-process`](../packages/subagent/subagent-fork-in-process), [`subagent-acp`](../packages/subagent/subagent-acp), [`subagent-codex`](../packages/subagent/subagent-codex), [`subagent-claude-code`](../packages/subagent/subagent-claude-code), [`subagent-dsh-sdk`](../packages/subagent/subagent-dsh-sdk) | [`tool-subagent`](../packages/subagent/tool-subagent), [`tool-subagent-control`](../packages/subagent/tool-subagent-control), [`tool-ralph`](../packages/workflow/tool-ralph) | - | Providers implement transports; the service also owns optional Activation-based continuation orchestration, tool-subagent selects one-shot or continuable delegation, tool-subagent-control delivers follow-ups, and tool-ralph requires one fresh structured-output route. |
|
|
|
-| `ctx.agentTeams` | `core` | `agent-team` | - | `tool-agent-team` | - | Owns the implicit-root roster, durable peer mailbox, shared task DAG, and continuable-child lifecycle; tool-agent-team contributes the scoped model policy and controls. |
|
|
|
+| `ctx.agentTeams` | `core` | [`experimental-agent-team`](../packages/experimental/agent-team) | - | [`experimental-tool-agent-team`](../packages/experimental/tool-agent-team) | - | Owns the implicit-root roster, durable peer mailbox, shared task DAG, and continuable-child lifecycle; tool-agent-team contributes the scoped model policy and controls. |
|
|
|
| `ctx.jobs` | `seam` | [`jobs`](../packages/jobs/jobs) | [`jobs-local`](../packages/jobs/jobs-local) | [`tool-bash`](../packages/shell/tool-bash), [`tool-terminal`](../packages/terminal/tool-terminal), [`tool-subagent`](../packages/subagent/tool-subagent), [`tool-jobs`](../packages/jobs/tool-jobs) | - | Producers (background bash, PTY sends, and subagent delegations) register running work; tool-jobs is the model-facing controller that reads, lists, and kills it; jobs-local is the process-local registry. |
|
|
|
| `ctx.web` | `seam` | [`web`](../packages/web/web) | [`web-search-exa`](../packages/web/web-search-exa), [`web-search-perplexity`](../packages/web/web-search-perplexity), [`web-search-deepseek`](../packages/web/web-search-deepseek), [`web-fetch-http`](../packages/web/web-fetch-http) | [`tool-web`](../packages/web/tool-web) | - | Search and fetch providers register into one ctx.web seam; tool-web owns the stable model-facing names. |
|
|
|
| `ctx.spillStore` | `seam` | [`spill`](../packages/spill/spill) | [`spill-local`](../packages/spill/spill-local) | [`spill-policy`](../packages/spill/spill-policy) | - | The backend saves oversized tool text and returns a model-facing locator plus retrieval hint; spill-policy is the tools/post-execute consumer that decides when to spill. |
|
|
|
-| `ctx.directoryPicker` | `seam` | `directory-picker` | `directory-picker-native`, `directory-picker-browse` | `apiproxy` | - | Discriminated interaction capability: the native backend opens one OS chooser on the host display, the browse backend serves listing/creation primitives for the in-app browser; dual-face backends fill ui-workspace directory-flow slots from their browser halves (no wire advertisement). |
|
|
|
-| `ctx.webServer` | `core` | `webserver` | - | `connection`, `modules`, `hmr` | - | Plain node:http carrier: named-route registry, index transform taps, and the static dist fallback; web-transport plugins register their own routes. |
|
|
|
-| `ctx.clientModules` | `core` | `modules` | - | `hmr` | - | Composes the __DSH_BOOT__ entry graph from an incremental dsh.client scan, serves plugin bundles, and notifies rebuilt/graph-changed subscribers. |
|
|
|
+| `ctx.directoryPicker` | `seam` | [`host-directory-picker`](../packages/host/directory-picker) | [`host-directory-picker-native`](../packages/host/directory-picker-native), [`host-directory-picker-browse`](../packages/host/directory-picker-browse) | [`host-apiproxy`](../packages/host/apiproxy) | - | Discriminated interaction capability: the native backend opens one OS chooser on the host display, the browse backend serves listing/creation primitives for the in-app browser; dual-face backends fill ui-workspace directory-flow slots from their browser halves (no wire advertisement). |
|
|
|
+| `ctx.webServer` | `core` | [`host-webserver`](../packages/host/webserver) | - | [`client-connection`](../packages/client/connection), [`client-modules`](../packages/client/modules), [`client-hmr`](../packages/client/hmr) | - | Plain node:http carrier: named-route registry, index transform taps, and the static dist fallback; web-transport plugins register their own routes. |
|
|
|
+| `ctx.clientModules` | `core` | [`client-modules`](../packages/client/modules) | - | [`client-hmr`](../packages/client/hmr) | - | Composes the __DSH_BOOT__ entry graph from an incremental dsh.client scan, serves plugin bundles, and notifies rebuilt/graph-changed subscribers. |
|
|
|
| `ctx.workflowEngine` | `seam` | [`workflow`](../packages/workflow/workflow) | [`workflow-worker-thread`](../packages/workflow/workflow-worker-thread) | [`tool-workflow`](../packages/workflow/tool-workflow), [`tool-ralph`](../packages/workflow/tool-ralph) | - | One engine per context, as in bash, with no named-provider registry; the general workflow and fixed Ralph consumers start runs whose agent() calls fan out through ctx.subagents. |
|
|
|
| `ctx.webhookRuntime` | `core` | [`webhook`](../packages/webhook/webhook) | - | [`webhook-github`](../packages/webhook/webhook-github) | - | Provider adapters dispatch authenticated deliveries; trusted plugins register independent process-local rules, and the runtime turns non-null results into ordinary Workspace-backed Sessions without delivery or completion state. |
|
|
|
-| `ctx.lsp` | `seam` | [`lsp`](../packages/lsp/lsp) | `lsp-local` | [`tool-lsp`](../packages/lsp/tool-lsp) | - | Provider registration and selection plus normalized query execution over exactly four operations; the seam offers no protocol escape hatch, so a backend translates into the normalized request and result. |
|
|
|
-| `ctx.apiProxy` | `core` | `apiproxy` | - | `connection` | - | The transport-agnostic host gateway face: it dispatches browser API calls, and each open host stream subscribes to the events it forwards rather than being pushed to through a broadcast verb. |
|
|
|
+| `ctx.lsp` | `seam` | [`lsp`](../packages/lsp/lsp) | [`lsp-stdio`](../packages/lsp/lsp-stdio) | [`tool-lsp`](../packages/lsp/tool-lsp) | - | Provider registration and selection plus normalized query execution over exactly four operations; the seam offers no protocol escape hatch, so a backend translates into the normalized request and result. |
|
|
|
+| `ctx.apiProxy` | `core` | [`host-apiproxy`](../packages/host/apiproxy) | - | [`client-connection`](../packages/client/connection) | - | The transport-agnostic host gateway face: it dispatches browser API calls, and each open host stream subscribes to the events it forwards rather than being pushed to through a broadcast verb. |
|
|
|
| `ctx.dynamicCordisRunner` | `core` | [`cordis-host-runner`](../packages/extensions/cordis-host-runner) | - | [`tool-cordis`](../packages/extensions/tool-cordis) | - | Owns the in-memory definition registry, the vm sandbox for host halves, and the request-run round trip; browser pages reach the same service over the wire through its remote namespace. |
|
|
|
| `ctx.cordisInspect` | `core` | [`cordis-host-runner`](../packages/extensions/cordis-host-runner) | - | [`tool-cordis`](../packages/extensions/tool-cordis) | - | Registers host inspect providers, mirrors the client provider manifest, and routes client queries through the dynamic Cordis transport. |
|
|
|
|