@qqbrowser/qbot-dsh 0.0.15 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/config/agent-presets/code/agent.cordis.yml +2 -2
- package/config/agent-presets/standard/agent.cordis.yml +2 -2
- package/node_modules/@deepseek-ai/cordis-plugin-hmr/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-agent/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-agent-default-model/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-agent-instructions/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-agent-loop/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-agent-presets/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-agent-tool-presentation/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-anonymous-user-id/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-api-gateway/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-api-remotes/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-app-boot/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-atomic-write/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-attachment/lib/index.js +1 -1
- package/node_modules/@deepseek-ai/dsh-attachment/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-attachment-local/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-base/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-bash-local/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-bash-sandbox/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-brand/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-client-connection/lib/client.js +1 -1
- package/node_modules/@deepseek-ai/dsh-client-connection/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-client-hmr/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-client-locale/lib/client.js +1 -1
- package/node_modules/@deepseek-ai/dsh-client-locale/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-client-modules/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-client-runtime/lib/client.js +4 -4
- package/node_modules/@deepseek-ai/dsh-client-runtime/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-client-schema-form/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-client-ui-agent-preset/lib/client.js +1 -1
- package/node_modules/@deepseek-ai/dsh-client-ui-agent-preset/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-client-ui-attachment/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-client-ui-commands/lib/client.js +1 -1
- package/node_modules/@deepseek-ai/dsh-client-ui-commands/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-client-ui-conversation/lib/client.js +8 -8
- package/node_modules/@deepseek-ai/dsh-client-ui-conversation/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-client-ui-cordis/lib/client.js +3 -3
- package/node_modules/@deepseek-ai/dsh-client-ui-cordis/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-client-ui-deliverables/lib/client.js +1 -1
- package/node_modules/@deepseek-ai/dsh-client-ui-deliverables/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-client-ui-directory-picker-browse/lib/client.js +1 -1
- package/node_modules/@deepseek-ai/dsh-client-ui-directory-picker-browse/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-client-ui-directory-picker-native/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-client-ui-goal/lib/client.js +1 -1
- package/node_modules/@deepseek-ai/dsh-client-ui-goal/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-client-ui-input-trigger/lib/client.js +1 -1
- package/node_modules/@deepseek-ai/dsh-client-ui-input-trigger/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-client-ui-jobs/lib/client.js +1 -1
- package/node_modules/@deepseek-ai/dsh-client-ui-jobs/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-client-ui-layout/lib/client.js +1 -1
- package/node_modules/@deepseek-ai/dsh-client-ui-layout/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-client-ui-message-feedback/lib/client.js +1 -1
- package/node_modules/@deepseek-ai/dsh-client-ui-message-feedback/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-client-ui-model-selection/lib/client.js +1 -1
- package/node_modules/@deepseek-ai/dsh-client-ui-model-selection/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-client-ui-permission-presets/lib/client.js +1 -1
- package/node_modules/@deepseek-ai/dsh-client-ui-permission-presets/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-client-ui-plan/lib/client.js +1 -1
- package/node_modules/@deepseek-ai/dsh-client-ui-plan/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-client-ui-primitives/lib/index.js +22 -22
- package/node_modules/@deepseek-ai/dsh-client-ui-primitives/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-client-ui-settings/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-client-ui-settings-general/lib/client.js +1 -1
- package/node_modules/@deepseek-ai/dsh-client-ui-settings-general/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-client-ui-settings-models/lib/client.js +3 -3
- package/node_modules/@deepseek-ai/dsh-client-ui-settings-models/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-client-ui-settings-plugin-inventory/lib/client.js +1 -1
- package/node_modules/@deepseek-ai/dsh-client-ui-settings-plugin-inventory/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-client-ui-settings-plugins/lib/client.js +1 -1
- package/node_modules/@deepseek-ai/dsh-client-ui-settings-plugins/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-client-ui-sidebar/lib/client.js +1 -1
- package/node_modules/@deepseek-ai/dsh-client-ui-sidebar/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-client-ui-skill/lib/client.js +3 -3
- package/node_modules/@deepseek-ai/dsh-client-ui-skill/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-client-ui-slots/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-client-ui-subagent/lib/client.js +1 -1
- package/node_modules/@deepseek-ai/dsh-client-ui-subagent/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-client-ui-theme/lib/client.js +1 -1
- package/node_modules/@deepseek-ai/dsh-client-ui-theme/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-client-ui-tool/lib/client.js +4 -4
- package/node_modules/@deepseek-ai/dsh-client-ui-tool/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-client-ui-trajectory/lib/client.js +14 -14
- package/node_modules/@deepseek-ai/dsh-client-ui-trajectory/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-client-ui-user-questions/lib/client.js +1 -1
- package/node_modules/@deepseek-ai/dsh-client-ui-user-questions/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-client-ui-workflow-run/lib/client.js +1 -1
- package/node_modules/@deepseek-ai/dsh-client-ui-workflow-run/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-client-ui-workspace/lib/client.js +1 -1
- package/node_modules/@deepseek-ai/dsh-client-ui-workspace/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-client-web/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-client-web-react/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-cmdline/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-code-runtime/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-code-runtime-worker-thread/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-command-compact/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-command-feedback/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-command-goal/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-commands/lib/typert.host.js +5 -2
- package/node_modules/@deepseek-ai/dsh-commands/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-compaction/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-compaction-basic/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-compaction-tool-result-pruner/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-content-review/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-cordis-client-runner/lib/client.js +4 -4
- package/node_modules/@deepseek-ai/dsh-cordis-client-runner/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-cordis-host-runner/lib/typert.host.js +10 -4
- package/node_modules/@deepseek-ai/dsh-cordis-host-runner/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-credentials/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-credentials-local/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-fs/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-fs-local/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-fs-observation-policy/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-fs-sandbox/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-goal/lib/typert.host.js +5 -2
- package/node_modules/@deepseek-ai/dsh-goal/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-goal-round-driver/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-headless/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-home-paths/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-home-quarantine-macos/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-host-apiproxy/lib/index.js +7 -7
- package/node_modules/@deepseek-ai/dsh-host-apiproxy/lib/types/api/rpc.schema.js +1 -1
- package/node_modules/@deepseek-ai/dsh-host-apiproxy/lib/types/api-proxy.js +1 -1
- package/node_modules/@deepseek-ai/dsh-host-apiproxy/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-host-directory-picker/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-host-directory-picker-auto/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-host-directory-picker-browse/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-host-directory-picker-native/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-host-frontend-static/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-host-plugin-inventory/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-host-webserver/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-invariants/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-jobs/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-jobs-local/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-launch-environment/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-llm/lib/index.js +1 -1
- package/node_modules/@deepseek-ai/dsh-llm/lib/types/assembler.js +1 -1
- package/node_modules/@deepseek-ai/dsh-llm/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-llm-deepseek/lib/index.js +1 -1
- package/node_modules/@deepseek-ai/dsh-llm-deepseek/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-llm-gateway-openai/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-llm-pi-ai/lib/index.js +1 -1
- package/node_modules/@deepseek-ai/dsh-llm-pi-ai/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-llm-retry/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-mcp-client/lib/index.js +3 -2
- package/node_modules/@deepseek-ai/dsh-mcp-client/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-message-feedback/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-native-command/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-output-retention/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-permission-presets/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-persona/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-plan-mode/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-pwsh-local/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-pwsh-sandbox/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-qb-auth/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-repeat-tool-reminder/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-sandbox/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-sandbox-local/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-sandbox-policy/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-sandbox-windows-acl/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-schedule/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-scope/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-session/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-session-checkpoint-policy/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-session-log-export/lib/client.js +1 -1
- package/node_modules/@deepseek-ai/dsh-session-log-export/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-session-persistence/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-session-persistence-jsonl/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-session-projection/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-session-projection-cache/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-session-query/lib/index.js +2 -2
- package/node_modules/@deepseek-ai/dsh-session-query/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-session-query-sqlite/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-session-reference/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-session-stats/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-session-telemetry/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-session-telemetry-otel/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-session-title/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-session-title-first-prompt-llm/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-session-title-llm/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-settings/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-settings-file/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-shell/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-shell-env/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-skill/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-skill-badge/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-skill-filesystem/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-spill/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-spill-local/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-spill-policy/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-storage/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-storage-domain/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-storage-json/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-subagent/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-subagent-fork-in-process/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-subagent-in-process-driver/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-subagent-spawn-in-process/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-subprocess/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-subprocess-local/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-system-prompt/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-terminal/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-terminal-bash/lib/index.js +1 -1
- package/node_modules/@deepseek-ai/dsh-terminal-bash/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-time-context/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-timeout/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-tmux-context/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-token-meter/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-tool-ask-user/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-tool-bash/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-tool-bash-persistent/lib/index.js +7 -10
- package/node_modules/@deepseek-ai/dsh-tool-bash-persistent/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-tool-call-timeout-policy/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-tool-cordis/lib/index.js +5 -2
- package/node_modules/@deepseek-ai/dsh-tool-cordis/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-tool-fs/lib/index.js +8 -8
- package/node_modules/@deepseek-ai/dsh-tool-fs/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-tool-fs-search/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-tool-goal/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-tool-jobs/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-tool-pwsh/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-tool-ralph/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-tool-skill/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-tool-str-replace-editor/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-tool-subagent/lib/index.js +2 -2
- package/node_modules/@deepseek-ai/dsh-tool-subagent/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-tool-subagent-control/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-tool-subagent-report/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-tool-todo/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-tool-web/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-tool-workflow/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-tools/lib/index.js +15 -15
- package/node_modules/@deepseek-ai/dsh-tools/lib/types/code-mode.js +8 -8
- package/node_modules/@deepseek-ai/dsh-tools/lib/types/py-types.js +3 -3
- package/node_modules/@deepseek-ai/dsh-tools/lib/types/ts-types.js +4 -4
- package/node_modules/@deepseek-ai/dsh-tools/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-typert-loader/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-typert-protocol/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-typert-registry/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-user-approval/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-user-questions/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-web/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-web-app/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-web-frontend/dist/assets/{index-BQQQ5Qt-.js → index-fPGOmJjK.js} +25 -25
- package/node_modules/@deepseek-ai/dsh-web-frontend/dist/index.html +1 -1
- package/node_modules/@deepseek-ai/dsh-web-frontend/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-web-search-deepseek/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-web-search-dsh/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-workflow/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-workflow-worker-thread/package.json +1 -1
- package/node_modules/@deepseek-ai/dsh-workspace/package.json +1 -1
- package/node_modules/@tanstack/react-virtual/package.json +1 -1
- package/node_modules/@tanstack/virtual-core/dist/cjs/index.cjs +7 -1
- package/node_modules/@tanstack/virtual-core/dist/cjs/utils.cjs +14 -4
- package/node_modules/@tanstack/virtual-core/dist/esm/index.js +1 -1
- package/node_modules/@tanstack/virtual-core/dist/esm/utils.js +2 -2
- package/node_modules/@tanstack/virtual-core/package.json +1 -1
- package/node_modules/hono/dist/cjs/client/utils.js +1 -1
- package/node_modules/hono/dist/cjs/context.js +4 -0
- package/node_modules/hono/dist/cjs/middleware/cors/index.js +1 -1
- package/node_modules/hono/dist/cjs/middleware/csrf/index.js +1 -1
- package/node_modules/hono/dist/cjs/middleware/etag/digest.js +1 -1
- package/node_modules/hono/dist/cjs/middleware/etag/index.js +2 -2
- package/node_modules/hono/dist/cjs/middleware/pretty-json/index.js +3 -1
- package/node_modules/hono/dist/cjs/router/linear-router/router.js +7 -2
- package/node_modules/hono/dist/cjs/router/pattern-router/router.js +3 -9
- package/node_modules/hono/dist/cjs/router/trie-router/node.js +43 -67
- package/node_modules/hono/dist/cjs/router/trie-router/router.js +3 -11
- package/node_modules/hono/dist/cjs/utils/ipaddr.js +5 -3
- package/node_modules/hono/dist/client/utils.js +1 -1
- package/node_modules/hono/dist/middleware/cors/index.js +1 -1
- package/node_modules/hono/dist/middleware/csrf/index.js +1 -1
- package/node_modules/hono/dist/middleware/etag/digest.js +1 -1
- package/node_modules/hono/dist/middleware/etag/index.js +1 -1
- package/node_modules/hono/dist/middleware/pretty-json/index.js +1 -1
- package/node_modules/hono/dist/router/linear-router/router.js +1 -1
- package/node_modules/hono/dist/router/pattern-router/router.js +1 -1
- package/node_modules/hono/dist/router/trie-router/node.js +1 -1
- package/node_modules/hono/dist/router/trie-router/router.js +1 -1
- package/node_modules/hono/dist/utils/ipaddr.js +1 -1
- package/node_modules/hono/package.json +1 -1
- package/node_modules/node-pty/lib/conpty_console_list_agent.js +11 -2
- package/node_modules/node-pty/lib/index.js +6 -6
- package/node_modules/node-pty/lib/shared/conout.js +2 -3
- package/node_modules/node-pty/lib/terminal.js +2 -2
- package/node_modules/node-pty/lib/unixTerminal.js +11 -6
- package/node_modules/node-pty/lib/utils.js +6 -7
- package/node_modules/node-pty/lib/windowsConoutConnection.js +24 -18
- package/node_modules/node-pty/lib/windowsPtyAgent.js +125 -101
- package/node_modules/node-pty/lib/windowsTerminal.js +14 -4
- package/node_modules/node-pty/lib/worker/conoutSocketWorker.js +3 -3
- package/node_modules/node-pty/package.json +1 -1
- package/node_modules/node-pty/prebuilds/darwin-arm64/pty.node +0 -0
- package/node_modules/node-pty/prebuilds/darwin-arm64/spawn-helper +0 -0
- package/node_modules/node-pty/prebuilds/darwin-x64/pty.node +0 -0
- package/node_modules/node-pty/prebuilds/darwin-x64/spawn-helper +0 -0
- package/node_modules/node-pty/prebuilds/win32-x64/conpty/OpenConsole.exe +0 -0
- package/node_modules/node-pty/prebuilds/win32-x64/conpty/conpty.dll +0 -0
- package/node_modules/node-pty/prebuilds/win32-x64/conpty.node +0 -0
- package/node_modules/node-pty/prebuilds/win32-x64/conpty_console_list.node +0 -0
- package/node_modules/node-pty/scripts/post-install.js +1 -5
- package/node_modules/node-pty/third_party/conpty/1.25.260303002/win10-arm64/OpenConsole.exe +0 -0
- package/node_modules/node-pty/third_party/conpty/{1.23.251008001 → 1.25.260303002}/win10-arm64/conpty.dll +0 -0
- package/node_modules/node-pty/third_party/conpty/1.25.260303002/win10-x64/OpenConsole.exe +0 -0
- package/node_modules/node-pty/third_party/conpty/1.25.260303002/win10-x64/conpty.dll +0 -0
- package/package.json +1 -1
- package/node_modules/node-pty/deps/winpty/.drone.yml +0 -15
- package/node_modules/node-pty/deps/winpty/LICENSE +0 -21
- package/node_modules/node-pty/deps/winpty/configure +0 -167
- package/node_modules/node-pty/deps/winpty/misc/ConinMode.ps1 +0 -116
- package/node_modules/node-pty/deps/winpty/misc/IdentifyConsoleWindow.ps1 +0 -51
- package/node_modules/node-pty/deps/winpty/misc/build32.sh +0 -9
- package/node_modules/node-pty/deps/winpty/misc/build64.sh +0 -9
- package/node_modules/node-pty/deps/winpty/misc/color-test.sh +0 -212
- package/node_modules/node-pty/deps/winpty/ship/build-pty4j-libpty.bat +0 -36
- package/node_modules/node-pty/deps/winpty/src/shared/GetCommitHash.bat +0 -13
- package/node_modules/node-pty/deps/winpty/src/shared/UpdateGenVersion.bat +0 -20
- package/node_modules/node-pty/deps/winpty/vcbuild.bat +0 -83
- package/node_modules/node-pty/lib/eventEmitter2.test.js +0 -30
- package/node_modules/node-pty/lib/terminal.test.js +0 -139
- package/node_modules/node-pty/lib/testUtils.test.js +0 -28
- package/node_modules/node-pty/lib/unixTerminal.test.js +0 -351
- package/node_modules/node-pty/lib/windowsPtyAgent.test.js +0 -90
- package/node_modules/node-pty/lib/windowsTerminal.test.js +0 -219
- package/node_modules/node-pty/prebuilds/win32-x64/pty.node +0 -0
- package/node_modules/node-pty/prebuilds/win32-x64/winpty-agent.exe +0 -0
- package/node_modules/node-pty/prebuilds/win32-x64/winpty.dll +0 -0
- package/node_modules/node-pty/scripts/gen-compile-commands.js +0 -8
- package/node_modules/node-pty/scripts/increment-version.js +0 -54
- package/node_modules/node-pty/third_party/conpty/1.23.251008001/win10-arm64/OpenConsole.exe +0 -0
- package/node_modules/node-pty/third_party/conpty/1.23.251008001/win10-x64/OpenConsole.exe +0 -0
- package/node_modules/node-pty/third_party/conpty/1.23.251008001/win10-x64/conpty.dll +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
var yn=Object.defineProperty;var u=(s,i)=>yn(s,"name",{value:i,configurable:!0});import{randomUUID as z}from"node:crypto";import{mkdir as wn,stat as vn}from"node:fs/promises";import{dirname as bn}from"node:path";import{installModelSelection as In}from"@deepseek-ai/dsh-agent";import{AttachmentError as Q}from"@deepseek-ai/dsh-attachment";import{contentHasImage as Me,createUserMessage as Sn,freezeMessage as kn,ReasoningEffortId as Pn}from"@deepseek-ai/dsh-llm";import{errorChain as En}from"@deepseek-ai/dsh-llm";import{isAppendSurfaceEvent as An,isJsonValue as Nn}from"@deepseek-ai/dsh-session";import{SessionQueryError as ce}from"@deepseek-ai/dsh-session-query";import{SubagentError as L}from"@deepseek-ai/dsh-subagent";import{isUserInvocable as Tn}from"@deepseek-ai/dsh-skill";import{workspaceDomainState as Mn,workspaceRecord as _n,WorkspaceId as j,WorkspaceMoveInvalidError as $n,WorkspaceOrderInvalidError as Cn,WorkspaceUnknownSessionError as Rn}from"@deepseek-ai/dsh-workspace";import{InvalidPresetIdError as On,PresetExistsError as Ln,PresetMountError as jn,PresetNotWritableError as _e,resolveSessionPreset as O,SETTINGS_NAMESPACE as Un,UnknownPresetError as $e}from"@deepseek-ai/dsh-agent-presets";import{DEFAULT_SESSION_LOG_COMPRESSION_LEVEL as Dn,flushLiveSessionLog as Bn,sessionLogExportDeps as Fn,sessionLogZipFilename as Gn,streamSessionLogZip as Wn}from"./session-export.js";import{SESSION_SEARCH_RESULT_LIMIT as U,SESSION_SEARCH_SNIPPET_MAX_CODE_POINTS as Zn,truncateUnicodeCodePoints as zn}from"./api/session-search.js";import{GoalError as Qn}from"@deepseek-ai/dsh-goal";import{SettingsConflictError as Vn,settingsNamespace as Jn}from"@deepseek-ai/dsh-settings";import{credentialRef as le}from"@deepseek-ai/dsh-credentials";import{SessionTitleInvalidError as Hn}from"@deepseek-ai/dsh-session-title";import{approvalResponsePayloadSchema as Kn}from"./api/approvals.schema.js";import{imageLimitsProjectionSchema as Yn,sessionListMetadataProjectionSchema as Xn}from"./api/sessions.schema.js";import{questionResponsePayloadSchema as xn}from"./api/questions.schema.js";import{RpcId as ue}from"./api/rpc.js";import{UserQuestionError as X}from"@deepseek-ai/dsh-user-questions";import{DirectoryPickerError as qn}from"@deepseek-ai/dsh-host-directory-picker";import{ApiRemoteSessionNotFound as x,ApiRemoteSubagentSessionOwnership as D,API_REMOTE_FORWARDED_EVENTS as et,apiRemoteSubagentOwnershipError as nt,createApiRemoteAgentResolver as tt,hasApiRemoteSubagentOwner as st,inspectApiRemoteSession as rt}from"@deepseek-ai/dsh-api-remotes";import{canOpenNativePath as ot,openNativePath as it,openNativeTextFile as at}from"./native-path-opener.js";const dt=50,ct=["agent-loop","shell","locale","permission","ui-conversation","ui-theme","web-search-deepseek"],Ce=100,Re=16;export const DEFAULT_COLD_BLANK_PROBE_MAX_BYTES=1024;const Oe=new Set(["user/message","assistant/message"]);function lt(s){const i=Buffer.from(s,"base64");if(s.length===0||i.toString("base64")!==s)throw new Q("Image upload is not canonical base64.","INVALID_IMAGE_BASE64");return new Uint8Array(i)}u(lt,"decodeBase64");async function ut(s,i){if(i.every(h=>h.type==="text"))return i.map(h=>({type:"text",text:h.text}));const f=s.attachments.imageLimits;if(i.filter(h=>h.type==="image").length>f.maxImagesPerMessage)throw new Q("Prompt exceeds the configured image-count limit.","TOO_MANY_IMAGES");const g=i.map(h=>h.type==="text"?h:{part:h,data:lt(h.data)}),y=g.filter(h=>"data"in h);if(y.reduce((h,P)=>h+P.data.byteLength,0)>f.maxMessageImageBytes)throw new Q("Prompt exceeds the configured aggregate image-byte limit.","IMAGES_TOO_LARGE");for(const h of y)await s.attachments.validateImage({data:h.data,mediaType:h.part.mediaType,...h.part.name===void 0?{}:{name:h.part.name}});const S=[];for(const h of g){if(!("data"in h)){S.push({type:"text",text:h.text});continue}const P=await s.attachments.saveImage({data:h.data,mediaType:h.part.mediaType,...h.part.name===void 0?{}:{name:h.part.name}});S.push({type:"image",attachment:P})}return S}u(ut,"durablePromptContent");function V(s,i){if(Array.isArray(s))for(const f of s){if(typeof f!="object"||f===null||Array.isArray(f))continue;const g=f;if(g.type==="image"&&typeof g.attachment=="object"&&g.attachment!==null){const y=g.attachment;if(i(y))return y}if(g.type==="tool-result"){const y=V(g.content,i);if(y!==void 0)return y}}}u(V,"imageBlockIn");function ft(s,i){const f=s.data,g=V(f.content,i);if(g!==void 0)return g;if(f.message!==void 0){const y=V(f.message.content,i);if(y!==void 0)return y}if(f.inserted!==void 0)for(const y of f.inserted){const k=V(y.content,i);if(k!==void 0)return k}if(s.type==="assistant/chunk"&&f.chunk?.type==="block-end")return V([f.chunk.block],i)}u(ft,"imageInEvent");function pt(s){return s.some(i=>Me(i.content))}u(pt,"messagesHaveImage");function mt(s,i){for(const f of s){const g=ft(f,y=>String(y.attachmentId)===i);if(g!==void 0)return g}}u(mt,"referencedImage");const gt=new Set(["ui-onboarding",Un]),Le=/^[A-Za-z][A-Za-z0-9_+.-]*(?:\/[A-Za-z0-9_+.-]+)+$/;function je(s){if(!(s.length===0||s.trim()!==s||s!=="UTC"&&!Le.test(s)))try{const i=new Intl.DateTimeFormat("en-US",{timeZone:s}).resolvedOptions().timeZone;return i!=="UTC"&&!Le.test(i)?void 0:i}catch{return}}u(je,"canonicalClientTimeZone");function _(s){return s.aborted}u(_,"isAborted");function ht(s,i,f){const g=i===void 0?[...s]:s.filter(h=>h.seq<i);let y=0,k=0;for(let h=g.length-1;h>=0;h--){const P=g[h];if(!Oe.has(P.type)||!An(P))continue;y++;const N=P.sourceEventSeqs,$=N!==void 0&&N.length>0?Math.min(P.seq,...N):P.seq;if(y>=f){k=$;break}}return{events:g.filter(h=>h.seq>=k),hasMore:k>0}}u(ht,"paginate");function b(s,i){return{rpcId:s.rpcId,result:{ok:!0,value:i}}}u(b,"ok");async function Ue(s){const i=await Promise.all(s.llm.listProviders().map(async f=>{try{const g=await s.llm.listModels(f.id),y=await Promise.all(g.map(async S=>{const h=await s.llm.resolveModelInfo(f.id,S.id),P=h.reasoning===void 0?void 0:{efforts:h.reasoning.efforts.map(N=>({id:N.id,name:N.name,...N.description===void 0?{}:{description:N.description}})),...h.reasoning.defaultEffort===void 0?{}:{defaultEffort:h.reasoning.defaultEffort}};return{id:S.id,name:S.name,...S.description===void 0?{}:{description:S.description},...P===void 0?{}:{reasoning:P}}}));return{kind:"group",group:{id:f.id,name:f.name,models:y}}}catch(g){return{kind:"failure",failure:{id:f.id,name:f.name,message:g instanceof Error?g.message:String(g)}}}}));return{groups:i.flatMap(f=>f.kind==="group"?[f.group]:[]).filter(f=>f.models.length>0),failures:i.flatMap(f=>f.kind==="failure"?[f.failure]:[])}}u(Ue,"buildModelCatalog");function c(s,i){return{rpcId:s.rpcId,result:{ok:!1,error:i}}}u(c,"err");function De(s,i){if(i instanceof $e)return c(s,{code:"agent-preset-not-found",message:i.message,details:{agentPreset:i.presetId,available:[...i.available]}});if(i instanceof jn)return c(s,{code:"agent-preset-invalid",message:i.message,details:{agentPreset:i.presetId,reason:i.reason}})}u(De,"presetFailure");class Be{static{u(this,"FrameQueue")}buffer=[];waiter;done=!1;push(i){this.done||(this.buffer.push(i),this.waiter?.())}end(){this.done=!0,this.waiter?.()}async*iterate(i,f){const g=u(()=>{this.end()},"onAbort");i.addEventListener("abort",g,{once:!0});try{for(;;){for(;this.buffer.length>0;)yield this.buffer.shift();if(this.done||i.aborted)return;await new Promise(y=>{this.waiter=y}),this.waiter=void 0}}finally{i.removeEventListener("abort",g),f()}}}function A(s){return{rpcId:ue(z()),payload:s}}u(A,"frame");export function assertJsonArgs(s,i){for(const[f,g]of i.entries())if(!Nn(g))throw new Error(`forwarded host event "${s}" argument ${f} is not lossless JSON data`);return i}u(assertJsonArgs,"assertJsonArgs");function Fe(s,i){s.push(A({type:"session/subscribed",sessionId:i.id,lastSeq:i.seq-1}))}u(Fe,"subscribeSession");function q(s){return s.map(i=>({id:i.id,kind:i.kind,label:i.label,status:i.status,...i.detail===void 0?{}:{detail:i.detail},startedAt:i.startedAt,...i.finishedAt===void 0?{}:{finishedAt:i.finishedAt}}))}u(q,"jobViews");function Ge(s){return!s.events.some(i=>i.type==="turn/start")}u(Ge,"sessionBlank");function We(s,i){const f=s.blank&&i.type!=="turn/start",g=i.type==="user/message"&&i.data.source.kind==="user"?i.time:s.lastPromptAt;return f===s.blank&&g===s.lastPromptAt?s:{blank:f,lastPromptAt:g}}u(We,"applySessionListMetadata");function Ze(s){let i={blank:!0,lastPromptAt:null};for(const f of s)i=We(i,f);return i}u(Ze,"sessionListMetadata");function ze(s,i){return Math.max(s.createdAt,i?.lastPromptAt??0)}u(ze,"sessionListUpdatedAt");function fe(s,i=[]){const f=O({header:s,events:i});return{...s.parentSession===void 0?{}:{parentSessionId:s.parentSession},...s.origin===void 0?{}:{origin:s.origin},...s.cwd===void 0?{}:{cwd:s.cwd},...f===void 0?{}:{agentPreset:f}}}u(fe,"sessionListFields");function yt(s,i){const f=Ze(s.events);return{sessionId:s.id,updatedAt:ze(s.header,f),running:i,blank:f.blank,...fe(s.header,s.events)}}u(yt,"summarize");async function wt(s,i,f,g,y){if(g===0)return;y?.throwIfAborted();const k=i.locate(f);if(k===void 0)return;y?.throwIfAborted();let S;try{S=(await vn(k.path)).size}catch{y?.throwIfAborted();return}if(!(S>g))try{const{events:h}=await i.readFrom(f.id,0,y);return y?.throwIfAborted(),Ze(h)}catch(h){y?.throwIfAborted(),s.logger.warn(`session.list: blank probe for "${f.id}" failed (serving it as visible): ${String(h)}`);return}}u(wt,"probeColdSessionMetadata");async function vt(s,i,f,g,y,k){const S=g?.blank===!1?void 0:await wt(s,i,f,y,k);return{sessionId:f.id,updatedAt:ze(f,S??g),running:!1,blank:g?.blank===!1?!1:S?.blank??!1,...fe(f)}}u(vt,"summarizeCold");function Qe(s){return s instanceof qn?{code:s.code,message:s.message,details:{path:s.path}}:{code:"internal",message:s instanceof Error?s.message:String(s),details:{}}}u(Qe,"directoryError");function Ve(s){return{rpcId:s.rpcId,payload:{type:"approval/requested",sessionId:s.sessionId,approvalId:s.approvalId,toolName:s.toolName,...s.callId===void 0?{}:{callId:s.callId},...s.reason===void 0?{}:{reason:s.reason}}}}u(Ve,"requestedFrame");function bt(s,i){if(s.sessionId!==i.sessionId)return!1;const f=s.answer.answers;return f.length!==i.questions.length?!1:f.every((g,y)=>{const k=i.questions[y];if(g.id!==k.id||new Set(g.selected).size!==g.selected.length)return!1;const S=g.custom?.trim();if(S!==void 0&&S===""||k.multiSelect!==!0&&(S!==void 0&&g.selected.length>0||g.selected.length>1))return!1;const h=new Set(k.options?.map(P=>P.label)??[]);return g.selected.every(P=>h.has(P))})}u(bt,"matchesQuestions");function Je(s,i,f,g){try{if(i.type==="tool/call"){const{name:y,arguments:k}=i.data,S=s.tools.get(y,g)?.presentCall?.(JSON.parse(k));return S===void 0?void 0:{for:"call",view:S}}if(i.type==="tool/result"){const{message:y,meta:k}=i.data,[S]=y.content,h=y.source.callId,P=f(h);if(P===void 0)return;const N=s.tools.get(P.name,g)?.presentResult?.(P.args,{content:S.content,isError:S.isError===!0,...k===void 0?{}:{meta:k}});return N===void 0?void 0:{for:"result",view:N}}}catch(y){console.error(`api-proxy: presenter failed for ${i.type}, falling back to generic: ${String(y)}`)}}u(Je,"viewFor");function He(s,i){for(let f=s.length-1;f>=0;f--){const g=s[f];if(g.type!=="tool/call")continue;const y=g.data;if(y.callId===i)try{return{name:y.name,args:JSON.parse(y.arguments)}}catch{return}}}u(He,"backscanArgs");function Ke(s,i,f,g,y){const k=ht(i,f,g??dt);return{events:k.events.map(S=>{const h=Je(s,S,P=>He(k.events,P),y);return{event:S,...h===void 0?{}:{view:h}}}),hasMore:k.hasMore}}u(Ke,"historyPage");function Ye(s,i){const f=s.get("sessionProjections");if(f!==void 0)return f.snapshot(i)}u(Ye,"projectionsFor");function Xe(s,i,f){try{const g=f!==void 0?s.get("sessionProjections")?.snapshot(f):s.get("sessionProjectionCache")?.cachedSnapshot(i);return g!==void 0&&Object.keys(g.values).length>0?g:void 0}catch(g){s.logger.warn(`session.list: projection column for "${i.id}" failed (serving the row without it): ${String(g)}`);return}}u(Xe,"listProjectionsFor");function xe(s,i){const f=s.get("sessionProjections");if(f!==void 0)return f.restore({},i,0).snapshot}u(xe,"detachedProjectionsFor");function qe(s,i,f){try{return f()}catch(g){s.logger.warn(`subagent.history: projections for "${i}" failed (serving the page without them): ${String(g)}`);return}}u(qe,"subagentHistoryProjections");function It(s,i,f){const g=s.payload.childSessionId;if(f.aborted)return c(s,{code:"cancelled",message:"subagent prompt was cancelled",details:{}});if(i instanceof L)switch(i.code){case"NOT_RESUMABLE":return c(s,{code:"subagent-not-resumable",message:"subagent cannot be resumed",details:{childSessionId:g}});case"UNAUTHORIZED":return c(s,{code:"subagent-unauthorized",message:"subagent does not belong to this parent",details:{childSessionId:g}});case"DRAINING":case"ACTIVATION_CLOSING":case"CONTINUATION_UNAVAILABLE":case"PERSISTENCE_UNAVAILABLE":return c(s,{code:"subagent-delivery-unavailable",message:"subagent follow-up is temporarily unavailable",details:{childSessionId:g}});default:break}return c(s,{code:"internal",message:"subagent prompt failed",details:{}})}u(It,"subagentPromptError");function en(){return{code:"internal",message:"subagent catalog is unavailable: this deployment does not mount the sessionProjections registry (load @deepseek-ai/dsh-session-projection)",details:{}}}u(en,"projectionsUnavailableError");async function nn(s,i,f){const{parentSessionId:g,childSessionId:y,mode:k}=i;try{const h=(await s.subagents.listChildren(g,f)).find(P=>P.id===y);return h===void 0||h.kind==="child"&&h.mode!==k?{error:{code:"subagent-not-found",message:`session "${y}" is not a ${k} direct child of "${g}"`,details:{parentSessionId:g,childSessionId:y}}}:h.kind==="diagnostic"?{error:{code:"subagent-catalog-diagnostic",message:`subagent "${y}" is ${h.reason}`,details:{parentSessionId:g,childSessionId:y,reason:h.reason}}}:{entry:h}}catch(S){return f?.aborted||S instanceof L&&S.code==="CANCELLED"?{error:{code:"cancelled",message:"subagent catalog read was cancelled",details:{}}}:S instanceof L&&S.code==="SUBAGENT_CONTROL_PROJECTIONS_UNAVAILABLE"?{error:en()}:{error:{code:"internal",message:"subagent catalog read failed",details:{}}}}}u(nn,"catalogChild");function ee(s){return{code:"agent-preset-not-found",message:"this deployment composes no agent presets",details:{agentPreset:s,available:[]}}}u(ee,"noRoster");function ne(s,i){return i instanceof $e?{code:"agent-preset-not-found",message:i.message,details:{agentPreset:i.presetId,available:[...i.available]}}:i instanceof _e?{code:"agent-preset-read-only",message:i.message,details:{agentPreset:s,reason:i.message}}:i instanceof On||i instanceof Ln?{code:"agent-preset-invalid",message:i.message,details:{agentPreset:s,reason:i.message}}:{code:"internal",message:`agent preset "${s}": ${String(i)}`,details:{}}}u(ne,"presetError");class tn extends Error{static{u(this,"AgentPresetConflict")}sessionId;requestedPreset;existingPreset;constructor(i,f,g){super(g===void 0?`session "${i}" records no agent preset, so it cannot be adopted under one; a deployment composing no roster records none on any session — `:`session "${i}" already runs agent preset ${JSON.stringify(g)}; requested ${JSON.stringify(f)}. A session's preset is fixed at creation.`),this.sessionId=i,this.requestedPreset=f,this.existingPreset=g}}class pe extends Error{static{u(this,"SessionCwdConflict")}sessionId;requestedCwd;existingCwd;constructor(i,f,g){super(`session "${i}" already exists with cwd ${JSON.stringify(g)}; requested ${JSON.stringify(f)}`),this.sessionId=i,this.requestedCwd=f,this.existingCwd=g}}class sn extends Error{static{u(this,"WorkspaceNameConflictError")}workspaceName;constructor(i){super(`workspace name '${i}' is already in use`),this.workspaceName=i,this.name="WorkspaceNameConflictError"}}function te(s,i){return c(s,{code:"workspace-not-found",message:`workspace "${i}" not found`,details:{workspaceId:i}})}u(te,"workspaceNotFound");function J(s){return{workspaceId:s.id,path:s.path,title:s.title,sessionIds:[...s.sessionIds],createdAt:s.createdAt,updatedAt:s.updatedAt}}u(J,"workspaceView");function St(s,i){const f=_n.parse(i);return{workspaceId:s,path:f.path,title:f.title,sessionIds:[...f.sessionIds],createdAt:f.createdAt,updatedAt:f.updatedAt}}u(St,"changedWorkspaceView");export function createApiProxy(s,i){const f=i.sessionExportCompressionLevel??Dn,g=i.coldBlankProbeMaxBytes??DEFAULT_COLD_BLANK_PROBE_MAX_BYTES,y=u(()=>{const{provider:e,model:n}=i.defaultModelSelection();return{provider:e,model:n}},"agentOptions"),k=new WeakMap,S=new Map,h=new Map;let P=Promise.resolve();const N=new Map,$=new Map,B=new Set,me=new WeakMap;function ge(e,n){const t=(me.get(e)??Promise.resolve()).then(n);return me.set(e,t.then(()=>{},()=>{})),t}u(ge,"serializeImageAdmission");function F(e){const n=k.get(e);if(n!==void 0)return n;let t;const r={get current(){if(t!==void 0)return t;const o=e.session.requestHeader()?.config;return o===void 0?i.defaultModelSelection():{provider:o.provider,model:o.model,...o.reasoningEffort===void 0?{}:{reasoningEffort:o.reasoningEffort}}},set current(o){t=o},assembled:void 0};return In(e.ctx,r),k.set(e,r),r}u(F,"selectionFor");function he(e){const n=e.agent;if(n===void 0)throw new Error("api-proxy: agent setup has no scoped agent");F(n)}u(he,"installSelection");function ye(e,n,t){if(!(n===void 0||n===t))throw new tn(e,n,t)}u(ye,"assertPresetUnchanged");async function H(e){const n=s.get("agentPresets");if(n===void 0)return{setup:u(r=>(he(r),Promise.resolve()),"setup")};const t=(await n.resolve(e)).id;return{agentPreset:t,setup:u(async r=>{he(r),await n.mount(r,t)},"setup")}}u(H,"composeAgent");const C=u((e,n)=>st(s,e,n),"hasSubagentOwner"),se=u(e=>nt(e),"subagentOwnershipError"),re=u(e=>rt(s,e),"inspectServable"),R=tt(s,{agentOptions:y,setup:u(async({meta:e,events:n})=>(await H(O({header:e,events:n}))).setup,"setup")});function K(e){const n=A(e);for(const t of B)t.push(n)}u(K,"broadcast"),s.inject(["sessionProjections"],e=>{e.sessionProjections.onChanged((n,t,r,o)=>{K({type:"session/projection",sessionId:n.id,key:t,value:r,seq:o})})}),s.inject(["sessionProjections"],e=>{e.sessionProjections.register({key:"sessionListMetadata",schema:Xn,init:u(()=>({blank:!0,lastPromptAt:null}),"init"),apply:We,view:u(n=>n,"view"),stateVersion:1})}),s.inject(["sessionProjections","attachments"],e=>{e.sessionProjections.register({key:"imageLimits",schema:Yn,init:u(()=>null,"init"),apply:u(n=>n,"apply"),view:u(()=>e.attachments.imageLimits,"view"),stateVersion:1})});const we=u((e,n)=>{const t=u(r=>{const o=r==="next-turn"?e.inbox.nextTurn:e.inbox.nextStep;return n?.target===r?o.toSpliced(n.start,n.removedCount??0,...n.inserted):o},"project");return[...t("next-turn").map(r=>({id:r.id,placement:"queued",message:r})),...t("next-step").map(r=>({id:r.id,placement:r.source.kind==="user"?"steering":"context",message:r}))]},"queueItems");s.on("session/event",(e,n)=>{if(n.type!=="agent/inbox/spliced")return;const t=s.agents.get(e.id);t?.session===e&&K({type:"session/queue",sessionId:e.id,items:we(t,n.data)})});function Y(e,n){N.delete(e.rpcId),e.signal!==void 0&&e.onAbort!==void 0&&e.signal.removeEventListener("abort",e.onAbort),K({type:"question/resolved",sessionId:e.sessionId,questionRpcId:e.rpcId,outcome:n})}u(Y,"claimQuestion");const rn=s.userQuestions.registerProvider({ask(e){const n=e.agent?.id;return n===void 0?Promise.reject(new X("web user interaction requires an agent-owned session","ASK_MISSING_AGENT")):new Promise((t,r)=>{const o=ue(z()),a={rpcId:o,sessionId:n,questions:e.questions,resolve:t,reject:r,...e.signal===void 0?{}:{signal:e.signal}},d=u(()=>{Y(a,"cancelled"),r(new X("ask_user_question was aborted before the user answered","ASK_ABORTED"))},"onAbort");a.onAbort=d,N.set(o,a),e.signal?.addEventListener("abort",d,{once:!0});const l={rpcId:o,payload:{type:"question/requested",sessionId:n,questions:e.questions}};for(const p of B)p.push(l)})}});s.effect(()=>()=>{rn();for(const e of[...N.values()])Y(e,"cancelled"),e.reject(new X("web user-questions provider was disposed","ASK_ABORTED"))},"api-proxy: user-questions provider"),s.get("approval")!==void 0&&(s.effect(()=>()=>{for(const e of[...$.values()])e.resolve("cancelled")},"api-proxy: approval registry teardown"),s.on("approval/request",(e,n)=>{if(e.signal?.aborted===!0)return Promise.resolve("cancelled");const t=e.agent.session.events,r=new Set;for(const l of $.values())r.add(l.approvalId);const o=new Set;let a;for(let l=t.length-1;l>=0;l-=1){const p=t[l];if(p.type==="approval/decided")o.add(p.data.id);else if(p.type==="approval/asked"){if(o.has(p.data.id)||r.has(p.data.id)||(e.callId??null)!==(p.data.callId??null))continue;a=p.data.id;break}}if(a===void 0)return n();const d=a;return new Promise(l=>{const p=u(w=>{$.delete(I.rpcId)&&(e.signal?.removeEventListener("abort",m),K({type:"approval/resolved",sessionId:I.sessionId,approvalId:d,outcome:w}),l(w))},"settle"),m=u(()=>{p("cancelled")},"onAbort"),I={rpcId:ue(z()),sessionId:e.agent.session.id,approvalId:d,toolName:e.toolName,...e.callId===void 0?{}:{callId:e.callId},...e.reason===void 0?{}:{reason:e.reason},resolve:p};$.set(I.rpcId,I),e.signal?.addEventListener("abort",m,{once:!0});const v=Ve(I);for(const w of B)w.push(v)})}));async function ve(e){const n=s.sessions.get(e);if(n!==void 0)return{id:n.id,header:n.header,events:[...n.events]};const t=await re(e);return{id:t.meta.id,header:t.meta,events:t.events}}u(ve,"readSessionState");async function on(e){const n=s.workspaceRegistry.list(),t=n.find(o=>o.sessionIds.includes(e.id));if(t!==void 0||e.header.origin!=="subagent")return t;const r=await s.sessionQuery.traceSession(e.id);for(const o of r.ancestors){const a=n.find(d=>d.sessionIds.includes(o.header.id));if(a!==void 0)return a}}u(on,"forkWorkspace");async function an(e){const n=s.sessions.get(e);if(n!==void 0)return{kind:"attached",session:n};const t=await re(e);return{kind:"detached",header:t.meta,events:t.events}}u(an,"historySourceFor");function dn(e){return e.kind==="detached"?{header:e.header,events:e.events}:{header:e.session.header,events:e.session.events}}u(dn,"sourceSession");function cn(e,n){if(e.kind==="detached"){const o=n?xe(s,e.events):void 0;return{events:e.events,...o===void 0?{}:{projections:o}}}const t=[...e.session.events],r=n?Ye(s,e.session):void 0;return{events:t,...r===void 0?{}:{projections:r}}}u(cn,"historyCutOf");async function be(e,n){const t=s.get("agents")?.get(e);if(t!==void 0)return t;const r=s.get("agentPresets");if(r!==void 0)try{return await r.standingKeyFor(O(n))}catch{return}}u(be,"presenterScopeFor");async function ln(e,n,t,r){let o=h.get(e);o===void 0&&(o=(async()=>{const d=s.sessions.get(e),l=s.agents.get(e);if(d!==void 0&&C(d,l))throw new D(e);if(l!==void 0)return l;const p=t?s.get("sessionPersistence"):void 0,m=p===void 0?void 0:(await p.list()).find(v=>v.id===e);if(p!==void 0&&m!==void 0){const v=await p.inspect(e);if(C({header:v.meta},void 0))throw new D(e);if(v.meta.cwd!==n)throw new pe(e,n,v.meta.cwd);const w=O({header:v.meta,events:v.events});return ye(e,r,w),(await s.agents.resume({resumeSessionId:e,agentOptions:y(),setup:(await H(w)).setup})).agent}try{await wn(n,{recursive:!0})}catch(v){throw new Error(`failed to ensure project directory "${n}": ${String(v)}`,{cause:v})}const I=await H(r);return(await s.agents.create({sessionId:e,agentOptions:y(),meta:{cwd:n,...I.agentPreset===void 0?{}:{agentPreset:I.agentPreset}},setup:I.setup})).agent})().catch(d=>{const l=s.agents.get(e);if(l!==void 0){if(C(l.session,l))throw new D(e);return l}const p=s.sessions.get(e);throw p!==void 0&&C(p,void 0)?new D(e):d}).finally(()=>{h.delete(e)}),h.set(e,o));const a=await o;if(C(a.session,a))throw new D(e);if(ye(e,r,O(a.session)),a.session.header.cwd!==n)throw new pe(e,n,a.session.header.cwd);return a}u(ln,"ensureSession");function un(e){const n=P.then(async()=>{const t=await s.workspaceRegistry.resolveByPath(e);return t!==void 0?{workspace:t,created:!1}:{workspace:await s.workspaceRegistry.create(e),created:!0}});return P=n.then(()=>{},()=>{}),n}u(un,"ensureWorkspace");async function Ie(e){e?.throwIfAborted();const n=u(a=>{const d=s.agents.get(a.id),l=Xe(s,a.header,a);return{...yt(a,d?.status==="running"),...l===void 0?{}:{projections:l}}},"summarizeAttached"),t=s.sessions.list().map(n);e?.throwIfAborted();const r=new Set(t.map(a=>a.sessionId)),o=s.get("sessionPersistence");if(o!==void 0){const a=(await o.list(e)).filter(d=>!r.has(d.id)&&d.cwd!==void 0);e?.throwIfAborted();for(let d=0;d<a.length;d+=Re){e?.throwIfAborted();const l=a.slice(d,d+Re),p=await Promise.allSettled(l.map(async w=>{const E=Xe(s,w,void 0),M=await vt(s,o,w,E?.values.sessionListMetadata,g,e),W=s.sessions.get(w.id);return W!==void 0?n(W):{...M,...E===void 0?{}:{projections:E}}})),m=[];let I=!1,v;for(const w of p)w.status==="fulfilled"?m.push(w.value):I||(I=!0,v=w.reason);if(I)throw v;e?.throwIfAborted(),t.push(...m)}}return t.sort((a,d)=>d.updatedAt-a.updatedAt),t}u(Ie,"listVisibleSessionSummaries");function Se(e){const t=s.get("agentPresets")?.serviceFor(e,"goals")??s.get("goals");return t===void 0?{error:{code:"internal",message:"goal service is absent: neither this session's agent preset nor the host composition mounts @deepseek-ai/dsh-goal",details:{}}}:t}u(Se,"goalServiceFor");function ke(e,n){const t=n instanceof Qn?{goalCode:n.code}:{};return c(e,{code:"internal",message:String(n),details:t})}u(ke,"goalError");async function G(e,n){const t=await R(e.payload.sessionId);if("error"in t)return c(e,t.error);const r=Se(t.agent);if("error"in r)return c(e,r.error);try{const o=n(r,t.agent);return b(e,{ref:{id:o.id,revision:o.revision}})}catch(o){return ke(e,o)}}u(G,"mutateGoal");function Pe(e){const n=s.get("llm");return n===void 0||n.listProviders().some(t=>t.id===e)}u(Pe,"routeServed");async function fn(e,n){const t=await R(n);if("error"in t)return{refused:c(e,t.error)};const r=t.agent,o=F(r).current;return Pe(o.provider)?{agent:r}:{refused:c(e,{code:"model-unavailable",message:`no adapter serves provider "${o.provider}"; select a model for this session`,details:{provider:o.provider,model:o.model}})}}u(fn,"turnAgentFor");function oe(){return{code:"internal",message:"settings service is absent: this deployment does not mount a settings provider (e.g. @deepseek-ai/dsh-settings-file) in its composition",details:{}}}u(oe,"settingsAbsent");async function Ee(e,n,t,r){try{return await r(n,t),b(e,{opened:!0})}catch(o){return t.aborted?c(e,{code:"cancelled",message:"path open was aborted",details:{}}):c(e,{code:"internal",message:`path open failed: ${o instanceof Error?o.message:String(o)}`,details:{}})}}u(Ee,"openTarget");function Ae(e,n,t){const r=i.openPath??((o,a)=>it(o,a));return Ee(e,n,t,r)}u(Ae,"openPath");function pn(e,n,t){const r=i.openTextFile??((o,a)=>at(o,a));return Ee(e,n,t,r)}u(pn,"openTextFile");function ie(){return i.canOpenPath!==void 0?i.canOpenPath():i.openPath!==void 0||ot()}u(ie,"canOpenPaths");function ae(){return{code:"internal",message:"credentials service is absent: this deployment does not mount a credential provider (e.g. @deepseek-ai/dsh-credentials-local) in its composition",details:{}}}u(ae,"credentialsAbsent");function Ne(e){return{ns:String(e.ns),schema:e.schema,value:e.value,...e.base===void 0?{}:{base:e.base},...e.user===void 0?{}:{user:e.user},applies:e.applies,secrets:(e.secrets??[]).map(n=>({path:[...n.path],set:n.set})),revision:e.revision}}u(Ne,"namespaceView");function mn(){return new Set(s.llm.listConfigurableProviders().map(e=>e.settingsNs))}u(mn,"modelProviderNamespaces");function Te(){const e=mn();for(const n of ct)e.add(n);for(const n of gt)e.add(n);return e}u(Te,"exposedNamespaces");function gn(e,n){return c(e,{code:"settings-not-exposed",message:`settings namespace "${n}" is not exposed to configuration clients`,details:{ns:n}})}u(gn,"notExposed");async function de(e,n,t,r,o){const a=s.get("settings");if(a===void 0)return c(e,oe());const d=u(m=>m instanceof Vn?c(e,{code:"settings-conflict",message:m.message,details:{ns:n,expected:m.expected,actual:m.actual}}):c(e,{code:"settings-rejected",message:m instanceof Error?m.message:String(m),details:{ns:n}}),"rejected");let l;try{l=Jn(n)}catch(m){return d(m)}if(!Te().has(n))return gn(e,n);try{t==="update"?await a.update(l,r,o):t==="replace"?await a.replace(l,r,o):await a.mutate(l,r,o)}catch(m){return d(m)}const p=a.describe({redactSecrets:!0}).find(m=>m.ns===l);return p===void 0?c(e,{code:"internal",message:`settings namespace "${n}" was disposed after the ${t}`,details:{}}):b(e,Ne(p))}return u(de,"settingsWrite"),{sessions:{async list(e){return b(e,{items:await Ie()})},async search(e,n){const t=u(()=>c(e,{code:"cancelled",message:"session search was aborted",details:{}}),"cancelled");if(_(n))return t();const r=s.get("sessionQuery");if(r===void 0)return c(e,{code:"internal",message:"session search is unavailable: this deployment does not mount @deepseek-ai/dsh-session-query",details:{}});try{const o=await Ie(n);if(_(n))return t();if(o.length===0)return b(e,{items:[],hasMore:!1});const a=new Set(o.map(w=>w.sessionId)),d=[],l=new Set,p=new Set;let m,I=0,v=U;for(;d.length<=U;){if(_(n))return t();if(I>=Ce)throw new Error(`session search provider exceeded the ${Ce}-call work budget`);I++;const w=m,E=v;let M;try{M=await r.searchSessions({query:e.payload.query,eventFilters:[{kind:"type",values:["user/message","assistant/message"]},{kind:"surface",values:["current"]}],limit:E,...w===void 0?{}:{cursor:w}},{signal:n})}catch(T){if(_(n))return t();if(w===void 0&&T instanceof ce&&T.code==="SESSION_QUERY_INVALID_LIMIT"&&E>1){v=Math.max(1,Math.floor(E/2));continue}if(w!==void 0&&T instanceof ce&&T.code==="SESSION_QUERY_STALE_CURSOR"){d.length=0,l.clear(),p.clear(),m=void 0;continue}throw T}if(_(n))return t();const W=M.items.length;if(W>E)throw new Error(`session search provider returned ${W} items; maximum is ${E}`);for(const T of M.items){if(d.length>U||!a.has(T.header.id)||T.bestMatch.sessionId!==T.header.id||T.bestMatch.surface!=="current"||!Oe.has(T.bestMatch.type)||l.has(T.header.id))continue;const hn=zn(T.bestMatch.snippet,Zn);l.add(T.header.id),d.push({sessionId:T.header.id,snippet:hn})}const Z=M.nextCursor;if(Z!==void 0){if(p.has(Z))throw new Error("session search provider repeated a continuation cursor");p.add(Z)}if(d.length>U||Z===void 0)break;m=Z}return b(e,{items:d.slice(0,U),hasMore:d.length>U})}catch(o){return _(n)||o instanceof ce&&o.code==="SESSION_QUERY_ABORTED"?t():c(e,{code:"internal",message:`session search failed: ${String(o)}`,details:{}})}},async create(e){const n=e.payload.sessionId??`session-${z()}`;let t;if(e.payload.workspaceId!==void 0&&(t=s.workspaceRegistry.get(j(e.payload.workspaceId)),t===void 0))return c(e,{code:"workspace-not-found",message:`workspace "${e.payload.workspaceId}" not found`,details:{workspaceId:e.payload.workspaceId}});const r=t?.path??e.payload.cwd??i.cwd,o=e.payload.agentPreset;try{await ln(n,r,e.payload.sessionId!==void 0,o)}catch(l){if(l instanceof tn)return c(e,{code:"agent-preset-conflict",message:l.message,details:{sessionId:l.sessionId,requestedPreset:l.requestedPreset,...l.existingPreset===void 0?{}:{existingPreset:l.existingPreset}}});const p=De(e,l);return p!==void 0?p:l instanceof pe?c(e,{code:"session-conflict",message:l.message,details:{sessionId:l.sessionId,requestedCwd:l.requestedCwd,...l.existingCwd===void 0?{}:{existingCwd:l.existingCwd}}}):l instanceof D?c(e,se(l.sessionId)):c(e,{code:"internal",message:`failed to create session "${n}": ${String(l)}`,details:{}})}if(t!==void 0)try{await t.attachSession(n)}catch(l){return c(e,{code:"workspace-attach-failed",message:`session "${n}" was created but could not attach to workspace "${t.id}": ${String(l)}`,details:{sessionId:n,workspaceId:t.id}})}const a=s.agents.get(n),d=a===void 0?void 0:O(a.session);return b(e,{sessionId:n,...d===void 0?{}:{agentPreset:d}})},async history(e){const{sessionId:n,beforeSeq:t,maxMessages:r}=e.payload;try{const o=await an(n),a=await be(n,dn(o)),d=cn(o,t===void 0),l=Ke(s,d.events,t,r,a);return b(e,{events:l.events,hasMore:l.hasMore,...d.projections===void 0?{}:{projections:d.projections}})}catch(o){return o instanceof x?c(e,{code:"session-not-found",message:o.message,details:{sessionId:n}}):c(e,{code:"internal",message:`history unavailable for session "${n}": ${String(o)}`,details:{}})}},async models(e){const{sessionId:n}=e.payload,t=await R(n);if("error"in t)return c(e,t.error);const r=F(t.agent).current,{groups:o,failures:a}=await Ue(s),d=Pe(r.provider);return b(e,{current:{...r},routable:d,groups:o,failures:a})},async selectModel(e){const{sessionId:n,provider:t,model:r,reasoningEffort:o}=e.payload,a=await R(n);return"error"in a?c(e,a.error):ge(a.agent,async()=>{try{const d=await s.llm.resolveCallConfig({provider:t,model:r,...o===void 0?{}:{reasoningEffort:Pn(o)}});if([...a.agent.inbox.nextTurn,...a.agent.inbox.nextStep].some(m=>Me(m.content))||pt(a.agent.session.deriveMessages())){const m=await s.llm.resolveModelInfo(d.provider,d.model);if(m.inputModalities!==void 0&&!m.inputModalities.includes("image"))return c(e,{code:"model-unavailable",message:`Model "${d.model}" does not accept image input, but this session already contains images; select an image-capable model.`,details:{provider:t,model:r}})}const p={provider:d.provider,model:d.model,...d.reasoningEffort===void 0?{}:{reasoningEffort:d.reasoningEffort}};F(a.agent).current=p;try{await i.saveDefaultModelSelection?.(p)}catch(m){s.logger.warn(`api-proxy: the model switch applies to this session but was not saved as the default: ${String(m)}`)}return b(e,{selected:{...p}})}catch(d){return c(e,{code:"model-unavailable",message:d instanceof Error?d.message:String(d),details:{provider:t,model:r}})}})},async rename(e){const{sessionId:n,title:t}=e.payload,r=await R(n);if("error"in r)return c(e,r.error);const o=s.get("sessionTitle");if(o===void 0)return c(e,{code:"internal",message:"renaming is unavailable: this deployment mounts no session-title service",details:{}});try{const a=o.rename(r.agent.session,t);return b(e,{title:a.title,seq:a.eventSeq})}catch(a){return a instanceof Hn?c(e,{code:"title-invalid",message:a.message,details:{sessionId:n}}):c(e,{code:"internal",message:`failed to rename session "${n}": ${String(a)}`,details:{}})}},async fork(e){const{sessionId:n,atSeq:t}=e.payload;let r;try{r=await ve(n)}catch(w){return w instanceof x?c(e,{code:"session-not-found",message:w.message,details:{sessionId:n}}):c(e,{code:"internal",message:`fork source unavailable for session "${n}": ${String(w)}`,details:{}})}const o=r.events,a=o.at(-1)?.seq??-1,l=(t===void 0?void 0:o.find(w=>w.type==="turn/end"&&w.seq>=t))??(t===void 0||t>a?o.findLast(w=>w.type==="turn/end"):void 0);if(l===void 0)return c(e,{code:"fork-unavailable",message:t!==void 0&&t<=a?`session "${n}" has not completed the turn containing event ${String(t)}`:`session "${n}" has no completed turn to fork from`,details:{sessionId:n}});let p=l.seq+1;for(;p<o.length&&o[p]?.type!=="turn/start";)p++;let m;try{m=await on(r)}catch(w){return c(e,{code:"internal",message:`failed to resolve fork workspace for session "${n}": ${String(w)}`,details:{}})}const I=`session-${z()}`,v=await H(O(r));try{await s.agents.create({sessionId:I,seed:o.slice(0,p),meta:{...r.header.cwd===void 0?{}:{cwd:r.header.cwd},parentSession:r.id,seedLength:p,...v.agentPreset===void 0?{}:{agentPreset:v.agentPreset}},agentOptions:y(),setup:v.setup})}catch(w){return c(e,{code:"internal",message:`failed to fork session "${n}": ${String(w)}`,details:{}})}if(m!==void 0)try{await m.attachSession(I)}catch(w){return c(e,{code:"workspace-attach-failed",message:`session "${I}" was forked but could not attach to workspace "${m.id}": ${String(w)}`,details:{sessionId:I,workspaceId:m.id}})}return b(e,{sessionId:I})},async prompt(e){const{sessionId:n,mode:t,content:r,clientTimeZone:o}=e.payload,a=o===void 0?void 0:je(o);if(o!==void 0&&a===void 0)return c(e,{code:"invalid-time-zone",message:"clientTimeZone must be UTC or a valid IANA Area/Location name",details:{value:o}});const d=await fn(e,n);if("refused"in d)return d.refused;const l=d.agent,p={kind:"user",rpcId:e.rpcId,...a===void 0?{}:{clientTimeZone:a}},m=r.some(v=>v.type==="image"),I=u(async()=>{try{if(m){const E=F(l).current,M=await s.llm.resolveModelInfo(E.provider,E.model);if(M.inputModalities!==void 0&&!M.inputModalities.includes("image"))return c(e,{code:"attachment-error",message:`Model "${E.model}" does not support image input.`,details:{reason:"MODEL_DOES_NOT_SUPPORT_IMAGES"}})}const v=await ut(s,r),w=Sn({content:v,source:p});t==="steer"?l.steer(w):l.followup(w)}catch(v){return v instanceof Q?c(e,{code:"attachment-error",message:v.message,details:{reason:v.code}}):c(e,{code:"agent-busy",message:"prompt rejected",details:{reason:String(v)}})}return b(e,{accepted:!0})},"admit");return m?ge(l,I):I()},async attachment(e){const{sessionId:n,attachmentId:t}=e.payload;let r;try{r=await ve(n)}catch(a){return a instanceof x?c(e,{code:"session-not-found",message:a.message,details:{sessionId:n}}):c(e,{code:"internal",message:`attachment authorization unavailable for session "${n}": ${String(a)}`,details:{}})}const o=mt(r.events,String(t));if(o===void 0)return c(e,{code:"attachment-error",message:"Image is not referenced by this session.",details:{reason:"ATTACHMENT_NOT_REFERENCED"}});try{const a=await s.attachments.readImage(o);return b(e,{attachment:a.ref,data:Buffer.from(a.data).toString("base64")})}catch(a){return a instanceof Q?c(e,{code:"attachment-error",message:a.message,details:{reason:a.code}}):c(e,{code:"internal",message:"Unable to read image attachment.",details:{}})}},updateQueue(e){const{sessionId:n,itemId:t,action:r}=e.payload;if(r.kind==="edit"&&r.content.some(l=>l.type!=="text"))return Promise.resolve(c(e,{code:"attachment-error",message:"queue edits accept text content only",details:{reason:"QUEUE_EDIT_NON_TEXT"}}));const o=s.agents.get(n);if(o!==void 0&&C(o.session,o))return Promise.resolve(c(e,se(n)));if(o===void 0)return Promise.resolve(c(e,{code:"queue-item-not-found",message:"queued item is no longer pending",details:{itemId:t}}));const a=o.inbox.nextTurn.some(l=>l.id===t)?"next-turn":o.inbox.nextStep.some(l=>l.id===t)?"next-step":void 0,d=a===void 0?void 0:(a==="next-turn"?o.inbox.nextTurn:o.inbox.nextStep).find(l=>l.id===t);return a===void 0||d===void 0?Promise.resolve(c(e,{code:"queue-item-not-found",message:"queued item is no longer pending",details:{itemId:t}})):r.kind==="steer"&&(a!=="next-turn"||o.status!=="running")?Promise.resolve(c(e,{code:"steer-unavailable",message:"current turn no longer accepts steering",details:{itemId:t}})):(r.kind==="edit"?o.inbox.replace(t,kn({...d,content:r.content})):(o.inbox.remove(t),r.kind==="steer"&&o.steer(d)),Promise.resolve(b(e,{accepted:!0})))},cancel(e){const{sessionId:n}=e.payload,t=s.agents.get(n);return t===void 0?Promise.resolve(c(e,{code:"session-not-found",message:`session "${n}" not found (not attached)`,details:{sessionId:n}})):C(t.session,t)?Promise.resolve(c(e,se(n))):(t.cancel({kind:"user"},{keepInbox:!0}),Promise.resolve(b(e,{accepted:!0})))}},subagents:{async list(e,n){try{const t=await s.subagents.listChildren(e.payload.parentSessionId,n);return b(e,{entries:t.map(r=>r.kind==="child"?{...r,activity:s.agents.get(r.id)?.status==="running"?"running":"inactive"}:r),parentAvailable:s.agents.get(e.payload.parentSessionId)!==void 0})}catch(t){return n?.aborted||t instanceof L&&t.code==="CANCELLED"?c(e,{code:"cancelled",message:"subagent catalog read was cancelled",details:{}}):t instanceof L&&t.code==="SUBAGENT_CONTROL_PROJECTIONS_UNAVAILABLE"?c(e,en()):c(e,{code:"internal",message:"subagent catalog read failed",details:{}})}},async history(e,n){const{parentSessionId:t,childSessionId:r,mode:o,beforeSeq:a,maxMessages:d}=e.payload,l=await nn(s,{parentSessionId:t,childSessionId:r,mode:o},n);if(l.error!==void 0)return c(e,l.error);let p,m,I;const v=s.sessions.get(r);if(v!==void 0)p=v.header,m=[...v.events],I=a===void 0?qe(s,r,()=>Ye(s,v)):void 0;else try{const E=await re(r);p=E.meta,m=E.events,I=a===void 0?qe(s,r,()=>xe(s,E.events)):void 0}catch(E){return n?.aborted?c(e,{code:"cancelled",message:"subagent history read was cancelled",details:{}}):E instanceof x?c(e,{code:"subagent-not-found",message:"subagent disappeared during history read",details:{parentSessionId:t,childSessionId:r}}):c(e,{code:"internal",message:"subagent history read failed",details:{}})}if(n?.aborted)return c(e,{code:"cancelled",message:"subagent history read was cancelled",details:{}});if(p.parentSession!==t)return c(e,{code:"subagent-unauthorized",message:"subagent parent changed during history read",details:{childSessionId:r}});const w=Ke(s,m,a,d);return b(e,{...w,...I===void 0?{}:{projections:I}})},async prompt(e,n){const{parentSessionId:t,childSessionId:r,content:o,clientTimeZone:a}=e.payload,d=a===void 0?void 0:je(a);if(a!==void 0&&d===void 0)return c(e,{code:"invalid-time-zone",message:"clientTimeZone must be UTC or a valid IANA Area/Location name",details:{value:a}});const l=s.agents.get(t);if(l===void 0)return c(e,{code:"subagent-parent-unavailable",message:`parent session "${t}" is not live`,details:{parentSessionId:t}});const p=await nn(s,{parentSessionId:t,childSessionId:r,mode:"continuable"},n);if(p.error!==void 0)return c(e,p.error);try{const m=await s.subagents.followup(l,r,o,{source:{kind:"user",rpcId:e.rpcId,...d===void 0?{}:{clientTimeZone:d}},signal:n});return b(e,{messageId:m})}catch(m){return It(e,m,n)}},interrupt(e){const{parentSessionId:n,childSessionId:t}=e.payload;try{s.subagents.interrupt(t,{kind:"user",parentSessionId:n})}catch(r){return r instanceof L&&r.code==="UNAUTHORIZED"?Promise.resolve(c(e,{code:"subagent-unauthorized",message:"subagent does not belong to this parent",details:{childSessionId:t}})):Promise.resolve(c(e,{code:"internal",message:"subagent interrupt failed",details:{}}))}return Promise.resolve(b(e,{accepted:!0}))}},workspace:{list(e){return Promise.resolve(b(e,{items:s.workspaceRegistry.list().map(J),archivedSessionIds:[...s.workspaceRegistry.archivedSessionIds]}))},async create(e){const{path:n}=e.payload;try{const{workspace:t,created:r}=await un(n);return b(e,{workspace:J(t),created:r})}catch(t){return c(e,{code:"workspace-invalid-path",message:`cannot create a workspace at "${n}": ${t instanceof Error?t.message:String(t)}`,details:{path:n}})}},async rename(e){const{payload:n}=e,t=s.workspaceRegistry.get(j(n.workspaceId));if(t===void 0)return te(e,n.workspaceId);const r=n.title.trim(),o=P.then(async()=>{if(r!==t.title){if(s.workspaceRegistry.list().some(a=>a.id!==t.id&&a.title===r))throw new sn(r);await t.setTitle(r)}});P=o.then(()=>{},()=>{});try{await o}catch(a){if(a instanceof sn)return c(e,{code:"workspace-name-conflict",message:a.message,details:{name:a.workspaceName}});throw a}return b(e,{workspace:J(t)})},async delete(e){const{workspaceId:n}=e.payload,t=P.then(()=>s.workspaceRegistry.delete(j(n)));return P=t.then(()=>{},()=>{}),await t?b(e,{deleted:!0}):te(e,n)},async insertBefore(e){const{workspaceId:n,beforeWorkspaceId:t}=e.payload;try{const r=await s.workspaceRegistry.insertBefore(j(n),t===void 0?void 0:j(t));return b(e,{workspaceIds:[...r]})}catch(r){if(!(r instanceof Cn))throw r;return te(e,r.workspaceId)}},async insertSessionBefore(e){const{payload:n}=e,t=s.workspaceRegistry.get(j(n.workspaceId));if(t===void 0)return te(e,n.workspaceId);try{await t.insertSessionBefore(n.sessionId,n.beforeSessionId)}catch(r){if(!(r instanceof $n))throw r;return c(e,{code:"workspace-move-invalid",message:r.message,details:{workspaceId:n.workspaceId,sessionId:n.sessionId,...n.beforeSessionId===void 0?{}:{beforeSessionId:n.beforeSessionId}}})}return b(e,{workspace:J(t)})},async archiveSession(e){const{sessionId:n}=e.payload;try{await s.workspaceRegistry.archiveSession(n)}catch(t){if(!(t instanceof Rn))throw t;return c(e,{code:"session-not-found",message:t.message,details:{sessionId:n}})}return b(e,{archivedSessionIds:[...s.workspaceRegistry.archivedSessionIds]})}},host:{describe(e){const n=i.defaultModelSelection();return Promise.resolve(b(e,{version:"0.0.1",cwd:i.cwd,provider:n.provider,model:n.model,attachedSessions:s.agents.list().length,canOpenPath:ie()}))},async pickDirectory(e,n){const t=s.directoryPicker.capability();if(t.kind!=="native")return c(e,{code:"directory-picker-unavailable",message:`host.pickDirectory needs the native capability; the composed picker serves "${t.kind}"`,details:{capability:t.kind}});try{const r=await t.pick(n);return b(e,{path:r})}catch(r){return n.aborted?c(e,{code:"cancelled",message:"directory picker was aborted",details:{}}):c(e,{code:"internal",message:`directory picker failed: ${r instanceof Error?r.message:String(r)}`,details:{}})}},async listDirectory(e,n){const t=s.directoryPicker.capability();if(t.kind!=="browse")return c(e,{code:"directory-picker-unavailable",message:`host.listDirectory needs the browse capability; the composed picker serves "${t.kind}"`,details:{capability:t.kind}});try{return b(e,await t.list(e.payload.path,n))}catch(r){return n.aborted?c(e,{code:"cancelled",message:"directory listing was aborted",details:{}}):c(e,Qe(r))}},async createDirectory(e){const n=s.directoryPicker.capability();if(n.kind!=="browse")return c(e,{code:"directory-picker-unavailable",message:`host.createDirectory needs the browse capability; the composed picker serves "${n.kind}"`,details:{capability:n.kind}});try{return b(e,{path:await n.createDirectory(e.payload.path,e.payload.name)})}catch(t){return c(e,Qe(t))}},async openPath(e,n){return Ae(e,e.payload.path,n)}},goals:{async create(e){const{objective:n,maxGoalRounds:t}=e.payload;return G(e,(r,o)=>r.create(o,{objective:n,...t!==void 0?{maxGoalRounds:t}:{}}))},async edit(e){const{ref:n,objective:t,maxGoalRounds:r}=e.payload;return G(e,(o,a)=>o.edit(a,n,{...t!==void 0?{objective:t}:{},...r!==void 0?{maxGoalRounds:r}:{}}))},async pause(e){return G(e,(n,t)=>n.pause(t,e.payload.ref))},async resume(e){return G(e,(n,t)=>n.resume(t,e.payload.ref))},async complete(e){return G(e,(n,t)=>n.complete(t,e.payload.ref))},async clear(e){const n=await R(e.payload.sessionId);if("error"in n)return c(e,n.error);const t=Se(n.agent);if("error"in t)return c(e,t.error);try{return t.clear(n.agent,e.payload.ref),b(e,{cleared:!0})}catch(r){return ke(e,r)}}},agentPresets:{async list(e){const n=s.get("agentPresets");if(n===void 0)return b(e,{presets:[],authorable:!1,hasDocument:!1});const t=n.defaultId;return b(e,{presets:(await n.list()).map(r=>({id:r.id,trust:r.trust,isDefault:r.id===t,...r.name===void 0?{}:{name:r.name},...r.description===void 0?{}:{description:r.description},...r.broken===void 0?{}:{broken:r.broken}})),authorable:n.authorable,hasDocument:ie()})},async select(e){const{sessionId:n,agentPreset:t}=e.payload,r=s.get("agentPresets");if(r===void 0)return c(e,{code:"agent-preset-not-found",message:"this deployment composes no agent presets",details:{agentPreset:t,available:[]}});const o=await R(n);if("error"in o)return c(e,o.error);const{agent:a}=o,d=u(async()=>{if(!Ge(a.session))return c(e,{code:"agent-preset-locked",message:`session "${n}" has already started; its agent preset is fixed`,details:{sessionId:n,agentPreset:t}});try{const m=await r.recompose(a.ctx,t);return a.session.append("agent-preset/selected",{agentPreset:m.id}),b(e,{agentPreset:m.id})}catch(m){const I=De(e,m);return I!==void 0?I:c(e,{code:"internal",message:`failed to select agent preset "${t}": ${String(m)}`,details:{}})}},"swap"),p=(S.get(n)??Promise.resolve()).then(d);S.set(n,p.catch(()=>{}));try{return await p}finally{S.get(n)===p&&S.delete(n)}},async read(e){const{agentPreset:n}=e.payload,t=s.get("agentPresets");if(t===void 0)return c(e,ee(n));try{const r=await t.resolve(n);return b(e,{agentPreset:r.id,trust:r.trust,content:await t.read(r.id),...r.name===void 0?{}:{name:r.name},...r.description===void 0?{}:{description:r.description}})}catch(r){return c(e,ne(n,r))}},async copy(e){const{from:n,agentPreset:t,name:r}=e.payload,o=s.get("agentPresets");if(o===void 0)return c(e,ee(t));try{return await o.copy(n,t,r),b(e,{agentPreset:t})}catch(a){return c(e,ne(t,a))}},async openDocument(e,n){const{agentPreset:t}=e.payload,r=s.get("agentPresets");if(r===void 0)return c(e,ee(t));try{const o=await r.resolve(t);if(o.trust!=="user")throw new _e(o.id,"it ships with the deployment");const a=bn(o.path);return ie()?await Ae(e,a,n):b(e,{opened:!1,path:a})}catch(o){return c(e,ne(t,o))}},async remove(e){const{agentPreset:n}=e.payload,t=s.get("agentPresets");if(t===void 0)return c(e,ee(n));try{return await t.remove(n),b(e,{})}catch(r){return c(e,ne(n,r))}}},skills:{async list(e){const{sessionId:n}=e.payload,t=s.sessions.get(n);if(t===void 0)return c(e,{code:"session-not-found",message:`session "${n}" not found (not attached)`,details:{sessionId:n}});if(t.header.cwd===void 0)return c(e,{code:"internal",message:`session "${n}" has no project cwd`,details:{}});const r=t.header.cwd,o=s.agents.get(n),a=s.get("agentPresets"),l=(o===void 0?void 0:a?.serviceFor(o,"skills"))??s.get("skills");if(l===void 0)return c(e,{code:"internal",message:"skill registry is absent: neither this session's agent preset nor the host composition mounts @deepseek-ai/dsh-skill",details:{}});const p=await be(n,t);try{const m=(await l.list({cwd:r,scope:p})).filter(Tn);return b(e,{skills:m.map(I=>({name:I.name,description:I.description,...I.whenToUse===void 0?{}:{whenToUse:I.whenToUse},modelInvocable:I.invocation.modelInvocable}))})}catch(m){return c(e,{code:"internal",message:`skill listing failed: ${String(m)}`,details:{}})}}},settings:{describe(e){const n=s.get("settings");if(n===void 0)return Promise.resolve(c(e,oe()));const t=Te();return Promise.resolve(b(e,{writable:n.writable,hasDocument:n.documentPath!==void 0,namespaces:n.describe({redactSecrets:!0}).filter(r=>t.has(String(r.ns))).map(Ne)}))},async openDocument(e,n){const t=s.get("settings");if(t===void 0)return c(e,oe());if(_(n))return c(e,{code:"cancelled",message:"settings document open was aborted",details:{}});let r;try{r=await t.prepareDocument()}catch(o){return _(n)?c(e,{code:"cancelled",message:"settings document preparation was aborted",details:{}}):c(e,{code:"internal",message:`settings document preparation failed: ${o instanceof Error?o.message:String(o)}`,details:{}})}return r===void 0?c(e,{code:"internal",message:"settings provider has no local document to open",details:{}}):_(n)?c(e,{code:"cancelled",message:"settings document open was aborted",details:{}}):pn(e,r,n)},update:u(e=>de(e,e.payload.ns,"update",e.payload.patch,e.payload.expectedRevision),"update"),replace:u(e=>de(e,e.payload.ns,"replace",e.payload.section,e.payload.expectedRevision),"replace"),mutate:u(e=>de(e,e.payload.ns,"mutate",e.payload.ops,e.payload.expectedRevision),"mutate")},credentials:{async describe(e){const n=s.get("credentials");if(n===void 0)return c(e,ae());const t=await Promise.all(e.payload.refs.map(async r=>{const o=await n.describe(le(r)),a={configured:o.configured,...o.source===void 0?{}:{source:o.source},writable:o.writable};return[r,a]}));return b(e,{credentials:Object.fromEntries(t)})},async set(e){const n=s.get("credentials");if(n===void 0)return c(e,ae());const{ref:t,value:r}=e.payload;try{await n.set(le(t),r)}catch(o){return c(e,{code:"credential-rejected",message:o instanceof Error?o.message:String(o),details:{ref:t}})}return b(e,{})},async unset(e){const n=s.get("credentials");if(n===void 0)return c(e,ae());const{ref:t}=e.payload;try{await n.unset(le(t))}catch(r){return c(e,{code:"credential-rejected",message:r instanceof Error?r.message:String(r),details:{ref:t}})}return b(e,{})}},llm:{providers(e){const n=s.llm.listProviders(),t=new Set(n.map(d=>d.id)),r=s.llm.listConfigurableProviders(),o=new Set(r.map(d=>d.provider)),a=r.map(d=>({provider:d.provider,displayName:d.displayName,settingsNs:d.settingsNs,settingsPath:[...d.settingsPath],active:t.has(d.provider),...d.declared===void 0?{}:{declared:d.declared}}));for(const d of n)o.has(d.id)||a.push({provider:d.id,displayName:d.name,settingsNs:"",settingsPath:[],active:!0});return Promise.resolve(b(e,{providers:a}))},async models(e){return b(e,await Ue(s))},async discoverModels(e,n){const{settingsNs:t,provider:r,baseURL:o,api:a,apiKey:d}=e.payload;try{const l=await s.llm.discoverModels(t,{...r===void 0?{}:{provider:r},...o===void 0?{}:{baseURL:o},...a===void 0?{}:{api:a},...d===void 0?{}:{apiKey:d},...n===void 0?{}:{signal:n}});return b(e,{models:l})}catch(l){return c(e,{code:"model-discovery-failed",message:l instanceof Error?l.message:String(l),details:{settingsNs:t,...o===void 0?{}:{baseURL:o}}})}}},events:{mux(e,n){const t=new Be;B.add(t);for(const d of s.sessions.list())Fe(t,d);for(const d of N.values())t.push({rpcId:d.rpcId,payload:{type:"question/requested",sessionId:d.sessionId,questions:d.questions}});for(const d of $.values())t.push(Ve(d));for(const d of s.sessions.list()){const l=s.agents.get(d.id);l?.session===d&&l.inbox.hasPending&&t.push(A({type:"session/queue",sessionId:d.id,items:we(l)}))}const r=s.get("jobs");if(r!==void 0)for(const d of s.sessions.list()){const l=q(r.list(s.agents.get(d.id)));l.length>0&&t.push(A({type:"session/jobs",sessionId:d.id,jobs:l}))}const o=new Map,a=[s.on("session/event",(d,l)=>{if(l.type==="tool/call"){const m=l.data;try{let I=o.get(d.id);I===void 0&&o.set(d.id,I=new Map),I.set(m.callId,{name:m.name,args:JSON.parse(m.arguments)})}catch{}}else l.type==="turn/end"&&o.delete(d.id);const p=Je(s,l,m=>o.get(d.id)?.get(m)??He(d.events,m),s.agents.get(d.id));t.push(A({type:"session/event",sessionId:d.id,event:l,...p===void 0?{}:{view:p}}))}),s.on("session/created",d=>{Fe(t,d);const l=r===void 0?[]:q(r.list(s.agents.get(d.id)));l.length>0&&t.push(A({type:"session/jobs",sessionId:d.id,jobs:l}))}),s.on("session/disposed",d=>{o.delete(d.id)}),...r===void 0?[]:[r.onJobsChanged(d=>{if(d!==void 0){t.push(A({type:"session/jobs",sessionId:d.id,jobs:q(r.list(d))}));return}for(const l of s.sessions.list())t.push(A({type:"session/jobs",sessionId:l.id,jobs:q(r.list(s.agents.get(l.id)))}))})]];return t.iterate(n,()=>{B.delete(t);for(const d of a)d()})},host(e,n){const t=new Be,r=s.workspaceRegistry.list(),o=new Set(r.map(p=>String(p.id)));let a=r.map(p=>p.id),d=s.workspaceRegistry.archivedSessionIds;const l=[s.on("session/created",p=>{t.push(A({type:"host/session-added",sessionId:p.id,blank:Ge(p),...fe(p.header,p.events)}))}),s.on("session/disposed",p=>{t.push(A({type:"host/session-removed",sessionId:p.id}))}),s.on("agent/status",({agent:p,status:m})=>{t.push(A({type:"host/session-status",sessionId:p.id,running:m==="running"}))}),s.on("agent/error",({agent:p,error:m})=>{t.push(A({type:"host/agent-error",sessionId:p.id,message:En(m)}))}),s.on("domain/changed",p=>{if(p.domain==="workspace"){if(p.table===""){if(p.operation!=="put")return;const m=Mn.parse(p.value),I=m.workspaceIds.length===a.length&&m.workspaceIds.every(v=>o.has(String(v)))&&m.workspaceIds.some((v,w)=>v!==a[w]);for(const v of m.workspaceIds){if(o.has(v))continue;const w=s.workspaceRegistry.get(v);if(w===void 0)throw new Error(`committed workspace registry references missing workspace "${v}"`);o.add(v),t.push(A({type:"host/workspace-changed",workspace:J(w)}))}a=[...m.workspaceIds],I&&t.push(A({type:"host/workspace-order-changed",workspaceIds:[...m.workspaceIds]})),(m.archivedSessionIds.length!==d.length||m.archivedSessionIds.some((v,w)=>v!==d[w]))&&(d=m.archivedSessionIds,t.push(A({type:"host/archived-sessions-changed",archivedSessionIds:[...m.archivedSessionIds]})));return}if(p.table==="workspaces"){if(p.operation==="deleted"){if(!o.delete(p.key))return;t.push(A({type:"host/workspace-removed",workspaceId:p.key}));return}o.has(p.key)&&t.push(A({type:"host/workspace-changed",workspace:St(p.key,p.value)}))}}}),...et.map(p=>s.on(p,((...m)=>{t.push(A({type:"host/remote-event",event:p,args:assertJsonArgs(p,m)}))})))];return t.iterate(n,()=>{for(const p of l)p()})}},downloads:{async sessionLog(e,n){const t=Fn(s);if(t.sessionQuery===void 0||t.sessionPersistence===void 0||t.attachments===void 0)return new Response("session log export is unavailable: missing session-query, session-persistence, or attachments service",{status:500});if(!t.sessionPersistence.supportsRawArtifacts)return new Response("session log export is unavailable: the persistence backend does not expose per-session raw artifacts",{status:501});const r={sessionQuery:t.sessionQuery,sessionPersistence:t.sessionPersistence,attachments:t.attachments,sessions:t.sessions};let o;try{await Bn(t,e.sessionId,n),o=await t.sessionPersistence.readRaw(e.sessionId,n),n.throwIfAborted()}catch{return n.throwIfAborted(),new Response("session log export failed to prepare the stored artifact",{status:500})}return o===void 0?new Response("session not found",{status:404}):new Response(Wn(r,o,e.sessionId,e.includeDescendants===!0,f,n),{headers:{"content-type":"application/zip","content-disposition":`attachment; filename="${Gn(e.sessionId)}"`}})}},respond(e){const n=$.get(e.rpcId);if(n!==void 0){if(!e.result.ok)return Promise.resolve({accepted:!1,reason:"bad-response"});const a=Kn.safeParse(e.result.value);return!a.success||a.data.approvalId!==n.approvalId||a.data.sessionId!==n.sessionId?Promise.resolve({accepted:!1,reason:"bad-response"}):(n.resolve(a.data.outcome),Promise.resolve({accepted:!0}))}const t=N.get(e.rpcId);if(t===void 0)return Promise.resolve({accepted:!1,reason:"not-pending"});if(!e.result.ok)return e.result.error.code!=="cancelled"?Promise.resolve({accepted:!1,reason:"bad-response"}):(Y(t,"cancelled"),t.reject(new X("the user cancelled ask_user_question","ASK_CANCELLED")),Promise.resolve({accepted:!0}));const r=xn.safeParse(e.result.value);if(!r.success)return Promise.resolve({accepted:!1,reason:"bad-response"});const o={sessionId:r.data.sessionId,answer:{answers:r.data.answer.answers.map(a=>({id:a.id,selected:a.selected,...a.custom===void 0?{}:{custom:a.custom}}))}};return bt(o,t)?(Y(t,"answered"),t.resolve(o.answer),Promise.resolve({accepted:!0})):Promise.resolve({accepted:!1,reason:"bad-response"})}}}u(createApiProxy,"createApiProxy");
|
|
1
|
+
var gn=Object.defineProperty;var u=(s,i)=>gn(s,"name",{value:i,configurable:!0});import{randomUUID as W}from"node:crypto";import{mkdir as mn,stat as hn}from"node:fs/promises";import{dirname as yn}from"node:path";import{installModelSelection as wn}from"@deepseek-ai/dsh-agent";import{AttachmentError as de}from"@deepseek-ai/dsh-attachment";import{contentHasImage as Ne,createUserMessage as vn,freezeMessage as bn,ReasoningEffortId as In}from"@deepseek-ai/dsh-llm";import{errorChain as kn}from"@deepseek-ai/dsh-llm";import{isAppendSurfaceEvent as Sn,isJsonValue as Pn}from"@deepseek-ai/dsh-session";import{SessionQueryError as ce}from"@deepseek-ai/dsh-session-query";import{SubagentError as j}from"@deepseek-ai/dsh-subagent";import{isUserInvocable as En}from"@deepseek-ai/dsh-skill";import{workspaceDomainState as An,workspaceRecord as $n,WorkspaceId as U,WorkspaceMoveInvalidError as Nn,WorkspaceOrderInvalidError as Cn,WorkspaceUnknownSessionError as Mn}from"@deepseek-ai/dsh-workspace";import{InvalidPresetIdError as Rn,PresetExistsError as _n,PresetMountError as On,PresetNotWritableError as Ce,resolveSessionPreset as L,UnknownPresetError as Me}from"@deepseek-ai/dsh-agent-presets";import{DEFAULT_SESSION_LOG_COMPRESSION_LEVEL as Tn,flushLiveSessionLog as Ln,sessionLogExportDeps as jn,sessionLogZipFilename as Un,streamSessionLogZip as Dn}from"./session-export.js";import{SESSION_SEARCH_RESULT_LIMIT as D,SESSION_SEARCH_SNIPPET_MAX_CODE_POINTS as Fn,truncateUnicodeCodePoints as Bn}from"./api/session-search.js";import{GoalError as Zn}from"@deepseek-ai/dsh-goal";import{SettingsConflictError as zn,settingsNamespace as Qn}from"@deepseek-ai/dsh-settings";import{credentialRef as le}from"@deepseek-ai/dsh-credentials";import{SessionTitleInvalidError as Wn}from"@deepseek-ai/dsh-session-title";import{approvalResponsePayloadSchema as Vn}from"./api/approvals.schema.js";import{imageLimitsProjectionSchema as Gn,sessionListMetadataProjectionSchema as Jn}from"./api/sessions.schema.js";import{questionResponsePayloadSchema as Hn}from"./api/questions.schema.js";import{RpcId as ue}from"./api/rpc.js";import{UserQuestionError as Y}from"@deepseek-ai/dsh-user-questions";import{DirectoryPickerError as Kn}from"@deepseek-ai/dsh-host-directory-picker";import{ApiRemoteSessionNotFound as X,ApiRemoteSubagentSessionOwnership as F,API_REMOTE_FORWARDED_EVENTS as Yn,apiRemoteSubagentOwnershipError as Xn,createApiRemoteAgentResolver as xn,hasApiRemoteSubagentOwner as qn,inspectApiRemoteSession as et}from"@deepseek-ai/dsh-api-remotes";import{canOpenNativePath as nt,openNativePath as tt,openNativeTextFile as st}from"./native-path-opener.js";const rt=50,Re=100,_e=16;export const DEFAULT_COLD_BLANK_PROBE_MAX_BYTES=1024;const Oe=new Set(["user/message","assistant/message"]);function ot(s){const i=Buffer.from(s,"base64");if(s.length===0||i.toString("base64")!==s)throw new de("Image upload is not canonical base64.","INVALID_IMAGE_BASE64");return new Uint8Array(i)}u(ot,"decodeBase64");async function it(s,i){if(i.every(y=>y.type==="text"))return i.map(y=>({type:"text",text:y.text}));const f=i.map(y=>y.type==="text"?y:{part:y,data:ot(y.data)}),m=f.filter(y=>"data"in y),h=await s.attachments.saveImages(m.map(y=>({data:y.data,mediaType:y.part.mediaType,...y.part.name===void 0?{}:{name:y.part.name}}))),S=[];let k=0;for(const y of f){if(!("data"in y)){S.push({type:"text",text:y.text});continue}const P=h[k++];if(P===void 0)throw new Error("attachment batch result did not preserve input cardinality");S.push({type:"image",attachment:P})}return S}u(it,"durablePromptContent");function V(s,i){if(Array.isArray(s))for(const f of s){if(typeof f!="object"||f===null||Array.isArray(f))continue;const m=f;if(m.type==="image"&&typeof m.attachment=="object"&&m.attachment!==null){const h=m.attachment;if(i(h))return h}if(m.type==="tool-result"){const h=V(m.content,i);if(h!==void 0)return h}}}u(V,"imageBlockIn");function at(s,i){const f=s.data,m=V(f.content,i);if(m!==void 0)return m;if(f.message!==void 0){const h=V(f.message.content,i);if(h!==void 0)return h}if(f.inserted!==void 0)for(const h of f.inserted){const S=V(h.content,i);if(S!==void 0)return S}if(s.type==="assistant/chunk"&&f.chunk?.type==="block-end")return V([f.chunk.block],i)}u(at,"imageInEvent");function dt(s){return s.some(i=>Ne(i.content))}u(dt,"messagesHaveImage");function ct(s,i){for(const f of s){const m=at(f,h=>String(h.attachmentId)===i);if(m!==void 0)return m}}u(ct,"referencedImage");const Te=/^[A-Za-z][A-Za-z0-9_+.-]*(?:\/[A-Za-z0-9_+.-]+)+$/;function Le(s){if(!(s.length===0||s.trim()!==s||s!=="UTC"&&!Te.test(s)))try{const i=new Intl.DateTimeFormat("en-US",{timeZone:s}).resolvedOptions().timeZone;return i!=="UTC"&&!Te.test(i)?void 0:i}catch{return}}u(Le,"canonicalClientTimeZone");function R(s){return s.aborted}u(R,"isAborted");function lt(s,i,f){const m=i===void 0?[...s]:s.filter(y=>y.seq<i);let h=0,S=0;for(let y=m.length-1;y>=0;y--){const P=m[y];if(!Oe.has(P.type)||!Sn(P))continue;h++;const $=P.sourceEventSeqs;let C=P.seq;if($!==void 0)for(const _ of $)_<C&&(C=_);if(h>=f){S=C;break}}return{events:m.filter(y=>y.seq>=S),hasMore:S>0}}u(lt,"paginate");function b(s,i){return{rpcId:s.rpcId,result:{ok:!0,value:i}}}u(b,"ok");async function je(s){const i=await Promise.all(s.llm.listProviders().map(async f=>{try{const m=await s.llm.listModels(f.id),h=await Promise.all(m.map(async k=>{const y=await s.llm.resolveModelInfo(f.id,k.id),P=y.reasoning===void 0?void 0:{efforts:y.reasoning.efforts.map($=>({id:$.id,name:$.name,...$.description===void 0?{}:{description:$.description}})),...y.reasoning.defaultEffort===void 0?{}:{defaultEffort:y.reasoning.defaultEffort}};return{id:k.id,name:k.name,...k.description===void 0?{}:{description:k.description},...P===void 0?{}:{reasoning:P}}}));return{kind:"group",group:{id:f.id,name:f.name,models:h}}}catch(m){return{kind:"failure",failure:{id:f.id,name:f.name,message:m instanceof Error?m.message:String(m)}}}}));return{groups:i.flatMap(f=>f.kind==="group"?[f.group]:[]).filter(f=>f.models.length>0),failures:i.flatMap(f=>f.kind==="failure"?[f.failure]:[])}}u(je,"buildModelCatalog");function c(s,i){return{rpcId:s.rpcId,result:{ok:!1,error:i}}}u(c,"err");function Ue(s,i){if(i instanceof Me)return c(s,{code:"agent-preset-not-found",message:i.message,details:{agentPreset:i.presetId,available:[...i.available]}});if(i instanceof On)return c(s,{code:"agent-preset-invalid",message:i.message,details:{agentPreset:i.presetId,reason:i.reason}})}u(Ue,"presetFailure");class De{static{u(this,"FrameQueue")}buffer=[];waiter;done=!1;push(i){this.done||(this.buffer.push(i),this.waiter?.())}end(){this.done=!0,this.waiter?.()}async*iterate(i,f){const m=u(()=>{this.end()},"onAbort");i.addEventListener("abort",m,{once:!0});try{for(;;){for(;this.buffer.length>0;)yield this.buffer.shift();if(this.done||i.aborted)return;await new Promise(h=>{this.waiter=h}),this.waiter=void 0}}finally{i.removeEventListener("abort",m),f()}}}function A(s){return{rpcId:ue(W()),payload:s}}u(A,"frame");export function assertJsonArgs(s,i){for(const[f,m]of i.entries())if(!Pn(m))throw new Error(`forwarded host event "${s}" argument ${f} is not lossless JSON data`);return i}u(assertJsonArgs,"assertJsonArgs");function Fe(s,i){s.push(A({type:"session/subscribed",sessionId:i.id,lastSeq:i.seq-1}))}u(Fe,"subscribeSession");function x(s){return s.map(i=>({id:i.id,kind:i.kind,label:i.label,status:i.status,...i.detail===void 0?{}:{detail:i.detail},startedAt:i.startedAt,...i.finishedAt===void 0?{}:{finishedAt:i.finishedAt}}))}u(x,"jobViews");function Be(s){return!s.events.some(i=>i.type==="turn/start")}u(Be,"sessionBlank");function Ze(s,i){const f=s.blank&&i.type!=="turn/start",m=i.type==="user/message"&&i.data.source.kind==="user"?i.time:s.lastPromptAt;return f===s.blank&&m===s.lastPromptAt?s:{blank:f,lastPromptAt:m}}u(Ze,"applySessionListMetadata");function ze(s){let i={blank:!0,lastPromptAt:null};for(const f of s)i=Ze(i,f);return i}u(ze,"sessionListMetadata");function Qe(s,i){return Math.max(s.createdAt,i?.lastPromptAt??0)}u(Qe,"sessionListUpdatedAt");function fe(s,i=[]){const f=L({header:s,events:i});return{...s.parentSession===void 0?{}:{parentSessionId:s.parentSession},...s.origin===void 0?{}:{origin:s.origin},...s.cwd===void 0?{}:{cwd:s.cwd},...f===void 0?{}:{agentPreset:f}}}u(fe,"sessionListFields");function ut(s,i){const f=ze(s.events);return{sessionId:s.id,updatedAt:Qe(s.header,f),running:i,blank:f.blank,...fe(s.header,s.events)}}u(ut,"summarize");async function ft(s,i,f,m,h){if(m===0)return;h?.throwIfAborted();const S=i.locate(f);if(S===void 0)return;h?.throwIfAborted();let k;try{k=(await hn(S.path)).size}catch{h?.throwIfAborted();return}if(!(k>m))try{const{events:y}=await i.readFrom(f.id,0,h);return h?.throwIfAborted(),ze(y)}catch(y){h?.throwIfAborted(),s.logger.warn(`session.list: blank probe for "${f.id}" failed (serving it as visible): ${String(y)}`);return}}u(ft,"probeColdSessionMetadata");async function pt(s,i,f,m,h,S){const k=m?.blank===!1?void 0:await ft(s,i,f,h,S);return{sessionId:f.id,updatedAt:Qe(f,k??m),running:!1,blank:m?.blank===!1?!1:k?.blank??!1,...fe(f)}}u(pt,"summarizeCold");function We(s){return s instanceof Kn?{code:s.code,message:s.message,details:{path:s.path}}:{code:"internal",message:s instanceof Error?s.message:String(s),details:{}}}u(We,"directoryError");function Ve(s){return{rpcId:s.rpcId,payload:{type:"approval/requested",sessionId:s.sessionId,approvalId:s.approvalId,toolName:s.toolName,...s.callId===void 0?{}:{callId:s.callId},...s.reason===void 0?{}:{reason:s.reason}}}}u(Ve,"requestedFrame");function gt(s,i){if(s.sessionId!==i.sessionId)return!1;const f=s.answer.answers;return f.length!==i.questions.length?!1:f.every((m,h)=>{const S=i.questions[h];if(m.id!==S.id||new Set(m.selected).size!==m.selected.length)return!1;const k=m.custom?.trim();if(k!==void 0&&k===""||S.multiSelect!==!0&&(k!==void 0&&m.selected.length>0||m.selected.length>1))return!1;const y=new Set(S.options?.map(P=>P.label)??[]);return m.selected.every(P=>y.has(P))})}u(gt,"matchesQuestions");function Ge(s,i,f,m){try{if(i.type==="tool/call"){const{name:h,arguments:S}=i.data,k=s.tools.get(h,m)?.presentCall?.(JSON.parse(S));return k===void 0?void 0:{for:"call",view:k}}if(i.type==="tool/result"){const{message:h,meta:S}=i.data,[k]=h.content,y=h.source.callId,P=f(y);if(P===void 0)return;const $=s.tools.get(P.name,m)?.presentResult?.(P.args,{content:k.content,isError:k.isError===!0,...S===void 0?{}:{meta:S}});return $===void 0?void 0:{for:"result",view:$}}}catch(h){console.error(`api-proxy: presenter failed for ${i.type}, falling back to generic: ${String(h)}`)}}u(Ge,"viewFor");function Je(s,i){for(let f=s.length-1;f>=0;f--){const m=s[f];if(m.type!=="tool/call")continue;const h=m.data;if(h.callId===i)try{return{name:h.name,args:JSON.parse(h.arguments)}}catch{return}}}u(Je,"backscanArgs");function He(s,i,f,m,h){const S=lt(i,f,m??rt);return{events:S.events.map(k=>{const y=Ge(s,k,P=>Je(S.events,P),h);return{event:k,...y===void 0?{}:{view:y}}}),hasMore:S.hasMore}}u(He,"historyPage");function Ke(s,i){const f=s.get("sessionProjections");if(f!==void 0)return f.snapshot(i)}u(Ke,"projectionsFor");function Ye(s,i,f){try{const m=f!==void 0?s.get("sessionProjections")?.snapshot(f):s.get("sessionProjectionCache")?.cachedSnapshot(i);return m!==void 0&&Object.keys(m.values).length>0?m:void 0}catch(m){s.logger.warn(`session.list: projection column for "${i.id}" failed (serving the row without it): ${String(m)}`);return}}u(Ye,"listProjectionsFor");function Xe(s,i){const f=s.get("sessionProjections");if(f!==void 0)return f.restore({},i,0).snapshot}u(Xe,"detachedProjectionsFor");function xe(s,i,f){try{return f()}catch(m){s.logger.warn(`subagent.history: projections for "${i}" failed (serving the page without them): ${String(m)}`);return}}u(xe,"subagentHistoryProjections");function mt(s,i,f){const m=s.payload.childSessionId;if(f.aborted)return c(s,{code:"cancelled",message:"subagent prompt was cancelled",details:{}});if(i instanceof j)switch(i.code){case"NOT_RESUMABLE":return c(s,{code:"subagent-not-resumable",message:"subagent cannot be resumed",details:{childSessionId:m}});case"UNAUTHORIZED":return c(s,{code:"subagent-unauthorized",message:"subagent does not belong to this parent",details:{childSessionId:m}});case"DRAINING":case"ACTIVATION_CLOSING":case"CONTINUATION_UNAVAILABLE":case"PERSISTENCE_UNAVAILABLE":return c(s,{code:"subagent-delivery-unavailable",message:"subagent follow-up is temporarily unavailable",details:{childSessionId:m}});default:break}return c(s,{code:"internal",message:"subagent prompt failed",details:{}})}u(mt,"subagentPromptError");function qe(){return{code:"internal",message:"subagent catalog is unavailable: this deployment does not mount the sessionProjections registry (load @deepseek-ai/dsh-session-projection)",details:{}}}u(qe,"projectionsUnavailableError");async function en(s,i,f){const{parentSessionId:m,childSessionId:h,mode:S}=i;try{const y=(await s.subagents.listChildren(m,f)).find(P=>P.id===h);return y===void 0||y.kind==="child"&&y.mode!==S?{error:{code:"subagent-not-found",message:`session "${h}" is not a ${S} direct child of "${m}"`,details:{parentSessionId:m,childSessionId:h}}}:y.kind==="diagnostic"?{error:{code:"subagent-catalog-diagnostic",message:`subagent "${h}" is ${y.reason}`,details:{parentSessionId:m,childSessionId:h,reason:y.reason}}}:{entry:y}}catch(k){return f?.aborted||k instanceof j&&k.code==="CANCELLED"?{error:{code:"cancelled",message:"subagent catalog read was cancelled",details:{}}}:k instanceof j&&k.code==="SUBAGENT_CONTROL_PROJECTIONS_UNAVAILABLE"?{error:qe()}:{error:{code:"internal",message:"subagent catalog read failed",details:{}}}}}u(en,"catalogChild");function q(s){return{code:"agent-preset-not-found",message:"this deployment composes no agent presets",details:{agentPreset:s,available:[]}}}u(q,"noRoster");function ee(s,i){return i instanceof Me?{code:"agent-preset-not-found",message:i.message,details:{agentPreset:i.presetId,available:[...i.available]}}:i instanceof Ce?{code:"agent-preset-read-only",message:i.message,details:{agentPreset:s,reason:i.message}}:i instanceof Rn||i instanceof _n?{code:"agent-preset-invalid",message:i.message,details:{agentPreset:s,reason:i.message}}:{code:"internal",message:`agent preset "${s}": ${String(i)}`,details:{}}}u(ee,"presetError");class nn extends Error{static{u(this,"AgentPresetConflict")}sessionId;requestedPreset;existingPreset;constructor(i,f,m){super(m===void 0?`session "${i}" records no agent preset, so it cannot be adopted under one; a deployment composing no roster records none on any session — `:`session "${i}" already runs agent preset ${JSON.stringify(m)}; requested ${JSON.stringify(f)}. A session's preset is fixed at creation.`),this.sessionId=i,this.requestedPreset=f,this.existingPreset=m}}class pe extends Error{static{u(this,"SessionCwdConflict")}sessionId;requestedCwd;existingCwd;constructor(i,f,m){super(`session "${i}" already exists with cwd ${JSON.stringify(m)}; requested ${JSON.stringify(f)}`),this.sessionId=i,this.requestedCwd=f,this.existingCwd=m}}class tn extends Error{static{u(this,"WorkspaceNameConflictError")}workspaceName;constructor(i){super(`workspace name '${i}' is already in use`),this.workspaceName=i,this.name="WorkspaceNameConflictError"}}function ne(s,i){return c(s,{code:"workspace-not-found",message:`workspace "${i}" not found`,details:{workspaceId:i}})}u(ne,"workspaceNotFound");function G(s){return{workspaceId:s.id,path:s.path,title:s.title,sessionIds:[...s.sessionIds],createdAt:s.createdAt,updatedAt:s.updatedAt}}u(G,"workspaceView");function ht(s,i){const f=$n.parse(i);return{workspaceId:s,path:f.path,title:f.title,sessionIds:[...f.sessionIds],createdAt:f.createdAt,updatedAt:f.updatedAt}}u(ht,"changedWorkspaceView");export function createApiProxy(s,i){const f=i.sessionExportCompressionLevel??Tn,m=i.coldBlankProbeMaxBytes??DEFAULT_COLD_BLANK_PROBE_MAX_BYTES,h=u(()=>{const{provider:e,model:n}=i.defaultModelSelection();return{provider:e,model:n}},"agentOptions"),S=new WeakMap,k=new Map,y=new Map;let P=Promise.resolve();const $=new Map,C=new Map,_=new Set,ge=new WeakMap;function me(e,n){const t=(ge.get(e)??Promise.resolve()).then(n);return ge.set(e,t.then(()=>{},()=>{})),t}u(me,"serializeImageAdmission");function B(e){const n=S.get(e);if(n!==void 0)return n;let t;const r={get current(){if(t!==void 0)return t;const o=e.session.requestHeader()?.config;return o===void 0?i.defaultModelSelection():{provider:o.provider,model:o.model,...o.reasoningEffort===void 0?{}:{reasoningEffort:o.reasoningEffort}}},set current(o){t=o},assembled:void 0};return wn(e.ctx,r),S.set(e,r),r}u(B,"selectionFor");function he(e){const n=e.agent;if(n===void 0)throw new Error("api-proxy: agent setup has no scoped agent");B(n)}u(he,"installSelection");function ye(e,n,t){if(!(n===void 0||n===t))throw new nn(e,n,t)}u(ye,"assertPresetUnchanged");async function J(e){const n=s.get("agentPresets");if(n===void 0)return{setup:u(r=>(he(r),Promise.resolve()),"setup")};const t=(await n.resolve(e)).id;return{agentPreset:t,setup:u(async r=>{he(r),await n.mount(r,t)},"setup")}}u(J,"composeAgent");const O=u((e,n)=>qn(s,e,n),"hasSubagentOwner"),te=u(e=>Xn(e),"subagentOwnershipError"),se=u(e=>et(s,e),"inspectServable"),T=xn(s,{agentOptions:h,setup:u(async({meta:e,events:n})=>(await J(L({header:e,events:n}))).setup,"setup")});function H(e){const n=A(e);for(const t of _)t.push(n)}u(H,"broadcast"),s.inject(["sessionProjections"],e=>{e.sessionProjections.onChanged((n,t,r,o)=>{H({type:"session/projection",sessionId:n.id,key:t,value:r,seq:o})})}),s.inject(["sessionProjections"],e=>{e.sessionProjections.register({key:"sessionListMetadata",schema:Jn,init:u(()=>({blank:!0,lastPromptAt:null}),"init"),apply:Ze,view:u(n=>n,"view"),stateVersion:1})}),s.inject(["sessionProjections","attachments"],e=>{e.sessionProjections.register({key:"imageLimits",schema:Gn,init:u(()=>null,"init"),apply:u(n=>n,"apply"),view:u(()=>e.attachments.imageLimits,"view"),stateVersion:1})});const we=u((e,n)=>{const t=u(r=>{const o=r==="next-turn"?e.inbox.nextTurn:e.inbox.nextStep;return n?.target===r?o.toSpliced(n.start,n.removedCount??0,...n.inserted):o},"project");return[...t("next-turn").map(r=>({id:r.id,placement:"queued",message:r})),...t("next-step").map(r=>({id:r.id,placement:r.source.kind==="user"?"steering":"context",message:r}))]},"queueItems");s.on("session/event",(e,n)=>{if(n.type!=="agent/inbox/spliced")return;const t=s.agents.get(e.id);t?.session===e&&H({type:"session/queue",sessionId:e.id,items:we(t,n.data)})});function K(e,n){$.delete(e.rpcId),e.signal!==void 0&&e.onAbort!==void 0&&e.signal.removeEventListener("abort",e.onAbort),H({type:"question/resolved",sessionId:e.sessionId,questionRpcId:e.rpcId,outcome:n})}u(K,"claimQuestion");const sn=s.userQuestions.registerProvider({ask(e){const n=e.agent?.id;return n===void 0?Promise.reject(new Y("web user interaction requires an agent-owned session","ASK_MISSING_AGENT")):new Promise((t,r)=>{const o=ue(W()),a={rpcId:o,sessionId:n,questions:e.questions,resolve:t,reject:r,...e.signal===void 0?{}:{signal:e.signal}},d=u(()=>{K(a,"cancelled"),r(new Y("ask_user_question was aborted before the user answered","ASK_ABORTED"))},"onAbort");a.onAbort=d,$.set(o,a),e.signal?.addEventListener("abort",d,{once:!0});const l={rpcId:o,payload:{type:"question/requested",sessionId:n,questions:e.questions}};for(const p of _)p.push(l)})}});s.effect(()=>()=>{sn();for(const e of[...$.values()])K(e,"cancelled"),e.reject(new Y("web user-questions provider was disposed","ASK_ABORTED"))},"api-proxy: user-questions provider"),s.get("approval")!==void 0&&(s.effect(()=>()=>{for(const e of[...C.values()])e.resolve("cancelled")},"api-proxy: approval registry teardown"),s.on("approval/request",(e,n)=>{if(e.signal?.aborted===!0)return Promise.resolve("cancelled");const t=e.agent.session.events,r=new Set;for(const l of C.values())r.add(l.approvalId);const o=new Set;let a;for(let l=t.length-1;l>=0;l-=1){const p=t[l];if(p.type==="approval/decided")o.add(p.data.id);else if(p.type==="approval/asked"){if(o.has(p.data.id)||r.has(p.data.id)||(e.callId??null)!==(p.data.callId??null))continue;a=p.data.id;break}}if(a===void 0)return n();const d=a;return new Promise(l=>{const p=u(w=>{C.delete(I.rpcId)&&(e.signal?.removeEventListener("abort",g),H({type:"approval/resolved",sessionId:I.sessionId,approvalId:d,outcome:w}),l(w))},"settle"),g=u(()=>{p("cancelled")},"onAbort"),I={rpcId:ue(W()),sessionId:e.agent.session.id,approvalId:d,toolName:e.toolName,...e.callId===void 0?{}:{callId:e.callId},...e.reason===void 0?{}:{reason:e.reason},resolve:p};C.set(I.rpcId,I),e.signal?.addEventListener("abort",g,{once:!0});const v=Ve(I);for(const w of _)w.push(v)})}));async function ve(e){const n=s.sessions.get(e);if(n!==void 0)return{id:n.id,header:n.header,events:[...n.events]};const t=await se(e);return{id:t.meta.id,header:t.meta,events:t.events}}u(ve,"readSessionState");async function rn(e){const n=s.workspaceRegistry.list(),t=n.find(o=>o.sessionIds.includes(e.id));if(t!==void 0||e.header.origin!=="subagent")return t;const r=await s.sessionQuery.traceSession(e.id);for(const o of r.ancestors){const a=n.find(d=>d.sessionIds.includes(o.header.id));if(a!==void 0)return a}}u(rn,"forkWorkspace");async function on(e){const n=s.sessions.get(e);if(n!==void 0)return{kind:"attached",session:n};const t=await se(e);return{kind:"detached",header:t.meta,events:t.events}}u(on,"historySourceFor");function an(e){return e.kind==="detached"?{header:e.header,events:e.events}:{header:e.session.header,events:e.session.events}}u(an,"sourceSession");function dn(e,n){if(e.kind==="detached"){const o=n?Xe(s,e.events):void 0;return{events:e.events,...o===void 0?{}:{projections:o}}}const t=[...e.session.events],r=n?Ke(s,e.session):void 0;return{events:t,...r===void 0?{}:{projections:r}}}u(dn,"historyCutOf");async function be(e,n){const t=s.get("agents")?.get(e);if(t!==void 0)return t;const r=s.get("agentPresets");if(r!==void 0)try{return await r.standingKeyFor(L(n))}catch{return}}u(be,"presenterScopeFor");async function cn(e,n,t,r){let o=y.get(e);o===void 0&&(o=(async()=>{const d=s.sessions.get(e),l=s.agents.get(e);if(d!==void 0&&O(d,l))throw new F(e);if(l!==void 0)return l;const p=t?s.get("sessionPersistence"):void 0,g=p===void 0?void 0:(await p.list()).find(v=>v.id===e);if(p!==void 0&&g!==void 0){const v=await p.inspect(e);if(O({header:v.meta},void 0))throw new F(e);if(v.meta.cwd!==n)throw new pe(e,n,v.meta.cwd);const w=L({header:v.meta,events:v.events});return ye(e,r,w),(await s.agents.resume({resumeSessionId:e,agentOptions:h(),setup:(await J(w)).setup})).agent}try{await mn(n,{recursive:!0})}catch(v){throw new Error(`failed to ensure project directory "${n}": ${String(v)}`,{cause:v})}const I=await J(r);return(await s.agents.create({sessionId:e,agentOptions:h(),meta:{cwd:n,...I.agentPreset===void 0?{}:{agentPreset:I.agentPreset}},setup:I.setup})).agent})().catch(d=>{const l=s.agents.get(e);if(l!==void 0){if(O(l.session,l))throw new F(e);return l}const p=s.sessions.get(e);throw p!==void 0&&O(p,void 0)?new F(e):d}).finally(()=>{y.delete(e)}),y.set(e,o));const a=await o;if(O(a.session,a))throw new F(e);if(ye(e,r,L(a.session)),a.session.header.cwd!==n)throw new pe(e,n,a.session.header.cwd);return a}u(cn,"ensureSession");function ln(e){const n=P.then(async()=>{const t=await s.workspaceRegistry.resolveByPath(e);return t!==void 0?{workspace:t,created:!1}:{workspace:await s.workspaceRegistry.create(e),created:!0}});return P=n.then(()=>{},()=>{}),n}u(ln,"ensureWorkspace");async function Ie(e){e?.throwIfAborted();const n=u(a=>{const d=s.agents.get(a.id),l=Ye(s,a.header,a);return{...ut(a,d?.status==="running"),...l===void 0?{}:{projections:l}}},"summarizeAttached"),t=s.sessions.list().map(n);e?.throwIfAborted();const r=new Set(t.map(a=>a.sessionId)),o=s.get("sessionPersistence");if(o!==void 0){const a=(await o.list(e)).filter(d=>!r.has(d.id)&&d.cwd!==void 0);e?.throwIfAborted();for(let d=0;d<a.length;d+=_e){e?.throwIfAborted();const l=a.slice(d,d+_e),p=await Promise.allSettled(l.map(async w=>{const E=Ye(s,w,void 0),M=await pt(s,o,w,E?.values.sessionListMetadata,m,e),z=s.sessions.get(w.id);return z!==void 0?n(z):{...M,...E===void 0?{}:{projections:E}}})),g=[];let I=!1,v;for(const w of p)w.status==="fulfilled"?g.push(w.value):I||(I=!0,v=w.reason);if(I)throw v;e?.throwIfAborted(),t.push(...g)}}return t.sort((a,d)=>d.updatedAt-a.updatedAt),t}u(Ie,"listVisibleSessionSummaries");function ke(e){const t=s.get("agentPresets")?.serviceFor(e,"goals")??s.get("goals");return t===void 0?{error:{code:"internal",message:"goal service is absent: neither this session's agent preset nor the host composition mounts @deepseek-ai/dsh-goal",details:{}}}:t}u(ke,"goalServiceFor");function Se(e,n){const t=n instanceof Zn?{goalCode:n.code}:{};return c(e,{code:"internal",message:String(n),details:t})}u(Se,"goalError");async function Z(e,n){const t=await T(e.payload.sessionId);if("error"in t)return c(e,t.error);const r=ke(t.agent);if("error"in r)return c(e,r.error);try{const o=n(r,t.agent);return b(e,{ref:{id:o.id,revision:o.revision}})}catch(o){return Se(e,o)}}u(Z,"mutateGoal");function Pe(e){const n=s.get("llm");return n===void 0||n.listProviders().some(t=>t.id===e)}u(Pe,"routeServed");async function un(e,n){const t=await T(n);if("error"in t)return{refused:c(e,t.error)};const r=t.agent,o=B(r).current;return Pe(o.provider)?{agent:r}:{refused:c(e,{code:"model-unavailable",message:`no adapter serves provider "${o.provider}"; select a model for this session`,details:{provider:o.provider,model:o.model}})}}u(un,"turnAgentFor");function re(){return{code:"internal",message:"settings service is absent: this deployment does not mount a settings provider (e.g. @deepseek-ai/dsh-settings-file) in its composition",details:{}}}u(re,"settingsAbsent");async function Ee(e,n,t,r){try{return await r(n,t),b(e,{opened:!0})}catch(o){return t.aborted?c(e,{code:"cancelled",message:"path open was aborted",details:{}}):c(e,{code:"internal",message:`path open failed: ${o instanceof Error?o.message:String(o)}`,details:{}})}}u(Ee,"openTarget");function Ae(e,n,t){const r=i.openPath??((o,a)=>tt(o,a));return Ee(e,n,t,r)}u(Ae,"openPath");function fn(e,n,t){const r=i.openTextFile??((o,a)=>st(o,a));return Ee(e,n,t,r)}u(fn,"openTextFile");function oe(){return i.canOpenPath!==void 0?i.canOpenPath():i.openPath!==void 0||nt()}u(oe,"canOpenPaths");function ie(){return{code:"internal",message:"credentials service is absent: this deployment does not mount a credential provider (e.g. @deepseek-ai/dsh-credentials-local) in its composition",details:{}}}u(ie,"credentialsAbsent");function $e(e){return{ns:String(e.ns),schema:e.schema,value:e.value,...e.base===void 0?{}:{base:e.base},...e.user===void 0?{}:{user:e.user},applies:e.applies,secrets:(e.secrets??[]).map(n=>({path:[...n.path],set:n.set})),revision:e.revision}}u($e,"namespaceView");async function ae(e,n,t,r,o){const a=s.get("settings");if(a===void 0)return c(e,re());const d=u(g=>g instanceof zn?c(e,{code:"settings-conflict",message:g.message,details:{ns:n,expected:g.expected,actual:g.actual}}):c(e,{code:"settings-rejected",message:g instanceof Error?g.message:String(g),details:{ns:n}}),"rejected");let l;try{l=Qn(n)}catch(g){return d(g)}try{t==="update"?await a.update(l,r,o):t==="replace"?await a.replace(l,r,o):await a.mutate(l,r,o)}catch(g){return d(g)}const p=a.describe({redactSecrets:!0}).find(g=>g.ns===l);return p===void 0?c(e,{code:"internal",message:`settings namespace "${n}" was disposed after the ${t}`,details:{}}):b(e,$e(p))}return u(ae,"settingsWrite"),{sessions:{async list(e){return b(e,{items:await Ie()})},async search(e,n){const t=u(()=>c(e,{code:"cancelled",message:"session search was aborted",details:{}}),"cancelled");if(R(n))return t();const r=s.get("sessionQuery");if(r===void 0)return c(e,{code:"internal",message:"session search is unavailable: this deployment does not mount @deepseek-ai/dsh-session-query",details:{}});try{const o=await Ie(n);if(R(n))return t();if(o.length===0)return b(e,{items:[],hasMore:!1});const a=new Set(o.map(w=>w.sessionId)),d=[],l=new Set,p=new Set;let g,I=0,v=D;for(;d.length<=D;){if(R(n))return t();if(I>=Re)throw new Error(`session search provider exceeded the ${Re}-call work budget`);I++;const w=g,E=v;let M;try{M=await r.searchSessions({query:e.payload.query,eventFilters:[{kind:"type",values:["user/message","assistant/message"]},{kind:"surface",values:["current"]}],limit:E,...w===void 0?{}:{cursor:w}},{signal:n})}catch(N){if(R(n))return t();if(w===void 0&&N instanceof ce&&N.code==="SESSION_QUERY_INVALID_LIMIT"&&E>1){v=Math.max(1,Math.floor(E/2));continue}if(w!==void 0&&N instanceof ce&&N.code==="SESSION_QUERY_STALE_CURSOR"){d.length=0,l.clear(),p.clear(),g=void 0;continue}throw N}if(R(n))return t();const z=M.items.length;if(z>E)throw new Error(`session search provider returned ${z} items; maximum is ${E}`);for(const N of M.items){if(d.length>D||!a.has(N.header.id)||N.bestMatch.sessionId!==N.header.id||N.bestMatch.surface!=="current"||!Oe.has(N.bestMatch.type)||l.has(N.header.id))continue;const pn=Bn(N.bestMatch.snippet,Fn);l.add(N.header.id),d.push({sessionId:N.header.id,snippet:pn})}const Q=M.nextCursor;if(Q!==void 0){if(p.has(Q))throw new Error("session search provider repeated a continuation cursor");p.add(Q)}if(d.length>D||Q===void 0)break;g=Q}return b(e,{items:d.slice(0,D),hasMore:d.length>D})}catch(o){return R(n)||o instanceof ce&&o.code==="SESSION_QUERY_ABORTED"?t():c(e,{code:"internal",message:`session search failed: ${String(o)}`,details:{}})}},async create(e){const n=e.payload.sessionId??`session-${W()}`;let t;if(e.payload.workspaceId!==void 0&&(t=s.workspaceRegistry.get(U(e.payload.workspaceId)),t===void 0))return c(e,{code:"workspace-not-found",message:`workspace "${e.payload.workspaceId}" not found`,details:{workspaceId:e.payload.workspaceId}});const r=t?.path??e.payload.cwd??i.cwd,o=e.payload.agentPreset;try{await cn(n,r,e.payload.sessionId!==void 0,o)}catch(l){if(l instanceof nn)return c(e,{code:"agent-preset-conflict",message:l.message,details:{sessionId:l.sessionId,requestedPreset:l.requestedPreset,...l.existingPreset===void 0?{}:{existingPreset:l.existingPreset}}});const p=Ue(e,l);return p!==void 0?p:l instanceof pe?c(e,{code:"session-conflict",message:l.message,details:{sessionId:l.sessionId,requestedCwd:l.requestedCwd,...l.existingCwd===void 0?{}:{existingCwd:l.existingCwd}}}):l instanceof F?c(e,te(l.sessionId)):c(e,{code:"internal",message:`failed to create session "${n}": ${String(l)}`,details:{}})}if(t!==void 0)try{await t.attachSession(n)}catch(l){return c(e,{code:"workspace-attach-failed",message:`session "${n}" was created but could not attach to workspace "${t.id}": ${String(l)}`,details:{sessionId:n,workspaceId:t.id}})}const a=s.agents.get(n),d=a===void 0?void 0:L(a.session);return b(e,{sessionId:n,...d===void 0?{}:{agentPreset:d}})},async history(e){const{sessionId:n,beforeSeq:t,maxMessages:r}=e.payload;try{const o=await on(n),a=await be(n,an(o)),d=dn(o,t===void 0),l=He(s,d.events,t,r,a);return b(e,{events:l.events,hasMore:l.hasMore,...d.projections===void 0?{}:{projections:d.projections}})}catch(o){return o instanceof X?c(e,{code:"session-not-found",message:o.message,details:{sessionId:n}}):c(e,{code:"internal",message:`history unavailable for session "${n}": ${String(o)}`,details:{}})}},async models(e){const{sessionId:n}=e.payload,t=await T(n);if("error"in t)return c(e,t.error);const r=B(t.agent).current,{groups:o,failures:a}=await je(s),d=Pe(r.provider);return b(e,{current:{...r},routable:d,groups:o,failures:a})},async selectModel(e){const{sessionId:n,provider:t,model:r,reasoningEffort:o}=e.payload,a=await T(n);return"error"in a?c(e,a.error):me(a.agent,async()=>{try{const d=await s.llm.resolveCallConfig({provider:t,model:r,...o===void 0?{}:{reasoningEffort:In(o)}});if([...a.agent.inbox.nextTurn,...a.agent.inbox.nextStep].some(g=>Ne(g.content))||dt(a.agent.session.deriveMessages())){const g=await s.llm.resolveModelInfo(d.provider,d.model);if(g.inputModalities!==void 0&&!g.inputModalities.includes("image"))return c(e,{code:"model-unavailable",message:`Model "${d.model}" does not accept image input, but this session already contains images; select an image-capable model.`,details:{provider:t,model:r}})}const p={provider:d.provider,model:d.model,...d.reasoningEffort===void 0?{}:{reasoningEffort:d.reasoningEffort}};B(a.agent).current=p;try{await i.saveDefaultModelSelection?.(p)}catch(g){s.logger.warn(`api-proxy: the model switch applies to this session but was not saved as the default: ${String(g)}`)}return b(e,{selected:{...p}})}catch(d){return c(e,{code:"model-unavailable",message:d instanceof Error?d.message:String(d),details:{provider:t,model:r}})}})},async rename(e){const{sessionId:n,title:t}=e.payload,r=await T(n);if("error"in r)return c(e,r.error);const o=s.get("sessionTitle");if(o===void 0)return c(e,{code:"internal",message:"renaming is unavailable: this deployment mounts no session-title service",details:{}});try{const a=o.rename(r.agent.session,t);return b(e,{title:a.title,seq:a.eventSeq})}catch(a){return a instanceof Wn?c(e,{code:"title-invalid",message:a.message,details:{sessionId:n}}):c(e,{code:"internal",message:`failed to rename session "${n}": ${String(a)}`,details:{}})}},async fork(e){const{sessionId:n,atSeq:t}=e.payload;let r;try{r=await ve(n)}catch(w){return w instanceof X?c(e,{code:"session-not-found",message:w.message,details:{sessionId:n}}):c(e,{code:"internal",message:`fork source unavailable for session "${n}": ${String(w)}`,details:{}})}const o=r.events,a=o.at(-1)?.seq??-1,l=(t===void 0?void 0:o.find(w=>w.type==="turn/end"&&w.seq>=t))??(t===void 0||t>a?o.findLast(w=>w.type==="turn/end"):void 0);if(l===void 0)return c(e,{code:"fork-unavailable",message:t!==void 0&&t<=a?`session "${n}" has not completed the turn containing event ${String(t)}`:`session "${n}" has no completed turn to fork from`,details:{sessionId:n}});let p=l.seq+1;for(;p<o.length&&o[p]?.type!=="turn/start";)p++;let g;try{g=await rn(r)}catch(w){return c(e,{code:"internal",message:`failed to resolve fork workspace for session "${n}": ${String(w)}`,details:{}})}const I=`session-${W()}`,v=await J(L(r));try{await s.agents.create({sessionId:I,seed:o.slice(0,p),meta:{...r.header.cwd===void 0?{}:{cwd:r.header.cwd},parentSession:r.id,seedLength:p,...v.agentPreset===void 0?{}:{agentPreset:v.agentPreset}},agentOptions:h(),setup:v.setup})}catch(w){return c(e,{code:"internal",message:`failed to fork session "${n}": ${String(w)}`,details:{}})}if(g!==void 0)try{await g.attachSession(I)}catch(w){return c(e,{code:"workspace-attach-failed",message:`session "${I}" was forked but could not attach to workspace "${g.id}": ${String(w)}`,details:{sessionId:I,workspaceId:g.id}})}return b(e,{sessionId:I})},async prompt(e){const{sessionId:n,mode:t,content:r,clientTimeZone:o}=e.payload,a=o===void 0?void 0:Le(o);if(o!==void 0&&a===void 0)return c(e,{code:"invalid-time-zone",message:"clientTimeZone must be UTC or a valid IANA Area/Location name",details:{value:o}});const d=await un(e,n);if("refused"in d)return d.refused;const l=d.agent,p={kind:"user",rpcId:e.rpcId,...a===void 0?{}:{clientTimeZone:a}},g=r.some(v=>v.type==="image"),I=u(async()=>{try{if(g){const E=B(l).current,M=await s.llm.resolveModelInfo(E.provider,E.model);if(M.inputModalities!==void 0&&!M.inputModalities.includes("image"))return c(e,{code:"attachment-error",message:`Model "${E.model}" does not support image input.`,details:{reason:"MODEL_DOES_NOT_SUPPORT_IMAGES"}})}const v=await it(s,r),w=vn({content:v,source:p});t==="steer"?l.steer(w):l.followup(w)}catch(v){return v instanceof de?c(e,{code:"attachment-error",message:v.message,details:{reason:v.code}}):c(e,{code:"agent-busy",message:"prompt rejected",details:{reason:String(v)}})}return b(e,{accepted:!0})},"admit");return g?me(l,I):I()},async attachment(e){const{sessionId:n,attachmentId:t}=e.payload;let r;try{r=await ve(n)}catch(a){return a instanceof X?c(e,{code:"session-not-found",message:a.message,details:{sessionId:n}}):c(e,{code:"internal",message:`attachment authorization unavailable for session "${n}": ${String(a)}`,details:{}})}const o=ct(r.events,String(t));if(o===void 0)return c(e,{code:"attachment-error",message:"Image is not referenced by this session.",details:{reason:"ATTACHMENT_NOT_REFERENCED"}});try{const a=await s.attachments.readImage(o);return b(e,{attachment:a.ref,data:Buffer.from(a.data).toString("base64")})}catch(a){return a instanceof de?c(e,{code:"attachment-error",message:a.message,details:{reason:a.code}}):c(e,{code:"internal",message:"Unable to read image attachment.",details:{}})}},updateQueue(e){const{sessionId:n,itemId:t,action:r}=e.payload;if(r.kind==="edit"&&r.content.some(l=>l.type!=="text"))return Promise.resolve(c(e,{code:"attachment-error",message:"queue edits accept text content only",details:{reason:"QUEUE_EDIT_NON_TEXT"}}));const o=s.agents.get(n);if(o!==void 0&&O(o.session,o))return Promise.resolve(c(e,te(n)));if(o===void 0)return Promise.resolve(c(e,{code:"queue-item-not-found",message:"queued item is no longer pending",details:{itemId:t}}));const a=o.inbox.nextTurn.some(l=>l.id===t)?"next-turn":o.inbox.nextStep.some(l=>l.id===t)?"next-step":void 0,d=a===void 0?void 0:(a==="next-turn"?o.inbox.nextTurn:o.inbox.nextStep).find(l=>l.id===t);return a===void 0||d===void 0?Promise.resolve(c(e,{code:"queue-item-not-found",message:"queued item is no longer pending",details:{itemId:t}})):r.kind==="steer"&&(a!=="next-turn"||o.status!=="running")?Promise.resolve(c(e,{code:"steer-unavailable",message:"current turn no longer accepts steering",details:{itemId:t}})):(r.kind==="edit"?o.inbox.replace(t,bn({...d,content:r.content})):(o.inbox.remove(t),r.kind==="steer"&&o.steer(d)),Promise.resolve(b(e,{accepted:!0})))},cancel(e){const{sessionId:n}=e.payload,t=s.agents.get(n);return t===void 0?Promise.resolve(c(e,{code:"session-not-found",message:`session "${n}" not found (not attached)`,details:{sessionId:n}})):O(t.session,t)?Promise.resolve(c(e,te(n))):(t.cancel({kind:"user"},{keepInbox:!0}),Promise.resolve(b(e,{accepted:!0})))}},subagents:{async list(e,n){try{const t=await s.subagents.listChildren(e.payload.parentSessionId,n);return b(e,{entries:t.map(r=>r.kind==="child"?{...r,activity:s.agents.get(r.id)?.status==="running"?"running":"inactive"}:r),parentAvailable:s.agents.get(e.payload.parentSessionId)!==void 0})}catch(t){return n?.aborted||t instanceof j&&t.code==="CANCELLED"?c(e,{code:"cancelled",message:"subagent catalog read was cancelled",details:{}}):t instanceof j&&t.code==="SUBAGENT_CONTROL_PROJECTIONS_UNAVAILABLE"?c(e,qe()):c(e,{code:"internal",message:"subagent catalog read failed",details:{}})}},async history(e,n){const{parentSessionId:t,childSessionId:r,mode:o,beforeSeq:a,maxMessages:d}=e.payload,l=await en(s,{parentSessionId:t,childSessionId:r,mode:o},n);if(l.error!==void 0)return c(e,l.error);let p,g,I;const v=s.sessions.get(r);if(v!==void 0)p=v.header,g=[...v.events],I=a===void 0?xe(s,r,()=>Ke(s,v)):void 0;else try{const E=await se(r);p=E.meta,g=E.events,I=a===void 0?xe(s,r,()=>Xe(s,E.events)):void 0}catch(E){return n?.aborted?c(e,{code:"cancelled",message:"subagent history read was cancelled",details:{}}):E instanceof X?c(e,{code:"subagent-not-found",message:"subagent disappeared during history read",details:{parentSessionId:t,childSessionId:r}}):c(e,{code:"internal",message:"subagent history read failed",details:{}})}if(n?.aborted)return c(e,{code:"cancelled",message:"subagent history read was cancelled",details:{}});if(p.parentSession!==t)return c(e,{code:"subagent-unauthorized",message:"subagent parent changed during history read",details:{childSessionId:r}});const w=He(s,g,a,d);return b(e,{...w,...I===void 0?{}:{projections:I}})},async prompt(e,n){const{parentSessionId:t,childSessionId:r,content:o,clientTimeZone:a}=e.payload,d=a===void 0?void 0:Le(a);if(a!==void 0&&d===void 0)return c(e,{code:"invalid-time-zone",message:"clientTimeZone must be UTC or a valid IANA Area/Location name",details:{value:a}});const l=s.agents.get(t);if(l===void 0)return c(e,{code:"subagent-parent-unavailable",message:`parent session "${t}" is not live`,details:{parentSessionId:t}});const p=await en(s,{parentSessionId:t,childSessionId:r,mode:"continuable"},n);if(p.error!==void 0)return c(e,p.error);try{const g=await s.subagents.followup(l,r,o,{source:{kind:"user",rpcId:e.rpcId,...d===void 0?{}:{clientTimeZone:d}},signal:n});return b(e,{messageId:g})}catch(g){return mt(e,g,n)}},interrupt(e){const{parentSessionId:n,childSessionId:t}=e.payload;try{s.subagents.interrupt(t,{kind:"user",parentSessionId:n})}catch(r){return r instanceof j&&r.code==="UNAUTHORIZED"?Promise.resolve(c(e,{code:"subagent-unauthorized",message:"subagent does not belong to this parent",details:{childSessionId:t}})):Promise.resolve(c(e,{code:"internal",message:"subagent interrupt failed",details:{}}))}return Promise.resolve(b(e,{accepted:!0}))}},workspace:{list(e){return Promise.resolve(b(e,{items:s.workspaceRegistry.list().map(G),archivedSessionIds:[...s.workspaceRegistry.archivedSessionIds]}))},async create(e){const{path:n}=e.payload;try{const{workspace:t,created:r}=await ln(n);return b(e,{workspace:G(t),created:r})}catch(t){return c(e,{code:"workspace-invalid-path",message:`cannot create a workspace at "${n}": ${t instanceof Error?t.message:String(t)}`,details:{path:n}})}},async rename(e){const{payload:n}=e,t=s.workspaceRegistry.get(U(n.workspaceId));if(t===void 0)return ne(e,n.workspaceId);const r=n.title.trim(),o=P.then(async()=>{if(r!==t.title){if(s.workspaceRegistry.list().some(a=>a.id!==t.id&&a.title===r))throw new tn(r);await t.setTitle(r)}});P=o.then(()=>{},()=>{});try{await o}catch(a){if(a instanceof tn)return c(e,{code:"workspace-name-conflict",message:a.message,details:{name:a.workspaceName}});throw a}return b(e,{workspace:G(t)})},async delete(e){const{workspaceId:n}=e.payload,t=P.then(()=>s.workspaceRegistry.delete(U(n)));return P=t.then(()=>{},()=>{}),await t?b(e,{deleted:!0}):ne(e,n)},async insertBefore(e){const{workspaceId:n,beforeWorkspaceId:t}=e.payload;try{const r=await s.workspaceRegistry.insertBefore(U(n),t===void 0?void 0:U(t));return b(e,{workspaceIds:[...r]})}catch(r){if(!(r instanceof Cn))throw r;return ne(e,r.workspaceId)}},async insertSessionBefore(e){const{payload:n}=e,t=s.workspaceRegistry.get(U(n.workspaceId));if(t===void 0)return ne(e,n.workspaceId);try{await t.insertSessionBefore(n.sessionId,n.beforeSessionId)}catch(r){if(!(r instanceof Nn))throw r;return c(e,{code:"workspace-move-invalid",message:r.message,details:{workspaceId:n.workspaceId,sessionId:n.sessionId,...n.beforeSessionId===void 0?{}:{beforeSessionId:n.beforeSessionId}}})}return b(e,{workspace:G(t)})},async archiveSession(e){const{sessionId:n}=e.payload;try{await s.workspaceRegistry.archiveSession(n)}catch(t){if(!(t instanceof Mn))throw t;return c(e,{code:"session-not-found",message:t.message,details:{sessionId:n}})}return b(e,{archivedSessionIds:[...s.workspaceRegistry.archivedSessionIds]})}},host:{describe(e){const n=i.defaultModelSelection();return Promise.resolve(b(e,{version:"0.0.1",cwd:i.cwd,provider:n.provider,model:n.model,attachedSessions:s.agents.list().length,canOpenPath:oe()}))},async pickDirectory(e,n){const t=s.directoryPicker.capability();if(t.kind!=="native")return c(e,{code:"directory-picker-unavailable",message:`host.pickDirectory needs the native capability; the composed picker serves "${t.kind}"`,details:{capability:t.kind}});try{const r=await t.pick(n);return b(e,{path:r})}catch(r){return n.aborted?c(e,{code:"cancelled",message:"directory picker was aborted",details:{}}):c(e,{code:"internal",message:`directory picker failed: ${r instanceof Error?r.message:String(r)}`,details:{}})}},async listDirectory(e,n){const t=s.directoryPicker.capability();if(t.kind!=="browse")return c(e,{code:"directory-picker-unavailable",message:`host.listDirectory needs the browse capability; the composed picker serves "${t.kind}"`,details:{capability:t.kind}});try{return b(e,await t.list(e.payload.path,n))}catch(r){return n.aborted?c(e,{code:"cancelled",message:"directory listing was aborted",details:{}}):c(e,We(r))}},async createDirectory(e){const n=s.directoryPicker.capability();if(n.kind!=="browse")return c(e,{code:"directory-picker-unavailable",message:`host.createDirectory needs the browse capability; the composed picker serves "${n.kind}"`,details:{capability:n.kind}});try{return b(e,{path:await n.createDirectory(e.payload.path,e.payload.name)})}catch(t){return c(e,We(t))}},async openPath(e,n){return Ae(e,e.payload.path,n)}},goals:{async create(e){const{objective:n,maxGoalRounds:t}=e.payload;return Z(e,(r,o)=>r.create(o,{objective:n,...t!==void 0?{maxGoalRounds:t}:{}}))},async edit(e){const{ref:n,objective:t,maxGoalRounds:r}=e.payload;return Z(e,(o,a)=>o.edit(a,n,{...t!==void 0?{objective:t}:{},...r!==void 0?{maxGoalRounds:r}:{}}))},async pause(e){return Z(e,(n,t)=>n.pause(t,e.payload.ref))},async resume(e){return Z(e,(n,t)=>n.resume(t,e.payload.ref))},async complete(e){return Z(e,(n,t)=>n.complete(t,e.payload.ref))},async clear(e){const n=await T(e.payload.sessionId);if("error"in n)return c(e,n.error);const t=ke(n.agent);if("error"in t)return c(e,t.error);try{return t.clear(n.agent,e.payload.ref),b(e,{cleared:!0})}catch(r){return Se(e,r)}}},agentPresets:{async list(e){const n=s.get("agentPresets");if(n===void 0)return b(e,{presets:[],authorable:!1,hasDocument:!1});const t=n.defaultId;return b(e,{presets:(await n.list()).map(r=>({id:r.id,trust:r.trust,isDefault:r.id===t,...r.name===void 0?{}:{name:r.name},...r.description===void 0?{}:{description:r.description},...r.broken===void 0?{}:{broken:r.broken}})),authorable:n.authorable,hasDocument:oe()})},async select(e){const{sessionId:n,agentPreset:t}=e.payload,r=s.get("agentPresets");if(r===void 0)return c(e,{code:"agent-preset-not-found",message:"this deployment composes no agent presets",details:{agentPreset:t,available:[]}});const o=await T(n);if("error"in o)return c(e,o.error);const{agent:a}=o,d=u(async()=>{if(!Be(a.session))return c(e,{code:"agent-preset-locked",message:`session "${n}" has already started; its agent preset is fixed`,details:{sessionId:n,agentPreset:t}});try{const g=await r.recompose(a.ctx,t);return a.session.append("agent-preset/selected",{agentPreset:g.id}),b(e,{agentPreset:g.id})}catch(g){const I=Ue(e,g);return I!==void 0?I:c(e,{code:"internal",message:`failed to select agent preset "${t}": ${String(g)}`,details:{}})}},"swap"),p=(k.get(n)??Promise.resolve()).then(d);k.set(n,p.catch(()=>{}));try{return await p}finally{k.get(n)===p&&k.delete(n)}},async read(e){const{agentPreset:n}=e.payload,t=s.get("agentPresets");if(t===void 0)return c(e,q(n));try{const r=await t.resolve(n);return b(e,{agentPreset:r.id,trust:r.trust,content:await t.read(r.id),...r.name===void 0?{}:{name:r.name},...r.description===void 0?{}:{description:r.description}})}catch(r){return c(e,ee(n,r))}},async copy(e){const{from:n,agentPreset:t,name:r}=e.payload,o=s.get("agentPresets");if(o===void 0)return c(e,q(t));try{return await o.copy(n,t,r),b(e,{agentPreset:t})}catch(a){return c(e,ee(t,a))}},async openDocument(e,n){const{agentPreset:t}=e.payload,r=s.get("agentPresets");if(r===void 0)return c(e,q(t));try{const o=await r.resolve(t);if(o.trust!=="user")throw new Ce(o.id,"it ships with the deployment");const a=yn(o.path);return oe()?await Ae(e,a,n):b(e,{opened:!1,path:a})}catch(o){return c(e,ee(t,o))}},async remove(e){const{agentPreset:n}=e.payload,t=s.get("agentPresets");if(t===void 0)return c(e,q(n));try{return await t.remove(n),b(e,{})}catch(r){return c(e,ee(n,r))}}},skills:{async list(e){const{sessionId:n}=e.payload,t=s.sessions.get(n);if(t===void 0)return c(e,{code:"session-not-found",message:`session "${n}" not found (not attached)`,details:{sessionId:n}});if(t.header.cwd===void 0)return c(e,{code:"internal",message:`session "${n}" has no project cwd`,details:{}});const r=t.header.cwd,o=s.agents.get(n),a=s.get("agentPresets"),l=(o===void 0?void 0:a?.serviceFor(o,"skills"))??s.get("skills");if(l===void 0)return c(e,{code:"internal",message:"skill registry is absent: neither this session's agent preset nor the host composition mounts @deepseek-ai/dsh-skill",details:{}});const p=await be(n,t);try{const g=(await l.list({cwd:r,scope:p})).filter(En);return b(e,{skills:g.map(I=>({name:I.name,description:I.description,...I.whenToUse===void 0?{}:{whenToUse:I.whenToUse},modelInvocable:I.invocation.modelInvocable}))})}catch(g){return c(e,{code:"internal",message:`skill listing failed: ${String(g)}`,details:{}})}}},settings:{describe(e){const n=s.get("settings");return n===void 0?Promise.resolve(c(e,re())):Promise.resolve(b(e,{writable:n.writable,hasDocument:n.documentPath!==void 0,namespaces:n.describe({redactSecrets:!0}).map($e)}))},async openDocument(e,n){const t=s.get("settings");if(t===void 0)return c(e,re());if(R(n))return c(e,{code:"cancelled",message:"settings document open was aborted",details:{}});let r;try{r=await t.prepareDocument()}catch(o){return R(n)?c(e,{code:"cancelled",message:"settings document preparation was aborted",details:{}}):c(e,{code:"internal",message:`settings document preparation failed: ${o instanceof Error?o.message:String(o)}`,details:{}})}return r===void 0?c(e,{code:"internal",message:"settings provider has no local document to open",details:{}}):R(n)?c(e,{code:"cancelled",message:"settings document open was aborted",details:{}}):fn(e,r,n)},update:u(e=>ae(e,e.payload.ns,"update",e.payload.patch,e.payload.expectedRevision),"update"),replace:u(e=>ae(e,e.payload.ns,"replace",e.payload.section,e.payload.expectedRevision),"replace"),mutate:u(e=>ae(e,e.payload.ns,"mutate",e.payload.ops,e.payload.expectedRevision),"mutate")},credentials:{async describe(e){const n=s.get("credentials");if(n===void 0)return c(e,ie());const t=await Promise.all(e.payload.refs.map(async r=>{const o=await n.describe(le(r)),a={configured:o.configured,...o.source===void 0?{}:{source:o.source},writable:o.writable};return[r,a]}));return b(e,{credentials:Object.fromEntries(t)})},async set(e){const n=s.get("credentials");if(n===void 0)return c(e,ie());const{ref:t,value:r}=e.payload;try{await n.set(le(t),r)}catch(o){return c(e,{code:"credential-rejected",message:o instanceof Error?o.message:String(o),details:{ref:t}})}return b(e,{})},async unset(e){const n=s.get("credentials");if(n===void 0)return c(e,ie());const{ref:t}=e.payload;try{await n.unset(le(t))}catch(r){return c(e,{code:"credential-rejected",message:r instanceof Error?r.message:String(r),details:{ref:t}})}return b(e,{})}},llm:{providers(e){const n=s.llm.listProviders(),t=new Set(n.map(d=>d.id)),r=s.llm.listConfigurableProviders(),o=new Set(r.map(d=>d.provider)),a=r.map(d=>({provider:d.provider,displayName:d.displayName,settingsNs:d.settingsNs,settingsPath:[...d.settingsPath],active:t.has(d.provider),...d.declared===void 0?{}:{declared:d.declared}}));for(const d of n)o.has(d.id)||a.push({provider:d.id,displayName:d.name,settingsNs:"",settingsPath:[],active:!0});return Promise.resolve(b(e,{providers:a}))},async models(e){return b(e,await je(s))},async discoverModels(e,n){const{settingsNs:t,provider:r,baseURL:o,api:a,apiKey:d}=e.payload;try{const l=await s.llm.discoverModels(t,{...r===void 0?{}:{provider:r},...o===void 0?{}:{baseURL:o},...a===void 0?{}:{api:a},...d===void 0?{}:{apiKey:d},...n===void 0?{}:{signal:n}});return b(e,{models:l})}catch(l){return c(e,{code:"model-discovery-failed",message:l instanceof Error?l.message:String(l),details:{settingsNs:t,...o===void 0?{}:{baseURL:o}}})}}},events:{mux(e,n){const t=new De;_.add(t);for(const d of s.sessions.list())Fe(t,d);for(const d of $.values())t.push({rpcId:d.rpcId,payload:{type:"question/requested",sessionId:d.sessionId,questions:d.questions}});for(const d of C.values())t.push(Ve(d));for(const d of s.sessions.list()){const l=s.agents.get(d.id);l?.session===d&&l.inbox.hasPending&&t.push(A({type:"session/queue",sessionId:d.id,items:we(l)}))}const r=s.get("jobs");if(r!==void 0)for(const d of s.sessions.list()){const l=x(r.list(s.agents.get(d.id)));l.length>0&&t.push(A({type:"session/jobs",sessionId:d.id,jobs:l}))}const o=new Map,a=[s.on("session/event",(d,l)=>{if(l.type==="tool/call"){const g=l.data;try{let I=o.get(d.id);I===void 0&&o.set(d.id,I=new Map),I.set(g.callId,{name:g.name,args:JSON.parse(g.arguments)})}catch{}}else l.type==="turn/end"&&o.delete(d.id);const p=Ge(s,l,g=>o.get(d.id)?.get(g)??Je(d.events,g),s.agents.get(d.id));t.push(A({type:"session/event",sessionId:d.id,event:l,...p===void 0?{}:{view:p}}))}),s.on("session/created",d=>{Fe(t,d);const l=r===void 0?[]:x(r.list(s.agents.get(d.id)));l.length>0&&t.push(A({type:"session/jobs",sessionId:d.id,jobs:l}))}),s.on("session/disposed",d=>{o.delete(d.id)}),...r===void 0?[]:[r.onJobsChanged(d=>{if(d!==void 0){t.push(A({type:"session/jobs",sessionId:d.id,jobs:x(r.list(d))}));return}for(const l of s.sessions.list())t.push(A({type:"session/jobs",sessionId:l.id,jobs:x(r.list(s.agents.get(l.id)))}))})]];return t.iterate(n,()=>{_.delete(t);for(const d of a)d()})},host(e,n){const t=new De,r=s.workspaceRegistry.list(),o=new Set(r.map(p=>String(p.id)));let a=r.map(p=>p.id),d=s.workspaceRegistry.archivedSessionIds;const l=[s.on("session/created",p=>{t.push(A({type:"host/session-added",sessionId:p.id,blank:Be(p),...fe(p.header,p.events)}))}),s.on("session/disposed",p=>{t.push(A({type:"host/session-removed",sessionId:p.id}))}),s.on("agent/status",({agent:p,status:g})=>{t.push(A({type:"host/session-status",sessionId:p.id,running:g==="running"}))}),s.on("agent/error",({agent:p,error:g})=>{t.push(A({type:"host/agent-error",sessionId:p.id,message:kn(g)}))}),s.on("domain/changed",p=>{if(p.domain==="workspace"){if(p.table===""){if(p.operation!=="put")return;const g=An.parse(p.value),I=g.workspaceIds.length===a.length&&g.workspaceIds.every(v=>o.has(String(v)))&&g.workspaceIds.some((v,w)=>v!==a[w]);for(const v of g.workspaceIds){if(o.has(v))continue;const w=s.workspaceRegistry.get(v);if(w===void 0)throw new Error(`committed workspace registry references missing workspace "${v}"`);o.add(v),t.push(A({type:"host/workspace-changed",workspace:G(w)}))}a=[...g.workspaceIds],I&&t.push(A({type:"host/workspace-order-changed",workspaceIds:[...g.workspaceIds]})),(g.archivedSessionIds.length!==d.length||g.archivedSessionIds.some((v,w)=>v!==d[w]))&&(d=g.archivedSessionIds,t.push(A({type:"host/archived-sessions-changed",archivedSessionIds:[...g.archivedSessionIds]})));return}if(p.table==="workspaces"){if(p.operation==="deleted"){if(!o.delete(p.key))return;t.push(A({type:"host/workspace-removed",workspaceId:p.key}));return}o.has(p.key)&&t.push(A({type:"host/workspace-changed",workspace:ht(p.key,p.value)}))}}}),...Yn.map(p=>s.on(p,((...g)=>{t.push(A({type:"host/remote-event",event:p,args:assertJsonArgs(p,g)}))})))];return t.iterate(n,()=>{for(const p of l)p()})}},downloads:{async sessionLog(e,n){const t=jn(s);if(t.sessionQuery===void 0||t.sessionPersistence===void 0||t.attachments===void 0)return new Response("session log export is unavailable: missing session-query, session-persistence, or attachments service",{status:500});if(!t.sessionPersistence.supportsRawArtifacts)return new Response("session log export is unavailable: the persistence backend does not expose per-session raw artifacts",{status:501});const r={sessionQuery:t.sessionQuery,sessionPersistence:t.sessionPersistence,attachments:t.attachments,sessions:t.sessions};let o;try{await Ln(t,e.sessionId,n),o=await t.sessionPersistence.readRaw(e.sessionId,n),n.throwIfAborted()}catch{return n.throwIfAborted(),new Response("session log export failed to prepare the stored artifact",{status:500})}return o===void 0?new Response("session not found",{status:404}):new Response(Dn(r,o,e.sessionId,e.includeDescendants===!0,f,n),{headers:{"content-type":"application/zip","content-disposition":`attachment; filename="${Un(e.sessionId)}"`}})}},respond(e){const n=C.get(e.rpcId);if(n!==void 0){if(!e.result.ok)return Promise.resolve({accepted:!1,reason:"bad-response"});const a=Vn.safeParse(e.result.value);return!a.success||a.data.approvalId!==n.approvalId||a.data.sessionId!==n.sessionId?Promise.resolve({accepted:!1,reason:"bad-response"}):(n.resolve(a.data.outcome),Promise.resolve({accepted:!0}))}const t=$.get(e.rpcId);if(t===void 0)return Promise.resolve({accepted:!1,reason:"not-pending"});if(!e.result.ok)return e.result.error.code!=="cancelled"?Promise.resolve({accepted:!1,reason:"bad-response"}):(K(t,"cancelled"),t.reject(new Y("the user cancelled ask_user_question","ASK_CANCELLED")),Promise.resolve({accepted:!0}));const r=Hn.safeParse(e.result.value);if(!r.success)return Promise.resolve({accepted:!1,reason:"bad-response"});const o={sessionId:r.data.sessionId,answer:{answers:r.data.answer.answers.map(a=>({id:a.id,selected:a.selected,...a.custom===void 0?{}:{custom:a.custom}}))}};return gt(o,t)?(K(t,"answered"),t.resolve(o.answer),Promise.resolve({accepted:!0})):Promise.resolve({accepted:!1,reason:"bad-response"})}}}u(createApiProxy,"createApiProxy");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"@deepseek-ai/dsh-host-apiproxy","version":"0.0
|
|
1
|
+
{"name":"@deepseek-ai/dsh-host-apiproxy","version":"0.1.0","publishConfig":{"access":"public"},"type":"module","main":"lib/index.js","exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./invariant":{"types":"./lib/types/invariant.d.ts","default":"./lib/invariant.js"},"./src/*":"./src/*","./package.json":"./package.json","./api":{"types":"./lib/types/api/index.d.ts","default":"./lib/types/api/index.js"},"./api/*":{"types":"./lib/types/api/*.d.ts","default":"./lib/types/api/*.js"},"./client":{"types":"./lib/types/fetch/client.d.ts","default":"./lib/types/fetch/client.js"}},"license":"MIT","dependencies":{"fflate":"^0.8.2","zod":"^4.4.3","@deepseek-ai/dsh-agent":"^0.1.0","@deepseek-ai/dsh-api-remotes":"^0.1.0","@deepseek-ai/dsh-brand":"^0.1.0","@deepseek-ai/dsh-credentials":"^0.1.0","@deepseek-ai/dsh-commands":"^0.1.0","@deepseek-ai/dsh-goal":"^0.1.0","@deepseek-ai/dsh-host-directory-picker":"^0.1.0","@deepseek-ai/dsh-llm":"^0.1.0","@deepseek-ai/dsh-native-command":"^0.1.0","@deepseek-ai/dsh-session-persistence":"^0.1.0","@deepseek-ai/dsh-session-projection":"^0.1.0","@deepseek-ai/dsh-session-projection-cache":"^0.1.0","@deepseek-ai/dsh-attachment":"^0.1.0","@deepseek-ai/dsh-agent-default-model":"^0.1.0","@deepseek-ai/dsh-session":"^0.1.0","@deepseek-ai/dsh-session-query":"^0.1.0","@deepseek-ai/dsh-subagent":"^0.1.0","@deepseek-ai/dsh-jobs":"^0.1.0","@deepseek-ai/dsh-tools":"^0.1.0","@deepseek-ai/dsh-user-approval":"^0.1.0","@deepseek-ai/dsh-user-questions":"^0.1.0","@deepseek-ai/dsh-workspace":"^0.1.0","@deepseek-ai/schemastery":"^3.18.1","@deepseek-ai/dsh-session-title":"^0.1.0","@deepseek-ai/dsh-settings":"^0.1.0","@deepseek-ai/dsh-skill":"^0.1.0"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-agent-presets":"^0.1.0","@deepseek-ai/dsh-cordis-host-runner":"^0.1.0","@deepseek-ai/dsh-invariants":"^0.1.0"}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"@deepseek-ai/dsh-host-directory-picker","version":"0.0
|
|
1
|
+
{"name":"@deepseek-ai/dsh-host-directory-picker","version":"0.1.0","publishConfig":{"access":"public"},"type":"module","main":"lib/index.js","exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./invariant":{"types":"./lib/types/invariant.d.ts","default":"./lib/invariant.js"},"./src/*":"./src/*","./package.json":"./package.json"},"license":"MIT","peerDependencies":{"@deepseek-ai/dsh-invariants":"^0.1.0","@deepseek-ai/cordis":"^4.0.1"}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"@deepseek-ai/dsh-host-directory-picker-auto","version":"0.0
|
|
1
|
+
{"name":"@deepseek-ai/dsh-host-directory-picker-auto","version":"0.1.0","publishConfig":{"access":"public"},"type":"module","main":"lib/index.js","exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./invariant":{"types":"./lib/types/invariant.d.ts","default":"./lib/invariant.js"},"./src/*":"./src/*","./package.json":"./package.json"},"license":"MIT","peerDependencies":{"@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-client-ui-directory-picker-browse":"^0.1.0","@deepseek-ai/cordis-plugin-loader":"^1.0.2","@deepseek-ai/dsh-host-directory-picker-browse":"^0.1.0","@deepseek-ai/dsh-host-directory-picker-native":"^0.1.0","@deepseek-ai/dsh-client-ui-directory-picker-native":"^0.1.0","@deepseek-ai/dsh-host-webserver":"^0.1.0","@deepseek-ai/dsh-invariants":"^0.1.0"}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"@deepseek-ai/dsh-host-directory-picker-browse","version":"0.0
|
|
1
|
+
{"name":"@deepseek-ai/dsh-host-directory-picker-browse","version":"0.1.0","publishConfig":{"access":"public"},"type":"module","main":"lib/index.js","exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./invariant":{"types":"./lib/types/invariant.d.ts","default":"./lib/invariant.js"},"./src/*":"./src/*","./package.json":"./package.json"},"license":"MIT","dependencies":{"@deepseek-ai/schemastery":"^3.18.1","@deepseek-ai/dsh-host-directory-picker":"^0.1.0"},"peerDependencies":{"@deepseek-ai/dsh-invariants":"^0.1.0","@deepseek-ai/cordis":"^4.0.1"}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"@deepseek-ai/dsh-host-directory-picker-native","version":"0.0
|
|
1
|
+
{"name":"@deepseek-ai/dsh-host-directory-picker-native","version":"0.1.0","publishConfig":{"access":"public"},"type":"module","main":"lib/index.js","exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./invariant":{"types":"./lib/types/invariant.d.ts","default":"./lib/invariant.js"},"./worker":{"types":"./lib/types/win32-dialog-worker.d.ts","default":"./lib/worker.cjs"},"./src/*":"./src/*","./package.json":"./package.json"},"license":"MIT","dependencies":{"koffi":"^3.1.0","@deepseek-ai/dsh-host-directory-picker":"^0.1.0","@deepseek-ai/dsh-native-command":"^0.1.0"},"peerDependencies":{"@deepseek-ai/dsh-invariants":"^0.1.0","@deepseek-ai/cordis":"^4.0.1"}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"@deepseek-ai/dsh-host-frontend-static","version":"0.0
|
|
1
|
+
{"name":"@deepseek-ai/dsh-host-frontend-static","version":"0.1.0","publishConfig":{"access":"public"},"type":"module","main":"lib/index.js","exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./invariant":{"types":"./lib/types/invariant.d.ts","default":"./lib/invariant.js"},"./src/*":"./src/*","./package.json":"./package.json"},"license":"MIT","peerDependencies":{"@deepseek-ai/dsh-host-webserver":"^0.1.0","@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-invariants":"^0.1.0"},"dependencies":{"@deepseek-ai/schemastery":"^3.18.1"}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"@deepseek-ai/dsh-host-plugin-inventory","version":"0.0
|
|
1
|
+
{"name":"@deepseek-ai/dsh-host-plugin-inventory","version":"0.1.0","publishConfig":{"access":"public"},"type":"module","main":"lib/index.js","exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./invariant":{"types":"./lib/types/invariant.d.ts","default":"./lib/invariant.js"},"./types":{"types":"./lib/types/types.d.ts","default":"./lib/types/types.js"},"./typert":{"types":"./lib/typert.host.d.ts","default":"./lib/typert.host.js"},"./remote":{"types":"./lib/typert.remote-client.d.ts","default":"./lib/typert.remote-client.js"},"./src/*":"./src/*","./package.json":"./package.json"},"license":"MIT","dependencies":{"zod":"^4.4.3"},"peerDependencies":{"@deepseek-ai/cordis-plugin-loader":"^1.0.2","@deepseek-ai/dsh-brand":"^0.1.0","@deepseek-ai/dsh-typert-protocol":"^0.1.0","@deepseek-ai/dsh-invariants":"^0.1.0","@deepseek-ai/cordis":"^4.0.1"}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"@deepseek-ai/dsh-host-webserver","version":"0.0
|
|
1
|
+
{"name":"@deepseek-ai/dsh-host-webserver","version":"0.1.0","publishConfig":{"access":"public"},"type":"module","main":"lib/index.js","exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./invariant":{"types":"./lib/types/invariant.d.ts","default":"./lib/invariant.js"},"./src/*":"./src/*","./package.json":"./package.json"},"license":"MIT","peerDependencies":{"@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-invariants":"^0.1.0"},"dependencies":{"@deepseek-ai/schemastery":"^3.18.1"}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"@deepseek-ai/dsh-invariants","version":"0.0
|
|
1
|
+
{"name":"@deepseek-ai/dsh-invariants","version":"0.1.0","publishConfig":{"access":"public"},"type":"module","main":"lib/index.js","exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./invariant":{"types":"./lib/types/invariant.d.ts","default":"./lib/invariant.js"},"./src/*":"./src/*","./package.json":"./package.json"},"license":"MIT","peerDependencies":{"@deepseek-ai/cordis":"^4.0.1"},"dependencies":{"@deepseek-ai/schemastery":"^3.18.1"}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"@deepseek-ai/dsh-jobs","version":"0.0
|
|
1
|
+
{"name":"@deepseek-ai/dsh-jobs","version":"0.1.0","publishConfig":{"access":"public"},"type":"module","main":"lib/index.js","exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./invariant":{"types":"./lib/types/invariant.d.ts","default":"./lib/invariant.js"},"./brand":{"types":"./lib/types/brand.d.ts","default":"./lib/types/brand.js"},"./src/*":"./src/*","./package.json":"./package.json"},"license":"MIT","peerDependencies":{"@deepseek-ai/dsh-agent":"^0.1.0","@deepseek-ai/dsh-brand":"^0.1.0","@deepseek-ai/dsh-invariants":"^0.1.0","@deepseek-ai/dsh-session":"^0.1.0","@deepseek-ai/cordis":"^4.0.1"}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"@deepseek-ai/dsh-jobs-local","version":"0.0
|
|
1
|
+
{"name":"@deepseek-ai/dsh-jobs-local","version":"0.1.0","publishConfig":{"access":"public"},"type":"module","main":"lib/index.js","exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./invariant":{"types":"./lib/types/invariant.d.ts","default":"./lib/invariant.js"},"./src/*":"./src/*","./package.json":"./package.json"},"license":"MIT","peerDependencies":{"@deepseek-ai/dsh-agent":"^0.1.0","@deepseek-ai/dsh-invariants":"^0.1.0","@deepseek-ai/dsh-scope":"^0.1.0","@deepseek-ai/dsh-jobs":"^0.1.0","@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-timeout":"^0.1.0"},"dependencies":{"@deepseek-ai/schemastery":"^3.18.1"}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"@deepseek-ai/dsh-launch-environment","version":"0.0
|
|
1
|
+
{"name":"@deepseek-ai/dsh-launch-environment","version":"0.1.0","publishConfig":{"access":"public"},"type":"module","main":"lib/index.js","exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./invariant":{"types":"./lib/types/invariant.d.ts","default":"./lib/invariant.js"},"./src/*":"./src/*","./package.json":"./package.json"},"license":"MIT","peerDependencies":{"@deepseek-ai/dsh-invariants":"^0.1.0","@deepseek-ai/cordis":"^4.0.1"}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
var q=Object.defineProperty;var a=(e,t)=>q(e,"name",{value:t,configurable:!0});import{createRequire as Y}from"node:module";import{Service as z}from"@deepseek-ai/cordis";import p from"@deepseek-ai/schemastery";import{MAX_TIMER_DELAY_MS as g}from"@deepseek-ai/dsh-timeout";function W(e){return e}a(W,"MessageId");function X(e){return e}a(X,"CallId");function G(e){return e}a(G,"ProviderRequestId");function K(e){return e}a(K,"ReasoningEffortId");const x=new WeakSet;function y(e,t){return e.provider!==t.provider||e.model!==t.model||e.reasoningEffort!==t.reasoningEffort||e.temperature!==t.temperature||e.maxTokens!==t.maxTokens?!1:e.stop===void 0||t.stop===void 0?e.stop===t.stop:e.stop.length===t.stop.length&&e.stop.every((r,o)=>r===t.stop?.[o])}a(y,"callConfigEquals");function B(e){return x.add(e),e}a(B,"markAgentLoopRequest");function H(e){return x.has(e)}a(H,"isAgentLoopRequest");function h(e){const t=new WeakSet,r=[{kind:"visit",node:e}];for(;r.length>0;){const o=r.pop();if(o===void 0)continue;if(o.kind==="property"){r.push({kind:"visit",node:o.source[o.key]});continue}const s=o.node;if(s===null||typeof s!="object"||s instanceof AbortSignal||t.has(s))continue;t.add(s),Object.freeze(s);const n=Object.keys(s);for(let i=n.length-1;i>=0;i--){const d=n[i];d!==void 0&&r.push({kind:"property",source:s,key:d})}}return e}a(h,"deepFreeze");const Q=120;function J(e){return e.length<=120?e:`${e.slice(0,119)}…`}a(J,"boundContextSummary");function E(e){return h(structuredClone(e))}a(E,"freezeMessage");function w(e){return E({...e,id:crypto.randomUUID()})}a(w,"createMessage");function D(e){return w({...e,role:"user"})}a(D,"createUserMessage");function Z(e){return w({role:"assistant",content:e.content,source:{kind:"model",...e.source}})}a(Z,"createAssistantMessage");function ee(e){return D({source:{kind:"tool",callId:e.callId},content:[{type:"tool-result",toolCallId:e.callId,content:e.content,isError:e.isError}]})}a(ee,"createToolResultMessage");function te(e){switch(e.type){case"text-delta":case"reasoning-delta":return e.text!=="";case"tool-call-delta":return e.argumentsDelta!==""||e.name!==void 0;default:return!1}}a(te,"isTokenDelta");var v=class extends Error{static{a(this,"HarnessError")}code;constructor(e,t,r){super(e,r),this.code=t,this.name=new.target.name}};const re="CONTEXT_WINDOW_EXCEEDED",oe="QUOTA",T="EMPTY_RESPONSE",O="INVALID_CREDENTIAL",se=new RegExp(String.raw`(?:^|[^a-z0-9])context[\s_-](?:length|window)[\s_-]`+String.raw`(?:exceed(?:ed|s)?|overflow(?:ed)?|limit[\s_-]exceeded)(?:$|[^a-z0-9])`,"i"),ne=new RegExp(String.raw`\b(?:request|prompt|input|messages?)\s+(?:is\s+|are\s+)?`+String.raw`too\s+(?:large|long)\s+for\s+(?:(?:this|the)\s+)?`+String.raw`(?:model(?:'s)?\s+)?context(?:\s+window)?\b`,"i"),ie=new RegExp(String.raw`\b(?:input|prompt|request|messages?)\b.{0,40}`+String.raw`\b(?:exceed(?:s|ed)?|overflows?|is\s+larger\s+than)\b.{0,40}`+String.raw`\b(?:the\s+)?(?:model(?:'s)?\s+)?context(?:\s+(?:length|window))?\b`,"i");function ae(e){return se.test(e)||/\b(?:maximum|max)(?:\s+(?:allowed|supported))?\s+context\s+(?:length|window)\b/i.test(e)||ne.test(e)||/\b(?:input|prompt|request)\s+(?:is\s+)?too\s+(?:long|large)\s+for\s+(?:this|the)\s+model\b/i.test(e)||ie.test(e)}a(ae,"isContextWindowExceededError");function de(e){return/\binsufficient[\s_-]+(?:quota|balance|credits?)\b/i.test(e)||/\b(?:quota|usage[\s_-]+limit)[\s_-]+(?:exceeded|exhausted|reached)\b/i.test(e)||/\bexceed(?:ed|s)?[\s_-]+(?:(?:your|the)[\s_-]+)?(?:current[\s_-]+)?quota\b/i.test(e)||/\b(?:balance|credits?)[\s_-]+(?:exhausted|depleted)\b/i.test(e)||/\bout[\s_-]+of[\s_-]+(?:credits?|budget)\b/i.test(e)}a(de,"isQuotaExceededError");function le(e){const t=new Set,r=a(o=>{if(t.has(o))return"<circular cause>";t.add(o);try{if(!(o instanceof Error)){if(typeof o=="object"&&o!==null){const d=Object.getOwnPropertyDescriptor(o,"message");if(d!==void 0&&"value"in d&&typeof d.value=="string")return d.value}return String(o)}const s=o.message===""?o.name:o.message,n=o instanceof AggregateError&&o.errors.length>0?` [${o.errors.map(r).join("; ")}]`:"",i=o.cause===void 0||o.cause===null?"":r(o.cause);return`${s}${n}${i===""||i===s?"":`: ${i}`}`}catch{return"<unrenderable value>"}finally{t.delete(o)}},"render");return r(e)}a(le,"errorChain");function ce(e){return e instanceof v}a(ce,"isHarnessError");const b=2,M=500,L=1e4,S=.1,A=Object.freeze([T,"RATE_LIMIT","SERVER","TIMEOUT","TRANSPORT"]),C=p.object({initialDelayMs:p.number().max(g).default(M),maxDelayMs:p.number().max(g).default(L),jitterRatio:p.number().min(0).max(1).default(S)}),ue=p.object({mode:p.const("normal").required(),maxRetries:p.number().step(1).min(0).max(Number.MAX_SAFE_INTEGER).default(b),retryableCodes:p.array(p.string()).default([...A]),backoff:C}),fe=p.object({mode:p.const("always").required(),backoff:C}),pe=p.union([ue,fe]),me=new Set(["mode","maxRetries","retryableCodes","backoff"]),he=new Set(["mode","backoff"]),ge=new Set(["initialDelayMs","maxDelayMs","jitterRatio"]);function I(e,t,r){for(const o of Object.keys(e))if(!t.has(o))throw new Error(`${r}: unknown key "${o}"`)}a(I,"validateKeys");function _(e,t){e!==void 0&&I(e,ge,t);const r=e?.initialDelayMs??M,o=e?.maxDelayMs??L,s=e?.jitterRatio??S;if(!Number.isFinite(r)||r<=0||r>g)throw new Error(`${t}.initialDelayMs must be a positive finite number no greater than ${g}`);if(!Number.isFinite(o)||o<=0||o>g)throw new Error(`${t}.maxDelayMs must be a positive finite number no greater than ${g}`);if(r>o)throw new Error(`${t}.initialDelayMs must be less than or equal to maxDelayMs`);if(!Number.isFinite(s)||s<0||s>1)throw new Error(`${t}.jitterRatio must be between 0 and 1`);return Object.freeze({initialDelayMs:r,maxDelayMs:o,jitterRatio:s})}a(_,"resolveBackoff");function N(e,t){if(e===void 0)return Object.freeze({mode:"normal",maxRetries:b,retryableCodes:A,..._(void 0,`${t}.backoff`)});switch(e.mode){case"normal":{I(e,me,t);const r=e.maxRetries??b,o=e.retryableCodes??[...A];if(!Number.isSafeInteger(r)||r<0)throw new Error(`${t}.maxRetries must be a non-negative safe integer`);if(o.length===0)throw new Error(`${t}.retryableCodes must not be empty`);if(o.some(s=>typeof s!="string"||s.length===0))throw new Error(`${t}.retryableCodes must contain only non-empty strings`);if(new Set(o).size!==o.length)throw new Error(`${t}.retryableCodes must not contain duplicates`);return Object.freeze({mode:"normal",maxRetries:r,retryableCodes:Object.freeze([...o]),..._(e.backoff,`${t}.backoff`)})}case"always":return I(e,he,t),Object.freeze({mode:"always",..._(e.backoff,`${t}.backoff`)});default:throw new Error(`${t}.mode must be "normal" or "always"`)}}a(N,"resolveRetryPolicy");function ve(e){const t=e instanceof Error?e:new v(ye(e),"UNKNOWN",{cause:e}),r=Ee(t);return r!==void 0&&r.code===we(t)?r:Object.freeze({message:Ae(t),code:Ie(t)})}a(ve,"normalizeLlmFailure");function ye(e){try{const t=String(e);return t.length>0?t:"LLM adapter failed"}catch{return"LLM adapter failed"}}a(ye,"thrownMessage");function we(e){try{const t=Object.getOwnPropertyDescriptor(e,"code");return t!==void 0&&"value"in t?t.value:void 0}catch{return}}a(we,"ownErrorCode");function Ee(e){try{const t=Object.getOwnPropertyDescriptor(e,"failure");return t!==void 0&&"value"in t?be(t.value):void 0}catch{return}}a(Ee,"ownFailureSnapshot");function be(e){if(!(typeof e!="object"||e===null))try{const t=e,r=t.message,o=t.code,s=t.status,n=t.providerRetryAfterMs,i=t.requestId;return typeof r!="string"||r.length===0||typeof o!="string"||o.length===0||s!==void 0&&(!Number.isInteger(s)||s<100||s>599)||n!==void 0&&(!Number.isFinite(n)||n<=0)||i!==void 0&&(typeof i!="string"||i.length===0)?void 0:Object.freeze({message:r,code:o,...s===void 0?{}:{status:s},...n===void 0?{}:{providerRetryAfterMs:n},...i===void 0?{}:{requestId:i}})}catch{return}}a(be,"failureSnapshot");function Ae(e){try{const t=e.message;if(typeof t=="string"&&t.length>0)return t}catch{}return"LLM adapter failed"}a(Ae,"errorMessage");function Ie(e){return e instanceof v?e.code:"UNKNOWN"}a(Ie,"harnessErrorCode");const _e=/^[\x21-\x7E]+$/;function k(e){const t=e.trim();return t.length===0?{ok:!1,reason:"empty"}:_e.test(t)?{ok:!0,value:t}:{ok:!1,reason:"illegalCharacters"}}a(k,"normalizeApiKey");const{version:Re}=Y(import.meta.url)("../package.json"),R={product:"deepseek-harness",version:Re,url:"https://www.npmjs.com/package/@qqbrowser/qbot-dsh"};function $(e=R){return`${e.product}/${e.version} (+${e.url})`}a($,"userAgent");function xe(e=R){return{"user-agent":$(e)}}a(xe,"attributionHeaders");function P(e,t){const r=JSON.stringify(e)??String(e);throw new Error(`unreachable variant${t?` in ${t}`:""}: ${r}`)}a(P,"assertNever");function F(e){return e.some(t=>t.type==="image"||t.type==="tool-result"&&F(t.content))}a(F,"contentHasImage");var De=class{static{a(this,"BlockAssembler")}partials=new Map;order=[];_usage;_finish;_replayState=void 0;push(e){switch(e.type){case"block-start":this.partials.has(e.index)||(this.order.push(e.index),this.partials.set(e.index,{blockType:e.blockType,text:"",toolCallArguments:""}));return;case"text-delta":case"reasoning-delta":{const t=this.ensure(e.index,e.type==="text-delta"?"text":"reasoning");if(t.block)return;t.text+=e.text;return}case"tool-call-delta":{const t=this.ensure(e.index,"tool-call");if(t.block)return;t.toolCallId=e.id,e.name&&(t.toolCallName=e.name),t.toolCallArguments+=e.argumentsDelta;return}case"block-end":{const t=this.ensure(e.index,e.block.type);if(t.block)return;t.block=e.block;return}case"usage":this._usage=e.usage;return;case"finish":this._finish=e.reason,this._replayState=e.replayState;return;default:return P(e,"BlockAssembler.push")}}ensure(e,t){let r=this.partials.get(e);return r||(r={blockType:t,text:"",toolCallArguments:""},this.partials.set(e,r),this.order.push(e)),r}assemble(e,t){if(e.block)return e.block;switch(e.blockType){case"text":return{type:"text",text:e.text};case"reasoning":return{type:"reasoning",text:e.text};case"tool-call":return{type:"tool-call",id:e.toolCallId??`call-${t}`,name:e.toolCallName??"",arguments:e.toolCallArguments};default:throw new Error(`cannot assemble incomplete block of type "${e.blockType}"`)}}mustGet(e){const t=this.partials.get(e);if(!t)throw new Error(`BlockAssembler invariant violated: no partial for index ${e}`);return t}blocks(){const e=this.order.map(t=>this.assemble(this.mustGet(t),t));return this.finish.kind==="max-tokens"?e.filter(t=>t.type!=="tool-call"):e}get usage(){return this._usage}get finish(){return this._finish??{kind:"stop"}}get replayState(){return this._replayState}message(e={kind:"plugin",plugin:"dsh-llm/assembler"}){return w({role:"assistant",content:this.blocks(),source:e})}},l=class extends v{static{a(this,"LlmError")}failure;constructor(e,t,r){if(typeof e!="string"||e.length===0)throw new Error("LlmError message must be a non-empty string");if(typeof t!="string"||t.length===0)throw new Error("LlmError code must be a non-empty string");if(r?.status!==void 0&&(!Number.isInteger(r.status)||r.status<100||r.status>599))throw new Error("LlmError status must be an integer from 100 through 599");if(r?.providerRetryAfterMs!==void 0&&(!Number.isFinite(r.providerRetryAfterMs)||r.providerRetryAfterMs<=0))throw new Error("LlmError providerRetryAfterMs must be a positive finite number");if(r?.requestId!==void 0&&(typeof r.requestId!="string"||r.requestId.length===0))throw new Error("LlmError requestId must be a non-empty string");super(e,t,r),this.name="LlmError",this.failure=Object.freeze({message:e,code:t,...r?.status===void 0?{}:{status:r.status},...r?.providerRetryAfterMs===void 0?{}:{providerRetryAfterMs:r.providerRetryAfterMs},...r?.requestId===void 0?{}:{requestId:r.requestId}})}};function Te(e,t,r){const o=k(e);if(o.ok)return o.value;throw new l(o.reason==="empty"?`${t}: the API key resolved from ${r} is blank; set ${r} to the raw key (the web Models page writes it) or export it in the launching environment`:`${t}: the API key resolved from ${r} contains characters no HTTP header can carry; set ${r} to the raw key alone (the web Models page writes it)`,O)}a(Te,"assertUsableApiKey");var Oe=class{static{a(this,"LlmAdapter")}providerInfo(e){return{id:e,name:e}}providerRetryPolicy(e){}listModels(e){return Promise.resolve([])}resolveModel(e,t,r){return Promise.resolve({provider:e,id:t,name:t})}},j=class extends z{static{a(this,"LlmRuntime")}adapters=new Map;directory=new Map;discoveries=new Map;constructor(e){super(e,"llm")}emitAdaptersUpdated(){let e;for(const t of this.ctx.events.dispatch("emit",["llm/adapters-updated"]))try{const r=t();r!=null&&typeof r.then=="function"&&Promise.resolve(r).then(void 0,o=>{this.warnAdaptersListenerFailure(o)})}catch(r){if(r?.code==="INVARIANT"){e??=r;continue}this.warnAdaptersListenerFailure(r)}if(e!==void 0)throw e}warnAdaptersListenerFailure(e){this.ctx.logger.warn("llm: an llm/adapters-updated listener failed"),this.ctx.logger.warn(e)}registerAdapter(e,t){const r=new Set;let o=!1;const s=this.ctx.effect(function*(){if(e.length===0)throw new l("an adapter must register at least one provider","INVALID_ADAPTER");this.commitRoutes(r,this.prepareRoutes(e,t,r)),yield()=>{o=!0;for(const i of r)this.adapters.delete(i);r.clear(),this.emitAdaptersUpdated()}}.bind(this),"llm.registerAdapter()"),n=a((()=>{s()}),"handle");return n.replace=i=>{if(o)throw new l("a disposed adapter registration cannot replace its routes","REGISTRATION_DISPOSED");this.commitRoutes(r,this.prepareRoutes(i,t,r))},n}prepareRoutes(e,t,r){const o=new Set,s=[];for(const n of e){if(n.length===0)throw new l("adapter provider names must be non-empty","INVALID_ADAPTER");if(o.has(n)||this.adapters.has(n)&&!r.has(n))throw new l(`an adapter for provider "${n}" is already registered`,"DUPLICATE_ADAPTER");const i=t.providerInfo(n);if(typeof i.id!="string"||i.id!==n||typeof i.name!="string"||i.name.length===0)throw new l(`adapter metadata for provider "${n}" must preserve its id and have a non-empty name`,"INVALID_ADAPTER");o.add(n);const d=t.providerRetryPolicy(n)??N(void 0,`llm: provider "${n}" retryPolicy`);s.push({adapter:t,provider:{id:i.id,name:i.name},retryPolicy:d})}return s}commitRoutes(e,t){for(const r of e)this.adapters.delete(r);e.clear();for(const r of t)this.adapters.set(r.provider.id,r),e.add(r.provider.id);this.emitAdaptersUpdated()}listProviders(){return[...this.adapters.values()].map(({provider:e})=>({...e}))}registerConfigurableProviders(e){let t=[],r=!1;const o=a(i=>{const d=[],u=new Set(t.map(c=>c.provider));for(const c of i){if(c.provider.length===0||c.displayName.length===0||c.settingsNs.length===0)throw new l("configurable providers need a non-empty provider, displayName, and settingsNs","INVALID_DIRECTORY");if(c.settingsPath.some(m=>m.length===0))throw new l(`configurable provider "${c.provider}" has an empty settingsPath segment`,"INVALID_DIRECTORY");if(this.directory.has(c.provider)&&!u.has(c.provider)||d.some(m=>m.provider===c.provider))throw new l(`configurable provider "${c.provider}" is already declared`,"DUPLICATE_DIRECTORY");d.push({...c,settingsPath:[...c.settingsPath]})}for(const c of t)this.directory.delete(c.provider);for(const c of d)this.directory.set(c.provider,c);t=d,this.emitAdaptersUpdated()},"commit"),s=this.ctx.effect(function*(){if(e.length===0)throw new l("a configurable-provider registration must declare at least one provider","INVALID_DIRECTORY");o(e),yield()=>{r=!0;for(const i of t)this.directory.delete(i.provider);t=[],this.emitAdaptersUpdated()}}.bind(this),"llm.registerConfigurableProviders()"),n=a((()=>{s()}),"handle");return n.replace=i=>{if(r)throw new l("this configurable-provider registration was disposed","REGISTRATION_DISPOSED");o(i)},n}listConfigurableProviders(){return[...this.directory.values()].map(e=>({...e,settingsPath:[...e.settingsPath]}))}registerModelDiscovery(e,t){const r=this.ctx.effect(function*(){if(e.length===0)throw new l("model discovery needs a non-empty settings namespace","INVALID_DISCOVERY");if(this.discoveries.has(e))throw new l(`model discovery for "${e}" is already registered`,"DUPLICATE_DISCOVERY");this.discoveries.set(e,t),yield()=>{this.discoveries.delete(e)}}.bind(this),"llm.registerModelDiscovery()");return()=>{r()}}async discoverModels(e,t){const r=this.discoveries.get(e);if(r===void 0)throw new l(`no model discovery is registered for "${e}"`,"NO_DISCOVERY");if((t.provider??"").length===0&&(t.baseURL??"").length===0)throw new l("model discovery needs a provider route or a baseURL","INVALID_DISCOVERY");const o=await r(t),s=new Set,n=[];for(const i of o)typeof i.id!="string"||i.id.length===0||s.has(i.id)||(s.add(i.id),n.push({id:i.id,...i.name===void 0?{}:{name:i.name},...i.contextWindow===void 0?{}:{contextWindow:i.contextWindow},...i.maxTokens===void 0?{}:{maxTokens:i.maxTokens}}));return n}providerRetryPolicy(e){return this.registration(e).retryPolicy}detachedModalities(e){return e===void 0?void 0:[...e]}async listModels(e){const t=await this.registration(e).adapter.listModels(e),r=new Set;return t.map(o=>{if(typeof o.provider!="string"||o.provider!==e||typeof o.id!="string"||o.id.length===0||typeof o.name!="string"||o.name.length===0||o.description!==void 0&&typeof o.description!="string"||r.has(o.id))throw new l(`adapter returned invalid or duplicate model metadata for provider "${e}"`,"INVALID_CATALOG");r.add(o.id);const s=this.detachedModalities(o.inputModalities);return{provider:o.provider,id:o.id,name:o.name,...o.description===void 0?{}:{description:o.description},...s===void 0?{}:{inputModalities:s}}})}async resolveModelInfo(e,t,r){return this.resolveModelInfoFor(this.registration(e),t,r)}async resolveModelInfoFor(e,t,r){const o=e.provider.id,s=await e.adapter.resolveModel(o,t,r);if(typeof s.provider!="string"||s.provider!==o||typeof s.id!="string"||s.id!==t||typeof s.name!="string"||s.name.length===0||s.description!==void 0&&typeof s.description!="string")throw new l(`adapter returned invalid exact model metadata for provider "${o}" model "${t}"`,"INVALID_MODEL_INFO");const n=s.context;if(n!==void 0&&(!Number.isInteger(n.contextWindow)||n.contextWindow<=0))throw new l(`adapter returned invalid context metadata for provider "${o}" model "${t}"`,"INVALID_MODEL_CONTEXT");const i=this.detachedModalities(s.inputModalities),d=s.defaultMaxTokens;if(d!==void 0&&(!Number.isSafeInteger(d)||d<=0))throw new l(`adapter returned invalid default maxTokens for provider "${o}" model "${t}"`,"INVALID_MODEL_MAX_TOKENS");const u={provider:o,id:t,name:s.name,...s.description===void 0?{}:{description:s.description},...i===void 0?{}:{inputModalities:i},...n===void 0?{}:{context:{contextWindow:n.contextWindow}},...d===void 0?{}:{defaultMaxTokens:d}},c=s.reasoning;if(c===void 0)return u;if(c.efforts.length===0)throw new l(`adapter returned invalid reasoning metadata for provider "${o}" model "${t}"`,"INVALID_MODEL_REASONING");const m=new Set,V=c.efforts.map(f=>{if(typeof f.id!="string"||f.id.length===0||typeof f.name!="string"||f.name.length===0||f.description!==void 0&&typeof f.description!="string"||m.has(f.id))throw new l(`adapter returned invalid or duplicate reasoning effort metadata for provider "${o}" model "${t}"`,"INVALID_MODEL_REASONING");return m.add(f.id),{id:f.id,name:f.name,...f.description===void 0?{}:{description:f.description}}});if(c.defaultEffort!==void 0&&!m.has(c.defaultEffort))throw new l(`adapter returned an unknown default reasoning effort for provider "${o}" model "${t}"`,"INVALID_MODEL_REASONING");return{...u,reasoning:{efforts:V,...c.defaultEffort===void 0?{}:{defaultEffort:c.defaultEffort}}}}async resolveCallConfig(e,t){return(await this.resolveCallFor(this.registration(e.provider),e,t)).config}async resolveCallFor(e,t,r){const o=await this.resolveModelInfoFor(e,t.model,r),s=t.maxTokens===void 0&&o.defaultMaxTokens!==void 0?{...t,maxTokens:o.defaultMaxTokens}:t,n=o.reasoning,i=s.reasoningEffort;let d=s;if(n===void 0){if(i!==void 0)throw new l(`provider "${t.provider}" model "${t.model}" does not support reasoning effort "${i}"`,"UNSUPPORTED_REASONING_EFFORT")}else{const u=i??n.defaultEffort;if(u!==void 0){if(!n.efforts.some(c=>c.id===u))throw new l(`provider "${t.provider}" model "${t.model}" does not support reasoning effort "${u}"`,"UNSUPPORTED_REASONING_EFFORT");i!==u&&(d={...s,reasoningEffort:u})}}return{config:d,...o.context===void 0?{}:{context:o.context}}}async prepareCall(e,t){const r=this.registration(e.provider),o=await this.resolveCallFor(r,e,t),s=h(structuredClone(o.config)),n=o.context===void 0?void 0:h(structuredClone(o.context)),i=h({...e.reasoningEffort===void 0&&s.reasoningEffort!==void 0?{reasoningEffort:!0}:{},...e.maxTokens===void 0&&s.maxTokens!==void 0?{maxTokens:!0}:{}});let d=!1;return Object.freeze({config:s,retryPolicy:r.retryPolicy,adapterDefaults:i,...n===void 0?{}:{context:n},stream:a(u=>{if(d)throw new l("a prepared LLM call can only be dispatched once","INVALID_PREPARED_CALL");if(!y(u,s))throw new l("prepared LLM call config changed before adapter dispatch","INVALID_PREPARED_CALL");return d=!0,this.streamWithRegistration(u,{registration:r,config:s})},"stream")})}registration(e){const t=this.adapters.get(e);if(!t)throw new l(`no adapter registered for provider "${e}"`,"NO_ADAPTER");return t}forAdapter(e,t){const r=e.messages.map(s=>{const n=s.source;return s.role!=="assistant"||n.kind!=="model"||n.replayState===void 0||this.adapters.get(n.provider)?.adapter===t?s:E({...s,source:{kind:"model",provider:n.provider,model:n.model}})});if(r.every((s,n)=>s===e.messages[n]))return e;const o={...e,messages:r};return Object.isFrozen(e)?h(o):o}async*adapterStream(e,t){let r;try{const s=t?.registration??this.registration(e.provider),n=t===void 0?(await this.resolveCallFor(s,e,e.signal)).config:t.config;if(t!==void 0&&!y(e,n))throw new l("prepared LLM call config changed before adapter dispatch","INVALID_PREPARED_CALL");const i=y(e,n)?e:Object.isFrozen(e)?h({...e,...n}):{...e,...n},d=s.adapter;r=d.stream(this.forAdapter(i,d))[Symbol.asyncIterator]()}catch(s){yield U(s,e.signal);return}let o=!1;try{for(;;){let s;try{const n=await r.next();s=n.done?{done:!0}:{done:!1,value:n.value}}catch(n){o=!0,yield U(n,e.signal);return}if(s.done){o=!0;return}yield s.value}}finally{if(!o){const s=r.return?.bind(r);s&&await s()}}}stream(e){return this.streamWithRegistration(e)}streamWithRegistration(e,t){return this.ctx.waterfall(this,"llm/stream",e,()=>this.adapterStream(e,t))}};function U(e,t){const r=ve(e);return{type:"finish",reason:t?.aborted||r.code==="ABORTED"?{kind:"aborted",failure:r}:{kind:"error",failure:r}}}a(U,"adapterFailureChunk");export{R as APP_IDENTITY,De as BlockAssembler,Q as CONTEXT_SUMMARY_MAX_CHARS,re as CONTEXT_WINDOW_EXCEEDED_CODE,X as CallId,T as EMPTY_RESPONSE_CODE,v as HarnessError,O as INVALID_CREDENTIAL_CODE,Oe as LlmAdapter,l as LlmError,j as LlmRuntime,j as default,W as MessageId,G as ProviderRequestId,oe as QUOTA_EXCEEDED_CODE,K as ReasoningEffortId,pe as RetryPolicySchema,P as assertNever,Te as assertUsableApiKey,xe as attributionHeaders,J as boundContextSummary,y as callConfigEquals,F as contentHasImage,Z as createAssistantMessage,w as createMessage,ee as createToolResultMessage,D as createUserMessage,h as deepFreeze,le as errorChain,E as freezeMessage,H as isAgentLoopRequest,ae as isContextWindowExceededError,ce as isHarnessError,de as isQuotaExceededError,te as isTokenDelta,B as markAgentLoopRequest,k as normalizeApiKey,N as resolveRetryPolicy,$ as userAgent};
|
|
1
|
+
var q=Object.defineProperty;var a=(e,t)=>q(e,"name",{value:t,configurable:!0});import{createRequire as Y}from"node:module";import{Service as z}from"@deepseek-ai/cordis";import p from"@deepseek-ai/schemastery";import{MAX_TIMER_DELAY_MS as g}from"@deepseek-ai/dsh-timeout";function W(e){return e}a(W,"MessageId");function X(e){return e}a(X,"CallId");function G(e){return e}a(G,"ProviderRequestId");function K(e){return e}a(K,"ReasoningEffortId");const x=new WeakSet;function y(e,t){return e.provider!==t.provider||e.model!==t.model||e.reasoningEffort!==t.reasoningEffort||e.temperature!==t.temperature||e.maxTokens!==t.maxTokens?!1:e.stop===void 0||t.stop===void 0?e.stop===t.stop:e.stop.length===t.stop.length&&e.stop.every((r,o)=>r===t.stop?.[o])}a(y,"callConfigEquals");function B(e){return x.add(e),e}a(B,"markAgentLoopRequest");function H(e){return x.has(e)}a(H,"isAgentLoopRequest");function h(e){const t=new WeakSet,r=[{kind:"visit",node:e}];for(;r.length>0;){const o=r.pop();if(o===void 0)continue;if(o.kind==="property"){r.push({kind:"visit",node:o.source[o.key]});continue}const s=o.node;if(s===null||typeof s!="object"||s instanceof AbortSignal||t.has(s))continue;t.add(s),Object.freeze(s);const n=Object.keys(s);for(let i=n.length-1;i>=0;i--){const d=n[i];d!==void 0&&r.push({kind:"property",source:s,key:d})}}return e}a(h,"deepFreeze");const Q=120;function J(e){return e.length<=120?e:`${e.slice(0,119)}…`}a(J,"boundContextSummary");function E(e){return h(structuredClone(e))}a(E,"freezeMessage");function w(e){return E({...e,id:crypto.randomUUID()})}a(w,"createMessage");function D(e){return w({...e,role:"user"})}a(D,"createUserMessage");function Z(e){return w({role:"assistant",content:e.content,source:{kind:"model",...e.source}})}a(Z,"createAssistantMessage");function ee(e){return D({source:{kind:"tool",callId:e.callId},content:[{type:"tool-result",toolCallId:e.callId,content:e.content,isError:e.isError}]})}a(ee,"createToolResultMessage");function te(e){switch(e.type){case"text-delta":case"reasoning-delta":return e.text!=="";case"tool-call-delta":return e.argumentsDelta!==""||e.name!==void 0;default:return!1}}a(te,"isTokenDelta");var v=class extends Error{static{a(this,"HarnessError")}code;constructor(e,t,r){super(e,r),this.code=t,this.name=new.target.name}};const re="CONTEXT_WINDOW_EXCEEDED",oe="QUOTA",T="EMPTY_RESPONSE",O="INVALID_CREDENTIAL",se=new RegExp(String.raw`(?:^|[^a-z0-9])context[\s_-](?:length|window)[\s_-]`+String.raw`(?:exceed(?:ed|s)?|overflow(?:ed)?|limit[\s_-]exceeded)(?:$|[^a-z0-9])`,"i"),ne=new RegExp(String.raw`\b(?:request|prompt|input|messages?)\s+(?:is\s+|are\s+)?`+String.raw`too\s+(?:large|long)\s+for\s+(?:(?:this|the)\s+)?`+String.raw`(?:model(?:'s)?\s+)?context(?:\s+window)?\b`,"i"),ie=new RegExp(String.raw`\b(?:input|prompt|request|messages?)\b.{0,40}`+String.raw`\b(?:exceed(?:s|ed)?|overflows?|is\s+larger\s+than)\b.{0,40}`+String.raw`\b(?:the\s+)?(?:model(?:'s)?\s+)?context(?:\s+(?:length|window))?\b`,"i");function ae(e){return se.test(e)||/\b(?:maximum|max)(?:\s+(?:allowed|supported))?\s+context\s+(?:length|window)\b/i.test(e)||ne.test(e)||/\b(?:input|prompt|request)\s+(?:is\s+)?too\s+(?:long|large)\s+for\s+(?:this|the)\s+model\b/i.test(e)||ie.test(e)}a(ae,"isContextWindowExceededError");function de(e){return/\binsufficient[\s_-]+(?:quota|balance|credits?)\b/i.test(e)||/\b(?:quota|usage[\s_-]+limit)[\s_-]+(?:exceeded|exhausted|reached)\b/i.test(e)||/\bexceed(?:ed|s)?[\s_-]+(?:(?:your|the)[\s_-]+)?(?:current[\s_-]+)?quota\b/i.test(e)||/\b(?:balance|credits?)[\s_-]+(?:exhausted|depleted)\b/i.test(e)||/\bout[\s_-]+of[\s_-]+(?:credits?|budget)\b/i.test(e)}a(de,"isQuotaExceededError");function le(e){const t=new Set,r=a(o=>{if(t.has(o))return"<circular cause>";t.add(o);try{if(!(o instanceof Error)){if(typeof o=="object"&&o!==null){const d=Object.getOwnPropertyDescriptor(o,"message");if(d!==void 0&&"value"in d&&typeof d.value=="string")return d.value}return String(o)}const s=o.message===""?o.name:o.message,n=o instanceof AggregateError&&o.errors.length>0?` [${o.errors.map(r).join("; ")}]`:"",i=o.cause===void 0||o.cause===null?"":r(o.cause);return`${s}${n}${i===""||i===s?"":`: ${i}`}`}catch{return"<unrenderable value>"}finally{t.delete(o)}},"render");return r(e)}a(le,"errorChain");function ce(e){return e instanceof v}a(ce,"isHarnessError");const b=2,M=500,L=1e4,S=.1,A=Object.freeze([T,"RATE_LIMIT","SERVER","TIMEOUT","TRANSPORT"]),C=p.object({initialDelayMs:p.number().max(g).default(M),maxDelayMs:p.number().max(g).default(L),jitterRatio:p.number().min(0).max(1).default(S)}),ue=p.object({mode:p.const("normal").required(),maxRetries:p.number().step(1).min(0).max(Number.MAX_SAFE_INTEGER).default(b),retryableCodes:p.array(p.string()).default([...A]),backoff:C}),fe=p.object({mode:p.const("always").required(),backoff:C}),pe=p.union([ue,fe]),me=new Set(["mode","maxRetries","retryableCodes","backoff"]),he=new Set(["mode","backoff"]),ge=new Set(["initialDelayMs","maxDelayMs","jitterRatio"]);function _(e,t,r){for(const o of Object.keys(e))if(!t.has(o))throw new Error(`${r}: unknown key "${o}"`)}a(_,"validateKeys");function I(e,t){e!==void 0&&_(e,ge,t);const r=e?.initialDelayMs??M,o=e?.maxDelayMs??L,s=e?.jitterRatio??S;if(!Number.isFinite(r)||r<=0||r>g)throw new Error(`${t}.initialDelayMs must be a positive finite number no greater than ${g}`);if(!Number.isFinite(o)||o<=0||o>g)throw new Error(`${t}.maxDelayMs must be a positive finite number no greater than ${g}`);if(r>o)throw new Error(`${t}.initialDelayMs must be less than or equal to maxDelayMs`);if(!Number.isFinite(s)||s<0||s>1)throw new Error(`${t}.jitterRatio must be between 0 and 1`);return Object.freeze({initialDelayMs:r,maxDelayMs:o,jitterRatio:s})}a(I,"resolveBackoff");function N(e,t){if(e===void 0)return Object.freeze({mode:"normal",maxRetries:b,retryableCodes:A,...I(void 0,`${t}.backoff`)});switch(e.mode){case"normal":{_(e,me,t);const r=e.maxRetries??b,o=e.retryableCodes??[...A];if(!Number.isSafeInteger(r)||r<0)throw new Error(`${t}.maxRetries must be a non-negative safe integer`);if(o.length===0)throw new Error(`${t}.retryableCodes must not be empty`);if(o.some(s=>typeof s!="string"||s.length===0))throw new Error(`${t}.retryableCodes must contain only non-empty strings`);if(new Set(o).size!==o.length)throw new Error(`${t}.retryableCodes must not contain duplicates`);return Object.freeze({mode:"normal",maxRetries:r,retryableCodes:Object.freeze([...o]),...I(e.backoff,`${t}.backoff`)})}case"always":return _(e,he,t),Object.freeze({mode:"always",...I(e.backoff,`${t}.backoff`)});default:throw new Error(`${t}.mode must be "normal" or "always"`)}}a(N,"resolveRetryPolicy");function ve(e){const t=e instanceof Error?e:new v(ye(e),"UNKNOWN",{cause:e}),r=Ee(t);return r!==void 0&&r.code===we(t)?r:Object.freeze({message:Ae(t),code:_e(t)})}a(ve,"normalizeLlmFailure");function ye(e){try{const t=String(e);return t.length>0?t:"LLM adapter failed"}catch{return"LLM adapter failed"}}a(ye,"thrownMessage");function we(e){try{const t=Object.getOwnPropertyDescriptor(e,"code");return t!==void 0&&"value"in t?t.value:void 0}catch{return}}a(we,"ownErrorCode");function Ee(e){try{const t=Object.getOwnPropertyDescriptor(e,"failure");return t!==void 0&&"value"in t?be(t.value):void 0}catch{return}}a(Ee,"ownFailureSnapshot");function be(e){if(!(typeof e!="object"||e===null))try{const t=e,r=t.message,o=t.code,s=t.status,n=t.providerRetryAfterMs,i=t.requestId;return typeof r!="string"||r.length===0||typeof o!="string"||o.length===0||s!==void 0&&(!Number.isInteger(s)||s<100||s>599)||n!==void 0&&(!Number.isFinite(n)||n<=0)||i!==void 0&&(typeof i!="string"||i.length===0)?void 0:Object.freeze({message:r,code:o,...s===void 0?{}:{status:s},...n===void 0?{}:{providerRetryAfterMs:n},...i===void 0?{}:{requestId:i}})}catch{return}}a(be,"failureSnapshot");function Ae(e){try{const t=e.message;if(typeof t=="string"&&t.length>0)return t}catch{}return"LLM adapter failed"}a(Ae,"errorMessage");function _e(e){return e instanceof v?e.code:"UNKNOWN"}a(_e,"harnessErrorCode");const Ie=/^[\x21-\x7E]+$/;function k(e){const t=e.trim();return t.length===0?{ok:!1,reason:"empty"}:Ie.test(t)?{ok:!0,value:t}:{ok:!1,reason:"illegalCharacters"}}a(k,"normalizeApiKey");const{version:Re}=Y(import.meta.url)("../package.json"),R={product:"deepseek-harness",version:Re,url:"https://www.npmjs.com/package/@qqbrowser/qbot-dsh"};function $(e=R){return`${e.product}/${e.version} (+${e.url})`}a($,"userAgent");function xe(e=R){return{"user-agent":$(e)}}a(xe,"attributionHeaders");function P(e,t){const r=JSON.stringify(e)??String(e);throw new Error(`unreachable variant${t?` in ${t}`:""}: ${r}`)}a(P,"assertNever");function F(e){return e.some(t=>t.type==="image"||t.type==="tool-result"&&F(t.content))}a(F,"contentHasImage");var De=class{static{a(this,"BlockAssembler")}partials=new Map;order=[];_usage;_finish;_replayState;push(e){switch(e.type){case"block-start":this.partials.has(e.index)||(this.order.push(e.index),this.partials.set(e.index,{blockType:e.blockType,text:"",toolCallArguments:""}));return;case"text-delta":case"reasoning-delta":{const t=this.ensure(e.index,e.type==="text-delta"?"text":"reasoning");if(t.block)return;t.text+=e.text;return}case"tool-call-delta":{const t=this.ensure(e.index,"tool-call");if(t.block)return;t.toolCallId=e.id,e.name&&(t.toolCallName=e.name),t.toolCallArguments+=e.argumentsDelta;return}case"block-end":{const t=this.ensure(e.index,e.block.type);if(t.block)return;t.block=e.block;return}case"usage":this._usage=e.usage;return;case"finish":this._finish=e.reason,this._replayState=e.replayState;return;default:return P(e,"BlockAssembler.push")}}ensure(e,t){let r=this.partials.get(e);return r||(r={blockType:t,text:"",toolCallArguments:""},this.partials.set(e,r),this.order.push(e)),r}assemble(e,t){if(e.block)return e.block;switch(e.blockType){case"text":return{type:"text",text:e.text};case"reasoning":return{type:"reasoning",text:e.text};case"tool-call":return{type:"tool-call",id:e.toolCallId??`call-${t}`,name:e.toolCallName??"",arguments:e.toolCallArguments};default:throw new Error(`cannot assemble incomplete block of type "${e.blockType}"`)}}mustGet(e){const t=this.partials.get(e);if(!t)throw new Error(`BlockAssembler invariant violated: no partial for index ${e}`);return t}assembled(){const e=this.order.map(s=>this.assemble(this.mustGet(s),s)),t=this.finish.kind==="max-tokens"?e.map(s=>s.type!=="tool-call"):void 0,r=t===void 0?e:e.filter((s,n)=>t[n]),o=this._replayState;return o?.blocks===void 0?{blocks:r,replay:o}:o.blocks.length!==e.length?{blocks:r,replay:void 0}:{blocks:r,replay:t===void 0||r.length===e.length?o:{response:o.response,blocks:o.blocks.filter((s,n)=>t[n])}}}blocks(){return this.assembled().blocks}get usage(){return this._usage}get finish(){return this._finish??{kind:"stop"}}get replayState(){return this.assembled().replay}message(e={kind:"plugin",plugin:"dsh-llm/assembler"}){return w({role:"assistant",content:this.blocks(),source:e})}},l=class extends v{static{a(this,"LlmError")}failure;constructor(e,t,r){if(typeof e!="string"||e.length===0)throw new Error("LlmError message must be a non-empty string");if(typeof t!="string"||t.length===0)throw new Error("LlmError code must be a non-empty string");if(r?.status!==void 0&&(!Number.isInteger(r.status)||r.status<100||r.status>599))throw new Error("LlmError status must be an integer from 100 through 599");if(r?.providerRetryAfterMs!==void 0&&(!Number.isFinite(r.providerRetryAfterMs)||r.providerRetryAfterMs<=0))throw new Error("LlmError providerRetryAfterMs must be a positive finite number");if(r?.requestId!==void 0&&(typeof r.requestId!="string"||r.requestId.length===0))throw new Error("LlmError requestId must be a non-empty string");super(e,t,r),this.name="LlmError",this.failure=Object.freeze({message:e,code:t,...r?.status===void 0?{}:{status:r.status},...r?.providerRetryAfterMs===void 0?{}:{providerRetryAfterMs:r.providerRetryAfterMs},...r?.requestId===void 0?{}:{requestId:r.requestId}})}};function Te(e,t,r){const o=k(e);if(o.ok)return o.value;throw new l(o.reason==="empty"?`${t}: the API key resolved from ${r} is blank; set ${r} to the raw key (the web Models page writes it) or export it in the launching environment`:`${t}: the API key resolved from ${r} contains characters no HTTP header can carry; set ${r} to the raw key alone (the web Models page writes it)`,O)}a(Te,"assertUsableApiKey");var Oe=class{static{a(this,"LlmAdapter")}providerInfo(e){return{id:e,name:e}}providerRetryPolicy(e){}listModels(e){return Promise.resolve([])}resolveModel(e,t,r){return Promise.resolve({provider:e,id:t,name:t})}},j=class extends z{static{a(this,"LlmRuntime")}adapters=new Map;directory=new Map;discoveries=new Map;constructor(e){super(e,"llm")}emitAdaptersUpdated(){let e;for(const t of this.ctx.events.dispatch("emit",["llm/adapters-updated"]))try{const r=t();r!=null&&typeof r.then=="function"&&Promise.resolve(r).then(void 0,o=>{this.warnAdaptersListenerFailure(o)})}catch(r){if(r?.code==="INVARIANT"){e??=r;continue}this.warnAdaptersListenerFailure(r)}if(e!==void 0)throw e}warnAdaptersListenerFailure(e){this.ctx.logger.warn("llm: an llm/adapters-updated listener failed"),this.ctx.logger.warn(e)}registerAdapter(e,t){const r=new Set;let o=!1;const s=this.ctx.effect(function*(){if(e.length===0)throw new l("an adapter must register at least one provider","INVALID_ADAPTER");this.commitRoutes(r,this.prepareRoutes(e,t,r)),yield()=>{o=!0;for(const i of r)this.adapters.delete(i);r.clear(),this.emitAdaptersUpdated()}}.bind(this),"llm.registerAdapter()"),n=a((()=>{s()}),"handle");return n.replace=i=>{if(o)throw new l("a disposed adapter registration cannot replace its routes","REGISTRATION_DISPOSED");this.commitRoutes(r,this.prepareRoutes(i,t,r))},n}prepareRoutes(e,t,r){const o=new Set,s=[];for(const n of e){if(n.length===0)throw new l("adapter provider names must be non-empty","INVALID_ADAPTER");if(o.has(n)||this.adapters.has(n)&&!r.has(n))throw new l(`an adapter for provider "${n}" is already registered`,"DUPLICATE_ADAPTER");const i=t.providerInfo(n);if(typeof i.id!="string"||i.id!==n||typeof i.name!="string"||i.name.length===0)throw new l(`adapter metadata for provider "${n}" must preserve its id and have a non-empty name`,"INVALID_ADAPTER");o.add(n);const d=t.providerRetryPolicy(n)??N(void 0,`llm: provider "${n}" retryPolicy`);s.push({adapter:t,provider:{id:i.id,name:i.name},retryPolicy:d})}return s}commitRoutes(e,t){for(const r of e)this.adapters.delete(r);e.clear();for(const r of t)this.adapters.set(r.provider.id,r),e.add(r.provider.id);this.emitAdaptersUpdated()}listProviders(){return[...this.adapters.values()].map(({provider:e})=>({...e}))}registerConfigurableProviders(e){let t=[],r=!1;const o=a(i=>{const d=[],u=new Set(t.map(c=>c.provider));for(const c of i){if(c.provider.length===0||c.displayName.length===0||c.settingsNs.length===0)throw new l("configurable providers need a non-empty provider, displayName, and settingsNs","INVALID_DIRECTORY");if(c.settingsPath.some(m=>m.length===0))throw new l(`configurable provider "${c.provider}" has an empty settingsPath segment`,"INVALID_DIRECTORY");if(this.directory.has(c.provider)&&!u.has(c.provider)||d.some(m=>m.provider===c.provider))throw new l(`configurable provider "${c.provider}" is already declared`,"DUPLICATE_DIRECTORY");d.push({...c,settingsPath:[...c.settingsPath]})}for(const c of t)this.directory.delete(c.provider);for(const c of d)this.directory.set(c.provider,c);t=d,this.emitAdaptersUpdated()},"commit"),s=this.ctx.effect(function*(){if(e.length===0)throw new l("a configurable-provider registration must declare at least one provider","INVALID_DIRECTORY");o(e),yield()=>{r=!0;for(const i of t)this.directory.delete(i.provider);t=[],this.emitAdaptersUpdated()}}.bind(this),"llm.registerConfigurableProviders()"),n=a((()=>{s()}),"handle");return n.replace=i=>{if(r)throw new l("this configurable-provider registration was disposed","REGISTRATION_DISPOSED");o(i)},n}listConfigurableProviders(){return[...this.directory.values()].map(e=>({...e,settingsPath:[...e.settingsPath]}))}registerModelDiscovery(e,t){const r=this.ctx.effect(function*(){if(e.length===0)throw new l("model discovery needs a non-empty settings namespace","INVALID_DISCOVERY");if(this.discoveries.has(e))throw new l(`model discovery for "${e}" is already registered`,"DUPLICATE_DISCOVERY");this.discoveries.set(e,t),yield()=>{this.discoveries.delete(e)}}.bind(this),"llm.registerModelDiscovery()");return()=>{r()}}async discoverModels(e,t){const r=this.discoveries.get(e);if(r===void 0)throw new l(`no model discovery is registered for "${e}"`,"NO_DISCOVERY");if((t.provider??"").length===0&&(t.baseURL??"").length===0)throw new l("model discovery needs a provider route or a baseURL","INVALID_DISCOVERY");const o=await r(t),s=new Set,n=[];for(const i of o)typeof i.id!="string"||i.id.length===0||s.has(i.id)||(s.add(i.id),n.push({id:i.id,...i.name===void 0?{}:{name:i.name},...i.contextWindow===void 0?{}:{contextWindow:i.contextWindow},...i.maxTokens===void 0?{}:{maxTokens:i.maxTokens}}));return n}providerRetryPolicy(e){return this.registration(e).retryPolicy}detachedModalities(e){return e===void 0?void 0:[...e]}async listModels(e){const t=await this.registration(e).adapter.listModels(e),r=new Set;return t.map(o=>{if(typeof o.provider!="string"||o.provider!==e||typeof o.id!="string"||o.id.length===0||typeof o.name!="string"||o.name.length===0||o.description!==void 0&&typeof o.description!="string"||r.has(o.id))throw new l(`adapter returned invalid or duplicate model metadata for provider "${e}"`,"INVALID_CATALOG");r.add(o.id);const s=this.detachedModalities(o.inputModalities);return{provider:o.provider,id:o.id,name:o.name,...o.description===void 0?{}:{description:o.description},...s===void 0?{}:{inputModalities:s}}})}async resolveModelInfo(e,t,r){return this.resolveModelInfoFor(this.registration(e),t,r)}async resolveModelInfoFor(e,t,r){const o=e.provider.id,s=await e.adapter.resolveModel(o,t,r);if(typeof s.provider!="string"||s.provider!==o||typeof s.id!="string"||s.id!==t||typeof s.name!="string"||s.name.length===0||s.description!==void 0&&typeof s.description!="string")throw new l(`adapter returned invalid exact model metadata for provider "${o}" model "${t}"`,"INVALID_MODEL_INFO");const n=s.context;if(n!==void 0&&(!Number.isInteger(n.contextWindow)||n.contextWindow<=0))throw new l(`adapter returned invalid context metadata for provider "${o}" model "${t}"`,"INVALID_MODEL_CONTEXT");const i=this.detachedModalities(s.inputModalities),d=s.defaultMaxTokens;if(d!==void 0&&(!Number.isSafeInteger(d)||d<=0))throw new l(`adapter returned invalid default maxTokens for provider "${o}" model "${t}"`,"INVALID_MODEL_MAX_TOKENS");const u={provider:o,id:t,name:s.name,...s.description===void 0?{}:{description:s.description},...i===void 0?{}:{inputModalities:i},...n===void 0?{}:{context:{contextWindow:n.contextWindow}},...d===void 0?{}:{defaultMaxTokens:d}},c=s.reasoning;if(c===void 0)return u;if(c.efforts.length===0)throw new l(`adapter returned invalid reasoning metadata for provider "${o}" model "${t}"`,"INVALID_MODEL_REASONING");const m=new Set,V=c.efforts.map(f=>{if(typeof f.id!="string"||f.id.length===0||typeof f.name!="string"||f.name.length===0||f.description!==void 0&&typeof f.description!="string"||m.has(f.id))throw new l(`adapter returned invalid or duplicate reasoning effort metadata for provider "${o}" model "${t}"`,"INVALID_MODEL_REASONING");return m.add(f.id),{id:f.id,name:f.name,...f.description===void 0?{}:{description:f.description}}});if(c.defaultEffort!==void 0&&!m.has(c.defaultEffort))throw new l(`adapter returned an unknown default reasoning effort for provider "${o}" model "${t}"`,"INVALID_MODEL_REASONING");return{...u,reasoning:{efforts:V,...c.defaultEffort===void 0?{}:{defaultEffort:c.defaultEffort}}}}async resolveCallConfig(e,t){return(await this.resolveCallFor(this.registration(e.provider),e,t)).config}async resolveCallFor(e,t,r){const o=await this.resolveModelInfoFor(e,t.model,r),s=t.maxTokens===void 0&&o.defaultMaxTokens!==void 0?{...t,maxTokens:o.defaultMaxTokens}:t,n=o.reasoning,i=s.reasoningEffort;let d=s;if(n===void 0){if(i!==void 0)throw new l(`provider "${t.provider}" model "${t.model}" does not support reasoning effort "${i}"`,"UNSUPPORTED_REASONING_EFFORT")}else{const u=i??n.defaultEffort;if(u!==void 0){if(!n.efforts.some(c=>c.id===u))throw new l(`provider "${t.provider}" model "${t.model}" does not support reasoning effort "${u}"`,"UNSUPPORTED_REASONING_EFFORT");i!==u&&(d={...s,reasoningEffort:u})}}return{config:d,...o.context===void 0?{}:{context:o.context}}}async prepareCall(e,t){const r=this.registration(e.provider),o=await this.resolveCallFor(r,e,t),s=h(structuredClone(o.config)),n=o.context===void 0?void 0:h(structuredClone(o.context)),i=h({...e.reasoningEffort===void 0&&s.reasoningEffort!==void 0?{reasoningEffort:!0}:{},...e.maxTokens===void 0&&s.maxTokens!==void 0?{maxTokens:!0}:{}});let d=!1;return Object.freeze({config:s,retryPolicy:r.retryPolicy,adapterDefaults:i,...n===void 0?{}:{context:n},stream:a(u=>{if(d)throw new l("a prepared LLM call can only be dispatched once","INVALID_PREPARED_CALL");if(!y(u,s))throw new l("prepared LLM call config changed before adapter dispatch","INVALID_PREPARED_CALL");return d=!0,this.streamWithRegistration(u,{registration:r,config:s})},"stream")})}registration(e){const t=this.adapters.get(e);if(!t)throw new l(`no adapter registered for provider "${e}"`,"NO_ADAPTER");return t}forAdapter(e,t){const r=e.messages.map(s=>{const n=s.source;return s.role!=="assistant"||n.kind!=="model"||n.replayState===void 0||this.adapters.get(n.provider)?.adapter===t?s:E({...s,source:{kind:"model",provider:n.provider,model:n.model}})});if(r.every((s,n)=>s===e.messages[n]))return e;const o={...e,messages:r};return Object.isFrozen(e)?h(o):o}async*adapterStream(e,t){let r;try{const s=t?.registration??this.registration(e.provider),n=t===void 0?(await this.resolveCallFor(s,e,e.signal)).config:t.config;if(t!==void 0&&!y(e,n))throw new l("prepared LLM call config changed before adapter dispatch","INVALID_PREPARED_CALL");const i=y(e,n)?e:Object.isFrozen(e)?h({...e,...n}):{...e,...n},d=s.adapter;r=d.stream(this.forAdapter(i,d))[Symbol.asyncIterator]()}catch(s){yield U(s,e.signal);return}let o=!1;try{for(;;){let s;try{const n=await r.next();s=n.done?{done:!0}:{done:!1,value:n.value}}catch(n){o=!0,yield U(n,e.signal);return}if(s.done){o=!0;return}yield s.value}}finally{if(!o){const s=r.return?.bind(r);s&&await s()}}}stream(e){return this.streamWithRegistration(e)}streamWithRegistration(e,t){return this.ctx.waterfall(this,"llm/stream",e,()=>this.adapterStream(e,t))}};function U(e,t){const r=ve(e);return{type:"finish",reason:t?.aborted||r.code==="ABORTED"?{kind:"aborted",failure:r}:{kind:"error",failure:r}}}a(U,"adapterFailureChunk");export{R as APP_IDENTITY,De as BlockAssembler,Q as CONTEXT_SUMMARY_MAX_CHARS,re as CONTEXT_WINDOW_EXCEEDED_CODE,X as CallId,T as EMPTY_RESPONSE_CODE,v as HarnessError,O as INVALID_CREDENTIAL_CODE,Oe as LlmAdapter,l as LlmError,j as LlmRuntime,j as default,W as MessageId,G as ProviderRequestId,oe as QUOTA_EXCEEDED_CODE,K as ReasoningEffortId,pe as RetryPolicySchema,P as assertNever,Te as assertUsableApiKey,xe as attributionHeaders,J as boundContextSummary,y as callConfigEquals,F as contentHasImage,Z as createAssistantMessage,w as createMessage,ee as createToolResultMessage,D as createUserMessage,h as deepFreeze,le as errorChain,E as freezeMessage,H as isAgentLoopRequest,ae as isContextWindowExceededError,ce as isHarnessError,de as isQuotaExceededError,te as isTokenDelta,B as markAgentLoopRequest,k as normalizeApiKey,N as resolveRetryPolicy,$ as userAgent};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
var
|
|
1
|
+
var n=Object.defineProperty;var i=(o,e)=>n(o,"name",{value:e,configurable:!0});import{CallId as p}from"./brand.js";import{assertNever as c}from"./never.js";import{createMessage as d}from"./message.js";export class BlockAssembler{static{i(this,"BlockAssembler")}partials=new Map;order=[];_usage;_finish;_replayState;push(e){switch(e.type){case"block-start":{this.partials.has(e.index)||(this.order.push(e.index),this.partials.set(e.index,{blockType:e.blockType,text:"",toolCallArguments:""}));return}case"text-delta":case"reasoning-delta":{const t=this.ensure(e.index,e.type==="text-delta"?"text":"reasoning");if(t.block)return;t.text+=e.text;return}case"tool-call-delta":{const t=this.ensure(e.index,"tool-call");if(t.block)return;t.toolCallId=e.id,e.name&&(t.toolCallName=e.name),t.toolCallArguments+=e.argumentsDelta;return}case"block-end":{const t=this.ensure(e.index,e.block.type);if(t.block)return;t.block=e.block;return}case"usage":{this._usage=e.usage;return}case"finish":{this._finish=e.reason,this._replayState=e.replayState;return}default:return c(e,"BlockAssembler.push")}}ensure(e,t){let s=this.partials.get(e);return s||(s={blockType:t,text:"",toolCallArguments:""},this.partials.set(e,s),this.order.push(e)),s}assemble(e,t){if(e.block)return e.block;switch(e.blockType){case"text":return{type:"text",text:e.text};case"reasoning":return{type:"reasoning",text:e.text};case"tool-call":return{type:"tool-call",id:e.toolCallId??p(`call-${t}`),name:e.toolCallName??"",arguments:e.toolCallArguments};default:throw new Error(`cannot assemble incomplete block of type "${e.blockType}"`)}}mustGet(e){const t=this.partials.get(e);if(!t)throw new Error(`BlockAssembler invariant violated: no partial for index ${e}`);return t}assembled(){const e=this.order.map(r=>this.assemble(this.mustGet(r),r)),t=this.finish.kind==="max-tokens"?e.map(r=>r.type!=="tool-call"):void 0,s=t===void 0?e:e.filter((r,a)=>t[a]),l=this._replayState;return l?.blocks===void 0?{blocks:s,replay:l}:l.blocks.length!==e.length?{blocks:s,replay:void 0}:{blocks:s,replay:t===void 0||s.length===e.length?l:{response:l.response,blocks:l.blocks.filter((r,a)=>t[a])}}}blocks(){return this.assembled().blocks}get usage(){return this._usage}get finish(){return this._finish??{kind:"stop"}}get replayState(){return this.assembled().replay}message(e={kind:"plugin",plugin:"dsh-llm/assembler"}){return d({role:"assistant",content:this.blocks(),source:e})}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"@deepseek-ai/dsh-llm","version":"0.0
|
|
1
|
+
{"name":"@deepseek-ai/dsh-llm","version":"0.1.0","publishConfig":{"access":"public"},"type":"module","main":"lib/index.js","exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./invariant":{"types":"./lib/types/invariant.d.ts","default":"./lib/invariant.js"},"./types":{"types":"./lib/types/types.d.ts","default":"./lib/types/types.js"},"./brand":{"types":"./lib/types/brand.d.ts","default":"./lib/types/brand.js"},"./message":{"types":"./lib/types/message.d.ts","default":"./lib/types/message.js"},"./src/*":"./src/*","./package.json":"./package.json"},"license":"MIT","peerDependencies":{"@deepseek-ai/dsh-timeout":"^0.1.0","@deepseek-ai/dsh-attachment":"^0.1.0","@deepseek-ai/dsh-invariants":"^0.1.0","@deepseek-ai/dsh-brand":"^0.1.0","@deepseek-ai/cordis":"^4.0.1"},"dependencies":{"@deepseek-ai/schemastery":"^3.18.1"}}
|