@gajae-code/coding-agent 0.12.15 → 0.12.16-nightly.20260807070805.31156495595.g91c4eff67ce2
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/CHANGELOG.md +62 -0
- package/dist/types/ai-core-import-gate.test.d.ts +1 -0
- package/dist/types/capability/mcp.d.ts +2 -0
- package/dist/types/capability/skill.d.ts +11 -1
- package/dist/types/cli/args.d.ts +1 -1
- package/dist/types/cli/file-processor.d.ts +1 -1
- package/dist/types/cli/initial-message.d.ts +1 -1
- package/dist/types/cli/mcp-cli.d.ts +1 -0
- package/dist/types/cli/native-smoke.d.ts +12 -0
- package/dist/types/cli/plugin-cli.d.ts +1 -0
- package/dist/types/cli/setup-cli.d.ts +1 -1
- package/dist/types/cli/update-cli.d.ts +38 -10
- package/dist/types/cli.d.ts +1 -1
- package/dist/types/commands/mcp.d.ts +5 -0
- package/dist/types/commands/plugin.d.ts +3 -0
- package/dist/types/commands/update.d.ts +3 -3
- package/dist/types/commit/agentic/agent.d.ts +1 -1
- package/dist/types/commit/analysis/conventional.d.ts +1 -1
- package/dist/types/commit/analysis/summary.d.ts +1 -1
- package/dist/types/commit/changelog/generate.d.ts +1 -1
- package/dist/types/commit/changelog/index.d.ts +1 -1
- package/dist/types/commit/map-reduce/index.d.ts +1 -1
- package/dist/types/commit/map-reduce/map-phase.d.ts +1 -1
- package/dist/types/commit/map-reduce/reduce-phase.d.ts +1 -1
- package/dist/types/commit/model-selection.d.ts +1 -1
- package/dist/types/commit/shared-llm.d.ts +1 -1
- package/dist/types/commit/utils.d.ts +1 -1
- package/dist/types/config/model-discovery-manager.d.ts +1 -1
- package/dist/types/config/model-equivalence.d.ts +1 -1
- package/dist/types/config/model-profile-activation.d.ts +1 -1
- package/dist/types/config/model-registry.d.ts +7 -2
- package/dist/types/config/model-resolver.d.ts +1 -1
- package/dist/types/config/models-config-schema.d.ts +18 -0
- package/dist/types/config/settings-schema.d.ts +71 -1
- package/dist/types/config/settings.d.ts +1 -2
- package/dist/types/config/update-channel.d.ts +13 -0
- package/dist/types/coordinator/contract.d.ts +1 -1
- package/dist/types/coordinator-mcp/codex-handoff.d.ts +88 -0
- package/dist/types/coordinator-mcp/codex-wake-publisher.d.ts +23 -0
- package/dist/types/coordinator-mcp/server.d.ts +31 -0
- package/dist/types/cursor.d.ts +1 -1
- package/dist/types/debug/index.d.ts +5 -0
- package/dist/types/debug/raw-sse-buffer.d.ts +1 -1
- package/dist/types/defaults/gjc/extensions/grok-cli-vendor/src/provider/stream.d.ts +1 -1
- package/dist/types/defaults/gjc-defaults.d.ts +12 -0
- package/dist/types/defaults/gjc-defaults.test.d.ts +1 -0
- package/dist/types/defaults/gjc-skills.generated.d.ts +16 -0
- package/dist/types/discovery/helpers.d.ts +4 -0
- package/dist/types/eval/types.d.ts +1 -1
- package/dist/types/exa/factory.d.ts +1 -1
- package/dist/types/exa/mcp-client.d.ts +1 -1
- package/dist/types/exa/researcher.d.ts +1 -1
- package/dist/types/exa/search.d.ts +1 -1
- package/dist/types/exa/types.d.ts +1 -1
- package/dist/types/exa/websets.d.ts +1 -1
- package/dist/types/exec/bash-executor.d.ts +1 -1
- package/dist/types/extensibility/custom-tools/loader.d.ts +3 -2
- package/dist/types/extensibility/custom-tools/types.d.ts +1 -1
- package/dist/types/extensibility/custom-tools/wrapper.d.ts +1 -1
- package/dist/types/extensibility/extensions/compact-handler.d.ts +1 -1
- package/dist/types/extensibility/extensions/loader.d.ts +1 -1
- package/dist/types/extensibility/extensions/runner.d.ts +1 -1
- package/dist/types/extensibility/extensions/types.d.ts +1 -1
- package/dist/types/extensibility/extensions/wrapper.d.ts +1 -1
- package/dist/types/extensibility/gjc-plugins/activation.d.ts +1 -1
- package/dist/types/extensibility/gjc-plugins/compiler.d.ts +1 -0
- package/dist/types/extensibility/gjc-plugins/constrained-hooks.d.ts +22 -0
- package/dist/types/extensibility/gjc-plugins/index.d.ts +3 -1
- package/dist/types/extensibility/gjc-plugins/injection.d.ts +4 -1
- package/dist/types/extensibility/gjc-plugins/installer.d.ts +4 -0
- package/dist/types/extensibility/gjc-plugins/lifecycle.d.ts +4 -0
- package/dist/types/extensibility/gjc-plugins/metadata.d.ts +11 -0
- package/dist/types/extensibility/gjc-plugins/migration.d.ts +45 -0
- package/dist/types/extensibility/gjc-plugins/prompt-appendix.d.ts +7 -2
- package/dist/types/extensibility/gjc-plugins/registry.d.ts +5 -3
- package/dist/types/extensibility/gjc-plugins/runtime-adapters.d.ts +15 -0
- package/dist/types/extensibility/gjc-plugins/subskill-authority.d.ts +38 -0
- package/dist/types/extensibility/gjc-plugins/tools.d.ts +2 -0
- package/dist/types/extensibility/gjc-plugins/types.d.ts +71 -1
- package/dist/types/extensibility/hooks/runner.d.ts +2 -2
- package/dist/types/extensibility/hooks/tool-wrapper.d.ts +1 -1
- package/dist/types/extensibility/hooks/types.d.ts +1 -1
- package/dist/types/extensibility/shared-events.d.ts +1 -1
- package/dist/types/extensibility/skills.d.ts +8 -1
- package/dist/types/gjc-runtime/managed-owner-admission.d.ts +1 -1
- package/dist/types/hooks/mcp-delegate-host-context.d.ts +29 -0
- package/dist/types/internal-urls/local-protocol.d.ts +1 -1
- package/dist/types/internal-urls/mcp-protocol.d.ts +1 -1
- package/dist/types/internal-urls/types.d.ts +2 -0
- package/dist/types/main.d.ts +1 -1
- package/dist/types/memory-backend/index.d.ts +4 -4
- package/dist/types/memory-backend/lazy-loading.test.d.ts +1 -0
- package/dist/types/memory-backend/off-backend.d.ts +1 -7
- package/dist/types/memory-backend/resolve.d.ts +18 -11
- package/dist/types/memory-backend/service.d.ts +11 -0
- package/dist/types/memory-backend/types.d.ts +4 -3
- package/dist/types/modes/acp/acp-agent.d.ts +7 -2
- package/dist/types/modes/components/assistant-message.d.ts +1 -1
- package/dist/types/modes/components/message-frame.d.ts +1 -1
- package/dist/types/modes/components/model-selector.d.ts +1 -1
- package/dist/types/modes/components/settings-selector.d.ts +1 -1
- package/dist/types/modes/controllers/command-controller.d.ts +2 -1
- package/dist/types/modes/controllers/selector-controller.d.ts +1 -1
- package/dist/types/modes/interactive-mode.d.ts +6 -3
- package/dist/types/modes/print-mode.d.ts +1 -1
- package/dist/types/modes/shared/agent-wire/event-contract.d.ts +1 -1
- package/dist/types/modes/theme/theme.d.ts +2 -2
- package/dist/types/modes/types.d.ts +3 -2
- package/dist/types/modes/utils/context-usage.d.ts +1 -1
- package/dist/types/modes/utils/injected-user-submission.d.ts +1 -1
- package/dist/types/modes/utils/ui-helpers.d.ts +1 -1
- package/dist/types/reminders/star-reminder.d.ts +1 -1
- package/dist/types/rlm/python-tool.d.ts +1 -1
- package/dist/types/runtime/boot-ordering.test.d.ts +1 -0
- package/dist/types/runtime/lazy-registration.d.ts +23 -0
- package/dist/types/runtime/lazy-service.d.ts +44 -0
- package/dist/types/runtime/lazy-service.test.d.ts +1 -0
- package/dist/types/runtime/network-prewarm-service.d.ts +15 -0
- package/dist/types/runtime/network-prewarm-service.test.d.ts +1 -0
- package/dist/types/runtime/optional-runtime-services.d.ts +22 -0
- package/dist/types/runtime/workspace-tree-service.d.ts +16 -0
- package/dist/types/runtime/workspace-tree-service.test.d.ts +1 -0
- package/dist/types/runtime-credential-selector.d.ts +1 -1
- package/dist/types/runtime-mcp/client.d.ts +6 -2
- package/dist/types/runtime-mcp/config.test.d.ts +1 -0
- package/dist/types/runtime-mcp/http.test.d.ts +1 -0
- package/dist/types/runtime-mcp/index.d.ts +2 -0
- package/dist/types/runtime-mcp/loader.d.ts +2 -0
- package/dist/types/runtime-mcp/manager-pool.test.d.ts +1 -0
- package/dist/types/runtime-mcp/manager.d.ts +38 -3
- package/dist/types/runtime-mcp/pool-key.d.ts +62 -0
- package/dist/types/runtime-mcp/pool-key.test.d.ts +1 -0
- package/dist/types/runtime-mcp/pool.d.ts +208 -0
- package/dist/types/runtime-mcp/pool.test.d.ts +1 -0
- package/dist/types/runtime-mcp/tool-bridge.d.ts +19 -7
- package/dist/types/runtime-mcp/transports/http.d.ts +1 -0
- package/dist/types/runtime-mcp/types.d.ts +5 -2
- package/dist/types/sdk/broker/lifecycle.d.ts +4 -0
- package/dist/types/sdk/bus/chat-daemon-control.d.ts +3 -1
- package/dist/types/sdk/bus/index.d.ts +49 -15
- package/dist/types/sdk/bus/telegram-daemon-contract.d.ts +10 -2
- package/dist/types/sdk/bus/telegram-daemon.d.ts +28 -0
- package/dist/types/sdk/host/host.d.ts +2 -0
- package/dist/types/sdk/host/import-graph.test.d.ts +1 -0
- package/dist/types/sdk/host/index.d.ts +2 -0
- package/dist/types/sdk/host/reverse-leases.d.ts +5 -0
- package/dist/types/sdk/host/sdk-surface-parity.test.d.ts +1 -0
- package/dist/types/sdk/host/session-runtime.d.ts +125 -0
- package/dist/types/sdk/host/session-runtime.test.d.ts +1 -0
- package/dist/types/sdk/host/surface-policy.d.ts +21 -0
- package/dist/types/sdk/host/websocket-transport.d.ts +22 -0
- package/dist/types/sdk/host/websocket-transport.lifecycle.test.d.ts +1 -0
- package/dist/types/sdk/models.d.ts +1 -1
- package/dist/types/sdk/session-directory.d.ts +2 -1
- package/dist/types/sdk/session.d.ts +17 -5
- package/dist/types/secrets/obfuscator.d.ts +1 -1
- package/dist/types/session/agent-session.d.ts +17 -2
- package/dist/types/session/agent-storage.d.ts +1 -1
- package/dist/types/session/artifacts.d.ts +28 -0
- package/dist/types/session/auth-storage.d.ts +2 -2
- package/dist/types/session/cache-economics.d.ts +1 -1
- package/dist/types/session/heap-eviction-artifacts.test.d.ts +1 -0
- package/dist/types/session/history-storage.d.ts +1 -0
- package/dist/types/session/internal/managed-session-scope.d.ts +23 -4
- package/dist/types/session/internal/managed-session-storage.d.ts +7 -2
- package/dist/types/session/messages.d.ts +1 -1
- package/dist/types/session/session-dump-format.d.ts +1 -1
- package/dist/types/session/session-manager.d.ts +16 -3
- package/dist/types/session/session-storage.d.ts +1 -1
- package/dist/types/session/tool-choice-queue.d.ts +1 -1
- package/dist/types/setup/credential-auto-import.d.ts +1 -1
- package/dist/types/setup/credential-import.d.ts +1 -1
- package/dist/types/setup/model-onboarding-guidance.d.ts +1 -1
- package/dist/types/setup/provider-onboarding.d.ts +3 -2
- package/dist/types/skill-state/active-state.d.ts +12 -2
- package/dist/types/skills/index.d.ts +16 -0
- package/dist/types/skills/skills.test.d.ts +1 -0
- package/dist/types/slash-commands/helpers/fast-status-report.d.ts +1 -1
- package/dist/types/slash-commands/notify-command.test.d.ts +1 -0
- package/dist/types/task/executor.d.ts +6 -1
- package/dist/types/task/index.d.ts +1 -1
- package/dist/types/task/types.d.ts +1 -1
- package/dist/types/task/worktree.d.ts +1 -2
- package/dist/types/tools/ask-answer-registry.d.ts +2 -0
- package/dist/types/tools/ask-contract.d.ts +589 -0
- package/dist/types/tools/ask.d.ts +5 -477
- package/dist/types/tools/bash-command-fixup.d.ts +21 -0
- package/dist/types/tools/browser/tab-protocol.d.ts +1 -1
- package/dist/types/tools/computer-policy.d.ts +16 -0
- package/dist/types/tools/computer.d.ts +1 -11
- package/dist/types/tools/computer.enforcement.test.d.ts +1 -0
- package/dist/types/tools/descriptor-validation.d.ts +164 -0
- package/dist/types/tools/descriptors.d.ts +100 -0
- package/dist/types/tools/descriptors.test.d.ts +1 -0
- package/dist/types/tools/image-gen.d.ts +1 -1
- package/dist/types/tools/implementations.d.ts +42 -0
- package/dist/types/tools/index.d.ts +21 -47
- package/dist/types/tools/output-meta.d.ts +15 -0
- package/dist/types/tools/path-utils.d.ts +2 -0
- package/dist/types/tools/recipe/index.d.ts +2 -0
- package/dist/types/tools/recipe/render.d.ts +2 -2
- package/dist/types/tools/render-utils.d.ts +2 -4
- package/dist/types/tools/ssh.d.ts +2 -1
- package/dist/types/tools/telegram-send.d.ts +2 -1
- package/dist/types/tools/todo-contract.d.ts +15 -0
- package/dist/types/tools/todo-write.d.ts +9 -10
- package/dist/types/tools/tool-catalog.generated.d.ts +30 -0
- package/dist/types/tools/tool-result.d.ts +1 -1
- package/dist/types/utils/image-loading.d.ts +1 -1
- package/dist/types/utils/image-resize.d.ts +1 -1
- package/dist/types/utils/npm-registry.d.ts +3 -1
- package/dist/types/utils/pasted-image-loading.d.ts +1 -1
- package/dist/types/utils/prompt-suggestion.d.ts +1 -1
- package/dist/types/utils/title-generator.d.ts +1 -1
- package/dist/types/utils/tool-choice.d.ts +1 -1
- package/dist/types/web/kagi.d.ts +1 -1
- package/dist/types/web/search/index.d.ts +1 -1
- package/dist/types/web/search/provider.d.ts +1 -1
- package/dist/types/web/search/providers/anthropic.d.ts +1 -1
- package/dist/types/web/search/providers/base.d.ts +1 -1
- package/dist/types/web/search/providers/brave.d.ts +1 -1
- package/dist/types/web/search/providers/codex.d.ts +1 -1
- package/dist/types/web/search/providers/duckduckgo.d.ts +1 -1
- package/dist/types/web/search/providers/exa.d.ts +1 -1
- package/dist/types/web/search/providers/gemini.d.ts +1 -1
- package/dist/types/web/search/providers/insane.d.ts +1 -1
- package/dist/types/web/search/providers/jina.d.ts +1 -1
- package/dist/types/web/search/providers/kagi.d.ts +1 -1
- package/dist/types/web/search/providers/kimi.d.ts +1 -1
- package/dist/types/web/search/providers/parallel.d.ts +1 -1
- package/dist/types/web/search/providers/perplexity.d.ts +1 -1
- package/dist/types/web/search/providers/searxng.d.ts +1 -1
- package/dist/types/web/search/providers/synthetic.d.ts +1 -1
- package/dist/types/web/search/providers/tavily.d.ts +1 -1
- package/dist/types/web/search/providers/xai.d.ts +1 -1
- package/dist/types/web/search/providers/zai.d.ts +1 -1
- package/examples/sdk/README.md +1 -1
- package/package.json +12 -9
- package/scripts/build-sdk-package-smoke.ts +10 -3
- package/scripts/compile-args.ts +4 -0
- package/scripts/generate-tool-catalog.ts +503 -0
- package/scripts/verify-gjc-sdk-canonicalization.ts +17 -4
- package/src/ai-core-import-gate.test.ts +59 -0
- package/src/capability/mcp.ts +2 -0
- package/src/capability/skill.ts +12 -1
- package/src/cli/args.ts +1 -1
- package/src/cli/auth-broker-cli.ts +1 -1
- package/src/cli/auth-gateway-cli.ts +2 -2
- package/src/cli/file-processor.ts +1 -1
- package/src/cli/initial-message.ts +1 -1
- package/src/cli/list-models.ts +1 -1
- package/src/cli/mcp-cli.ts +5 -1
- package/src/cli/native-smoke.ts +47 -0
- package/src/cli/plugin-cli.ts +79 -7
- package/src/cli/setup-cli.ts +5 -3
- package/src/cli/skills-cli.ts +4 -3
- package/src/cli/update-cli.ts +132 -33
- package/src/cli.ts +22 -25
- package/src/commands/launch.ts +1 -1
- package/src/commands/mcp.ts +7 -0
- package/src/commands/plugin.ts +2 -0
- package/src/commands/update.ts +30 -1
- package/src/commit/agentic/agent.ts +1 -1
- package/src/commit/analysis/conventional.ts +2 -2
- package/src/commit/analysis/summary.ts +2 -2
- package/src/commit/changelog/generate.ts +2 -2
- package/src/commit/changelog/index.ts +1 -1
- package/src/commit/map-reduce/index.ts +1 -1
- package/src/commit/map-reduce/map-phase.ts +2 -2
- package/src/commit/map-reduce/reduce-phase.ts +2 -2
- package/src/commit/model-selection.ts +1 -1
- package/src/commit/pipeline.ts +1 -1
- package/src/commit/shared-llm.ts +2 -2
- package/src/commit/utils.ts +1 -1
- package/src/config/mcp-schema.json +6 -0
- package/src/config/model-discovery-manager.ts +1 -1
- package/src/config/model-equivalence.ts +1 -1
- package/src/config/model-profile-activation.ts +1 -1
- package/src/config/model-profiles.ts +3 -3
- package/src/config/model-registry.ts +225 -31
- package/src/config/model-resolver.ts +7 -1
- package/src/config/models-config-schema.ts +4 -1
- package/src/config/provider-ranking.ts +2 -0
- package/src/config/resolve-config-value.ts +11 -1
- package/src/config/settings-schema.ts +70 -0
- package/src/config/settings.ts +4 -2
- package/src/config/update-channel.ts +19 -0
- package/src/coordinator/contract.ts +3 -0
- package/src/coordinator-mcp/codex-handoff.ts +477 -0
- package/src/coordinator-mcp/codex-wake-publisher.ts +356 -0
- package/src/coordinator-mcp/question-gate-codec.ts +9 -2
- package/src/coordinator-mcp/server.ts +576 -3
- package/src/cursor.ts +1 -1
- package/src/debug/index.ts +13 -3
- package/src/debug/raw-sse-buffer.ts +1 -1
- package/src/defaults/gjc/extensions/grok-cli-vendor/src/provider/register.ts +1 -1
- package/src/defaults/gjc/extensions/grok-cli-vendor/src/provider/stream.ts +1 -1
- package/src/defaults/gjc/extensions/grok-cli-vendor/src/provider/usage.ts +1 -1
- package/src/defaults/gjc-defaults.test.ts +23 -0
- package/src/defaults/gjc-defaults.ts +101 -74
- package/src/defaults/gjc-skills.generated.ts +103 -0
- package/src/discovery/helpers.ts +68 -10
- package/src/discovery/mcp-json.ts +3 -0
- package/src/edit/diff.ts +0 -2
- package/src/edit/modes/replace.ts +29 -12
- package/src/eval/js/context-manager.ts +1 -1
- package/src/eval/py/executor.ts +10 -0
- package/src/eval/types.ts +1 -1
- package/src/exa/factory.ts +1 -1
- package/src/exa/mcp-client.ts +1 -1
- package/src/exa/researcher.ts +1 -1
- package/src/exa/search.ts +1 -1
- package/src/exa/types.ts +1 -1
- package/src/exa/websets.ts +1 -1
- package/src/exec/bash-executor.ts +12 -1
- package/src/extensibility/custom-tools/loader.ts +13 -3
- package/src/extensibility/custom-tools/types.ts +1 -1
- package/src/extensibility/custom-tools/wrapper.ts +1 -1
- package/src/extensibility/extensions/compact-handler.ts +1 -1
- package/src/extensibility/extensions/loader.ts +2 -2
- package/src/extensibility/extensions/runner.ts +1 -1
- package/src/extensibility/extensions/types.ts +1 -1
- package/src/extensibility/extensions/wrapper.ts +1 -1
- package/src/extensibility/gjc-plugins/activation.ts +36 -44
- package/src/extensibility/gjc-plugins/compiler.ts +50 -0
- package/src/extensibility/gjc-plugins/constrained-hooks.ts +97 -72
- package/src/extensibility/gjc-plugins/index.ts +3 -1
- package/src/extensibility/gjc-plugins/injection.ts +26 -31
- package/src/extensibility/gjc-plugins/installer.ts +27 -13
- package/src/extensibility/gjc-plugins/lifecycle.ts +232 -34
- package/src/extensibility/gjc-plugins/metadata.ts +426 -0
- package/src/extensibility/gjc-plugins/migration.ts +274 -0
- package/src/extensibility/gjc-plugins/prompt-appendix.ts +58 -10
- package/src/extensibility/gjc-plugins/registry.ts +163 -8
- package/src/extensibility/gjc-plugins/runtime-adapters.ts +126 -4
- package/src/extensibility/gjc-plugins/schema.ts +6 -1
- package/src/extensibility/gjc-plugins/session-validation.ts +10 -0
- package/src/extensibility/gjc-plugins/state.ts +12 -2
- package/src/extensibility/gjc-plugins/subskill-authority.ts +242 -0
- package/src/extensibility/gjc-plugins/tools.ts +32 -8
- package/src/extensibility/gjc-plugins/types.ts +92 -1
- package/src/extensibility/hooks/runner.ts +2 -2
- package/src/extensibility/hooks/tool-wrapper.ts +1 -1
- package/src/extensibility/hooks/types.ts +1 -1
- package/src/extensibility/shared-events.ts +1 -1
- package/src/extensibility/skills.ts +18 -3
- package/src/gjc-runtime/managed-owner-admission.ts +12 -11
- package/src/gjc-runtime/managed-owner-supervisor.ts +3 -3
- package/src/gjc-runtime/session-state-sidecar.ts +33 -22
- package/src/gjc-runtime/tmux-owner-isolation.ts +16 -3
- package/src/gjc-runtime/tmux-sessions.ts +4 -3
- package/src/gjc-runtime/ultragoal-owner-loss-recovery.ts +14 -2
- package/src/hashline/hash.ts +3 -22
- package/src/hindsight/transcript.ts +1 -1
- package/src/hooks/mcp-delegate-host-context.ts +144 -0
- package/src/hooks/native-skill-hook.ts +29 -10
- package/src/internal-urls/artifact-protocol.ts +26 -8
- package/src/internal-urls/docs-index.generated.ts +8 -7
- package/src/internal-urls/local-protocol.ts +18 -3
- package/src/internal-urls/mcp-protocol.ts +7 -5
- package/src/internal-urls/memory-protocol.ts +8 -2
- package/src/internal-urls/skill-protocol.ts +12 -0
- package/src/internal-urls/types.ts +2 -0
- package/src/lsp/client.ts +8 -2
- package/src/lsp/render.ts +13 -3
- package/src/main.ts +36 -18
- package/src/memories/index.ts +1 -1
- package/src/memory-backend/index.ts +4 -4
- package/src/memory-backend/lazy-loading.test.ts +83 -0
- package/src/memory-backend/off-backend.ts +1 -16
- package/src/memory-backend/resolve.ts +77 -18
- package/src/memory-backend/service.ts +33 -0
- package/src/memory-backend/types.ts +4 -3
- package/src/modes/acp/acp-agent.ts +134 -13
- package/src/modes/components/assistant-message.ts +1 -1
- package/src/modes/components/message-frame.ts +1 -1
- package/src/modes/components/model-selector.ts +1 -1
- package/src/modes/components/session-observer-overlay.ts +1 -1
- package/src/modes/components/settings-selector.ts +22 -2
- package/src/modes/components/skill-message.ts +1 -1
- package/src/modes/controllers/command-controller.ts +30 -24
- package/src/modes/controllers/event-controller.ts +2 -2
- package/src/modes/controllers/input-controller.ts +1 -1
- package/src/modes/controllers/plan-mode-controller.ts +1 -1
- package/src/modes/controllers/runtime-mcp-command-controller.ts +39 -53
- package/src/modes/controllers/selector-controller.ts +3 -3
- package/src/modes/interactive-mode.ts +59 -18
- package/src/modes/print-mode.ts +1 -1
- package/src/modes/shared/agent-wire/event-contract.ts +1 -1
- package/src/modes/theme/theme.ts +65 -22
- package/src/modes/types.ts +3 -2
- package/src/modes/utils/context-usage.ts +1 -1
- package/src/modes/utils/injected-user-submission.ts +1 -1
- package/src/modes/utils/ui-helpers.ts +1 -1
- package/src/prompts/tools/todo-write.md +1 -1
- package/src/reminders/star-reminder.ts +1 -1
- package/src/rlm/python-tool.ts +1 -1
- package/src/runtime/boot-ordering.test.ts +151 -0
- package/src/runtime/lazy-registration.ts +193 -0
- package/src/runtime/lazy-service.test.ts +263 -0
- package/src/runtime/lazy-service.ts +262 -0
- package/src/runtime/network-prewarm-service.test.ts +48 -0
- package/src/runtime/network-prewarm-service.ts +59 -0
- package/src/runtime/optional-runtime-services.ts +41 -0
- package/src/runtime/workspace-tree-service.test.ts +61 -0
- package/src/runtime/workspace-tree-service.ts +43 -0
- package/src/runtime-credential-selector.ts +1 -1
- package/src/runtime-mcp/client.ts +58 -14
- package/src/runtime-mcp/config.test.ts +19 -0
- package/src/runtime-mcp/config.ts +7 -0
- package/src/runtime-mcp/http.test.ts +18 -0
- package/src/runtime-mcp/index.ts +4 -1
- package/src/runtime-mcp/loader.ts +3 -1
- package/src/runtime-mcp/manager-pool.test.ts +1604 -0
- package/src/runtime-mcp/manager.ts +920 -234
- package/src/runtime-mcp/pool-key.test.ts +178 -0
- package/src/runtime-mcp/pool-key.ts +292 -0
- package/src/runtime-mcp/pool.test.ts +605 -0
- package/src/runtime-mcp/pool.ts +983 -0
- package/src/runtime-mcp/tool-bridge.ts +41 -16
- package/src/runtime-mcp/transports/http.ts +10 -3
- package/src/runtime-mcp/transports/stdio.ts +2 -2
- package/src/runtime-mcp/types.ts +5 -1
- package/src/sdk/acp/adapter.ts +10 -5
- package/src/sdk/broker/discovery.ts +13 -1
- package/src/sdk/broker/ensure.ts +19 -0
- package/src/sdk/broker/lifecycle.ts +81 -13
- package/src/sdk/broker/process-incarnation.ts +2 -2
- package/src/sdk/bus/chat-daemon-control.ts +19 -8
- package/src/sdk/bus/index.ts +502 -298
- package/src/sdk/bus/notification-service.ts +10 -2
- package/src/sdk/bus/recent-activity.ts +20 -3
- package/src/sdk/bus/telegram-daemon-cli.ts +25 -1
- package/src/sdk/bus/telegram-daemon-contract.ts +10 -2
- package/src/sdk/bus/telegram-daemon-control.ts +3 -3
- package/src/sdk/bus/telegram-daemon.ts +115 -15
- package/src/sdk/host/host.ts +22 -7
- package/src/sdk/host/import-graph.test.ts +132 -0
- package/src/sdk/host/index.ts +2 -0
- package/src/sdk/host/reverse-leases.ts +23 -1
- package/src/sdk/host/sdk-surface-parity.test.ts +314 -0
- package/src/sdk/host/session-runtime.test.ts +212 -0
- package/src/sdk/host/session-runtime.ts +1111 -0
- package/src/sdk/host/surface-policy.ts +124 -0
- package/src/sdk/host/websocket-transport.lifecycle.test.ts +191 -0
- package/src/sdk/host/websocket-transport.ts +296 -0
- package/src/sdk/models.ts +1 -1
- package/src/sdk/session-directory.ts +2 -13
- package/src/sdk/session.ts +412 -246
- package/src/secrets/obfuscator.ts +1 -1
- package/src/session/agent-session.ts +540 -221
- package/src/session/agent-storage.ts +1 -1
- package/src/session/artifacts.ts +74 -0
- package/src/session/auth-storage.ts +2 -2
- package/src/session/cache-economics.ts +1 -1
- package/src/session/contribution-prep.ts +1 -1
- package/src/session/heap-eviction-artifacts.test.ts +379 -0
- package/src/session/history-storage.ts +19 -7
- package/src/session/internal/managed-session-scope.ts +128 -66
- package/src/session/internal/managed-session-storage.ts +205 -67
- package/src/session/messages.ts +1 -1
- package/src/session/session-dump-format.ts +1 -1
- package/src/session/session-manager.ts +208 -28
- package/src/session/session-storage.ts +20 -9
- package/src/session/tool-choice-queue.ts +1 -1
- package/src/setup/credential-auto-import.ts +1 -1
- package/src/setup/credential-import.ts +1 -1
- package/src/setup/model-onboarding-guidance.ts +1 -1
- package/src/setup/provider-onboarding.ts +22 -9
- package/src/setup/provider-presets.json +3 -1
- package/src/skill-state/active-state.ts +49 -8
- package/src/skills/index.ts +36 -0
- package/src/skills/skills.test.ts +89 -0
- package/src/slash-commands/builtin-registry.ts +32 -30
- package/src/slash-commands/helpers/context-report.ts +1 -1
- package/src/slash-commands/helpers/fast-status-report.ts +1 -1
- package/src/slash-commands/helpers/mcp.ts +9 -26
- package/src/slash-commands/helpers/usage-report.ts +1 -1
- package/src/slash-commands/notify-command.test.ts +56 -0
- package/src/ssh/connection-manager.ts +10 -7
- package/src/task/executor.ts +7 -1
- package/src/task/index.ts +4 -2
- package/src/task/types.ts +1 -1
- package/src/task/worktree.ts +14 -2
- package/src/tools/ask-answer-registry.ts +3 -0
- package/src/tools/ask-contract.ts +515 -0
- package/src/tools/ask.ts +73 -505
- package/src/tools/ast-edit.ts +11 -4
- package/src/tools/ast-grep.ts +10 -3
- package/src/tools/bash-command-fixup.ts +11 -2
- package/src/tools/bash-interactive.ts +12 -1
- package/src/tools/browser/attach.ts +9 -5
- package/src/tools/browser/tab-protocol.ts +1 -1
- package/src/tools/computer-policy.ts +54 -0
- package/src/tools/computer.enforcement.test.ts +309 -0
- package/src/tools/computer.ts +132 -102
- package/src/tools/descriptor-validation.ts +45 -0
- package/src/tools/descriptors.test.ts +818 -0
- package/src/tools/descriptors.ts +502 -0
- package/src/tools/eval.ts +1 -1
- package/src/tools/fetch.ts +16 -3
- package/src/tools/find.ts +14 -4
- package/src/tools/fs-cache-invalidation.ts +14 -5
- package/src/tools/image-gen.ts +3 -1
- package/src/tools/implementations.ts +43 -0
- package/src/tools/index.ts +88 -197
- package/src/tools/output-meta.ts +17 -1
- package/src/tools/path-utils.ts +8 -1
- package/src/tools/read.ts +13 -2
- package/src/tools/recipe/index.ts +3 -0
- package/src/tools/render-utils.ts +2 -4
- package/src/tools/resolve.ts +1 -1
- package/src/tools/search.ts +20 -1
- package/src/tools/ssh.ts +2 -1
- package/src/tools/subagent.ts +0 -1
- package/src/tools/telegram-send.ts +8 -6
- package/src/tools/todo-contract.ts +72 -0
- package/src/tools/todo-write.ts +37 -44
- package/src/tools/tool-catalog.generated.ts +2695 -0
- package/src/tools/tool-result.ts +1 -1
- package/src/utils/clipboard.ts +10 -3
- package/src/utils/commit-message-generator.ts +2 -2
- package/src/utils/file-mentions.ts +10 -3
- package/src/utils/image-loading.ts +1 -1
- package/src/utils/image-resize.ts +1 -1
- package/src/utils/npm-registry.ts +15 -12
- package/src/utils/pasted-image-loading.ts +1 -1
- package/src/utils/prompt-suggestion.ts +1 -1
- package/src/utils/title-generator.ts +1 -1
- package/src/utils/tool-choice.ts +2 -2
- package/src/web/kagi.ts +1 -1
- package/src/web/parallel.ts +1 -1
- package/src/web/search/index.ts +1 -1
- package/src/web/search/provider.ts +1 -1
- package/src/web/search/providers/anthropic.ts +7 -5
- package/src/web/search/providers/base.ts +1 -1
- package/src/web/search/providers/brave.ts +1 -1
- package/src/web/search/providers/codex.ts +1 -1
- package/src/web/search/providers/duckduckgo.ts +1 -1
- package/src/web/search/providers/exa.ts +1 -1
- package/src/web/search/providers/gemini.ts +2 -2
- package/src/web/search/providers/insane.ts +1 -1
- package/src/web/search/providers/jina.ts +1 -1
- package/src/web/search/providers/kagi.ts +1 -1
- package/src/web/search/providers/kimi.ts +1 -1
- package/src/web/search/providers/parallel.ts +1 -1
- package/src/web/search/providers/perplexity.ts +1 -1
- package/src/web/search/providers/searxng.ts +1 -1
- package/src/web/search/providers/synthetic.ts +1 -1
- package/src/web/search/providers/tavily.ts +1 -1
- package/src/web/search/providers/xai.ts +1 -1
- package/src/web/search/providers/zai.ts +1 -1
- package/src/workspace-tree.ts +20 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,7 +1,47 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
3
|
## [Unreleased]
|
|
4
|
+
### Fixed
|
|
5
|
+
|
|
6
|
+
- `todo_write` and `ask` no longer reject valid calls before the tool loads. Both tools carried two independent copies of their raw-argument rules — one in the loaded tool, one in the cold descriptor registry that runs first — and the deferred copies had drifted: `todo_write`'s dropped the `content` synonym for `task` and the `complete`/`completed` aliases for `done`, accepted targetless `complete` entries the loaded tool rejects, and returned every rejection without its correction code, so the model saw a bare "raw arguments rejected before coercion" with nothing to fix and retried the same shape until the turn died. Both also rejected the harness's own injected `_i` intent field, failing any call carrying it with an unknown-root-key error the model could not repair. `todo_write` validation now lives in a single shared contract module (`tools/todo-contract.ts`) used by both paths, and both tools tolerate `_i` at the root while still rejecting genuinely unknown keys.
|
|
7
|
+
- Managed scope prepare and legacy-local resume no longer report success while group/other-readable descendants remain on disk (e.g. mode `0o036`/`0o644`): prepare uses a mode-only walk (not `snapshotManagedTree("")`, which races concurrent writers and broke `/move`) to detect drift, re-secures with apply+verify, and retries once; legacy-local capture uses the same resecure helper.
|
|
8
|
+
- ACP `session/request_permission` responses are now normalized from the spec-shaped `RequestPermissionResponse` (`{ outcome: { outcome, optionId } }`) into the SDK's flat permission-decision contract before reaching the permission provider. Standards-compliant ACP clients such as Paseo can now authorize permission-gated shell/eval and destructive file operations (`bash`, `monitor`, `eval`, `delete`, `move`, and `edit` only for delete/move operations) without an invalid-response failure; `write` and ordinary edits remain ungated. Nested and flat selected/cancelled responses are accepted by reconstructing the canonical SDK decision fields, while malformed or unknown decisions fail closed.
|
|
9
|
+
|
|
10
|
+
### Added
|
|
4
11
|
|
|
12
|
+
- Added first-class `cline-pass` and `commandcode-goat` provider presets with documented API endpoints, environment-variable credentials, non-hardcoded live model discovery from models.dev and the Command Code Provider API, and prefix-based Claude routing.
|
|
13
|
+
- Added lease-backed MCP connection pooling with typed recovery, shared HTTP/SSE sessions, per-lease callback demultiplexing, and authorization binding scopes that keep credential secrets out of pool keys.
|
|
14
|
+
- Added plugin registry v2 as the single execution authority for plugin tools, subskills, and prompt appendices, with digest verification at final use.
|
|
15
|
+
- Added module-trace and process-tree RSS verification harnesses for startup-memory regressions.
|
|
16
|
+
|
|
17
|
+
### Changed
|
|
18
|
+
|
|
19
|
+
- Deferred notification adapters, native bindings, provider construction, tools, skills, eval, session artifacts, and history storage until their feature paths are used, reducing the CLI startup module graph without changing default behavior.
|
|
20
|
+
- Split SDK session hosting into a transport-neutral runtime and lazy notification adapters.
|
|
21
|
+
|
|
22
|
+
### Fixed
|
|
23
|
+
|
|
24
|
+
- `notifications-topic-registry.test.ts` pins `DAEMON_GENERATION` at 54 after #3965 (was stale at 53; Dev CI run 31133356543).
|
|
25
|
+
- `smithery-env-trust.test.ts` no longer awaits hung probe pipes past a hard per-attempt deadline: minimal child env, `stdin: "ignore"`, SIGKILL + settled race, and up to 2 timeout-only retries. Fixes the inherited-config case that hit exactly 60001ms on Dev CI run 31133356543 after kill-at-45s left `Promise.all` on stdout/stderr unresolved. Assertions unchanged.
|
|
26
|
+
- A Telegram notification daemon that dies without a clean shutdown no longer keeps advertising itself as the ready owner. Ownership was surrendered only by `releaseDaemonOwnership`, which runs after a fully quiesced and fully persisted shutdown; an uncaught error, a failed final topic-registry persist, or a signal left `ownershipPhase: "ready"` and a matching ownership lock on disk, and every later reader attached to a process that no longer existed. Observed in the field: a daemon wrote one heartbeat 559 ms after readiness, died on an uncaught `shared topic authority unavailable` error, and was still recorded as ready eight hours and seventeen crashes later, with no notification delivered in between. The daemon-internal entrypoint now records `stoppedAt` on the way out — from its own `finally` and from a `postmortem` hook that also covers the fatal paths that call `process.exit()` without unwinding — fenced on full owner identity so a successor's state is never touched, and leaving the ownership lock for the existing reclaim path to adjudicate. `isFreshLiveOwner` already treats `stoppedAt` as disqualifying, so recovery no longer depends on a pid liveness check that a recycled pid can defeat.
|
|
27
|
+
- Under the default configuration (no explicit `retry.*` keys), message-only first-event stream timeouts — the wrapped `Error: Provider stream timed out while waiting for the first event`, the bare canonical form, and the per-provider `Anthropic stream timed out...` / `OpenAI responses stream timed out...` variants — were not retried once the run had observable activity (e.g. a prior tool execution in the same turn), so the turn surfaced the timeout instead of retrying like other provider non-critical errors. Content-free message-only watchdog prose is now admitted in the bare-default first-event retry gate like the typed path; visible content, conflicting structured facts, near-miss prose, extension-hook participation, Alibaba/Kimi terminal policy, and ollama-cloud bounded retry remain fail-closed.
|
|
28
|
+
- `smithery-env-trust.test.ts` warms the Bun probe child in `beforeAll` and kills stalled spawns at a 45s budget so the first case no longer absorbs cold-start compile cost into its per-test timeout under shard contention (observed 60001ms timeout after the 60s cap on #3969 exact-head CI). Assertions unchanged.
|
|
29
|
+
- `smithery-env-trust.test.ts` raises the per-test child-process timeout from 30s to 60s so CI contention cannot fail at the previous 30s cap (Dev CI run 31128319216 timed out at 30004ms).
|
|
30
|
+
- Headless coordinator `ralplan` approval gates no longer stall with `missing_runtime_turn` or reject a direct answer with `resource_gone`. Canonical subagents keep workflow-gate emitters local instead of replacing the endpoint owner, the coordinator projects the ask-shaped `ralplan/approval` contract, and provisional notification policy retains gates without publishing them until activation. Direct-control completion is fenced to the exact source generation and preserves exact terminal proof across replacement races.
|
|
31
|
+
- `smithery-env-trust.test.ts` now sets a 30s per-test timeout on all five child-process-spawning trust-boundary tests, preventing CI flake when the Bun child-process spawn + env-file-parse chain exceeds the default 5s budget under parallel shard contention (Dev CI run 31102063678).
|
|
32
|
+
- Fire-and-forget agent continuations (auto-compaction retries, queued follow-ups) racing a still-busy agent no longer spin on a fixed 100ms reschedule forever: they now back off exponentially (100ms doubling up to 5s) and give up after 50 attempts (~4 minutes) with an explicit warn, fixing a runaway loop observed as 10,742 reschedules over 21 minutes in a single session.
|
|
33
|
+
- A Telegram daemon no longer crashes when the shared topic authority is momentarily unavailable. The liveness heartbeat renewed a session's topic lease through a single-argument `.then()` whose rejection escaped to the process-level fatal handler (observed as repeated `Uncaught exception` / `Unhandled rejection: shared topic authority unavailable` deaths while the authority was down); it now reports the failure and retries on the next heartbeat. A startup topic-registry load failure is likewise reported and the daemon continues with an empty registry instead of dying before it starts serving. The four `catch { throw }` authority-failure sites now preserve the underlying error as `cause`, and the compensation fence stops retrying a failed persist every 250ms forever (it gives up after ~10s and lets the next scan/session pass retry), so a shutdown can quiesce instead of spinning. `DAEMON_GENERATION` bumped to 55.
|
|
34
|
+
- ACP `session/prompt` no longer hangs forever when the agent continues mid-prompt. Any continuation (todo reminder, TTSR resume, auto-continue) re-enters the agent loop and emits a second `agent_start`, which shifted the already-empty pending queue and overwrote the live prompt correlation with `undefined`. The prompt's `agent_end` then carried no correlation, `terminalizePrompt` never ran, and every ACP client (Paseo, Zed, JetBrains Air) waited until the 30-minute `sdk.promptDeadlineMs` before failing with `prompt_deadline_exceeded` — despite the answer having already streamed. `agent_start` now claims a pending correlation only when the session has no active one, and the todo-completion continuation holds the predecessor `agent_end` like every other continuation call site (#3949).
|
|
35
|
+
- ACP `session/prompt` no longer hangs forever when the agent continues mid-prompt. Any continuation (todo reminder, TTSR resume, auto-continue) re-enters the agent loop and emits a second `agent_start`, which shifted the already-empty pending queue and overwrote the live prompt correlation with `undefined`. The prompt's `agent_end` then carried no correlation, `terminalizePrompt` never ran, and every ACP client (Paseo, Zed, JetBrains Air) waited until the 30-minute `sdk.promptDeadlineMs` before failing with `prompt_deadline_exceeded` — despite the answer having already streamed. `agent_start` now claims a pending correlation only when the session has no active one, and the todo-completion continuation holds the predecessor `agent_end` like every other continuation call site (#3949).
|
|
36
|
+
- ACP skills, slash commands, and initial session state now actually reach the client. `session/new`, `session/resume`, and `session/fork` scheduled their bootstrap `session/update` notifications on a fixed 50 ms timer taken *before* the session-state queries ran, so on any host where those queries took longer the notifications overtook the response that carries the `sessionId` — naming a session the client had never seen, which clients drop. Measured against Paseo: `available_commands_update` arrived 27 ms *before* the `session/new` response, so the skill list was silently discarded. Bootstrap is now scheduled only once the response payload is ready, matching the ACP session-setup sequence, which permits updates before the response only for `session/load` (#3962).
|
|
37
|
+
- ACP clients can now render the user's own message and its image attachments. A live prompt turn emitted no `user_message_chunk` at all — that update only existed on the `session/load` replay path — so an attached image reached the model but never appeared in the client transcript. `session/prompt` now echoes the prompt's text and image content blocks as `user_message_chunk` before dispatching the turn (#3962).
|
|
38
|
+
- An oversize ACP prompt now fails with a typed, actionable error instead of killing the session. The SDK WebSocket server caps a request frame at 256 KiB (`REQUEST_FRAME_BYTES`) and answers an oversize frame with `CloseCode::Size`, which surfaced to clients as an opaque `-32603 connection_closed` mid-turn; a 244 KiB PNG reproduced it while a 59 KiB PNG succeeded. The prompt is now measured inside its real `control_request` envelope and rejected up front with `-32602` naming the actual and permitted size (#3962).
|
|
39
|
+
- ACP `session/cancel` and `session/close` now settle the pending `session/prompt` with `stopReason: "cancelled"` instead of surfacing a transport error. A cancel that landed during prompt preflight rejected with `busy`, and `session/close` rejected with `connection_closed`, both of which clients display as spurious errors for the user's own action. The spec requires agents to "catch these errors and return the semantically meaningful `cancelled` stop reason"; involuntary teardown still rejects (#3962).
|
|
40
|
+
- GJC no longer advertises `mcpCapabilities.sse`. The legacy MCP HTTP+SSE transport (spec 2024-11-05, deprecated) is not implemented: an `sse` config is routed to the Streamable HTTP transport, which never performs the required `endpoint`-event handshake, so a genuine legacy-SSE server offered by an ACP client could not connect. Locally configured `sse` entries still resolve through `createTransport` and keep working (#3962).
|
|
41
|
+
- Reverse ACP responses (`fs/read_text_file`, terminal output) are now measured as the full serialized frame rather than only the inner `result`. A near-limit result passed the 256 KiB check and then tripped the WebSocket total-frame ceiling, closing the whole session instead of raising the typed `payload_too_large` (#3962).
|
|
42
|
+
- `todo_write` now accepts the synonyms models actually emit instead of failing the tool call mid-turn: `complete`/`completed` for the `done` operation, and `content` for `task`. The operation sets a status spelled `completed` and stores the task as `content`, so the schema's own vocabulary invited both mistakes. The accepted key set and the requirement that a completion name a task or phase are unchanged (#3962).
|
|
43
|
+
|
|
44
|
+
- Managed session scope failures are no longer misreported as `binding_invalid`. An over-budget managed-tree snapshot now surfaces as `capacity_exceeded` carrying the native `content_too_large` message instead of pointing operators at a byte-for-byte canonical binding file, and `migration_busy` is preserved from every classification path rather than only one of the three.
|
|
5
45
|
## [0.12.15] - 2026-08-06
|
|
6
46
|
|
|
7
47
|
## [0.12.14] - 2026-08-06
|
|
@@ -11,9 +51,28 @@
|
|
|
11
51
|
### Fixed
|
|
12
52
|
- ACP session configuration now emits the spec-defined `category` field on the Mode, Model, and Thinking select options (`mode`, `model`, `thought_level`), so standards-compliant ACP clients such as Paseo discover models, modes, and thinking levels instead of an empty model picker (#3922).
|
|
13
53
|
- The ACP session model catalog is now filtered to active providers via `providers.list/active`, falling back to the full catalog on older session hosts, so ACP clients no longer list models for providers without usable credentials (#3922).
|
|
54
|
+
- Workflow-gate asks (ralplan approval, deep-interview questions) now surface through the ACP permission channel when the client does not advertise ACP form elicitation, so plain ACP clients such as Paseo can answer selector gates; free-text asks remain unanswered and the richer `ui` channel stays preferred when advertised (#3925).
|
|
55
|
+
- ACP `session/prompt` no longer hangs forever when the agent continues mid-prompt. Any continuation (todo reminder, TTSR resume, auto-continue) re-enters the agent loop and emits a second `agent_start`, which shifted the already-empty pending queue and overwrote the live prompt correlation with `undefined`. The prompt's `agent_end` then carried no correlation, `terminalizePrompt` never ran, and every ACP client (Paseo, Zed, JetBrains Air) waited until the 30-minute `sdk.promptDeadlineMs` before failing with `prompt_deadline_exceeded` — despite the answer having already streamed. `agent_start` now claims a pending correlation only when the session has no active one, and the todo-completion continuation holds the predecessor `agent_end` like every other continuation call site.
|
|
56
|
+
- ACP clients can now render the user's own message and its image attachments. A live prompt turn emitted no `user_message_chunk` at all — that update only existed on the `session/load` replay path — so an attached image reached the model but never appeared in the client transcript. `session/prompt` now echoes the prompt's text and image content blocks as `user_message_chunk` before dispatching the turn.
|
|
57
|
+
- An oversize ACP prompt now fails with a typed, actionable error instead of killing the session. The SDK WebSocket server caps a request frame at 256 KiB (`REQUEST_FRAME_BYTES`) and answers an oversize frame with `CloseCode::Size`, which surfaced to clients as an opaque `-32603 connection_closed` mid-turn; a 244 KiB PNG reproduced it while a 59 KiB PNG succeeded. The prompt is now measured inside its real `control_request` envelope and rejected up front with `-32602` naming the actual and permitted size.
|
|
58
|
+
- ACP `session/cancel` and `session/close` now settle the pending `session/prompt` with `stopReason: "cancelled"` instead of surfacing a transport error. A cancel that landed during prompt preflight rejected with `busy`, and `session/close` rejected with `connection_closed`, both of which clients display as spurious errors for the user's own action. The spec requires agents to "catch these errors and return the semantically meaningful `cancelled` stop reason"; involuntary teardown still rejects.
|
|
59
|
+
- GJC no longer advertises `mcpCapabilities.sse`. The legacy MCP HTTP+SSE transport (spec 2024-11-05, deprecated) is not implemented: an `sse` config is routed to the Streamable HTTP transport, which never performs the required `endpoint`-event handshake, so a genuine legacy-SSE server offered by an ACP client could not connect. Locally configured `sse` entries still resolve through `createTransport` and keep working.
|
|
60
|
+
- Reverse ACP responses (`fs/read_text_file`, terminal output) are now measured as the full serialized frame rather than only the inner `result`. A near-limit result passed the 256 KiB check and then tripped the WebSocket total-frame ceiling, closing the whole session instead of raising the typed `payload_too_large`.
|
|
61
|
+
- `todo_write` now accepts `complete` and `completed` as aliases for the `done` operation. The status this operation sets is spelled `completed`, so models repeatedly emitted `op: "complete"` and hit a hard mid-turn tool failure; the operation vocabulary is otherwise unchanged and a completion still requires a task or phase target.
|
|
62
|
+
||||||| parent of d5f44548e (fix(todo): accept the operation and field synonyms models actually emit)
|
|
63
|
+
- ACP `session/prompt` no longer hangs forever when the agent continues mid-prompt. Any continuation (todo reminder, TTSR resume, auto-continue) re-enters the agent loop and emits a second `agent_start`, which shifted the already-empty pending queue and overwrote the live prompt correlation with `undefined`. The prompt's `agent_end` then carried no correlation, `terminalizePrompt` never ran, and every ACP client (Paseo, Zed, JetBrains Air) waited until the 30-minute `sdk.promptDeadlineMs` before failing with `prompt_deadline_exceeded` — despite the answer having already streamed. `agent_start` now claims a pending correlation only when the session has no active one, and the todo-completion continuation holds the predecessor `agent_end` like every other continuation call site.
|
|
64
|
+
- ACP clients can now render the user's own message and its image attachments. A live prompt turn emitted no `user_message_chunk` at all — that update only existed on the `session/load` replay path — so an attached image reached the model but never appeared in the client transcript. `session/prompt` now echoes the prompt's text and image content blocks as `user_message_chunk` before dispatching the turn.
|
|
65
|
+
- An oversize ACP prompt now fails with a typed, actionable error instead of killing the session. The SDK WebSocket server caps a request frame at 256 KiB (`REQUEST_FRAME_BYTES`) and answers an oversize frame with `CloseCode::Size`, which surfaced to clients as an opaque `-32603 connection_closed` mid-turn; a 244 KiB PNG reproduced it while a 59 KiB PNG succeeded. The prompt is now measured inside its real `control_request` envelope and rejected up front with `-32602` naming the actual and permitted size.
|
|
66
|
+
- ACP `session/cancel` and `session/close` now settle the pending `session/prompt` with `stopReason: "cancelled"` instead of surfacing a transport error. A cancel that landed during prompt preflight rejected with `busy`, and `session/close` rejected with `connection_closed`, both of which clients display as spurious errors for the user's own action. The spec requires agents to "catch these errors and return the semantically meaningful `cancelled` stop reason"; involuntary teardown still rejects.
|
|
67
|
+
- GJC no longer advertises `mcpCapabilities.sse`. The legacy MCP HTTP+SSE transport (spec 2024-11-05, deprecated) is not implemented: an `sse` config is routed to the Streamable HTTP transport, which never performs the required `endpoint`-event handshake, so a genuine legacy-SSE server offered by an ACP client could not connect. Locally configured `sse` entries still resolve through `createTransport` and keep working.
|
|
68
|
+
- Reverse ACP responses (`fs/read_text_file`, terminal output) are now measured as the full serialized frame rather than only the inner `result`. A near-limit result passed the 256 KiB check and then tripped the WebSocket total-frame ceiling, closing the whole session instead of raising the typed `payload_too_large`.
|
|
69
|
+
- `todo_write` now accepts `complete` and `completed` as aliases for the `done` operation. The status this operation sets is spelled `completed`, so models repeatedly emitted `op: "complete"` and hit a hard mid-turn tool failure; the operation vocabulary is otherwise unchanged and a completion still requires a task or phase target.
|
|
14
70
|
|
|
15
71
|
- `todo_write` now rejects malformed raw arguments with bounded, authority-controlled correction codes instead of a generic rejection: unknown root keys, unknown operation-entry keys, done/drop entries without a task or phase target, and unknown init list-entry keys each surface a fixed message naming the accepted shape without echoing the offending input, while recoverable payloads keep the passthrough/coercion path and the existing ask-tool codes are untouched (#3916).
|
|
16
72
|
- The Alibaba Token Plan onboarding preset and `alibaba-token-plan-qwen-deepseek` profile now reference the provider-supported `qwen3.8-max` model id instead of `qwen-3.8-max`, preventing the built-in profile from selecting an HTTP 400 unsupported model (#3909).
|
|
73
|
+
- Restored computer batch failure metadata, timeout handling, and coordinate bounds validation to match single-action dispatch.
|
|
74
|
+
- Preserved idempotent deletion of unknown SDK sessions and fixed concurrent `/notify on` startup after native loading became lazy.
|
|
75
|
+
- Kept deferred tool descriptors aligned with eager availability guards for headless asks, subagent checkpoints, IRC, GitHub, and cron.
|
|
17
76
|
- `/model` reasoning menu header now shows the highlighted reasoning level (not the model id), seeds the cursor from the role badge when re-editing the same model, and uses a provider-neutral label for `max` instead of "Opus maximum reasoning" (#3847).
|
|
18
77
|
- Resume listing now reverse-scans for buried but canonically valid `header_patch` titles, so a persisted manual title remains visible in the picker after later transcript growth instead of falling back to an empty/line-1 projection (#3633).
|
|
19
78
|
- Custom OpenAI-compatible models whose wire id is namespaced (for example `cline-pass/deepseek-v4-flash`) now inherit capability metadata from the bundled leaf model when `contextWindow` / `maxTokens` are omitted, instead of silently falling back to the generic 128K / 16K defaults. True unknown leaf ids still default; explicit limits remain authoritative (#3856).
|
|
@@ -41,6 +100,9 @@
|
|
|
41
100
|
### Added
|
|
42
101
|
|
|
43
102
|
- Added a verified, copy-installable `ooo` bridge example: `ooo interview` renders Ouroboros MCP questions in GJC, serializes startup and follow-up answers by session ID, cancellation-fences late settlement, disposes state on GJC session changes and `/clear`, drops queued predecessor-generation starts, releases dead transports and controls, honors `OUROBOROS_CLI`, and loads dependency-free in compiled binaries (#3803).
|
|
103
|
+
- Added a scheduled and manually dispatchable nightly deployment cycle that verifies the full `main` graph, stages one immutable source-bound prerelease version across npm/Cargo/native surfaces, publishes the complete package set under the npm `nightly` dist-tag without moving `latest`, and creates a matching GitHub prerelease with binaries and closed package evidence.
|
|
104
|
+
|
|
105
|
+
- `gjc update` now accepts `--channel stable|nightly` to switch release channels in place, and a new **Update Channel** settings entry (`startup.updateChannel`, stable by default) picks the default channel for both `gjc update` and the interactive startup update check. Channel resolution maps to the npm `latest`/`nightly` dist-tags without ever pointing nightly at `latest`, version comparison now orders nightly prereleases with real semver semantics instead of NaN-falling into a forced reinstall, and installed-version verification recognizes prerelease version strings reported by nightly binaries.
|
|
44
106
|
|
|
45
107
|
### Fixed
|
|
46
108
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -10,6 +10,8 @@ export interface MCPServer {
|
|
|
10
10
|
/** Whether explicit runtime MCP consumers should connect automatically (default: true) */
|
|
11
11
|
autoload?: boolean;
|
|
12
12
|
/** Connection timeout in milliseconds */
|
|
13
|
+
/** MCP connection pool identity mode; defaults to one lease per session. */
|
|
14
|
+
sharing?: "per-session" | "shared";
|
|
13
15
|
timeout?: number;
|
|
14
16
|
/** Command to run (for stdio transport) */
|
|
15
17
|
command?: string;
|
|
@@ -16,6 +16,14 @@ export interface SkillFrontmatter {
|
|
|
16
16
|
hide?: boolean;
|
|
17
17
|
[key: string]: unknown;
|
|
18
18
|
}
|
|
19
|
+
/**
|
|
20
|
+
* Metadata-only skill handle. Callers must opt in to reading the body through
|
|
21
|
+
* `loadContent`; discovery never loads the body while building this metadata.
|
|
22
|
+
*/
|
|
23
|
+
export interface SkillDescriptor {
|
|
24
|
+
readonly metadata: Omit<Skill, "content" | "loadContent">;
|
|
25
|
+
readonly loadContent: () => Promise<string>;
|
|
26
|
+
}
|
|
19
27
|
/**
|
|
20
28
|
* A skill that provides specialized knowledge or workflows.
|
|
21
29
|
*/
|
|
@@ -25,7 +33,9 @@ export interface Skill {
|
|
|
25
33
|
/** Absolute path to skill file */
|
|
26
34
|
path: string;
|
|
27
35
|
/** Skill content (markdown) */
|
|
28
|
-
content
|
|
36
|
+
/** Lazily load the markdown body when the caller needs prompt content. */
|
|
37
|
+
loadContent?: () => Promise<string>;
|
|
38
|
+
content?: string;
|
|
29
39
|
/** Parsed frontmatter */
|
|
30
40
|
frontmatter?: SkillFrontmatter;
|
|
31
41
|
/** Source level */
|
package/dist/types/cli/args.d.ts
CHANGED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { WindowsJobMemoryProbeResult } from "@gajae-code/natives";
|
|
2
|
+
export type MemoryGuardNativeSmokeLoad = () => Record<string, unknown>;
|
|
3
|
+
export type MemoryGuardNativeSmokeReceipt = {
|
|
4
|
+
api: "memory_guard_windows_job_probe_v1";
|
|
5
|
+
source: "pi_natives";
|
|
6
|
+
result: WindowsJobMemoryProbeResult;
|
|
7
|
+
};
|
|
8
|
+
export declare function runMemoryGuardNativeSmoke(options?: {
|
|
9
|
+
loadNative?: MemoryGuardNativeSmokeLoad;
|
|
10
|
+
writeStdout?: (text: string) => void;
|
|
11
|
+
}): void;
|
|
12
|
+
export declare function runNativeSmokeTest(): Promise<void>;
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Handles `gjc setup [component]` to install the normal defaults or optional feature dependencies.
|
|
5
5
|
*/
|
|
6
|
-
import { AuthStorage, SqliteAuthCredentialStore } from "@gajae-code/ai";
|
|
6
|
+
import { AuthStorage, SqliteAuthCredentialStore } from "@gajae-code/ai/core";
|
|
7
7
|
import { runExternalCredentialAutoImport } from "../setup/credential-auto-import";
|
|
8
8
|
export type SetupComponent = "claude" | "codex" | "credentials" | "defaults" | "hermes" | "hooks" | "provider" | "python" | "stt";
|
|
9
9
|
export interface SetupCommandArgs {
|
|
@@ -1,4 +1,10 @@
|
|
|
1
|
-
import { type
|
|
1
|
+
import { type UpdateChannel } from "../config/update-channel";
|
|
2
|
+
import { type NpmRegistryLookupOptions } from "../utils/npm-registry";
|
|
3
|
+
export interface UpdateCommandOptions {
|
|
4
|
+
force: boolean;
|
|
5
|
+
check: boolean;
|
|
6
|
+
channel?: UpdateChannel;
|
|
7
|
+
}
|
|
2
8
|
interface ReleaseInfo {
|
|
3
9
|
tag: string;
|
|
4
10
|
version: string;
|
|
@@ -40,10 +46,7 @@ export interface BinaryReplacementOptions {
|
|
|
40
46
|
* Parse update subcommand arguments.
|
|
41
47
|
* Returns undefined if not an update command.
|
|
42
48
|
*/
|
|
43
|
-
export declare function parseUpdateArgs(args: string[]):
|
|
44
|
-
force: boolean;
|
|
45
|
-
check: boolean;
|
|
46
|
-
} | undefined;
|
|
49
|
+
export declare function parseUpdateArgs(args: string[]): UpdateCommandOptions | undefined;
|
|
47
50
|
export type PackageManagerTarget = {
|
|
48
51
|
manager: "npm";
|
|
49
52
|
packageName: string;
|
|
@@ -61,7 +64,13 @@ type PathPlatform = NodeJS.Platform;
|
|
|
61
64
|
type PackageExists = (packageName: string, packageRoot: string) => boolean;
|
|
62
65
|
export declare function resolveUpdateMethodForTest(ompPath: string, bunBinDir: string | undefined): "bun" | "npm" | "binary";
|
|
63
66
|
export declare function resolveNpmManagedTargetForTest(ompPath: string, platform: PathPlatform, packageExists: PackageExists): PackageManagerTarget | undefined;
|
|
64
|
-
|
|
67
|
+
/** Lookup options for the release check: registry resolution plus the release channel. */
|
|
68
|
+
export interface LatestReleaseLookupOptions extends NpmRegistryLookupOptions {
|
|
69
|
+
channel?: UpdateChannel;
|
|
70
|
+
}
|
|
71
|
+
export declare function getLatestReleaseForTest(options: LatestReleaseLookupOptions): Promise<ReleaseInfo>;
|
|
72
|
+
export declare function compareVersionsForTest(a: string, b: string): number;
|
|
73
|
+
export declare function parseReportedVersionForTest(output: string): string | undefined;
|
|
65
74
|
export declare function formatBinaryDownloadFailureMessageForTest(binaryName: string, url: string, status: string | number, platform?: NodeJS.Platform, registryNote?: string): string;
|
|
66
75
|
export declare function buildReleaseBinaryUrlForTest(version: string, platform?: NodeJS.Platform, arch?: string): string;
|
|
67
76
|
export declare function formatManualUpdateInstructionsForTest(platform?: NodeJS.Platform): string;
|
|
@@ -97,16 +106,35 @@ export declare function runBinaryUpdateFlow(targetPath: string, url: string, exp
|
|
|
97
106
|
* Run the update command.
|
|
98
107
|
*/
|
|
99
108
|
export interface UpdateCommandDependencies {
|
|
100
|
-
getLatestRelease?: (
|
|
109
|
+
getLatestRelease?: (options?: LatestReleaseLookupOptions) => Promise<ReleaseInfo>;
|
|
101
110
|
resolveUpdateTarget?: () => Promise<UpdateTarget>;
|
|
102
111
|
performUpdate?: (target: UpdateTarget, expectedVersion: string, registry?: string) => Promise<void>;
|
|
103
112
|
refreshInstalledDefaultSkills?: () => Promise<void>;
|
|
104
113
|
exit?: (code: number) => never;
|
|
105
114
|
}
|
|
106
|
-
|
|
115
|
+
/** How the update command should proceed after comparing versions. */
|
|
116
|
+
export interface UpdateDecision {
|
|
117
|
+
install: boolean;
|
|
118
|
+
kind: "up-to-date" | "new-version" | "switch-back" | "force";
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Decide whether to install after comparing the channel's release with the
|
|
122
|
+
* installed version.
|
|
123
|
+
*
|
|
124
|
+
* A nightly install is semver-newer than every stable release (nightlies
|
|
125
|
+
* version as stable-max-patch+1), so a plain comparison would pin the user on
|
|
126
|
+
* nightly forever: switching back to stable must install even though the
|
|
127
|
+
* target is semver-lower. Only a stable lookup from a nightly build is an
|
|
128
|
+
* intentional switch-back — the reverse (a same-core nightly behind the
|
|
129
|
+
* installed stable) still requires --force.
|
|
130
|
+
*/
|
|
131
|
+
export declare function resolveUpdateDecision(options: {
|
|
132
|
+
comparison: number;
|
|
107
133
|
force: boolean;
|
|
108
|
-
|
|
109
|
-
|
|
134
|
+
channel: UpdateChannel;
|
|
135
|
+
currentVersion: string;
|
|
136
|
+
}): UpdateDecision;
|
|
137
|
+
export declare function runUpdateCommand(opts: UpdateCommandOptions, deps?: UpdateCommandDependencies): Promise<void>;
|
|
110
138
|
/**
|
|
111
139
|
* Print update command help.
|
|
112
140
|
*/
|
package/dist/types/cli.d.ts
CHANGED
|
@@ -105,7 +105,7 @@ export declare class RootHelpCommand extends Command {
|
|
|
105
105
|
};
|
|
106
106
|
thinking: import("@gajae-code/utils/cli").FlagDescriptor<"string"> & {
|
|
107
107
|
description: string;
|
|
108
|
-
options:
|
|
108
|
+
options: ("high" | "low" | "max" | "medium" | "minimal" | "xhigh")[];
|
|
109
109
|
};
|
|
110
110
|
hook: import("@gajae-code/utils/cli").FlagDescriptor<"string"> & {
|
|
111
111
|
description: string;
|
|
@@ -65,6 +65,11 @@ export default class MCP extends Command {
|
|
|
65
65
|
timeout: import("@gajae-code/utils/cli").FlagDescriptor<"integer"> & {
|
|
66
66
|
description: string;
|
|
67
67
|
};
|
|
68
|
+
sharing: import("@gajae-code/utils/cli").FlagDescriptor<"string"> & {
|
|
69
|
+
description: string;
|
|
70
|
+
options: string[];
|
|
71
|
+
default: string;
|
|
72
|
+
};
|
|
68
73
|
};
|
|
69
74
|
run(): Promise<void>;
|
|
70
75
|
}
|
|
@@ -24,6 +24,9 @@ export default class Plugin extends Command {
|
|
|
24
24
|
fix: import("@gajae-code/utils/cli").FlagDescriptor<"boolean"> & {
|
|
25
25
|
description: string;
|
|
26
26
|
};
|
|
27
|
+
"migrate-plugins": import("@gajae-code/utils/cli").FlagDescriptor<"boolean"> & {
|
|
28
|
+
description: string;
|
|
29
|
+
};
|
|
27
30
|
force: import("@gajae-code/utils/cli").FlagDescriptor<"boolean"> & {
|
|
28
31
|
description: string;
|
|
29
32
|
};
|
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Check for and install updates.
|
|
3
|
-
*/
|
|
4
1
|
import { Command } from "@gajae-code/utils/cli";
|
|
5
2
|
export default class Update extends Command {
|
|
6
3
|
static description: string;
|
|
@@ -15,6 +12,9 @@ export default class Update extends Command {
|
|
|
15
12
|
description: string;
|
|
16
13
|
default: boolean;
|
|
17
14
|
};
|
|
15
|
+
channel: import("@gajae-code/utils/cli").FlagDescriptor<"string"> & {
|
|
16
|
+
description: string;
|
|
17
|
+
};
|
|
18
18
|
};
|
|
19
19
|
run(): Promise<void>;
|
|
20
20
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type ThinkingLevel } from "@gajae-code/agent-core";
|
|
2
|
-
import type { Api, Model } from "@gajae-code/ai";
|
|
2
|
+
import type { Api, Model } from "@gajae-code/ai/core";
|
|
3
3
|
import type { ModelRegistry } from "../../config/model-registry";
|
|
4
4
|
import type { Settings } from "../../config/settings";
|
|
5
5
|
import type { AuthStorage } from "../../session/auth-storage";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { ThinkingLevel } from "@gajae-code/agent-core";
|
|
2
|
-
import type { Api, Model } from "@gajae-code/ai";
|
|
2
|
+
import type { Api, Model } from "@gajae-code/ai/core";
|
|
3
3
|
import type { ConventionalAnalysis } from "../../commit/types";
|
|
4
4
|
export interface ConventionalAnalysisInput {
|
|
5
5
|
model: Model<Api>;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { ThinkingLevel } from "@gajae-code/agent-core";
|
|
2
|
-
import type { Api, Model } from "@gajae-code/ai";
|
|
2
|
+
import type { Api, Model } from "@gajae-code/ai/core";
|
|
3
3
|
import type { CommitSummary } from "../../commit/types";
|
|
4
4
|
export interface SummaryInput {
|
|
5
5
|
model: Model<Api>;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { ThinkingLevel } from "@gajae-code/agent-core";
|
|
2
|
-
import type { Api, Model } from "@gajae-code/ai";
|
|
2
|
+
import type { Api, Model } from "@gajae-code/ai/core";
|
|
3
3
|
import * as z from "zod/v4";
|
|
4
4
|
import { type ChangelogGenerationResult } from "../../commit/types";
|
|
5
5
|
export declare const changelogTool: {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { ThinkingLevel } from "@gajae-code/agent-core";
|
|
2
|
-
import type { Api, Model } from "@gajae-code/ai";
|
|
2
|
+
import type { Api, Model } from "@gajae-code/ai/core";
|
|
3
3
|
import type { ConventionalAnalysis } from "../../commit/types";
|
|
4
4
|
export interface MapReduceSettings {
|
|
5
5
|
enabled?: boolean;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { ThinkingLevel } from "@gajae-code/agent-core";
|
|
2
|
-
import type { Api, Model } from "@gajae-code/ai";
|
|
2
|
+
import type { Api, Model } from "@gajae-code/ai/core";
|
|
3
3
|
import type { FileDiff, FileObservation } from "../../commit/types";
|
|
4
4
|
export interface MapPhaseInput {
|
|
5
5
|
model: Model<Api>;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { ThinkingLevel } from "@gajae-code/agent-core";
|
|
2
|
-
import type { Api, Model } from "@gajae-code/ai";
|
|
2
|
+
import type { Api, Model } from "@gajae-code/ai/core";
|
|
3
3
|
import type { ConventionalAnalysis, FileObservation } from "../../commit/types";
|
|
4
4
|
export interface ReducePhaseInput {
|
|
5
5
|
model: Model<Api>;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { ThinkingLevel } from "@gajae-code/agent-core";
|
|
2
|
-
import type { Api, Model } from "@gajae-code/ai";
|
|
2
|
+
import type { Api, Model } from "@gajae-code/ai/core";
|
|
3
3
|
import { type ModelLookupRegistry } from "../config/model-resolver";
|
|
4
4
|
import type { Settings } from "../config/settings";
|
|
5
5
|
export interface ResolvedCommitModel {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { AssistantMessage, ToolCall } from "@gajae-code/ai";
|
|
1
|
+
import type { AssistantMessage, ToolCall } from "@gajae-code/ai/core";
|
|
2
2
|
import type { ChangelogCategory, ConventionalAnalysis, ConventionalDetail } from "./types";
|
|
3
3
|
export declare function extractToolCall(message: AssistantMessage, name: string): ToolCall | undefined;
|
|
4
4
|
export declare function extractTextContent(message: AssistantMessage): string;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type Api, type Model } from "@gajae-code/ai";
|
|
1
|
+
import { type Api, type Model } from "@gajae-code/ai/core";
|
|
2
2
|
export type CanonicalModelSource = "override" | "bundled" | "heuristic" | "fallback";
|
|
3
3
|
export interface ModelEquivalenceConfig {
|
|
4
4
|
overrides?: Record<string, string>;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ThinkingLevel } from "@gajae-code/agent-core";
|
|
2
|
-
import type { Api, Model } from "@gajae-code/ai";
|
|
2
|
+
import type { Api, Model } from "@gajae-code/ai/core";
|
|
3
3
|
import type { AgentSession } from "../session/agent-session";
|
|
4
4
|
export { resolveModelProfileName } from "./model-profile-contract";
|
|
5
5
|
import { type GjcModelAssignmentTargetId, type ModelRegistry } from "./model-registry";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type Api, type AssistantMessageEventStream, type AuthCredentialSelector, type CacheRetention, type Context, type Model, type ModelRefreshStrategy, type ModelRequestTransform, type SimpleStreamOptions, type ThinkingConfig } from "@gajae-code/ai";
|
|
1
|
+
import { type Api, type AssistantMessageEventStream, type AuthCredentialSelector, type CacheRetention, type Context, type Model, type ModelRefreshStrategy, type ModelRequestTransform, type SimpleStreamOptions, type ThinkingConfig } from "@gajae-code/ai/core";
|
|
2
2
|
import type { OAuthCredentials, OAuthLoginCallbacks } from "@gajae-code/ai/utils/oauth/types";
|
|
3
3
|
import { type ThemeColor } from "../modes/theme/theme";
|
|
4
4
|
import { type ActiveProviderDescriptor } from "../sdk/providers";
|
|
@@ -57,6 +57,7 @@ export declare const ModelsConfigFile: ConfigFile<{
|
|
|
57
57
|
supportsStore?: boolean | undefined;
|
|
58
58
|
supportsDeveloperRole?: boolean | undefined;
|
|
59
59
|
sendSessionHeaders?: boolean | undefined;
|
|
60
|
+
supportsResponsesSessionAffinity?: boolean | undefined;
|
|
60
61
|
supportsMultipleSystemMessages?: boolean | undefined;
|
|
61
62
|
supportsReasoningEffort?: boolean | undefined;
|
|
62
63
|
reasoningEffortMap?: {
|
|
@@ -101,7 +102,9 @@ export declare const ModelsConfigFile: ConfigFile<{
|
|
|
101
102
|
authHeader?: boolean | undefined;
|
|
102
103
|
auth?: "apiKey" | "none" | "oauth" | undefined;
|
|
103
104
|
discovery?: {
|
|
104
|
-
type: "llama.cpp" | "lm-studio" | "ollama" | "openai-models-list";
|
|
105
|
+
type: "llama.cpp" | "lm-studio" | "models-dev" | "ollama" | "openai-models-list";
|
|
106
|
+
apiByModelPrefix?: Record<string, "anthropic-messages" | "openai-completions"> | undefined;
|
|
107
|
+
modelsDevProvider?: string | undefined;
|
|
105
108
|
} | undefined;
|
|
106
109
|
requestTransform?: {
|
|
107
110
|
profile?: "openai-proxy" | undefined;
|
|
@@ -138,6 +141,7 @@ export declare const ModelsConfigFile: ConfigFile<{
|
|
|
138
141
|
supportsStore?: boolean | undefined;
|
|
139
142
|
supportsDeveloperRole?: boolean | undefined;
|
|
140
143
|
sendSessionHeaders?: boolean | undefined;
|
|
144
|
+
supportsResponsesSessionAffinity?: boolean | undefined;
|
|
141
145
|
supportsMultipleSystemMessages?: boolean | undefined;
|
|
142
146
|
supportsReasoningEffort?: boolean | undefined;
|
|
143
147
|
reasoningEffortMap?: {
|
|
@@ -214,6 +218,7 @@ export declare const ModelsConfigFile: ConfigFile<{
|
|
|
214
218
|
supportsStore?: boolean | undefined;
|
|
215
219
|
supportsDeveloperRole?: boolean | undefined;
|
|
216
220
|
sendSessionHeaders?: boolean | undefined;
|
|
221
|
+
supportsResponsesSessionAffinity?: boolean | undefined;
|
|
217
222
|
supportsMultipleSystemMessages?: boolean | undefined;
|
|
218
223
|
supportsReasoningEffort?: boolean | undefined;
|
|
219
224
|
reasoningEffortMap?: {
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Model resolution, scoping, and initial selection
|
|
3
3
|
*/
|
|
4
4
|
import { ThinkingLevel } from "@gajae-code/agent-core";
|
|
5
|
-
import { type Api, type KnownProvider, type Model } from "@gajae-code/ai";
|
|
5
|
+
import { type Api, type KnownProvider, type Model } from "@gajae-code/ai/core";
|
|
6
6
|
import { type ModelRegistry, type ModelRole } from "./model-registry";
|
|
7
7
|
import { type ModelSelectorValue } from "./model-selector-value";
|
|
8
8
|
import type { Settings } from "./settings";
|
|
@@ -3,6 +3,7 @@ export declare const ModelCompatSchema: z.ZodObject<{
|
|
|
3
3
|
supportsStore: z.ZodOptional<z.ZodBoolean>;
|
|
4
4
|
supportsDeveloperRole: z.ZodOptional<z.ZodBoolean>;
|
|
5
5
|
sendSessionHeaders: z.ZodOptional<z.ZodBoolean>;
|
|
6
|
+
supportsResponsesSessionAffinity: z.ZodOptional<z.ZodBoolean>;
|
|
6
7
|
supportsMultipleSystemMessages: z.ZodOptional<z.ZodBoolean>;
|
|
7
8
|
supportsReasoningEffort: z.ZodOptional<z.ZodBoolean>;
|
|
8
9
|
reasoningEffortMap: z.ZodOptional<z.ZodObject<{
|
|
@@ -72,6 +73,7 @@ export declare const OpenAICompatSchema: z.ZodObject<{
|
|
|
72
73
|
supportsStore: z.ZodOptional<z.ZodBoolean>;
|
|
73
74
|
supportsDeveloperRole: z.ZodOptional<z.ZodBoolean>;
|
|
74
75
|
sendSessionHeaders: z.ZodOptional<z.ZodBoolean>;
|
|
76
|
+
supportsResponsesSessionAffinity: z.ZodOptional<z.ZodBoolean>;
|
|
75
77
|
supportsMultipleSystemMessages: z.ZodOptional<z.ZodBoolean>;
|
|
76
78
|
supportsReasoningEffort: z.ZodOptional<z.ZodBoolean>;
|
|
77
79
|
reasoningEffortMap: z.ZodOptional<z.ZodObject<{
|
|
@@ -255,6 +257,7 @@ export declare const ModelOverrideSchema: z.ZodObject<{
|
|
|
255
257
|
supportsStore: z.ZodOptional<z.ZodBoolean>;
|
|
256
258
|
supportsDeveloperRole: z.ZodOptional<z.ZodBoolean>;
|
|
257
259
|
sendSessionHeaders: z.ZodOptional<z.ZodBoolean>;
|
|
260
|
+
supportsResponsesSessionAffinity: z.ZodOptional<z.ZodBoolean>;
|
|
258
261
|
supportsMultipleSystemMessages: z.ZodOptional<z.ZodBoolean>;
|
|
259
262
|
supportsReasoningEffort: z.ZodOptional<z.ZodBoolean>;
|
|
260
263
|
reasoningEffortMap: z.ZodOptional<z.ZodObject<{
|
|
@@ -341,9 +344,15 @@ export declare const ProviderDiscoverySchema: z.ZodObject<{
|
|
|
341
344
|
type: z.ZodEnum<{
|
|
342
345
|
"llama.cpp": "llama.cpp";
|
|
343
346
|
"lm-studio": "lm-studio";
|
|
347
|
+
"models-dev": "models-dev";
|
|
344
348
|
ollama: "ollama";
|
|
345
349
|
"openai-models-list": "openai-models-list";
|
|
346
350
|
}>;
|
|
351
|
+
apiByModelPrefix: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodEnum<{
|
|
352
|
+
"anthropic-messages": "anthropic-messages";
|
|
353
|
+
"openai-completions": "openai-completions";
|
|
354
|
+
}>>>;
|
|
355
|
+
modelsDevProvider: z.ZodOptional<z.ZodString>;
|
|
347
356
|
}, z.core.$strip>;
|
|
348
357
|
export declare const ProviderAuthSchema: z.ZodEnum<{
|
|
349
358
|
apiKey: "apiKey";
|
|
@@ -375,6 +384,7 @@ export declare const ModelsConfigSchema: z.ZodObject<{
|
|
|
375
384
|
supportsStore: z.ZodOptional<z.ZodBoolean>;
|
|
376
385
|
supportsDeveloperRole: z.ZodOptional<z.ZodBoolean>;
|
|
377
386
|
sendSessionHeaders: z.ZodOptional<z.ZodBoolean>;
|
|
387
|
+
supportsResponsesSessionAffinity: z.ZodOptional<z.ZodBoolean>;
|
|
378
388
|
supportsMultipleSystemMessages: z.ZodOptional<z.ZodBoolean>;
|
|
379
389
|
supportsReasoningEffort: z.ZodOptional<z.ZodBoolean>;
|
|
380
390
|
reasoningEffortMap: z.ZodOptional<z.ZodObject<{
|
|
@@ -455,9 +465,15 @@ export declare const ModelsConfigSchema: z.ZodObject<{
|
|
|
455
465
|
type: z.ZodEnum<{
|
|
456
466
|
"llama.cpp": "llama.cpp";
|
|
457
467
|
"lm-studio": "lm-studio";
|
|
468
|
+
"models-dev": "models-dev";
|
|
458
469
|
ollama: "ollama";
|
|
459
470
|
"openai-models-list": "openai-models-list";
|
|
460
471
|
}>;
|
|
472
|
+
apiByModelPrefix: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodEnum<{
|
|
473
|
+
"anthropic-messages": "anthropic-messages";
|
|
474
|
+
"openai-completions": "openai-completions";
|
|
475
|
+
}>>>;
|
|
476
|
+
modelsDevProvider: z.ZodOptional<z.ZodString>;
|
|
461
477
|
}, z.core.$strip>>;
|
|
462
478
|
requestTransform: z.ZodOptional<z.ZodObject<{
|
|
463
479
|
profile: z.ZodOptional<z.ZodEnum<{
|
|
@@ -548,6 +564,7 @@ export declare const ModelsConfigSchema: z.ZodObject<{
|
|
|
548
564
|
supportsStore: z.ZodOptional<z.ZodBoolean>;
|
|
549
565
|
supportsDeveloperRole: z.ZodOptional<z.ZodBoolean>;
|
|
550
566
|
sendSessionHeaders: z.ZodOptional<z.ZodBoolean>;
|
|
567
|
+
supportsResponsesSessionAffinity: z.ZodOptional<z.ZodBoolean>;
|
|
551
568
|
supportsMultipleSystemMessages: z.ZodOptional<z.ZodBoolean>;
|
|
552
569
|
supportsReasoningEffort: z.ZodOptional<z.ZodBoolean>;
|
|
553
570
|
reasoningEffortMap: z.ZodOptional<z.ZodObject<{
|
|
@@ -695,6 +712,7 @@ export declare const ModelsConfigSchema: z.ZodObject<{
|
|
|
695
712
|
supportsStore: z.ZodOptional<z.ZodBoolean>;
|
|
696
713
|
supportsDeveloperRole: z.ZodOptional<z.ZodBoolean>;
|
|
697
714
|
sendSessionHeaders: z.ZodOptional<z.ZodBoolean>;
|
|
715
|
+
supportsResponsesSessionAffinity: z.ZodOptional<z.ZodBoolean>;
|
|
698
716
|
supportsMultipleSystemMessages: z.ZodOptional<z.ZodBoolean>;
|
|
699
717
|
supportsReasoningEffort: z.ZodOptional<z.ZodBoolean>;
|
|
700
718
|
reasoningEffortMap: z.ZodOptional<z.ZodObject<{
|