@aiden-ade/sandbox-agent 0.1.60 → 0.1.62
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/dist/index.cjs +465 -342
- package/package.json +1 -1
- package/dist/__tests__/binding-switch-git.test.d.ts +0 -2
- package/dist/__tests__/binding-switch-git.test.d.ts.map +0 -1
- package/dist/__tests__/binding-switch-git.test.js +0 -610
- package/dist/__tests__/binding-switch-git.test.js.map +0 -1
- package/dist/__tests__/cli-ensure-install.test.d.ts +0 -2
- package/dist/__tests__/cli-ensure-install.test.d.ts.map +0 -1
- package/dist/__tests__/cli-ensure-install.test.js +0 -109
- package/dist/__tests__/cli-ensure-install.test.js.map +0 -1
- package/dist/__tests__/cli-executable.test.d.ts +0 -2
- package/dist/__tests__/cli-executable.test.d.ts.map +0 -1
- package/dist/__tests__/cli-executable.test.js +0 -129
- package/dist/__tests__/cli-executable.test.js.map +0 -1
- package/dist/__tests__/cli-help.test.d.ts +0 -2
- package/dist/__tests__/cli-help.test.d.ts.map +0 -1
- package/dist/__tests__/cli-help.test.js +0 -34
- package/dist/__tests__/cli-help.test.js.map +0 -1
- package/dist/__tests__/computer-readiness.test.d.ts +0 -2
- package/dist/__tests__/computer-readiness.test.d.ts.map +0 -1
- package/dist/__tests__/computer-readiness.test.js +0 -63
- package/dist/__tests__/computer-readiness.test.js.map +0 -1
- package/dist/__tests__/core-agent-workflow-context.test.d.ts +0 -2
- package/dist/__tests__/core-agent-workflow-context.test.d.ts.map +0 -1
- package/dist/__tests__/core-agent-workflow-context.test.js +0 -139
- package/dist/__tests__/core-agent-workflow-context.test.js.map +0 -1
- package/dist/__tests__/daemon-reconcile-ask.test.d.ts +0 -2
- package/dist/__tests__/daemon-reconcile-ask.test.d.ts.map +0 -1
- package/dist/__tests__/daemon-reconcile-ask.test.js +0 -86
- package/dist/__tests__/daemon-reconcile-ask.test.js.map +0 -1
- package/dist/__tests__/daemon-socket.integration.test.d.ts +0 -2
- package/dist/__tests__/daemon-socket.integration.test.d.ts.map +0 -1
- package/dist/__tests__/daemon-socket.integration.test.js +0 -450
- package/dist/__tests__/daemon-socket.integration.test.js.map +0 -1
- package/dist/__tests__/daemon.test.d.ts +0 -2
- package/dist/__tests__/daemon.test.d.ts.map +0 -1
- package/dist/__tests__/daemon.test.js +0 -3975
- package/dist/__tests__/daemon.test.js.map +0 -1
- package/dist/__tests__/ensure-shared-checkout-branch.test.d.ts +0 -2
- package/dist/__tests__/ensure-shared-checkout-branch.test.d.ts.map +0 -1
- package/dist/__tests__/ensure-shared-checkout-branch.test.js +0 -129
- package/dist/__tests__/ensure-shared-checkout-branch.test.js.map +0 -1
- package/dist/__tests__/event-outbox-persist-failure.test.d.ts +0 -2
- package/dist/__tests__/event-outbox-persist-failure.test.d.ts.map +0 -1
- package/dist/__tests__/event-outbox-persist-failure.test.js +0 -84
- package/dist/__tests__/event-outbox-persist-failure.test.js.map +0 -1
- package/dist/__tests__/event-outbox.test.d.ts +0 -2
- package/dist/__tests__/event-outbox.test.d.ts.map +0 -1
- package/dist/__tests__/event-outbox.test.js +0 -256
- package/dist/__tests__/event-outbox.test.js.map +0 -1
- package/dist/__tests__/fake-provider-cli.test.d.ts +0 -2
- package/dist/__tests__/fake-provider-cli.test.d.ts.map +0 -1
- package/dist/__tests__/fake-provider-cli.test.js +0 -46
- package/dist/__tests__/fake-provider-cli.test.js.map +0 -1
- package/dist/__tests__/generated-images.test.d.ts +0 -2
- package/dist/__tests__/generated-images.test.d.ts.map +0 -1
- package/dist/__tests__/generated-images.test.js +0 -132
- package/dist/__tests__/generated-images.test.js.map +0 -1
- package/dist/__tests__/lifecycle-logger.test.d.ts +0 -2
- package/dist/__tests__/lifecycle-logger.test.d.ts.map +0 -1
- package/dist/__tests__/lifecycle-logger.test.js +0 -49
- package/dist/__tests__/lifecycle-logger.test.js.map +0 -1
- package/dist/__tests__/local-skill-scan.test.d.ts +0 -2
- package/dist/__tests__/local-skill-scan.test.d.ts.map +0 -1
- package/dist/__tests__/local-skill-scan.test.js +0 -91
- package/dist/__tests__/local-skill-scan.test.js.map +0 -1
- package/dist/__tests__/local-workspace-migration.test.d.ts +0 -2
- package/dist/__tests__/local-workspace-migration.test.d.ts.map +0 -1
- package/dist/__tests__/local-workspace-migration.test.js +0 -195
- package/dist/__tests__/local-workspace-migration.test.js.map +0 -1
- package/dist/__tests__/mcp-inspect-timeout.test.d.ts +0 -2
- package/dist/__tests__/mcp-inspect-timeout.test.d.ts.map +0 -1
- package/dist/__tests__/mcp-inspect-timeout.test.js +0 -97
- package/dist/__tests__/mcp-inspect-timeout.test.js.map +0 -1
- package/dist/__tests__/mcp-readiness.test.d.ts +0 -2
- package/dist/__tests__/mcp-readiness.test.d.ts.map +0 -1
- package/dist/__tests__/mcp-readiness.test.js +0 -267
- package/dist/__tests__/mcp-readiness.test.js.map +0 -1
- package/dist/__tests__/mcp-registration-cli.test.d.ts +0 -2
- package/dist/__tests__/mcp-registration-cli.test.d.ts.map +0 -1
- package/dist/__tests__/mcp-registration-cli.test.js +0 -71
- package/dist/__tests__/mcp-registration-cli.test.js.map +0 -1
- package/dist/__tests__/mcp-registration.test.d.ts +0 -2
- package/dist/__tests__/mcp-registration.test.d.ts.map +0 -1
- package/dist/__tests__/mcp-registration.test.js +0 -426
- package/dist/__tests__/mcp-registration.test.js.map +0 -1
- package/dist/__tests__/model-scan-runner.test.d.ts +0 -2
- package/dist/__tests__/model-scan-runner.test.d.ts.map +0 -1
- package/dist/__tests__/model-scan-runner.test.js +0 -67
- package/dist/__tests__/model-scan-runner.test.js.map +0 -1
- package/dist/__tests__/network-diagnostics.test.d.ts +0 -2
- package/dist/__tests__/network-diagnostics.test.d.ts.map +0 -1
- package/dist/__tests__/network-diagnostics.test.js +0 -26
- package/dist/__tests__/network-diagnostics.test.js.map +0 -1
- package/dist/__tests__/observable-map.test.d.ts +0 -2
- package/dist/__tests__/observable-map.test.d.ts.map +0 -1
- package/dist/__tests__/observable-map.test.js +0 -54
- package/dist/__tests__/observable-map.test.js.map +0 -1
- package/dist/__tests__/provider-auth-preflight.test.d.ts +0 -2
- package/dist/__tests__/provider-auth-preflight.test.d.ts.map +0 -1
- package/dist/__tests__/provider-auth-preflight.test.js +0 -123
- package/dist/__tests__/provider-auth-preflight.test.js.map +0 -1
- package/dist/__tests__/provider-model-discovery.test.d.ts +0 -2
- package/dist/__tests__/provider-model-discovery.test.d.ts.map +0 -1
- package/dist/__tests__/provider-model-discovery.test.js +0 -472
- package/dist/__tests__/provider-model-discovery.test.js.map +0 -1
- package/dist/__tests__/remove-worktrees-if-clean.test.d.ts +0 -2
- package/dist/__tests__/remove-worktrees-if-clean.test.d.ts.map +0 -1
- package/dist/__tests__/remove-worktrees-if-clean.test.js +0 -221
- package/dist/__tests__/remove-worktrees-if-clean.test.js.map +0 -1
- package/dist/__tests__/resume-fallback-env.test.d.ts +0 -2
- package/dist/__tests__/resume-fallback-env.test.d.ts.map +0 -1
- package/dist/__tests__/resume-fallback-env.test.js +0 -28
- package/dist/__tests__/resume-fallback-env.test.js.map +0 -1
- package/dist/__tests__/run-journal.test.d.ts +0 -2
- package/dist/__tests__/run-journal.test.d.ts.map +0 -1
- package/dist/__tests__/run-journal.test.js +0 -121
- package/dist/__tests__/run-journal.test.js.map +0 -1
- package/dist/__tests__/run-start-gate.test.d.ts +0 -2
- package/dist/__tests__/run-start-gate.test.d.ts.map +0 -1
- package/dist/__tests__/run-start-gate.test.js +0 -29
- package/dist/__tests__/run-start-gate.test.js.map +0 -1
- package/dist/__tests__/runtime-capabilities-sync.test.d.ts +0 -2
- package/dist/__tests__/runtime-capabilities-sync.test.d.ts.map +0 -1
- package/dist/__tests__/runtime-capabilities-sync.test.js +0 -66
- package/dist/__tests__/runtime-capabilities-sync.test.js.map +0 -1
- package/dist/__tests__/runtime-config.test.d.ts +0 -2
- package/dist/__tests__/runtime-config.test.d.ts.map +0 -1
- package/dist/__tests__/runtime-config.test.js +0 -102
- package/dist/__tests__/runtime-config.test.js.map +0 -1
- package/dist/__tests__/runtime-presenter-heartbeat.test.d.ts +0 -2
- package/dist/__tests__/runtime-presenter-heartbeat.test.d.ts.map +0 -1
- package/dist/__tests__/runtime-presenter-heartbeat.test.js +0 -159
- package/dist/__tests__/runtime-presenter-heartbeat.test.js.map +0 -1
- package/dist/__tests__/sandbox-outbox.test.d.ts +0 -2
- package/dist/__tests__/sandbox-outbox.test.d.ts.map +0 -1
- package/dist/__tests__/sandbox-outbox.test.js +0 -214
- package/dist/__tests__/sandbox-outbox.test.js.map +0 -1
- package/dist/__tests__/sandbox-workflow-context.test.d.ts +0 -2
- package/dist/__tests__/sandbox-workflow-context.test.d.ts.map +0 -1
- package/dist/__tests__/sandbox-workflow-context.test.js +0 -396
- package/dist/__tests__/sandbox-workflow-context.test.js.map +0 -1
- package/dist/__tests__/service-manager.test.d.ts +0 -2
- package/dist/__tests__/service-manager.test.d.ts.map +0 -1
- package/dist/__tests__/service-manager.test.js +0 -50
- package/dist/__tests__/service-manager.test.js.map +0 -1
- package/dist/__tests__/sleep-inhibitor.test.d.ts +0 -2
- package/dist/__tests__/sleep-inhibitor.test.d.ts.map +0 -1
- package/dist/__tests__/sleep-inhibitor.test.js +0 -236
- package/dist/__tests__/sleep-inhibitor.test.js.map +0 -1
- package/dist/__tests__/status-local-workspace.test.d.ts +0 -2
- package/dist/__tests__/status-local-workspace.test.d.ts.map +0 -1
- package/dist/__tests__/status-local-workspace.test.js +0 -121
- package/dist/__tests__/status-local-workspace.test.js.map +0 -1
- package/dist/__tests__/suspension-detector.test.d.ts +0 -2
- package/dist/__tests__/suspension-detector.test.d.ts.map +0 -1
- package/dist/__tests__/suspension-detector.test.js +0 -112
- package/dist/__tests__/suspension-detector.test.js.map +0 -1
- package/dist/__tests__/web-presenter-parent-events.test.d.ts +0 -2
- package/dist/__tests__/web-presenter-parent-events.test.d.ts.map +0 -1
- package/dist/__tests__/web-presenter-parent-events.test.js +0 -130
- package/dist/__tests__/web-presenter-parent-events.test.js.map +0 -1
- package/dist/__tests__/workspace-relocation.test.d.ts +0 -2
- package/dist/__tests__/workspace-relocation.test.d.ts.map +0 -1
- package/dist/__tests__/workspace-relocation.test.js +0 -66
- package/dist/__tests__/workspace-relocation.test.js.map +0 -1
- package/dist/__tests__/workspace-run-lease.test.d.ts +0 -2
- package/dist/__tests__/workspace-run-lease.test.d.ts.map +0 -1
- package/dist/__tests__/workspace-run-lease.test.js +0 -230
- package/dist/__tests__/workspace-run-lease.test.js.map +0 -1
- package/dist/__tests__/ws-client-heartbeat-volatile.test.d.ts +0 -2
- package/dist/__tests__/ws-client-heartbeat-volatile.test.d.ts.map +0 -1
- package/dist/__tests__/ws-client-heartbeat-volatile.test.js +0 -61
- package/dist/__tests__/ws-client-heartbeat-volatile.test.js.map +0 -1
- package/dist/__tests__/ws-client-heartbeat.integration.test.d.ts +0 -2
- package/dist/__tests__/ws-client-heartbeat.integration.test.d.ts.map +0 -1
- package/dist/__tests__/ws-client-heartbeat.integration.test.js +0 -109
- package/dist/__tests__/ws-client-heartbeat.integration.test.js.map +0 -1
- package/dist/__tests__/ws-client-user-message-ack.integration.test.d.ts +0 -2
- package/dist/__tests__/ws-client-user-message-ack.integration.test.d.ts.map +0 -1
- package/dist/__tests__/ws-client-user-message-ack.integration.test.js +0 -167
- package/dist/__tests__/ws-client-user-message-ack.integration.test.js.map +0 -1
- package/dist/aiden-system-prompt.d.ts +0 -6
- package/dist/aiden-system-prompt.d.ts.map +0 -1
- package/dist/aiden-system-prompt.js +0 -6
- package/dist/aiden-system-prompt.js.map +0 -1
- package/dist/binding-switch-git.d.ts +0 -26
- package/dist/binding-switch-git.d.ts.map +0 -1
- package/dist/binding-switch-git.js +0 -973
- package/dist/binding-switch-git.js.map +0 -1
- package/dist/cli-ensure-install.d.ts +0 -39
- package/dist/cli-ensure-install.d.ts.map +0 -1
- package/dist/cli-ensure-install.js +0 -133
- package/dist/cli-ensure-install.js.map +0 -1
- package/dist/cli-executable.d.ts +0 -97
- package/dist/cli-executable.d.ts.map +0 -1
- package/dist/cli-executable.js +0 -432
- package/dist/cli-executable.js.map +0 -1
- package/dist/cli-help.d.ts +0 -7
- package/dist/cli-help.d.ts.map +0 -1
- package/dist/cli-help.js +0 -49
- package/dist/cli-help.js.map +0 -1
- package/dist/computer-readiness.d.ts +0 -42
- package/dist/computer-readiness.d.ts.map +0 -1
- package/dist/computer-readiness.js +0 -191
- package/dist/computer-readiness.js.map +0 -1
- package/dist/core-agent.d.ts +0 -47
- package/dist/core-agent.d.ts.map +0 -1
- package/dist/core-agent.js +0 -364
- package/dist/core-agent.js.map +0 -1
- package/dist/daemon.d.ts +0 -392
- package/dist/daemon.d.ts.map +0 -1
- package/dist/daemon.js +0 -4711
- package/dist/daemon.js.map +0 -1
- package/dist/event-outbox.d.ts +0 -83
- package/dist/event-outbox.d.ts.map +0 -1
- package/dist/event-outbox.js +0 -440
- package/dist/event-outbox.js.map +0 -1
- package/dist/fake-provider-cli.d.ts +0 -13
- package/dist/fake-provider-cli.d.ts.map +0 -1
- package/dist/fake-provider-cli.js +0 -53
- package/dist/fake-provider-cli.js.map +0 -1
- package/dist/generated-images.d.ts +0 -2
- package/dist/generated-images.d.ts.map +0 -1
- package/dist/generated-images.js +0 -2
- package/dist/generated-images.js.map +0 -1
- package/dist/index.d.ts +0 -6
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -209
- package/dist/index.js.map +0 -1
- package/dist/lifecycle-logger.d.ts +0 -25
- package/dist/lifecycle-logger.d.ts.map +0 -1
- package/dist/lifecycle-logger.js +0 -73
- package/dist/lifecycle-logger.js.map +0 -1
- package/dist/local-skill-scan.d.ts +0 -21
- package/dist/local-skill-scan.d.ts.map +0 -1
- package/dist/local-skill-scan.js +0 -109
- package/dist/local-skill-scan.js.map +0 -1
- package/dist/local-workspace-migration.d.ts +0 -68
- package/dist/local-workspace-migration.d.ts.map +0 -1
- package/dist/local-workspace-migration.js +0 -157
- package/dist/local-workspace-migration.js.map +0 -1
- package/dist/mcp-readiness.d.ts +0 -59
- package/dist/mcp-readiness.d.ts.map +0 -1
- package/dist/mcp-readiness.js +0 -202
- package/dist/mcp-readiness.js.map +0 -1
- package/dist/mcp-registration.d.ts +0 -75
- package/dist/mcp-registration.d.ts.map +0 -1
- package/dist/mcp-registration.js +0 -563
- package/dist/mcp-registration.js.map +0 -1
- package/dist/model-scan-runner.d.ts +0 -15
- package/dist/model-scan-runner.d.ts.map +0 -1
- package/dist/model-scan-runner.js +0 -51
- package/dist/model-scan-runner.js.map +0 -1
- package/dist/network-diagnostics.d.ts +0 -8
- package/dist/network-diagnostics.d.ts.map +0 -1
- package/dist/network-diagnostics.js +0 -56
- package/dist/network-diagnostics.js.map +0 -1
- package/dist/observable-map.d.ts +0 -25
- package/dist/observable-map.d.ts.map +0 -1
- package/dist/observable-map.js +0 -42
- package/dist/observable-map.js.map +0 -1
- package/dist/provider-auth-preflight.d.ts +0 -22
- package/dist/provider-auth-preflight.d.ts.map +0 -1
- package/dist/provider-auth-preflight.js +0 -110
- package/dist/provider-auth-preflight.js.map +0 -1
- package/dist/provider-model-discovery.d.ts +0 -38
- package/dist/provider-model-discovery.d.ts.map +0 -1
- package/dist/provider-model-discovery.js +0 -519
- package/dist/provider-model-discovery.js.map +0 -1
- package/dist/resume-fallback-env.d.ts +0 -20
- package/dist/resume-fallback-env.d.ts.map +0 -1
- package/dist/resume-fallback-env.js +0 -30
- package/dist/resume-fallback-env.js.map +0 -1
- package/dist/run-journal.d.ts +0 -53
- package/dist/run-journal.d.ts.map +0 -1
- package/dist/run-journal.js +0 -193
- package/dist/run-journal.js.map +0 -1
- package/dist/run-start-gate.d.ts +0 -9
- package/dist/run-start-gate.d.ts.map +0 -1
- package/dist/run-start-gate.js +0 -24
- package/dist/run-start-gate.js.map +0 -1
- package/dist/runtime-backends.d.ts +0 -2
- package/dist/runtime-backends.d.ts.map +0 -1
- package/dist/runtime-backends.js +0 -2
- package/dist/runtime-backends.js.map +0 -1
- package/dist/runtime-capabilities-sync.d.ts +0 -33
- package/dist/runtime-capabilities-sync.d.ts.map +0 -1
- package/dist/runtime-capabilities-sync.js +0 -56
- package/dist/runtime-capabilities-sync.js.map +0 -1
- package/dist/runtime-config.d.ts +0 -24
- package/dist/runtime-config.d.ts.map +0 -1
- package/dist/runtime-config.js +0 -124
- package/dist/runtime-config.js.map +0 -1
- package/dist/sandbox-outbox.d.ts +0 -122
- package/dist/sandbox-outbox.d.ts.map +0 -1
- package/dist/sandbox-outbox.js +0 -180
- package/dist/sandbox-outbox.js.map +0 -1
- package/dist/sandbox.d.ts +0 -44
- package/dist/sandbox.d.ts.map +0 -1
- package/dist/sandbox.js +0 -438
- package/dist/sandbox.js.map +0 -1
- package/dist/service-manager.d.ts +0 -28
- package/dist/service-manager.d.ts.map +0 -1
- package/dist/service-manager.js +0 -259
- package/dist/service-manager.js.map +0 -1
- package/dist/sleep-inhibitor.d.ts +0 -111
- package/dist/sleep-inhibitor.d.ts.map +0 -1
- package/dist/sleep-inhibitor.js +0 -412
- package/dist/sleep-inhibitor.js.map +0 -1
- package/dist/suspension-detector.d.ts +0 -48
- package/dist/suspension-detector.d.ts.map +0 -1
- package/dist/suspension-detector.js +0 -89
- package/dist/suspension-detector.js.map +0 -1
- package/dist/types.d.ts +0 -6
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -6
- package/dist/types.js.map +0 -1
- package/dist/updater.d.ts +0 -15
- package/dist/updater.d.ts.map +0 -1
- package/dist/updater.js +0 -50
- package/dist/updater.js.map +0 -1
- package/dist/version.d.ts +0 -2
- package/dist/version.d.ts.map +0 -1
- package/dist/version.js +0 -2
- package/dist/version.js.map +0 -1
- package/dist/web-presenter.d.ts +0 -55
- package/dist/web-presenter.d.ts.map +0 -1
- package/dist/web-presenter.js +0 -265
- package/dist/web-presenter.js.map +0 -1
- package/dist/workspace-relocation.d.ts +0 -22
- package/dist/workspace-relocation.d.ts.map +0 -1
- package/dist/workspace-relocation.js +0 -90
- package/dist/workspace-relocation.js.map +0 -1
- package/dist/workspace-run-lease.d.ts +0 -97
- package/dist/workspace-run-lease.d.ts.map +0 -1
- package/dist/workspace-run-lease.js +0 -241
- package/dist/workspace-run-lease.js.map +0 -1
- package/dist/ws-client.d.ts +0 -194
- package/dist/ws-client.d.ts.map +0 -1
- package/dist/ws-client.js +0 -282
- package/dist/ws-client.js.map +0 -1
package/dist/run-journal.js
DELETED
|
@@ -1,193 +0,0 @@
|
|
|
1
|
-
import { chmodSync, existsSync, mkdirSync, readFileSync, renameSync, rmSync, writeFileSync, } from "node:fs";
|
|
2
|
-
import { dirname } from "node:path";
|
|
3
|
-
const JOURNAL_VERSION = 1;
|
|
4
|
-
const INTERRUPTED_ENTRY_TTL_MS = 24 * 60 * 60_000;
|
|
5
|
-
function isEntry(value) {
|
|
6
|
-
if (!value || typeof value !== "object")
|
|
7
|
-
return false;
|
|
8
|
-
const entry = value;
|
|
9
|
-
const baseValid = typeof entry.runId === "string" &&
|
|
10
|
-
entry.runId.length > 0 &&
|
|
11
|
-
typeof entry.conversationId === "string" &&
|
|
12
|
-
entry.conversationId.length > 0 &&
|
|
13
|
-
typeof entry.acceptedAtMs === "number" &&
|
|
14
|
-
Number.isFinite(entry.acceptedAtMs);
|
|
15
|
-
if (!baseValid)
|
|
16
|
-
return false;
|
|
17
|
-
const hasProviderPid = entry.providerPid !== undefined;
|
|
18
|
-
const hasProviderSpawnedAt = entry.providerSpawnedAtMs !== undefined;
|
|
19
|
-
if (hasProviderPid !== hasProviderSpawnedAt)
|
|
20
|
-
return false;
|
|
21
|
-
const interruptionValid = entry.interruptedAtMs === undefined ||
|
|
22
|
-
(typeof entry.interruptedAtMs === "number" && Number.isFinite(entry.interruptedAtMs));
|
|
23
|
-
if (!hasProviderPid)
|
|
24
|
-
return interruptionValid;
|
|
25
|
-
const providerEvidenceValid = Number.isSafeInteger(entry.providerPid) &&
|
|
26
|
-
entry.providerPid > 0 &&
|
|
27
|
-
typeof entry.providerSpawnedAtMs === "number" &&
|
|
28
|
-
Number.isFinite(entry.providerSpawnedAtMs);
|
|
29
|
-
return providerEvidenceValid && interruptionValid;
|
|
30
|
-
}
|
|
31
|
-
/**
|
|
32
|
-
* Durable accepted-run inbox. It stores identifiers only—never prompts, tool
|
|
33
|
-
* payloads, credentials, or provider output—and is persisted before the daemon
|
|
34
|
-
* acknowledges acceptance so a restart cannot turn redelivery into a second run.
|
|
35
|
-
*/
|
|
36
|
-
export class RuntimeRunJournal {
|
|
37
|
-
path;
|
|
38
|
-
entries = new Map();
|
|
39
|
-
recoveredIds = new Set();
|
|
40
|
-
recoveryPersistencePending = false;
|
|
41
|
-
constructor(path, nowMs = Date.now()) {
|
|
42
|
-
this.path = path;
|
|
43
|
-
if (!existsSync(path))
|
|
44
|
-
return;
|
|
45
|
-
try {
|
|
46
|
-
const parsed = JSON.parse(readFileSync(path, "utf8"));
|
|
47
|
-
if (parsed.version !== JOURNAL_VERSION || !Array.isArray(parsed.entries)) {
|
|
48
|
-
throw new Error("unsupported run journal format");
|
|
49
|
-
}
|
|
50
|
-
for (const entry of parsed.entries) {
|
|
51
|
-
if (!isEntry(entry))
|
|
52
|
-
throw new Error("invalid run journal entry");
|
|
53
|
-
if (entry.interruptedAtMs !== undefined &&
|
|
54
|
-
nowMs - entry.interruptedAtMs > INTERRUPTED_ENTRY_TTL_MS) {
|
|
55
|
-
this.recoveryPersistencePending = true;
|
|
56
|
-
continue;
|
|
57
|
-
}
|
|
58
|
-
this.entries.set(entry.runId, entry);
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
catch (error) {
|
|
62
|
-
throw new Error(`Cannot safely read accepted-run journal: ${error instanceof Error ? error.message : String(error)}`);
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
get(runId) {
|
|
66
|
-
return this.entries.get(runId);
|
|
67
|
-
}
|
|
68
|
-
recoveredRunIds() {
|
|
69
|
-
return [...this.recoveredIds];
|
|
70
|
-
}
|
|
71
|
-
/**
|
|
72
|
-
* Mark entries from an earlier daemon as interrupted only after this process
|
|
73
|
-
* has proved exclusive ownership of the config's local API endpoint.
|
|
74
|
-
*/
|
|
75
|
-
confirmRecoveryOwnership(nowMs = Date.now()) {
|
|
76
|
-
const previousEntries = new Map(this.entries);
|
|
77
|
-
const previousRecoveredIds = new Set(this.recoveredIds);
|
|
78
|
-
const persistenceWasPending = this.recoveryPersistencePending;
|
|
79
|
-
let changed = persistenceWasPending;
|
|
80
|
-
try {
|
|
81
|
-
for (const [runId, entry] of this.entries) {
|
|
82
|
-
this.recoveredIds.add(runId);
|
|
83
|
-
if (entry.interruptedAtMs !== undefined)
|
|
84
|
-
continue;
|
|
85
|
-
this.entries.set(runId, { ...entry, interruptedAtMs: nowMs });
|
|
86
|
-
changed = true;
|
|
87
|
-
}
|
|
88
|
-
if (changed)
|
|
89
|
-
this.persist();
|
|
90
|
-
this.recoveryPersistencePending = false;
|
|
91
|
-
}
|
|
92
|
-
catch (error) {
|
|
93
|
-
this.entries.clear();
|
|
94
|
-
for (const [runId, entry] of previousEntries)
|
|
95
|
-
this.entries.set(runId, entry);
|
|
96
|
-
this.recoveredIds.clear();
|
|
97
|
-
for (const runId of previousRecoveredIds)
|
|
98
|
-
this.recoveredIds.add(runId);
|
|
99
|
-
this.recoveryPersistencePending = persistenceWasPending;
|
|
100
|
-
throw error;
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
record(entry) {
|
|
104
|
-
const previous = this.entries.get(entry.runId);
|
|
105
|
-
this.entries.set(entry.runId, entry);
|
|
106
|
-
try {
|
|
107
|
-
this.persist();
|
|
108
|
-
}
|
|
109
|
-
catch (error) {
|
|
110
|
-
if (previous)
|
|
111
|
-
this.entries.set(entry.runId, previous);
|
|
112
|
-
else
|
|
113
|
-
this.entries.delete(entry.runId);
|
|
114
|
-
throw error;
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
recordProviderSpawned(runId, providerPid, providerSpawnedAtMs) {
|
|
118
|
-
const previous = this.entries.get(runId);
|
|
119
|
-
if (!previous)
|
|
120
|
-
throw new Error(`Cannot attach provider evidence to unknown run ${runId}`);
|
|
121
|
-
if (!Number.isSafeInteger(providerPid) || providerPid <= 0) {
|
|
122
|
-
throw new Error("Cannot record an invalid provider PID");
|
|
123
|
-
}
|
|
124
|
-
if (!Number.isFinite(providerSpawnedAtMs)) {
|
|
125
|
-
throw new Error("Cannot record an invalid provider spawn time");
|
|
126
|
-
}
|
|
127
|
-
this.entries.set(runId, { ...previous, providerPid, providerSpawnedAtMs });
|
|
128
|
-
try {
|
|
129
|
-
this.persist();
|
|
130
|
-
}
|
|
131
|
-
catch (error) {
|
|
132
|
-
this.entries.set(runId, previous);
|
|
133
|
-
throw error;
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
/**
|
|
137
|
-
* A live PID is insufficient for reattachment: operating systems can reuse
|
|
138
|
-
* PIDs, and the daemon cannot recover the provider's anonymous stdio pipes.
|
|
139
|
-
* Keep the exact interruption outcome until a durable authenticated control
|
|
140
|
-
* channel can prove both identity and ownership.
|
|
141
|
-
*/
|
|
142
|
-
assessRecovery(runId, isProcessAlive) {
|
|
143
|
-
const entry = this.entries.get(runId);
|
|
144
|
-
if (!entry)
|
|
145
|
-
return undefined;
|
|
146
|
-
if (entry.providerPid === undefined) {
|
|
147
|
-
return { reattachable: false, reason: "provider_not_recorded" };
|
|
148
|
-
}
|
|
149
|
-
if (!isProcessAlive(entry.providerPid)) {
|
|
150
|
-
return {
|
|
151
|
-
reattachable: false,
|
|
152
|
-
reason: "provider_not_running",
|
|
153
|
-
providerPid: entry.providerPid,
|
|
154
|
-
};
|
|
155
|
-
}
|
|
156
|
-
return {
|
|
157
|
-
reattachable: false,
|
|
158
|
-
reason: "provider_identity_unverified",
|
|
159
|
-
providerPid: entry.providerPid,
|
|
160
|
-
};
|
|
161
|
-
}
|
|
162
|
-
remove(runId) {
|
|
163
|
-
const previous = this.entries.get(runId);
|
|
164
|
-
if (!previous)
|
|
165
|
-
return;
|
|
166
|
-
const wasRecovered = this.recoveredIds.has(runId);
|
|
167
|
-
this.entries.delete(runId);
|
|
168
|
-
this.recoveredIds.delete(runId);
|
|
169
|
-
try {
|
|
170
|
-
this.persist();
|
|
171
|
-
}
|
|
172
|
-
catch (error) {
|
|
173
|
-
this.entries.set(runId, previous);
|
|
174
|
-
if (wasRecovered)
|
|
175
|
-
this.recoveredIds.add(runId);
|
|
176
|
-
throw error;
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
persist() {
|
|
180
|
-
const pendingPath = `${this.path}.pending`;
|
|
181
|
-
mkdirSync(dirname(this.path), { recursive: true });
|
|
182
|
-
try {
|
|
183
|
-
writeFileSync(pendingPath, `${JSON.stringify({ version: JOURNAL_VERSION, entries: [...this.entries.values()] })}\n`, { mode: 0o600 });
|
|
184
|
-
chmodSync(pendingPath, 0o600);
|
|
185
|
-
renameSync(pendingPath, this.path);
|
|
186
|
-
}
|
|
187
|
-
catch (error) {
|
|
188
|
-
rmSync(pendingPath, { force: true });
|
|
189
|
-
throw error;
|
|
190
|
-
}
|
|
191
|
-
}
|
|
192
|
-
}
|
|
193
|
-
//# sourceMappingURL=run-journal.js.map
|
package/dist/run-journal.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"run-journal.js","sourceRoot":"","sources":["../src/run-journal.ts"],"names":[],"mappings":"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"}
|
package/dist/run-start-gate.d.ts
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* FIFO mutex for the short global-config-to-provider-spawn critical section.
|
|
3
|
-
* Providers may run concurrently after spawn; only startup is serialized.
|
|
4
|
-
*/
|
|
5
|
-
export declare class RunStartGate {
|
|
6
|
-
private tail;
|
|
7
|
-
acquire(): Promise<() => void>;
|
|
8
|
-
}
|
|
9
|
-
//# sourceMappingURL=run-start-gate.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"run-start-gate.d.ts","sourceRoot":"","sources":["../src/run-start-gate.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,IAAI,CAAoC;IAE1C,OAAO,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC;CAgBrC"}
|
package/dist/run-start-gate.js
DELETED
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* FIFO mutex for the short global-config-to-provider-spawn critical section.
|
|
3
|
-
* Providers may run concurrently after spawn; only startup is serialized.
|
|
4
|
-
*/
|
|
5
|
-
export class RunStartGate {
|
|
6
|
-
tail = Promise.resolve();
|
|
7
|
-
async acquire() {
|
|
8
|
-
const previous = this.tail;
|
|
9
|
-
let releaseCurrent;
|
|
10
|
-
const current = new Promise((resolve) => {
|
|
11
|
-
releaseCurrent = resolve;
|
|
12
|
-
});
|
|
13
|
-
this.tail = previous.then(() => current);
|
|
14
|
-
await previous;
|
|
15
|
-
let released = false;
|
|
16
|
-
return () => {
|
|
17
|
-
if (released)
|
|
18
|
-
return;
|
|
19
|
-
released = true;
|
|
20
|
-
releaseCurrent();
|
|
21
|
-
};
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
//# sourceMappingURL=run-start-gate.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"run-start-gate.js","sourceRoot":"","sources":["../src/run-start-gate.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,OAAO,YAAY;IACf,IAAI,GAAkB,OAAO,CAAC,OAAO,EAAE,CAAC;IAEhD,KAAK,CAAC,OAAO;QACX,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC;QAC3B,IAAI,cAA2B,CAAC;QAChC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;YAC5C,cAAc,GAAG,OAAO,CAAC;QAC3B,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC;QACzC,MAAM,QAAQ,CAAC;QAEf,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,OAAO,GAAG,EAAE;YACV,IAAI,QAAQ;gBAAE,OAAO;YACrB,QAAQ,GAAG,IAAI,CAAC;YAChB,cAAc,EAAE,CAAC;QACnB,CAAC,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"runtime-backends.d.ts","sourceRoot":"","sources":["../src/runtime-backends.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC"}
|
package/dist/runtime-backends.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"runtime-backends.js","sourceRoot":"","sources":["../src/runtime-backends.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC"}
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import type { Socket } from "socket.io-client";
|
|
2
|
-
export type ModelsScanStatus = "pending" | "complete" | "failed";
|
|
3
|
-
export interface RuntimeCapabilitiesPayload {
|
|
4
|
-
agents: Array<{
|
|
5
|
-
provider: string;
|
|
6
|
-
available: boolean;
|
|
7
|
-
version?: string;
|
|
8
|
-
models?: string[];
|
|
9
|
-
lastCheckedAt: string;
|
|
10
|
-
}>;
|
|
11
|
-
hasGit: boolean;
|
|
12
|
-
hasTerminal: boolean;
|
|
13
|
-
supportsFilesystem: boolean;
|
|
14
|
-
}
|
|
15
|
-
export declare function buildModelsScanMetadata(status: ModelsScanStatus, error?: string): Record<string, unknown>;
|
|
16
|
-
export declare function patchRuntimeCapabilitiesSelf(input: {
|
|
17
|
-
apiUrl: string;
|
|
18
|
-
runtimeId: string;
|
|
19
|
-
runtimeToken: string;
|
|
20
|
-
capabilities: RuntimeCapabilitiesPayload;
|
|
21
|
-
metadata?: Record<string, unknown>;
|
|
22
|
-
}): Promise<void>;
|
|
23
|
-
export declare function setConnectedRuntimeSocket(socket: Socket | null): void;
|
|
24
|
-
export declare function publishRuntimeCapabilities(input: {
|
|
25
|
-
capabilities: RuntimeCapabilitiesPayload;
|
|
26
|
-
metadata?: Record<string, unknown>;
|
|
27
|
-
apiUrl?: string;
|
|
28
|
-
runtimeId?: string;
|
|
29
|
-
runtimeToken?: string;
|
|
30
|
-
}): Promise<void>;
|
|
31
|
-
export declare function getModelScanInFlight(): Promise<void> | null;
|
|
32
|
-
export declare function setModelScanInFlight(promise: Promise<void> | null): void;
|
|
33
|
-
//# sourceMappingURL=runtime-capabilities-sync.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"runtime-capabilities-sync.d.ts","sourceRoot":"","sources":["../src/runtime-capabilities-sync.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE/C,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,UAAU,GAAG,QAAQ,CAAC;AAEjE,MAAM,WAAW,0BAA0B;IACzC,MAAM,EAAE,KAAK,CAAC;QACZ,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,OAAO,CAAC;QACnB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;QAClB,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC,CAAC;IACH,MAAM,EAAE,OAAO,CAAC;IAChB,WAAW,EAAE,OAAO,CAAC;IACrB,kBAAkB,EAAE,OAAO,CAAC;CAC7B;AAED,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,gBAAgB,EACxB,KAAK,CAAC,EAAE,MAAM,GACb,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAQzB;AAED,wBAAsB,4BAA4B,CAAC,KAAK,EAAE;IACxD,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,0BAA0B,CAAC;IACzC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC,GAAG,OAAO,CAAC,IAAI,CAAC,CAoBhB;AAID,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAErE;AAED,wBAAsB,0BAA0B,CAAC,KAAK,EAAE;IACtD,YAAY,EAAE,0BAA0B,CAAC;IACzC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,GAAG,OAAO,CAAC,IAAI,CAAC,CAiBhB;AAID,wBAAgB,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAE3D;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI,CAExE"}
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
export function buildModelsScanMetadata(status, error) {
|
|
2
|
-
const metadata = {
|
|
3
|
-
modelsScanStatus: status,
|
|
4
|
-
modelsScannedAt: new Date().toISOString(),
|
|
5
|
-
};
|
|
6
|
-
if (error)
|
|
7
|
-
metadata.modelsScanError = error;
|
|
8
|
-
else
|
|
9
|
-
delete metadata.modelsScanError;
|
|
10
|
-
return metadata;
|
|
11
|
-
}
|
|
12
|
-
export async function patchRuntimeCapabilitiesSelf(input) {
|
|
13
|
-
const response = await fetch(`${input.apiUrl}/public/runtimes/${input.runtimeId}/capabilities/self`, {
|
|
14
|
-
method: "PATCH",
|
|
15
|
-
headers: {
|
|
16
|
-
"content-type": "application/json",
|
|
17
|
-
authorization: `Bearer ${input.runtimeToken}`,
|
|
18
|
-
},
|
|
19
|
-
body: JSON.stringify({
|
|
20
|
-
capabilities: input.capabilities,
|
|
21
|
-
...(input.metadata ? { metadata: input.metadata } : {}),
|
|
22
|
-
}),
|
|
23
|
-
});
|
|
24
|
-
if (!response.ok) {
|
|
25
|
-
throw new Error(`runtime capabilities update failed: ${response.status} ${await response.text()}`);
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
let connectedRuntimeSocket = null;
|
|
29
|
-
export function setConnectedRuntimeSocket(socket) {
|
|
30
|
-
connectedRuntimeSocket = socket;
|
|
31
|
-
}
|
|
32
|
-
export async function publishRuntimeCapabilities(input) {
|
|
33
|
-
if (connectedRuntimeSocket?.connected) {
|
|
34
|
-
connectedRuntimeSocket.emit("runtime.capabilities", {
|
|
35
|
-
capabilities: input.capabilities,
|
|
36
|
-
...(input.metadata ? { metadata: input.metadata } : {}),
|
|
37
|
-
});
|
|
38
|
-
}
|
|
39
|
-
if (input.apiUrl && input.runtimeId && input.runtimeToken) {
|
|
40
|
-
await patchRuntimeCapabilitiesSelf({
|
|
41
|
-
apiUrl: input.apiUrl,
|
|
42
|
-
runtimeId: input.runtimeId,
|
|
43
|
-
runtimeToken: input.runtimeToken,
|
|
44
|
-
capabilities: input.capabilities,
|
|
45
|
-
metadata: input.metadata,
|
|
46
|
-
});
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
let modelScanInFlight = null;
|
|
50
|
-
export function getModelScanInFlight() {
|
|
51
|
-
return modelScanInFlight;
|
|
52
|
-
}
|
|
53
|
-
export function setModelScanInFlight(promise) {
|
|
54
|
-
modelScanInFlight = promise;
|
|
55
|
-
}
|
|
56
|
-
//# sourceMappingURL=runtime-capabilities-sync.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"runtime-capabilities-sync.js","sourceRoot":"","sources":["../src/runtime-capabilities-sync.ts"],"names":[],"mappings":"AAiBA,MAAM,UAAU,uBAAuB,CACrC,MAAwB,EACxB,KAAc;IAEd,MAAM,QAAQ,GAA4B;QACxC,gBAAgB,EAAE,MAAM;QACxB,eAAe,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KAC1C,CAAC;IACF,IAAI,KAAK;QAAE,QAAQ,CAAC,eAAe,GAAG,KAAK,CAAC;;QACvC,OAAO,QAAQ,CAAC,eAAe,CAAC;IACrC,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAAC,KAMlD;IACC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAC1B,GAAG,KAAK,CAAC,MAAM,oBAAoB,KAAK,CAAC,SAAS,oBAAoB,EACtE;QACE,MAAM,EAAE,OAAO;QACf,OAAO,EAAE;YACP,cAAc,EAAE,kBAAkB;YAClC,aAAa,EAAE,UAAU,KAAK,CAAC,YAAY,EAAE;SAC9C;QACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;YACnB,YAAY,EAAE,KAAK,CAAC,YAAY;YAChC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACxD,CAAC;KACH,CACF,CAAC;IACF,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CACb,uCAAuC,QAAQ,CAAC,MAAM,IAAI,MAAM,QAAQ,CAAC,IAAI,EAAE,EAAE,CAClF,CAAC;IACJ,CAAC;AACH,CAAC;AAED,IAAI,sBAAsB,GAAkB,IAAI,CAAC;AAEjD,MAAM,UAAU,yBAAyB,CAAC,MAAqB;IAC7D,sBAAsB,GAAG,MAAM,CAAC;AAClC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAAC,KAMhD;IACC,IAAI,sBAAsB,EAAE,SAAS,EAAE,CAAC;QACtC,sBAAsB,CAAC,IAAI,CAAC,sBAAsB,EAAE;YAClD,YAAY,EAAE,KAAK,CAAC,YAAY;YAChC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACxD,CAAC,CAAC;IACL,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC;QAC1D,MAAM,4BAA4B,CAAC;YACjC,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,YAAY,EAAE,KAAK,CAAC,YAAY;YAChC,YAAY,EAAE,KAAK,CAAC,YAAY;YAChC,QAAQ,EAAE,KAAK,CAAC,QAAQ;SACzB,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED,IAAI,iBAAiB,GAAyB,IAAI,CAAC;AAEnD,MAAM,UAAU,oBAAoB;IAClC,OAAO,iBAAiB,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,OAA6B;IAChE,iBAAiB,GAAG,OAAO,CAAC;AAC9B,CAAC"}
|
package/dist/runtime-config.d.ts
DELETED
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import { type AgentEndpointProfile } from "@alan-ai/shared/runtime-runner-status";
|
|
2
|
-
export type { AgentEndpointProfile };
|
|
3
|
-
/** Remove obsolete renderer tenant selection from durable daemon identity. */
|
|
4
|
-
export declare function sanitizeAgentConfig<T extends Record<string, unknown>>(config: T): T;
|
|
5
|
-
export declare function migrateLegacyAgentConfig(input?: {
|
|
6
|
-
profile?: AgentEndpointProfile | string | null;
|
|
7
|
-
alanBaseDir?: string;
|
|
8
|
-
legacyBaseDir?: string;
|
|
9
|
-
}): boolean;
|
|
10
|
-
export declare function resolveAgentConfigDirectory(baseDir?: string): string;
|
|
11
|
-
export declare function resolveAgentConfigPath(input?: {
|
|
12
|
-
profile?: AgentEndpointProfile | string | null;
|
|
13
|
-
explicitPath?: string | null;
|
|
14
|
-
baseDir?: string;
|
|
15
|
-
}): string;
|
|
16
|
-
export declare function readConfiguredConfigPath(): string;
|
|
17
|
-
export declare function configExistsAtPath(configPath: string): boolean;
|
|
18
|
-
export declare function resolveEndpointProfileFromArgs(args: string[]): AgentEndpointProfile;
|
|
19
|
-
/**
|
|
20
|
-
* Pin the active config file from `--profile` / `ALAN_AGENT_PROFILE` when the
|
|
21
|
-
* caller has not already set `ALAN_AGENT_CONFIG_PATH` (desktop supervisor does).
|
|
22
|
-
*/
|
|
23
|
-
export declare function bindAgentConfigPathFromArgs(args: string[]): string;
|
|
24
|
-
//# sourceMappingURL=runtime-config.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"runtime-config.d.ts","sourceRoot":"","sources":["../src/runtime-config.ts"],"names":[],"mappings":"AAcA,OAAO,EACL,KAAK,oBAAoB,EAG1B,MAAM,uCAAuC,CAAC;AAE/C,YAAY,EAAE,oBAAoB,EAAE,CAAC;AAiBrC,8EAA8E;AAC9E,wBAAgB,mBAAmB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,CAOnF;AAqBD,wBAAgB,wBAAwB,CAAC,KAAK,CAAC,EAAE;IAC/C,OAAO,CAAC,EAAE,oBAAoB,GAAG,MAAM,GAAG,IAAI,CAAC;IAC/C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,GAAG,OAAO,CAsCV;AAED,wBAAgB,2BAA2B,CAAC,OAAO,SAAoB,GAAG,MAAM,CAE/E;AAED,wBAAgB,sBAAsB,CAAC,KAAK,CAAC,EAAE;IAC7C,OAAO,CAAC,EAAE,oBAAoB,GAAG,MAAM,GAAG,IAAI,CAAC;IAC/C,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,GAAG,MAAM,CAST;AAED,wBAAgB,wBAAwB,IAAI,MAAM,CAEjD;AAED,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAE9D;AAED,wBAAgB,8BAA8B,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,oBAAoB,CAInF;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAOlE"}
|
package/dist/runtime-config.js
DELETED
|
@@ -1,124 +0,0 @@
|
|
|
1
|
-
import { chmodSync, constants, copyFileSync, existsSync, lstatSync, mkdirSync, readFileSync, unlinkSync, utimesSync, writeFileSync, } from "node:fs";
|
|
2
|
-
import { homedir } from "node:os";
|
|
3
|
-
import { join } from "node:path";
|
|
4
|
-
import { normalizeAgentEndpointProfile, resolveAgentConfigFileName, } from "@alan-ai/shared/runtime-runner-status";
|
|
5
|
-
const DEFAULT_AGENT_DIR = join(homedir(), ".alan", "agent");
|
|
6
|
-
const LEGACY_AGENT_DIR = join(homedir(), ".aiden", "agent");
|
|
7
|
-
const AGENT_CONFIG_KEYS = new Map([
|
|
8
|
-
["apiUrl", "string"],
|
|
9
|
-
["wsUrl", "string"],
|
|
10
|
-
["endpointProfile", "string"],
|
|
11
|
-
["teamId", "string"],
|
|
12
|
-
["runtimeId", "string"],
|
|
13
|
-
["runtimeToken", "string"],
|
|
14
|
-
["localApiPort", "number"],
|
|
15
|
-
["localApiToken", "string"],
|
|
16
|
-
["displayName", "string"],
|
|
17
|
-
]);
|
|
18
|
-
/** Remove obsolete renderer tenant selection from durable daemon identity. */
|
|
19
|
-
export function sanitizeAgentConfig(config) {
|
|
20
|
-
const sanitized = { ...config };
|
|
21
|
-
delete sanitized.teamId;
|
|
22
|
-
delete sanitized.organizationId;
|
|
23
|
-
delete sanitized.currentTeamId;
|
|
24
|
-
delete sanitized.currentOrganizationId;
|
|
25
|
-
return sanitized;
|
|
26
|
-
}
|
|
27
|
-
function isValidAgentConfig(configPath) {
|
|
28
|
-
try {
|
|
29
|
-
const stat = lstatSync(configPath);
|
|
30
|
-
if (!stat.isFile() || stat.isSymbolicLink())
|
|
31
|
-
return false;
|
|
32
|
-
const parsed = JSON.parse(readFileSync(configPath, "utf8"));
|
|
33
|
-
if (!parsed || typeof parsed !== "object" || Array.isArray(parsed))
|
|
34
|
-
return false;
|
|
35
|
-
const entries = Object.entries(parsed);
|
|
36
|
-
return (entries.some(([key]) => AGENT_CONFIG_KEYS.has(key)) &&
|
|
37
|
-
entries.every(([key, value]) => {
|
|
38
|
-
const expectedType = AGENT_CONFIG_KEYS.get(key);
|
|
39
|
-
return expectedType === undefined || typeof value === expectedType;
|
|
40
|
-
}));
|
|
41
|
-
}
|
|
42
|
-
catch {
|
|
43
|
-
return false;
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
export function migrateLegacyAgentConfig(input) {
|
|
47
|
-
const profile = normalizeAgentEndpointProfile(input?.profile ?? null) ?? "production";
|
|
48
|
-
const alanBaseDir = input?.alanBaseDir ?? DEFAULT_AGENT_DIR;
|
|
49
|
-
const legacyBaseDir = input?.legacyBaseDir ?? LEGACY_AGENT_DIR;
|
|
50
|
-
const fileName = resolveAgentConfigFileName(profile);
|
|
51
|
-
const legacyPath = join(legacyBaseDir, fileName);
|
|
52
|
-
const alanPath = join(alanBaseDir, fileName);
|
|
53
|
-
if (existsSync(alanPath) || !isValidAgentConfig(legacyPath))
|
|
54
|
-
return false;
|
|
55
|
-
let copied = false;
|
|
56
|
-
try {
|
|
57
|
-
const sourceDirectoryStat = lstatSync(legacyBaseDir);
|
|
58
|
-
const sourceFileStat = lstatSync(legacyPath);
|
|
59
|
-
if (!sourceDirectoryStat.isDirectory() || sourceDirectoryStat.isSymbolicLink())
|
|
60
|
-
return false;
|
|
61
|
-
const alanDirectoryExisted = existsSync(alanBaseDir);
|
|
62
|
-
if (alanDirectoryExisted) {
|
|
63
|
-
const alanDirectoryStat = lstatSync(alanBaseDir);
|
|
64
|
-
if (!alanDirectoryStat.isDirectory() || alanDirectoryStat.isSymbolicLink())
|
|
65
|
-
return false;
|
|
66
|
-
}
|
|
67
|
-
mkdirSync(alanBaseDir, { recursive: true, mode: sourceDirectoryStat.mode & 0o777 });
|
|
68
|
-
if (!alanDirectoryExisted)
|
|
69
|
-
chmodSync(alanBaseDir, sourceDirectoryStat.mode & 0o777);
|
|
70
|
-
copyFileSync(legacyPath, alanPath, constants.COPYFILE_EXCL);
|
|
71
|
-
copied = true;
|
|
72
|
-
const migrated = sanitizeAgentConfig(JSON.parse(readFileSync(alanPath, "utf8")));
|
|
73
|
-
writeFileSync(alanPath, JSON.stringify(migrated, null, 2));
|
|
74
|
-
chmodSync(alanPath, sourceFileStat.mode & 0o777);
|
|
75
|
-
utimesSync(alanPath, sourceFileStat.atime, sourceFileStat.mtime);
|
|
76
|
-
if (!isValidAgentConfig(alanPath)) {
|
|
77
|
-
unlinkSync(alanPath);
|
|
78
|
-
return false;
|
|
79
|
-
}
|
|
80
|
-
return true;
|
|
81
|
-
}
|
|
82
|
-
catch {
|
|
83
|
-
if (copied && existsSync(alanPath))
|
|
84
|
-
unlinkSync(alanPath);
|
|
85
|
-
return false;
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
export function resolveAgentConfigDirectory(baseDir = DEFAULT_AGENT_DIR) {
|
|
89
|
-
return baseDir;
|
|
90
|
-
}
|
|
91
|
-
export function resolveAgentConfigPath(input) {
|
|
92
|
-
if (input?.explicitPath?.trim())
|
|
93
|
-
return input.explicitPath.trim();
|
|
94
|
-
const profile = normalizeAgentEndpointProfile(typeof input?.profile === "string" ? input.profile : (input?.profile ?? null)) ?? "production";
|
|
95
|
-
const baseDir = input?.baseDir ?? DEFAULT_AGENT_DIR;
|
|
96
|
-
if (input?.baseDir === undefined)
|
|
97
|
-
migrateLegacyAgentConfig({ profile });
|
|
98
|
-
return join(baseDir, resolveAgentConfigFileName(profile));
|
|
99
|
-
}
|
|
100
|
-
export function readConfiguredConfigPath() {
|
|
101
|
-
return process.env.ALAN_AGENT_CONFIG_PATH ?? resolveAgentConfigPath({ profile: "production" });
|
|
102
|
-
}
|
|
103
|
-
export function configExistsAtPath(configPath) {
|
|
104
|
-
return existsSync(configPath);
|
|
105
|
-
}
|
|
106
|
-
export function resolveEndpointProfileFromArgs(args) {
|
|
107
|
-
const index = args.indexOf("--profile");
|
|
108
|
-
const raw = index === -1 ? process.env.ALAN_AGENT_PROFILE : args[index + 1];
|
|
109
|
-
return normalizeAgentEndpointProfile(raw) ?? "production";
|
|
110
|
-
}
|
|
111
|
-
/**
|
|
112
|
-
* Pin the active config file from `--profile` / `ALAN_AGENT_PROFILE` when the
|
|
113
|
-
* caller has not already set `ALAN_AGENT_CONFIG_PATH` (desktop supervisor does).
|
|
114
|
-
*/
|
|
115
|
-
export function bindAgentConfigPathFromArgs(args) {
|
|
116
|
-
const explicit = process.env.ALAN_AGENT_CONFIG_PATH?.trim();
|
|
117
|
-
if (explicit)
|
|
118
|
-
return explicit;
|
|
119
|
-
const profile = resolveEndpointProfileFromArgs(args);
|
|
120
|
-
const configPath = resolveAgentConfigPath({ profile });
|
|
121
|
-
process.env.ALAN_AGENT_CONFIG_PATH = configPath;
|
|
122
|
-
return configPath;
|
|
123
|
-
}
|
|
124
|
-
//# sourceMappingURL=runtime-config.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"runtime-config.js","sourceRoot":"","sources":["../src/runtime-config.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,SAAS,EACT,YAAY,EACZ,UAAU,EACV,SAAS,EACT,SAAS,EACT,YAAY,EACZ,UAAU,EACV,UAAU,EACV,aAAa,GACd,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAEL,6BAA6B,EAC7B,0BAA0B,GAC3B,MAAM,uCAAuC,CAAC;AAI/C,MAAM,iBAAiB,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AAC5D,MAAM,gBAAgB,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;AAE5D,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAA8B;IAC7D,CAAC,QAAQ,EAAE,QAAQ,CAAC;IACpB,CAAC,OAAO,EAAE,QAAQ,CAAC;IACnB,CAAC,iBAAiB,EAAE,QAAQ,CAAC;IAC7B,CAAC,QAAQ,EAAE,QAAQ,CAAC;IACpB,CAAC,WAAW,EAAE,QAAQ,CAAC;IACvB,CAAC,cAAc,EAAE,QAAQ,CAAC;IAC1B,CAAC,cAAc,EAAE,QAAQ,CAAC;IAC1B,CAAC,eAAe,EAAE,QAAQ,CAAC;IAC3B,CAAC,aAAa,EAAE,QAAQ,CAAC;CAC1B,CAAC,CAAC;AAEH,8EAA8E;AAC9E,MAAM,UAAU,mBAAmB,CAAoC,MAAS;IAC9E,MAAM,SAAS,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC;IAChC,OAAO,SAAS,CAAC,MAAM,CAAC;IACxB,OAAO,SAAS,CAAC,cAAc,CAAC;IAChC,OAAO,SAAS,CAAC,aAAa,CAAC;IAC/B,OAAO,SAAS,CAAC,qBAAqB,CAAC;IACvC,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,kBAAkB,CAAC,UAAkB;IAC5C,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC;QACnC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,cAAc,EAAE;YAAE,OAAO,KAAK,CAAC;QAC1D,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAY,CAAC;QACvE,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;YAAE,OAAO,KAAK,CAAC;QACjF,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACvC,OAAO,CACL,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACnD,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;gBAC7B,MAAM,YAAY,GAAG,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBAChD,OAAO,YAAY,KAAK,SAAS,IAAI,OAAO,KAAK,KAAK,YAAY,CAAC;YACrE,CAAC,CAAC,CACH,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,KAIxC;IACC,MAAM,OAAO,GAAG,6BAA6B,CAAC,KAAK,EAAE,OAAO,IAAI,IAAI,CAAC,IAAI,YAAY,CAAC;IACtF,MAAM,WAAW,GAAG,KAAK,EAAE,WAAW,IAAI,iBAAiB,CAAC;IAC5D,MAAM,aAAa,GAAG,KAAK,EAAE,aAAa,IAAI,gBAAgB,CAAC;IAC/D,MAAM,QAAQ,GAAG,0BAA0B,CAAC,OAAO,CAAC,CAAC;IACrD,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;IACjD,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IAC7C,IAAI,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC;QAAE,OAAO,KAAK,CAAC;IAE1E,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,IAAI,CAAC;QACH,MAAM,mBAAmB,GAAG,SAAS,CAAC,aAAa,CAAC,CAAC;QACrD,MAAM,cAAc,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC;QAC7C,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,mBAAmB,CAAC,cAAc,EAAE;YAAE,OAAO,KAAK,CAAC;QAC7F,MAAM,oBAAoB,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC;QACrD,IAAI,oBAAoB,EAAE,CAAC;YACzB,MAAM,iBAAiB,GAAG,SAAS,CAAC,WAAW,CAAC,CAAC;YACjD,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAAE,IAAI,iBAAiB,CAAC,cAAc,EAAE;gBAAE,OAAO,KAAK,CAAC;QAC3F,CAAC;QACD,SAAS,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,mBAAmB,CAAC,IAAI,GAAG,KAAK,EAAE,CAAC,CAAC;QACpF,IAAI,CAAC,oBAAoB;YAAE,SAAS,CAAC,WAAW,EAAE,mBAAmB,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC;QACpF,YAAY,CAAC,UAAU,EAAE,QAAQ,EAAE,SAAS,CAAC,aAAa,CAAC,CAAC;QAC5D,MAAM,GAAG,IAAI,CAAC;QACd,MAAM,QAAQ,GAAG,mBAAmB,CAClC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAA4B,CACtE,CAAC;QACF,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC3D,SAAS,CAAC,QAAQ,EAAE,cAAc,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC;QACjD,UAAU,CAAC,QAAQ,EAAE,cAAc,CAAC,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC;QACjE,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,EAAE,CAAC;YAClC,UAAU,CAAC,QAAQ,CAAC,CAAC;YACrB,OAAO,KAAK,CAAC;QACf,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,IAAI,MAAM,IAAI,UAAU,CAAC,QAAQ,CAAC;YAAE,UAAU,CAAC,QAAQ,CAAC,CAAC;QACzD,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,OAAO,GAAG,iBAAiB;IACrE,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,KAItC;IACC,IAAI,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE;QAAE,OAAO,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;IAClE,MAAM,OAAO,GACX,6BAA6B,CAC3B,OAAO,KAAK,EAAE,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,OAAO,IAAI,IAAI,CAAC,CAC9E,IAAI,YAAY,CAAC;IACpB,MAAM,OAAO,GAAG,KAAK,EAAE,OAAO,IAAI,iBAAiB,CAAC;IACpD,IAAI,KAAK,EAAE,OAAO,KAAK,SAAS;QAAE,wBAAwB,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;IACxE,OAAO,IAAI,CAAC,OAAO,EAAE,0BAA0B,CAAC,OAAO,CAAC,CAAC,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,wBAAwB;IACtC,OAAO,OAAO,CAAC,GAAG,CAAC,sBAAsB,IAAI,sBAAsB,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,CAAC;AACjG,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,UAAkB;IACnD,OAAO,UAAU,CAAC,UAAU,CAAC,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,8BAA8B,CAAC,IAAc;IAC3D,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IACxC,MAAM,GAAG,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;IAC5E,OAAO,6BAA6B,CAAC,GAAG,CAAC,IAAI,YAAY,CAAC;AAC5D,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,2BAA2B,CAAC,IAAc;IACxD,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,sBAAsB,EAAE,IAAI,EAAE,CAAC;IAC5D,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAC9B,MAAM,OAAO,GAAG,8BAA8B,CAAC,IAAI,CAAC,CAAC;IACrD,MAAM,UAAU,GAAG,sBAAsB,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;IACvD,OAAO,CAAC,GAAG,CAAC,sBAAsB,GAAG,UAAU,CAAC;IAChD,OAAO,UAAU,CAAC;AACpB,CAAC"}
|
package/dist/sandbox-outbox.d.ts
DELETED
|
@@ -1,122 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Durable, at-least-once event delivery for the CLOUD sandbox agent path.
|
|
3
|
-
*
|
|
4
|
-
* The local daemon already hardens its `agent.event` stream with
|
|
5
|
-
* {@link EncryptedEventOutbox} (spool-before-send, ack-to-remove, replay on
|
|
6
|
-
* reconnect). The cloud sandbox agent historically emitted `agent_event`
|
|
7
|
-
* fire-and-forget, so a socket blip mid-turn silently dropped stream events.
|
|
8
|
-
*
|
|
9
|
-
* This module reuses the daemon's battle-tested outbox crypto/spool/cap logic
|
|
10
|
-
* and adapts it to the cloud `agent_event` channel WITHOUT touching the daemon
|
|
11
|
-
* path:
|
|
12
|
-
* - key material derives from ALAN_SESSION_TOKEN (the daemon derives from its
|
|
13
|
-
* persisted config key — same 32-byte AES-256-GCM strength, different entry
|
|
14
|
-
* point);
|
|
15
|
-
* - the spool lives at `/tmp/alan-agent-outbox-${conversationId}.enc`;
|
|
16
|
-
* - {@link SandboxOutboxSocket} translates the daemon envelope onto the cloud
|
|
17
|
-
* `agent_event` wire format (event + stable `eventId` + monotonic `seq`) and
|
|
18
|
-
* maps the server's `{ ok, duplicate?, retryable? }` ack back to the outbox's
|
|
19
|
-
* `{ ok, retryable? }` contract.
|
|
20
|
-
*
|
|
21
|
-
* The whole behaviour is gated behind `ALAN_EVENT_OUTBOX_ENABLED === "true"` so
|
|
22
|
-
* the published npm package stays byte-for-byte fire-and-forget until ops turns
|
|
23
|
-
* it on fleet-wide.
|
|
24
|
-
*/
|
|
25
|
-
import { type AgentEventAck, EncryptedEventOutbox, type EventOutboxOptions, type OutboxSocket } from "./event-outbox.js";
|
|
26
|
-
import type { AgentEvent } from "./types.js";
|
|
27
|
-
/** Env flag that activates durable delivery inside the agent process. */
|
|
28
|
-
export declare const SANDBOX_EVENT_OUTBOX_ENV = "ALAN_EVENT_OUTBOX_ENABLED";
|
|
29
|
-
/** True only when ops has explicitly opted the process into durable delivery. */
|
|
30
|
-
export declare function isSandboxEventOutboxEnabled(env?: NodeJS.ProcessEnv): boolean;
|
|
31
|
-
/**
|
|
32
|
-
* Derive the 32-byte AES-256-GCM key for the sandbox outbox from the per-session
|
|
33
|
-
* token. The daemon persists a random key in its config file; the cloud agent is
|
|
34
|
-
* ephemeral and has no such store, so we derive deterministically from the
|
|
35
|
-
* session token it already holds. SHA-256 yields exactly 32 bytes, which is what
|
|
36
|
-
* {@link EncryptedEventOutbox} requires — the crypto strength is unchanged.
|
|
37
|
-
*/
|
|
38
|
-
export declare function deriveSandboxOutboxKey(sessionToken: string): string;
|
|
39
|
-
/** Per-conversation spool location inside the sandbox VM. */
|
|
40
|
-
export declare function sandboxOutboxSpoolPath(conversationId: string): string;
|
|
41
|
-
/**
|
|
42
|
-
* Construct the durable outbox for one conversation. If a prior process left an
|
|
43
|
-
* undecryptable spool (corruption, or a rotated session token), the stale file
|
|
44
|
-
* is removed and a fresh outbox is created so delivery is still hardened going
|
|
45
|
-
* forward instead of crashing the agent.
|
|
46
|
-
*/
|
|
47
|
-
export declare function createSandboxEventOutbox(input: {
|
|
48
|
-
conversationId: string;
|
|
49
|
-
sessionToken: string;
|
|
50
|
-
pushLog?: (message: string) => void;
|
|
51
|
-
options?: EventOutboxOptions;
|
|
52
|
-
spoolPath?: string;
|
|
53
|
-
}): EncryptedEventOutbox;
|
|
54
|
-
/** Server ack shape for the cloud `agent_event` channel (with dedupe signal). */
|
|
55
|
-
export interface SandboxAgentEventAck {
|
|
56
|
-
ok: boolean;
|
|
57
|
-
duplicate?: boolean;
|
|
58
|
-
retryable?: boolean;
|
|
59
|
-
}
|
|
60
|
-
/** Minimal socket.io surface the adapter needs from the live sandbox socket. */
|
|
61
|
-
export interface SandboxEmitSocket {
|
|
62
|
-
readonly connected: boolean;
|
|
63
|
-
emit(event: "agent_event", payload: unknown, ack: (result: SandboxAgentEventAck) => void): unknown;
|
|
64
|
-
}
|
|
65
|
-
/**
|
|
66
|
-
* Bridges {@link EncryptedEventOutbox} (which speaks the daemon's
|
|
67
|
-
* `agent.event` envelope) onto the cloud `agent_event` channel.
|
|
68
|
-
*
|
|
69
|
-
* Every wire payload carries the outbox `eventId` (for server-side dedupe) plus
|
|
70
|
-
* a monotonic `seq` that is stable per event across retries and reconnect
|
|
71
|
-
* replays, so the server can order and de-duplicate an at-least-once stream.
|
|
72
|
-
*/
|
|
73
|
-
export declare class SandboxOutboxSocket implements OutboxSocket {
|
|
74
|
-
private readonly socket;
|
|
75
|
-
private readonly seqByEventId;
|
|
76
|
-
private seqCounter;
|
|
77
|
-
constructor(socket: SandboxEmitSocket);
|
|
78
|
-
get connected(): boolean;
|
|
79
|
-
emit(_event: "agent.event", payload: {
|
|
80
|
-
eventId: string;
|
|
81
|
-
conversationId: string;
|
|
82
|
-
runId: string;
|
|
83
|
-
event: AgentEvent;
|
|
84
|
-
}, acknowledge: (result: AgentEventAck) => void): void;
|
|
85
|
-
}
|
|
86
|
-
/**
|
|
87
|
-
* Owns the durable outbox for a single sandbox conversation and routes every
|
|
88
|
-
* agent event through it when enabled. When disabled (the default) callers fall
|
|
89
|
-
* back to today's fire-and-forget emit — byte-for-byte the prior behaviour.
|
|
90
|
-
*/
|
|
91
|
-
export declare class SandboxEventDispatcher {
|
|
92
|
-
private readonly conversationId;
|
|
93
|
-
private readonly outbox?;
|
|
94
|
-
private readonly outboxSocket?;
|
|
95
|
-
private currentRunId?;
|
|
96
|
-
constructor(input: {
|
|
97
|
-
conversationId: string;
|
|
98
|
-
sessionToken: string;
|
|
99
|
-
enabled: boolean;
|
|
100
|
-
socket: SandboxEmitSocket;
|
|
101
|
-
pushLog?: (message: string) => void;
|
|
102
|
-
onInitError?: (error: unknown) => void;
|
|
103
|
-
options?: EventOutboxOptions;
|
|
104
|
-
spoolPath?: string;
|
|
105
|
-
});
|
|
106
|
-
/** True when events are being durably queued rather than fired-and-forgotten. */
|
|
107
|
-
get active(): boolean;
|
|
108
|
-
/** Set the run id used to bucket per-run caps / terminal condensation. */
|
|
109
|
-
setRunId(runId: string | undefined): void;
|
|
110
|
-
/**
|
|
111
|
-
* Durably deliver one event (enqueue-before-send, remove-on-ack). When the
|
|
112
|
-
* outbox is inactive, defers to `fireAndForget` so behaviour is unchanged.
|
|
113
|
-
*/
|
|
114
|
-
emit(event: AgentEvent, fireAndForget: (event: AgentEvent) => void): void;
|
|
115
|
-
/** Replay un-acked events in order — called on (re)connect before new events. */
|
|
116
|
-
flush(): void;
|
|
117
|
-
/** Reset in-flight state on disconnect so the next flush replays from the head. */
|
|
118
|
-
disconnect(): void;
|
|
119
|
-
/** Diagnostics: number of events still awaiting a server ack. */
|
|
120
|
-
pendingCount(): number;
|
|
121
|
-
}
|
|
122
|
-
//# sourceMappingURL=sandbox-outbox.d.ts.map
|