@alan-ai-hq/agent-manager 0.1.113 → 0.1.115
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/LICENSE +88 -0
- package/dist/__tests__/binding-switch-git.test.d.ts +2 -0
- package/dist/__tests__/binding-switch-git.test.d.ts.map +1 -0
- package/dist/__tests__/binding-switch-git.test.js +555 -0
- package/dist/__tests__/binding-switch-git.test.js.map +1 -0
- package/dist/__tests__/cli-ensure-install.test.d.ts +2 -0
- package/dist/__tests__/cli-ensure-install.test.d.ts.map +1 -0
- package/dist/__tests__/cli-ensure-install.test.js +177 -0
- package/dist/__tests__/cli-ensure-install.test.js.map +1 -0
- package/dist/__tests__/cli-executable.test.d.ts +2 -0
- package/dist/__tests__/cli-executable.test.d.ts.map +1 -0
- package/dist/__tests__/cli-executable.test.js +155 -0
- package/dist/__tests__/cli-executable.test.js.map +1 -0
- package/dist/__tests__/cli-executable.windows.test.d.ts +2 -0
- package/dist/__tests__/cli-executable.windows.test.d.ts.map +1 -0
- package/dist/__tests__/cli-executable.windows.test.js +123 -0
- package/dist/__tests__/cli-executable.windows.test.js.map +1 -0
- package/dist/__tests__/cli-help.test.d.ts +2 -0
- package/dist/__tests__/cli-help.test.d.ts.map +1 -0
- package/dist/__tests__/cli-help.test.js +47 -0
- package/dist/__tests__/cli-help.test.js.map +1 -0
- package/dist/__tests__/computer-readiness.test.d.ts +2 -0
- package/dist/__tests__/computer-readiness.test.d.ts.map +1 -0
- package/dist/__tests__/computer-readiness.test.js +63 -0
- package/dist/__tests__/computer-readiness.test.js.map +1 -0
- package/dist/__tests__/core-agent-provider-auth-env.test.d.ts +2 -0
- package/dist/__tests__/core-agent-provider-auth-env.test.d.ts.map +1 -0
- package/dist/__tests__/core-agent-provider-auth-env.test.js +93 -0
- package/dist/__tests__/core-agent-provider-auth-env.test.js.map +1 -0
- package/dist/__tests__/core-agent-workflow-context.test.d.ts +2 -0
- package/dist/__tests__/core-agent-workflow-context.test.d.ts.map +1 -0
- package/dist/__tests__/core-agent-workflow-context.test.js +139 -0
- package/dist/__tests__/core-agent-workflow-context.test.js.map +1 -0
- package/dist/__tests__/daemon-native-hooks.test.d.ts +2 -0
- package/dist/__tests__/daemon-native-hooks.test.d.ts.map +1 -0
- package/dist/__tests__/daemon-native-hooks.test.js +94 -0
- package/dist/__tests__/daemon-native-hooks.test.js.map +1 -0
- package/dist/__tests__/daemon-reconcile-ask.test.d.ts +2 -0
- package/dist/__tests__/daemon-reconcile-ask.test.d.ts.map +1 -0
- package/dist/__tests__/daemon-reconcile-ask.test.js +100 -0
- package/dist/__tests__/daemon-reconcile-ask.test.js.map +1 -0
- package/dist/__tests__/daemon-runner-status.test.d.ts +2 -0
- package/dist/__tests__/daemon-runner-status.test.d.ts.map +1 -0
- package/dist/__tests__/daemon-runner-status.test.js +102 -0
- package/dist/__tests__/daemon-runner-status.test.js.map +1 -0
- package/dist/__tests__/daemon-socket.integration.test.d.ts +2 -0
- package/dist/__tests__/daemon-socket.integration.test.d.ts.map +1 -0
- package/dist/__tests__/daemon-socket.integration.test.js +435 -0
- package/dist/__tests__/daemon-socket.integration.test.js.map +1 -0
- package/dist/__tests__/daemon.test.d.ts +2 -0
- package/dist/__tests__/daemon.test.d.ts.map +1 -0
- package/dist/__tests__/daemon.test.js +4884 -0
- package/dist/__tests__/daemon.test.js.map +1 -0
- package/dist/__tests__/ensure-shared-checkout-branch.test.d.ts +2 -0
- package/dist/__tests__/ensure-shared-checkout-branch.test.d.ts.map +1 -0
- package/dist/__tests__/ensure-shared-checkout-branch.test.js +129 -0
- package/dist/__tests__/ensure-shared-checkout-branch.test.js.map +1 -0
- package/dist/__tests__/event-journal-stress.test.d.ts +2 -0
- package/dist/__tests__/event-journal-stress.test.d.ts.map +1 -0
- package/dist/__tests__/event-journal-stress.test.js +124 -0
- package/dist/__tests__/event-journal-stress.test.js.map +1 -0
- package/dist/__tests__/event-journal.test.d.ts +2 -0
- package/dist/__tests__/event-journal.test.d.ts.map +1 -0
- package/dist/__tests__/event-journal.test.js +264 -0
- package/dist/__tests__/event-journal.test.js.map +1 -0
- package/dist/__tests__/event-outbox-persist-failure.test.d.ts +2 -0
- package/dist/__tests__/event-outbox-persist-failure.test.d.ts.map +1 -0
- package/dist/__tests__/event-outbox-persist-failure.test.js +143 -0
- package/dist/__tests__/event-outbox-persist-failure.test.js.map +1 -0
- package/dist/__tests__/event-outbox.test.d.ts +2 -0
- package/dist/__tests__/event-outbox.test.d.ts.map +1 -0
- package/dist/__tests__/event-outbox.test.js +602 -0
- package/dist/__tests__/event-outbox.test.js.map +1 -0
- package/dist/__tests__/execution-activity-tracker.test.d.ts +2 -0
- package/dist/__tests__/execution-activity-tracker.test.d.ts.map +1 -0
- package/dist/__tests__/execution-activity-tracker.test.js +64 -0
- package/dist/__tests__/execution-activity-tracker.test.js.map +1 -0
- package/dist/__tests__/execution-lease-client.test.d.ts +2 -0
- package/dist/__tests__/execution-lease-client.test.d.ts.map +1 -0
- package/dist/__tests__/execution-lease-client.test.js +274 -0
- package/dist/__tests__/execution-lease-client.test.js.map +1 -0
- package/dist/__tests__/fake-provider-cli.test.d.ts +2 -0
- package/dist/__tests__/fake-provider-cli.test.d.ts.map +1 -0
- package/dist/__tests__/fake-provider-cli.test.js +46 -0
- package/dist/__tests__/fake-provider-cli.test.js.map +1 -0
- package/dist/__tests__/generated-images.test.d.ts +2 -0
- package/dist/__tests__/generated-images.test.d.ts.map +1 -0
- package/dist/__tests__/generated-images.test.js +132 -0
- package/dist/__tests__/generated-images.test.js.map +1 -0
- package/dist/__tests__/helpers/sandbox-outbox.d.ts +3 -0
- package/dist/__tests__/helpers/sandbox-outbox.d.ts.map +1 -0
- package/dist/__tests__/helpers/sandbox-outbox.js +23 -0
- package/dist/__tests__/helpers/sandbox-outbox.js.map +1 -0
- package/dist/__tests__/install-command.test.d.ts +2 -0
- package/dist/__tests__/install-command.test.d.ts.map +1 -0
- package/dist/__tests__/install-command.test.js +185 -0
- package/dist/__tests__/install-command.test.js.map +1 -0
- package/dist/__tests__/integration-cli.test.d.ts +2 -0
- package/dist/__tests__/integration-cli.test.d.ts.map +1 -0
- package/dist/__tests__/integration-cli.test.js +150 -0
- package/dist/__tests__/integration-cli.test.js.map +1 -0
- package/dist/__tests__/lifecycle-contracts.test.d.ts +2 -0
- package/dist/__tests__/lifecycle-contracts.test.d.ts.map +1 -0
- package/dist/__tests__/lifecycle-contracts.test.js +66 -0
- package/dist/__tests__/lifecycle-contracts.test.js.map +1 -0
- package/dist/__tests__/lifecycle-logger.test.d.ts +2 -0
- package/dist/__tests__/lifecycle-logger.test.d.ts.map +1 -0
- package/dist/__tests__/lifecycle-logger.test.js +49 -0
- package/dist/__tests__/lifecycle-logger.test.js.map +1 -0
- package/dist/__tests__/local-daemon-lifecycle.test.d.ts +2 -0
- package/dist/__tests__/local-daemon-lifecycle.test.d.ts.map +1 -0
- package/dist/__tests__/local-daemon-lifecycle.test.js +594 -0
- package/dist/__tests__/local-daemon-lifecycle.test.js.map +1 -0
- package/dist/__tests__/local-git-status.test.d.ts +2 -0
- package/dist/__tests__/local-git-status.test.d.ts.map +1 -0
- package/dist/__tests__/local-git-status.test.js +31 -0
- package/dist/__tests__/local-git-status.test.js.map +1 -0
- package/dist/__tests__/mcp-config-adapters-files.test.d.ts +2 -0
- package/dist/__tests__/mcp-config-adapters-files.test.d.ts.map +1 -0
- package/dist/__tests__/mcp-config-adapters-files.test.js +486 -0
- package/dist/__tests__/mcp-config-adapters-files.test.js.map +1 -0
- package/dist/__tests__/mcp-config-adapters.test.d.ts +2 -0
- package/dist/__tests__/mcp-config-adapters.test.d.ts.map +1 -0
- package/dist/__tests__/mcp-config-adapters.test.js +492 -0
- package/dist/__tests__/mcp-config-adapters.test.js.map +1 -0
- package/dist/__tests__/mcp-sync.test.d.ts +2 -0
- package/dist/__tests__/mcp-sync.test.d.ts.map +1 -0
- package/dist/__tests__/mcp-sync.test.js +21 -0
- package/dist/__tests__/mcp-sync.test.js.map +1 -0
- package/dist/__tests__/model-scan-runner.test.d.ts +2 -0
- package/dist/__tests__/model-scan-runner.test.d.ts.map +1 -0
- package/dist/__tests__/model-scan-runner.test.js +80 -0
- package/dist/__tests__/model-scan-runner.test.js.map +1 -0
- package/dist/__tests__/native-hook-command.test.d.ts +2 -0
- package/dist/__tests__/native-hook-command.test.d.ts.map +1 -0
- package/dist/__tests__/native-hook-command.test.js +386 -0
- package/dist/__tests__/native-hook-command.test.js.map +1 -0
- package/dist/__tests__/native-hook-config.test.d.ts +2 -0
- package/dist/__tests__/native-hook-config.test.d.ts.map +1 -0
- package/dist/__tests__/native-hook-config.test.js +374 -0
- package/dist/__tests__/native-hook-config.test.js.map +1 -0
- package/dist/__tests__/native-hook-drain.test.d.ts +2 -0
- package/dist/__tests__/native-hook-drain.test.d.ts.map +1 -0
- package/dist/__tests__/native-hook-drain.test.js +197 -0
- package/dist/__tests__/native-hook-drain.test.js.map +1 -0
- package/dist/__tests__/native-hook-inbox.test.d.ts +2 -0
- package/dist/__tests__/native-hook-inbox.test.d.ts.map +1 -0
- package/dist/__tests__/native-hook-inbox.test.js +139 -0
- package/dist/__tests__/native-hook-inbox.test.js.map +1 -0
- package/dist/__tests__/native-session.test.d.ts +2 -0
- package/dist/__tests__/native-session.test.d.ts.map +1 -0
- package/dist/__tests__/native-session.test.js +41 -0
- package/dist/__tests__/native-session.test.js.map +1 -0
- package/dist/__tests__/native-stream-outbox.test.d.ts +2 -0
- package/dist/__tests__/native-stream-outbox.test.d.ts.map +1 -0
- package/dist/__tests__/native-stream-outbox.test.js +231 -0
- package/dist/__tests__/native-stream-outbox.test.js.map +1 -0
- package/dist/__tests__/native-stream-platform.test.d.ts +2 -0
- package/dist/__tests__/native-stream-platform.test.d.ts.map +1 -0
- package/dist/__tests__/native-stream-platform.test.js +20 -0
- package/dist/__tests__/native-stream-platform.test.js.map +1 -0
- package/dist/__tests__/native-transcript-cursor.test.d.ts +2 -0
- package/dist/__tests__/native-transcript-cursor.test.d.ts.map +1 -0
- package/dist/__tests__/native-transcript-cursor.test.js +60 -0
- package/dist/__tests__/native-transcript-cursor.test.js.map +1 -0
- package/dist/__tests__/native-transcript-stream.test.d.ts +2 -0
- package/dist/__tests__/native-transcript-stream.test.d.ts.map +1 -0
- package/dist/__tests__/native-transcript-stream.test.js +378 -0
- package/dist/__tests__/native-transcript-stream.test.js.map +1 -0
- package/dist/__tests__/network-diagnostics.test.d.ts +2 -0
- package/dist/__tests__/network-diagnostics.test.d.ts.map +1 -0
- package/dist/__tests__/network-diagnostics.test.js +26 -0
- package/dist/__tests__/network-diagnostics.test.js.map +1 -0
- package/dist/__tests__/observable-map.test.d.ts +2 -0
- package/dist/__tests__/observable-map.test.d.ts.map +1 -0
- package/dist/__tests__/observable-map.test.js +54 -0
- package/dist/__tests__/observable-map.test.js.map +1 -0
- package/dist/__tests__/outbox-baseline.bench.test.d.ts +2 -0
- package/dist/__tests__/outbox-baseline.bench.test.d.ts.map +1 -0
- package/dist/__tests__/outbox-baseline.bench.test.js +108 -0
- package/dist/__tests__/outbox-baseline.bench.test.js.map +1 -0
- package/dist/__tests__/provider-auth-preflight.test.d.ts +2 -0
- package/dist/__tests__/provider-auth-preflight.test.d.ts.map +1 -0
- package/dist/__tests__/provider-auth-preflight.test.js +123 -0
- package/dist/__tests__/provider-auth-preflight.test.js.map +1 -0
- package/dist/__tests__/provider-model-discovery.test.d.ts +2 -0
- package/dist/__tests__/provider-model-discovery.test.d.ts.map +1 -0
- package/dist/__tests__/provider-model-discovery.test.js +1071 -0
- package/dist/__tests__/provider-model-discovery.test.js.map +1 -0
- package/dist/__tests__/resource-diagnostics.test.d.ts +2 -0
- package/dist/__tests__/resource-diagnostics.test.d.ts.map +1 -0
- package/dist/__tests__/resource-diagnostics.test.js +138 -0
- package/dist/__tests__/resource-diagnostics.test.js.map +1 -0
- package/dist/__tests__/resume-fallback-env.test.d.ts +2 -0
- package/dist/__tests__/resume-fallback-env.test.d.ts.map +1 -0
- package/dist/__tests__/resume-fallback-env.test.js +28 -0
- package/dist/__tests__/resume-fallback-env.test.js.map +1 -0
- package/dist/__tests__/run-journal.test.d.ts +2 -0
- package/dist/__tests__/run-journal.test.d.ts.map +1 -0
- package/dist/__tests__/run-journal.test.js +121 -0
- package/dist/__tests__/run-journal.test.js.map +1 -0
- package/dist/__tests__/run-start-gate.test.d.ts +2 -0
- package/dist/__tests__/run-start-gate.test.d.ts.map +1 -0
- package/dist/__tests__/run-start-gate.test.js +18 -0
- package/dist/__tests__/run-start-gate.test.js.map +1 -0
- package/dist/__tests__/runtime-capabilities-sync.test.d.ts +2 -0
- package/dist/__tests__/runtime-capabilities-sync.test.d.ts.map +1 -0
- package/dist/__tests__/runtime-capabilities-sync.test.js +66 -0
- package/dist/__tests__/runtime-capabilities-sync.test.js.map +1 -0
- package/dist/__tests__/runtime-config.test.d.ts +2 -0
- package/dist/__tests__/runtime-config.test.d.ts.map +1 -0
- package/dist/__tests__/runtime-config.test.js +137 -0
- package/dist/__tests__/runtime-config.test.js.map +1 -0
- package/dist/__tests__/runtime-presenter-heartbeat.test.d.ts +2 -0
- package/dist/__tests__/runtime-presenter-heartbeat.test.d.ts.map +1 -0
- package/dist/__tests__/runtime-presenter-heartbeat.test.js +253 -0
- package/dist/__tests__/runtime-presenter-heartbeat.test.js.map +1 -0
- package/dist/__tests__/runtime-registration.test.d.ts +2 -0
- package/dist/__tests__/runtime-registration.test.d.ts.map +1 -0
- package/dist/__tests__/runtime-registration.test.js +109 -0
- package/dist/__tests__/runtime-registration.test.js.map +1 -0
- package/dist/__tests__/sandbox-outbox-storage.test.d.ts +2 -0
- package/dist/__tests__/sandbox-outbox-storage.test.d.ts.map +1 -0
- package/dist/__tests__/sandbox-outbox-storage.test.js +81 -0
- package/dist/__tests__/sandbox-outbox-storage.test.js.map +1 -0
- package/dist/__tests__/sandbox-outbox.test.d.ts +2 -0
- package/dist/__tests__/sandbox-outbox.test.d.ts.map +1 -0
- package/dist/__tests__/sandbox-outbox.test.js +300 -0
- package/dist/__tests__/sandbox-outbox.test.js.map +1 -0
- package/dist/__tests__/sandbox-workflow-context.test.d.ts +2 -0
- package/dist/__tests__/sandbox-workflow-context.test.d.ts.map +1 -0
- package/dist/__tests__/sandbox-workflow-context.test.js +600 -0
- package/dist/__tests__/sandbox-workflow-context.test.js.map +1 -0
- package/dist/__tests__/service-manager-deadline.test.d.ts +2 -0
- package/dist/__tests__/service-manager-deadline.test.d.ts.map +1 -0
- package/dist/__tests__/service-manager-deadline.test.js +36 -0
- package/dist/__tests__/service-manager-deadline.test.js.map +1 -0
- package/dist/__tests__/service-manager.test.d.ts +2 -0
- package/dist/__tests__/service-manager.test.d.ts.map +1 -0
- package/dist/__tests__/service-manager.test.js +769 -0
- package/dist/__tests__/service-manager.test.js.map +1 -0
- package/dist/__tests__/service-stop-ownership.test.d.ts +2 -0
- package/dist/__tests__/service-stop-ownership.test.d.ts.map +1 -0
- package/dist/__tests__/service-stop-ownership.test.js +89 -0
- package/dist/__tests__/service-stop-ownership.test.js.map +1 -0
- package/dist/__tests__/skill-invocation.test.d.ts +2 -0
- package/dist/__tests__/skill-invocation.test.d.ts.map +1 -0
- package/dist/__tests__/skill-invocation.test.js +40 -0
- package/dist/__tests__/skill-invocation.test.js.map +1 -0
- package/dist/__tests__/sleep-inhibitor-real.test.d.ts +2 -0
- package/dist/__tests__/sleep-inhibitor-real.test.d.ts.map +1 -0
- package/dist/__tests__/sleep-inhibitor-real.test.js +68 -0
- package/dist/__tests__/sleep-inhibitor-real.test.js.map +1 -0
- package/dist/__tests__/sleep-inhibitor.test.d.ts +2 -0
- package/dist/__tests__/sleep-inhibitor.test.d.ts.map +1 -0
- package/dist/__tests__/sleep-inhibitor.test.js +236 -0
- package/dist/__tests__/sleep-inhibitor.test.js.map +1 -0
- package/dist/__tests__/status-local-workspace.test.d.ts +2 -0
- package/dist/__tests__/status-local-workspace.test.d.ts.map +1 -0
- package/dist/__tests__/status-local-workspace.test.js +121 -0
- package/dist/__tests__/status-local-workspace.test.js.map +1 -0
- package/dist/__tests__/suspension-detector.test.d.ts +2 -0
- package/dist/__tests__/suspension-detector.test.d.ts.map +1 -0
- package/dist/__tests__/suspension-detector.test.js +112 -0
- package/dist/__tests__/suspension-detector.test.js.map +1 -0
- package/dist/__tests__/web-presenter-parent-events.test.d.ts +2 -0
- package/dist/__tests__/web-presenter-parent-events.test.d.ts.map +1 -0
- package/dist/__tests__/web-presenter-parent-events.test.js +168 -0
- package/dist/__tests__/web-presenter-parent-events.test.js.map +1 -0
- package/dist/__tests__/workspace-probe-concurrency.test.d.ts +2 -0
- package/dist/__tests__/workspace-probe-concurrency.test.d.ts.map +1 -0
- package/dist/__tests__/workspace-probe-concurrency.test.js +54 -0
- package/dist/__tests__/workspace-probe-concurrency.test.js.map +1 -0
- package/dist/__tests__/workspace-relocation.test.d.ts +2 -0
- package/dist/__tests__/workspace-relocation.test.d.ts.map +1 -0
- package/dist/__tests__/workspace-relocation.test.js +66 -0
- package/dist/__tests__/workspace-relocation.test.js.map +1 -0
- package/dist/__tests__/workspace-rpc.test.d.ts +2 -0
- package/dist/__tests__/workspace-rpc.test.d.ts.map +1 -0
- package/dist/__tests__/workspace-rpc.test.js +90 -0
- package/dist/__tests__/workspace-rpc.test.js.map +1 -0
- package/dist/__tests__/workspace-run-lease.test.d.ts +2 -0
- package/dist/__tests__/workspace-run-lease.test.d.ts.map +1 -0
- package/dist/__tests__/workspace-run-lease.test.js +331 -0
- package/dist/__tests__/workspace-run-lease.test.js.map +1 -0
- package/dist/__tests__/ws-client-connection.test.d.ts +2 -0
- package/dist/__tests__/ws-client-connection.test.d.ts.map +1 -0
- package/dist/__tests__/ws-client-connection.test.js +295 -0
- package/dist/__tests__/ws-client-connection.test.js.map +1 -0
- package/dist/__tests__/ws-client-heartbeat-volatile.test.d.ts +2 -0
- package/dist/__tests__/ws-client-heartbeat-volatile.test.d.ts.map +1 -0
- package/dist/__tests__/ws-client-heartbeat-volatile.test.js +63 -0
- package/dist/__tests__/ws-client-heartbeat-volatile.test.js.map +1 -0
- package/dist/__tests__/ws-client-heartbeat.integration.test.d.ts +2 -0
- package/dist/__tests__/ws-client-heartbeat.integration.test.d.ts.map +1 -0
- package/dist/__tests__/ws-client-heartbeat.integration.test.js +236 -0
- package/dist/__tests__/ws-client-heartbeat.integration.test.js.map +1 -0
- package/dist/__tests__/ws-client-user-message-ack.integration.test.d.ts +2 -0
- package/dist/__tests__/ws-client-user-message-ack.integration.test.d.ts.map +1 -0
- package/dist/__tests__/ws-client-user-message-ack.integration.test.js +211 -0
- package/dist/__tests__/ws-client-user-message-ack.integration.test.js.map +1 -0
- package/dist/antigravity-api-key-config.d.ts +2 -0
- package/dist/antigravity-api-key-config.d.ts.map +1 -0
- package/dist/antigravity-api-key-config.js +79 -0
- package/dist/antigravity-api-key-config.js.map +1 -0
- package/dist/binding-switch-git.d.ts +26 -0
- package/dist/binding-switch-git.d.ts.map +1 -0
- package/dist/binding-switch-git.js +871 -0
- package/dist/binding-switch-git.js.map +1 -0
- package/dist/cli-ensure-install.d.ts +34 -0
- package/dist/cli-ensure-install.d.ts.map +1 -0
- package/dist/cli-ensure-install.js +154 -0
- package/dist/cli-ensure-install.js.map +1 -0
- package/dist/cli-executable.d.ts +44 -0
- package/dist/cli-executable.d.ts.map +1 -0
- package/dist/cli-executable.js +435 -0
- package/dist/cli-executable.js.map +1 -0
- package/dist/cli-help.d.ts +11 -0
- package/dist/cli-help.d.ts.map +1 -0
- package/dist/cli-help.js +65 -0
- package/dist/cli-help.js.map +1 -0
- package/dist/computer-readiness.d.ts +41 -0
- package/dist/computer-readiness.d.ts.map +1 -0
- package/dist/computer-readiness.js +191 -0
- package/dist/computer-readiness.js.map +1 -0
- package/dist/core-agent.d.ts +32 -0
- package/dist/core-agent.d.ts.map +1 -0
- package/dist/core-agent.js +331 -0
- package/dist/core-agent.js.map +1 -0
- package/dist/daemon-execute.d.ts +42 -0
- package/dist/daemon-execute.d.ts.map +1 -0
- package/dist/daemon-execute.js +666 -0
- package/dist/daemon-execute.js.map +1 -0
- package/dist/daemon-helpers.d.ts +150 -0
- package/dist/daemon-helpers.d.ts.map +1 -0
- package/dist/daemon-helpers.js +157 -0
- package/dist/daemon-helpers.js.map +1 -0
- package/dist/daemon-local-control.d.ts +208 -0
- package/dist/daemon-local-control.d.ts.map +1 -0
- package/dist/daemon-local-control.js +826 -0
- package/dist/daemon-local-control.js.map +1 -0
- package/dist/daemon-local-http.d.ts +57 -0
- package/dist/daemon-local-http.d.ts.map +1 -0
- package/dist/daemon-local-http.js +375 -0
- package/dist/daemon-local-http.js.map +1 -0
- package/dist/daemon-native-hooks.d.ts +17 -0
- package/dist/daemon-native-hooks.d.ts.map +1 -0
- package/dist/daemon-native-hooks.js +54 -0
- package/dist/daemon-native-hooks.js.map +1 -0
- package/dist/daemon-provider-scan.d.ts +33 -0
- package/dist/daemon-provider-scan.d.ts.map +1 -0
- package/dist/daemon-provider-scan.js +187 -0
- package/dist/daemon-provider-scan.js.map +1 -0
- package/dist/daemon-runner-status.d.ts +164 -0
- package/dist/daemon-runner-status.d.ts.map +1 -0
- package/dist/daemon-runner-status.js +424 -0
- package/dist/daemon-runner-status.js.map +1 -0
- package/dist/daemon-start.d.ts +5 -0
- package/dist/daemon-start.d.ts.map +1 -0
- package/dist/daemon-start.js +1313 -0
- package/dist/daemon-start.js.map +1 -0
- package/dist/daemon-workspace.d.ts +36 -0
- package/dist/daemon-workspace.d.ts.map +1 -0
- package/dist/daemon-workspace.js +154 -0
- package/dist/daemon-workspace.js.map +1 -0
- package/dist/daemon.d.ts +59 -0
- package/dist/daemon.d.ts.map +1 -0
- package/dist/daemon.js +681 -0
- package/dist/daemon.js.map +1 -0
- package/dist/event-journal-crypto.d.ts +14 -0
- package/dist/event-journal-crypto.d.ts.map +1 -0
- package/dist/event-journal-crypto.js +89 -0
- package/dist/event-journal-crypto.js.map +1 -0
- package/dist/event-journal-paths.d.ts +10 -0
- package/dist/event-journal-paths.d.ts.map +1 -0
- package/dist/event-journal-paths.js +29 -0
- package/dist/event-journal-paths.js.map +1 -0
- package/dist/event-journal-recovery.d.ts +83 -0
- package/dist/event-journal-recovery.d.ts.map +1 -0
- package/dist/event-journal-recovery.js +333 -0
- package/dist/event-journal-recovery.js.map +1 -0
- package/dist/event-journal-types.d.ts +54 -0
- package/dist/event-journal-types.d.ts.map +1 -0
- package/dist/event-journal-types.js +10 -0
- package/dist/event-journal-types.js.map +1 -0
- package/dist/event-journal-writer.d.ts +44 -0
- package/dist/event-journal-writer.d.ts.map +1 -0
- package/dist/event-journal-writer.js +182 -0
- package/dist/event-journal-writer.js.map +1 -0
- package/dist/event-outbox.d.ts +113 -0
- package/dist/event-outbox.d.ts.map +1 -0
- package/dist/event-outbox.js +707 -0
- package/dist/event-outbox.js.map +1 -0
- package/dist/execution-activity-tracker.d.ts +43 -0
- package/dist/execution-activity-tracker.d.ts.map +1 -0
- package/dist/execution-activity-tracker.js +116 -0
- package/dist/execution-activity-tracker.js.map +1 -0
- package/dist/execution-lease-client.d.ts +62 -0
- package/dist/execution-lease-client.d.ts.map +1 -0
- package/dist/execution-lease-client.js +271 -0
- package/dist/execution-lease-client.js.map +1 -0
- package/dist/fake-provider-cli.d.ts +13 -0
- package/dist/fake-provider-cli.d.ts.map +1 -0
- package/dist/fake-provider-cli.js +53 -0
- package/dist/fake-provider-cli.js.map +1 -0
- package/dist/generated-images.d.ts +2 -0
- package/dist/generated-images.d.ts.map +1 -0
- package/dist/generated-images.js +2 -0
- package/dist/generated-images.js.map +1 -0
- package/dist/index.cjs +47033 -45514
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +224 -0
- package/dist/index.js.map +1 -0
- package/dist/install-command.d.ts +2 -0
- package/dist/install-command.d.ts.map +1 -0
- package/dist/install-command.js +96 -0
- package/dist/install-command.js.map +1 -0
- package/dist/integration-cli.d.ts +14 -0
- package/dist/integration-cli.d.ts.map +1 -0
- package/dist/integration-cli.js +80 -0
- package/dist/integration-cli.js.map +1 -0
- package/dist/lifecycle-logger.d.ts +25 -0
- package/dist/lifecycle-logger.d.ts.map +1 -0
- package/dist/lifecycle-logger.js +73 -0
- package/dist/lifecycle-logger.js.map +1 -0
- package/dist/local-daemon-lifecycle.d.ts +112 -0
- package/dist/local-daemon-lifecycle.d.ts.map +1 -0
- package/dist/local-daemon-lifecycle.js +433 -0
- package/dist/local-daemon-lifecycle.js.map +1 -0
- package/dist/local-git-status.d.ts +14 -0
- package/dist/local-git-status.d.ts.map +1 -0
- package/dist/local-git-status.js +43 -0
- package/dist/local-git-status.js.map +1 -0
- package/dist/managed-mcp.d.ts +7 -0
- package/dist/managed-mcp.d.ts.map +1 -0
- package/dist/managed-mcp.js +16 -0
- package/dist/managed-mcp.js.map +1 -0
- package/dist/mcp-config-adapters.d.ts +57 -0
- package/dist/mcp-config-adapters.d.ts.map +1 -0
- package/dist/mcp-config-adapters.js +929 -0
- package/dist/mcp-config-adapters.js.map +1 -0
- package/dist/mcp-sync.d.ts +44 -0
- package/dist/mcp-sync.d.ts.map +1 -0
- package/dist/mcp-sync.js +68 -0
- package/dist/mcp-sync.js.map +1 -0
- package/dist/model-scan-runner.d.ts +15 -0
- package/dist/model-scan-runner.d.ts.map +1 -0
- package/dist/model-scan-runner.js +56 -0
- package/dist/model-scan-runner.js.map +1 -0
- package/dist/native-hook-command.d.ts +31 -0
- package/dist/native-hook-command.d.ts.map +1 -0
- package/dist/native-hook-command.js +289 -0
- package/dist/native-hook-command.js.map +1 -0
- package/dist/native-hook-config.d.ts +43 -0
- package/dist/native-hook-config.d.ts.map +1 -0
- package/dist/native-hook-config.js +601 -0
- package/dist/native-hook-config.js.map +1 -0
- package/dist/native-hook-drain.d.ts +34 -0
- package/dist/native-hook-drain.d.ts.map +1 -0
- package/dist/native-hook-drain.js +83 -0
- package/dist/native-hook-drain.js.map +1 -0
- package/dist/native-hook-inbox.d.ts +40 -0
- package/dist/native-hook-inbox.d.ts.map +1 -0
- package/dist/native-hook-inbox.js +217 -0
- package/dist/native-hook-inbox.js.map +1 -0
- package/dist/native-project-config.d.ts +11 -0
- package/dist/native-project-config.d.ts.map +1 -0
- package/dist/native-project-config.js +49 -0
- package/dist/native-project-config.js.map +1 -0
- package/dist/native-session.d.ts +20 -0
- package/dist/native-session.d.ts.map +1 -0
- package/dist/native-session.js +213 -0
- package/dist/native-session.js.map +1 -0
- package/dist/native-stream-journal.d.ts +22 -0
- package/dist/native-stream-journal.d.ts.map +1 -0
- package/dist/native-stream-journal.js +98 -0
- package/dist/native-stream-journal.js.map +1 -0
- package/dist/native-stream-outbox.d.ts +40 -0
- package/dist/native-stream-outbox.d.ts.map +1 -0
- package/dist/native-stream-outbox.js +358 -0
- package/dist/native-stream-outbox.js.map +1 -0
- package/dist/native-stream-platform.d.ts +4 -0
- package/dist/native-stream-platform.d.ts.map +1 -0
- package/dist/native-stream-platform.js +11 -0
- package/dist/native-stream-platform.js.map +1 -0
- package/dist/native-transcript-cursor.d.ts +33 -0
- package/dist/native-transcript-cursor.d.ts.map +1 -0
- package/dist/native-transcript-cursor.js +108 -0
- package/dist/native-transcript-cursor.js.map +1 -0
- package/dist/native-transcript-stream.d.ts +20 -0
- package/dist/native-transcript-stream.d.ts.map +1 -0
- package/dist/native-transcript-stream.js +438 -0
- package/dist/native-transcript-stream.js.map +1 -0
- package/dist/network-diagnostics.d.ts +8 -0
- package/dist/network-diagnostics.d.ts.map +1 -0
- package/dist/network-diagnostics.js +56 -0
- package/dist/network-diagnostics.js.map +1 -0
- package/dist/observable-map.d.ts +13 -0
- package/dist/observable-map.d.ts.map +1 -0
- package/dist/observable-map.js +30 -0
- package/dist/observable-map.js.map +1 -0
- package/dist/provider-auth-preflight.d.ts +19 -0
- package/dist/provider-auth-preflight.d.ts.map +1 -0
- package/dist/provider-auth-preflight.js +107 -0
- package/dist/provider-auth-preflight.js.map +1 -0
- package/dist/provider-model-discovery.d.ts +33 -0
- package/dist/provider-model-discovery.d.ts.map +1 -0
- package/dist/provider-model-discovery.js +731 -0
- package/dist/provider-model-discovery.js.map +1 -0
- package/dist/resource-diagnostics.d.ts +21 -0
- package/dist/resource-diagnostics.d.ts.map +1 -0
- package/dist/resource-diagnostics.js +161 -0
- package/dist/resource-diagnostics.js.map +1 -0
- package/dist/resume-fallback-env.d.ts +3 -0
- package/dist/resume-fallback-env.d.ts.map +1 -0
- package/dist/resume-fallback-env.js +14 -0
- package/dist/resume-fallback-env.js.map +1 -0
- package/dist/run-journal.d.ts +51 -0
- package/dist/run-journal.d.ts.map +1 -0
- package/dist/run-journal.js +193 -0
- package/dist/run-journal.js.map +1 -0
- package/dist/runtime-backends.d.ts +2 -0
- package/dist/runtime-backends.d.ts.map +1 -0
- package/dist/runtime-backends.js +2 -0
- package/dist/runtime-backends.js.map +1 -0
- package/dist/runtime-capabilities-sync.d.ts +40 -0
- package/dist/runtime-capabilities-sync.d.ts.map +1 -0
- package/dist/runtime-capabilities-sync.js +56 -0
- package/dist/runtime-capabilities-sync.js.map +1 -0
- package/dist/runtime-config.d.ts +26 -0
- package/dist/runtime-config.d.ts.map +1 -0
- package/dist/runtime-config.js +170 -0
- package/dist/runtime-config.js.map +1 -0
- package/dist/runtime-presenter.d.ts +81 -0
- package/dist/runtime-presenter.d.ts.map +1 -0
- package/dist/runtime-presenter.js +422 -0
- package/dist/runtime-presenter.js.map +1 -0
- package/dist/runtime-registration.d.ts +40 -0
- package/dist/runtime-registration.d.ts.map +1 -0
- package/dist/runtime-registration.js +143 -0
- package/dist/runtime-registration.js.map +1 -0
- package/dist/sandbox-outbox-storage.d.ts +13 -0
- package/dist/sandbox-outbox-storage.d.ts.map +1 -0
- package/dist/sandbox-outbox-storage.js +98 -0
- package/dist/sandbox-outbox-storage.js.map +1 -0
- package/dist/sandbox-outbox.d.ts +115 -0
- package/dist/sandbox-outbox.d.ts.map +1 -0
- package/dist/sandbox-outbox.js +213 -0
- package/dist/sandbox-outbox.js.map +1 -0
- package/dist/sandbox.d.ts +34 -0
- package/dist/sandbox.d.ts.map +1 -0
- package/dist/sandbox.js +469 -0
- package/dist/sandbox.js.map +1 -0
- package/dist/service-manager.d.ts +113 -0
- package/dist/service-manager.d.ts.map +1 -0
- package/dist/service-manager.js +1065 -0
- package/dist/service-manager.js.map +1 -0
- package/dist/skills/__tests__/local-skill-source.test.d.ts +2 -0
- package/dist/skills/__tests__/local-skill-source.test.d.ts.map +1 -0
- package/dist/skills/__tests__/local-skill-source.test.js +373 -0
- package/dist/skills/__tests__/local-skill-source.test.js.map +1 -0
- package/dist/skills/__tests__/managed-skill-store.test.d.ts +2 -0
- package/dist/skills/__tests__/managed-skill-store.test.d.ts.map +1 -0
- package/dist/skills/__tests__/managed-skill-store.test.js +114 -0
- package/dist/skills/__tests__/managed-skill-store.test.js.map +1 -0
- package/dist/skills/__tests__/runtime-skill-coordinator.test.d.ts +2 -0
- package/dist/skills/__tests__/runtime-skill-coordinator.test.d.ts.map +1 -0
- package/dist/skills/__tests__/runtime-skill-coordinator.test.js +251 -0
- package/dist/skills/__tests__/runtime-skill-coordinator.test.js.map +1 -0
- package/dist/skills/__tests__/runtime-skill-manager.test.d.ts +2 -0
- package/dist/skills/__tests__/runtime-skill-manager.test.d.ts.map +1 -0
- package/dist/skills/__tests__/runtime-skill-manager.test.js +664 -0
- package/dist/skills/__tests__/runtime-skill-manager.test.js.map +1 -0
- package/dist/skills/__tests__/skill-bundle.test.d.ts +2 -0
- package/dist/skills/__tests__/skill-bundle.test.d.ts.map +1 -0
- package/dist/skills/__tests__/skill-bundle.test.js +42 -0
- package/dist/skills/__tests__/skill-bundle.test.js.map +1 -0
- package/dist/skills/__tests__/skill-control-client.test.d.ts +2 -0
- package/dist/skills/__tests__/skill-control-client.test.d.ts.map +1 -0
- package/dist/skills/__tests__/skill-control-client.test.js +49 -0
- package/dist/skills/__tests__/skill-control-client.test.js.map +1 -0
- package/dist/skills/__tests__/skill-source-config.test.d.ts +2 -0
- package/dist/skills/__tests__/skill-source-config.test.d.ts.map +1 -0
- package/dist/skills/__tests__/skill-source-config.test.js +295 -0
- package/dist/skills/__tests__/skill-source-config.test.js.map +1 -0
- package/dist/skills/local-skill-source.d.ts +77 -0
- package/dist/skills/local-skill-source.d.ts.map +1 -0
- package/dist/skills/local-skill-source.js +660 -0
- package/dist/skills/local-skill-source.js.map +1 -0
- package/dist/skills/managed-skill-store.d.ts +44 -0
- package/dist/skills/managed-skill-store.d.ts.map +1 -0
- package/dist/skills/managed-skill-store.js +160 -0
- package/dist/skills/managed-skill-store.js.map +1 -0
- package/dist/skills/runtime-skill-coordinator.d.ts +35 -0
- package/dist/skills/runtime-skill-coordinator.d.ts.map +1 -0
- package/dist/skills/runtime-skill-coordinator.js +166 -0
- package/dist/skills/runtime-skill-coordinator.js.map +1 -0
- package/dist/skills/runtime-skill-manager.d.ts +89 -0
- package/dist/skills/runtime-skill-manager.d.ts.map +1 -0
- package/dist/skills/runtime-skill-manager.js +934 -0
- package/dist/skills/runtime-skill-manager.js.map +1 -0
- package/dist/skills/skill-bundle.d.ts +2 -0
- package/dist/skills/skill-bundle.d.ts.map +1 -0
- package/dist/skills/skill-bundle.js +2 -0
- package/dist/skills/skill-bundle.js.map +1 -0
- package/dist/skills/skill-cli.d.ts +2 -0
- package/dist/skills/skill-cli.d.ts.map +1 -0
- package/dist/skills/skill-cli.js +81 -0
- package/dist/skills/skill-cli.js.map +1 -0
- package/dist/skills/skill-control-client.d.ts +20 -0
- package/dist/skills/skill-control-client.d.ts.map +1 -0
- package/dist/skills/skill-control-client.js +56 -0
- package/dist/skills/skill-control-client.js.map +1 -0
- package/dist/skills/skill-invocation.d.ts +10 -0
- package/dist/skills/skill-invocation.d.ts.map +1 -0
- package/dist/skills/skill-invocation.js +24 -0
- package/dist/skills/skill-invocation.js.map +1 -0
- package/dist/sleep-inhibitor.d.ts +32 -0
- package/dist/sleep-inhibitor.d.ts.map +1 -0
- package/dist/sleep-inhibitor.js +297 -0
- package/dist/sleep-inhibitor.js.map +1 -0
- package/dist/suspension-detector.d.ts +24 -0
- package/dist/suspension-detector.d.ts.map +1 -0
- package/dist/suspension-detector.js +59 -0
- package/dist/suspension-detector.js.map +1 -0
- package/dist/types.d.ts +2 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/version.d.ts +2 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +2 -0
- package/dist/version.js.map +1 -0
- package/dist/web-presenter.d.ts +52 -0
- package/dist/web-presenter.d.ts.map +1 -0
- package/dist/web-presenter.js +264 -0
- package/dist/web-presenter.js.map +1 -0
- package/dist/workspace-relocation.d.ts +22 -0
- package/dist/workspace-relocation.d.ts.map +1 -0
- package/dist/workspace-relocation.js +90 -0
- package/dist/workspace-relocation.js.map +1 -0
- package/dist/workspace-rpc.d.ts +2 -0
- package/dist/workspace-rpc.d.ts.map +1 -0
- package/dist/workspace-rpc.js +15 -0
- package/dist/workspace-rpc.js.map +1 -0
- package/dist/workspace-run-lease.d.ts +116 -0
- package/dist/workspace-run-lease.d.ts.map +1 -0
- package/dist/workspace-run-lease.js +320 -0
- package/dist/workspace-run-lease.js.map +1 -0
- package/dist/ws-client.d.ts +168 -0
- package/dist/ws-client.d.ts.map +1 -0
- package/dist/ws-client.js +440 -0
- package/dist/ws-client.js.map +1 -0
- package/package.json +4 -3
|
@@ -0,0 +1,297 @@
|
|
|
1
|
+
// Block system sleep while the daemon runs; best-effort, self-healing, never outlive this process.
|
|
2
|
+
// macOS `-s` is AC-only (man caffeinate); battery+lid sleep needs wake-recovery, not userspace asserts.
|
|
3
|
+
import { spawn } from "node:child_process";
|
|
4
|
+
export const SLEEP_PREVENTION_DISABLED_ENV = "ALAN_DISABLE_SLEEP_PREVENTION";
|
|
5
|
+
const HEALTH_CHECK_INTERVAL_MS = 30_000;
|
|
6
|
+
const noopLog = () => { };
|
|
7
|
+
export function isSleepPreventionDisabled(env = process.env) {
|
|
8
|
+
const raw = env[SLEEP_PREVENTION_DISABLED_ENV];
|
|
9
|
+
if (raw === undefined)
|
|
10
|
+
return false;
|
|
11
|
+
const normalized = raw.trim().toLowerCase();
|
|
12
|
+
return normalized === "1" || normalized === "true" || normalized === "yes";
|
|
13
|
+
}
|
|
14
|
+
class ChildProcessBackend {
|
|
15
|
+
child = null;
|
|
16
|
+
// ENOENT: stop respawn storms when the binary is absent.
|
|
17
|
+
unavailable = false;
|
|
18
|
+
log;
|
|
19
|
+
constructor(log) {
|
|
20
|
+
this.log = log;
|
|
21
|
+
}
|
|
22
|
+
onUnexpectedTermination() { }
|
|
23
|
+
isHealthy() {
|
|
24
|
+
if (this.unavailable)
|
|
25
|
+
return true; // nothing to heal; already degraded and logged
|
|
26
|
+
const child = this.child;
|
|
27
|
+
return child !== null && child.exitCode === null && child.signalCode === null;
|
|
28
|
+
}
|
|
29
|
+
acquire() {
|
|
30
|
+
if (this.unavailable)
|
|
31
|
+
return;
|
|
32
|
+
if (this.isHealthy() && this.child !== null)
|
|
33
|
+
return;
|
|
34
|
+
this.child = null;
|
|
35
|
+
const command = this.command();
|
|
36
|
+
if (command === null) {
|
|
37
|
+
this.unavailable = true;
|
|
38
|
+
this.log(`sleep-inhibitor ${this.name} unavailable: no supported command`);
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
let child;
|
|
42
|
+
try {
|
|
43
|
+
child = spawn(command.file, command.args, { stdio: "ignore", detached: false });
|
|
44
|
+
}
|
|
45
|
+
catch (error) {
|
|
46
|
+
this.unavailable = true;
|
|
47
|
+
this.log(`sleep-inhibitor ${this.name} spawn threw: ${describeError(error)}`);
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
child.on("error", (error) => {
|
|
51
|
+
const wasActiveChild = this.child === child;
|
|
52
|
+
if (wasActiveChild)
|
|
53
|
+
this.child = null;
|
|
54
|
+
if (error.code === "ENOENT")
|
|
55
|
+
this.unavailable = true;
|
|
56
|
+
this.log(`sleep-inhibitor ${this.name} failed: ${describeError(error)}`);
|
|
57
|
+
if (wasActiveChild)
|
|
58
|
+
this.onUnexpectedTermination();
|
|
59
|
+
});
|
|
60
|
+
child.on("exit", (code, signal) => {
|
|
61
|
+
const wasActiveChild = this.child === child;
|
|
62
|
+
if (wasActiveChild)
|
|
63
|
+
this.child = null;
|
|
64
|
+
this.log(`sleep-inhibitor ${this.name} exited code=${code} signal=${signal}`);
|
|
65
|
+
if (wasActiveChild)
|
|
66
|
+
this.onUnexpectedTermination();
|
|
67
|
+
});
|
|
68
|
+
this.child = child;
|
|
69
|
+
this.log(`sleep-inhibitor ${this.name} acquired pid=${child.pid}`);
|
|
70
|
+
}
|
|
71
|
+
release() {
|
|
72
|
+
const child = this.child;
|
|
73
|
+
if (child === null)
|
|
74
|
+
return;
|
|
75
|
+
this.child = null;
|
|
76
|
+
try {
|
|
77
|
+
child.kill("SIGTERM");
|
|
78
|
+
}
|
|
79
|
+
catch (error) {
|
|
80
|
+
this.log(`sleep-inhibitor ${this.name} release failed: ${describeError(error)}`);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
// `-w <pid>` drops the assert on process exit, including SIGKILL.
|
|
85
|
+
class MacCaffeinateBackend extends ChildProcessBackend {
|
|
86
|
+
name = "caffeinate";
|
|
87
|
+
command() {
|
|
88
|
+
return { file: "/usr/bin/caffeinate", args: ["-i", "-s", "-w", String(process.pid)] };
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
class LinuxIdleInhibitBackend extends ChildProcessBackend {
|
|
92
|
+
name = "systemd-inhibit";
|
|
93
|
+
candidateIndex = 0;
|
|
94
|
+
candidateCount = 2;
|
|
95
|
+
command() {
|
|
96
|
+
const guard = `while kill -0 ${process.pid} 2>/dev/null; do sleep 5; done`;
|
|
97
|
+
const candidates = [
|
|
98
|
+
{
|
|
99
|
+
file: "systemd-inhibit",
|
|
100
|
+
args: [
|
|
101
|
+
"--what=idle:sleep",
|
|
102
|
+
"--mode=block",
|
|
103
|
+
"--who=alan-agent",
|
|
104
|
+
"--why=Alan is running an active agent run",
|
|
105
|
+
"--",
|
|
106
|
+
"sh",
|
|
107
|
+
"-c",
|
|
108
|
+
guard,
|
|
109
|
+
],
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
file: "gnome-session-inhibit",
|
|
113
|
+
args: [
|
|
114
|
+
"--inhibit",
|
|
115
|
+
"idle",
|
|
116
|
+
"--reason",
|
|
117
|
+
"Alan is running an active agent run",
|
|
118
|
+
"sh",
|
|
119
|
+
"-c",
|
|
120
|
+
guard,
|
|
121
|
+
],
|
|
122
|
+
},
|
|
123
|
+
];
|
|
124
|
+
return candidates[this.candidateIndex] ?? null;
|
|
125
|
+
}
|
|
126
|
+
acquire() {
|
|
127
|
+
// Advance past a candidate that proved missing, then retry the next one.
|
|
128
|
+
const before = this.candidateIndex;
|
|
129
|
+
super.acquire();
|
|
130
|
+
if (this.unavailable && this.candidateIndex === before) {
|
|
131
|
+
this.tryNextCandidate();
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
onUnexpectedTermination() {
|
|
135
|
+
// `systemd-inhibit` can exist but still exit immediately when logind's
|
|
136
|
+
// system D-Bus is unavailable (containers, remote sessions, or partial
|
|
137
|
+
// desktop environments). Treat that the same as a missing binary and try
|
|
138
|
+
// the session-level GNOME inhibitor immediately.
|
|
139
|
+
this.tryNextCandidate();
|
|
140
|
+
}
|
|
141
|
+
tryNextCandidate() {
|
|
142
|
+
this.candidateIndex += 1;
|
|
143
|
+
if (this.candidateIndex >= this.candidateCount)
|
|
144
|
+
return;
|
|
145
|
+
this.unavailable = false;
|
|
146
|
+
super.acquire();
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Windows: a hidden PowerShell helper calling `SetThreadExecutionState`.
|
|
151
|
+
*
|
|
152
|
+
* `ES_CONTINUOUS | ES_SYSTEM_REQUIRED` (0x80000001) is the same request the
|
|
153
|
+
* daemon's own process would make if Node could call the Win32 API directly;
|
|
154
|
+
* P/Invoke via `Add-Type` is the subprocess-reachable equivalent, matching the
|
|
155
|
+
* macOS/Linux backends above. The state is scoped to the calling thread, so
|
|
156
|
+
* Windows clears it the instant this helper process exits — no separate
|
|
157
|
+
* release step is needed on top of killing the child, mirroring the `-w`/
|
|
158
|
+
* `kill -0` orphan guards on the other platforms.
|
|
159
|
+
*
|
|
160
|
+
* This only runs when nothing else already holds a Windows sleep assertion
|
|
161
|
+
* for this daemon (see `createPlatformBackends`) — the desktop app's Electron
|
|
162
|
+
* `powerSaveBlocker` covers the common case, and duplicating it would just
|
|
163
|
+
* spawn a redundant `powershell.exe` per run for no additional protection.
|
|
164
|
+
*/
|
|
165
|
+
class WindowsPowerRequestBackend extends ChildProcessBackend {
|
|
166
|
+
name = "windows-power-request";
|
|
167
|
+
command() {
|
|
168
|
+
const guard = `while (Get-Process -Id ${process.pid} -ErrorAction SilentlyContinue) ` +
|
|
169
|
+
"{ Start-Sleep -Seconds 5 }";
|
|
170
|
+
const script = [
|
|
171
|
+
"Add-Type -Namespace Alan -Name Power -MemberDefinition " +
|
|
172
|
+
"'[DllImport(\"kernel32.dll\")] public static extern uint SetThreadExecutionState(uint esFlags);';",
|
|
173
|
+
"[Alan.Power]::SetThreadExecutionState(0x80000001) | Out-Null;",
|
|
174
|
+
guard,
|
|
175
|
+
].join(" ");
|
|
176
|
+
return {
|
|
177
|
+
file: "powershell.exe",
|
|
178
|
+
args: ["-NoProfile", "-NonInteractive", "-WindowStyle", "Hidden", "-Command", script],
|
|
179
|
+
};
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
const externalBackends = new Set();
|
|
183
|
+
export function registerSleepInhibitorBackend(backend) {
|
|
184
|
+
externalBackends.add(backend);
|
|
185
|
+
return () => {
|
|
186
|
+
externalBackends.delete(backend);
|
|
187
|
+
};
|
|
188
|
+
}
|
|
189
|
+
function createPlatformBackends(log, hasExternalBackend) {
|
|
190
|
+
switch (process.platform) {
|
|
191
|
+
case "darwin":
|
|
192
|
+
return [new MacCaffeinateBackend(log)];
|
|
193
|
+
case "linux":
|
|
194
|
+
return [new LinuxIdleInhibitBackend(log)];
|
|
195
|
+
case "win32":
|
|
196
|
+
// Headless daemon only: desktop registers powerSaveBlocker externally.
|
|
197
|
+
return hasExternalBackend ? [] : [new WindowsPowerRequestBackend(log)];
|
|
198
|
+
default:
|
|
199
|
+
return [];
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
export class SleepInhibitor {
|
|
203
|
+
backends;
|
|
204
|
+
log;
|
|
205
|
+
enabled;
|
|
206
|
+
active = false;
|
|
207
|
+
healthTimer = null;
|
|
208
|
+
exitHandler = null;
|
|
209
|
+
disposed = false;
|
|
210
|
+
constructor(options = {}) {
|
|
211
|
+
this.log = options.log ?? noopLog;
|
|
212
|
+
this.enabled = !isSleepPreventionDisabled(options.env ?? process.env);
|
|
213
|
+
this.backends = this.enabled
|
|
214
|
+
? [...createPlatformBackends(this.log, externalBackends.size > 0), ...externalBackends]
|
|
215
|
+
: [];
|
|
216
|
+
if (!this.enabled) {
|
|
217
|
+
this.log(`sleep-inhibitor disabled via ${SLEEP_PREVENTION_DISABLED_ENV}`);
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
isActive() {
|
|
221
|
+
return this.active;
|
|
222
|
+
}
|
|
223
|
+
backendNames() {
|
|
224
|
+
return this.backends.map((backend) => backend.name);
|
|
225
|
+
}
|
|
226
|
+
setActive(active) {
|
|
227
|
+
if (this.disposed)
|
|
228
|
+
return;
|
|
229
|
+
if (this.active === active) {
|
|
230
|
+
if (active)
|
|
231
|
+
this.healBackends();
|
|
232
|
+
return;
|
|
233
|
+
}
|
|
234
|
+
this.active = active;
|
|
235
|
+
if (active)
|
|
236
|
+
this.start();
|
|
237
|
+
else
|
|
238
|
+
this.stop();
|
|
239
|
+
}
|
|
240
|
+
dispose() {
|
|
241
|
+
if (this.disposed)
|
|
242
|
+
return;
|
|
243
|
+
this.disposed = true;
|
|
244
|
+
this.active = false;
|
|
245
|
+
this.stop();
|
|
246
|
+
}
|
|
247
|
+
start() {
|
|
248
|
+
if (this.backends.length === 0)
|
|
249
|
+
return;
|
|
250
|
+
this.healBackends();
|
|
251
|
+
if (this.healthTimer === null) {
|
|
252
|
+
this.healthTimer = setInterval(() => this.healBackends(), HEALTH_CHECK_INTERVAL_MS);
|
|
253
|
+
this.healthTimer.unref?.();
|
|
254
|
+
}
|
|
255
|
+
if (this.exitHandler === null) {
|
|
256
|
+
this.exitHandler = () => {
|
|
257
|
+
for (const backend of this.backends)
|
|
258
|
+
backend.release();
|
|
259
|
+
};
|
|
260
|
+
process.on("exit", this.exitHandler);
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
stop() {
|
|
264
|
+
if (this.healthTimer !== null) {
|
|
265
|
+
clearInterval(this.healthTimer);
|
|
266
|
+
this.healthTimer = null;
|
|
267
|
+
}
|
|
268
|
+
if (this.exitHandler !== null) {
|
|
269
|
+
process.removeListener("exit", this.exitHandler);
|
|
270
|
+
this.exitHandler = null;
|
|
271
|
+
}
|
|
272
|
+
for (const backend of this.backends) {
|
|
273
|
+
try {
|
|
274
|
+
backend.release();
|
|
275
|
+
}
|
|
276
|
+
catch (error) {
|
|
277
|
+
this.log(`sleep-inhibitor release error: ${describeError(error)}`);
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
healBackends() {
|
|
282
|
+
for (const backend of this.backends) {
|
|
283
|
+
try {
|
|
284
|
+
if (backend.isHealthy())
|
|
285
|
+
continue;
|
|
286
|
+
backend.acquire();
|
|
287
|
+
}
|
|
288
|
+
catch (error) {
|
|
289
|
+
this.log(`sleep-inhibitor ${backend.name} acquire error: ${describeError(error)}`);
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
function describeError(error) {
|
|
295
|
+
return error instanceof Error ? error.message : String(error);
|
|
296
|
+
}
|
|
297
|
+
//# sourceMappingURL=sleep-inhibitor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sleep-inhibitor.js","sourceRoot":"","sources":["../src/sleep-inhibitor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export interface SuspensionDetectorOptions {
|
|
2
|
+
onSuspensionDetected: (gapMs: number) => void;
|
|
3
|
+
checkIntervalMs?: number;
|
|
4
|
+
thresholdMs?: number;
|
|
5
|
+
now?: () => number;
|
|
6
|
+
setIntervalFn?: typeof setInterval;
|
|
7
|
+
clearIntervalFn?: typeof clearInterval;
|
|
8
|
+
}
|
|
9
|
+
export declare class SuspensionDetector {
|
|
10
|
+
private readonly onSuspensionDetected;
|
|
11
|
+
private readonly checkIntervalMs;
|
|
12
|
+
private readonly thresholdMs;
|
|
13
|
+
private readonly now;
|
|
14
|
+
private readonly setIntervalFn;
|
|
15
|
+
private readonly clearIntervalFn;
|
|
16
|
+
private timer;
|
|
17
|
+
private lastTickAtMs;
|
|
18
|
+
constructor(options: SuspensionDetectorOptions);
|
|
19
|
+
start(): void;
|
|
20
|
+
stop(): void;
|
|
21
|
+
isRunning(): boolean;
|
|
22
|
+
private tick;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=suspension-detector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"suspension-detector.d.ts","sourceRoot":"","sources":["../src/suspension-detector.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,yBAAyB;IACxC,oBAAoB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9C,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,OAAO,WAAW,CAAC;IACnC,eAAe,CAAC,EAAE,OAAO,aAAa,CAAC;CACxC;AAED,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAA0B;IAC/D,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAS;IACzC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAe;IACnC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAqB;IACnD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAuB;IACvD,OAAO,CAAC,KAAK,CAA+C;IAC5D,OAAO,CAAC,YAAY,CAAuB;gBAE/B,OAAO,EAAE,yBAAyB;IAS9C,KAAK,IAAI,IAAI;IAQb,IAAI,IAAI,IAAI;IAOZ,SAAS,IAAI,OAAO;IAIpB,OAAO,CAAC,IAAI;CAiBb"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
// Missed timer ticks imply host suspension; report after reconnect so watchdog grants grace.
|
|
2
|
+
const DEFAULT_CHECK_INTERVAL_MS = 15_000;
|
|
3
|
+
// 60s overshoot ignores timer coalescing; shorter gaps are inside the watchdog window anyway.
|
|
4
|
+
const DEFAULT_THRESHOLD_MS = 60_000;
|
|
5
|
+
export class SuspensionDetector {
|
|
6
|
+
onSuspensionDetected;
|
|
7
|
+
checkIntervalMs;
|
|
8
|
+
thresholdMs;
|
|
9
|
+
now;
|
|
10
|
+
setIntervalFn;
|
|
11
|
+
clearIntervalFn;
|
|
12
|
+
timer = null;
|
|
13
|
+
lastTickAtMs = null;
|
|
14
|
+
constructor(options) {
|
|
15
|
+
this.onSuspensionDetected = options.onSuspensionDetected;
|
|
16
|
+
this.checkIntervalMs = options.checkIntervalMs ?? DEFAULT_CHECK_INTERVAL_MS;
|
|
17
|
+
this.thresholdMs = options.thresholdMs ?? DEFAULT_THRESHOLD_MS;
|
|
18
|
+
this.now = options.now ?? Date.now;
|
|
19
|
+
this.setIntervalFn = options.setIntervalFn ?? setInterval;
|
|
20
|
+
this.clearIntervalFn = options.clearIntervalFn ?? clearInterval;
|
|
21
|
+
}
|
|
22
|
+
start() {
|
|
23
|
+
if (this.timer !== null)
|
|
24
|
+
return;
|
|
25
|
+
this.lastTickAtMs = this.now();
|
|
26
|
+
this.timer = this.setIntervalFn(() => this.tick(), this.checkIntervalMs);
|
|
27
|
+
// Detection must never be the reason the process stays alive.
|
|
28
|
+
this.timer.unref?.();
|
|
29
|
+
}
|
|
30
|
+
stop() {
|
|
31
|
+
if (this.timer === null)
|
|
32
|
+
return;
|
|
33
|
+
this.clearIntervalFn(this.timer);
|
|
34
|
+
this.timer = null;
|
|
35
|
+
this.lastTickAtMs = null;
|
|
36
|
+
}
|
|
37
|
+
isRunning() {
|
|
38
|
+
return this.timer !== null;
|
|
39
|
+
}
|
|
40
|
+
tick() {
|
|
41
|
+
const nowMs = this.now();
|
|
42
|
+
const previousMs = this.lastTickAtMs;
|
|
43
|
+
this.lastTickAtMs = nowMs;
|
|
44
|
+
if (previousMs === null)
|
|
45
|
+
return;
|
|
46
|
+
// Overshoot beyond the scheduled cadence, i.e. time the process was not running.
|
|
47
|
+
const overshootMs = nowMs - previousMs - this.checkIntervalMs;
|
|
48
|
+
if (overshootMs < this.thresholdMs)
|
|
49
|
+
return;
|
|
50
|
+
try {
|
|
51
|
+
this.onSuspensionDetected(overshootMs);
|
|
52
|
+
}
|
|
53
|
+
catch {
|
|
54
|
+
// A reporting failure must never break the detection loop; the next
|
|
55
|
+
// suspension still gets reported.
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=suspension-detector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"suspension-detector.js","sourceRoot":"","sources":["../src/suspension-detector.ts"],"names":[],"mappings":"AAAA,6FAA6F;AAC7F,MAAM,yBAAyB,GAAG,MAAM,CAAC;AAEzC,8FAA8F;AAC9F,MAAM,oBAAoB,GAAG,MAAM,CAAC;AAWpC,MAAM,OAAO,kBAAkB;IACZ,oBAAoB,CAA0B;IAC9C,eAAe,CAAS;IACxB,WAAW,CAAS;IACpB,GAAG,CAAe;IAClB,aAAa,CAAqB;IAClC,eAAe,CAAuB;IAC/C,KAAK,GAA0C,IAAI,CAAC;IACpD,YAAY,GAAkB,IAAI,CAAC;IAE3C,YAAY,OAAkC;QAC5C,IAAI,CAAC,oBAAoB,GAAG,OAAO,CAAC,oBAAoB,CAAC;QACzD,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,eAAe,IAAI,yBAAyB,CAAC;QAC5E,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,oBAAoB,CAAC;QAC/D,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC;QACnC,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,WAAW,CAAC;QAC1D,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,eAAe,IAAI,aAAa,CAAC;IAClE,CAAC;IAED,KAAK;QACH,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI;YAAE,OAAO;QAChC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC/B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;QACzE,8DAA8D;QAC7D,IAAI,CAAC,KAAgC,CAAC,KAAK,EAAE,EAAE,CAAC;IACnD,CAAC;IAED,IAAI;QACF,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI;YAAE,OAAO;QAChC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACjC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;IAC3B,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC;IAC7B,CAAC;IAEO,IAAI;QACV,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACzB,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC;QACrC,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAC1B,IAAI,UAAU,KAAK,IAAI;YAAE,OAAO;QAEhC,iFAAiF;QACjF,MAAM,WAAW,GAAG,KAAK,GAAG,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC;QAC9D,IAAI,WAAW,GAAG,IAAI,CAAC,WAAW;YAAE,OAAO;QAE3C,IAAI,CAAC;YACH,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,CAAC;QACzC,CAAC;QAAC,MAAM,CAAC;YACP,oEAAoE;YACpE,kCAAkC;QACpC,CAAC;IACH,CAAC;CACF"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,aAAa,QAA6C,CAAC"}
|
package/dist/version.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,SAAS,CAAC"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import type { AgentActivityEvidence, AgentConfig, AgentPresenter, AgentResult, ExitPlanModeInput, GeneratedImagePayload, SessionMediaPayload, UsageUpdate } from "./types.js";
|
|
2
|
+
import type { WSClient } from "./ws-client.js";
|
|
3
|
+
export declare class WebPresenter implements AgentPresenter {
|
|
4
|
+
private readonly conversationId;
|
|
5
|
+
private readonly cwd?;
|
|
6
|
+
pendingAskUserToolIds?: Set<string>;
|
|
7
|
+
private wsClient;
|
|
8
|
+
private readonly emittedGeneratedImageKeys;
|
|
9
|
+
private readonly emittedSessionMediaKeys;
|
|
10
|
+
private readonly toolNamesById;
|
|
11
|
+
private readonly toolInputsById;
|
|
12
|
+
private readonly browserRecordingPathHints;
|
|
13
|
+
private suppressSessionLifecycle;
|
|
14
|
+
private runId;
|
|
15
|
+
private backendKind;
|
|
16
|
+
private applicationProblem;
|
|
17
|
+
private terminalEmitted;
|
|
18
|
+
constructor(wsClient: WSClient, conversationId: string, cwd?: string | undefined);
|
|
19
|
+
setSuppressSessionLifecycle(suppress: boolean): void;
|
|
20
|
+
setRunContext(runId: string | undefined, backendKind?: string): void;
|
|
21
|
+
onStart(config: AgentConfig): void;
|
|
22
|
+
onLog(message: string): void;
|
|
23
|
+
onNotice(kind: string, message: string): void;
|
|
24
|
+
onAssistantText(text: string, parentToolUseId?: string | null): void;
|
|
25
|
+
onThinking(text: string, parentToolUseId?: string | null): void;
|
|
26
|
+
hasKnownToolUse(toolId: string): boolean;
|
|
27
|
+
onToolUse(tool: string, input: unknown, toolId: string, parentToolUseId?: string | null): void;
|
|
28
|
+
onToolResult(toolId: string, content: string, isError?: boolean, parentToolUseId?: string | null): void;
|
|
29
|
+
onGeneratedImage(image: GeneratedImagePayload): void;
|
|
30
|
+
private emitGeneratedImage;
|
|
31
|
+
onSessionMedia(media: SessionMediaPayload): void;
|
|
32
|
+
private emitSessionMedia;
|
|
33
|
+
onTurnComplete(content: unknown[]): void;
|
|
34
|
+
onUsageUpdate(usage: UsageUpdate): void;
|
|
35
|
+
onAskUser(id: string, questions: unknown[]): void;
|
|
36
|
+
onTodoWrite(todos: unknown[]): void;
|
|
37
|
+
onExitPlanMode(id: string, input: ExitPlanModeInput, planFilePath?: string): void;
|
|
38
|
+
onCheckpoint(id: string): void;
|
|
39
|
+
onActivity(status: string, evidence?: AgentActivityEvidence): void;
|
|
40
|
+
onOpenBrowserTab(browserId: string, url?: string): void;
|
|
41
|
+
recordRawTranscript(): void;
|
|
42
|
+
onError(message: string, isAgentError?: boolean): void;
|
|
43
|
+
onApplicationError(input: {
|
|
44
|
+
code: ApplicationProblemCode;
|
|
45
|
+
message: string;
|
|
46
|
+
diagnostic?: string;
|
|
47
|
+
}): void;
|
|
48
|
+
onComplete(result: AgentResult): void;
|
|
49
|
+
emitSessionEnd(result: AgentResult): Promise<void>;
|
|
50
|
+
}
|
|
51
|
+
import { type ApplicationProblemCode } from "@alan-ai/shared/agent";
|
|
52
|
+
//# sourceMappingURL=web-presenter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"web-presenter.d.ts","sourceRoot":"","sources":["../src/web-presenter.ts"],"names":[],"mappings":"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"}
|