@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
|
@@ -11,6 +11,7 @@ import {
|
|
|
11
11
|
isTelegramComplete,
|
|
12
12
|
type NotificationSettingsReader,
|
|
13
13
|
parseNotificationSettingsSnapshot,
|
|
14
|
+
tokenFingerprint,
|
|
14
15
|
} from "./config";
|
|
15
16
|
import { daemonPaths, HEARTBEAT_TTL_MS } from "./daemon-paths";
|
|
16
17
|
import { doctorDaemonIdentityMatches, doctorDaemonOccupancySettled } from "./doctor-daemon-restart";
|
|
@@ -317,6 +318,8 @@ export async function runDaemonInternal(argv: string[], deps: RunDaemonInternalD
|
|
|
317
318
|
const settings = await resolveDaemonSettings(resolvedAgentDir, deps);
|
|
318
319
|
const cfg = getNotificationConfig(settings);
|
|
319
320
|
if (!isProviderEffectivelyEnabled(cfg, "telegram") || !isTelegramComplete(cfg)) return;
|
|
321
|
+
const initialTokenFingerprint = tokenFingerprint(cfg.botToken);
|
|
322
|
+
const initialChatId = cfg.chatId;
|
|
320
323
|
// Startup hygiene: reclaim inert quarantine/staging debris left by crashed
|
|
321
324
|
// writers so the notifications dir cannot grow unboundedly and slow every
|
|
322
325
|
// later endpoint scan. Never awaited by startup; a rejection is logged and
|
|
@@ -425,6 +428,7 @@ export async function runDaemonInternal(argv: string[], deps: RunDaemonInternalD
|
|
|
425
428
|
toolActivity: cfg.toolActivity,
|
|
426
429
|
topics: cfg.topics,
|
|
427
430
|
btw: cfg.btw,
|
|
431
|
+
keepAliveWithoutAttachments: true,
|
|
428
432
|
pid: deps.processPid ?? process.pid,
|
|
429
433
|
control: createDaemonControlHooks(settings as Settings),
|
|
430
434
|
topicRegistryAuthority,
|
|
@@ -525,6 +529,31 @@ export async function runDaemonInternal(argv: string[], deps: RunDaemonInternalD
|
|
|
525
529
|
// running daemon — a stale or reused PID could match, killing a
|
|
526
530
|
// foreign process. The stall watchdog below handles non-progress.
|
|
527
531
|
}
|
|
532
|
+
// The daemon's startup settings object is intentionally lightweight and
|
|
533
|
+
// does not watch the config file. Re-resolve it only after the complete
|
|
534
|
+
// owner proof above. Unknown configuration cannot authorize continued
|
|
535
|
+
// command ingress with startup credentials.
|
|
536
|
+
try {
|
|
537
|
+
const refreshedSettings = await resolveDaemonSettings(resolvedAgentDir, deps);
|
|
538
|
+
if (!watchdogActive || stopRequested) return;
|
|
539
|
+
const refreshedCfg = getNotificationConfig(refreshedSettings);
|
|
540
|
+
if (
|
|
541
|
+
!isProviderEffectivelyEnabled(refreshedCfg, "telegram") ||
|
|
542
|
+
!isTelegramComplete(refreshedCfg) ||
|
|
543
|
+
tokenFingerprint(refreshedCfg.botToken) !== initialTokenFingerprint ||
|
|
544
|
+
refreshedCfg.chatId !== initialChatId
|
|
545
|
+
) {
|
|
546
|
+
stopRequested = true;
|
|
547
|
+
daemon.requestStop("stop");
|
|
548
|
+
return;
|
|
549
|
+
}
|
|
550
|
+
} catch {
|
|
551
|
+
if (!watchdogActive || stopRequested) return;
|
|
552
|
+
stopRequested = true;
|
|
553
|
+
daemon.requestStop("stop");
|
|
554
|
+
logger.warn("telegram-daemon: configuration verification failed; stopping command ingress");
|
|
555
|
+
return;
|
|
556
|
+
}
|
|
528
557
|
if (lastHeartbeatAt === undefined || heartbeatAt !== lastHeartbeatAt) {
|
|
529
558
|
lastHeartbeatAt = heartbeatAt;
|
|
530
559
|
stalledSince = now();
|
|
@@ -536,8 +565,8 @@ export async function runDaemonInternal(argv: string[], deps: RunDaemonInternalD
|
|
|
536
565
|
daemon.requestStop("stop");
|
|
537
566
|
}
|
|
538
567
|
} catch {
|
|
539
|
-
//
|
|
540
|
-
//
|
|
568
|
+
// Ambiguous ownership state does not authorize owner replacement.
|
|
569
|
+
// Configuration verification has its own fail-closed boundary above.
|
|
541
570
|
} finally {
|
|
542
571
|
watchdogTickInFlight = false;
|
|
543
572
|
}
|
|
@@ -290,8 +290,14 @@ export const SDK_LIFECYCLE_ROUTER_PROTOCOL_VERSION = 1;
|
|
|
290
290
|
* first refusal, so an owner still running the generation-178 router keeps
|
|
291
291
|
* killing a session's mirroring after one transient rejection and must be
|
|
292
292
|
* replaced across this upgrade.
|
|
293
|
+
* Generation 190 acknowledges the protected prompt-deadline boundary change,
|
|
294
|
+
* so generation-189 owners are replaced instead of retaining the old path.
|
|
295
|
+
* Generation 192 makes session-host liveness a reference-counted work lease,
|
|
296
|
+
* so generation-191 owners cannot reap hosts with queued or promoted work.
|
|
297
|
+
* Generation 193 gates streamed content on negotiated observer capabilities,
|
|
298
|
+
* so existing owners are replaced before exposing the new observer path.
|
|
293
299
|
*/
|
|
294
|
-
export const DAEMON_GENERATION =
|
|
300
|
+
export const DAEMON_GENERATION = 194;
|
|
295
301
|
|
|
296
302
|
/**
|
|
297
303
|
* Serving-compatibility boundary for daemon lifecycle requests. Epoch 7
|
|
@@ -4087,6 +4087,11 @@ export interface TelegramDaemonOptions {
|
|
|
4087
4087
|
clearIntervalImpl?: typeof clearInterval;
|
|
4088
4088
|
btw?: { enabled: boolean };
|
|
4089
4089
|
idleTimeoutMs?: number;
|
|
4090
|
+
/**
|
|
4091
|
+
* Standalone daemon owners keep Telegram command ingress alive while no SDK
|
|
4092
|
+
* endpoints are attached. Embedded/test daemons retain finite-idle behavior.
|
|
4093
|
+
*/
|
|
4094
|
+
keepAliveWithoutAttachments?: boolean;
|
|
4090
4095
|
/** TTL for durable topic-adoption intents (default 10 minutes). Observed, not a fixed contract. */
|
|
4091
4096
|
adoptionIntentTtlMs?: number;
|
|
4092
4097
|
pid?: number;
|
|
@@ -5256,6 +5261,7 @@ export class TelegramNotificationDaemon {
|
|
|
5256
5261
|
this.#frameRouter = this.#createFrameRouter();
|
|
5257
5262
|
this.#attachmentRouter = new SessionRouter({
|
|
5258
5263
|
agentDir: opts.settings.getAgentDir(),
|
|
5264
|
+
observer: true,
|
|
5259
5265
|
deps: {
|
|
5260
5266
|
...opts.routerDeps,
|
|
5261
5267
|
onNotificationSubscription: subscription => this.#onAttachment(subscription),
|
|
@@ -12963,9 +12969,10 @@ export class TelegramNotificationDaemon {
|
|
|
12963
12969
|
const idleElapsed = this.runtime.now() - idleSince >= (this.opts.idleTimeoutMs ?? 60_000);
|
|
12964
12970
|
if (this.sessions.size > 0) {
|
|
12965
12971
|
idleSince = this.runtime.now();
|
|
12966
|
-
} else if (idleElapsed) {
|
|
12967
|
-
// Zero sessions past the idle window: exit so
|
|
12968
|
-
//
|
|
12972
|
+
} else if (!this.opts.keepAliveWithoutAttachments && idleElapsed) {
|
|
12973
|
+
// Zero sessions past the idle window: embedded/test owners exit so
|
|
12974
|
+
// they do not run forever. Standalone owners keep this command
|
|
12975
|
+
// receiver alive until control or owner fencing asks them to stop.
|
|
12969
12976
|
this.requestStop("idle_timeout");
|
|
12970
12977
|
break;
|
|
12971
12978
|
}
|
|
@@ -9,22 +9,25 @@
|
|
|
9
9
|
*/
|
|
10
10
|
import { randomUUID } from "node:crypto";
|
|
11
11
|
import * as path from "node:path";
|
|
12
|
-
import {
|
|
12
|
+
import { replaceTabs, truncateToWidth } from "@gajae-code/tui";
|
|
13
|
+
import { getAgentDir, sanitizeDisplayLine } from "@gajae-code/utils";
|
|
14
|
+
import { PublicCommandFailure } from "../../cli/public-command-errors";
|
|
13
15
|
import { type IndexedSession, isSessionAuthorityEligible, SessionIndex } from "../broker/session-index";
|
|
14
16
|
import { SdkClientError } from "../client";
|
|
15
17
|
import { dispatchSpawnGlobal } from "../lifecycle/broker-client";
|
|
18
|
+
import { sdkPublicFailure } from "./session-cli";
|
|
16
19
|
|
|
17
20
|
const MASTER_CAPABILITY_ENV = "GJC_MASTER_CAPABILITY";
|
|
18
21
|
const MASTER_SESSION_ENV = "GJC_MASTER_OWNER_SESSION_ID";
|
|
19
22
|
const SPAWN_TIMEOUT_MS = 120_000;
|
|
20
23
|
|
|
21
|
-
export class SdkMasterCliError extends
|
|
24
|
+
export class SdkMasterCliError extends PublicCommandFailure {
|
|
22
25
|
constructor(
|
|
23
26
|
readonly code: string,
|
|
24
|
-
|
|
27
|
+
_message: string,
|
|
25
28
|
readonly exitCode: 1 | 2 = 1,
|
|
26
29
|
) {
|
|
27
|
-
super(
|
|
30
|
+
super(sdkPublicFailure(exitCode === 2 ? "usage" : code, undefined, "pre-effect").input);
|
|
28
31
|
this.name = "SdkMasterCliError";
|
|
29
32
|
}
|
|
30
33
|
}
|
|
@@ -46,8 +49,6 @@ export interface SdkSpawnRendered {
|
|
|
46
49
|
sessionId?: string;
|
|
47
50
|
substrateKind?: string;
|
|
48
51
|
seed?: { phase?: string; clientRef?: string; commandId?: string; turnId?: string; status?: string };
|
|
49
|
-
idempotencyKey?: string;
|
|
50
|
-
error?: { code: string; message: string };
|
|
51
52
|
}
|
|
52
53
|
|
|
53
54
|
export interface SdkSpawnDependencies {
|
|
@@ -143,8 +144,15 @@ function opaque(value: unknown): string | undefined {
|
|
|
143
144
|
return typeof value === "string" && value.length > 0 && value.length <= 512 ? value : undefined;
|
|
144
145
|
}
|
|
145
146
|
|
|
147
|
+
function safeSpawnText(value: string): string {
|
|
148
|
+
return truncateToWidth(replaceTabs(sanitizeDisplayLine(value).replaceAll(/[\u2028\u2029]/gu, " ")), 512);
|
|
149
|
+
}
|
|
150
|
+
|
|
146
151
|
/** Projects an arbitrary Broker response onto the allowlisted render shape. */
|
|
147
|
-
export function safeSpawnRender(
|
|
152
|
+
export function safeSpawnRender(
|
|
153
|
+
response: unknown,
|
|
154
|
+
idempotencyKey?: string,
|
|
155
|
+
): { rendered: SdkSpawnRendered; exitCode: 0 } {
|
|
148
156
|
const outer = record(response);
|
|
149
157
|
if (outer?.ok === true) {
|
|
150
158
|
const result = record(outer.result);
|
|
@@ -171,31 +179,29 @@ export function safeSpawnRender(response: unknown): { rendered: SdkSpawnRendered
|
|
|
171
179
|
};
|
|
172
180
|
}
|
|
173
181
|
const error = record(outer?.error);
|
|
174
|
-
const
|
|
175
|
-
const
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
const
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
...
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
};
|
|
182
|
+
const result = record(outer?.result);
|
|
183
|
+
const seed = record(result?.seed);
|
|
184
|
+
const failure = sdkPublicFailure(typeof error?.code === "string" ? error.code : "operation_failed", error);
|
|
185
|
+
const resultReferences = sdkPublicFailure("operation_failed", result).input.references ?? [];
|
|
186
|
+
const seedReferences = sdkPublicFailure("operation_failed", seed).input.references ?? [];
|
|
187
|
+
throw new PublicCommandFailure({
|
|
188
|
+
...failure.input,
|
|
189
|
+
references: [
|
|
190
|
+
...(failure.input.references ?? []),
|
|
191
|
+
...resultReferences,
|
|
192
|
+
...seedReferences,
|
|
193
|
+
...(idempotencyKey === undefined ? [] : [{ kind: "idempotencyKey" as const, value: idempotencyKey }]),
|
|
194
|
+
],
|
|
195
|
+
});
|
|
188
196
|
}
|
|
189
197
|
|
|
190
198
|
export function renderSpawnTable(rendered: SdkSpawnRendered): string {
|
|
191
|
-
const lines = [`Result: ${rendered.code}`];
|
|
192
|
-
if (rendered.claimId) lines.push(`Claim: ${rendered.claimId}`);
|
|
193
|
-
if (rendered.sessionId) lines.push(`Child session: ${rendered.sessionId}`);
|
|
194
|
-
if (rendered.substrateKind) lines.push(`Substrate: ${rendered.substrateKind}`);
|
|
195
|
-
if (rendered.seed?.phase) lines.push(`Seed phase: ${rendered.seed.phase}`);
|
|
196
|
-
if (rendered.seed?.status) lines.push(`Seed status: ${rendered.seed.status}`);
|
|
197
|
-
if (rendered.error) lines.push(`Error: ${rendered.error.code}: ${rendered.error.message}`);
|
|
198
|
-
if (rendered.idempotencyKey) lines.push(`Retry idempotency key: ${rendered.idempotencyKey}`);
|
|
199
|
+
const lines = [`Result: ${safeSpawnText(rendered.code)}`];
|
|
200
|
+
if (rendered.claimId) lines.push(`Claim: ${safeSpawnText(rendered.claimId)}`);
|
|
201
|
+
if (rendered.sessionId) lines.push(`Child session: ${safeSpawnText(rendered.sessionId)}`);
|
|
202
|
+
if (rendered.substrateKind) lines.push(`Substrate: ${safeSpawnText(rendered.substrateKind)}`);
|
|
203
|
+
if (rendered.seed?.phase) lines.push(`Seed phase: ${safeSpawnText(rendered.seed.phase)}`);
|
|
204
|
+
if (rendered.seed?.status) lines.push(`Seed status: ${safeSpawnText(rendered.seed.status)}`);
|
|
199
205
|
|
|
200
206
|
return lines.join("\n");
|
|
201
207
|
}
|
|
@@ -207,7 +213,7 @@ export function renderSpawnTable(rendered: SdkSpawnRendered): string {
|
|
|
207
213
|
export async function runSdkSpawn(
|
|
208
214
|
args: SdkSpawnArgs,
|
|
209
215
|
dependencies: Partial<SdkSpawnDependencies> = {},
|
|
210
|
-
): Promise<{ rendered: SdkSpawnRendered; exitCode: 0
|
|
216
|
+
): Promise<{ rendered: SdkSpawnRendered; exitCode: 0 }> {
|
|
211
217
|
const deps: SdkSpawnDependencies = {
|
|
212
218
|
env: dependencies.env ?? process.env,
|
|
213
219
|
dispatch: dependencies.dispatch ?? brokerSpawnDispatch,
|
|
@@ -246,14 +252,19 @@ export async function runSdkSpawn(
|
|
|
246
252
|
},
|
|
247
253
|
idempotencyKey,
|
|
248
254
|
);
|
|
249
|
-
return safeSpawnRender(response);
|
|
255
|
+
return safeSpawnRender(response, idempotencyKey);
|
|
250
256
|
} catch (error) {
|
|
251
|
-
if (error instanceof
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
257
|
+
if (error instanceof PublicCommandFailure) throw error;
|
|
258
|
+
if (error instanceof SdkClientError) {
|
|
259
|
+
const failure = sdkPublicFailure(error.code, error.details);
|
|
260
|
+
throw new PublicCommandFailure({
|
|
261
|
+
...failure.input,
|
|
262
|
+
references: [...(failure.input.references ?? []), { kind: "idempotencyKey", value: idempotencyKey }],
|
|
255
263
|
});
|
|
256
264
|
}
|
|
257
|
-
throw
|
|
265
|
+
throw new PublicCommandFailure({
|
|
266
|
+
kind: "operation_failed",
|
|
267
|
+
references: [{ kind: "idempotencyKey", value: idempotencyKey }],
|
|
268
|
+
});
|
|
258
269
|
}
|
|
259
270
|
}
|
package/src/sdk/cli/rows.ts
CHANGED
|
@@ -90,27 +90,50 @@ export function tailItemKey(item: SdkTailItemV1): string {
|
|
|
90
90
|
return `${item.kind}\u0000${JSON.stringify(item.payload)}`;
|
|
91
91
|
}
|
|
92
92
|
|
|
93
|
-
/**
|
|
93
|
+
/**
|
|
94
|
+
* Holds positioned live frames until the checkpoint can stamp their
|
|
95
|
+
* authoritative revision, and keeps stamping after it.
|
|
96
|
+
*
|
|
97
|
+
* A positioned frame (generation+seq) that carries no revision after the
|
|
98
|
+
* checkpoint used to abort the whole tail with protocol_error. The host emits
|
|
99
|
+
* such frames whenever its transcript provider is momentarily unavailable
|
|
100
|
+
* (`eventRevision` returns undefined), which is ordinary during a turn - and
|
|
101
|
+
* one such frame turned a live, answering session into one no consumer could
|
|
102
|
+
* observe: every poll failed, the caller held the turn, and after five minutes
|
|
103
|
+
* reported it failed while the answer sat in the transcript (2026-09-17/18,
|
|
104
|
+
* five sessions). A frame is never a reason to lose the tail.
|
|
105
|
+
*
|
|
106
|
+
* The stamp is the LATEST revision observed, not the checkpoint's: revisions
|
|
107
|
+
* advance during a turn, and lifecycle order is compared revision-first. A
|
|
108
|
+
* terminal frame stamped with the initial checkpoint revision would sort
|
|
109
|
+
* before a start that carried a later one, and `--until-idle` would wait on a
|
|
110
|
+
* turn that had already ended.
|
|
111
|
+
*/
|
|
94
112
|
export class TailRevisionBuffer {
|
|
95
113
|
#pending: SdkTailItemV1[] = [];
|
|
96
|
-
#
|
|
114
|
+
#revision: number | undefined;
|
|
97
115
|
|
|
98
116
|
push(item: SdkTailItemV1): SdkTailItemV1[] {
|
|
99
|
-
if (item.revision !== undefined
|
|
100
|
-
|
|
117
|
+
if (item.revision !== undefined) {
|
|
118
|
+
if (this.#revision === undefined || item.revision > this.#revision) this.#revision = item.revision;
|
|
119
|
+
return [item];
|
|
120
|
+
}
|
|
121
|
+
if (item.generation === undefined || item.seq === undefined) return [item];
|
|
122
|
+
if (this.#revision === undefined) {
|
|
101
123
|
this.#pending.push(item);
|
|
102
124
|
return [];
|
|
103
125
|
}
|
|
104
|
-
|
|
126
|
+
item.revision = this.#revision;
|
|
127
|
+
return [item];
|
|
105
128
|
}
|
|
106
129
|
|
|
107
130
|
resolve(revision: number): SdkTailItemV1[] {
|
|
108
131
|
if (!Number.isSafeInteger(revision) || revision < 0)
|
|
109
132
|
throw new Error("Tail revision must be a non-negative integer.");
|
|
110
|
-
this.#
|
|
133
|
+
if (this.#revision === undefined || revision > this.#revision) this.#revision = revision;
|
|
111
134
|
const pending = this.#pending;
|
|
112
135
|
this.#pending = [];
|
|
113
|
-
for (const item of pending) item.revision = revision;
|
|
136
|
+
for (const item of pending) item.revision = this.#revision;
|
|
114
137
|
return pending;
|
|
115
138
|
}
|
|
116
139
|
}
|