@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,60 @@
|
|
|
1
|
+
import { type SdkSessionEndpoint } from "../client/discovery";
|
|
2
|
+
import { ConversationStore } from "./conversation-store";
|
|
3
|
+
import { type SlackConversation } from "./slack-conversation";
|
|
4
|
+
export declare class SlackEndpointBindingError extends Error {
|
|
5
|
+
constructor(message?: string);
|
|
6
|
+
}
|
|
7
|
+
import type { SlackProvider, SlackSocketEnvelope } from "./slack-provider";
|
|
8
|
+
export interface SlackEndpoint extends SdkSessionEndpoint {
|
|
9
|
+
generation: number;
|
|
10
|
+
}
|
|
11
|
+
export interface SlackSdkClient {
|
|
12
|
+
send(frame: Record<string, unknown>): void;
|
|
13
|
+
}
|
|
14
|
+
export interface SlackNotificationDaemonOptions {
|
|
15
|
+
agentDir: string;
|
|
16
|
+
repo: string;
|
|
17
|
+
teamId: string;
|
|
18
|
+
channelId: string;
|
|
19
|
+
provider: SlackProvider;
|
|
20
|
+
botUserId?: string;
|
|
21
|
+
/** Fail-closed authorization for the paired Slack principal. */
|
|
22
|
+
authorizeActor?: (actorId: string) => boolean | Promise<boolean>;
|
|
23
|
+
store?: ConversationStore<SlackConversation>;
|
|
24
|
+
now?: () => number;
|
|
25
|
+
randomId?: () => string;
|
|
26
|
+
/** Stable identity for the process attempting durable provider publication. */
|
|
27
|
+
publicationOwnerId?: string;
|
|
28
|
+
publicationLeaseMs?: number;
|
|
29
|
+
resolveEndpoint?: (sessionId: string) => Promise<SlackEndpoint | null>;
|
|
30
|
+
createClient: (endpoint: SlackEndpoint) => SlackSdkClient;
|
|
31
|
+
onCommand?: (sessionId: string, content: string, endpoint: SlackEndpoint, idempotencyKey: string) => Promise<boolean>;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Slack Socket Mode notification daemon. Accepted inbound SDK effects are
|
|
35
|
+
* persisted before acknowledgement, including their replay payload and captured
|
|
36
|
+
* endpoint generation; endpoint credentials and Socket Mode cursors are never
|
|
37
|
+
* written to disk.
|
|
38
|
+
*/
|
|
39
|
+
export declare class SlackNotificationDaemon {
|
|
40
|
+
#private;
|
|
41
|
+
private readonly options;
|
|
42
|
+
readonly store: ConversationStore<SlackConversation>;
|
|
43
|
+
constructor(options: SlackNotificationDaemonOptions);
|
|
44
|
+
start(): Promise<void>;
|
|
45
|
+
stop(): Promise<void>;
|
|
46
|
+
/** Accepted inbound effects are durably claimed before their Socket Mode ACK. */
|
|
47
|
+
handleEnvelope(envelope: SlackSocketEnvelope): Promise<boolean>;
|
|
48
|
+
postRoot(sessionId: string, body: string, endpointGeneration?: number): Promise<SlackConversation>;
|
|
49
|
+
/** Deliver a notification into the mapped root thread, creating that root once. */
|
|
50
|
+
notify(sessionId: string, body: string, actionId?: string, endpointGeneration?: number): Promise<SlackConversation>;
|
|
51
|
+
/** Posts a safe command outcome to the active mapped root thread. */
|
|
52
|
+
postCommandResult(sessionId: string, content: string): Promise<boolean>;
|
|
53
|
+
resolveAction(sessionId: string, actionId: string): Promise<void>;
|
|
54
|
+
close(sessionId: string, marker?: string): Promise<boolean>;
|
|
55
|
+
resume(sessionId: string, body: string, endpointGeneration?: number): Promise<SlackConversation>;
|
|
56
|
+
findSession(sessionId: string, includeInactive: boolean): Promise<{
|
|
57
|
+
key: string;
|
|
58
|
+
record: SlackConversation;
|
|
59
|
+
} | undefined>;
|
|
60
|
+
}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import type { SlackMessageSearchResult, SlackPostedMessage, SlackProviderClient, SlackSocketEnvelope } from "./slack-provider";
|
|
2
|
+
export type SlackProviderErrorCode = "connection" | "protocol" | "web_api" | "rate_limited";
|
|
3
|
+
/** A Slack transport failure whose fields are safe to surface without credentials. */
|
|
4
|
+
export declare class SlackProviderError extends Error {
|
|
5
|
+
readonly code: SlackProviderErrorCode;
|
|
6
|
+
readonly operation: string;
|
|
7
|
+
readonly status?: number | undefined;
|
|
8
|
+
readonly retryAfterMs?: number | undefined;
|
|
9
|
+
/** The server may have accepted the request before its response became unusable. */
|
|
10
|
+
readonly mayHaveBeenAccepted: boolean;
|
|
11
|
+
readonly retryable: boolean;
|
|
12
|
+
constructor(code: SlackProviderErrorCode, operation: string, status?: number | undefined, retryAfterMs?: number | undefined,
|
|
13
|
+
/** The server may have accepted the request before its response became unusable. */
|
|
14
|
+
mayHaveBeenAccepted?: boolean);
|
|
15
|
+
}
|
|
16
|
+
export interface SlackWebSocket {
|
|
17
|
+
readonly readyState: number;
|
|
18
|
+
onopen: ((event: Event) => void) | null;
|
|
19
|
+
onmessage: ((event: MessageEvent) => void) | null;
|
|
20
|
+
onclose: ((event: CloseEvent) => void) | null;
|
|
21
|
+
onerror: ((event: Event) => void) | null;
|
|
22
|
+
send(data: string): void;
|
|
23
|
+
close(): void;
|
|
24
|
+
}
|
|
25
|
+
export interface SlackLiveProviderOptions {
|
|
26
|
+
appToken: string;
|
|
27
|
+
botToken: string;
|
|
28
|
+
fetch?: (input: string, init?: RequestInit) => Promise<Response>;
|
|
29
|
+
webSocket?: (url: string) => SlackWebSocket;
|
|
30
|
+
now?: () => number;
|
|
31
|
+
sleep?: (milliseconds: number) => Promise<void>;
|
|
32
|
+
reconnectDelayMs?: number;
|
|
33
|
+
maxRateLimitRetries?: number;
|
|
34
|
+
maxRetryAfterMs?: number;
|
|
35
|
+
activityTimeoutMs?: number;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Production Socket Mode and Web API client. It keeps all connection state in
|
|
39
|
+
* memory and deliberately never maintains a Slack cursor.
|
|
40
|
+
*/
|
|
41
|
+
export declare class SlackLiveProvider implements SlackProviderClient {
|
|
42
|
+
#private;
|
|
43
|
+
get transportHealthy(): boolean;
|
|
44
|
+
constructor(options: SlackLiveProviderOptions);
|
|
45
|
+
start(onEnvelope: (envelope: SlackSocketEnvelope) => void | Promise<void>): Promise<void>;
|
|
46
|
+
stop(): Promise<void>;
|
|
47
|
+
ack(envelopeId: string): Promise<void>;
|
|
48
|
+
postMessage(input: {
|
|
49
|
+
channel: string;
|
|
50
|
+
text: string;
|
|
51
|
+
threadTs?: string;
|
|
52
|
+
clientMsgId: string;
|
|
53
|
+
}): Promise<SlackPostedMessage>;
|
|
54
|
+
findMessageByClientMsgId(input: {
|
|
55
|
+
channel: string;
|
|
56
|
+
clientMsgId: string;
|
|
57
|
+
threadTs?: string;
|
|
58
|
+
}): Promise<SlackMessageSearchResult | null>;
|
|
59
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
export interface SlackSocketEnvelope {
|
|
2
|
+
envelope_id: string;
|
|
3
|
+
payload: unknown;
|
|
4
|
+
}
|
|
5
|
+
export interface SlackPostedMessage {
|
|
6
|
+
channel: string;
|
|
7
|
+
ts: string;
|
|
8
|
+
client_msg_id?: string;
|
|
9
|
+
}
|
|
10
|
+
export interface SlackMessageSearchResult {
|
|
11
|
+
channel: string;
|
|
12
|
+
ts: string;
|
|
13
|
+
client_msg_id?: string;
|
|
14
|
+
}
|
|
15
|
+
/** Minimal Socket Mode + Web API seam. Implementations may wrap the official Slack SDK. */
|
|
16
|
+
export interface SlackProviderClient {
|
|
17
|
+
start(onEnvelope: (envelope: SlackSocketEnvelope) => void | Promise<void>): Promise<void>;
|
|
18
|
+
stop?(): Promise<void>;
|
|
19
|
+
ack(envelopeId: string): Promise<void>;
|
|
20
|
+
postMessage(input: {
|
|
21
|
+
channel: string;
|
|
22
|
+
text: string;
|
|
23
|
+
threadTs?: string;
|
|
24
|
+
clientMsgId: string;
|
|
25
|
+
}): Promise<SlackPostedMessage>;
|
|
26
|
+
findMessageByClientMsgId?(input: {
|
|
27
|
+
channel: string;
|
|
28
|
+
clientMsgId: string;
|
|
29
|
+
threadTs?: string;
|
|
30
|
+
}): Promise<SlackMessageSearchResult | null>;
|
|
31
|
+
readonly transportHealthy?: boolean;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Transport wrapper deliberately limited to Slack SDK operations. Keeping it injectable
|
|
35
|
+
* makes Socket Mode acknowledgement and Web API failure cases deterministic in tests.
|
|
36
|
+
*/
|
|
37
|
+
export declare class SlackProvider {
|
|
38
|
+
private readonly client;
|
|
39
|
+
constructor(client: SlackProviderClient);
|
|
40
|
+
start(onEnvelope: (envelope: SlackSocketEnvelope) => void | Promise<void>): Promise<void>;
|
|
41
|
+
get transportHealthy(): boolean;
|
|
42
|
+
stop(): Promise<void>;
|
|
43
|
+
ack(envelopeId: string): Promise<void>;
|
|
44
|
+
postMessage(input: {
|
|
45
|
+
channel: string;
|
|
46
|
+
text: string;
|
|
47
|
+
threadTs?: string;
|
|
48
|
+
clientMsgId: string;
|
|
49
|
+
}): Promise<SlackPostedMessage>;
|
|
50
|
+
findMessageByClientMsgId(input: {
|
|
51
|
+
channel: string;
|
|
52
|
+
clientMsgId: string;
|
|
53
|
+
threadTs?: string;
|
|
54
|
+
}): Promise<SlackMessageSearchResult | null>;
|
|
55
|
+
}
|
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
#!/usr/bin/env bun
|
|
2
2
|
/**
|
|
3
|
-
* Reference CLI for the
|
|
3
|
+
* Reference CLI for the Gajae-Code SDK Telegram client.
|
|
4
4
|
*
|
|
5
5
|
* Bridges a running GJC session's notification endpoint to a Telegram bot so you
|
|
6
6
|
* can answer asks / see idle pings from your phone — no RPC mode required. This
|
|
7
|
-
* is an EXAMPLE/template (the SDK contract is in `docs/
|
|
7
|
+
* is an EXAMPLE/template (the SDK contract is in `docs/sdk.md`);
|
|
8
8
|
* Discord/Slack clients are written the same way.
|
|
9
9
|
*
|
|
10
10
|
* Usage:
|
|
11
|
-
* bun run packages/coding-agent/src/
|
|
11
|
+
* bun run packages/coding-agent/src/sdk/bus/telegram-cli.ts \
|
|
12
12
|
* --bot-token <token> [--chat-id <id>] [--endpoint-file <path> | --session-id <id>] [--repo <dir>]
|
|
13
13
|
*
|
|
14
14
|
* Env fallbacks: GJC_TG_BOT_TOKEN, GJC_TG_CHAT_ID.
|
|
15
15
|
* If --chat-id is omitted it is auto-resolved from getUpdates (message the bot once).
|
|
16
16
|
* If neither --endpoint-file nor --session-id is given, the newest endpoint file
|
|
17
|
-
* under <repo>/.gjc/state/
|
|
17
|
+
* under <repo>/.gjc/state/sdk/ is used.
|
|
18
18
|
*/
|
|
19
19
|
export {};
|
|
@@ -1,25 +1,34 @@
|
|
|
1
|
-
import type { Settings } from "
|
|
2
|
-
import type
|
|
1
|
+
import type { Settings } from "../../config/settings";
|
|
2
|
+
import { type NotificationSettingsReader } from "./config";
|
|
3
|
+
import { type DaemonState, type TelegramDaemonOptions } from "./telegram-daemon";
|
|
3
4
|
type TelegramDaemonRunner = {
|
|
4
5
|
run(): Promise<void>;
|
|
5
6
|
requestStop(reason?: "reload" | "signal" | "stop"): void;
|
|
6
7
|
};
|
|
7
8
|
type TelegramDaemonConstructor = new (opts: TelegramDaemonOptions) => TelegramDaemonRunner;
|
|
9
|
+
export type LightweightDaemonSettings = Pick<Settings, "get" | "getAgentDir" | "set" | "flush"> & NotificationSettingsReader;
|
|
8
10
|
export interface RunDaemonInternalDeps {
|
|
9
11
|
SettingsImpl?: {
|
|
10
12
|
init: (options?: {
|
|
11
13
|
agentDir?: string;
|
|
12
|
-
}) => Promise<
|
|
14
|
+
}) => Promise<LightweightDaemonSettings>;
|
|
13
15
|
};
|
|
14
16
|
DaemonImpl?: TelegramDaemonConstructor;
|
|
15
17
|
processPid?: number;
|
|
16
18
|
pidAlive?: (pid: number) => boolean;
|
|
19
|
+
/** Clock used by the ownership-progress watchdog; defaults to `Date.now`. */
|
|
20
|
+
now?: () => number;
|
|
21
|
+
/** Timer pair backing the ownership-progress watchdog; defaults to globals. */
|
|
22
|
+
setInterval?: (callback: () => void, ms: number) => Timer;
|
|
23
|
+
clearInterval?: (timer: Timer) => void;
|
|
24
|
+
/** Reads persisted daemon ownership state; defaults to the real reader. */
|
|
25
|
+
readDaemonState?: (settings: Settings) => Promise<DaemonState | undefined>;
|
|
17
26
|
}
|
|
18
27
|
export declare function createLightweightDaemonSettings(input: {
|
|
19
28
|
agentDir: string;
|
|
20
29
|
rawConfig?: unknown;
|
|
21
|
-
}):
|
|
22
|
-
export declare function loadLightweightDaemonSettings(agentDir: string): Promise<
|
|
30
|
+
}): LightweightDaemonSettings;
|
|
31
|
+
export declare function loadLightweightDaemonSettings(agentDir: string): Promise<LightweightDaemonSettings>;
|
|
23
32
|
export declare function ownerPidFromOwnerId(ownerId: string): number | undefined;
|
|
24
33
|
export declare function runDaemonSmoke(opts?: {
|
|
25
34
|
agentDir?: string;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Lightweight daemon protocol contract for consumers that need generation
|
|
3
|
+
* metadata without loading the Telegram daemon runtime.
|
|
4
|
+
*/
|
|
5
|
+
/** Protocol version the daemon advertises in its ClientHello. */
|
|
6
|
+
export declare const NOTIFICATION_PROTOCOL_VERSION = 3;
|
|
7
|
+
/**
|
|
8
|
+
* Operational generation the current daemon build speaks. It is tied to the
|
|
9
|
+
* wire protocol version so a freshly-upgraded host can identify an older,
|
|
10
|
+
* still-live daemon without coupling status readers to the daemon runtime.
|
|
11
|
+
*/
|
|
12
|
+
export declare const DAEMON_GENERATION = 3;
|
|
@@ -7,8 +7,8 @@
|
|
|
7
7
|
* keeps the single-poller invariant (no Telegram getUpdates 409 overlap) and
|
|
8
8
|
* never steals a still-live owner.
|
|
9
9
|
*/
|
|
10
|
-
import type { Settings } from "
|
|
11
|
-
import type { BuiltInDaemonController, DaemonOperationOptions, DaemonOperationResult, DaemonStatus } from "
|
|
10
|
+
import type { Settings } from "../../config/settings";
|
|
11
|
+
import type { BuiltInDaemonController, DaemonOperationOptions, DaemonOperationResult, DaemonStatus } from "../../daemon/control-types";
|
|
12
12
|
import { type TelegramDaemonDeps, type TelegramDaemonFs } from "./telegram-daemon";
|
|
13
13
|
export interface TelegramDaemonControlRequest {
|
|
14
14
|
version: 1;
|
|
@@ -1,11 +1,15 @@
|
|
|
1
1
|
import * as fs from "node:fs";
|
|
2
|
-
import type { Settings } from "
|
|
3
|
-
import type { DaemonRuntimeInfo } from "
|
|
2
|
+
import type { Settings } from "../../config/settings";
|
|
3
|
+
import type { DaemonRuntimeInfo } from "../../daemon/control-types";
|
|
4
4
|
import { HEARTBEAT_TTL_MS } from "./daemon-paths";
|
|
5
|
+
export { DAEMON_GENERATION, NOTIFICATION_PROTOCOL_VERSION } from "./telegram-daemon-contract";
|
|
5
6
|
import { type ControlServerLike, type LifecycleControlServerFactory } from "./lifecycle-control-runtime";
|
|
7
|
+
import type { OrchestratorDeps } from "./lifecycle-orchestrator";
|
|
6
8
|
import { NotificationOperatorRuntime, OperatorBackoffPolicy } from "./operator-runtime";
|
|
7
9
|
import { type AliasTable, type CallbackRoute } from "./telegram-reference";
|
|
8
10
|
export type EnsureDaemonResult = "owner_spawned" | "attached" | "disabled" | "blocked";
|
|
11
|
+
/** Detailed result for orchestration that must distinguish a #2028 handoff from a fresh spawn. */
|
|
12
|
+
export type EnsureTelegramDaemonDetailedResult = "spawned" | "reloaded" | "attached" | "disabled" | "blocked_identity";
|
|
9
13
|
export interface DaemonState {
|
|
10
14
|
pid: number;
|
|
11
15
|
ownerId: string;
|
|
@@ -66,22 +70,11 @@ export { HEARTBEAT_TTL_MS };
|
|
|
66
70
|
export declare const DAEMON_VERSION = 1;
|
|
67
71
|
/** Capability token advertised when the server supports app-level ping/pong. */
|
|
68
72
|
export declare const CLIENT_PING_PONG_CAPABILITY = "client_ping_pong";
|
|
69
|
-
/** Protocol version the daemon advertises in its ClientHello. */
|
|
70
|
-
export declare const NOTIFICATION_PROTOCOL_VERSION = 3;
|
|
71
73
|
/** Capability required for typed controls and semantic Selected acknowledgement frames. */
|
|
72
74
|
export declare const ASK_SELECTED_ACK_CAPABILITY = "ask_selected_ack_v1";
|
|
73
75
|
export declare const ASK_CONTROLS_CAPABILITY = "ask_controls_v1";
|
|
74
|
-
/**
|
|
75
|
-
* Operational generation the current daemon build speaks, persisted into
|
|
76
|
-
* {@link DaemonState.generation} on ownership acquisition. It is tied to the
|
|
77
|
-
* wire {@link NOTIFICATION_PROTOCOL_VERSION} so any protocol bump (which is what
|
|
78
|
-
* gates capabilities like {@link ASK_SELECTED_ACK_CAPABILITY}) also bumps the
|
|
79
|
-
* generation, letting a freshly-upgraded host recognise an older, still-live
|
|
80
|
-
* daemon and reload it instead of silently attaching to it. Distinct from the
|
|
81
|
-
* persisted schema {@link DAEMON_VERSION}, which did not change across #1999.
|
|
82
|
-
*/
|
|
83
|
-
export declare const DAEMON_GENERATION = 3;
|
|
84
76
|
export { type DaemonPaths, daemonPaths } from "./daemon-paths";
|
|
77
|
+
export declare function deriveLifecycleAuditRedactionKey(botToken: string): Uint8Array;
|
|
85
78
|
/**
|
|
86
79
|
* Attach session-lifecycle control (create/close/resume) to the running daemon.
|
|
87
80
|
*
|
|
@@ -96,14 +89,26 @@ export declare function startDaemonLifecycleControl(input: {
|
|
|
96
89
|
controlServer: ControlServerLike;
|
|
97
90
|
pairedChatId: string;
|
|
98
91
|
agentDir: string;
|
|
92
|
+
auditRedactionKey: Uint8Array;
|
|
99
93
|
env?: NodeJS.ProcessEnv;
|
|
100
|
-
}):
|
|
94
|
+
}): OrchestratorDeps;
|
|
101
95
|
export declare function registerNotificationRoot(input: {
|
|
102
96
|
settings: Settings;
|
|
103
97
|
cwd: string;
|
|
104
98
|
sessionId: string;
|
|
105
99
|
fs?: TelegramDaemonFs;
|
|
106
100
|
}): Promise<string>;
|
|
101
|
+
export interface UnregisterNotificationRootResult {
|
|
102
|
+
root: string;
|
|
103
|
+
remainingRoots: number;
|
|
104
|
+
}
|
|
105
|
+
/** Remove one session's Telegram scan root without disturbing other live session roots. */
|
|
106
|
+
export declare function unregisterNotificationRoot(input: {
|
|
107
|
+
settings: Settings;
|
|
108
|
+
cwd: string;
|
|
109
|
+
sessionId: string;
|
|
110
|
+
fs?: TelegramDaemonFs;
|
|
111
|
+
}): Promise<UnregisterNotificationRootResult>;
|
|
107
112
|
export declare function isFreshLiveOwner(input: {
|
|
108
113
|
state: DaemonState | undefined;
|
|
109
114
|
now: number;
|
|
@@ -143,9 +148,9 @@ export declare function releaseDaemonOwnership(input: {
|
|
|
143
148
|
now?: () => number;
|
|
144
149
|
}): Promise<void>;
|
|
145
150
|
/** Read the persisted daemon ownership state (or undefined when absent). */
|
|
146
|
-
export declare function readDaemonState(settings: Settings, fs?: TelegramDaemonFs): Promise<DaemonState | undefined>;
|
|
151
|
+
export declare function readDaemonState(settings: Pick<Settings, "getAgentDir">, fs?: TelegramDaemonFs): Promise<DaemonState | undefined>;
|
|
147
152
|
/** Read the persisted notification roots list. */
|
|
148
|
-
export declare function readDaemonRoots(settings: Settings, fs?: TelegramDaemonFs): Promise<string[]>;
|
|
153
|
+
export declare function readDaemonRoots(settings: Pick<Settings, "getAgentDir">, fs?: TelegramDaemonFs): Promise<string[]>;
|
|
149
154
|
export interface TelegramSpawnOwnerInput {
|
|
150
155
|
settings: Settings;
|
|
151
156
|
roots?: string[];
|
|
@@ -185,6 +190,19 @@ export declare function buildTelegramDaemonSpawnArgs(input: {
|
|
|
185
190
|
* already-persisted roots.
|
|
186
191
|
*/
|
|
187
192
|
export declare function spawnTelegramDaemonOwner(input: TelegramSpawnOwnerInput, deps?: TelegramDaemonDeps): Promise<TelegramSpawnOwnerResult>;
|
|
193
|
+
/**
|
|
194
|
+
* Ensure a configured daemon owns this session root, preserving ownership safety
|
|
195
|
+
* while exposing whether a #2028 generation handoff was required.
|
|
196
|
+
*/
|
|
197
|
+
export declare function ensureTelegramDaemonRunningDetailed(input: {
|
|
198
|
+
settings: Settings;
|
|
199
|
+
cwd: string;
|
|
200
|
+
sessionId: string;
|
|
201
|
+
}, deps?: TelegramDaemonDeps): Promise<EnsureTelegramDaemonDetailedResult>;
|
|
202
|
+
/**
|
|
203
|
+
* Legacy compatibility mapping for callers that only distinguish ownership from
|
|
204
|
+
* attachment. New orchestration should use {@link ensureTelegramDaemonRunningDetailed}.
|
|
205
|
+
*/
|
|
188
206
|
export declare function ensureTelegramDaemonRunning(input: {
|
|
189
207
|
settings: Settings;
|
|
190
208
|
cwd: string;
|
|
@@ -212,17 +230,40 @@ export declare class TelegramBotTransport implements BotApi {
|
|
|
212
230
|
}): Promise<unknown>;
|
|
213
231
|
}
|
|
214
232
|
export type TelegramUpdateOutcome = "consumed" | "retry";
|
|
233
|
+
export type TelegramPollResult = {
|
|
234
|
+
kind: "success";
|
|
235
|
+
updateCount: number;
|
|
236
|
+
} | {
|
|
237
|
+
kind: "aborted";
|
|
238
|
+
} | {
|
|
239
|
+
kind: "getUpdates_failed";
|
|
240
|
+
error: string;
|
|
241
|
+
} | {
|
|
242
|
+
kind: "api_failure";
|
|
243
|
+
errorCode?: number;
|
|
244
|
+
description: string;
|
|
245
|
+
} | {
|
|
246
|
+
kind: "conflict";
|
|
247
|
+
description: string;
|
|
248
|
+
backoffMs: number;
|
|
249
|
+
};
|
|
215
250
|
export interface TelegramUpdatePollerOptions {
|
|
216
251
|
botApi: BotApi;
|
|
217
252
|
runtime: NotificationOperatorRuntime;
|
|
218
253
|
backoff: OperatorBackoffPolicy;
|
|
219
254
|
processUpdate: (update: unknown) => Promise<TelegramUpdateOutcome>;
|
|
255
|
+
health?: TelegramPollHealth;
|
|
256
|
+
}
|
|
257
|
+
export declare class TelegramPollHealth {
|
|
258
|
+
#private;
|
|
259
|
+
record(result: TelegramPollResult): void;
|
|
220
260
|
}
|
|
221
261
|
/** Owns getUpdates offset, conflict backoff, and per-update error isolation. */
|
|
222
262
|
export declare class TelegramUpdatePoller {
|
|
223
263
|
#private;
|
|
224
264
|
constructor(opts: TelegramUpdatePollerOptions);
|
|
225
265
|
pollOnce(signal?: AbortSignal): Promise<number>;
|
|
266
|
+
pollOnceResult(signal?: AbortSignal): Promise<TelegramPollResult>;
|
|
226
267
|
}
|
|
227
268
|
/** Mutable dispatch state shared by session frames and inbound Telegram updates. */
|
|
228
269
|
export declare class TelegramEventDispatchState {
|
|
@@ -271,6 +312,16 @@ export interface TelegramDaemonOptions {
|
|
|
271
312
|
* default applies (e.g. lifecycle control disabled), no control server starts.
|
|
272
313
|
*/
|
|
273
314
|
createLifecycleControlServer?: LifecycleControlServerFactory | null;
|
|
315
|
+
/**
|
|
316
|
+
* Test seam for observing the exact production lifecycle dependency input.
|
|
317
|
+
* Production defaults to {@link buildOrchestratorDeps}.
|
|
318
|
+
*/
|
|
319
|
+
createLifecycleOrchestratorDeps?: (input: {
|
|
320
|
+
pairedChatId: string;
|
|
321
|
+
agentNotificationsDir: string;
|
|
322
|
+
sessionsRoot: string;
|
|
323
|
+
auditRedactionKey: Uint8Array;
|
|
324
|
+
}) => OrchestratorDeps;
|
|
274
325
|
/** Rich text promotion (enabled by default; see rich-render.ts). */
|
|
275
326
|
rich?: {
|
|
276
327
|
enabled: boolean;
|
|
@@ -289,7 +340,10 @@ export interface TelegramDaemonOptions {
|
|
|
289
340
|
};
|
|
290
341
|
}
|
|
291
342
|
interface SessionSocket {
|
|
343
|
+
/** Immutable key of the transport endpoint that owns this socket. */
|
|
292
344
|
sessionId: string;
|
|
345
|
+
/** Current logical session carried by valid threaded frames on this transport. */
|
|
346
|
+
logicalSessionId: string;
|
|
293
347
|
token: string;
|
|
294
348
|
endpointKey: string;
|
|
295
349
|
ws: WebSocket;
|
|
@@ -305,8 +359,14 @@ interface SessionSocket {
|
|
|
305
359
|
awaitingNonce: string | undefined;
|
|
306
360
|
/** Per-session liveness interval handle (only set for capable sessions). */
|
|
307
361
|
pingTimer: ReturnType<typeof setInterval> | undefined;
|
|
362
|
+
/** Correlation id for the startup replay barrier. */
|
|
363
|
+
replayId: string;
|
|
364
|
+
/** Queues live frames until startup replay is applied. */
|
|
365
|
+
replayPending: boolean;
|
|
366
|
+
replayQueue: Record<string, unknown>[];
|
|
308
367
|
}
|
|
309
368
|
export declare class TelegramNotificationDaemon {
|
|
369
|
+
#private;
|
|
310
370
|
private readonly opts;
|
|
311
371
|
readonly aliasTable: AliasTable;
|
|
312
372
|
readonly messageRoutes: Map<string | number, CallbackRoute | Omit<CallbackRoute, "answer">>;
|
|
@@ -416,6 +476,7 @@ export declare class TelegramNotificationDaemon {
|
|
|
416
476
|
persistSeenUpdateIds(): Promise<void>;
|
|
417
477
|
private pruneSeenUpdateIds;
|
|
418
478
|
private rememberSeenUpdateId;
|
|
479
|
+
private rememberSeenUpdateIdForUnavailableNotice;
|
|
419
480
|
scanRoots(): Promise<void>;
|
|
420
481
|
connectSession(sessionId: string, url: string, token: string): void;
|
|
421
482
|
/**
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Telegram **reference** client for the
|
|
2
|
+
* Telegram **reference** client for the Gajae-Code SDK.
|
|
3
3
|
*
|
|
4
4
|
* This is an example/template, NOT an upstream-owned integration: it implements
|
|
5
|
-
* the documented WS protocol (see `docs/
|
|
5
|
+
* the documented WS protocol (see `docs/sdk.md`) so you can copy it
|
|
6
6
|
* to build Discord/Slack/etc. clients with zero upstream changes. The Bot API
|
|
7
7
|
* transport shape is salvaged from the removed `telegram-remote` package.
|
|
8
8
|
*
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
export declare const DEFAULT_TELEGRAM_SETUP_API_BASE = "https://api.telegram.org";
|
|
2
|
+
export declare const DEFAULT_TELEGRAM_SETUP_POLL_TIMEOUT_MS = 60000;
|
|
3
|
+
export declare const DEFAULT_TELEGRAM_SETUP_POLL_INTERVAL_MS = 1000;
|
|
4
|
+
export type TelegramThreadedModeState = "enabled" | "disabled" | "unknown";
|
|
5
|
+
export type TelegramThreadedModeLabel = "verified" | "unverified" | "unknown";
|
|
6
|
+
export type TelegramSetupPairingSource = "discovered" | "provided" | "reused";
|
|
7
|
+
export type TelegramSetupFailureStatus = "error" | "cancelled" | "requires_explicit_chat" | "ownership_lost" | "aborted";
|
|
8
|
+
export interface TelegramSetupTimers {
|
|
9
|
+
now(): number;
|
|
10
|
+
sleep(ms: number, signal?: AbortSignal): Promise<void>;
|
|
11
|
+
}
|
|
12
|
+
export interface TelegramSetupDeps {
|
|
13
|
+
fetchImpl: typeof fetch;
|
|
14
|
+
apiBase?: string;
|
|
15
|
+
timers?: TelegramSetupTimers;
|
|
16
|
+
}
|
|
17
|
+
/** Current daemon ownership facts collected by the caller before setup starts. */
|
|
18
|
+
export interface TelegramSetupPreflight {
|
|
19
|
+
storedChatId?: string;
|
|
20
|
+
daemon?: {
|
|
21
|
+
live: boolean;
|
|
22
|
+
tokenFingerprint?: string;
|
|
23
|
+
/** Required with a live daemon so reuse verifies the complete token/chat identity. */
|
|
24
|
+
chatId?: string;
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
export type TelegramSetupPollingPolicy = {
|
|
28
|
+
kind: "discover";
|
|
29
|
+
} | {
|
|
30
|
+
kind: "reuse_stored_chat";
|
|
31
|
+
chatId: string;
|
|
32
|
+
} | {
|
|
33
|
+
kind: "validate_explicit_chat";
|
|
34
|
+
chatId: string;
|
|
35
|
+
} | {
|
|
36
|
+
kind: "requires_explicit_chat";
|
|
37
|
+
} | {
|
|
38
|
+
kind: "cancel_foreign_or_unknown_owner";
|
|
39
|
+
identity: "foreign" | "unknown";
|
|
40
|
+
};
|
|
41
|
+
export type TelegramSetupEvent = {
|
|
42
|
+
kind: "token_validated";
|
|
43
|
+
message: string;
|
|
44
|
+
} | {
|
|
45
|
+
kind: "threaded_mode_guidance";
|
|
46
|
+
message: string;
|
|
47
|
+
} | {
|
|
48
|
+
kind: "rejected_chat";
|
|
49
|
+
message: string;
|
|
50
|
+
};
|
|
51
|
+
export interface TelegramSetupSuccess {
|
|
52
|
+
ok: true;
|
|
53
|
+
chatId: string;
|
|
54
|
+
tokenFingerprint: string;
|
|
55
|
+
threadedMode: TelegramThreadedModeState;
|
|
56
|
+
threadedLabel: TelegramThreadedModeLabel;
|
|
57
|
+
pairingSource: TelegramSetupPairingSource;
|
|
58
|
+
}
|
|
59
|
+
export interface TelegramSetupFailure {
|
|
60
|
+
ok: false;
|
|
61
|
+
status: TelegramSetupFailureStatus;
|
|
62
|
+
detail: string;
|
|
63
|
+
}
|
|
64
|
+
export type TelegramSetupResult = TelegramSetupSuccess | TelegramSetupFailure;
|
|
65
|
+
export interface TelegramBot {
|
|
66
|
+
id: number;
|
|
67
|
+
isBot?: boolean;
|
|
68
|
+
firstName?: string;
|
|
69
|
+
username?: string;
|
|
70
|
+
hasTopicsEnabled?: boolean;
|
|
71
|
+
allowsUsersToCreateTopics?: boolean;
|
|
72
|
+
}
|
|
73
|
+
export type TelegramTokenValidationResult = {
|
|
74
|
+
ok: true;
|
|
75
|
+
bot: TelegramBot;
|
|
76
|
+
threadedMode: TelegramThreadedModeState;
|
|
77
|
+
} | TelegramSetupFailure;
|
|
78
|
+
export type TelegramPrivateChatValidationResult = {
|
|
79
|
+
ok: true;
|
|
80
|
+
chatId: string;
|
|
81
|
+
} | TelegramSetupFailure;
|
|
82
|
+
export interface RunTelegramSetupInput {
|
|
83
|
+
token: string;
|
|
84
|
+
preflight: TelegramSetupPreflight;
|
|
85
|
+
/**
|
|
86
|
+
* Re-reads daemon ownership immediately before any `getUpdates` call. It is
|
|
87
|
+
* mandatory for discovery because an earlier preflight cannot own Telegram's
|
|
88
|
+
* single-poller slot.
|
|
89
|
+
*/
|
|
90
|
+
revalidatePreflight?: (signal?: AbortSignal) => Promise<TelegramSetupPreflight>;
|
|
91
|
+
chatId?: string;
|
|
92
|
+
interactive: boolean;
|
|
93
|
+
threadedModePrompt?: (message: string) => Promise<string>;
|
|
94
|
+
pollTimeoutMs?: number;
|
|
95
|
+
pollIntervalMs?: number;
|
|
96
|
+
signal?: AbortSignal;
|
|
97
|
+
onEvent?: (event: TelegramSetupEvent) => void;
|
|
98
|
+
deps: TelegramSetupDeps;
|
|
99
|
+
}
|
|
100
|
+
export declare function withTelegramSetupLease<T>(token: string, operation: () => Promise<T>): Promise<T>;
|
|
101
|
+
/** Validate a token with getMe without exposing it in diagnostics or results. */
|
|
102
|
+
export declare function validateTelegramBotToken(input: {
|
|
103
|
+
token: string;
|
|
104
|
+
deps: TelegramSetupDeps;
|
|
105
|
+
signal?: AbortSignal;
|
|
106
|
+
}): Promise<TelegramTokenValidationResult>;
|
|
107
|
+
/** Validate that a supplied or stored chat is an actual Telegram private chat. */
|
|
108
|
+
export declare function validateTelegramPrivateChat(input: {
|
|
109
|
+
token: string;
|
|
110
|
+
chatId: string;
|
|
111
|
+
deps: TelegramSetupDeps;
|
|
112
|
+
signal?: AbortSignal;
|
|
113
|
+
}): Promise<TelegramPrivateChatValidationResult>;
|
|
114
|
+
/**
|
|
115
|
+
* Decide whether setup may call getUpdates. Any live daemon is a hard polling
|
|
116
|
+
* boundary: only a verified complete token/chat identity may reuse the stored
|
|
117
|
+
* chat; setup never polls while any live owner exists.
|
|
118
|
+
*/
|
|
119
|
+
export declare function resolveTelegramSetupPollingPolicy(input: {
|
|
120
|
+
token: string;
|
|
121
|
+
preflight: TelegramSetupPreflight;
|
|
122
|
+
chatId?: string;
|
|
123
|
+
}): TelegramSetupPollingPolicy;
|
|
124
|
+
/**
|
|
125
|
+
* Validate a token, assess Threaded Mode, and obtain a private chat according
|
|
126
|
+
* to the daemon poller-contention policy. No settings are written here.
|
|
127
|
+
*/
|
|
128
|
+
export declare function runTelegramSetup(input: RunTelegramSetupInput): Promise<TelegramSetupResult>;
|
|
@@ -30,6 +30,10 @@ export interface TopicRecord {
|
|
|
30
30
|
userNameUpdateId?: number;
|
|
31
31
|
/** Stable repo/branch identity used when topic names are user-owned or customized. */
|
|
32
32
|
identityKey?: string;
|
|
33
|
+
/** Last SDK event generation durably consumed by the notification daemon. */
|
|
34
|
+
replayGeneration?: number;
|
|
35
|
+
/** Last SDK event sequence durably consumed within replayGeneration. */
|
|
36
|
+
replaySeq?: number;
|
|
33
37
|
}
|
|
34
38
|
/** Serialisable shape persisted to disk. */
|
|
35
39
|
export interface TopicRegistryState {
|
|
@@ -68,6 +72,13 @@ export declare class TopicRegistry {
|
|
|
68
72
|
needsIdentity(sessionId: string): boolean;
|
|
69
73
|
/** Remember stable repo/branch identity independently of the displayed name. */
|
|
70
74
|
markIdentityKey(sessionId: string, identityKey: string): boolean;
|
|
75
|
+
/** Last durably consumed SDK event cursor for reconnect replay. */
|
|
76
|
+
replayCursor(sessionId: string): {
|
|
77
|
+
generation: number;
|
|
78
|
+
seq: number;
|
|
79
|
+
} | undefined;
|
|
80
|
+
/** Advance the durable reconnect cursor without allowing stale responses to move it backwards. */
|
|
81
|
+
markReplayCursor(sessionId: string, generation: number, seq: number): boolean;
|
|
71
82
|
/** Whether daemon identity reconciliation should apply `name`. */
|
|
72
83
|
needsRename(sessionId: string, name: string): boolean;
|
|
73
84
|
/** The user-owned name that must be preserved, when one exists. */
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./session-cli";
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export type SdkSessionCliAction = "list" | "control" | "query" | "global";
|
|
2
|
+
export interface SdkSessionCliArgs {
|
|
3
|
+
action?: string;
|
|
4
|
+
sessionId?: string;
|
|
5
|
+
operation?: string;
|
|
6
|
+
query?: string;
|
|
7
|
+
jsonInput?: string;
|
|
8
|
+
jsonInputFile?: string;
|
|
9
|
+
idempotencyKey?: string;
|
|
10
|
+
jsonInputStdin?: boolean;
|
|
11
|
+
confirm?: boolean;
|
|
12
|
+
cursor?: string;
|
|
13
|
+
showEndpointCredential?: boolean;
|
|
14
|
+
yes?: boolean;
|
|
15
|
+
repo?: string;
|
|
16
|
+
agentDir?: string;
|
|
17
|
+
}
|
|
18
|
+
/** Runs the pure-SDK `gjc daemon session` command family. */
|
|
19
|
+
export declare function runSdkSessionCli(args: SdkSessionCliArgs, writeOutput?: (value: unknown) => void, setExitCode?: (exitCode: 1 | 2) => void): Promise<void>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "@gajae-code/bridge-client";
|