@gajae-code/coding-agent 0.11.11 → 0.12.1
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 +131 -4
- package/dist/types/async/job-manager.d.ts +17 -3
- package/dist/types/cli/read-cli.d.ts +1 -0
- package/dist/types/commands/deep-interview.d.ts +9 -0
- package/dist/types/commands/harness.d.ts +22 -0
- package/dist/types/commands/read.d.ts +6 -0
- package/dist/types/config/model-registry.d.ts +4 -0
- package/dist/types/config/provider-auth-health.d.ts +14 -0
- package/dist/types/config/provider-ranking.d.ts +59 -0
- package/dist/types/config/settings-schema.d.ts +83 -1
- package/dist/types/config/settings.d.ts +2 -0
- package/dist/types/exa/mcp-client.d.ts +10 -1
- package/dist/types/exec/bash-executor.d.ts +45 -12
- package/dist/types/extensibility/extensions/types.d.ts +38 -4
- package/dist/types/extensibility/gjc-plugins/index.d.ts +12 -2
- package/dist/types/extensibility/gjc-plugins/installer.d.ts +63 -7
- package/dist/types/extensibility/gjc-plugins/lifecycle-reconciliation.d.ts +55 -0
- package/dist/types/extensibility/gjc-plugins/lifecycle.d.ts +64 -0
- package/dist/types/extensibility/gjc-plugins/runtime-quarantine.d.ts +67 -0
- package/dist/types/extensibility/gjc-plugins/session-validation.d.ts +3 -1
- package/dist/types/extensibility/gjc-plugins/types.d.ts +124 -0
- package/dist/types/extensibility/shared-events.d.ts +6 -0
- package/dist/types/gjc-runtime/deep-interview-ambiguity.d.ts +5 -12
- package/dist/types/gjc-runtime/deep-interview-recorder.d.ts +17 -32
- package/dist/types/gjc-runtime/deep-interview-stage.d.ts +37 -0
- package/dist/types/gjc-runtime/deep-interview-state.d.ts +4 -135
- package/dist/types/gjc-runtime/gc-runtime.d.ts +1 -1
- package/dist/types/gjc-runtime/launch-tmux.d.ts +1 -0
- package/dist/types/gjc-runtime/memory-guard-owner-claims.d.ts +47 -0
- package/dist/types/gjc-runtime/ralplan-runtime.d.ts +70 -1
- package/dist/types/gjc-runtime/state-writer.d.ts +5 -46
- package/dist/types/gjc-runtime/team-launch.d.ts +1 -1
- package/dist/types/gjc-runtime/team-runtime.d.ts +27 -1
- package/dist/types/gjc-runtime/team-store.d.ts +12 -0
- package/dist/types/gjc-runtime/team-worker-heartbeat.d.ts +43 -0
- package/dist/types/gjc-runtime/team-worker-memory-guard.d.ts +92 -0
- package/dist/types/gjc-runtime/tmux-owner-isolation.d.ts +17 -0
- package/dist/types/gjc-runtime/ultragoal-receipt-freshness.d.ts +8 -0
- package/dist/types/gjc-runtime/ultragoal-runtime.d.ts +31 -80
- package/dist/types/gjc-runtime/workflow-manifest.d.ts +3 -5
- package/dist/types/internal-urls/local-root-gc.d.ts +2 -0
- package/dist/types/main.d.ts +1 -1
- package/dist/types/memories/index.d.ts +2 -0
- package/dist/types/modes/acp/acp-agent.d.ts +10 -19
- package/dist/types/modes/components/assistant-message.d.ts +3 -1
- package/dist/types/modes/components/gjc-bundle-settings.d.ts +34 -0
- package/dist/types/modes/components/irc-sidebar.d.ts +41 -0
- package/dist/types/modes/components/notifications-settings-editor.d.ts +1 -0
- package/dist/types/modes/components/read-tool-group.d.ts +4 -4
- package/dist/types/modes/components/session-observer-overlay.d.ts +22 -0
- package/dist/types/modes/components/settings-selector.d.ts +11 -0
- package/dist/types/modes/components/status-line/gh.d.ts +5 -0
- package/dist/types/modes/components/tool-execution.d.ts +8 -0
- package/dist/types/modes/components/transcript-viewer-overlay.d.ts +18 -1
- package/dist/types/modes/controllers/event-controller.d.ts +3 -0
- package/dist/types/modes/interactive-mode.d.ts +2 -0
- package/dist/types/modes/irc-observation-ledger.d.ts +17 -1
- package/dist/types/modes/types.d.ts +2 -0
- package/dist/types/modes/utils/ui-helpers.d.ts +16 -0
- package/dist/types/reminders/star-reminder.d.ts +3 -13
- package/dist/types/runtime-mcp/manager.d.ts +1 -0
- package/dist/types/runtime-mcp/smithery-auth.d.ts +5 -0
- package/dist/types/sdk/acp/adapter.d.ts +3 -1
- package/dist/types/sdk/broker/lifecycle.d.ts +5 -0
- package/dist/types/sdk/broker/transport.d.ts +2 -0
- package/dist/types/sdk/bus/attachment-registry.d.ts +1 -0
- package/dist/types/sdk/bus/chat-daemon-control.d.ts +4 -1
- package/dist/types/sdk/bus/config.d.ts +6 -2
- package/dist/types/sdk/bus/control-drain-lease.d.ts +52 -0
- package/dist/types/sdk/bus/index.d.ts +44 -1
- package/dist/types/sdk/bus/kind-aware-reconciliation.d.ts +44 -0
- package/dist/types/sdk/bus/lifecycle-control-runtime.d.ts +4 -0
- package/dist/types/sdk/bus/prompt-reconciliation.d.ts +2 -1
- package/dist/types/sdk/bus/reconciliation-store.d.ts +69 -0
- package/dist/types/sdk/bus/rich-draft.d.ts +1 -0
- package/dist/types/sdk/bus/rich-render.d.ts +2 -0
- package/dist/types/sdk/bus/telegram-adoption-intent.d.ts +165 -0
- package/dist/types/sdk/bus/telegram-cli.d.ts +12 -0
- package/dist/types/sdk/bus/telegram-daemon-contract.d.ts +11 -4
- package/dist/types/sdk/bus/telegram-daemon.d.ts +25 -1
- package/dist/types/sdk/bus/telegram-reference.d.ts +11 -1
- package/dist/types/sdk/bus/threaded-render.d.ts +3 -2
- package/dist/types/sdk/bus/topic-registry.d.ts +11 -1
- package/dist/types/sdk/host/control/operations.d.ts +1 -1
- package/dist/types/sdk/host/host.d.ts +2 -0
- package/dist/types/sdk/host/query/handlers.d.ts +5 -0
- package/dist/types/sdk/host/query/revision-store.d.ts +2 -0
- package/dist/types/sdk/host/reverse-leases.d.ts +1 -1
- package/dist/types/sdk/prompt-status.d.ts +23 -3
- package/dist/types/sdk/session.d.ts +6 -0
- package/dist/types/session/agent-session.d.ts +82 -12
- package/dist/types/session/artifacts.d.ts +8 -0
- package/dist/types/session/blob-store.d.ts +57 -4
- package/dist/types/session/internal/managed-session-storage.d.ts +8 -1
- package/dist/types/session/memory-guard-checkpoint-participant.d.ts +69 -0
- package/dist/types/session/session-manager.d.ts +48 -19
- package/dist/types/session/session-storage.d.ts +4 -0
- package/dist/types/session/streaming-output.d.ts +96 -12
- package/dist/types/setup/credential-import.d.ts +12 -0
- package/dist/types/skill-state/active-state.d.ts +12 -4
- package/dist/types/skill-state/workflow-hud.d.ts +9 -0
- package/dist/types/task/executor.d.ts +3 -2
- package/dist/types/task/index.d.ts +3 -1
- package/dist/types/task/provider-retry-status.d.ts +8 -0
- package/dist/types/task/receipt.d.ts +7 -1
- package/dist/types/task/types.d.ts +23 -0
- package/dist/types/tools/ask-answer-registry.d.ts +2 -2
- package/dist/types/tools/bash-interactive.d.ts +4 -1
- package/dist/types/tools/bash.d.ts +3 -1
- package/dist/types/tools/browser/launch.d.ts +7 -0
- package/dist/types/tools/fetch.d.ts +17 -1
- package/dist/types/tools/image-gen.d.ts +4 -0
- package/dist/types/tools/index.d.ts +4 -0
- package/dist/types/tools/output-meta.d.ts +44 -3
- package/dist/types/tools/path-utils.d.ts +1 -0
- package/dist/types/tools/read-internals.d.ts +12 -0
- package/dist/types/tools/read.d.ts +45 -7
- package/dist/types/tools/resource-gc.d.ts +4 -0
- package/dist/types/tools/review.d.ts +5 -7
- package/dist/types/tools/subagent.d.ts +2 -0
- package/dist/types/tools/tool-result.d.ts +7 -1
- package/dist/types/utils/gh.d.ts +13 -0
- package/dist/types/utils/image-resize.d.ts +1 -0
- package/dist/types/web/search/providers/kimi.d.ts +2 -0
- package/dist/types/web/search/providers/searxng.d.ts +7 -0
- package/dist/types/web/search/providers/xai.d.ts +2 -0
- package/package.json +11 -13
- package/scripts/acp-conformance-agent.ts +218 -0
- package/scripts/benchmark-sticky-viewport-pr1.ts +239 -0
- package/scripts/capture-gjc-bundle-settings.ts +306 -0
- package/scripts/capture-sticky-viewport-showcase.ts +292 -0
- package/scripts/generate-sdk-operation-inventory.ts +5 -0
- package/scripts/resident-memory-bench.ts +1341 -0
- package/scripts/run-acp-conformance.ts +285 -0
- package/scripts/verify-gjc-sdk-canonicalization.ts +122 -18
- package/scripts/verify-sticky-viewport-showcase.ts +611 -0
- package/src/async/job-manager.ts +78 -20
- package/src/capability/index.ts +8 -0
- package/src/cli/fast-help.ts +1 -1
- package/src/cli/plugin-cli.ts +176 -18
- package/src/cli/read-cli.ts +2 -1
- package/src/cli.ts +1 -0
- package/src/commands/deep-interview.ts +29 -9
- package/src/commands/harness.ts +35 -12
- package/src/commands/read.ts +11 -2
- package/src/commands/team.ts +20 -2
- package/src/config/file-lock.ts +11 -2
- package/src/config/model-registry.ts +21 -2
- package/src/config/provider-auth-health.ts +42 -0
- package/src/config/provider-ranking.ts +119 -0
- package/src/config/settings-schema.ts +74 -1
- package/src/config/settings.ts +246 -108
- package/src/coordinator-mcp/question-gate-codec.ts +1 -1
- package/src/coordinator-mcp/server.ts +5 -12
- package/src/defaults/gjc/skills/deep-interview/SKILL.md +230 -82
- package/src/defaults/gjc/skills/ralplan/SKILL.md +77 -41
- package/src/defaults/gjc/skills/team/SKILL.md +3 -1
- package/src/defaults/gjc/skills/ultragoal/SKILL.md +62 -39
- package/src/defaults/gjc/skills/ultragoal/validation-batch-contracts.md +12 -0
- package/src/defaults/gjc-defaults.ts +4 -4
- package/src/eval/py/executor.ts +7 -2
- package/src/exa/mcp-client.ts +12 -3
- package/src/exec/bash-executor.ts +144 -27
- package/src/extensibility/extensions/runner.ts +15 -0
- package/src/extensibility/extensions/types.ts +46 -5
- package/src/extensibility/gjc-plugins/constrained-hooks.ts +8 -2
- package/src/extensibility/gjc-plugins/index.ts +19 -2
- package/src/extensibility/gjc-plugins/installer.ts +189 -50
- package/src/extensibility/gjc-plugins/lifecycle-reconciliation.ts +199 -0
- package/src/extensibility/gjc-plugins/lifecycle.ts +626 -0
- package/src/extensibility/gjc-plugins/observability.ts +3 -3
- package/src/extensibility/gjc-plugins/prompt-appendix.ts +5 -1
- package/src/extensibility/gjc-plugins/runtime-adapters.ts +12 -2
- package/src/extensibility/gjc-plugins/runtime-quarantine.ts +121 -0
- package/src/extensibility/gjc-plugins/schema.ts +84 -12
- package/src/extensibility/gjc-plugins/session-validation.ts +9 -3
- package/src/extensibility/gjc-plugins/types.ts +141 -0
- package/src/extensibility/gjc-plugins/validation.ts +9 -0
- package/src/extensibility/shared-events.ts +5 -0
- package/src/gjc-runtime/deep-interview-ambiguity.ts +47 -82
- package/src/gjc-runtime/deep-interview-recorder.ts +227 -310
- package/src/gjc-runtime/deep-interview-runtime.ts +109 -270
- package/src/gjc-runtime/deep-interview-stage.ts +1016 -0
- package/src/gjc-runtime/deep-interview-state.ts +12 -943
- package/src/gjc-runtime/gc-render.ts +1 -0
- package/src/gjc-runtime/gc-runtime.ts +11 -1
- package/src/gjc-runtime/launch-tmux.ts +25 -6
- package/src/gjc-runtime/managed-owner-admission.ts +1 -1
- package/src/gjc-runtime/memory-guard-owner-claims.ts +389 -0
- package/src/gjc-runtime/ralplan-runtime.ts +1149 -98
- package/src/gjc-runtime/state-runtime.ts +2 -1
- package/src/gjc-runtime/state-writer.ts +70 -222
- package/src/gjc-runtime/team-launch.ts +42 -5
- package/src/gjc-runtime/team-runtime.ts +1085 -40
- package/src/gjc-runtime/team-store.ts +32 -0
- package/src/gjc-runtime/team-worker-heartbeat.ts +149 -0
- package/src/gjc-runtime/team-worker-memory-guard.ts +363 -0
- package/src/gjc-runtime/team-workers.ts +1 -0
- package/src/gjc-runtime/tmux-owner-isolation.ts +28 -0
- package/src/gjc-runtime/tmux-sessions.ts +58 -13
- package/src/gjc-runtime/ultragoal-receipt-freshness.ts +20 -0
- package/src/gjc-runtime/ultragoal-runtime.ts +414 -618
- package/src/gjc-runtime/workflow-manifest.generated.json +105 -449
- package/src/gjc-runtime/workflow-manifest.ts +38 -247
- package/src/hooks/native-skill-hook.ts +17 -4
- package/src/hooks/skill-state.ts +1 -23
- package/src/internal-urls/docs-index.generated.ts +21 -22
- package/src/internal-urls/local-root-gc.ts +127 -0
- package/src/main.ts +9 -5
- package/src/memories/index.ts +10 -0
- package/src/modes/DESIGN.md +98 -0
- package/src/modes/acp/acp-agent.ts +339 -191
- package/src/modes/acp/acp-event-mapper.ts +14 -7
- package/src/modes/acp/acp-mode.ts +39 -3
- package/src/modes/components/assistant-message.ts +123 -22
- package/src/modes/components/gjc-bundle-settings.ts +508 -0
- package/src/modes/components/irc-sidebar.ts +176 -62
- package/src/modes/components/model-selector.ts +61 -4
- package/src/modes/components/notifications-settings-editor.ts +12 -1
- package/src/modes/components/oauth-selector.ts +96 -28
- package/src/modes/components/read-tool-group.ts +82 -14
- package/src/modes/components/session-observer-overlay.ts +457 -83
- package/src/modes/components/settings-selector.ts +116 -23
- package/src/modes/components/status-line/gh.ts +16 -0
- package/src/modes/components/tool-execution.ts +138 -27
- package/src/modes/components/tool-status-header.ts +3 -14
- package/src/modes/components/transcript-viewer-overlay.ts +99 -24
- package/src/modes/controllers/command-controller.ts +4 -0
- package/src/modes/controllers/event-controller.ts +109 -27
- package/src/modes/controllers/extension-ui-controller.ts +26 -2
- package/src/modes/controllers/input-controller.ts +18 -3
- package/src/modes/controllers/selector-controller.ts +127 -36
- package/src/modes/interactive-mode.ts +62 -3
- package/src/modes/irc-observation-ledger.ts +71 -15
- package/src/modes/runtime-init.ts +22 -2
- package/src/modes/types.ts +2 -0
- package/src/modes/utils/ui-helpers.ts +94 -1
- package/src/prompts/agent-fragments/ralplan-persistence.md +4 -3
- package/src/prompts/agents/architect.md +9 -1
- package/src/prompts/agents/critic.md +9 -0
- package/src/prompts/system/eager-todo.md +8 -4
- package/src/prompts/system/system-prompt.md +11 -5
- package/src/prompts/tools/bash.md +5 -5
- package/src/prompts/tools/read.md +4 -2
- package/src/prompts/tools/search-tool-bm25.md +5 -0
- package/src/prompts/tools/task.md +1 -1
- package/src/reminders/star-reminder.ts +4 -42
- package/src/runtime-mcp/manager.ts +19 -4
- package/src/runtime-mcp/smithery-auth.ts +17 -2
- package/src/runtime-mcp/smithery-connect.ts +11 -1
- package/src/sdk/acp/adapter.ts +22 -6
- package/src/sdk/broker/lifecycle.ts +25 -6
- package/src/sdk/broker/transport.ts +35 -3
- package/src/sdk/bus/attachment-registry.ts +5 -1
- package/src/sdk/bus/chat-daemon-cli.ts +4 -39
- package/src/sdk/bus/chat-daemon-control.ts +6 -3
- package/src/sdk/bus/config.ts +18 -2
- package/src/sdk/bus/control-drain-lease.ts +104 -0
- package/src/sdk/bus/index.ts +984 -146
- package/src/sdk/bus/kind-aware-reconciliation.ts +317 -0
- package/src/sdk/bus/lifecycle-commands.ts +4 -1
- package/src/sdk/bus/lifecycle-control-runtime.ts +403 -88
- package/src/sdk/bus/prompt-reconciliation.ts +2 -1
- package/src/sdk/bus/reconciliation-store.ts +303 -0
- package/src/sdk/bus/rich-draft.ts +1 -1
- package/src/sdk/bus/rich-render.ts +2 -2
- package/src/sdk/bus/telegram-adoption-intent.ts +574 -0
- package/src/sdk/bus/telegram-cli.ts +33 -8
- package/src/sdk/bus/telegram-daemon-cli.ts +1 -0
- package/src/sdk/bus/telegram-daemon-contract.ts +11 -4
- package/src/sdk/bus/telegram-daemon.ts +916 -23
- package/src/sdk/bus/telegram-reference.ts +40 -3
- package/src/sdk/bus/threaded-render.ts +48 -3
- package/src/sdk/bus/topic-registry.ts +20 -0
- package/src/sdk/host/control/dispatch.ts +5 -1
- package/src/sdk/host/control/operations.ts +1 -1
- package/src/sdk/host/host.ts +23 -1
- package/src/sdk/host/query/handlers.ts +55 -0
- package/src/sdk/host/query/revision-store.ts +36 -2
- package/src/sdk/host/reverse-leases.ts +44 -7
- package/src/sdk/mcp/server.ts +46 -18
- package/src/sdk/prompt-status.ts +16 -3
- package/src/sdk/protocol/operation-inventory.generated.json +51 -0
- package/src/sdk/protocol/operation-registry.ts +7 -2
- package/src/sdk/session.ts +101 -10
- package/src/session/agent-session.ts +1286 -220
- package/src/session/artifacts.ts +22 -0
- package/src/session/auth-broker-config.ts +10 -3
- package/src/session/blob-store.ts +915 -24
- package/src/session/internal/managed-session-scope.ts +44 -6
- package/src/session/internal/managed-session-storage.ts +48 -6
- package/src/session/memory-guard-checkpoint-participant.ts +131 -0
- package/src/session/session-manager.ts +2364 -438
- package/src/session/session-storage.ts +9 -1
- package/src/session/streaming-output.ts +500 -111
- package/src/setup/credential-import.ts +75 -13
- package/src/setup/provider-onboarding.ts +19 -4
- package/src/skill-state/active-state.ts +32 -10
- package/src/skill-state/workflow-hud.ts +42 -2
- package/src/skill-state/workflow-mutation-guard.ts +560 -8
- package/src/task/executor.ts +122 -39
- package/src/task/index.ts +23 -14
- package/src/task/provider-retry-status.ts +16 -0
- package/src/task/receipt.ts +23 -7
- package/src/task/render.ts +6 -2
- package/src/task/types.ts +108 -0
- package/src/tools/ask-answer-registry.ts +12 -6
- package/src/tools/ask.ts +169 -118
- package/src/tools/ast-edit.ts +1 -0
- package/src/tools/ast-grep.ts +1 -0
- package/src/tools/bash-interactive.ts +8 -3
- package/src/tools/bash.ts +503 -60
- package/src/tools/browser/launch.ts +41 -6
- package/src/tools/fetch.ts +114 -23
- package/src/tools/find.ts +1 -0
- package/src/tools/image-gen.ts +29 -5
- package/src/tools/index.ts +4 -0
- package/src/tools/output-meta.ts +281 -20
- package/src/tools/path-utils.ts +8 -3
- package/src/tools/read-internals.ts +44 -0
- package/src/tools/read.ts +1560 -310
- package/src/tools/resource-gc.ts +182 -18
- package/src/tools/review.ts +5 -7
- package/src/tools/search.ts +1 -0
- package/src/tools/subagent-render.ts +6 -2
- package/src/tools/subagent.ts +6 -0
- package/src/tools/telegram-send.ts +6 -3
- package/src/tools/tool-result.ts +14 -1
- package/src/utils/gh.ts +39 -0
- package/src/utils/image-resize.ts +3 -0
- package/src/web/search/providers/anthropic.ts +4 -4
- package/src/web/search/providers/codex.ts +1 -1
- package/src/web/search/providers/kimi.ts +15 -5
- package/src/web/search/providers/searxng.ts +47 -4
- package/src/web/search/providers/xai.ts +7 -2
- package/dist/types/gjc-runtime/deep-interview-draft.d.ts +0 -8
- package/dist/types/gjc-runtime/deep-interview-payload.d.ts +0 -41
- package/dist/types/gjc-runtime/deep-interview-repair.d.ts +0 -17
- package/dist/types/gjc-runtime/ultragoal-pipeline.d.ts +0 -23
- package/src/defaults/gjc/skills/ultragoal/pipeline-validation-contracts.md +0 -30
- package/src/gjc-runtime/deep-interview-draft.ts +0 -843
- package/src/gjc-runtime/deep-interview-payload.ts +0 -262
- package/src/gjc-runtime/deep-interview-repair.ts +0 -1674
- package/src/gjc-runtime/ultragoal-pipeline.ts +0 -306
package/src/sdk/prompt-status.ts
CHANGED
|
@@ -17,8 +17,10 @@
|
|
|
17
17
|
* prior outcome unknown — callers MUST NOT reuse a clientRef as a retry
|
|
18
18
|
* mechanism and MUST treat `unknown` as uncertainty, not proof of
|
|
19
19
|
* non-execution.
|
|
20
|
-
* -
|
|
21
|
-
*
|
|
20
|
+
* - Prompt records survive process restart: an active prompt is finalized from its
|
|
21
|
+
* durable pending outcome, or as `prompt_failed` when it has none. Only skill
|
|
22
|
+
* records settle as `process_restart`, and a lookup reports `unknown` only after
|
|
23
|
+
* retained-record TTL/capacity eviction.
|
|
22
24
|
* - Q26 tracks prompts accepted through the SDK control surface (which always
|
|
23
25
|
* carries a requesting connection); submissions without a delivery owner are
|
|
24
26
|
* outside the reconciliation contract and hold no reservation.
|
|
@@ -38,8 +40,17 @@ export interface TurnPromptInput {
|
|
|
38
40
|
clientRef?: string;
|
|
39
41
|
}
|
|
40
42
|
|
|
41
|
-
/**
|
|
43
|
+
/**
|
|
44
|
+
* Terminal outcome is preserved exactly; active records never age into terminal. A
|
|
45
|
+
* prompt that is active at process restart is finalized from its durable pending
|
|
46
|
+
* outcome (or `prompt_failed` when it has none), so it never reports as unknown.
|
|
47
|
+
*/
|
|
42
48
|
export type PromptReconciliationStatus = "accepted" | "in_flight" | "terminal_ok" | "failed";
|
|
49
|
+
export type SdkPromptStopReason = "end_turn" | "max_tokens" | "max_turn_requests" | "refusal" | "cancelled";
|
|
50
|
+
export type SdkPromptFailureCode = "prompt_failed" | "prompt_deadline_exceeded";
|
|
51
|
+
export type SdkPromptTerminalOutcome =
|
|
52
|
+
| { kind: "stopped"; reason: SdkPromptStopReason; provenance: "agent" | "client_cancel" }
|
|
53
|
+
| { kind: "failed"; code: SdkPromptFailureCode; message: string; provenance: "agent_failed" | "deadline" };
|
|
43
54
|
|
|
44
55
|
/** Exactly one selector per lookup. */
|
|
45
56
|
export type TurnPromptStatusSelector = { clientRef: string } | { commandId: string; turnId: string };
|
|
@@ -67,6 +78,7 @@ export interface TurnPromptReconciliationTerminalOk extends TurnPromptReconcilia
|
|
|
67
78
|
startedAt?: number;
|
|
68
79
|
/** Epoch milliseconds of the terminal transition. */
|
|
69
80
|
terminalAt: number;
|
|
81
|
+
outcome?: SdkPromptTerminalOutcome;
|
|
70
82
|
}
|
|
71
83
|
|
|
72
84
|
export interface TurnPromptReconciliationFailed extends TurnPromptReconciliationIdentity {
|
|
@@ -75,6 +87,7 @@ export interface TurnPromptReconciliationFailed extends TurnPromptReconciliation
|
|
|
75
87
|
terminalAt: number;
|
|
76
88
|
/** Bounded, sanitized failure detail (code safe-token ≤64, message ≤512). */
|
|
77
89
|
error: { code: string; message: string };
|
|
90
|
+
outcome?: SdkPromptTerminalOutcome;
|
|
78
91
|
}
|
|
79
92
|
|
|
80
93
|
export interface TurnPromptReconciliationUnknown {
|
|
@@ -1565,6 +1565,24 @@
|
|
|
1565
1565
|
"packages/coding-agent/test/sdk-operation-inventory.test.ts"
|
|
1566
1566
|
]
|
|
1567
1567
|
},
|
|
1568
|
+
{
|
|
1569
|
+
"sourceId": "registry:Q28",
|
|
1570
|
+
"sourceFile": "packages/coding-agent/src/sdk/protocol/operation-registry.ts",
|
|
1571
|
+
"sourceKind": "registry",
|
|
1572
|
+
"decision": "include",
|
|
1573
|
+
"sdkId": "skill.invoke_status",
|
|
1574
|
+
"adapterMappings": {
|
|
1575
|
+
"telegram": "prohibited",
|
|
1576
|
+
"discord": "prohibited",
|
|
1577
|
+
"slack": "prohibited",
|
|
1578
|
+
"mcp": "generic_safe",
|
|
1579
|
+
"acp": "generic_safe",
|
|
1580
|
+
"daemonCli": "generic_safe"
|
|
1581
|
+
},
|
|
1582
|
+
"testIds": [
|
|
1583
|
+
"packages/coding-agent/test/sdk-operation-inventory.test.ts"
|
|
1584
|
+
]
|
|
1585
|
+
},
|
|
1568
1586
|
{
|
|
1569
1587
|
"sourceId": "registry:R01",
|
|
1570
1588
|
"sourceFile": "packages/coding-agent/src/sdk/protocol/operation-registry.ts",
|
|
@@ -2903,6 +2921,17 @@
|
|
|
2903
2921
|
"testIds": "not_applicable"
|
|
2904
2922
|
}
|
|
2905
2923
|
},
|
|
2924
|
+
{
|
|
2925
|
+
"sourceId": "agent_session:restoreFromMemoryGuardCheckpoint",
|
|
2926
|
+
"sourceFile": "packages/coding-agent/src/session/agent-session.ts",
|
|
2927
|
+
"sourceKind": "agent_session",
|
|
2928
|
+
"decision": "exclude",
|
|
2929
|
+
"rationale": "internal owner-recovery staged restore builder after durable claims/fencing, never a user-facing SDK operation",
|
|
2930
|
+
"exclusionMetadata": {
|
|
2931
|
+
"adapterMappings": "not_applicable",
|
|
2932
|
+
"testIds": "not_applicable"
|
|
2933
|
+
}
|
|
2934
|
+
},
|
|
2906
2935
|
{
|
|
2907
2936
|
"sourceId": "agent_session:promoteRecoveryHydrationAfterOwnershipReadyFence",
|
|
2908
2937
|
"sourceFile": "packages/coding-agent/src/session/agent-session.ts",
|
|
@@ -3627,6 +3656,17 @@
|
|
|
3627
3656
|
"packages/coding-agent/test/sdk-operation-inventory.test.ts"
|
|
3628
3657
|
]
|
|
3629
3658
|
},
|
|
3659
|
+
{
|
|
3660
|
+
"sourceId": "agent_session:abortPromptAndWait",
|
|
3661
|
+
"sourceFile": "packages/coding-agent/src/session/agent-session.ts",
|
|
3662
|
+
"sourceKind": "agent_session",
|
|
3663
|
+
"decision": "exclude",
|
|
3664
|
+
"rationale": "internal SDK prompt-terminalization resource fence over a host-captured run handle, not an independent public SDK control seam",
|
|
3665
|
+
"exclusionMetadata": {
|
|
3666
|
+
"adapterMappings": "not_applicable",
|
|
3667
|
+
"testIds": "not_applicable"
|
|
3668
|
+
}
|
|
3669
|
+
},
|
|
3630
3670
|
{
|
|
3631
3671
|
"sourceId": "agent_session:cancelAndSubmit",
|
|
3632
3672
|
"sourceFile": "packages/coding-agent/src/session/agent-session.ts",
|
|
@@ -3823,6 +3863,17 @@
|
|
|
3823
3863
|
"testIds": "not_applicable"
|
|
3824
3864
|
}
|
|
3825
3865
|
},
|
|
3866
|
+
{
|
|
3867
|
+
"sourceId": "agent_session:resolveConfiguredDefaultModel",
|
|
3868
|
+
"sourceFile": "packages/coding-agent/src/session/agent-session.ts",
|
|
3869
|
+
"sourceKind": "agent_session",
|
|
3870
|
+
"decision": "exclude",
|
|
3871
|
+
"rationale": "internal accessor/plumbing, not a user-facing control seam",
|
|
3872
|
+
"exclusionMetadata": {
|
|
3873
|
+
"adapterMappings": "not_applicable",
|
|
3874
|
+
"testIds": "not_applicable"
|
|
3875
|
+
}
|
|
3876
|
+
},
|
|
3826
3877
|
{
|
|
3827
3878
|
"sourceId": "agent_session:recordResumeDefaultModel",
|
|
3828
3879
|
"sourceFile": "packages/coding-agent/src/session/agent-session.ts",
|
|
@@ -160,6 +160,10 @@ const queries = [
|
|
|
160
160
|
"Read the authoritative reconciliation status of a submitted prompt by command/turn IDs or clientRef.",
|
|
161
161
|
],
|
|
162
162
|
["models.profiles.list", "List the effective built-in and configured model profiles for this session."],
|
|
163
|
+
[
|
|
164
|
+
"skill.invoke_status",
|
|
165
|
+
"Read the authoritative reconciliation status of a skill.invoke by command/turn IDs or clientRef.",
|
|
166
|
+
],
|
|
163
167
|
] as const;
|
|
164
168
|
|
|
165
169
|
const reverse = [
|
|
@@ -197,7 +201,8 @@ function controlDisposition(id: string): Record<Adapter, AdapterDisposition> {
|
|
|
197
201
|
|
|
198
202
|
function controlErrors(id: string): string[] {
|
|
199
203
|
const errors: Record<string, string[]> = {
|
|
200
|
-
C01: ["client_ref_conflict", "reconciliation_capacity"],
|
|
204
|
+
C01: ["client_ref_conflict", "reconciliation_capacity", "reconciliation_persist_failed"],
|
|
205
|
+
C09: ["client_ref_conflict", "reconciliation_capacity", "reconciliation_persist_failed"],
|
|
201
206
|
C06: ["action_claimed"],
|
|
202
207
|
C07: ["action_claimed", "terminal_uncertain"],
|
|
203
208
|
C08: ["action_claimed", "terminal_uncertain"],
|
|
@@ -238,7 +243,7 @@ function queryContinuityClass(id: string): QueryContinuityClass {
|
|
|
238
243
|
}
|
|
239
244
|
|
|
240
245
|
function queryDisposition(id: string): Record<Adapter, AdapterDisposition> {
|
|
241
|
-
if (["Q23", "Q24", "Q25", "Q26", "Q27"].includes(id))
|
|
246
|
+
if (["Q23", "Q24", "Q25", "Q26", "Q27", "Q28"].includes(id))
|
|
242
247
|
return dispositions({ telegram: "prohibited", discord: "prohibited", slack: "prohibited" });
|
|
243
248
|
return dispositions();
|
|
244
249
|
}
|
package/src/sdk/session.ts
CHANGED
|
@@ -21,6 +21,7 @@ import {
|
|
|
21
21
|
type ToolResultMessage,
|
|
22
22
|
} from "@gajae-code/ai";
|
|
23
23
|
import {
|
|
24
|
+
codexToolWireName,
|
|
24
25
|
getOpenAICodexTransportDetails,
|
|
25
26
|
prewarmOpenAICodexResponses,
|
|
26
27
|
} from "@gajae-code/ai/providers/openai-codex-responses";
|
|
@@ -81,11 +82,18 @@ import {
|
|
|
81
82
|
import { ExtensionRuntime } from "../extensibility/extensions/loader";
|
|
82
83
|
import { type ConstrainedPluginHook, loadConstrainedPluginHooks } from "../extensibility/gjc-plugins/constrained-hooks";
|
|
83
84
|
import { resolveCurrentPhaseForParent } from "../extensibility/gjc-plugins/injection";
|
|
85
|
+
import { currentActivationFingerprint } from "../extensibility/gjc-plugins/lifecycle";
|
|
84
86
|
import {
|
|
85
87
|
buildPluginMcpConfigs,
|
|
86
88
|
loadAlwaysOnPluginTools,
|
|
87
89
|
renderAlwaysOnSystemAppendices,
|
|
88
90
|
} from "../extensibility/gjc-plugins/runtime-adapters";
|
|
91
|
+
import {
|
|
92
|
+
GjcRuntimeFindingAccumulator,
|
|
93
|
+
type GjcRuntimeSnapshotProvider,
|
|
94
|
+
GjcRuntimeSnapshotStore,
|
|
95
|
+
gjcActivationGenerationFor,
|
|
96
|
+
} from "../extensibility/gjc-plugins/runtime-quarantine";
|
|
89
97
|
import { loadActiveSubskillTools } from "../extensibility/gjc-plugins/tools";
|
|
90
98
|
import { loadSkills, type Skill, type SkillWarning, setActiveSkills } from "../extensibility/skills";
|
|
91
99
|
import type { FileSlashCommand } from "../extensibility/slash-commands";
|
|
@@ -493,6 +501,11 @@ export interface CreateAgentSessionResult {
|
|
|
493
501
|
lspServers?: LspStartupServerInfo[];
|
|
494
502
|
/** Shared event bus for tool/extension communication */
|
|
495
503
|
eventBus: EventBus;
|
|
504
|
+
/**
|
|
505
|
+
* Read-only view of GJC bundle runtime evidence for the activation generation
|
|
506
|
+
* this session published. Undefined when no GJC bundles participated.
|
|
507
|
+
*/
|
|
508
|
+
gjcRuntimeSnapshot?: GjcRuntimeSnapshotProvider;
|
|
496
509
|
}
|
|
497
510
|
|
|
498
511
|
// Re-exports
|
|
@@ -1069,6 +1082,7 @@ export async function createAgentSession(options: CreateAgentSessionOptions = {}
|
|
|
1069
1082
|
"options.authStorage and options.modelRegistry.authStorage must be the same instance when both are provided",
|
|
1070
1083
|
);
|
|
1071
1084
|
}
|
|
1085
|
+
|
|
1072
1086
|
let agent: Agent;
|
|
1073
1087
|
let session!: AgentSession;
|
|
1074
1088
|
let hasSession = false;
|
|
@@ -1280,13 +1294,16 @@ export async function createAgentSession(options: CreateAgentSessionOptions = {}
|
|
|
1280
1294
|
);
|
|
1281
1295
|
let model = options.model;
|
|
1282
1296
|
let modelFallbackMessage: string | undefined;
|
|
1297
|
+
const resumeModelBehavior = settings.get("session.resumeModelBehavior");
|
|
1283
1298
|
const persistedDefaultChain = existingSession.configuredModelChains.default?.entries;
|
|
1284
1299
|
const defaultModelEntries =
|
|
1285
|
-
|
|
1286
|
-
?
|
|
1287
|
-
:
|
|
1288
|
-
?
|
|
1289
|
-
:
|
|
1300
|
+
resumeModelBehavior === "useCurrentDefault"
|
|
1301
|
+
? []
|
|
1302
|
+
: persistedDefaultChain && persistedDefaultChain.length > 0
|
|
1303
|
+
? persistedDefaultChain
|
|
1304
|
+
: existingSession.models.default
|
|
1305
|
+
? [existingSession.models.default]
|
|
1306
|
+
: [];
|
|
1290
1307
|
// If session has data, restore its configured default chain rather than the
|
|
1291
1308
|
// scalar runtime model, which may be a stale fallback from the prior run.
|
|
1292
1309
|
if (!hasExplicitModel && !model && hasExistingSession && defaultModelEntries.length > 0) {
|
|
@@ -1615,10 +1632,11 @@ export async function createAgentSession(options: CreateAgentSessionOptions = {}
|
|
|
1615
1632
|
|
|
1616
1633
|
// Wire process-wide internal URL singletons owned by their real classes.
|
|
1617
1634
|
// Top-level sessions install the active snapshots; subagents inherit them.
|
|
1618
|
-
// Artifact and agent-output URLs resolve
|
|
1619
|
-
//
|
|
1620
|
-
//
|
|
1621
|
-
//
|
|
1635
|
+
// Artifact and agent-output URLs resolve against explicitly authorized
|
|
1636
|
+
// directories only (see `authorizedArtifactsDirsFromContext`): the
|
|
1637
|
+
// caller's own `sessionManager.getArtifactsDir()` plus, when this session
|
|
1638
|
+
// adopted a shared `ArtifactManager` (subagent tree membership),
|
|
1639
|
+
// `getAuthorizedArtifactsDirs` below. There is no registry-wide lookup.
|
|
1622
1640
|
const getArtifactsDir = () => sessionManager.getArtifactsDir();
|
|
1623
1641
|
const localProtocolOptions = options.localProtocolOptions ?? {
|
|
1624
1642
|
getArtifactsDir,
|
|
@@ -1636,6 +1654,10 @@ export async function createAgentSession(options: CreateAgentSessionOptions = {}
|
|
|
1636
1654
|
disposeLocalProtocolOverride = LocalProtocolHandler.installOverride(options.localProtocolOptions);
|
|
1637
1655
|
}
|
|
1638
1656
|
toolSession.getArtifactsDir = getArtifactsDir;
|
|
1657
|
+
toolSession.getAuthorizedArtifactsDirs = () => {
|
|
1658
|
+
const manager = sessionManager.getArtifactManager();
|
|
1659
|
+
return manager ? [manager.dir] : [];
|
|
1660
|
+
};
|
|
1639
1661
|
toolSession.agentOutputManager = new AgentOutputManager(
|
|
1640
1662
|
getArtifactsDir,
|
|
1641
1663
|
options.parentTaskPrefix ? { parentPrefix: options.parentTaskPrefix } : undefined,
|
|
@@ -1708,6 +1730,23 @@ export async function createAgentSession(options: CreateAgentSessionOptions = {}
|
|
|
1708
1730
|
}
|
|
1709
1731
|
}
|
|
1710
1732
|
|
|
1733
|
+
// GJC bundle runtime evidence for this activation. Producers below return
|
|
1734
|
+
// findings into this caller-owned accumulator and never publish; exactly one
|
|
1735
|
+
// complete snapshot is published once every producer has run.
|
|
1736
|
+
const gjcRuntimeStore = new GjcRuntimeSnapshotStore();
|
|
1737
|
+
let gjcProducersComplete = true;
|
|
1738
|
+
let gjcActivationGeneration = 0;
|
|
1739
|
+
try {
|
|
1740
|
+
gjcActivationGeneration = gjcActivationGenerationFor(await currentActivationFingerprint({ cwd }));
|
|
1741
|
+
} catch (error) {
|
|
1742
|
+
// Without a readable activation generation no snapshot can be proven
|
|
1743
|
+
// current, so publish nothing rather than a snapshot consumers cannot
|
|
1744
|
+
// validate against.
|
|
1745
|
+
gjcProducersComplete = false;
|
|
1746
|
+
logger.warn("Failed to derive GJC bundle activation generation", { error });
|
|
1747
|
+
}
|
|
1748
|
+
const gjcFindings = new GjcRuntimeFindingAccumulator(gjcActivationGeneration);
|
|
1749
|
+
|
|
1711
1750
|
// Always-on GJC plugin bundle tools (validated registry surfaces). This is
|
|
1712
1751
|
// additive and a no-op when no plugins are installed for the cwd. Surfaces
|
|
1713
1752
|
// are hash-verified and collision-checked; declared names are authoritative.
|
|
@@ -1718,9 +1757,11 @@ export async function createAgentSession(options: CreateAgentSessionOptions = {}
|
|
|
1718
1757
|
});
|
|
1719
1758
|
if (pluginToolResult.tools.length > 0) customTools.push(...pluginToolResult.tools);
|
|
1720
1759
|
for (const q of pluginToolResult.quarantine) {
|
|
1760
|
+
gjcFindings.add({ identity: q.identity, surfaceId: q.surfaceId, code: q.code, message: q.message });
|
|
1721
1761
|
logger.warn("Quarantined GJC plugin surface", { plugin: q.plugin, surface: q.surfaceId, code: q.code });
|
|
1722
1762
|
}
|
|
1723
1763
|
} catch (error) {
|
|
1764
|
+
gjcProducersComplete = false;
|
|
1724
1765
|
logger.warn("Failed to load always-on GJC plugin tools", { error });
|
|
1725
1766
|
}
|
|
1726
1767
|
|
|
@@ -1752,6 +1793,7 @@ export async function createAgentSession(options: CreateAgentSessionOptions = {}
|
|
|
1752
1793
|
try {
|
|
1753
1794
|
const { configs, quarantine } = await buildPluginMcpConfigs({ cwd });
|
|
1754
1795
|
for (const q of quarantine) {
|
|
1796
|
+
gjcFindings.add({ identity: q.identity, surfaceId: q.surfaceId, code: q.code, message: q.message });
|
|
1755
1797
|
logger.warn("Quarantined GJC plugin MCP", { plugin: q.plugin, surface: q.surfaceId, code: q.code });
|
|
1756
1798
|
}
|
|
1757
1799
|
if (Object.keys(configs).length > 0) {
|
|
@@ -1765,6 +1807,10 @@ export async function createAgentSession(options: CreateAgentSessionOptions = {}
|
|
|
1765
1807
|
);
|
|
1766
1808
|
const result = await owned.connectServers(configs, sources as never);
|
|
1767
1809
|
for (const [server, err] of result.errors) {
|
|
1810
|
+
// A server that failed to connect leaves this generation
|
|
1811
|
+
// incomplete: its surfaces produced no evidence, so publishing
|
|
1812
|
+
// would present a partial pass as a clear one.
|
|
1813
|
+
gjcProducersComplete = false;
|
|
1768
1814
|
logger.warn("GJC plugin MCP connect failed", { path: `mcp:${server}`, error: err });
|
|
1769
1815
|
}
|
|
1770
1816
|
if (result.connectedServers.length > 0) {
|
|
@@ -1784,6 +1830,7 @@ export async function createAgentSession(options: CreateAgentSessionOptions = {}
|
|
|
1784
1830
|
}
|
|
1785
1831
|
}
|
|
1786
1832
|
} catch (error) {
|
|
1833
|
+
gjcProducersComplete = false;
|
|
1787
1834
|
logger.warn("Failed to wire GJC plugin MCP servers", { error });
|
|
1788
1835
|
}
|
|
1789
1836
|
} else if (isCanonicalSubSession) {
|
|
@@ -1833,11 +1880,14 @@ export async function createAgentSession(options: CreateAgentSessionOptions = {}
|
|
|
1833
1880
|
inlineExtensions.push(createPluginHooksExtension(pluginHookResult.hooks));
|
|
1834
1881
|
}
|
|
1835
1882
|
for (const q of pluginHookResult.quarantine) {
|
|
1883
|
+
gjcFindings.add({ identity: q.identity, surfaceId: q.surfaceId, code: q.code, message: q.message });
|
|
1836
1884
|
logger.warn("Quarantined GJC plugin hook", { plugin: q.plugin, surface: q.surfaceId, code: q.code });
|
|
1837
1885
|
}
|
|
1838
1886
|
} catch (error) {
|
|
1887
|
+
gjcProducersComplete = false;
|
|
1839
1888
|
logger.warn("Failed to load constrained GJC plugin hooks", { error });
|
|
1840
1889
|
}
|
|
1890
|
+
|
|
1841
1891
|
let notificationCfg: NotificationConfig | undefined;
|
|
1842
1892
|
try {
|
|
1843
1893
|
notificationCfg = getNotificationConfig(settings);
|
|
@@ -2183,12 +2233,32 @@ export async function createAgentSession(options: CreateAgentSessionOptions = {}
|
|
|
2183
2233
|
tools: Map<string, AgentTool>,
|
|
2184
2234
|
candidateModel?: Model,
|
|
2185
2235
|
): Promise<BuildSystemPromptResult> => {
|
|
2236
|
+
// This callback is reused for later prompt/tool/model rebuilds. Retire
|
|
2237
|
+
// the previous generation's evidence up front: from here until a
|
|
2238
|
+
// complete pass republishes, consumers must read `unavailable` rather
|
|
2239
|
+
// than a snapshot describing a generation that no longer applies.
|
|
2240
|
+
// Invalidating at entry (not beside the publish) means an await or a
|
|
2241
|
+
// throw in between cannot leave stale evidence readable. The reserved
|
|
2242
|
+
// epoch additionally fences overlapping rebuilds, so a slower earlier
|
|
2243
|
+
// pass cannot publish over a newer one.
|
|
2244
|
+
const gjcPassEpoch = gjcRuntimeStore.beginPass();
|
|
2186
2245
|
toolContextStore.setToolNames(toolNames);
|
|
2187
2246
|
const promptTools = (() => {
|
|
2188
2247
|
const previousPromptMetadataModel = promptMetadataModel;
|
|
2189
2248
|
promptMetadataModel = candidateModel;
|
|
2190
2249
|
try {
|
|
2191
|
-
|
|
2250
|
+
const activeModel = candidateModel ?? agent?.state.model ?? model;
|
|
2251
|
+
// Codex renames reserved tool names on the wire; the prompt must
|
|
2252
|
+
// refer to the tools by the names the model actually receives.
|
|
2253
|
+
const overrides =
|
|
2254
|
+
activeModel?.api === "openai-codex-responses"
|
|
2255
|
+
? Object.fromEntries(
|
|
2256
|
+
Array.from(tools.keys())
|
|
2257
|
+
.filter(name => codexToolWireName(name) !== name)
|
|
2258
|
+
.map(name => [name, { wireName: codexToolWireName(name) }]),
|
|
2259
|
+
)
|
|
2260
|
+
: {};
|
|
2261
|
+
return buildSystemPromptToolMetadata(tools, overrides);
|
|
2192
2262
|
} finally {
|
|
2193
2263
|
promptMetadataModel = previousPromptMetadataModel;
|
|
2194
2264
|
}
|
|
@@ -2204,8 +2274,17 @@ export async function createAgentSession(options: CreateAgentSessionOptions = {}
|
|
|
2204
2274
|
try {
|
|
2205
2275
|
pluginSystemAppendices = await renderAlwaysOnSystemAppendices({ cwd });
|
|
2206
2276
|
} catch (error) {
|
|
2277
|
+
gjcProducersComplete = false;
|
|
2207
2278
|
logger.warn("Failed to render GJC plugin system appendices", { error });
|
|
2208
2279
|
}
|
|
2280
|
+
|
|
2281
|
+
// Publication point for GJC bundle runtime evidence. Appendix rendering
|
|
2282
|
+
// is the last producer, so only here is the generation complete.
|
|
2283
|
+
//
|
|
2284
|
+
// The previous generation was already retired at callback entry, so a
|
|
2285
|
+
// partial pass simply never republishes and consumers keep reading
|
|
2286
|
+
// `unavailable` rather than a stale generation.
|
|
2287
|
+
if (gjcProducersComplete) gjcRuntimeStore.publish(gjcFindings.snapshot(), gjcPassEpoch);
|
|
2209
2288
|
const defaultPrompt = await buildSystemPromptInternal({
|
|
2210
2289
|
cwd,
|
|
2211
2290
|
skills,
|
|
@@ -2352,6 +2431,9 @@ export async function createAgentSession(options: CreateAgentSessionOptions = {}
|
|
|
2352
2431
|
(options.alwaysActiveToolNames ?? []).map(name => name.toLowerCase()),
|
|
2353
2432
|
);
|
|
2354
2433
|
const essentialBuiltinNames = new Set(computeEssentialBuiltinNames(settings));
|
|
2434
|
+
// `task.eager` promises delegation preference. In discovery mode the task tool
|
|
2435
|
+
// would otherwise be hidden, making the matching prompt instruction unreachable.
|
|
2436
|
+
if (eagerTasks) essentialBuiltinNames.add("task");
|
|
2355
2437
|
const allowedDiscoveredBuiltinNames = options.discoverableToolAllowedNames
|
|
2356
2438
|
? new Set(options.discoverableToolAllowedNames.map(name => name.toLowerCase()))
|
|
2357
2439
|
: undefined;
|
|
@@ -2556,6 +2638,9 @@ export async function createAgentSession(options: CreateAgentSessionOptions = {}
|
|
|
2556
2638
|
maxRetryDelayMs: retrySettings.maxDelayMs,
|
|
2557
2639
|
requestMaxRetries: retrySettings.requestMaxRetries,
|
|
2558
2640
|
streamMaxRetries: retrySettings.streamMaxRetries,
|
|
2641
|
+
streamFirstEventTimeoutMs: settings.has("retry.streamFirstEventTimeoutMs")
|
|
2642
|
+
? retrySettings.streamFirstEventTimeoutMs
|
|
2643
|
+
: undefined,
|
|
2559
2644
|
kimiApiFormat: settings.get("providers.kimiApiFormat") ?? "anthropic",
|
|
2560
2645
|
shouldPause: options.shouldPause,
|
|
2561
2646
|
preferWebsockets: preferOpenAICodexWebsockets,
|
|
@@ -2841,6 +2926,11 @@ export async function createAgentSession(options: CreateAgentSessionOptions = {}
|
|
|
2841
2926
|
// microtask (the ToolSession closure needs `session` assigned). Await it
|
|
2842
2927
|
// so a resumed canonical workflow session returns with `ask` resident.
|
|
2843
2928
|
await session.workflowGateToolRestoration;
|
|
2929
|
+
// Expose the published evidence on the session itself so UI surfaces that
|
|
2930
|
+
// only hold a session (Settings) can consume it without threading the
|
|
2931
|
+
// creation result through every controller.
|
|
2932
|
+
session.gjcRuntimeSnapshot = gjcRuntimeStore;
|
|
2933
|
+
session.gjcActivationGeneration = gjcActivationGeneration;
|
|
2844
2934
|
return {
|
|
2845
2935
|
session,
|
|
2846
2936
|
extensionsResult,
|
|
@@ -2849,6 +2939,7 @@ export async function createAgentSession(options: CreateAgentSessionOptions = {}
|
|
|
2849
2939
|
modelFallbackMessage,
|
|
2850
2940
|
lspServers,
|
|
2851
2941
|
eventBus,
|
|
2942
|
+
gjcRuntimeSnapshot: gjcRuntimeStore,
|
|
2852
2943
|
};
|
|
2853
2944
|
} catch (error) {
|
|
2854
2945
|
// Release the subscription if the throw happened after install but before the
|