@gajae-code/coding-agent 0.10.2 → 0.11.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 +58 -2
- package/dist/types/append-only-mode.d.ts +1 -1
- package/dist/types/async/job-manager.d.ts +46 -7
- package/dist/types/cli/args.d.ts +4 -5
- package/dist/types/cli/daemon-cli.d.ts +12 -1
- package/dist/types/cli/notify-cli.d.ts +21 -1
- package/dist/types/cli.d.ts +3 -0
- package/dist/types/commands/daemon.d.ts +39 -0
- package/dist/types/commands/launch.d.ts +3 -0
- package/dist/types/commands/notify.d.ts +28 -1
- package/dist/types/commands/sdk.d.ts +33 -0
- package/dist/types/config/atomic-yaml-patch.d.ts +85 -0
- package/dist/types/config/model-profile-activation.d.ts +35 -15
- package/dist/types/config/model-profiles.d.ts +11 -5
- package/dist/types/config/model-registry.d.ts +3 -3
- package/dist/types/config/model-resolver.d.ts +39 -6
- package/dist/types/config/model-selector-value.d.ts +17 -0
- package/dist/types/config/models-config-schema.d.ts +10 -6
- package/dist/types/config/settings-schema.d.ts +133 -6
- package/dist/types/config/settings.d.ts +63 -35
- package/dist/types/coordinator-mcp/model-preset.d.ts +7 -6
- package/dist/types/coordinator-mcp/server.d.ts +6 -49
- package/dist/types/daemon/builtin.d.ts +6 -5
- package/dist/types/daemon/control-types.d.ts +1 -1
- package/dist/types/discovery/mcp-json.d.ts +12 -1
- package/dist/types/extensibility/custom-tools/types.d.ts +1 -1
- package/dist/types/extensibility/extensions/compact-handler.d.ts +4 -2
- package/dist/types/extensibility/extensions/get-commands-handler.d.ts +2 -2
- package/dist/types/extensibility/extensions/loader.d.ts +10 -1
- package/dist/types/extensibility/extensions/runner.d.ts +3 -3
- package/dist/types/extensibility/extensions/types.d.ts +141 -16
- package/dist/types/extensibility/hooks/types.d.ts +1 -1
- package/dist/types/gjc-runtime/launch-tmux.d.ts +3 -2
- package/dist/types/gjc-runtime/psmux-detect.d.ts +3 -0
- package/dist/types/gjc-runtime/session-state-sidecar.d.ts +3 -0
- package/dist/types/gjc-runtime/team-runtime.d.ts +3 -4
- package/dist/types/gjc-runtime/tmux-owner-isolation-cli.d.ts +13 -0
- package/dist/types/gjc-runtime/tmux-sessions.d.ts +4 -1
- package/dist/types/gjc-runtime/ultragoal-receipt-freshness.d.ts +11 -0
- package/dist/types/gjc-runtime/windows-powershell-command.d.ts +9 -0
- package/dist/types/harness-control-plane/operate.d.ts +5 -5
- package/dist/types/harness-control-plane/owner.d.ts +18 -4
- package/dist/types/harness-control-plane/receipts.d.ts +0 -1
- package/dist/types/harness-control-plane/sdk-transport.d.ts +43 -0
- package/dist/types/harness-control-plane/session-transport.d.ts +48 -0
- package/dist/types/harness-control-plane/types.d.ts +3 -4
- package/dist/types/lsp/index.d.ts +1 -1
- package/dist/types/main.d.ts +32 -38
- package/dist/types/modes/acp/acp-agent.d.ts +224 -53
- package/dist/types/modes/acp/acp-client-bridge.d.ts +1 -0
- package/dist/types/modes/acp/acp-mode.d.ts +6 -15
- package/dist/types/modes/acp/permission-mode.d.ts +4 -0
- package/dist/types/modes/acp/startup-options.d.ts +6 -0
- package/dist/types/modes/components/agent-dashboard.d.ts +3 -0
- package/dist/types/modes/components/model-selector.d.ts +1 -0
- package/dist/types/modes/components/notifications-settings-editor.d.ts +135 -0
- package/dist/types/modes/components/settings-selector.d.ts +6 -4
- package/dist/types/modes/components/welcome.d.ts +1 -1
- package/dist/types/modes/controllers/command-controller.d.ts +2 -2
- package/dist/types/modes/controllers/extension-ui-controller.d.ts +1 -0
- package/dist/types/modes/controllers/selector-controller.d.ts +35 -1
- package/dist/types/modes/index.d.ts +0 -4
- package/dist/types/modes/interactive-mode.d.ts +5 -2
- package/dist/types/modes/runtime-init.d.ts +2 -2
- package/dist/types/modes/shared/agent-wire/approval-gate.d.ts +6 -9
- package/dist/types/modes/shared/agent-wire/deep-interview-gate.d.ts +4 -6
- package/dist/types/modes/shared/agent-wire/event-contract.d.ts +6 -6
- package/dist/types/modes/shared/agent-wire/event-envelope.d.ts +4 -9
- package/dist/types/modes/shared/agent-wire/event-observation.d.ts +1 -1
- package/dist/types/modes/shared/agent-wire/workflow-gate-broker.d.ts +170 -30
- package/dist/types/modes/shared/agent-wire/workflow-gate-schema.d.ts +7 -7
- package/dist/types/modes/shared/agent-wire/workflow-gate-types.d.ts +105 -0
- package/dist/types/modes/types.d.ts +7 -2
- package/dist/types/runtime-mcp/client.d.ts +2 -0
- package/dist/types/runtime-mcp/config.d.ts +5 -1
- package/dist/types/runtime-mcp/manager.d.ts +8 -1
- package/dist/types/runtime-mcp/types.d.ts +4 -0
- package/dist/types/sdk/acp/adapter.d.ts +67 -0
- package/dist/types/sdk/acp/index.d.ts +2 -0
- package/dist/types/sdk/broker/broker.d.ts +53 -0
- package/dist/types/sdk/broker/discovery.d.ts +30 -0
- package/dist/types/sdk/broker/ensure.d.ts +42 -0
- package/dist/types/sdk/broker/identity.d.ts +3 -0
- package/dist/types/sdk/broker/index.d.ts +8 -0
- package/dist/types/sdk/broker/lifecycle-ledger.d.ts +95 -0
- package/dist/types/sdk/broker/lifecycle.d.ts +85 -0
- package/dist/types/sdk/broker/process-incarnation.d.ts +14 -0
- package/dist/types/sdk/broker/runtime.d.ts +33 -0
- package/dist/types/sdk/broker/session-index.d.ts +57 -0
- package/dist/types/sdk/broker/state-version.d.ts +8 -0
- package/dist/types/sdk/broker/transport.d.ts +9 -0
- package/dist/types/sdk/bus/chat-command-policy.d.ts +49 -0
- package/dist/types/sdk/bus/chat-daemon-cli.d.ts +21 -0
- package/dist/types/sdk/bus/chat-daemon-control.d.ts +111 -0
- package/dist/types/sdk/bus/chat-daemon-runtime.d.ts +77 -0
- package/dist/types/sdk/bus/chat-effect-journal.d.ts +84 -0
- package/dist/types/{notifications → sdk/bus}/config-commands.d.ts +7 -2
- package/dist/types/sdk/bus/config.d.ts +274 -0
- package/dist/types/sdk/bus/conversation-store.d.ts +72 -0
- package/dist/types/sdk/bus/discord-conversation.d.ts +58 -0
- package/dist/types/sdk/bus/discord-daemon.d.ts +50 -0
- package/dist/types/sdk/bus/discord-live-provider.d.ts +70 -0
- package/dist/types/sdk/bus/discord-provider.d.ts +85 -0
- package/dist/types/{notifications → sdk/bus}/html-format.d.ts +2 -2
- package/dist/types/{notifications → sdk/bus}/index.d.ts +113 -13
- package/dist/types/{notifications → sdk/bus}/lifecycle-control-runtime.d.ts +4 -2
- package/dist/types/{notifications → sdk/bus}/lifecycle-orchestrator.d.ts +18 -21
- package/dist/types/{notifications → sdk/bus}/managed-daemon.d.ts +1 -1
- package/dist/types/sdk/bus/native-runtime-compatibility.d.ts +13 -0
- package/dist/types/sdk/bus/notification-orchestration.d.ts +170 -0
- package/dist/types/{notifications → sdk/bus}/notification-service.d.ts +7 -1
- package/dist/types/sdk/bus/session-control.d.ts +83 -0
- package/dist/types/sdk/bus/slack-conversation.d.ts +56 -0
- package/dist/types/sdk/bus/slack-daemon.d.ts +60 -0
- package/dist/types/sdk/bus/slack-live-provider.d.ts +59 -0
- package/dist/types/sdk/bus/slack-provider.d.ts +55 -0
- package/dist/types/{notifications → sdk/bus}/telegram-cli.d.ts +4 -4
- package/dist/types/{notifications → sdk/bus}/telegram-daemon-cli.d.ts +14 -5
- package/dist/types/sdk/bus/telegram-daemon-contract.d.ts +12 -0
- package/dist/types/{notifications → sdk/bus}/telegram-daemon-control.d.ts +2 -2
- package/dist/types/{notifications → sdk/bus}/telegram-daemon.d.ts +78 -17
- package/dist/types/{notifications → sdk/bus}/telegram-reference.d.ts +2 -2
- package/dist/types/sdk/bus/telegram-setup.d.ts +128 -0
- package/dist/types/{notifications → sdk/bus}/topic-registry.d.ts +11 -0
- package/dist/types/sdk/cli/index.d.ts +1 -0
- package/dist/types/sdk/cli/session-cli.d.ts +19 -0
- package/dist/types/sdk/client/client.d.ts +1 -0
- package/dist/types/sdk/client/discovery.d.ts +27 -0
- package/dist/types/sdk/client/index.d.ts +2 -0
- package/dist/types/sdk/host/control/dispatch.d.ts +34 -0
- package/dist/types/sdk/host/control/index.d.ts +2 -0
- package/dist/types/sdk/host/control/operations.d.ts +65 -0
- package/dist/types/sdk/host/events.d.ts +35 -0
- package/dist/types/sdk/host/host.d.ts +35 -0
- package/dist/types/sdk/host/index.d.ts +4 -0
- package/dist/types/sdk/host/query/cursor.d.ts +62 -0
- package/dist/types/sdk/host/query/handlers.d.ts +70 -0
- package/dist/types/sdk/host/query/index.d.ts +3 -0
- package/dist/types/sdk/host/query/revision-store.d.ts +60 -0
- package/dist/types/sdk/host/reverse-leases.d.ts +45 -0
- package/dist/types/sdk/host/types.d.ts +32 -0
- package/dist/types/sdk/index.d.ts +6 -0
- package/dist/types/sdk/lifecycle-session.d.ts +14 -0
- package/dist/types/sdk/mcp/index.d.ts +1 -0
- package/dist/types/sdk/mcp/server.d.ts +37 -0
- package/dist/types/sdk/models.d.ts +44 -0
- package/dist/types/sdk/protocol/adapter-validation.d.ts +14 -0
- package/dist/types/sdk/protocol/operation-registry.d.ts +24 -0
- package/dist/types/{sdk.d.ts → sdk/session.d.ts} +44 -38
- package/dist/types/sdk/startup-capability.d.ts +50 -0
- package/dist/types/session/agent-session.d.ts +114 -21
- package/dist/types/session/default-model-selection.d.ts +25 -0
- package/dist/types/session/fallback-chain-controller.d.ts +52 -0
- package/dist/types/session/session-manager.d.ts +58 -1
- package/dist/types/setup/credential-auto-import.d.ts +36 -6
- package/dist/types/tools/ask-answer-registry.d.ts +1 -1
- package/dist/types/tools/browser/benchmark/detector-report.d.ts +63 -0
- package/dist/types/tools/browser/benchmark/run-suite.d.ts +18 -0
- package/dist/types/tools/browser/launch.d.ts +22 -0
- package/dist/types/tools/browser/profile-discovery.d.ts +31 -0
- package/dist/types/tools/browser/profile-posture.d.ts +37 -0
- package/dist/types/tools/browser/profile-reuse.d.ts +39 -0
- package/dist/types/tools/browser/profile-warmup.d.ts +39 -0
- package/dist/types/tools/browser/registry.d.ts +19 -0
- package/dist/types/tools/browser/tab-protocol.d.ts +4 -0
- package/dist/types/tools/index.d.ts +8 -8
- package/dist/types/tools/subagent-render.d.ts +1 -0
- package/dist/types/tools/subagent.d.ts +6 -1
- package/package.json +34 -13
- package/scripts/build-sdk-package-smoke.ts +99 -0
- package/scripts/capture-notifications-settings-showcase.ts +435 -0
- package/scripts/compile-args.ts +4 -2
- package/scripts/g005-daemon-smoke.ts +4 -5
- package/scripts/g011-daemon-path-smoke.ts +5 -5
- package/scripts/generate-sdk-adapter-parity-manifest.ts +163 -0
- package/scripts/generate-sdk-operation-inventory.ts +867 -0
- package/scripts/generate-telegram-baseline-manifest.ts +128 -0
- package/scripts/manifest-schema.ts +124 -0
- package/scripts/run-test-manifest.ts +153 -0
- package/scripts/run-threat-model-check.ts +157 -0
- package/scripts/verify-gjc-sdk-canonicalization.ts +3467 -0
- package/scripts/verify-gjc-sdk-rename.ts +90 -0
- package/src/append-only-mode.ts +1 -1
- package/src/async/job-manager.ts +406 -63
- package/src/cli/args.ts +43 -12
- package/src/cli/auth-gateway-cli.ts +2 -2
- package/src/cli/config-cli.ts +2 -1
- package/src/cli/daemon-cli.ts +63 -14
- package/src/cli/list-models.ts +1 -1
- package/src/cli/notify-cli.ts +288 -286
- package/src/cli.ts +21 -2
- package/src/commands/daemon.ts +50 -6
- package/src/commands/harness.ts +93 -36
- package/src/commands/launch.ts +5 -2
- package/src/commands/mcp-serve.ts +19 -12
- package/src/commands/notify.ts +36 -3
- package/src/commands/sdk.ts +426 -0
- package/src/commit/agentic/agent.ts +1 -0
- package/src/config/atomic-yaml-patch.ts +423 -0
- package/src/config/model-profile-activation.ts +240 -89
- package/src/config/model-profiles.ts +18 -15
- package/src/config/model-registry.ts +51 -26
- package/src/config/model-resolver.ts +138 -51
- package/src/config/model-selector-value.ts +50 -0
- package/src/config/models-config-schema.ts +14 -21
- package/src/config/settings-schema.ts +128 -10
- package/src/config/settings.ts +1120 -158
- package/src/coordinator-mcp/model-preset.ts +74 -20
- package/src/coordinator-mcp/server.ts +1597 -3052
- package/src/daemon/builtin.ts +8 -5
- package/src/daemon/control-types.ts +1 -1
- package/src/defaults/gjc/skills/team/SKILL.md +4 -4
- package/src/discovery/mcp-json.ts +327 -20
- package/src/extensibility/custom-tools/types.ts +1 -1
- package/src/extensibility/extensions/compact-handler.ts +3 -3
- package/src/extensibility/extensions/get-commands-handler.ts +2 -2
- package/src/extensibility/extensions/loader.ts +69 -5
- package/src/extensibility/extensions/runner.ts +112 -4
- package/src/extensibility/extensions/types.ts +176 -17
- package/src/extensibility/hooks/types.ts +1 -1
- package/src/gjc-runtime/launch-tmux.ts +170 -86
- package/src/gjc-runtime/psmux-detect.ts +82 -4
- package/src/gjc-runtime/session-state-sidecar.ts +41 -31
- package/src/gjc-runtime/team-runtime.ts +54 -35
- package/src/gjc-runtime/tmux-owner-isolation-cli.ts +53 -17
- package/src/gjc-runtime/tmux-owner-isolation.ts +1 -1
- package/src/gjc-runtime/tmux-sessions.ts +19 -13
- package/src/gjc-runtime/ultragoal-guard.ts +108 -14
- package/src/gjc-runtime/ultragoal-receipt-freshness.ts +102 -1
- package/src/gjc-runtime/ultragoal-runtime.ts +227 -11
- package/src/gjc-runtime/windows-powershell-command.ts +58 -0
- package/src/harness-control-plane/operate.ts +9 -9
- package/src/harness-control-plane/owner.ts +283 -39
- package/src/harness-control-plane/receipts.ts +0 -1
- package/src/harness-control-plane/sdk-transport.ts +395 -0
- package/src/harness-control-plane/session-transport.ts +94 -0
- package/src/harness-control-plane/types.ts +1 -1
- package/src/internal-urls/docs-index.generated.ts +34 -35
- package/src/lsp/client.ts +42 -6
- package/src/lsp/index.ts +2 -2
- package/src/main.ts +299 -204
- package/src/modes/DESIGN.md +258 -0
- package/src/modes/acp/acp-agent.ts +1228 -2612
- package/src/modes/acp/acp-client-bridge.ts +2 -20
- package/src/modes/acp/acp-event-mapper.ts +18 -2
- package/src/modes/acp/acp-mode.ts +8 -36
- package/src/modes/acp/permission-mode.ts +25 -0
- package/src/modes/acp/startup-options.ts +6 -0
- package/src/modes/components/agent-dashboard.ts +37 -17
- package/src/modes/components/model-selector.ts +93 -35
- package/src/modes/components/notifications-settings-editor.ts +1379 -0
- package/src/modes/components/settings-selector.ts +60 -11
- package/src/modes/components/welcome.ts +4 -4
- package/src/modes/controllers/command-controller.ts +10 -17
- package/src/modes/controllers/event-controller.ts +11 -16
- package/src/modes/controllers/extension-ui-controller.ts +396 -28
- package/src/modes/controllers/selector-controller.ts +674 -36
- package/src/modes/index.ts +0 -22
- package/src/modes/interactive-mode.ts +87 -36
- package/src/modes/runtime-init.ts +298 -6
- package/src/modes/shared/agent-wire/approval-gate.ts +9 -11
- package/src/modes/shared/agent-wire/deep-interview-gate.ts +10 -11
- package/src/modes/shared/agent-wire/event-contract.ts +7 -8
- package/src/modes/shared/agent-wire/event-envelope.ts +9 -17
- package/src/modes/shared/agent-wire/event-observation.ts +16 -7
- package/src/modes/shared/agent-wire/workflow-gate-broker.ts +1258 -87
- package/src/modes/shared/agent-wire/workflow-gate-schema.ts +15 -15
- package/src/modes/shared/agent-wire/workflow-gate-types.ts +113 -0
- package/src/modes/types.ts +7 -2
- package/src/runtime-mcp/client.ts +94 -19
- package/src/runtime-mcp/config.ts +27 -15
- package/src/runtime-mcp/manager.ts +343 -105
- package/src/runtime-mcp/oauth-flow.ts +42 -12
- package/src/runtime-mcp/transports/http.ts +49 -19
- package/src/runtime-mcp/transports/stdio.ts +47 -28
- package/src/runtime-mcp/types.ts +10 -0
- package/src/sdk/acp/adapter.ts +418 -0
- package/src/sdk/acp/index.ts +2 -0
- package/src/sdk/broker/broker.ts +642 -0
- package/src/sdk/broker/discovery.ts +113 -0
- package/src/sdk/broker/ensure.ts +307 -0
- package/src/sdk/broker/identity.ts +42 -0
- package/src/sdk/broker/index.ts +8 -0
- package/src/sdk/broker/internal-source-marker-2178.txt +1 -0
- package/src/sdk/broker/internal-source.bunfig.toml +1 -0
- package/src/sdk/broker/lifecycle-ledger.ts +286 -0
- package/src/sdk/broker/lifecycle.ts +2157 -0
- package/src/sdk/broker/process-incarnation.ts +159 -0
- package/src/sdk/broker/runtime.ts +164 -0
- package/src/sdk/broker/session-index.ts +318 -0
- package/src/sdk/broker/state-version.ts +23 -0
- package/src/sdk/broker/transport.ts +125 -0
- package/src/sdk/bus/chat-command-policy.ts +107 -0
- package/src/sdk/bus/chat-daemon-cli.ts +214 -0
- package/src/sdk/bus/chat-daemon-control.ts +713 -0
- package/src/sdk/bus/chat-daemon-runtime.ts +526 -0
- package/src/sdk/bus/chat-effect-journal.ts +355 -0
- package/src/{notifications → sdk/bus}/config-commands.ts +39 -10
- package/src/sdk/bus/config.ts +433 -0
- package/src/sdk/bus/conversation-store.ts +391 -0
- package/src/sdk/bus/discord-conversation.ts +85 -0
- package/src/sdk/bus/discord-daemon.ts +2292 -0
- package/src/sdk/bus/discord-live-provider.ts +521 -0
- package/src/sdk/bus/discord-provider.ts +56 -0
- package/src/{notifications → sdk/bus}/html-format.ts +2 -2
- package/src/sdk/bus/index.ts +3979 -0
- package/src/{notifications → sdk/bus}/lifecycle-commands.ts +2 -0
- package/src/{notifications → sdk/bus}/lifecycle-control-runtime.ts +225 -196
- package/src/{notifications → sdk/bus}/lifecycle-orchestrator.ts +161 -74
- package/src/{notifications → sdk/bus}/managed-daemon.ts +2 -2
- package/src/sdk/bus/native-runtime-compatibility.ts +42 -0
- package/src/sdk/bus/natives-augment.d.ts +38 -0
- package/src/sdk/bus/notification-orchestration.ts +535 -0
- package/src/{notifications → sdk/bus}/notification-service.ts +106 -12
- package/src/sdk/bus/session-control.ts +333 -0
- package/src/sdk/bus/slack-conversation.ts +74 -0
- package/src/sdk/bus/slack-daemon.ts +2144 -0
- package/src/sdk/bus/slack-live-provider.ts +380 -0
- package/src/sdk/bus/slack-provider.ts +76 -0
- package/src/{notifications → sdk/bus}/telegram-cli.ts +8 -8
- package/src/sdk/bus/telegram-daemon-cli.ts +330 -0
- package/src/sdk/bus/telegram-daemon-contract.ts +14 -0
- package/src/{notifications → sdk/bus}/telegram-daemon-control.ts +4 -4
- package/src/{notifications → sdk/bus}/telegram-daemon.ts +603 -63
- package/src/{notifications → sdk/bus}/telegram-reference.ts +2 -2
- package/src/sdk/bus/telegram-setup.ts +663 -0
- package/src/{notifications → sdk/bus}/topic-registry.ts +32 -0
- package/src/sdk/cli/index.ts +1 -0
- package/src/sdk/cli/session-cli.ts +275 -0
- package/src/sdk/client/client.ts +1 -0
- package/src/sdk/client/discovery.ts +108 -0
- package/src/sdk/client/index.ts +2 -0
- package/src/sdk/host/control/dispatch.ts +367 -0
- package/src/sdk/host/control/index.ts +10 -0
- package/src/sdk/host/control/operations.ts +63 -0
- package/src/sdk/host/events.ts +91 -0
- package/src/sdk/host/host.ts +296 -0
- package/src/sdk/host/index.ts +4 -0
- package/src/sdk/host/query/cursor.ts +189 -0
- package/src/sdk/host/query/handlers.ts +533 -0
- package/src/sdk/host/query/index.ts +3 -0
- package/src/sdk/host/query/revision-store.ts +1126 -0
- package/src/sdk/host/reverse-leases.ts +325 -0
- package/src/sdk/host/types.ts +29 -0
- package/src/sdk/index.ts +13 -0
- package/src/sdk/lifecycle-session.ts +39 -0
- package/src/sdk/mcp/index.ts +1 -0
- package/src/sdk/mcp/server.ts +332 -0
- package/src/sdk/models.ts +168 -0
- package/src/sdk/protocol/adapter-validation.ts +48 -0
- package/src/sdk/protocol/operation-inventory.generated.json +5654 -0
- package/src/sdk/protocol/operation-registry.ts +312 -0
- package/src/{sdk.ts → sdk/session.ts} +339 -212
- package/src/sdk/startup-capability.ts +189 -0
- package/src/session/agent-session.ts +2650 -944
- package/src/session/default-model-selection.ts +93 -0
- package/src/session/fallback-chain-controller.ts +136 -0
- package/src/session/session-manager.ts +438 -11
- package/src/session/session-storage.ts +8 -1
- package/src/setup/credential-auto-import.ts +290 -35
- package/src/setup/hermes/templates/operator-instructions.v1.md +3 -5
- package/src/slash-commands/builtin-registry.ts +2 -1
- package/src/task/executor.ts +62 -13
- package/src/task/index.ts +26 -16
- package/src/tools/ask-answer-registry.ts +1 -1
- package/src/tools/ask.ts +13 -8
- package/src/tools/browser/STEALTH-THIRD-PARTY-NOTICES.md +26 -0
- package/src/tools/browser/benchmark/detector-report.ts +157 -0
- package/src/tools/browser/benchmark/run-suite.ts +39 -0
- package/src/tools/browser/launch.ts +124 -19
- package/src/tools/browser/profile-discovery.ts +63 -0
- package/src/tools/browser/profile-posture.ts +59 -0
- package/src/tools/browser/profile-reuse.ts +102 -0
- package/src/tools/browser/profile-warmup.ts +109 -0
- package/src/tools/browser/registry.ts +87 -11
- package/src/tools/browser/tab-protocol.ts +1 -0
- package/src/tools/browser/tab-supervisor.ts +1 -0
- package/src/tools/browser/tab-worker.ts +1 -1
- package/src/tools/browser.ts +6 -0
- package/src/tools/index.ts +8 -8
- package/src/tools/puppeteer/14_stealth_permissions.txt +57 -0
- package/src/tools/puppeteer/15_stealth_webrtc.txt +60 -0
- package/src/tools/subagent-render.ts +19 -8
- package/src/tools/subagent.ts +84 -32
- package/src/tools/telegram-send.ts +2 -2
- package/vendor/insane-search/MANIFEST.json +2 -1
- package/vendor/insane-search/engine/bias_check.py +4 -1
- package/vendor/insane-search/engine/phase0.py +26 -1
- package/dist/types/harness-control-plane/rpc-adapter.d.ts +0 -69
- package/dist/types/modes/bridge/auth.d.ts +0 -12
- package/dist/types/modes/bridge/bridge-client-bridge.d.ts +0 -9
- package/dist/types/modes/bridge/bridge-mode.d.ts +0 -47
- package/dist/types/modes/bridge/bridge-ui-context.d.ts +0 -88
- package/dist/types/modes/bridge/event-stream.d.ts +0 -8
- package/dist/types/modes/rpc/host-tools.d.ts +0 -1
- package/dist/types/modes/rpc/host-uris.d.ts +0 -1
- package/dist/types/modes/rpc/rpc-client.d.ts +0 -299
- package/dist/types/modes/rpc/rpc-mode.d.ts +0 -86
- package/dist/types/modes/rpc/rpc-socket-security.d.ts +0 -10
- package/dist/types/modes/rpc/rpc-types.d.ts +0 -810
- package/dist/types/modes/shared/agent-wire/command-contract.d.ts +0 -18
- package/dist/types/modes/shared/agent-wire/command-dispatch.d.ts +0 -37
- package/dist/types/modes/shared/agent-wire/command-validation.d.ts +0 -2
- package/dist/types/modes/shared/agent-wire/handshake.d.ts +0 -56
- package/dist/types/modes/shared/agent-wire/host-tool-bridge.d.ts +0 -16
- package/dist/types/modes/shared/agent-wire/host-uri-bridge.d.ts +0 -17
- package/dist/types/modes/shared/agent-wire/protocol.d.ts +0 -25
- package/dist/types/modes/shared/agent-wire/responses.d.ts +0 -4
- package/dist/types/modes/shared/agent-wire/scopes.d.ts +0 -18
- package/dist/types/modes/shared/agent-wire/session-registry.d.ts +0 -25
- package/dist/types/modes/shared/agent-wire/ui-request-broker.d.ts +0 -42
- package/dist/types/modes/shared/agent-wire/ui-result.d.ts +0 -27
- package/dist/types/modes/shared/agent-wire/unattended-action-policy.d.ts +0 -29
- package/dist/types/modes/shared/agent-wire/unattended-audit.d.ts +0 -68
- package/dist/types/modes/shared/agent-wire/unattended-run-controller.d.ts +0 -166
- package/dist/types/modes/shared/agent-wire/unattended-session.d.ts +0 -127
- package/dist/types/notifications/config.d.ts +0 -132
- package/src/harness-control-plane/rpc-adapter.ts +0 -290
- package/src/modes/bridge/auth.ts +0 -41
- package/src/modes/bridge/bridge-client-bridge.ts +0 -47
- package/src/modes/bridge/bridge-mode.ts +0 -675
- package/src/modes/bridge/bridge-ui-context.ts +0 -200
- package/src/modes/bridge/event-stream.ts +0 -70
- package/src/modes/rpc/host-tools.ts +0 -1
- package/src/modes/rpc/host-uris.ts +0 -1
- package/src/modes/rpc/rpc-client.ts +0 -1166
- package/src/modes/rpc/rpc-mode.ts +0 -1029
- package/src/modes/rpc/rpc-socket-security.ts +0 -115
- package/src/modes/rpc/rpc-types.ts +0 -637
- package/src/modes/shared/agent-wire/command-contract.ts +0 -18
- package/src/modes/shared/agent-wire/command-dispatch.ts +0 -498
- package/src/modes/shared/agent-wire/command-validation.ts +0 -181
- package/src/modes/shared/agent-wire/handshake.ts +0 -157
- package/src/modes/shared/agent-wire/host-tool-bridge.ts +0 -197
- package/src/modes/shared/agent-wire/host-uri-bridge.ts +0 -236
- package/src/modes/shared/agent-wire/protocol.ts +0 -46
- package/src/modes/shared/agent-wire/responses.ts +0 -17
- package/src/modes/shared/agent-wire/scopes.ts +0 -94
- package/src/modes/shared/agent-wire/session-registry.ts +0 -109
- package/src/modes/shared/agent-wire/ui-request-broker.ts +0 -150
- package/src/modes/shared/agent-wire/ui-result.ts +0 -48
- package/src/modes/shared/agent-wire/unattended-action-policy.ts +0 -365
- package/src/modes/shared/agent-wire/unattended-audit.ts +0 -176
- package/src/modes/shared/agent-wire/unattended-run-controller.ts +0 -426
- package/src/modes/shared/agent-wire/unattended-session.ts +0 -528
- package/src/notifications/config.ts +0 -219
- package/src/notifications/index.ts +0 -1835
- package/src/notifications/telegram-daemon-cli.ts +0 -243
- package/src/tools/puppeteer/09_stealth_locale.txt +0 -46
- /package/dist/types/{notifications → sdk/bus}/attachment-registry.d.ts +0 -0
- /package/dist/types/{notifications → sdk/bus}/chat-adapters.d.ts +0 -0
- /package/dist/types/{notifications → sdk/bus}/daemon-paths.d.ts +0 -0
- /package/dist/types/{notifications → sdk/bus}/engine.d.ts +0 -0
- /package/dist/types/{notifications → sdk/bus}/helpers.d.ts +0 -0
- /package/dist/types/{notifications → sdk/bus}/lifecycle-commands.d.ts +0 -0
- /package/dist/types/{notifications → sdk/bus}/operator-runtime.d.ts +0 -0
- /package/dist/types/{notifications → sdk/bus}/rate-limit-pool.d.ts +0 -0
- /package/dist/types/{notifications → sdk/bus}/recent-activity.d.ts +0 -0
- /package/dist/types/{notifications → sdk/bus}/reply-sent-store.d.ts +0 -0
- /package/dist/types/{notifications → sdk/bus}/rich-draft.d.ts +0 -0
- /package/dist/types/{notifications → sdk/bus}/rich-render.d.ts +0 -0
- /package/dist/types/{notifications → sdk/bus}/threaded-inbound.d.ts +0 -0
- /package/dist/types/{notifications → sdk/bus}/threaded-render.d.ts +0 -0
- /package/src/{notifications → sdk/bus}/attachment-registry.ts +0 -0
- /package/src/{notifications → sdk/bus}/chat-adapters.ts +0 -0
- /package/src/{notifications → sdk/bus}/daemon-paths.ts +0 -0
- /package/src/{notifications → sdk/bus}/engine.ts +0 -0
- /package/src/{notifications → sdk/bus}/helpers.ts +0 -0
- /package/src/{notifications → sdk/bus}/operator-runtime.ts +0 -0
- /package/src/{notifications → sdk/bus}/rate-limit-pool.ts +0 -0
- /package/src/{notifications → sdk/bus}/recent-activity.ts +0 -0
- /package/src/{notifications → sdk/bus}/reply-sent-store.ts +0 -0
- /package/src/{notifications → sdk/bus}/rich-draft.ts +0 -0
- /package/src/{notifications → sdk/bus}/rich-render.ts +0 -0
- /package/src/{notifications → sdk/bus}/threaded-inbound.ts +0 -0
- /package/src/{notifications → sdk/bus}/threaded-render.ts +0 -0
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { SDK_STATE_VERSION } from "./state-version";
|
|
2
|
+
export type SessionIndexEventType = "host_registered" | "host_heartbeat" | "host_unregistered" | "lifecycle_started" | "lifecycle_terminal" | "session_closed" | "record_reconciled";
|
|
3
|
+
export interface SessionIndexEvent {
|
|
4
|
+
version: typeof SDK_STATE_VERSION;
|
|
5
|
+
indexSeq: number;
|
|
6
|
+
type: SessionIndexEventType;
|
|
7
|
+
sessionId: string;
|
|
8
|
+
locator: {
|
|
9
|
+
repo: string;
|
|
10
|
+
stateRoot: string;
|
|
11
|
+
};
|
|
12
|
+
endpointGeneration: number;
|
|
13
|
+
pid: number;
|
|
14
|
+
endpointMtimeMs?: number;
|
|
15
|
+
lifecycleRequestId?: string;
|
|
16
|
+
terminalUncertain?: boolean;
|
|
17
|
+
ts: number;
|
|
18
|
+
checksum: string;
|
|
19
|
+
}
|
|
20
|
+
export interface IndexedSession {
|
|
21
|
+
sessionId: string;
|
|
22
|
+
locator: {
|
|
23
|
+
repo: string;
|
|
24
|
+
stateRoot: string;
|
|
25
|
+
};
|
|
26
|
+
endpointGeneration: number;
|
|
27
|
+
pid: number;
|
|
28
|
+
endpointMtimeMs?: number;
|
|
29
|
+
live: boolean;
|
|
30
|
+
indexSeq: number;
|
|
31
|
+
lifecycleRequestId?: string;
|
|
32
|
+
terminalUncertain?: boolean;
|
|
33
|
+
}
|
|
34
|
+
export interface SessionList {
|
|
35
|
+
indexSeq: number;
|
|
36
|
+
sessions: IndexedSession[];
|
|
37
|
+
warnings: string[];
|
|
38
|
+
}
|
|
39
|
+
export declare const sessionIndexChecksum: (event: Omit<SessionIndexEvent, "checksum">) => string;
|
|
40
|
+
export declare class SessionIndex {
|
|
41
|
+
#private;
|
|
42
|
+
constructor(agentDir: string);
|
|
43
|
+
open(): Promise<this>;
|
|
44
|
+
replay(): Promise<void>;
|
|
45
|
+
refresh(): Promise<void>;
|
|
46
|
+
get indexSeq(): number;
|
|
47
|
+
append(input: Omit<SessionIndexEvent, "version" | "indexSeq" | "checksum" | "ts"> & Partial<Pick<SessionIndexEvent, "ts">>): Promise<SessionIndexEvent>;
|
|
48
|
+
snapshot(): Promise<void>;
|
|
49
|
+
assertSupportedStateVersions(): Promise<void>;
|
|
50
|
+
listSessions(): SessionList;
|
|
51
|
+
hostUnregisteredAfter(registration: Pick<IndexedSession, "sessionId" | "endpointGeneration" | "pid" | "indexSeq" | "lifecycleRequestId">): {
|
|
52
|
+
indexSeq: number;
|
|
53
|
+
lifecycleRequestId?: string;
|
|
54
|
+
} | undefined;
|
|
55
|
+
findHostRegistration(sessionId: string, endpointGeneration: number, pid: number, lifecycleRequestId?: string): IndexedSession | undefined;
|
|
56
|
+
hasHostRegistrationForLifecycle(sessionId: string, pid: number, lifecycleRequestId: string): boolean;
|
|
57
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export declare const SDK_STATE_VERSION = 1;
|
|
2
|
+
export declare class UnsupportedStateVersionError extends Error {
|
|
3
|
+
readonly file: string;
|
|
4
|
+
readonly version: number;
|
|
5
|
+
readonly code = "unsupported_state_version";
|
|
6
|
+
constructor(file: string, version: number);
|
|
7
|
+
}
|
|
8
|
+
export declare function assertSupportedStateVersion(file: string, value: unknown): void;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { Broker } from "./broker";
|
|
2
|
+
/** Loopback-only WebSocket transport for the agent-global SDK broker. */
|
|
3
|
+
export declare class BrokerTransport {
|
|
4
|
+
#private;
|
|
5
|
+
constructor(broker: Broker, token: string, port?: number);
|
|
6
|
+
get port(): number;
|
|
7
|
+
start(): Promise<number>;
|
|
8
|
+
stop(): Promise<void>;
|
|
9
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { type Adapter, type OperationKind } from "../protocol/operation-registry";
|
|
2
|
+
export type ChatTransport = Extract<Adapter, "telegram" | "discord" | "slack">;
|
|
3
|
+
export type ChatOperationDisposition = "allowed" | "unsupported_on_chat";
|
|
4
|
+
export interface ChatCommandError {
|
|
5
|
+
code: "unsupported_on_chat" | "secret_input_forbidden";
|
|
6
|
+
message: string;
|
|
7
|
+
}
|
|
8
|
+
export type ChatCommandDecision = {
|
|
9
|
+
ok: true;
|
|
10
|
+
} | {
|
|
11
|
+
ok: false;
|
|
12
|
+
error: ChatCommandError;
|
|
13
|
+
};
|
|
14
|
+
export interface ChatOperationRequest {
|
|
15
|
+
kind: OperationKind;
|
|
16
|
+
operation: string;
|
|
17
|
+
input?: unknown;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Chat authorization follows each transport's canonical registry disposition.
|
|
21
|
+
* Explicit policy prohibitions remain as defense in depth for shell execution,
|
|
22
|
+
* callback-provider registration, and endpoint credentials.
|
|
23
|
+
*/
|
|
24
|
+
export declare const CHAT_OPERATION_POLICY: Readonly<Record<ChatTransport, Readonly<Record<string, ChatOperationDisposition>>>>;
|
|
25
|
+
/** Reject unsafe or unknown commands before their SDK request can be sent. */
|
|
26
|
+
export declare function authorizeChatOperation(transport: ChatTransport, request: ChatOperationRequest): ChatCommandDecision;
|
|
27
|
+
/** Execute only an authorized command, ensuring rejected payloads produce no SDK send. */
|
|
28
|
+
export declare function sendAuthorizedChatOperation<T>(transport: ChatTransport, request: ChatOperationRequest, send: () => Promise<T>): Promise<{
|
|
29
|
+
ok: true;
|
|
30
|
+
result: T;
|
|
31
|
+
} | {
|
|
32
|
+
ok: false;
|
|
33
|
+
error: ChatCommandError;
|
|
34
|
+
}>;
|
|
35
|
+
export type ChatCommandOutcome = {
|
|
36
|
+
ok: true;
|
|
37
|
+
result: unknown;
|
|
38
|
+
} | {
|
|
39
|
+
ok: false;
|
|
40
|
+
error: {
|
|
41
|
+
code: string;
|
|
42
|
+
message: string;
|
|
43
|
+
};
|
|
44
|
+
};
|
|
45
|
+
/**
|
|
46
|
+
* The chat transport is an untrusted presentation surface, not a general SDK
|
|
47
|
+
* result renderer. Never serialize SDK result bodies or provider error text.
|
|
48
|
+
*/
|
|
49
|
+
export declare function projectChatCommandOutcome(request: Pick<ChatOperationRequest, "kind" | "operation">, outcome: ChatCommandOutcome): Record<string, unknown>;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { type ChatDaemonKind } from "./chat-daemon-control";
|
|
2
|
+
import { type ChatDaemonRuntimeConfig } from "./chat-daemon-runtime";
|
|
3
|
+
export interface ChatDaemonRuntimeHandle {
|
|
4
|
+
start(): Promise<void>;
|
|
5
|
+
stop(): Promise<void>;
|
|
6
|
+
transportHealthy?(): boolean;
|
|
7
|
+
}
|
|
8
|
+
export interface RunChatDaemonInternalDeps {
|
|
9
|
+
processPid?: number;
|
|
10
|
+
pidAlive?: (pid: number) => boolean;
|
|
11
|
+
createRuntime?: (input: {
|
|
12
|
+
kind: ChatDaemonKind;
|
|
13
|
+
agentDir: string;
|
|
14
|
+
config: ChatDaemonConfig;
|
|
15
|
+
}) => Promise<ChatDaemonRuntimeHandle> | ChatDaemonRuntimeHandle;
|
|
16
|
+
setInterval?: typeof setInterval;
|
|
17
|
+
clearInterval?: typeof clearInterval;
|
|
18
|
+
}
|
|
19
|
+
export type ChatDaemonConfig = ChatDaemonRuntimeConfig;
|
|
20
|
+
/** Hidden worker entrypoint. It owns only lock/state/control lifecycle; transport creation remains injectable. */
|
|
21
|
+
export declare function runChatDaemonInternal(kind: ChatDaemonKind, argv: string[], deps?: RunChatDaemonInternalDeps): Promise<void>;
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import type { Settings } from "../../config/settings";
|
|
2
|
+
import type { BuiltInDaemonController, DaemonOperationOptions, DaemonOperationResult, DaemonRuntimeInfo, DaemonStatus } from "../../daemon/control-types";
|
|
3
|
+
export type ChatDaemonKind = "discord" | "slack";
|
|
4
|
+
export type ChatDaemonAction = "stop" | "reload";
|
|
5
|
+
export interface ChatDaemonState {
|
|
6
|
+
version: 1;
|
|
7
|
+
kind: ChatDaemonKind;
|
|
8
|
+
pid: number;
|
|
9
|
+
ownerId: string;
|
|
10
|
+
identity: string;
|
|
11
|
+
incarnation: string;
|
|
12
|
+
startedAt: number;
|
|
13
|
+
heartbeatAt: number;
|
|
14
|
+
transportHealthy: boolean;
|
|
15
|
+
stoppedAt?: number;
|
|
16
|
+
}
|
|
17
|
+
export interface ChatDaemonControlRequest {
|
|
18
|
+
version: 1;
|
|
19
|
+
requestId: string;
|
|
20
|
+
action: ChatDaemonAction;
|
|
21
|
+
ownerId: string;
|
|
22
|
+
pid: number;
|
|
23
|
+
createdAt: number;
|
|
24
|
+
incarnation: string;
|
|
25
|
+
}
|
|
26
|
+
export interface ChatDaemonControlDeps {
|
|
27
|
+
pidAlive?: (pid: number) => boolean;
|
|
28
|
+
sendSignal?: (pid: number, signal: NodeJS.Signals) => void;
|
|
29
|
+
spawn?: (command: string, args: string[], opts: {
|
|
30
|
+
detached: boolean;
|
|
31
|
+
stdio: "ignore";
|
|
32
|
+
}) => {
|
|
33
|
+
unref?: () => void;
|
|
34
|
+
};
|
|
35
|
+
execPath?: string;
|
|
36
|
+
ownerPid?: number;
|
|
37
|
+
randomId?: () => string;
|
|
38
|
+
pidIncarnation?: (pid: number) => string | undefined;
|
|
39
|
+
sleep?: (ms: number) => Promise<void>;
|
|
40
|
+
}
|
|
41
|
+
export declare function chatDaemonPaths(agentDir: string, kind: ChatDaemonKind): {
|
|
42
|
+
dir: string;
|
|
43
|
+
lock: string;
|
|
44
|
+
state: string;
|
|
45
|
+
control: string;
|
|
46
|
+
};
|
|
47
|
+
export declare function readChatDaemonState(agentDir: string, kind: ChatDaemonKind): Promise<ChatDaemonState | undefined>;
|
|
48
|
+
export declare function readChatDaemonControlRequest(agentDir: string, kind: ChatDaemonKind): Promise<ChatDaemonControlRequest | undefined>;
|
|
49
|
+
export declare function writeChatDaemonControlRequest(agentDir: string, kind: ChatDaemonKind, request: ChatDaemonControlRequest): Promise<void>;
|
|
50
|
+
export declare function clearChatDaemonControlRequest(agentDir: string, kind: ChatDaemonKind, requestId?: string): Promise<void>;
|
|
51
|
+
export declare function buildChatDaemonSpawnArgs(input: {
|
|
52
|
+
kind: ChatDaemonKind;
|
|
53
|
+
ownerId: string;
|
|
54
|
+
agentDir: string;
|
|
55
|
+
execPath?: string;
|
|
56
|
+
}): {
|
|
57
|
+
command: string;
|
|
58
|
+
args: string[];
|
|
59
|
+
runtime: DaemonRuntimeInfo;
|
|
60
|
+
};
|
|
61
|
+
export declare class ChatDaemonController implements BuiltInDaemonController {
|
|
62
|
+
private readonly settings;
|
|
63
|
+
private readonly deps;
|
|
64
|
+
readonly kind: ChatDaemonKind;
|
|
65
|
+
constructor(settings: Settings, kind: ChatDaemonKind, deps?: ChatDaemonControlDeps);
|
|
66
|
+
private identity;
|
|
67
|
+
private alive;
|
|
68
|
+
status(): Promise<DaemonStatus>;
|
|
69
|
+
stop(opts?: DaemonOperationOptions): Promise<DaemonOperationResult>;
|
|
70
|
+
reload(opts?: DaemonOperationOptions): Promise<DaemonOperationResult>;
|
|
71
|
+
ensure(): Promise<EnsureChatDaemonResult>;
|
|
72
|
+
private operate;
|
|
73
|
+
private incarnation;
|
|
74
|
+
private isLiveState;
|
|
75
|
+
private stopForReplacement;
|
|
76
|
+
private ownsCapturedState;
|
|
77
|
+
private signalIfOwner;
|
|
78
|
+
private ownerChanged;
|
|
79
|
+
private result;
|
|
80
|
+
private waitForDeath;
|
|
81
|
+
private sleep;
|
|
82
|
+
private spawn;
|
|
83
|
+
}
|
|
84
|
+
export type EnsureChatDaemonResult = "disabled" | "owner_spawned" | "attached";
|
|
85
|
+
export declare function ensureDiscordDaemon(settings: Settings, deps?: ChatDaemonControlDeps): Promise<EnsureChatDaemonResult>;
|
|
86
|
+
export declare function ensureSlackDaemon(settings: Settings, deps?: ChatDaemonControlDeps): Promise<EnsureChatDaemonResult>;
|
|
87
|
+
export declare function acquireChatDaemonOwnership(input: {
|
|
88
|
+
agentDir: string;
|
|
89
|
+
kind: ChatDaemonKind;
|
|
90
|
+
ownerId: string;
|
|
91
|
+
pid?: number;
|
|
92
|
+
identity: string;
|
|
93
|
+
incarnation?: string;
|
|
94
|
+
pidAlive?: (pid: number) => boolean;
|
|
95
|
+
pidIncarnation?: (pid: number) => string | undefined;
|
|
96
|
+
}): Promise<boolean>;
|
|
97
|
+
export declare function renewChatDaemonHeartbeat(input: {
|
|
98
|
+
agentDir: string;
|
|
99
|
+
kind: ChatDaemonKind;
|
|
100
|
+
ownerId: string;
|
|
101
|
+
pid?: number;
|
|
102
|
+
incarnation?: string;
|
|
103
|
+
transportHealthy: boolean;
|
|
104
|
+
}): Promise<boolean>;
|
|
105
|
+
export declare function releaseChatDaemonOwnership(input: {
|
|
106
|
+
agentDir: string;
|
|
107
|
+
kind: ChatDaemonKind;
|
|
108
|
+
ownerId: string;
|
|
109
|
+
pid?: number;
|
|
110
|
+
incarnation?: string;
|
|
111
|
+
}): Promise<void>;
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { SessionIndex } from "../broker/session-index";
|
|
2
|
+
import { type SdkSessionEndpoint } from "../client/discovery";
|
|
3
|
+
import type { ChatDaemonKind } from "./chat-daemon-control";
|
|
4
|
+
import type { DiscordProvider } from "./discord-provider";
|
|
5
|
+
import { type SlackProviderClient } from "./slack-provider";
|
|
6
|
+
export interface ChatDaemonRuntimeConfig {
|
|
7
|
+
identity: string;
|
|
8
|
+
notifications: {
|
|
9
|
+
discord?: {
|
|
10
|
+
botToken: string;
|
|
11
|
+
applicationId: string;
|
|
12
|
+
guildId: string;
|
|
13
|
+
parentChannelId: string;
|
|
14
|
+
};
|
|
15
|
+
slack?: {
|
|
16
|
+
botToken: string;
|
|
17
|
+
appToken: string;
|
|
18
|
+
workspaceId: string;
|
|
19
|
+
channelId: string;
|
|
20
|
+
authorizedUserId?: string;
|
|
21
|
+
};
|
|
22
|
+
};
|
|
23
|
+
presentation?: {
|
|
24
|
+
redact: boolean;
|
|
25
|
+
verbosity: "lean" | "verbose";
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
export interface ChatDaemonSdkClient {
|
|
29
|
+
onFrame(handler: (frame: Record<string, unknown>) => void): () => void;
|
|
30
|
+
request(frame: Record<string, unknown>): Promise<Record<string, unknown>>;
|
|
31
|
+
close(): Promise<void>;
|
|
32
|
+
send(frame: Record<string, unknown>): void;
|
|
33
|
+
}
|
|
34
|
+
export type ChatDeliveryPhase = "pre_send" | "ambiguous";
|
|
35
|
+
/** An authorized SDK command could not be conclusively delivered. */
|
|
36
|
+
export declare class ChatDeliveryError extends Error {
|
|
37
|
+
readonly phase: ChatDeliveryPhase;
|
|
38
|
+
constructor(phase: ChatDeliveryPhase);
|
|
39
|
+
}
|
|
40
|
+
export interface ChatDaemonRuntimeDeps {
|
|
41
|
+
createDiscordProvider?: (config: NonNullable<ChatDaemonRuntimeConfig["notifications"]["discord"]>) => DiscordProvider;
|
|
42
|
+
createSlackProvider?: (config: NonNullable<ChatDaemonRuntimeConfig["notifications"]["slack"]>) => SlackProviderClient;
|
|
43
|
+
createClient?: (endpoint: SdkSessionEndpoint) => Promise<ChatDaemonSdkClient>;
|
|
44
|
+
createIndex?: (agentDir: string) => SessionIndex;
|
|
45
|
+
createBrokerClient?: (endpoint: {
|
|
46
|
+
url: string;
|
|
47
|
+
token: string;
|
|
48
|
+
}) => Promise<ChatDaemonSdkClient>;
|
|
49
|
+
onReconciled?: () => void;
|
|
50
|
+
setInterval?: typeof setInterval;
|
|
51
|
+
clearInterval?: typeof clearInterval;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Worker-owned session discovery and event fanout. It connects only through the
|
|
55
|
+
* public SDK transport and retains endpoint tokens solely in live client objects.
|
|
56
|
+
*/
|
|
57
|
+
export declare class ChatDaemonRuntime {
|
|
58
|
+
#private;
|
|
59
|
+
private readonly input;
|
|
60
|
+
private readonly deps;
|
|
61
|
+
constructor(input: {
|
|
62
|
+
kind: ChatDaemonKind;
|
|
63
|
+
agentDir: string;
|
|
64
|
+
config: ChatDaemonRuntimeConfig;
|
|
65
|
+
}, deps?: ChatDaemonRuntimeDeps);
|
|
66
|
+
start(): Promise<void>;
|
|
67
|
+
transportHealthy(): boolean;
|
|
68
|
+
stop(): Promise<void>;
|
|
69
|
+
private reconcile;
|
|
70
|
+
private attach;
|
|
71
|
+
private resolveEndpoint;
|
|
72
|
+
private schedule;
|
|
73
|
+
private enqueueFrame;
|
|
74
|
+
private handleFrame;
|
|
75
|
+
private close;
|
|
76
|
+
private resume;
|
|
77
|
+
}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { type ConversationRecord, type ConversationStoreFs } from "./conversation-store";
|
|
2
|
+
export declare const CHAT_EFFECT_JOURNAL_VERSION = 1;
|
|
3
|
+
export declare const MAX_TERMINAL_CHAT_EFFECTS = 128;
|
|
4
|
+
export declare function chatEffectJournalPath(agentDir: string, transport: "discord" | "slack"): string;
|
|
5
|
+
export type ChatEffectState = "pending" | "leased" | "accepted" | "uncertain" | "terminal";
|
|
6
|
+
/** Provider receipts are identifiers/status only. Never put request or response bodies here. */
|
|
7
|
+
export interface ChatEffectReceipt {
|
|
8
|
+
provider?: string;
|
|
9
|
+
messageId?: string;
|
|
10
|
+
channelId?: string;
|
|
11
|
+
threadId?: string;
|
|
12
|
+
timestamp?: string;
|
|
13
|
+
status?: string;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* A protected, generation-bound provider-visible effect. Payload is deliberately
|
|
17
|
+
* owned by this journal; conversation mappings may retain only `effectId`.
|
|
18
|
+
*/
|
|
19
|
+
export interface ChatEffect<TPayload = unknown> extends ConversationRecord {
|
|
20
|
+
id: string;
|
|
21
|
+
kind: string;
|
|
22
|
+
transport: "discord" | "slack";
|
|
23
|
+
sessionId?: string;
|
|
24
|
+
endpointGeneration: number;
|
|
25
|
+
payload: TPayload;
|
|
26
|
+
state: ChatEffectState;
|
|
27
|
+
owner?: string;
|
|
28
|
+
leaseExpiresAt?: number;
|
|
29
|
+
epoch: number;
|
|
30
|
+
createdAt: number;
|
|
31
|
+
updatedAt: number;
|
|
32
|
+
receipt?: ChatEffectReceipt;
|
|
33
|
+
}
|
|
34
|
+
export interface EnqueueChatEffect<TPayload> {
|
|
35
|
+
id: string;
|
|
36
|
+
kind: string;
|
|
37
|
+
transport: "discord" | "slack";
|
|
38
|
+
sessionId?: string;
|
|
39
|
+
endpointGeneration: number;
|
|
40
|
+
payload: TPayload;
|
|
41
|
+
receipt?: ChatEffectReceipt;
|
|
42
|
+
}
|
|
43
|
+
export interface ChatEffectLease {
|
|
44
|
+
owner: string;
|
|
45
|
+
epoch: number;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* One journal per transport. It uses the same 0600, fsynced atomic persistence
|
|
49
|
+
* and cross-process exclusive locking as mappings, but stores payloads in a
|
|
50
|
+
* separate protected file (`effects.json`). Terminal history is compacted only
|
|
51
|
+
* after terminal state is durably recorded; nonterminal effects are never evicted.
|
|
52
|
+
*/
|
|
53
|
+
export declare class ChatEffectJournal {
|
|
54
|
+
#private;
|
|
55
|
+
constructor(input: {
|
|
56
|
+
agentDir: string;
|
|
57
|
+
transport: "discord" | "slack";
|
|
58
|
+
fs?: ConversationStoreFs;
|
|
59
|
+
now?: () => number;
|
|
60
|
+
pid?: number;
|
|
61
|
+
pidAlive?: (pid: number) => boolean;
|
|
62
|
+
pidIncarnation?: (pid: number) => string | undefined;
|
|
63
|
+
sleep?: (ms: number) => Promise<void>;
|
|
64
|
+
lockTimeoutMs?: number;
|
|
65
|
+
});
|
|
66
|
+
get filePath(): string;
|
|
67
|
+
read<TPayload = unknown>(id: string): Promise<ChatEffect<TPayload> | undefined>;
|
|
68
|
+
list(): Promise<ChatEffect[]>;
|
|
69
|
+
replayable(transport: "discord" | "slack", endpointGeneration: number): Promise<ChatEffect[]>;
|
|
70
|
+
enqueue<TPayload>(input: EnqueueChatEffect<TPayload>): Promise<ChatEffect<TPayload>>;
|
|
71
|
+
/**
|
|
72
|
+
* Inserts an effect directly into a live lease. Recovery can never observe a
|
|
73
|
+
* newly persisted effect as claimable before its owner has authority to act.
|
|
74
|
+
* Existing effects are left untouched and report no acquired lease.
|
|
75
|
+
*/
|
|
76
|
+
enqueueAndClaim<TPayload>(input: EnqueueChatEffect<TPayload>, owner: string, leaseMs: number): Promise<ChatEffect<TPayload> | undefined>;
|
|
77
|
+
claim<TPayload = unknown>(id: string, owner: string, leaseMs: number): Promise<ChatEffect<TPayload> | undefined>;
|
|
78
|
+
renew<TPayload = unknown>(id: string, lease: ChatEffectLease, leaseMs: number): Promise<ChatEffect<TPayload> | undefined>;
|
|
79
|
+
/** Persists provider progress without releasing the owner/epoch fence. */
|
|
80
|
+
recordReceipt<TPayload = unknown>(id: string, lease: ChatEffectLease, receipt: ChatEffectReceipt): Promise<ChatEffect<TPayload> | undefined>;
|
|
81
|
+
record<TPayload = unknown>(id: string, lease: ChatEffectLease, state: Exclude<ChatEffectState, "pending" | "leased">, receipt?: ChatEffectReceipt): Promise<ChatEffect<TPayload> | undefined>;
|
|
82
|
+
/** Irreversibly rejects an effect whose mapping never accepted its authority. */
|
|
83
|
+
terminalize(id: string, receipt: ChatEffectReceipt, lease?: ChatEffectLease): Promise<ChatEffect | undefined>;
|
|
84
|
+
}
|
|
@@ -18,11 +18,12 @@ export interface ConfigCommandChange {
|
|
|
18
18
|
verbosity?: "lean" | "verbose";
|
|
19
19
|
redact?: boolean;
|
|
20
20
|
}
|
|
21
|
-
export type TelegramControlCommandName = "reasoning" | "usage" | "context" | "compact";
|
|
21
|
+
export type TelegramControlCommandName = "reasoning" | "usage" | "context" | "compact" | "model";
|
|
22
22
|
export type TelegramControlCommand = {
|
|
23
23
|
name: "reasoning";
|
|
24
|
-
action: "cycle" | "status" | "set";
|
|
24
|
+
action: "cycle" | "status" | "set" | "show" | "hide";
|
|
25
25
|
level?: string;
|
|
26
|
+
global?: boolean;
|
|
26
27
|
} | {
|
|
27
28
|
name: "usage";
|
|
28
29
|
} | {
|
|
@@ -30,6 +31,10 @@ export type TelegramControlCommand = {
|
|
|
30
31
|
} | {
|
|
31
32
|
name: "compact";
|
|
32
33
|
instructions?: string;
|
|
34
|
+
} | {
|
|
35
|
+
name: "model";
|
|
36
|
+
action: "list" | "set";
|
|
37
|
+
selector?: string;
|
|
33
38
|
};
|
|
34
39
|
export type TelegramControlCommandParseResult = {
|
|
35
40
|
kind: "none";
|