@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
|
@@ -31,6 +31,8 @@ export interface SessionBeforeSwitchEvent {
|
|
|
31
31
|
/** Session file we're switching to (only for "resume") */
|
|
32
32
|
targetSessionFile?: string;
|
|
33
33
|
}
|
|
34
|
+
/** Origin used when an interactive session selector resumes a session. */
|
|
35
|
+
export declare const INTERACTIVE_SELECTOR_RESUME_ORIGIN = "interactive_selector_resume";
|
|
34
36
|
/** Fired after switching to another session */
|
|
35
37
|
export interface SessionSwitchEvent {
|
|
36
38
|
type: "session_switch";
|
|
@@ -38,6 +40,10 @@ export interface SessionSwitchEvent {
|
|
|
38
40
|
reason: "new" | "resume" | "fork";
|
|
39
41
|
/** Session file we came from */
|
|
40
42
|
previousSessionFile: string | undefined;
|
|
43
|
+
/** Optional provenance for this session transition. */
|
|
44
|
+
transition?: {
|
|
45
|
+
origin: string;
|
|
46
|
+
};
|
|
41
47
|
}
|
|
42
48
|
/** Fired before branching a session (can be cancelled) */
|
|
43
49
|
export interface SessionBeforeBranchEvent {
|
|
@@ -9,13 +9,15 @@ export interface AmbiguityClampResult {
|
|
|
9
9
|
effective: number;
|
|
10
10
|
clamped: boolean;
|
|
11
11
|
}
|
|
12
|
-
/** Compute the deterministic floor from
|
|
12
|
+
/** Compute the deterministic floor from the inner deep-interview `state` object. */
|
|
13
13
|
export declare function computeAmbiguityFloor(inner: unknown): AmbiguityFloorBreakdown;
|
|
14
14
|
/** Clamp an LLM-reported ambiguity to the deterministic floor: `max(reported, floor)`. */
|
|
15
15
|
export declare function clampReportedAmbiguity(reported: number, floor: number): AmbiguityClampResult;
|
|
16
16
|
/**
|
|
17
|
-
*
|
|
18
|
-
*
|
|
17
|
+
* Mark every established fact recorded in `retractedRound` as disputed. This is the
|
|
18
|
+
* mechanical contradiction signal for answer retraction: when the user replaces an
|
|
19
|
+
* already-scored answer (A -> B pivot), the facts that answer established can no
|
|
20
|
+
* longer be trusted, so they raise the floor until re-confirmed or superseded.
|
|
19
21
|
* Returns new arrays/objects; never mutates the input.
|
|
20
22
|
*/
|
|
21
23
|
export declare function disputeFactsFromRetractedRound(facts: readonly unknown[], retractedRound: number): {
|
|
@@ -35,12 +37,3 @@ export interface AppliedAmbiguityFloor {
|
|
|
35
37
|
* (state CLI write/reconcile, recorder) applies this immediately before persisting.
|
|
36
38
|
*/
|
|
37
39
|
export declare function applyAmbiguityFloorToEnvelope(value: unknown): AppliedAmbiguityFloor;
|
|
38
|
-
export type DeepInterviewAmbiguityMilestone = "initial" | "progress" | "refined" | "ready";
|
|
39
|
-
export declare function deriveAmbiguityMilestone(effectiveUnits: number, thresholdUnits: number): DeepInterviewAmbiguityMilestone;
|
|
40
|
-
export declare function scoreToUnits(score: number): number;
|
|
41
|
-
export declare function weightedAmbiguityUnits(scores: {
|
|
42
|
-
goal: number;
|
|
43
|
-
constraints: number;
|
|
44
|
-
criteria: number;
|
|
45
|
-
context?: number;
|
|
46
|
-
}, type: "greenfield" | "brownfield"): number;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type DeepInterviewEstablishedFact, type DeepInterviewIntentItem, type DeepInterviewIntentSubstitution, type DeepInterviewRoundRecord, type
|
|
1
|
+
import { type DeepInterviewEstablishedFact, type DeepInterviewIntentItem, type DeepInterviewIntentSubstitution, type DeepInterviewRoundRecord, type DeepInterviewStateEnvelope, type DeepInterviewTriggerMetadata } from "./deep-interview-state";
|
|
2
2
|
export * from "./deep-interview-ambiguity";
|
|
3
3
|
export * from "./deep-interview-state";
|
|
4
4
|
/**
|
|
@@ -40,8 +40,6 @@ export interface DeepInterviewScoringInput {
|
|
|
40
40
|
scores: Record<string, number>;
|
|
41
41
|
ambiguity: number;
|
|
42
42
|
triggers?: DeepInterviewTriggerMetadata[];
|
|
43
|
-
/** Complete native round result for typed callers. */
|
|
44
|
-
roundResult?: DeepInterviewRoundResultV1;
|
|
45
43
|
}
|
|
46
44
|
export type AppendOrMergeAction = "created" | "noop" | "replaced";
|
|
47
45
|
export interface AppendOrMergeResult {
|
|
@@ -69,9 +67,11 @@ export interface TransitionValidationResult {
|
|
|
69
67
|
}
|
|
70
68
|
export declare function buildAnswerShell(input: DeepInterviewAnswerInput, now?: string): DeepInterviewRoundRecord;
|
|
71
69
|
/**
|
|
72
|
-
* Append-or-merge by `round_key`.
|
|
73
|
-
*
|
|
74
|
-
*
|
|
70
|
+
* Append-or-merge by `round_key`. Exactly one record per key:
|
|
71
|
+
* - no existing record -> append (`created`);
|
|
72
|
+
* - identical question_hash + answer_hash -> deterministic no-op (`noop`);
|
|
73
|
+
* - same key, different hashes -> deterministic replacement of the prior shell
|
|
74
|
+
* (`replaced`); the prior answer for that key is superseded and lifecycle resets.
|
|
75
75
|
*/
|
|
76
76
|
export declare function appendOrMergeRound(rounds: readonly DeepInterviewRoundRecord[], shell: DeepInterviewRoundRecord): AppendOrMergeResult;
|
|
77
77
|
/**
|
|
@@ -94,43 +94,28 @@ export declare function ensureDeepInterviewStateShape(value: unknown): DeepInter
|
|
|
94
94
|
export declare function projectCompactState(value: unknown, options?: {
|
|
95
95
|
lastN?: number;
|
|
96
96
|
}): DeepInterviewCompactState;
|
|
97
|
-
interface RecorderMutationOptions {
|
|
98
|
-
sessionId?: string;
|
|
99
|
-
expectedRevision?: number;
|
|
100
|
-
}
|
|
101
|
-
export interface DeepInterviewPostCommitWarning {
|
|
102
|
-
code: "DI_POST_COMMIT_AUDIT_FAILED" | "DI_POST_COMMIT_ACTIVITY_FAILED" | "DI_POST_COMMIT_HUD_FAILED";
|
|
103
|
-
message: string;
|
|
104
|
-
}
|
|
105
|
-
export declare function runDeepInterviewPostCommitEffects(options: {
|
|
106
|
-
cwd: string;
|
|
107
|
-
statePath: string;
|
|
108
|
-
sessionId: string;
|
|
109
|
-
envelope: Record<string, unknown>;
|
|
110
|
-
revision: number;
|
|
111
|
-
writer: string;
|
|
112
|
-
auditWarnings?: readonly {
|
|
113
|
-
code: "DI_POST_COMMIT_AUDIT_FAILED";
|
|
114
|
-
message: string;
|
|
115
|
-
}[];
|
|
116
|
-
}): Promise<DeepInterviewPostCommitWarning[]>;
|
|
117
97
|
/** Refresh the best-effort HUD cache from persisted deep-interview state. */
|
|
118
98
|
export declare function syncDeepInterviewRecorderHud(cwd: string, statePath: string, sessionId: string | undefined): Promise<void>;
|
|
119
99
|
/**
|
|
120
100
|
* Record an `answered` shell for one round (append-or-merge by durable key).
|
|
121
101
|
*
|
|
122
|
-
*
|
|
123
|
-
*
|
|
102
|
+
* Retraction dynamics: replacing an already-`scored` answer is a mechanical
|
|
103
|
+
* contradiction signal (the user pivoted). The facts that round established are
|
|
104
|
+
* marked disputed, which raises the deterministic ambiguity floor immediately —
|
|
105
|
+
* without waiting for the LLM scorer to self-report a trigger.
|
|
124
106
|
*/
|
|
125
|
-
export declare function appendOrMergeDeepInterviewRound(cwd: string, statePath: string, input: DeepInterviewAnswerInput, options?:
|
|
107
|
+
export declare function appendOrMergeDeepInterviewRound(cwd: string, statePath: string, input: DeepInterviewAnswerInput, options?: {
|
|
108
|
+
sessionId?: string;
|
|
109
|
+
}): Promise<{
|
|
126
110
|
action: AppendOrMergeAction;
|
|
127
111
|
record: DeepInterviewRoundRecord;
|
|
128
|
-
|
|
112
|
+
disputedFactIds?: string[];
|
|
129
113
|
}>;
|
|
130
114
|
/** Merge scoring output into the same round record, transitioning to `scored`. */
|
|
131
|
-
export declare function enrichDeepInterviewRoundScoring(cwd: string, statePath: string, input: DeepInterviewScoringInput, options?:
|
|
115
|
+
export declare function enrichDeepInterviewRoundScoring(cwd: string, statePath: string, input: DeepInterviewScoringInput, options?: {
|
|
116
|
+
sessionId?: string;
|
|
117
|
+
}): Promise<{
|
|
132
118
|
record: DeepInterviewRoundRecord;
|
|
133
|
-
warnings: DeepInterviewPostCommitWarning[];
|
|
134
119
|
}>;
|
|
135
120
|
/** Compact projection so callers read a slice instead of the full transcript. */
|
|
136
121
|
export declare function readDeepInterviewStateCompact(statePath: string, options?: {
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { CommandError } from "./workflow-cli-common";
|
|
2
|
+
export declare const DEEP_INTERVIEW_STAGE_TRANSITIONS: readonly ["initialize-context", "record-round", "update-facts", "merge-state"];
|
|
3
|
+
export type DeepInterviewStageTransition = (typeof DEEP_INTERVIEW_STAGE_TRANSITIONS)[number];
|
|
4
|
+
declare const DRAFT_VERSION = 1;
|
|
5
|
+
export type DeepInterviewStageErrorCode = "DI_STAGE_USAGE" | "DI_STAGE_INPUT_INVALID" | "DI_STAGE_SESSION_REQUIRED" | "DI_STAGE_DRAFT_EXISTS" | "DI_STAGE_NO_DRAFT" | "DI_STAGE_DRAFT_CORRUPT" | "DI_STAGE_STATE_MISSING" | "DI_STAGE_STATE_CORRUPT" | "DI_STAGE_REVISION_CONFLICT" | "DI_STAGE_MERGE_REJECTED";
|
|
6
|
+
export declare class DeepInterviewStageError extends CommandError {
|
|
7
|
+
readonly code: DeepInterviewStageErrorCode;
|
|
8
|
+
readonly recovery?: string | undefined;
|
|
9
|
+
constructor(code: DeepInterviewStageErrorCode, message: string, recovery?: string | undefined);
|
|
10
|
+
}
|
|
11
|
+
export interface DeepInterviewStageDraft {
|
|
12
|
+
version: typeof DRAFT_VERSION;
|
|
13
|
+
draft_id: string;
|
|
14
|
+
session_id: string;
|
|
15
|
+
transition: DeepInterviewStageTransition;
|
|
16
|
+
/** State revision the draft was staged against; `apply` CAS-checks this. */
|
|
17
|
+
staged_against_revision: number;
|
|
18
|
+
/**
|
|
19
|
+
* Canonical content SHA-256 of the state the draft was staged against. Revision
|
|
20
|
+
* alone cannot catch sanctioned writers that do not bump `state_revision`
|
|
21
|
+
* (seed/spec-persistence), so `apply` requires BOTH to match.
|
|
22
|
+
*/
|
|
23
|
+
staged_against_sha256: string;
|
|
24
|
+
payload: Record<string, unknown>;
|
|
25
|
+
created_at: string;
|
|
26
|
+
}
|
|
27
|
+
export interface DeepInterviewStageCommandResult {
|
|
28
|
+
status: number;
|
|
29
|
+
stdout?: string;
|
|
30
|
+
stderr?: string;
|
|
31
|
+
}
|
|
32
|
+
export declare function deepInterviewDraftPath(cwd: string, sessionId: string): string;
|
|
33
|
+
export declare const DEEP_INTERVIEW_STAGE_VERBS: readonly ["stage", "check", "apply", "discard", "read", "write", "clear", "handoff"];
|
|
34
|
+
export type DeepInterviewStageVerb = (typeof DEEP_INTERVIEW_STAGE_VERBS)[number];
|
|
35
|
+
export declare function isDeepInterviewStageVerb(value: string | undefined): value is DeepInterviewStageVerb;
|
|
36
|
+
export declare function runDeepInterviewStageCommand(verb: DeepInterviewStageVerb, args: readonly string[], cwd?: string): Promise<DeepInterviewStageCommandResult>;
|
|
37
|
+
export {};
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { computeAmbiguityFloor, type DeepInterviewAmbiguityMilestone } from "./deep-interview-ambiguity";
|
|
2
1
|
/**
|
|
3
2
|
* Pure, dependency-free foundation for deep-interview state shape.
|
|
4
3
|
*
|
|
@@ -36,6 +35,10 @@ export interface DeepInterviewTriggerMetadata {
|
|
|
36
35
|
status: DeepInterviewTriggerStatus;
|
|
37
36
|
component: string;
|
|
38
37
|
dimension: string;
|
|
38
|
+
priorDimensionScore?: number;
|
|
39
|
+
newDimensionScore?: number;
|
|
40
|
+
priorAmbiguity?: number;
|
|
41
|
+
newAmbiguity?: number;
|
|
39
42
|
evidence?: string;
|
|
40
43
|
contradictedFactId?: string;
|
|
41
44
|
/** Required when status is `disputed` or `unresolved` to exempt the invariant. */
|
|
@@ -65,11 +68,9 @@ export interface DeepInterviewRoundRecord {
|
|
|
65
68
|
/** Deterministic floor in effect when this round was scored, when it clamped. */
|
|
66
69
|
ambiguity_floor?: number;
|
|
67
70
|
triggers?: DeepInterviewTriggerMetadata[];
|
|
68
|
-
round_result_digest?: string;
|
|
69
71
|
}
|
|
70
72
|
export interface DeepInterviewStateEnvelope {
|
|
71
73
|
threshold?: number;
|
|
72
|
-
threshold_units?: number;
|
|
73
74
|
threshold_source?: string;
|
|
74
75
|
state?: Record<string, unknown>;
|
|
75
76
|
[key: string]: unknown;
|
|
@@ -196,135 +197,3 @@ export declare function assertDeepInterviewIntentReview(value: unknown, locked:
|
|
|
196
197
|
round: unknown;
|
|
197
198
|
answer_hash: unknown;
|
|
198
199
|
}[]): asserts value is DeepInterviewIntentReview;
|
|
199
|
-
export type DeepInterviewDimension = "goal" | "constraints" | "criteria" | "context";
|
|
200
|
-
export type DeepInterviewResolution = "auto_research_accepted" | "auto_answer" | "direct" | "refined" | "cited_confirmation";
|
|
201
|
-
export interface DeepInterviewFactOperation {
|
|
202
|
-
op: "add" | "dispute" | "supersede";
|
|
203
|
-
id: string;
|
|
204
|
-
statement?: string;
|
|
205
|
-
component?: string;
|
|
206
|
-
dimension?: DeepInterviewDimension;
|
|
207
|
-
evidence?: string;
|
|
208
|
-
target_id?: string;
|
|
209
|
-
}
|
|
210
|
-
export interface DeepInterviewOntologyEntity {
|
|
211
|
-
id: string;
|
|
212
|
-
name: string;
|
|
213
|
-
type: string;
|
|
214
|
-
fields: string[];
|
|
215
|
-
}
|
|
216
|
-
export interface DeepInterviewOntologyRelationship {
|
|
217
|
-
id: string;
|
|
218
|
-
from_entity_id: string;
|
|
219
|
-
to_entity_id: string;
|
|
220
|
-
type: string;
|
|
221
|
-
}
|
|
222
|
-
export interface DeepInterviewOntologyReasoning {
|
|
223
|
-
statement: string;
|
|
224
|
-
evidence?: string;
|
|
225
|
-
}
|
|
226
|
-
export interface DeepInterviewOntologyInput {
|
|
227
|
-
entities: DeepInterviewOntologyEntity[];
|
|
228
|
-
relationships: DeepInterviewOntologyRelationship[];
|
|
229
|
-
reasoning: DeepInterviewOntologyReasoning[];
|
|
230
|
-
}
|
|
231
|
-
export interface DeepInterviewComponentUpdate {
|
|
232
|
-
component_id: string;
|
|
233
|
-
scores: Record<DeepInterviewDimension, number>;
|
|
234
|
-
}
|
|
235
|
-
/**
|
|
236
|
-
* Optional legacy assertions accepted only when they agree with the native
|
|
237
|
-
* target. The persisted target is always derived from component scores.
|
|
238
|
-
*/
|
|
239
|
-
export interface DeepInterviewTargetingInput {
|
|
240
|
-
target_component_id?: string;
|
|
241
|
-
target_dimension?: DeepInterviewDimension;
|
|
242
|
-
weakest_component_id?: string;
|
|
243
|
-
weakest_dimension?: DeepInterviewDimension;
|
|
244
|
-
last_targeted_component_id?: string | null;
|
|
245
|
-
}
|
|
246
|
-
export interface DeepInterviewRoundBookkeeping {
|
|
247
|
-
resolution: DeepInterviewResolution;
|
|
248
|
-
round_ids?: string[];
|
|
249
|
-
counter_deltas?: Record<string, number>;
|
|
250
|
-
}
|
|
251
|
-
/**
|
|
252
|
-
* Closed evidence submitted for one scoring transaction. All convergence values
|
|
253
|
-
* (ambiguity, floor, milestone, ontology counts, rotation, and streak) are
|
|
254
|
-
* native-derived and intentionally cannot be supplied here.
|
|
255
|
-
*/
|
|
256
|
-
export interface DeepInterviewRoundResultV1 {
|
|
257
|
-
global_scores: Record<DeepInterviewDimension, number>;
|
|
258
|
-
component_updates?: DeepInterviewComponentUpdate[];
|
|
259
|
-
targeting?: DeepInterviewTargetingInput;
|
|
260
|
-
triggers?: DeepInterviewTriggerMetadata[];
|
|
261
|
-
fact_ops?: DeepInterviewFactOperation[];
|
|
262
|
-
ontology?: DeepInterviewOntologyInput | DeepInterviewOntologyEntity[];
|
|
263
|
-
bookkeeping?: DeepInterviewRoundBookkeeping;
|
|
264
|
-
/** Compatibility adapter for recorder callers; never persisted as the v1 wire shape. */
|
|
265
|
-
component_scores?: Record<string, Record<DeepInterviewDimension, number>>;
|
|
266
|
-
auto_answered?: boolean;
|
|
267
|
-
}
|
|
268
|
-
/**
|
|
269
|
-
* Version 1 native projection returned by `apply-round-result` as
|
|
270
|
-
* `native_projection`. This is the complete renderable convergence surface;
|
|
271
|
-
* callers must not derive or supplement it from candidate scorer input.
|
|
272
|
-
*/
|
|
273
|
-
export interface DeepInterviewRoundResultProjection {
|
|
274
|
-
score_units: Partial<Record<DeepInterviewDimension, number>>;
|
|
275
|
-
weighted_ambiguity: number;
|
|
276
|
-
weighted_ambiguity_units: number;
|
|
277
|
-
floor: number;
|
|
278
|
-
floor_units: number;
|
|
279
|
-
floor_cause: ReturnType<typeof computeAmbiguityFloor>;
|
|
280
|
-
effective_ambiguity: number;
|
|
281
|
-
effective_ambiguity_units: number;
|
|
282
|
-
prior_effective_ambiguity: number | null;
|
|
283
|
-
direction: "increased" | "decreased" | "unchanged" | "initial";
|
|
284
|
-
ambiguity_milestone: DeepInterviewAmbiguityMilestone;
|
|
285
|
-
topology: unknown;
|
|
286
|
-
topology_counts: {
|
|
287
|
-
active: number;
|
|
288
|
-
deferred: number;
|
|
289
|
-
total: number;
|
|
290
|
-
};
|
|
291
|
-
ontology: unknown;
|
|
292
|
-
ontology_counts: {
|
|
293
|
-
stable: number;
|
|
294
|
-
changed: number;
|
|
295
|
-
new: number;
|
|
296
|
-
basis: string;
|
|
297
|
-
};
|
|
298
|
-
targeting: {
|
|
299
|
-
target_component_id: string | null;
|
|
300
|
-
target_dimension: DeepInterviewDimension | null;
|
|
301
|
-
last_targeted_component_id: string | null;
|
|
302
|
-
};
|
|
303
|
-
transition: {
|
|
304
|
-
round_key: string;
|
|
305
|
-
lifecycle: "scored";
|
|
306
|
-
auto_answer_streak: number;
|
|
307
|
-
};
|
|
308
|
-
}
|
|
309
|
-
export type DeepInterviewApplyRoundResult = {
|
|
310
|
-
kind: "noop";
|
|
311
|
-
envelope: DeepInterviewStateEnvelope;
|
|
312
|
-
projection?: DeepInterviewRoundResultProjection;
|
|
313
|
-
} | {
|
|
314
|
-
kind: "write";
|
|
315
|
-
envelope: DeepInterviewStateEnvelope;
|
|
316
|
-
projection: DeepInterviewRoundResultProjection;
|
|
317
|
-
};
|
|
318
|
-
/** Strict UTF-8 JSON serialization used by v1 replay digests. */
|
|
319
|
-
export declare function canonicalDeepInterviewJson(value: unknown): string;
|
|
320
|
-
export declare function deepInterviewRoundResultDigest(input: {
|
|
321
|
-
round: number;
|
|
322
|
-
question_id: string;
|
|
323
|
-
round_id?: string | null;
|
|
324
|
-
result: unknown;
|
|
325
|
-
}): string;
|
|
326
|
-
/** Complete persisted answer identity; omitted optional values normalize to null. */
|
|
327
|
-
export declare function deepInterviewAnswerIdentityEqual(a: Pick<DeepInterviewRoundRecord, "round" | "round_key" | "round_id" | "question_id" | "component" | "dimension" | "question_text" | "question_hash" | "selected_options" | "custom_input">, b: Pick<DeepInterviewRoundRecord, "round" | "round_key" | "round_id" | "question_id" | "component" | "dimension" | "question_text" | "question_hash" | "selected_options" | "custom_input">): boolean;
|
|
328
|
-
/** Apply one closed v1 scoring round. The input contains evidence only; all convergence state is derived here. */
|
|
329
|
-
export declare function applyDeepInterviewRoundResultV1(envelopeValue: unknown, roundKey: string, result: DeepInterviewRoundResultV1, now: string): DeepInterviewApplyRoundResult;
|
|
330
|
-
export declare function validateDeepInterviewV1Envelope(value: Record<string, unknown>): void;
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
* error all mean KEEP — a live process is never signalled or killed.
|
|
13
13
|
* - Dry-run by default: nothing is deleted unless `--prune`/`--force`.
|
|
14
14
|
*/
|
|
15
|
-
export type GcStore = "harness_leases" | "team_workers" | "file_locks" | "tmux_sessions" | "registry_entries";
|
|
15
|
+
export type GcStore = "harness_leases" | "team_workers" | "file_locks" | "tmux_sessions" | "registry_entries" | "local_roots";
|
|
16
16
|
export declare const GC_STORES: readonly GcStore[];
|
|
17
17
|
/** Why a probed pid is kept instead of treated as dead. */
|
|
18
18
|
export type GcPidKeepReason = "alive" | "eperm" | "unknown";
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { type LinuxProcPidProbeResult } from "./linux-proc";
|
|
2
|
+
declare const MEMORY_GUARD_CLAIM_RESOURCES: readonly ["writer", "tty"];
|
|
3
|
+
type MemoryGuardClaimResource = (typeof MEMORY_GUARD_CLAIM_RESOURCES)[number];
|
|
4
|
+
export interface MemoryGuardClaimOwner {
|
|
5
|
+
sessionId: string;
|
|
6
|
+
generation: string;
|
|
7
|
+
runId: string;
|
|
8
|
+
childToken: string;
|
|
9
|
+
pid: number;
|
|
10
|
+
processStartTime: string;
|
|
11
|
+
ttyDevice: string;
|
|
12
|
+
}
|
|
13
|
+
export interface MemoryGuardClaimsLease {
|
|
14
|
+
writerEpoch: number;
|
|
15
|
+
ttyEpoch: number;
|
|
16
|
+
owner: MemoryGuardClaimOwner;
|
|
17
|
+
claimStorePath: string;
|
|
18
|
+
}
|
|
19
|
+
export declare function isMemoryGuardClaimsLease(value: unknown): value is MemoryGuardClaimsLease;
|
|
20
|
+
export declare function isMemoryGuardClaimsLeaseForStateDir(value: unknown, stateDir: string): value is MemoryGuardClaimsLease;
|
|
21
|
+
export type MemoryGuardClaimsReleasedProof = MemoryGuardClaimsLease;
|
|
22
|
+
interface PersistedMemoryGuardClaimRow {
|
|
23
|
+
resource: MemoryGuardClaimResource;
|
|
24
|
+
epoch: number;
|
|
25
|
+
session_id: string;
|
|
26
|
+
generation: string;
|
|
27
|
+
run_id: string;
|
|
28
|
+
child_token: string;
|
|
29
|
+
pid: number;
|
|
30
|
+
process_start_time: string;
|
|
31
|
+
tty_device: string;
|
|
32
|
+
acquired_at: string;
|
|
33
|
+
}
|
|
34
|
+
export interface MemoryGuardOwnerClaimsDeps {
|
|
35
|
+
probePid(pid: number): Promise<LinuxProcPidProbeResult>;
|
|
36
|
+
now(): string;
|
|
37
|
+
}
|
|
38
|
+
export declare function memoryGuardClaimsDatabaseFile(stateDir: string, sessionId: string): string;
|
|
39
|
+
export declare function acquireMemoryGuardClaims(stateDir: string, owner: MemoryGuardClaimOwner, deps?: MemoryGuardOwnerClaimsDeps): Promise<MemoryGuardClaimsLease>;
|
|
40
|
+
export declare function releaseMemoryGuardClaims(stateDir: string, claim: MemoryGuardClaimsLease): Promise<void>;
|
|
41
|
+
export declare function probeMemoryGuardClaimsReleased(stateDir: string, owner: MemoryGuardClaimOwner, deps?: MemoryGuardOwnerClaimsDeps): Promise<MemoryGuardClaimsReleasedProof>;
|
|
42
|
+
export interface PersistedMemoryGuardClaimsSnapshot {
|
|
43
|
+
epoch: number;
|
|
44
|
+
claims: PersistedMemoryGuardClaimRow[];
|
|
45
|
+
}
|
|
46
|
+
export declare function readMemoryGuardClaimsForTest(stateDir: string, sessionId: string): Promise<PersistedMemoryGuardClaimsSnapshot>;
|
|
47
|
+
export {};
|
|
@@ -13,7 +13,7 @@ import { type RalplanIndexRow } from "./ledger-event-renderer";
|
|
|
13
13
|
*
|
|
14
14
|
* 2. **Artifact write**: `gjc ralplan --write --stage <type> --stage_n <N>
|
|
15
15
|
* (--artifact <path-or-string> | --artifact-env GJC_RALPLAN_ARTIFACT)
|
|
16
|
-
* [--run-id <id>] [--session-id <id>] [--json]` persists Planner / Architect
|
|
16
|
+
* [--run-id <id>] [--session-id <id>] [--lane-verdict <token>] [--json]` persists Planner / Architect
|
|
17
17
|
* / Critic / revision / post-interview / ADR / final markdown under `.gjc/plans/ralplan/<run-id>/`, maintains
|
|
18
18
|
* an `index.jsonl` audit log, copies `final` stages to `pending-approval.md`, and advances
|
|
19
19
|
* the HUD chip to reflect the latest persisted stage.
|
|
@@ -29,6 +29,17 @@ export declare const RALPLAN_DEFAULT_MAX_ITERATIONS = 5;
|
|
|
29
29
|
export declare const RALPLAN_MAX_ITERATIONS_LIMIT = 20;
|
|
30
30
|
/** Operator-visible stuck signal for headless/CI orchestration (#3165). */
|
|
31
31
|
export declare const PLANNING_STUCK_MARKER = "PLANNING-STUCK";
|
|
32
|
+
/** Default architect/critic review passes per consensus iteration. */
|
|
33
|
+
export declare const RALPLAN_DEFAULT_MAX_REVIEW_PASSES_PER_LANE = 1;
|
|
34
|
+
/** Inclusive upper bound for `gjc.ralplan.maxReviewPassesPerLane` settings overrides. */
|
|
35
|
+
export declare const RALPLAN_MAX_REVIEW_PASSES_PER_LANE_LIMIT = 10;
|
|
36
|
+
export type RalplanAutoHandoffTarget = "off" | "ultragoal" | "team";
|
|
37
|
+
export interface RalplanAutoHandoffResolution {
|
|
38
|
+
configuredTarget: RalplanAutoHandoffTarget;
|
|
39
|
+
effectiveTarget: RalplanAutoHandoffTarget;
|
|
40
|
+
degradationReason: string | null;
|
|
41
|
+
source: string;
|
|
42
|
+
}
|
|
32
43
|
export type RalplanIterationCapDecision = {
|
|
33
44
|
allowed: true;
|
|
34
45
|
currentIterations: number;
|
|
@@ -58,11 +69,52 @@ export declare function evaluateRalplanIterationCap(input: {
|
|
|
58
69
|
/** Minimum opener count (e.g. on-disk stage-*-{planner,revision}.md). */
|
|
59
70
|
iterationFloor?: number;
|
|
60
71
|
}): RalplanIterationCapDecision;
|
|
72
|
+
export type RalplanReviewLane = "architect" | "critic";
|
|
73
|
+
export type RalplanReviewLaneBudgetDecision = {
|
|
74
|
+
allowed: true;
|
|
75
|
+
lane?: RalplanReviewLane;
|
|
76
|
+
currentPasses: number;
|
|
77
|
+
projectedPasses: number;
|
|
78
|
+
maxReviewPassesPerLane: number;
|
|
79
|
+
finalSlot: boolean;
|
|
80
|
+
ledgerNote?: string;
|
|
81
|
+
} | {
|
|
82
|
+
allowed: false;
|
|
83
|
+
lane: RalplanReviewLane;
|
|
84
|
+
currentPasses: number;
|
|
85
|
+
projectedPasses: number;
|
|
86
|
+
maxReviewPassesPerLane: number;
|
|
87
|
+
finalSlot: false;
|
|
88
|
+
ledgerNote?: string;
|
|
89
|
+
reason: string;
|
|
90
|
+
};
|
|
91
|
+
/**
|
|
92
|
+
* Pure per-lane review-pass budget gate. Architect and critic passes are limited
|
|
93
|
+
* within the current consensus iteration; all other stages remain unconditionally
|
|
94
|
+
* available as escalation paths.
|
|
95
|
+
*/
|
|
96
|
+
export declare function evaluateRalplanReviewLaneBudget(input: {
|
|
97
|
+
rows: readonly RalplanIndexRow[];
|
|
98
|
+
stage: string;
|
|
99
|
+
maxReviewPassesPerLane?: unknown;
|
|
100
|
+
onDiskLaneCounts?: {
|
|
101
|
+
architect: number;
|
|
102
|
+
critic: number;
|
|
103
|
+
};
|
|
104
|
+
}): RalplanReviewLaneBudgetDecision;
|
|
61
105
|
/**
|
|
62
106
|
* Count on-disk planner/revision stage artifacts for a run. Used as a floor when
|
|
63
107
|
* `index.jsonl` is missing, empty, truncated, or otherwise under-counts openers.
|
|
64
108
|
*/
|
|
65
109
|
export declare function countRalplanOnDiskOpeners(cwd: string, sessionId: string, runId: string): Promise<number>;
|
|
110
|
+
/**
|
|
111
|
+
* Count on-disk Architect/Critic stage artifacts for a run. This is the
|
|
112
|
+
* fail-closed floor for a missing, truncated, or malformed `index.jsonl`.
|
|
113
|
+
*/
|
|
114
|
+
export declare function countRalplanOnDiskLaneArtifacts(cwd: string, sessionId: string, runId: string): Promise<{
|
|
115
|
+
architect: number;
|
|
116
|
+
critic: number;
|
|
117
|
+
}>;
|
|
66
118
|
/**
|
|
67
119
|
* Load index rows for cap enforcement. Unlike HUD reads, returns structural
|
|
68
120
|
* signals so callers can fail closed when the ledger is empty/malformed while
|
|
@@ -73,6 +125,7 @@ export declare function loadRalplanIndexForCap(cwd: string, sessionId: string, r
|
|
|
73
125
|
indexPresent: boolean;
|
|
74
126
|
parseableLines: number;
|
|
75
127
|
rawLineCount: number;
|
|
128
|
+
rawText?: string;
|
|
76
129
|
}>;
|
|
77
130
|
/**
|
|
78
131
|
* Resolve ralplan consensus iteration cap. Project `./.gjc/settings.json` overrides
|
|
@@ -82,5 +135,21 @@ export declare function resolveRalplanMaxIterations(cwd: string): Promise<{
|
|
|
82
135
|
maxIterations: number;
|
|
83
136
|
source: string;
|
|
84
137
|
}>;
|
|
138
|
+
type RalplanAutoHandoffOptions = {
|
|
139
|
+
planningStuck?: boolean;
|
|
140
|
+
teamAvailabilityProbe?: () => {
|
|
141
|
+
available: true;
|
|
142
|
+
} | {
|
|
143
|
+
available: false;
|
|
144
|
+
reason: string;
|
|
145
|
+
};
|
|
146
|
+
};
|
|
147
|
+
export declare function resolveRalplanAutoHandoff(cwd: string, options?: RalplanAutoHandoffOptions): Promise<RalplanAutoHandoffResolution>;
|
|
148
|
+
/** Resolve the per-lane review-pass budget with project-over-user precedence. */
|
|
149
|
+
export declare function resolveRalplanMaxReviewPassesPerLane(cwd: string): Promise<{
|
|
150
|
+
maxReviewPassesPerLane: number;
|
|
151
|
+
source: string;
|
|
152
|
+
}>;
|
|
85
153
|
export declare function isRalplanArtifactWriteInvocation(args: readonly string[]): boolean;
|
|
86
154
|
export declare function runNativeRalplanCommand(args: string[], cwd?: string): Promise<RalplanCommandResult>;
|
|
155
|
+
export {};
|
|
@@ -46,47 +46,6 @@ export interface WorkflowEnvelopeIntegrityMismatch {
|
|
|
46
46
|
expected: string;
|
|
47
47
|
actual: string;
|
|
48
48
|
}
|
|
49
|
-
export type WorkflowReceiptVerification = "legacy" | "native-valid" | "receipt-malformed" | "receipt-missing" | "checksum-mismatch";
|
|
50
|
-
export interface GuardedWorkflowEnvelopeTransformOptions extends StateWriterOptions {
|
|
51
|
-
expectedRevision: number;
|
|
52
|
-
/** Additional native schema validation applied to both current and candidate envelopes. */
|
|
53
|
-
validate?: (value: Record<string, unknown>, legacy: boolean) => void;
|
|
54
|
-
transform: (current: Record<string, unknown>, context: {
|
|
55
|
-
revision: number;
|
|
56
|
-
legacy: boolean;
|
|
57
|
-
}) => {
|
|
58
|
-
kind: "noop";
|
|
59
|
-
} | {
|
|
60
|
-
kind: "write";
|
|
61
|
-
value: Record<string, unknown>;
|
|
62
|
-
} | Promise<{
|
|
63
|
-
kind: "noop";
|
|
64
|
-
} | {
|
|
65
|
-
kind: "write";
|
|
66
|
-
value: Record<string, unknown>;
|
|
67
|
-
}>;
|
|
68
|
-
}
|
|
69
|
-
export interface GuardedWorkflowEnvelopeWarning {
|
|
70
|
-
code: "DI_POST_COMMIT_AUDIT_FAILED";
|
|
71
|
-
message: string;
|
|
72
|
-
}
|
|
73
|
-
export type GuardedWorkflowEnvelopeTransformResult = {
|
|
74
|
-
path: string;
|
|
75
|
-
written: false;
|
|
76
|
-
reason: "noop";
|
|
77
|
-
revision: number;
|
|
78
|
-
warnings: [];
|
|
79
|
-
} | {
|
|
80
|
-
path: string;
|
|
81
|
-
written: true;
|
|
82
|
-
revision: number;
|
|
83
|
-
stamped: Record<string, unknown>;
|
|
84
|
-
warnings: GuardedWorkflowEnvelopeWarning[];
|
|
85
|
-
};
|
|
86
|
-
export declare class GuardedWorkflowEnvelopeError extends Error {
|
|
87
|
-
readonly code: string;
|
|
88
|
-
constructor(code: string);
|
|
89
|
-
}
|
|
90
49
|
export interface WorkflowTransactionJournal {
|
|
91
50
|
version: 1;
|
|
92
51
|
mutation_id: string;
|
|
@@ -103,7 +62,6 @@ export interface GuardedStateWriterOptions extends StateWriterOptions {
|
|
|
103
62
|
policy: StateWritePolicy;
|
|
104
63
|
expectedRevision?: number;
|
|
105
64
|
sourceRevision?: number;
|
|
106
|
-
lockHeld?: boolean;
|
|
107
65
|
}
|
|
108
66
|
export type GuardedWriteResult = {
|
|
109
67
|
path: string;
|
|
@@ -121,13 +79,17 @@ export interface StateWriterOptions {
|
|
|
121
79
|
receipt?: StateWriterReceiptContext;
|
|
122
80
|
audit?: StateWriterAuditContext;
|
|
123
81
|
sourceRevision?: number;
|
|
124
|
-
orderingRevision?: number;
|
|
125
82
|
/**
|
|
126
83
|
* Cross-process lock tuning for read-modify-write paths that route through
|
|
127
84
|
* `withWorkflowStateLock` / `updateJsonAtomic`. Omit for the hardened
|
|
128
85
|
* `withFileLock` defaults.
|
|
129
86
|
*/
|
|
130
87
|
lock?: FileLockOptions;
|
|
88
|
+
/**
|
|
89
|
+
* Caller already holds the workflow state lock for this target path (via
|
|
90
|
+
* `withWorkflowStateLock`). Skip re-acquisition to avoid self-deadlock.
|
|
91
|
+
*/
|
|
92
|
+
lockHeld?: boolean;
|
|
131
93
|
}
|
|
132
94
|
export declare class StateWriteConflictError extends Error {
|
|
133
95
|
readonly path: string;
|
|
@@ -183,8 +145,6 @@ export type StrictMutationReadResult = {
|
|
|
183
145
|
};
|
|
184
146
|
export declare function readExistingStateForMutation(filePath: string): Promise<StrictMutationReadResult>;
|
|
185
147
|
export declare function workflowEnvelopeContentSha256(value: unknown): string;
|
|
186
|
-
export declare function isNativeDeepInterviewV1(value: Record<string, unknown>): boolean;
|
|
187
|
-
export declare function verifyWorkflowEnvelopeReceiptValue(value: unknown, filePath: string): WorkflowReceiptVerification;
|
|
188
148
|
export declare function stampWorkflowEnvelopeChecksum<T>(value: T, filePath: string, computedAt?: string): T;
|
|
189
149
|
export declare function detectWorkflowEnvelopeIntegrityMismatch(filePath: string): Promise<WorkflowEnvelopeIntegrityMismatch | undefined>;
|
|
190
150
|
type ActiveStateCacheInvalidator = (cwd?: string, sessionId?: string) => void;
|
|
@@ -192,7 +152,6 @@ export declare function setActiveStateCacheInvalidator(invalidator: ActiveStateC
|
|
|
192
152
|
export declare function persistedStateRevision(value: unknown): number;
|
|
193
153
|
export declare function writeGuardedJsonAtomic(targetPath: string, value: unknown, options: GuardedStateWriterOptions): Promise<GuardedWriteResult>;
|
|
194
154
|
export declare function writeGuardedWorkflowEnvelopeAtomic(targetPath: string, value: unknown, options: GuardedStateWriterOptions): Promise<GuardedWriteResult>;
|
|
195
|
-
export declare function transformGuardedWorkflowEnvelopeAtomic(targetPath: string, options: GuardedWorkflowEnvelopeTransformOptions): Promise<GuardedWorkflowEnvelopeTransformResult>;
|
|
196
155
|
export declare function writeJsonAtomic(targetPath: string, value: unknown, options?: StateWriterOptions): Promise<string>;
|
|
197
156
|
export declare function writeWorkflowEnvelopeAtomic(targetPath: string, value: unknown, options?: StateWriterOptions): Promise<string>;
|
|
198
157
|
export declare function writeTextAtomic(targetPath: string, text: string, options?: StateWriterOptions): Promise<string>;
|
|
@@ -2,7 +2,7 @@ import type { GjcTeamConfig, GjcTeamSnapshot, GjcTeamStartOptions, GjcTeamTask,
|
|
|
2
2
|
/** Launch-specific option wiring kept separate from runtime dispatch. */
|
|
3
3
|
export declare function withTeamLaunchTransport(options: GjcTeamStartOptions, mailboxDeliveryTransport: GjcTeamStartOptions["mailboxDeliveryTransport"]): GjcTeamStartOptions;
|
|
4
4
|
/** @internal Exported for unit tests. */
|
|
5
|
-
export declare function buildWorkerCommand(config: GjcTeamConfig, worker: GjcTeamWorker, platform?: NodeJS.Platform): string;
|
|
5
|
+
export declare function buildWorkerCommand(config: GjcTeamConfig, worker: GjcTeamWorker, platform?: NodeJS.Platform, promptOverride?: string, env?: NodeJS.ProcessEnv): string;
|
|
6
6
|
interface GjcTmuxBinary {
|
|
7
7
|
command: string;
|
|
8
8
|
isPsmux: boolean;
|