@gajae-code/coding-agent 0.17.2 → 0.17.5
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 +267 -0
- package/dist/types/cli/daemon-cli.d.ts +3 -1
- package/dist/types/cli/github-release.d.ts +17 -0
- package/dist/types/cli/public-command-entry.d.ts +56 -0
- package/dist/types/cli/public-command-errors.d.ts +126 -0
- package/dist/types/cli/public-command-evidence.d.ts +99 -0
- package/dist/types/cli/public-command-help.d.ts +65 -0
- package/dist/types/cli/public-command-registry.d.ts +69 -0
- package/dist/types/cli/session-picker.d.ts +1 -1
- package/dist/types/cli/setup-cli.d.ts +1 -0
- package/dist/types/cli/skills-cli.d.ts +5 -0
- package/dist/types/cli.d.ts +3 -0
- package/dist/types/commands/daemon.d.ts +4 -50
- package/dist/types/commands/sdk.d.ts +20 -37
- package/dist/types/commands/setup.d.ts +3 -0
- package/dist/types/commands/skills.d.ts +9 -0
- package/dist/types/config/autorouting-tier-map.d.ts +1049 -3
- package/dist/types/config/file-lock.d.ts +13 -3
- package/dist/types/config/model-profile-activation.d.ts +45 -1
- package/dist/types/config/model-registry.d.ts +14 -3
- package/dist/types/config/model-resolver.d.ts +1 -1
- package/dist/types/config/settings-schema.d.ts +11 -0
- package/dist/types/coordinator-mcp/question-state.d.ts +6 -1
- package/dist/types/daemon/operator-contract.d.ts +5 -1
- package/dist/types/eval/js/worker-protocol.d.ts +2 -0
- package/dist/types/exec/bash-executor.d.ts +2 -0
- package/dist/types/extensibility/extensions/types.d.ts +12 -0
- package/dist/types/extensibility/gjc-plugins/registry.d.ts +4 -0
- package/dist/types/extensibility/gjc-plugins/runtime-adapters.d.ts +11 -2
- package/dist/types/extensibility/runtime-skill-discovery.d.ts +18 -0
- package/dist/types/extensibility/shared-events.d.ts +3 -1
- package/dist/types/gjc-runtime/session-state-lock.d.ts +61 -0
- package/dist/types/gjc-runtime/state-writer.d.ts +14 -1
- package/dist/types/harness-control-plane/control-endpoint.d.ts +4 -1
- package/dist/types/harness-control-plane/finalize.d.ts +14 -3
- package/dist/types/internal-urls/embedded-protocol.d.ts +9 -0
- package/dist/types/internal-urls/index.d.ts +1 -0
- package/dist/types/internal-urls/parse.d.ts +9 -1
- package/dist/types/main.d.ts +23 -1
- package/dist/types/modes/acp/acp-agent.d.ts +55 -1
- package/dist/types/modes/acp/startup-provenance.d.ts +16 -0
- package/dist/types/modes/components/custom-provider-wizard.d.ts +19 -1
- package/dist/types/modes/components/session-selector.d.ts +5 -2
- package/dist/types/modes/components/user-message-selector.d.ts +5 -2
- package/dist/types/modes/controllers/command-controller.d.ts +1 -1
- package/dist/types/modes/controllers/selector-controller.d.ts +1 -1
- package/dist/types/modes/interactive-mode.d.ts +1 -1
- package/dist/types/modes/shared/agent-wire/workflow-gate-broker.d.ts +11 -1
- package/dist/types/modes/shared/agent-wire/workflow-gate-types.d.ts +14 -1
- package/dist/types/modes/types.d.ts +2 -2
- package/dist/types/runtime/process-lifecycle.d.ts +2 -0
- package/dist/types/runtime-mcp/loader.d.ts +2 -0
- package/dist/types/runtime-mcp/manager.d.ts +69 -6
- package/dist/types/runtime-mcp/pool.d.ts +17 -0
- package/dist/types/runtime-mcp/redaction.d.ts +20 -0
- package/dist/types/runtime-mcp/startup-policy.d.ts +6 -0
- package/dist/types/runtime-mcp/tool-bridge.d.ts +9 -0
- package/dist/types/runtime-mcp/transports/http.d.ts +11 -0
- package/dist/types/sdk/broker/broker.d.ts +17 -4
- package/dist/types/sdk/broker/ensure.d.ts +3 -0
- package/dist/types/sdk/broker/identity.d.ts +5 -1
- package/dist/types/sdk/broker/lifecycle-ledger.d.ts +23 -3
- package/dist/types/sdk/broker/lifecycle.d.ts +15 -8
- package/dist/types/sdk/broker/managed-task-dag.d.ts +1335 -0
- package/dist/types/sdk/broker/managed-task-verification.d.ts +37 -0
- package/dist/types/sdk/broker/runtime.d.ts +1 -1
- package/dist/types/sdk/broker/session-index.d.ts +22 -3
- package/dist/types/sdk/broker/spawn-authority.d.ts +12 -0
- package/dist/types/sdk/broker/startup-failure.d.ts +4 -0
- package/dist/types/sdk/broker/stderr-drainer.d.ts +13 -0
- package/dist/types/sdk/bus/index.d.ts +19 -0
- package/dist/types/sdk/bus/telegram-daemon-contract.d.ts +7 -1
- package/dist/types/sdk/bus/telegram-daemon.d.ts +5 -0
- package/dist/types/sdk/cli/master-cli.d.ts +6 -10
- package/dist/types/sdk/cli/rows.d.ts +19 -1
- package/dist/types/sdk/cli/session-cli.d.ts +22 -5
- package/dist/types/sdk/client/client.d.ts +2 -0
- package/dist/types/sdk/guides/cli.d.ts +3 -4
- package/dist/types/sdk/guides/verify.d.ts +2 -0
- package/dist/types/sdk/host/host.d.ts +9 -0
- package/dist/types/sdk/host/session-runtime.d.ts +31 -0
- package/dist/types/sdk/host/types.d.ts +10 -0
- package/dist/types/sdk/index.d.ts +1 -0
- package/dist/types/sdk/prompt-deadline-flush.d.ts +85 -0
- package/dist/types/sdk/prompt-deadline-manager.d.ts +37 -0
- package/dist/types/sdk/prompt-tool-boundary.d.ts +73 -0
- package/dist/types/sdk/router/session-router.d.ts +2 -0
- package/dist/types/sdk/session.d.ts +3 -3
- package/dist/types/sdk/startup-capability.d.ts +2 -0
- package/dist/types/sdk/transport/relay.d.ts +1 -0
- package/dist/types/sdk/transport/serve-cli.d.ts +48 -4
- package/dist/types/sdk/transport/stdio.d.ts +5 -1
- package/dist/types/session/agent-session.d.ts +175 -23
- package/dist/types/session/fallback-chain-controller.d.ts +6 -6
- package/dist/types/session/fold-coordinator.d.ts +17 -3
- package/dist/types/session/internal/managed-session-storage.d.ts +7 -1
- package/dist/types/session/session-manager.d.ts +64 -1
- package/dist/types/session/session-work-lease.d.ts +14 -0
- package/dist/types/setup/model-onboarding-guidance.d.ts +1 -1
- package/dist/types/setup/provider-onboarding.d.ts +81 -1
- package/dist/types/task/types.d.ts +2 -0
- package/dist/types/tools/bash-interactive.d.ts +1 -0
- package/dist/types/tools/bash.d.ts +37 -11
- package/dist/types/tools/fetch.d.ts +10 -1
- package/dist/types/tools/job.d.ts +1 -1
- package/dist/types/tools/steer-fold.d.ts +31 -0
- package/dist/types/tools/subagent.d.ts +8 -1
- package/dist/types/utils/git.d.ts +28 -2
- package/dist/types/utils/mupdf-embedded.d.ts +2 -0
- package/dist/types/utils/mupdf.d.ts +4 -0
- package/dist/types/utils/session-title-generation.d.ts +6 -0
- package/dist/types/utils/title-generator.d.ts +11 -2
- package/dist/types/web/scrapers/types.d.ts +3 -0
- package/package.json +18 -10
- package/scripts/build-binary.ts +9 -3
- package/scripts/compile-args.ts +0 -9
- package/scripts/embed-mupdf.ts +52 -0
- package/scripts/generate-sdk-operation-inventory.ts +31 -1
- package/scripts/vendor-markit.ts +196 -0
- package/src/async/job-manager.ts +22 -1
- package/src/cli/daemon-cli.ts +53 -18
- package/src/cli/github-release.ts +87 -5
- package/src/cli/mcp-cli.ts +38 -4
- package/src/cli/public-command-entry.ts +450 -0
- package/src/cli/public-command-errors.ts +581 -0
- package/src/cli/public-command-evidence.ts +717 -0
- package/src/cli/public-command-help.ts +360 -0
- package/src/cli/public-command-registry.ts +541 -0
- package/src/cli/session-picker.ts +2 -1
- package/src/cli/setup-cli.ts +10 -1
- package/src/cli/skills-cli.ts +46 -2
- package/src/cli/stats-cli.ts +11 -1
- package/src/cli.ts +61 -1
- package/src/commands/daemon.ts +65 -69
- package/src/commands/sdk.ts +175 -117
- package/src/commands/setup.ts +2 -0
- package/src/commands/skills.ts +11 -0
- package/src/config/autorouting-tier-map.ts +543 -3
- package/src/config/file-lock.ts +206 -65
- package/src/config/model-discovery-manager.ts +4 -4
- package/src/config/model-profile-activation.ts +417 -66
- package/src/config/model-registry.ts +254 -36
- package/src/config/model-resolver.ts +6 -1
- package/src/config/settings-schema.ts +26 -2
- package/src/coordinator-mcp/policy.ts +10 -5
- package/src/coordinator-mcp/question-gate-codec.ts +17 -0
- package/src/coordinator-mcp/question-state.ts +179 -9
- package/src/coordinator-mcp/server.ts +521 -87
- package/src/coordinator-mcp/session-reaper.ts +6 -4
- package/src/crash/record-loader.ts +6 -2
- package/src/daemon/operator-contract.ts +26 -12
- package/src/defaults/gjc/skills/ultragoal/SKILL.md +1 -1
- package/src/eval/js/context-manager.ts +8 -8
- package/src/eval/js/worker-core.ts +9 -4
- package/src/eval/js/worker-protocol.ts +2 -0
- package/src/exec/bash-executor.ts +3 -0
- package/src/extensibility/extensions/runner.ts +52 -4
- package/src/extensibility/extensions/types.ts +10 -0
- package/src/extensibility/gjc-plugins/registry.ts +196 -37
- package/src/extensibility/gjc-plugins/runtime-adapters.ts +46 -8
- package/src/extensibility/runtime-skill-discovery.ts +61 -3
- package/src/extensibility/shared-events.ts +3 -1
- package/src/gjc-runtime/session-state-lock.ts +165 -24
- package/src/gjc-runtime/state-writer.ts +317 -6
- package/src/gjc-runtime/ultragoal-succession.ts +31 -3
- package/src/harness-control-plane/control-endpoint.ts +24 -6
- package/src/harness-control-plane/finalize.ts +312 -25
- package/src/harness-control-plane/owner.ts +323 -89
- package/src/internal-urls/docs-index.generated.ts +23 -20
- package/src/internal-urls/embedded-protocol.ts +83 -0
- package/src/internal-urls/index.ts +1 -0
- package/src/internal-urls/parse.ts +21 -1
- package/src/internal-urls/router.ts +4 -2
- package/src/main.ts +192 -74
- package/src/modes/acp/acp-agent.ts +973 -56
- package/src/modes/acp/startup-provenance.ts +59 -0
- package/src/modes/components/custom-provider-wizard.ts +308 -7
- package/src/modes/components/gjc-bundle-settings.ts +21 -1
- package/src/modes/components/oauth-selector.ts +9 -0
- package/src/modes/components/session-selector.ts +47 -4
- package/src/modes/components/tool-status-header.ts +72 -6
- package/src/modes/components/user-message-selector.ts +57 -15
- package/src/modes/controllers/command-controller.ts +58 -32
- package/src/modes/controllers/extension-ui-controller.ts +33 -7
- package/src/modes/controllers/input-controller.ts +4 -0
- package/src/modes/controllers/runtime-mcp-command-controller.ts +1 -1
- package/src/modes/controllers/selector-controller.ts +161 -15
- package/src/modes/interactive-mode.ts +21 -7
- package/src/modes/runtime-init.ts +1 -0
- package/src/modes/shared/agent-wire/workflow-gate-broker.ts +124 -7
- package/src/modes/shared/agent-wire/workflow-gate-types.ts +16 -2
- package/src/modes/types.ts +2 -2
- package/src/prompts/agent-fragments/browser-aside.md +1 -0
- package/src/prompts/system/title-system.md +1 -1
- package/src/prompts/tools/bash.md +1 -1
- package/src/prompts/tools/job.md +1 -1
- package/src/prompts/tools/read.md +2 -0
- package/src/runtime/network-prewarm-service.test.ts +36 -1
- package/src/runtime/network-prewarm-service.ts +28 -3
- package/src/runtime/process-lifecycle.ts +22 -11
- package/src/runtime-mcp/config.ts +16 -1
- package/src/runtime-mcp/loader.ts +6 -3
- package/src/runtime-mcp/manager.ts +845 -109
- package/src/runtime-mcp/pool.test.ts +31 -0
- package/src/runtime-mcp/pool.ts +304 -28
- package/src/runtime-mcp/redaction.ts +42 -0
- package/src/runtime-mcp/startup-policy.ts +7 -0
- package/src/runtime-mcp/tool-bridge.ts +71 -0
- package/src/runtime-mcp/transports/http.ts +108 -25
- package/src/sdk/acp/adapter.ts +27 -8
- package/src/sdk/broker/broker.ts +1431 -198
- package/src/sdk/broker/ensure.ts +21 -3
- package/src/sdk/broker/identity.ts +22 -1
- package/src/sdk/broker/lifecycle-ledger.ts +95 -31
- package/src/sdk/broker/lifecycle.ts +690 -141
- package/src/sdk/broker/managed-task-dag.ts +1927 -0
- package/src/sdk/broker/managed-task-verification.ts +642 -0
- package/src/sdk/broker/runtime.ts +1 -1
- package/src/sdk/broker/session-index.ts +97 -4
- package/src/sdk/broker/spawn-authority.ts +175 -14
- package/src/sdk/broker/startup-failure.ts +80 -1
- package/src/sdk/broker/stderr-drainer.ts +59 -0
- package/src/sdk/broker/transport.ts +1 -0
- package/src/sdk/bus/chat-daemon-control.ts +2 -2
- package/src/sdk/bus/chat-daemon-runtime.ts +1 -0
- package/src/sdk/bus/index.ts +707 -81
- package/src/sdk/bus/telegram-daemon-cli.ts +31 -2
- package/src/sdk/bus/telegram-daemon-contract.ts +7 -1
- package/src/sdk/bus/telegram-daemon.ts +10 -3
- package/src/sdk/cli/master-cli.ts +47 -36
- package/src/sdk/cli/rows.ts +30 -7
- package/src/sdk/cli/session-cli.ts +705 -184
- package/src/sdk/client/client.ts +18 -0
- package/src/sdk/guides/catalog.ts +2 -2
- package/src/sdk/guides/cli.ts +20 -62
- package/src/sdk/guides/verify.ts +14 -0
- package/src/sdk/host/host.ts +49 -5
- package/src/sdk/host/session-runtime.test.ts +184 -2
- package/src/sdk/host/session-runtime.ts +322 -101
- package/src/sdk/host/types.ts +12 -1
- package/src/sdk/host/websocket-transport.lifecycle.test.ts +84 -0
- package/src/sdk/host/websocket-transport.ts +40 -6
- package/src/sdk/index.ts +11 -0
- package/src/sdk/lifecycle/service.ts +2 -0
- package/src/sdk/prompt-deadline-flush.ts +356 -0
- package/src/sdk/prompt-deadline-manager.ts +133 -1
- package/src/sdk/prompt-tool-boundary.ts +121 -0
- package/src/sdk/protocol/operation-inventory.generated.json +106 -0
- package/src/sdk/router/session-router.ts +9 -1
- package/src/sdk/session.ts +763 -116
- package/src/sdk/startup-capability.ts +1 -1
- package/src/sdk/transport/relay.ts +71 -6
- package/src/sdk/transport/serve-cli.ts +397 -42
- package/src/sdk/transport/socket.ts +12 -11
- package/src/sdk/transport/stdio.ts +7 -3
- package/src/session/agent-session.ts +2472 -407
- package/src/session/fallback-chain-controller.ts +6 -7
- package/src/session/fold-coordinator.ts +24 -5
- package/src/session/internal/managed-session-scope.ts +68 -18
- package/src/session/internal/managed-session-storage.ts +334 -12
- package/src/session/session-manager.ts +382 -44
- package/src/session/session-work-lease.ts +34 -0
- package/src/setup/model-onboarding-guidance.ts +1 -1
- package/src/setup/provider-onboarding.ts +397 -24
- package/src/setup/provider-presets.json +2 -1
- package/src/slash-commands/builtin-registry.ts +259 -15
- package/src/task/executor.ts +46 -17
- package/src/task/index.ts +14 -2
- package/src/task/types.ts +2 -0
- package/src/tools/bash-interactive.ts +2 -0
- package/src/tools/bash.ts +118 -78
- package/src/tools/fetch.ts +140 -25
- package/src/tools/job.ts +151 -25
- package/src/tools/output-meta.ts +15 -2
- package/src/tools/path-utils.ts +27 -3
- package/src/tools/read.ts +3 -3
- package/src/tools/steer-fold.ts +107 -0
- package/src/tools/subagent-render.ts +24 -1
- package/src/tools/subagent.ts +27 -1
- package/src/tools/tool-catalog.generated.ts +29 -2
- package/src/tools/tool-errors.ts +4 -0
- package/src/utils/git.ts +53 -3
- package/src/utils/markit.ts +55 -41
- package/src/utils/mupdf-assets.d.ts +4 -0
- package/src/utils/mupdf-embedded.ts +4 -0
- package/src/utils/mupdf.ts +136 -0
- package/src/utils/session-title-generation.ts +29 -0
- package/src/utils/title-generator.ts +46 -2
- package/src/web/scrapers/types.ts +24 -3
- package/vendor/markit-ai/LICENSE +21 -0
- package/vendor/markit-ai/MANIFEST.json +412 -0
- package/vendor/markit-ai/dist/commands/config.d.ts +4 -0
- package/vendor/markit-ai/dist/commands/config.js +139 -0
- package/vendor/markit-ai/dist/commands/convert.d.ts +6 -0
- package/vendor/markit-ai/dist/commands/convert.js +113 -0
- package/vendor/markit-ai/dist/commands/formats.d.ts +2 -0
- package/vendor/markit-ai/dist/commands/formats.js +92 -0
- package/vendor/markit-ai/dist/commands/init.d.ts +2 -0
- package/vendor/markit-ai/dist/commands/init.js +29 -0
- package/vendor/markit-ai/dist/commands/onboard.d.ts +2 -0
- package/vendor/markit-ai/dist/commands/onboard.js +61 -0
- package/vendor/markit-ai/dist/commands/plugin.d.ts +4 -0
- package/vendor/markit-ai/dist/commands/plugin.js +58 -0
- package/vendor/markit-ai/dist/config.d.ts +26 -0
- package/vendor/markit-ai/dist/config.js +42 -0
- package/vendor/markit-ai/dist/converters/audio.d.ts +7 -0
- package/vendor/markit-ai/dist/converters/audio.js +104 -0
- package/vendor/markit-ai/dist/converters/csv.d.ts +7 -0
- package/vendor/markit-ai/dist/converters/csv.js +83 -0
- package/vendor/markit-ai/dist/converters/docx.d.ts +6 -0
- package/vendor/markit-ai/dist/converters/docx.js +57 -0
- package/vendor/markit-ai/dist/converters/epub.d.ts +8 -0
- package/vendor/markit-ai/dist/converters/epub.js +128 -0
- package/vendor/markit-ai/dist/converters/github.d.ts +18 -0
- package/vendor/markit-ai/dist/converters/github.js +148 -0
- package/vendor/markit-ai/dist/converters/html.d.ts +6 -0
- package/vendor/markit-ai/dist/converters/html.js +30 -0
- package/vendor/markit-ai/dist/converters/image.d.ts +6 -0
- package/vendor/markit-ai/dist/converters/image.js +124 -0
- package/vendor/markit-ai/dist/converters/ipynb.d.ts +6 -0
- package/vendor/markit-ai/dist/converters/ipynb.js +75 -0
- package/vendor/markit-ai/dist/converters/iwork.d.ts +20 -0
- package/vendor/markit-ai/dist/converters/iwork.js +391 -0
- package/vendor/markit-ai/dist/converters/json.d.ts +6 -0
- package/vendor/markit-ai/dist/converters/json.js +21 -0
- package/vendor/markit-ai/dist/converters/pdf/columns.d.ts +35 -0
- package/vendor/markit-ai/dist/converters/pdf/columns.js +93 -0
- package/vendor/markit-ai/dist/converters/pdf/extract.d.ts +19 -0
- package/vendor/markit-ai/dist/converters/pdf/extract.js +514 -0
- package/vendor/markit-ai/dist/converters/pdf/grid.d.ts +25 -0
- package/vendor/markit-ai/dist/converters/pdf/grid.js +795 -0
- package/vendor/markit-ai/dist/converters/pdf/headers.d.ts +24 -0
- package/vendor/markit-ai/dist/converters/pdf/headers.js +108 -0
- package/vendor/markit-ai/dist/converters/pdf/index.d.ts +19 -0
- package/vendor/markit-ai/dist/converters/pdf/index.js +136 -0
- package/vendor/markit-ai/dist/converters/pdf/mupdf-loader.js +9 -0
- package/vendor/markit-ai/dist/converters/pdf/render.d.ts +24 -0
- package/vendor/markit-ai/dist/converters/pdf/render.js +513 -0
- package/vendor/markit-ai/dist/converters/pdf/types.d.ts +75 -0
- package/vendor/markit-ai/dist/converters/pdf/types.js +1 -0
- package/vendor/markit-ai/dist/converters/plain-text.d.ts +6 -0
- package/vendor/markit-ai/dist/converters/plain-text.js +87 -0
- package/vendor/markit-ai/dist/converters/pptx.d.ts +8 -0
- package/vendor/markit-ai/dist/converters/pptx.js +289 -0
- package/vendor/markit-ai/dist/converters/rss.d.ts +11 -0
- package/vendor/markit-ai/dist/converters/rss.js +138 -0
- package/vendor/markit-ai/dist/converters/wikipedia.d.ts +6 -0
- package/vendor/markit-ai/dist/converters/wikipedia.js +33 -0
- package/vendor/markit-ai/dist/converters/xlsx.d.ts +8 -0
- package/vendor/markit-ai/dist/converters/xlsx.js +147 -0
- package/vendor/markit-ai/dist/converters/xml.d.ts +6 -0
- package/vendor/markit-ai/dist/converters/xml.js +18 -0
- package/vendor/markit-ai/dist/converters/yaml.d.ts +6 -0
- package/vendor/markit-ai/dist/converters/yaml.js +17 -0
- package/vendor/markit-ai/dist/converters/zip.d.ts +8 -0
- package/vendor/markit-ai/dist/converters/zip.js +57 -0
- package/vendor/markit-ai/dist/index.d.ts +30 -0
- package/vendor/markit-ai/dist/index.js +26 -0
- package/vendor/markit-ai/dist/main.d.ts +2 -0
- package/vendor/markit-ai/dist/main.js +191 -0
- package/vendor/markit-ai/dist/markit.d.ts +45 -0
- package/vendor/markit-ai/dist/markit.js +267 -0
- package/vendor/markit-ai/dist/plugins/api.d.ts +7 -0
- package/vendor/markit-ai/dist/plugins/api.js +42 -0
- package/vendor/markit-ai/dist/plugins/index.d.ts +4 -0
- package/vendor/markit-ai/dist/plugins/index.js +3 -0
- package/vendor/markit-ai/dist/plugins/installer.d.ts +25 -0
- package/vendor/markit-ai/dist/plugins/installer.js +176 -0
- package/vendor/markit-ai/dist/plugins/loader.d.ts +6 -0
- package/vendor/markit-ai/dist/plugins/loader.js +61 -0
- package/vendor/markit-ai/dist/plugins/types.d.ts +25 -0
- package/vendor/markit-ai/dist/plugins/types.js +1 -0
- package/vendor/markit-ai/dist/providers/anthropic.d.ts +2 -0
- package/vendor/markit-ai/dist/providers/anthropic.js +47 -0
- package/vendor/markit-ai/dist/providers/index.d.ts +21 -0
- package/vendor/markit-ai/dist/providers/index.js +56 -0
- package/vendor/markit-ai/dist/providers/openai.d.ts +2 -0
- package/vendor/markit-ai/dist/providers/openai.js +76 -0
- package/vendor/markit-ai/dist/providers/types.d.ts +26 -0
- package/vendor/markit-ai/dist/providers/types.js +1 -0
- package/vendor/markit-ai/dist/types.d.ts +36 -0
- package/vendor/markit-ai/dist/types.js +1 -0
- package/vendor/markit-ai/dist/utils/exit-codes.d.ts +4 -0
- package/vendor/markit-ai/dist/utils/exit-codes.js +4 -0
- package/vendor/markit-ai/dist/utils/output.d.ts +22 -0
- package/vendor/markit-ai/dist/utils/output.js +31 -0
- package/vendor/markit-ai/dist/utils/turndown.d.ts +8 -0
- package/vendor/markit-ai/dist/utils/turndown.js +70 -0
- package/vendor/markit-ai/package.json +74 -0
- package/vendor/markit-ai.patch +49 -0
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { createHash } from "node:crypto";
|
|
2
2
|
import * as fs from "node:fs/promises";
|
|
3
3
|
import * as path from "node:path";
|
|
4
|
+
import { logger } from "@gajae-code/utils";
|
|
4
5
|
import { withFileLock } from "../config/file-lock";
|
|
5
6
|
import { ensureCoordinatorDirectory, syncCoordinatorDirectory, writeCoordinatorAtomic } from "./durability";
|
|
6
7
|
import type { PrivateAskGateCodecV1, PublicReason } from "./question-gate-codec";
|
|
@@ -567,7 +568,7 @@ async function readTransactionJson<T>(file: string): Promise<T | null> {
|
|
|
567
568
|
source = await fs.readFile(file, "utf8");
|
|
568
569
|
} catch (error) {
|
|
569
570
|
if ((error as NodeJS.ErrnoException).code === "ENOENT") return null;
|
|
570
|
-
throw
|
|
571
|
+
throw error;
|
|
571
572
|
}
|
|
572
573
|
try {
|
|
573
574
|
const value: unknown = JSON.parse(source);
|
|
@@ -605,6 +606,71 @@ function migrateLegacyTransactionV1(transaction: CoordinatorSessionTransactionV1
|
|
|
605
606
|
}
|
|
606
607
|
const authorities = canonical.gate_authorities;
|
|
607
608
|
const endpointIncarnation = typeof broker?.endpoint_incarnation === "string" ? broker.endpoint_incarnation : null;
|
|
609
|
+
// Report ids predate COORDINATOR_REPORT_ID_PATTERN. A legacy id is rejected by
|
|
610
|
+
// the reader forever, and because the reader is the namespace-wide scan, one
|
|
611
|
+
// historical report bricks every coordination read. Rekey legacy reports onto
|
|
612
|
+
// the canonical digest form instead of leaving the WAL permanently unreadable.
|
|
613
|
+
const reports = canonical.reports;
|
|
614
|
+
const migratedReportIds = new Map<string, string>();
|
|
615
|
+
if (reports && typeof reports === "object" && !Array.isArray(reports)) {
|
|
616
|
+
const table = reports as Record<string, Record<string, unknown>>;
|
|
617
|
+
for (const [reportId, report] of Object.entries(table)) {
|
|
618
|
+
if (COORDINATOR_REPORT_ID_PATTERN.test(reportId)) continue;
|
|
619
|
+
if (!report || typeof report !== "object" || Array.isArray(report)) continue;
|
|
620
|
+
const operationId = typeof report.operation_id === "string" ? report.operation_id : reportId;
|
|
621
|
+
let migratedId = `report-${digest(`legacy-report\0${record.session_id}\0${operationId}`)}`;
|
|
622
|
+
const existing = table[migratedId];
|
|
623
|
+
if (existing) {
|
|
624
|
+
const existingOperationId = typeof existing.operation_id === "string" ? existing.operation_id : null;
|
|
625
|
+
if (existingOperationId !== operationId) {
|
|
626
|
+
// A malformed legacy WAL can collide with the operation-derived digest.
|
|
627
|
+
// Preserve both records under distinct canonical ids rather than silently
|
|
628
|
+
// discarding an unrelated report.
|
|
629
|
+
migratedId = `report-${digest(`legacy-report\0${record.session_id}\0${operationId}\0${reportId}`)}`;
|
|
630
|
+
}
|
|
631
|
+
}
|
|
632
|
+
if (table[migratedId]) {
|
|
633
|
+
// The canonical report already wins this deterministic collision. The
|
|
634
|
+
// operation/outbox rewrites below keep every surviving reference coherent.
|
|
635
|
+
logger.warn("Coordinator legacy report id collision resolved", {
|
|
636
|
+
sessionId: record.session_id,
|
|
637
|
+
legacyReportId: reportId,
|
|
638
|
+
canonicalReportId: migratedId,
|
|
639
|
+
operationId,
|
|
640
|
+
});
|
|
641
|
+
migratedReportIds.set(reportId, migratedId);
|
|
642
|
+
delete table[reportId];
|
|
643
|
+
continue;
|
|
644
|
+
}
|
|
645
|
+
report.report_id = migratedId;
|
|
646
|
+
table[migratedId] = report;
|
|
647
|
+
migratedReportIds.set(reportId, migratedId);
|
|
648
|
+
delete table[reportId];
|
|
649
|
+
}
|
|
650
|
+
}
|
|
651
|
+
if (migratedReportIds.size > 0) {
|
|
652
|
+
const requests = record.requests as Record<string, unknown>;
|
|
653
|
+
const operations = requests.operations;
|
|
654
|
+
if (operations && typeof operations === "object" && !Array.isArray(operations)) {
|
|
655
|
+
for (const operation of Object.values(operations as Record<string, Record<string, unknown>>)) {
|
|
656
|
+
if (!operation || typeof operation !== "object" || Array.isArray(operation)) continue;
|
|
657
|
+
if (typeof operation.local_id === "string")
|
|
658
|
+
operation.local_id = migratedReportIds.get(operation.local_id) ?? operation.local_id;
|
|
659
|
+
}
|
|
660
|
+
}
|
|
661
|
+
const outbox = record.outbox as Record<string, Record<string, unknown>>;
|
|
662
|
+
for (const event of Object.values(outbox)) {
|
|
663
|
+
if (!event || typeof event !== "object" || Array.isArray(event) || event.entity !== "report") continue;
|
|
664
|
+
if (typeof event.entity_id === "string")
|
|
665
|
+
event.entity_id = migratedReportIds.get(event.entity_id) ?? event.entity_id;
|
|
666
|
+
const payload = event.payload;
|
|
667
|
+
if (payload && typeof payload === "object" && !Array.isArray(payload)) {
|
|
668
|
+
const reportId = (payload as Record<string, unknown>).report_id;
|
|
669
|
+
if (typeof reportId === "string")
|
|
670
|
+
(payload as Record<string, unknown>).report_id = migratedReportIds.get(reportId) ?? reportId;
|
|
671
|
+
}
|
|
672
|
+
}
|
|
673
|
+
}
|
|
608
674
|
if (authorities && typeof authorities === "object" && !Array.isArray(authorities)) {
|
|
609
675
|
for (const authority of Object.values(authorities as Record<string, unknown>)) {
|
|
610
676
|
if (!authority || typeof authority !== "object" || Array.isArray(authority)) continue;
|
|
@@ -1322,9 +1388,16 @@ export async function listCanonicalActiveSessions(
|
|
|
1322
1388
|
const active: string[] = [];
|
|
1323
1389
|
for (const sessionId of sessionIds) {
|
|
1324
1390
|
if (options.signal?.aborted) throw options.signal.reason ?? new Error("aborted");
|
|
1325
|
-
|
|
1326
|
-
|
|
1327
|
-
|
|
1391
|
+
let transaction: CoordinatorSessionTransactionV1 | null;
|
|
1392
|
+
try {
|
|
1393
|
+
transaction = await readTransactionJson<CoordinatorSessionTransactionV1>(transactionPath(paths, sessionId));
|
|
1394
|
+
if (!transaction) continue;
|
|
1395
|
+
assertTransaction(transaction, path.basename(paths.root), sessionId);
|
|
1396
|
+
} catch (error) {
|
|
1397
|
+
if (!(error instanceof Error) || error.message !== "state_corrupt") throw error;
|
|
1398
|
+
logger.warn("Coordinator active-session scan skipped corrupt WAL", { sessionId });
|
|
1399
|
+
continue;
|
|
1400
|
+
}
|
|
1328
1401
|
const hasActiveTurn = Object.values(transaction.canonical.turns).some(turn =>
|
|
1329
1402
|
["queued", "delivering", "active", "waiting_for_answer", "completing"].includes(turn.status),
|
|
1330
1403
|
);
|
|
@@ -1418,14 +1491,74 @@ export async function advanceSchedulerCursor(
|
|
|
1418
1491
|
export async function readSessionTransaction(
|
|
1419
1492
|
paths: CoordinatorStatePaths,
|
|
1420
1493
|
sessionId: string,
|
|
1494
|
+
options: { signal?: AbortSignal } = {},
|
|
1421
1495
|
): Promise<CoordinatorSessionTransactionV1 | null> {
|
|
1496
|
+
options.signal?.throwIfAborted();
|
|
1422
1497
|
const transaction = await readTransactionJson<CoordinatorSessionTransactionV1>(transactionPath(paths, sessionId));
|
|
1498
|
+
options.signal?.throwIfAborted();
|
|
1423
1499
|
if (!transaction) return null;
|
|
1500
|
+
// Atomic WAL replacement permits lock-free snapshots. Normalize only in
|
|
1501
|
+
// memory; durable report migration belongs to explicit projection recovery.
|
|
1424
1502
|
assertTransaction(transaction, path.basename(paths.root), sessionId);
|
|
1425
|
-
normalizeOutbox(transaction);
|
|
1426
1503
|
return transaction;
|
|
1427
1504
|
}
|
|
1428
1505
|
|
|
1506
|
+
export async function repairLegacyReportIds(
|
|
1507
|
+
paths: CoordinatorStatePaths,
|
|
1508
|
+
sessionId: string,
|
|
1509
|
+
options: { signal?: AbortSignal } = {},
|
|
1510
|
+
): Promise<CoordinatorSessionTransactionV1 | null> {
|
|
1511
|
+
options.signal?.throwIfAborted();
|
|
1512
|
+
const file = transactionPath(paths, sessionId);
|
|
1513
|
+
const snapshot = await readTransactionJson<CoordinatorSessionTransactionV1>(file);
|
|
1514
|
+
options.signal?.throwIfAborted();
|
|
1515
|
+
if (!snapshot) return null;
|
|
1516
|
+
const hasLegacyReports = Object.keys(snapshot.canonical?.reports ?? {}).some(
|
|
1517
|
+
reportId => !COORDINATOR_REPORT_ID_PATTERN.test(reportId),
|
|
1518
|
+
);
|
|
1519
|
+
if (!hasLegacyReports) {
|
|
1520
|
+
// Atomic WAL replacement permits lock-free snapshots. In-memory schema
|
|
1521
|
+
// normalization alone must never turn an observation into a durable write.
|
|
1522
|
+
assertTransaction(snapshot, path.basename(paths.root), sessionId);
|
|
1523
|
+
return snapshot;
|
|
1524
|
+
}
|
|
1525
|
+
// Only legacy report rekeying needs a durable repair. Re-read under the lock
|
|
1526
|
+
// so a concurrent writer cannot be overwritten; never wait behind that writer
|
|
1527
|
+
// during namespace observation. The caller can skip a contended peer and retry.
|
|
1528
|
+
return await withFileLock(
|
|
1529
|
+
transactionLockPath(paths, sessionId),
|
|
1530
|
+
async () => {
|
|
1531
|
+
const transaction = await readTransactionJson<CoordinatorSessionTransactionV1>(file);
|
|
1532
|
+
if (!transaction) return null;
|
|
1533
|
+
const legacyReportIds = Object.keys(transaction.canonical?.reports ?? {}).filter(
|
|
1534
|
+
reportId => !COORDINATOR_REPORT_ID_PATTERN.test(reportId),
|
|
1535
|
+
);
|
|
1536
|
+
assertTransaction(transaction, path.basename(paths.root), sessionId);
|
|
1537
|
+
normalizeOutbox(transaction);
|
|
1538
|
+
if (legacyReportIds.some(reportId => !Object.hasOwn(transaction.canonical.reports, reportId))) {
|
|
1539
|
+
// Legacy report ids and their references are repaired as one durable WAL
|
|
1540
|
+
// transaction. Bump the revision so scheduler/projection consumers cannot
|
|
1541
|
+
// mistake the repaired image for the pre-migration one.
|
|
1542
|
+
transaction.revision += 1;
|
|
1543
|
+
transaction.projection.scheduler_pending_revision = transaction.revision;
|
|
1544
|
+
transaction.projection.scheduler_digest = digest(
|
|
1545
|
+
JSON.stringify({
|
|
1546
|
+
session_id: transaction.session_id,
|
|
1547
|
+
revision: transaction.revision,
|
|
1548
|
+
active: transaction.canonical.queue.active_turn_id !== null,
|
|
1549
|
+
state: transaction.canonical.desired_session_state,
|
|
1550
|
+
}),
|
|
1551
|
+
);
|
|
1552
|
+
assertTransaction(transaction, path.basename(paths.root), sessionId);
|
|
1553
|
+
options.signal?.throwIfAborted();
|
|
1554
|
+
await writeAtomic(file, transaction);
|
|
1555
|
+
}
|
|
1556
|
+
return transaction;
|
|
1557
|
+
},
|
|
1558
|
+
{ ...lockOptions(options.signal), retries: 1, retryDelayMs: 0 },
|
|
1559
|
+
);
|
|
1560
|
+
}
|
|
1561
|
+
|
|
1429
1562
|
export async function withSessionTransaction<T>(
|
|
1430
1563
|
paths: CoordinatorStatePaths,
|
|
1431
1564
|
sessionId: string,
|
|
@@ -1746,7 +1879,10 @@ export async function bindCreationRequest(
|
|
|
1746
1879
|
)
|
|
1747
1880
|
)
|
|
1748
1881
|
throw new Error("session_closing");
|
|
1749
|
-
if (
|
|
1882
|
+
if (
|
|
1883
|
+
request.canonical_create_intent &&
|
|
1884
|
+
creationIntentDigest(request.canonical_create_intent) !== creationIntentDigest(intent)
|
|
1885
|
+
)
|
|
1750
1886
|
throw new Error("idempotency_conflict");
|
|
1751
1887
|
request.canonical_create_intent ??= intent;
|
|
1752
1888
|
request.session_id = session.session_id;
|
|
@@ -2303,10 +2439,19 @@ export async function enumeratePublicDeliveries(
|
|
|
2303
2439
|
after_order_key: afterOrderKey,
|
|
2304
2440
|
});
|
|
2305
2441
|
} catch (error) {
|
|
2306
|
-
if (
|
|
2442
|
+
if (error instanceof Error && (error.message === "resource_gone" || error.message === "state_corrupt")) {
|
|
2443
|
+
if (error.message === "state_corrupt")
|
|
2444
|
+
logger.warn("Coordinator delivery scan skipped corrupt WAL", { sessionId });
|
|
2445
|
+
} else throw error;
|
|
2446
|
+
}
|
|
2447
|
+
let endpointIncarnation: string | undefined;
|
|
2448
|
+
try {
|
|
2449
|
+
endpointIncarnation = (await readSessionTransaction(paths, sessionId))?.canonical.session.broker
|
|
2450
|
+
.endpoint_incarnation;
|
|
2451
|
+
} catch (error) {
|
|
2452
|
+
if (!(error instanceof Error) || error.message !== "state_corrupt") throw error;
|
|
2453
|
+
logger.warn("Coordinator delivery scan skipped corrupt WAL", { sessionId });
|
|
2307
2454
|
}
|
|
2308
|
-
const endpointIncarnation = (await readSessionTransaction(paths, sessionId))?.canonical.session.broker
|
|
2309
|
-
.endpoint_incarnation;
|
|
2310
2455
|
for (const claim of batch)
|
|
2311
2456
|
claims.push({
|
|
2312
2457
|
...claim,
|
|
@@ -2349,6 +2494,30 @@ export function compactTransaction(transaction: CoordinatorSessionTransactionV1,
|
|
|
2349
2494
|
);
|
|
2350
2495
|
const pinnedRequests = new Set<object>(pinnedPrompts);
|
|
2351
2496
|
const pinnedTurns = new Set(pinnedPrompts.map(request => request.coordinator_turn_id));
|
|
2497
|
+
// An active acknowledged turn proves its runtime receipt through the prompt
|
|
2498
|
+
// request that carries it. Dropping that request on retention leaves the WAL
|
|
2499
|
+
// failing its own `assertTransaction` receipt invariant on the next read, so
|
|
2500
|
+
// the session — and every namespace-wide scan that touches it — is corrupt
|
|
2501
|
+
// forever. Retention must never outrank an invariant the reader enforces.
|
|
2502
|
+
const activeTurnStatuses = new Set(["delivering", "active", "waiting_for_answer", "completing"]);
|
|
2503
|
+
const receiptBearingPromptIds = new Set(
|
|
2504
|
+
Object.entries(transaction.requests.prompts)
|
|
2505
|
+
.filter(([, request]) => {
|
|
2506
|
+
const turn = request.coordinator_turn_id
|
|
2507
|
+
? transaction.canonical.turns[request.coordinator_turn_id]
|
|
2508
|
+
: undefined;
|
|
2509
|
+
if (!turn || !activeTurnStatuses.has(turn.status)) return false;
|
|
2510
|
+
const delivery = turn.delivery as Record<string, unknown>;
|
|
2511
|
+
if (delivery.prompt_acknowledged !== true) return false;
|
|
2512
|
+
return (
|
|
2513
|
+
["accepted", "linked", "terminal", "completed"].includes(request.phase) &&
|
|
2514
|
+
request.runtime_receipt?.accepted === true &&
|
|
2515
|
+
request.runtime_receipt.command_id === delivery.runtime_command_id &&
|
|
2516
|
+
request.runtime_receipt.turn_id === delivery.runtime_turn_id
|
|
2517
|
+
);
|
|
2518
|
+
})
|
|
2519
|
+
.map(([id]) => id),
|
|
2520
|
+
);
|
|
2352
2521
|
for (const [id, event] of Object.entries(transaction.outbox))
|
|
2353
2522
|
if (
|
|
2354
2523
|
event.emitted &&
|
|
@@ -2362,6 +2531,7 @@ export function compactTransaction(transaction: CoordinatorSessionTransactionV1,
|
|
|
2362
2531
|
if (
|
|
2363
2532
|
request.phase === "completed" &&
|
|
2364
2533
|
!pinnedRequests.has(request) &&
|
|
2534
|
+
!receiptBearingPromptIds.has(id) &&
|
|
2365
2535
|
old(request.updated_at) &&
|
|
2366
2536
|
JSON.stringify(transaction.canonical).includes(id) === false
|
|
2367
2537
|
)
|