@sailorbridge/client 0.2.2 → 0.2.4
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/README.md +37 -5
- package/dist/src/cli.js +543 -253
- package/dist/src/cli.js.map +16 -14
- package/package.json +1 -1
package/dist/src/cli.js.map
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": [".dist-releases/
|
|
3
|
+
"sources": [".dist-releases/1784894032002-2676534/src/cli.js", ".dist-releases/1784894032002-2676534/src/auth/host-pairing.js", ".dist-releases/1784894032002-2676534/src/host/repo-tip-reporter.js", ".dist-releases/1784894032002-2676534/src/host/request-consumer.js", ".dist-releases/1784894032002-2676534/src/driver/secrets.js", ".dist-releases/1784894032002-2676534/src/version.js", ".dist-releases/1784894032002-2676534/src/product/start-request.js", ".dist-releases/1784894032002-2676534/src/product/pair.js", ".dist-releases/1784894032002-2676534/src/product/worker.js", ".dist-releases/1784894032002-2676534/src/driver/events.js", ".dist-releases/1784894032002-2676534/src/driver/async-queue.js", ".dist-releases/1784894032002-2676534/src/driver/types.js", ".dist-releases/1784894032002-2676534/src/driver/sdk-loader.js", ".dist-releases/1784894032002-2676534/src/driver/claude/driver.js", ".dist-releases/1784894032002-2676534/src/driver/codex/driver.js", ".dist-releases/1784894032002-2676534/src/driver/liveness-heuristics.js", ".dist-releases/1784894032002-2676534/src/driver/pty/loader.js", ".dist-releases/1784894032002-2676534/src/driver/pty/driver.js", ".dist-releases/1784894032002-2676534/src/driver/tmux/driver.js", ".dist-releases/1784894032002-2676534/src/driver/tmux/launch.js", ".dist-releases/1784894032002-2676534/src/driver/tmux/paste.js", ".dist-releases/1784894032002-2676534/src/driver/tmux/liveness.js", ".dist-releases/1784894032002-2676534/src/driver/tmux/runner.js", ".dist-releases/1784894032002-2676534/src/relay/client.js", ".dist-releases/1784894032002-2676534/src/relay/errors.js", ".dist-releases/1784894032002-2676534/src/worker/protocol.js", ".dist-releases/1784894032002-2676534/src/relay/config.js", ".dist-releases/1784894032002-2676534/src/supervisor/retirement.js", ".dist-releases/1784894032002-2676534/src/supervisor/wait.js", ".dist-releases/1784894032002-2676534/src/supervisor/mailbox.js", ".dist-releases/1784894032002-2676534/src/supervisor/runtime.js", ".dist-releases/1784894032002-2676534/src/host/managed-materialization.js", ".dist-releases/1784894032002-2676534/src/host/memory-stub.js", ".dist-releases/1784894032002-2676534/src/host/credential-guardian.js", ".dist-releases/1784894032002-2676534/src/supervisor/resolve.js", ".dist-releases/1784894032002-2676534/src/supervisor/transcript-backfill.js", ".dist-releases/1784894032002-2676534/src/supervisor/usage-collector.js", ".dist-releases/1784894032002-2676534/src/supervisor/transport.js", ".dist-releases/1784894032002-2676534/src/supervisor/cli-options.js", ".dist-releases/1784894032002-2676534/src/supervisor/tmux-availability.js", ".dist-releases/1784894032002-2676534/src/output-format.js", ".dist-releases/1784894032002-2676534/src/plain-output-fields.js", ".dist-releases/1784894032002-2676534/src/host/cli.js", ".dist-releases/1784894032002-2676534/src/host/service.js", ".dist-releases/1784894032002-2676534/src/host/git-remote.js", ".dist-releases/1784894032002-2676534/src/host/start-spec.js", ".dist-releases/1784894032002-2676534/src/host/workspace.js", ".dist-releases/1784894032002-2676534/src/host/workspace-inventory.js", ".dist-releases/1784894032002-2676534/src/upgrade.js", ".dist-releases/1784894032002-2676534/src/host/auto-update.js", ".dist-releases/1784894032002-2676534/src/host/host-config.js", ".dist-releases/1784894032002-2676534/src/host/host-workspace-cli.js", ".dist-releases/1784894032002-2676534/src/host/agent-env.js", ".dist-releases/1784894032002-2676534/src/host/runtime-env.js", ".dist-releases/1784894032002-2676534/src/host/agent-defaults.js", ".dist-releases/1784894032002-2676534/src/host/claude-settings.js", ".dist-releases/1784894032002-2676534/src/host/engine-auth.js", ".dist-releases/1784894032002-2676534/src/host/context-statusline.js", ".dist-releases/1784894032002-2676534/src/host/scratch-sweeper.js", ".dist-releases/1784894032002-2676534/src/host/launcher.js", ".dist-releases/1784894032002-2676534/src/worker/capability.js", ".dist-releases/1784894032002-2676534/src/host/worker-start-spec.js", ".dist-releases/1784894032002-2676534/src/host/worker-launcher.js", ".dist-releases/1784894032002-2676534/src/worker/client.js", ".dist-releases/1784894032002-2676534/src/worker/errors.js", ".dist-releases/1784894032002-2676534/src/worker/executor.js", ".dist-releases/1784894032002-2676534/src/worker/async-queue.js", ".dist-releases/1784894032002-2676534/src/worker/http.js", ".dist-releases/1784894032002-2676534/src/worker/stream-upload.js", ".dist-releases/1784894032002-2676534/src/host/daemon.js", ".dist-releases/1784894032002-2676534/src/host/enrollment-redeem.js", ".dist-releases/1784894032002-2676534/src/host/tutorial.js", ".dist-releases/1784894032002-2676534/src/events.js", ".dist-releases/1784894032002-2676534/src/text-input.js", ".dist-releases/1784894032002-2676534/src/ask.js", ".dist-releases/1784894032002-2676534/src/task.js", ".dist-releases/1784894032002-2676534/src/team.js", ".dist-releases/1784894032002-2676534/src/memory.js", ".dist-releases/1784894032002-2676534/src/mailbox-send.js", ".dist-releases/1784894032002-2676534/src/reply.js", ".dist-releases/1784894032002-2676534/src/worker-command.js", ".dist-releases/1784894032002-2676534/src/create.js"],
|
|
4
4
|
"sourcesContent": [
|
|
5
|
-
"#!/usr/bin/env node\nimport { hostname } from \"node:os\";\nimport { writeSync } from \"node:fs\";\nimport { DEFAULT_PRODUCT_API_URL, defaultHostCredentialsPath, loadHostCredential, pairHost } from \"./auth/index.js\";\nimport { HOST_RELAY_SUBCOMMANDS, createEnrollmentRedeemer, createRuntimeRecoverer, installHostService, materializeAgentRuntimeDefaults, materializeAgentRuntimeEnv, resolveTeamMemoryEntitlement, runClaudeContextStatusLine, runHostCommandFromCli, runHostDaemon, runHostServiceCommandFromCli, runHostStartRequestCommandFromCli, runHostWorkspaceCommandFromCli, recordHostWorkspace, defaultHostConfigPath, runTutorial, } from \"./host/index.js\";\nimport { runEventsFromCli } from \"./events.js\";\nimport { runAskFromCli } from \"./ask.js\";\nimport { runTaskFromCli } from \"./task.js\";\nimport { runTeamFromCli } from \"./team.js\";\nimport { runMemoryFromCli } from \"./memory.js\";\nimport { sendMailboxFromCli } from \"./mailbox-send.js\";\nimport { sendReplyFromCli } from \"./reply.js\";\nimport { runWorkerFromCli } from \"./worker/index.js\";\nimport { runWorkerCommandFromCli } from \"./worker-command.js\";\nimport { runCreateFromCli, CREATE_SUBCOMMANDS } from \"./create.js\";\nimport { RelayClient, RelayHttpError, RelayNetworkError, RelayProtocolError, loadRelayConfig, } from \"./relay/index.js\";\nimport { AgentSupervisorRuntime, MAILBOX_CLAIM_EXCLUDED_TAGS, SupervisorRetiredDuringStartError, WORKFLOW_OBLIGATION_ACK_REQUIRED_TAGS, assertSingleOwnerConfirmed, createStdioPrompt, ensureTmuxTransport, parseSuperviseArgs, resolveTransport, } from \"./supervisor/index.js\";\nimport { CLIENT_BUILD_DIRTY, CLIENT_GIT_SHA, CLIENT_VERSION, CLIENT_VERSION_LABEL } from \"./version.js\";\nimport { rejectUnusedTextInput } from \"./text-input.js\";\nimport { parseOutputArgs, writeOutput } from \"./output-format.js\";\nimport { renderAckPlain, renderAskPlain, renderDeliveryPlain, renderEnrollmentPlain, renderEventPlain, renderLoginPlain, renderMailboxPlain, renderTaskPlain, } from \"./plain-output-fields.js\";\nconst FORMATTED_COMMANDS = new Set([\n \"ask\", \"create\", \"enrollment\", \"event\", \"host\", \"login\", \"mailbox\", \"memory\", \"reply\", \"task\", \"team\", \"tutorial\", \"worker\",\n]);\nconst SERVICE_INSTALL_COMMAND = \"sailorbridge host service install\";\nconst SERVICE_UNINSTALL_COMMAND = \"sailorbridge host service uninstall\";\nconst SERVICE_INSTALL_FAILED_EXIT_CODE = 3;\nconst SERVICE_SKIP_FLAG = \"--no-service\";\nasync function main(argv) {\n const command = argv[0] ?? \"help\";\n if (command === \"--version\" || command === \"-v\" || command === \"version\") {\n process.stdout.write(`${CLIENT_VERSION_LABEL}\\n`);\n return;\n }\n if (command === \"help\" || command === \"--help\" || command === \"-h\") {\n usage();\n return;\n }\n // `<cmd> --help` prints that command's usage. Must run before output parsing,\n // which otherwise reads --help as a flag needing a value (\"--help requires a\n // value\"). Unknown commands still fall through to their typo error below.\n if (KNOWN_COMMANDS.has(command) && _wantsHelp(argv.slice(1))) {\n _commandUsage(command);\n return;\n }\n const output = FORMATTED_COMMANDS.has(command)\n ? parseOutputArgs(argv.slice(1))\n : { argv: argv.slice(1), format: \"plain\", provided: false };\n argv = [command, ...output.argv];\n _assertKnownCommand(command, argv[1]);\n if (command === \"host\" && argv[1] === \"run\" && output.provided) {\n throw new Error(\"host run does not produce a finite result; remove --format\");\n }\n if (command === \"worker\" && argv[1] === \"serve\" && output.provided) {\n throw new Error(\"worker serve does not produce a finite result; remove --format\");\n }\n await _rejectUnsupportedCliInput(command, argv.slice(1), process.stdin); // intentional — pass the CLI stream to the shared text-input guard\n if (command === \"login\") {\n await _hostLogin(argv.slice(1), output.format);\n return;\n }\n if (command === \"tutorial\") {\n const input = parseFlags(argv.slice(1).filter((arg) => arg !== \"--check\"));\n await runTutorial({\n stdout: process.stdout,\n check: argv.includes(\"--check\"),\n ...(input[\"credentials-path\"] ? { credentialsPath: input[\"credentials-path\"] } : {}),\n apiUrl: _resolveOptionalApiUrl(input[\"api-url\"], process.env.SAILORBRIDGE_API_URL),\n format: output.format,\n });\n return;\n }\n if (command === \"host\" && argv[1] === \"start-request\") {\n await runHostStartRequestCommandFromCli(argv.slice(2), { stdout: process.stdout, stderr: process.stderr, format: output.format });\n return;\n }\n if (command === \"host\" && argv[1] === \"run\") {\n await hostRun(argv.slice(2));\n return;\n }\n if (command === \"host\" && argv[1] === \"statusline\") {\n // Invoked by Claude as its statusLine command (see agent-defaults\n // resolveClaudeStatusLineCommand); reads Claude's JSON on stdin, prints the\n // parseable context line. No relay config needed.\n await runClaudeContextStatusLine(process.stdin, (line) => process.stdout.write(line)); // intentional — stdin is Claude's statusLine JSON payload, not user text\n return;\n }\n if (command === \"host\" && argv[1] === \"service\") {\n await runHostServiceCommandFromCli(argv.slice(2), { stdout: process.stdout, stderr: process.stderr, format: output.format });\n return;\n }\n if (command === \"host\" && argv[1] === \"workspace\") {\n await runHostWorkspaceCommandFromCli(argv.slice(2), { stdout: process.stdout, format: output.format });\n return;\n }\n if (command === \"worker\" && argv[1] === \"serve\") {\n await runWorkerFromCli(argv.slice(2));\n return;\n }\n if (command === \"create\") {\n await runCreateFromCli(argv.slice(1), { stdout: process.stdout, format: output.format });\n return;\n }\n const config = loadRelayConfig();\n const client = new RelayClient(config);\n if (command === \"workflow\" || command === \"refresh\") {\n process.stdout.write(await client.fetchWorkflow({ runtimeView: true }));\n return;\n }\n if (command === \"mailbox\") {\n await _mailbox(client, argv.slice(1), config, output.format);\n return;\n }\n if (command === \"reply\") {\n const result = await sendReplyFromCli(client, argv.slice(1), config, { stdin: process.stdin }); // intentional — inject the CLI stream into text-input-aware reply handling\n writeOutput(process.stdout, result, output.format, () => renderDeliveryPlain(result));\n return;\n }\n if (command === \"event\") {\n const result = await runEventsFromCli(client, argv.slice(1), config);\n writeOutput(process.stdout, result, output.format, () => renderEventPlain(argv[1] ?? \"\", result));\n return;\n }\n if (command === \"ask\") {\n const result = await runAskFromCli(client, argv.slice(1), config, process.stdin); // intentional — inject the CLI stream into text-input-aware ask handling\n const askCommand = argv[1] === \"list\" || argv[1] === \"get\" || argv[1] === \"status\" ? argv[1] : \"create\";\n writeOutput(process.stdout, result, output.format, () => renderAskPlain(askCommand, result));\n return;\n }\n if (command === \"task\") {\n const result = await runTaskFromCli(client, argv.slice(1), config, process.stdin, output.format); // intentional — inject the CLI stream into text-input-aware task handling\n writeOutput(process.stdout, result, output.format, () => renderTaskPlain(argv[1] ?? \"\", result));\n return;\n }\n if (command === \"team\") {\n writeOutput(process.stdout, await runTeamFromCli(client, argv.slice(1), config, output.format), output.format);\n return;\n }\n if (command === \"memory\") {\n writeOutput(process.stdout, await runMemoryFromCli(client, argv.slice(1), config, process.stdin, output.format), output.format); // intentional — inject the CLI stream into text-input-aware memory handling\n return;\n }\n if (command === \"worker\") {\n await runWorkerCommandFromCli(client, argv.slice(1), config, {\n stdout: process.stdout,\n stderr: process.stderr,\n setExitCode: (code) => { process.exitCode = code; },\n }, output.format);\n return;\n }\n if (command === \"enrollment\") {\n await _enrollment(client, argv.slice(1), config.captainId, output.format);\n return;\n }\n if (command === \"host\") {\n await runHostCommandFromCli(client, argv.slice(1), config, { stdout: process.stdout, stderr: process.stderr, format: output.format });\n return;\n }\n if (command === \"supervise\") {\n await supervise(client, argv.slice(1), config);\n return;\n }\n throw new Error(`unknown command: ${command}`);\n}\n// Every top-level command main() dispatches. Checked before any config load so a typo\n// reports the typo instead of whatever configuration the real command would have needed.\nconst KNOWN_COMMANDS = new Set([\n \"ask\", \"create\", \"enrollment\", \"event\", \"host\", \"login\", \"mailbox\", \"memory\", \"refresh\", \"reply\",\n \"supervise\", \"task\", \"team\", \"tutorial\", \"workflow\", \"worker\",\n]);\n// Subcommands each command dispatches, checked in the same pass. An empty set means the\n// command takes flags only. HOST_RELAY_SUBCOMMANDS is the host dispatcher's own source of\n// truth, so a new host subcommand cannot become unreachable here.\nconst SUBCOMMANDS = {\n ask: new Set([\"get\", \"list\", \"status\"]),\n create: CREATE_SUBCOMMANDS,\n enrollment: new Set(),\n event: new Set([\"add\", \"disable\", \"enable\", \"list\", \"rm\"]),\n host: new Set([...HOST_RELAY_SUBCOMMANDS, \"run\", \"service\", \"start-request\", \"statusline\", \"workspace\"]),\n mailbox: new Set([\"ack\", \"claim\", \"peek\", \"send\"]),\n memory: new Set([\"current\", \"index\", \"pin\", \"search\", \"set\", \"unpin\"]),\n supervise: new Set(),\n task: new Set([\n \"activate\", \"close\", \"create\", \"get\", \"history\", \"list\", \"merge-ready\",\n \"needs-changes\", \"park\", \"pause\", \"ready\", \"unpark\",\n ]),\n team: new Set([\"bootstrap\"]),\n worker: new Set([\"job\", \"list\", \"run\", \"serve\"]),\n};\nfunction _assertKnownCommand(command, subcommand) {\n if (!KNOWN_COMMANDS.has(command))\n throw new Error(`unknown command: ${command}`);\n const allowed = SUBCOMMANDS[command];\n if (!allowed || subcommand === undefined || subcommand.startsWith(\"--\"))\n return;\n if (allowed.has(subcommand))\n return;\n if (allowed.size === 0)\n throw new Error(`${command} takes no subcommand: ${subcommand}`);\n throw new Error(`unknown ${command} command: ${subcommand}; expected ${[...allowed].sort().join(\", \")}`);\n}\nasync function _rejectUnsupportedCliInput(command, args, input) {\n const subcommand = args[0];\n const acceptsInput = command === \"reply\"\n || (command === \"host\" && subcommand === \"statusline\")\n || (command === \"mailbox\" && subcommand === \"send\")\n || (command === \"task\" && subcommand === \"create\")\n || (command === \"ask\" && subcommand !== \"list\" && subcommand !== \"get\" && subcommand !== \"status\")\n || (command === \"memory\" && (subcommand === \"set\" || subcommand === \"search\"));\n if (!acceptsInput)\n await rejectUnusedTextInput(input, `${command}${subcommand ? ` ${subcommand}` : \"\"} does not accept stdin`);\n}\nasync function _mailbox(client, argv, config, format) {\n const sub = argv[0] ?? \"peek\";\n if (sub === \"send\") {\n await _sendMailbox(client, argv.slice(1), config, format);\n return;\n }\n if (sub === \"ack\") {\n await _ackMailbox(client, argv.slice(1), format);\n return;\n }\n if (sub !== \"peek\" && sub !== \"claim\")\n throw new Error(\"mailbox command must be peek, claim, ack, or send\");\n await _readMailbox(client, argv, config, format, sub);\n}\nasync function _sendMailbox(client, argv, config, format) {\n const result = await sendMailboxFromCli(client, argv, config, { stdin: process.stdin }); // intentional — inject the CLI stream into text-input-aware mailbox handling\n writeOutput(process.stdout, result, format, () => renderDeliveryPlain(result));\n}\nasync function _ackMailbox(client, argv, format) {\n const messageId = argv[0]?.trim();\n if (!messageId || messageId.startsWith(\"--\"))\n throw new Error(\"mailbox ack requires a message id\");\n const leaseToken = requireFlag(parseFlags(argv.slice(1)), \"lease-token\");\n const result = await client.ackMailbox(messageId, leaseToken);\n writeOutput(process.stdout, result, format, () => renderAckPlain(result));\n}\nasync function _readMailbox(client, argv, config, format, sub) {\n const lease = argv.includes(\"--lease\");\n const agent = argv.find((arg) => !arg.startsWith(\"--\") && arg !== sub) ?? config.agentName;\n if (!agent)\n throw new Error(\"agent name is required\");\n const messages = await client.claimMailbox(agent, {\n wait: false,\n peek: sub === \"peek\",\n includeLeased: lease,\n ...(sub === \"claim\" ? { excludeTags: [...MAILBOX_CLAIM_EXCLUDED_TAGS] } : {}),\n }).then((body) => body.messages);\n const result = { messages };\n writeOutput(process.stdout, result, format, () => renderMailboxPlain(result, WORKFLOW_OBLIGATION_ACK_REQUIRED_TAGS));\n await _acknowledgeClaimedNonObligations(client, messages);\n}\nasync function _acknowledgeClaimedNonObligations(client, messages) {\n for (const message of messages) {\n const token = message.lease_token?.trim();\n if (!token || (message.tag && WORKFLOW_OBLIGATION_ACK_REQUIRED_TAGS.has(message.tag)))\n continue;\n await client.ackMailbox(message.id, token);\n }\n}\nasync function _enrollment(client, argv, captainId, format) {\n const input = parseFlags(argv);\n const session = requireFlag(input, \"session\");\n const agentName = requireFlag(input, \"agent\");\n const role = singleRoleFlag(input, \"roles\");\n const host = input.host ?? hostname();\n const descriptor = await client.createEnrollment({ session, agentName, role, host, name: input.name, captainId });\n writeOutput(process.stdout, descriptor, format, () => renderEnrollmentPlain(descriptor));\n}\nasync function _hostLogin(argv, format) {\n const skipService = _serviceSkipRequested(argv, process.env.SAILORBRIDGE_NO_SERVICE);\n const input = parseFlags(argv.filter((arg) => arg !== SERVICE_SKIP_FLAG));\n const apiUrl = _resolveApiUrl(input[\"api-url\"], process.env.SAILORBRIDGE_API_URL);\n const credentialsPath = input[\"credentials-path\"] ?? process.env.SAILORBRIDGE_CREDENTIALS_FILE ?? defaultHostCredentialsPath();\n const result = await pairHost({\n apiUrl,\n hostId: input[\"host-id\"] ?? process.env.SAILORBRIDGE_HOST_ID,\n displayName: input[\"display-name\"] ?? process.env.SAILORBRIDGE_HOST_DISPLAY_NAME,\n credentialsPath,\n onCode: (code, pairingId, hostId) => _emitPairingCode(code, pairingId, hostId, format),\n });\n const service = skipService\n ? _reportServiceSkipped()\n : await _installHostServiceAfterLogin(input, result.hostId, result.credentialsPath);\n const workspace = await _recordLoginWorkspace(input);\n const output = {\n paired: true,\n pairing_id: result.pairingId,\n host_id: result.hostId,\n key_id: result.credential.key_id,\n captain_id: result.credential.captain_id,\n credentials_path: result.credentialsPath,\n service,\n ...(workspace ? { workspace } : {}),\n };\n writeOutput(process.stdout, output, format, () => renderLoginPlain(output));\n}\n// The pairing code is the one thing the user must read and type into the console,\n// and login then blocks polling for minutes. Emit it on STDOUT in the human (plain)\n// format so `sailorbridge login | tee install.log`, CI logs, and install scripts\n// capture it — the previous stderr-only output left every stdout consumer with an\n// empty stream that read as a hang (the P1). JSON consumers own stdout for the\n// result object, so their progress stays on stderr. writeSync (not the async\n// stdout/stderr streams) guarantees the line lands immediately, before the\n// long-poll, under any stream form — pipe, file, or TTY. (The CLI has no i18n\n// framework; these strings are English, consistent with every other CLI message.)\nfunction _emitPairingCode(code, pairingId, hostId, format) {\n const fd = format === \"json\" ? 2 : 1;\n writeSync(fd, `Enter this SailorBridge host pairing code in the console: ${code}\\n`);\n writeSync(fd, `Host: ${hostId}\\n`);\n // The internal pairing id means nothing to the user typing the code; keep it out\n // of the default output and behind a debug opt-in.\n if (_debugEnabled())\n writeSync(fd, `Pairing id (debug): ${pairingId}\\n`);\n}\nfunction _debugEnabled() {\n const value = process.env.SAILORBRIDGE_DEBUG?.trim().toLowerCase();\n return !!value && value !== \"0\" && value !== \"false\";\n}\n/** Explicit opt-out for containers, CI images, and hosts without a service manager. */\nfunction _serviceSkipRequested(argv, env) {\n if (argv.includes(SERVICE_SKIP_FLAG))\n return true;\n const value = env?.trim().toLowerCase();\n return !!value && value !== \"0\" && value !== \"false\";\n}\nfunction _reportServiceSkipped() {\n process.stderr.write(`Skipped the host service install (${SERVICE_SKIP_FLAG}).\\n`);\n process.stderr.write(`This host cannot accept console-created workers or agents until you run: ${SERVICE_INSTALL_COMMAND}\\n`);\n return { installed: false, skipped: true, manual_command: SERVICE_INSTALL_COMMAND };\n}\n/** Pairing already succeeded here, so a service failure degrades the exit code instead of failing login. */\nasync function _installHostServiceAfterLogin(input, hostId, credentialsPath) {\n try {\n const report = await installHostService({\n credentialsPath,\n hostId,\n ...(input.binary ? { binary: input.binary } : {}),\n ...(input[\"display-name\"] ? { displayName: input[\"display-name\"] } : {}),\n ...(input[\"service-dir\"] ? { serviceDir: input[\"service-dir\"] } : {}),\n ...(input[\"service-name\"] ? { serviceName: input[\"service-name\"] } : {}),\n });\n return _reportServiceInstalled(report);\n }\n catch (error) {\n return _reportServiceInstallFailed(error instanceof Error ? error.message : String(error));\n }\n}\nfunction _reportServiceInstalled(report) {\n process.stderr.write(`Installed the SailorBridge host service (${report.platform}) at ${report.file}; it is running now and will restart with your session.\\n`);\n process.stderr.write(`To remove it, run: ${SERVICE_UNINSTALL_COMMAND}\\n`);\n if (report.note)\n process.stderr.write(`${report.note}\\n`);\n return {\n installed: true,\n path: report.file,\n uninstall_command: SERVICE_UNINSTALL_COMMAND,\n linger: report.linger,\n ...(report.note ? { note: report.note } : {}),\n };\n}\nfunction _reportServiceInstallFailed(reason) {\n process.stderr.write(`Paired successfully, but the host service was not installed: ${reason}\\n`);\n process.stderr.write(`This host is offline and cannot receive console tasks. Run: ${SERVICE_INSTALL_COMMAND}\\n`);\n process.exitCode = SERVICE_INSTALL_FAILED_EXIT_CODE; // intentional — pairing succeeded, so signal the partial failure instead of throwing\n return { installed: false, reason, manual_command: SERVICE_INSTALL_COMMAND };\n}\n// Records the login directory (or an explicit --workspace) as this host's default\n// workspace so the daemon reports it — the fix for \"host details always show No\n// reported workspaces\". Pairing already succeeded, so a workspace-recording\n// problem (e.g. the directory is unreadable) degrades to a stderr warning rather\n// than failing login, mirroring the service-install stance.\nasync function _recordLoginWorkspace(input) {\n const target = input.workspace ?? process.cwd();\n const configPath = input[\"host-config-path\"] ?? process.env.SAILORBRIDGE_HOST_CONFIG_FILE ?? defaultHostConfigPath();\n try {\n const result = await recordHostWorkspace(target, configPath);\n if (result.added)\n process.stderr.write(`Recorded this host's default workspace: ${result.path}\\n`);\n if (result.note)\n process.stderr.write(`${result.note}\\n`);\n return { path: result.path, git: result.git };\n }\n catch (error) {\n process.stderr.write(`Paired successfully, but did not record a default workspace: ${error instanceof Error ? error.message : String(error)}\\n`);\n return undefined;\n }\n}\nfunction _resolveApiUrl(flag, env) {\n return _resolveOptionalApiUrl(flag, env) ?? DEFAULT_PRODUCT_API_URL;\n}\nfunction _resolveOptionalApiUrl(flag, env) {\n if (flag !== undefined) {\n const trimmed = flag.trim();\n if (!trimmed) {\n throw new Error(`product API URL is empty; unset --api-url/SAILORBRIDGE_API_URL to use SailorBridge at ${DEFAULT_PRODUCT_API_URL}.`);\n }\n return trimmed;\n }\n // intentional — blank SAILORBRIDGE_API_URL is treated as unset; only an explicit blank flag fails.\n return env?.trim() || undefined;\n}\nasync function hostRun(argv) {\n const input = parseFlags(argv);\n const credentialsPath = input[\"credentials-path\"] ?? process.env.SAILORBRIDGE_CREDENTIALS_FILE ?? defaultHostCredentialsPath();\n const credential = await loadHostCredential(credentialsPath);\n const relayUrl = credential.relay_url ?? process.env.SAILORBRIDGE_RELAY_URL;\n if (!relayUrl)\n throw new Error(\"host credential has no relay_url and SAILORBRIDGE_RELAY_URL is unset\");\n const apiUrl = input[\"api-url\"] ?? credential.api_url;\n const relay = new RelayClient({ relayUrl, bearerToken: credential.token });\n const resolveCredential = createEnrollmentRedeemer({ apiUrl, hostToken: credential.token });\n const recoverRuntimes = createRuntimeRecoverer({ apiUrl, hostToken: credential.token });\n const controller = new AbortController();\n const stop = () => controller.abort();\n process.once(\"SIGINT\", stop);\n process.once(\"SIGTERM\", stop);\n const emit = (event, fields = {}) => {\n process.stderr.write(`${JSON.stringify({ ts: new Date().toISOString(), event, host_id: credential.host_id, ...fields })}\\n`);\n };\n await runHostDaemon({\n relay,\n resolveCredential,\n recoverRuntimes,\n captainId: String(credential.captain_id),\n hostId: input[\"host-id\"] ?? credential.host_id,\n displayName: input[\"display-name\"] ?? credential.host_id,\n signal: controller.signal,\n redactSecrets: [credential.token],\n ...(input[\"workspace-root\"] ? { workspaceRoot: input[\"workspace-root\"] } : {}),\n logger: emit,\n });\n}\nasync function supervise(client, argv, config) {\n const parsed = parseSuperviseArgs(argv);\n assertSingleOwnerConfirmed(parsed);\n const emit = (event, fields = {}) => {\n process.stderr.write(`${JSON.stringify({ ts: new Date().toISOString(), event, agent: parsed.agentName, ...fields })}\\n`);\n };\n const resolveOptions = {\n cli: parsed.cli,\n cwd: parsed.cwd,\n transport: parsed.transport,\n command: parsed.command,\n tmuxSession: parsed.tmuxSession,\n agentName: parsed.agentName,\n driverOptions: parsed.driverOptions,\n };\n let resolved = resolveTransport(resolveOptions);\n if (resolved.transport === \"tmux\") {\n await ensureTmuxTransport({\n explicit: parsed.transport === \"tmux\",\n platform: process.platform,\n io: createStdioPrompt(),\n log: emit,\n });\n }\n const { env, credentialGuard } = await materializeAgentRuntimeEnv({\n agentName: parsed.agentName,\n engine: parsed.cli,\n hostEnv: process.env,\n teamMemoryEntitled: await resolveTeamMemoryEntitlement(client, config.captainId, config.session),\n descriptor: {\n key_id: \"direct-supervise\",\n relay_url: config.relayUrl,\n token: config.bearerToken,\n ...(config.captainId ? { captain_id: config.captainId } : {}),\n agent_name: parsed.agentName,\n session: config.session ?? \"\",\n role: \"operator\",\n roles: [\"operator\"],\n host: hostname(),\n created_at: \"\",\n },\n });\n await _trustSuperviseWorkspace(parsed.agentName, parsed.cli, env, parsed.cwd);\n const runtime = new AgentSupervisorRuntime({\n agentName: parsed.agentName,\n displayName: parsed.agentName,\n cli: parsed.cli,\n transport: resolved.transport,\n tmuxSession: resolved.tmuxSession,\n session: config.session,\n driver: resolved.createDriver(),\n relay: client,\n captainId: config.captainId,\n ...(credentialGuard ? { credentialGuard } : {}), // null for env-based auth — no credential file to guard\n model: _configuredModel(parsed.cli, parsed.driverOptions),\n startOptions: {\n agentId: parsed.agentName,\n cwd: parsed.cwd,\n env,\n command: resolved.command,\n },\n waitTimeoutSec: parsed.waitTimeoutSec,\n livenessIntervalMs: parsed.livenessIntervalMs,\n relaunchMaxFailures: parsed.relaunchMaxFailures,\n logger: emit,\n });\n const stopHandlers = _installRuntimeStopHandlers(runtime, emit);\n try {\n try {\n await runtime.start();\n }\n catch (error) {\n if (!stopHandlers.isStopping())\n throw error;\n if (_isStopInducedStartAbort(error)) {\n _logSuperviseError(emit, \"supervise_start_stopped\", error);\n }\n else {\n process.exitCode = 1;\n _logSuperviseError(emit, \"supervise_start_failed_during_stop\", error);\n }\n await stopHandlers.wait();\n return;\n }\n process.stderr.write(JSON.stringify({\n event: \"supervise_started\",\n agent: parsed.agentName,\n ...(config.captainId ? { captain_id: config.captainId } : {}),\n client_version: CLIENT_VERSION,\n client_git_sha: CLIENT_GIT_SHA,\n client_build_dirty: CLIENT_BUILD_DIRTY,\n cli: parsed.cli,\n transport: resolved.transport,\n relay: config.relayUrl,\n }) + \"\\n\");\n await stopHandlers.wait();\n }\n finally {\n stopHandlers.dispose();\n }\n}\nfunction _configuredModel(cli, options) {\n return cli === \"claude\" ? options.claude?.model : cli === \"codex\" ? options.codex?.model : undefined;\n}\nasync function _trustSuperviseWorkspace(agentName, engine, env, cwd) {\n if (engine === \"claude\") {\n const homeDir = env.CLAUDE_CONFIG_DIR;\n if (!homeDir)\n throw new Error(\"claude runtime home missing after runtime materialization\");\n await materializeAgentRuntimeDefaults({ agentName, engine, homeDir, workspaceDir: cwd });\n return;\n }\n if (engine === \"codex\") {\n const homeDir = env.CODEX_HOME;\n if (!homeDir)\n throw new Error(\"codex runtime home missing after runtime materialization\");\n await materializeAgentRuntimeDefaults({ agentName, engine, homeDir, workspaceDir: cwd });\n }\n}\nfunction _installRuntimeStopHandlers(runtime, log) {\n let stopping = false;\n let resolveStop;\n const stopped = new Promise((resolve) => { resolveStop = resolve; });\n const stopOnce = () => {\n if (stopping)\n return;\n stopping = true;\n void _stopRuntime(runtime, log).finally(resolveStop);\n };\n process.once(\"SIGINT\", stopOnce);\n process.once(\"SIGTERM\", stopOnce);\n // SIGHUP arrives when the supervisor's own tmux session/terminal dies; node's\n // default silent exit would orphan the member session and violate fail-fast.\n process.once(\"SIGHUP\", stopOnce);\n return {\n isStopping: () => stopping,\n wait: () => stopped,\n dispose: () => {\n process.off(\"SIGINT\", stopOnce);\n process.off(\"SIGTERM\", stopOnce);\n process.off(\"SIGHUP\", stopOnce);\n },\n };\n}\nasync function _stopRuntime(runtime, log) {\n try {\n await runtime.stop();\n }\n catch (error) {\n process.exitCode = 1;\n _logSuperviseError(log, \"supervise_stop_failed\", error);\n }\n}\nfunction _logSuperviseError(log, event, error) {\n log(event, { error: error instanceof Error ? error.message : String(error) });\n}\nfunction _isStopInducedStartAbort(error) {\n return error instanceof SupervisorRetiredDuringStartError;\n}\nfunction parseFlags(argv) {\n const values = {};\n for (let i = 0; i < argv.length; i += 1) {\n const item = argv[i];\n if (!item.startsWith(\"--\"))\n throw new Error(`unexpected argument: ${item}`);\n const key = item.slice(2);\n const value = argv[i + 1];\n if (!value || value.startsWith(\"--\"))\n throw new Error(`--${key} requires a value`);\n values[key] = value;\n i += 1;\n }\n return values;\n}\nfunction requireFlag(values, key) {\n const value = values[key]?.trim();\n if (!value)\n throw new Error(`--${key} is required`);\n return value;\n}\nfunction singleRoleFlag(values, key) {\n const roles = requireFlag(values, key).split(\",\").map((role) => role.trim()).filter(Boolean);\n if (roles.length !== 1)\n throw new Error(`--${key} must contain exactly one role`);\n return roles[0];\n}\nfunction usage() {\n process.stdout.write(_usageText());\n}\n// Print just the requested command's lines from the single usage source, so\n// `<cmd> --help` reuses the top-level usage instead of a second hand-written copy.\nfunction _commandUsage(command) {\n const entry = new RegExp(`^ {2}(?:sailorbridge|sail) ${command}(?: |$)`);\n const selected = [];\n let capturing = false;\n for (const line of _usageText().split(\"\\n\")) {\n if (entry.test(line)) {\n selected.push(line);\n capturing = true;\n continue;\n }\n if (capturing && /^ {4}\\S/.test(line)) {\n selected.push(line);\n continue;\n }\n capturing = false;\n }\n if (selected.length === 0) {\n usage();\n return;\n }\n process.stdout.write(`Usage:\\n${selected.join(\"\\n\")}\\n`);\n}\nfunction _wantsHelp(args) {\n return args.includes(\"--help\") || args.includes(\"-h\");\n}\nfunction _usageText() {\n return `Usage:\n sailorbridge workflow\n sailorbridge refresh\n sailorbridge --version\n sailorbridge tutorial [--check] [--api-url URL] [--credentials-path PATH] (default API: ${DEFAULT_PRODUCT_API_URL})\n sailorbridge login [--api-url URL] [--host-id H] [--display-name N] [--credentials-path PATH] [--binary PATH] [${SERVICE_SKIP_FLAG}] [--service-dir DIR] [--service-name NAME] (default API: ${DEFAULT_PRODUCT_API_URL})\n pairs this host, then installs and starts the host service so the console can start workers and agents here.\n ${SERVICE_SKIP_FLAG} (or SAILORBRIDGE_NO_SERVICE=1) pairs only, for containers and CI images without a service manager.\n Exit ${SERVICE_INSTALL_FAILED_EXIT_CODE} means pairing succeeded but the service did not install; the host remains offline and cannot receive console tasks. Run '${SERVICE_INSTALL_COMMAND}'.\n sailorbridge mailbox peek [agent]\n sailorbridge mailbox claim [agent] [--lease]\n sailorbridge mailbox ack MESSAGE_ID --lease-token TOKEN\n sailorbridge mailbox send (--to-agents A[,B] | --to-roles R[,S] [--to-host H[,K]] | --to-host H[,K]) [--session S] [--tag T] [--task-id ID --task-version N [--commit SHA]] [--body-file PATH|-]\n sailorbridge reply [--session S] --agent A --in-reply-to MESSAGE_ID TAG [--body-file PATH|- | BODY...|-]\n sailorbridge event add --at HH:MM --tz IANA --days once|daily|weekday --message TEXT [--run-date YYYY-MM-DD] [--tag T] [--disabled] [--session S]\n sailorbridge event list [--session S]\n sailorbridge event enable|disable|rm EVENT_ID [--session S]\n sailorbridge ask --title TITLE --option LABEL::DESCRIPTION --option LABEL::DESCRIPTION --recommend A --reason TEXT [--reason TEXT] [--body-file PATH|-] [--session S]\n sailorbridge ask list [--session S]\n sailorbridge ask get|status DECISION_ID [--session S]\n sailorbridge task create [--description TEXT|-|--body-file PATH|-|--description-file PATH|-] [--pair PAIR] [--draft|--status draft|new] [--type feature|bug|docs|chore] [--priority high|normal|low] [--level d1|d2|d3|d4] [--depends TASK[,TASK]] [--artifact-id ID] [--image PATH] [--session S]\n sailorbridge task list [--all|--pair PAIR] [--status STATUS] [--after CURSOR] [--limit 1..100] [--query TEXT] [--format plain|json] [--session S]\n sailorbridge task get TASK_ID [--session S]\n sailorbridge task history TASK_ID [--limit 1..200] [--after CURSOR|--before CURSOR|--all] [--format plain|json] [--session S]\n sailorbridge task activate TASK_ID [--session S]\n sailorbridge task pause TASK_ID [--session S]\n sailorbridge task merge-ready TASK_ID [--commit SHA] [--version N] [--findings P0=n,P1=n,P2=n,P3=n] [--session S] (alias: task ready)\n sailorbridge task needs-changes TASK_ID --reason TEXT [--commit SHA] [--version N] [--findings P0=n,P1=n,P2=n,P3=n] [--session S]\n sailorbridge task park TASK_ID --resume-condition TEXT [--resume-dependency TASK_ID] [--owner-of-resume AGENT] [--version N] [--session S]\n sailorbridge task unpark TASK_ID [--version N] [--session S]\n sailorbridge task close TASK_ID [--version N] [--findings P0=n,P1=n,P2=n,P3=n] [--session S]\n sailorbridge create team --name DISPLAY_NAME --template classic3 [--host H] [--workspace PATH] [--engine claude|codex]\n creates an auto-numbered team and starts every template slot on one paired online host.\n sailorbridge create pair [--host H] [--workspace PATH|GIT_URL] [--engine claude|codex] [--name N] [--session S]\n builds a writer+reviewer dev pair on a paired online host; workspace defaults to the host's reported one.\n sailorbridge create planner [--host H] [--workspace PATH] [--engine claude|codex] [--session S]\n adds the team's single planner through the console slot + start flow.\n sailorbridge create tester [--host H] [--workspace PATH] [--engine claude|codex] [--session S]\n adds one tester through the console slot + start flow.\n sailorbridge create worker --name N --concurrency N [--host H] [--workspace PATH] [--session S]\n starts a worker on a paired online host. All create commands: [--api-url URL] [--credentials-path PATH] [--format plain|json]\n sailorbridge team bootstrap --template classic3 --slot SLOT=HOST:claude|codex [--slot ...] [--session S]\n sail memory set KEY (--stdin | --file PATH) --source SOURCE\n sail memory search [QUERY]\n sail memory current KEY\n sail memory pin KEY (moderator/captain only)\n sail memory unpin KEY (moderator/captain only)\n sail memory index\n sailorbridge enrollment --session S --agent A --roles operator [--host H] [--name N]\n sailorbridge host list|register|heartbeat [--host-id H] [--display-name N]\n sailorbridge host consume --once --dry-run-start [--host-id H] [--display-name N]\n sailorbridge host service install|uninstall|status [--binary PATH] [--credentials-path PATH] [--workspace-root DIR] [--service-dir DIR] [--service-name NAME]\n sailorbridge host start-request [--credentials-path PATH] [--api-url URL] [--access-token TOKEN] --team T [--host-id H] --agent A --engine codex --roles operator --workspace-mode fresh|git [--git-url URL]\n sailorbridge host run [--credentials-path PATH] [--api-url URL] [--host-id H] [--display-name N] [--workspace-root DIR]\n sailorbridge worker list [--format plain|json]\n sailorbridge worker run [--detach] --worker NAME [--timeout SEC] [--format plain|json] -- ARGV...\n sailorbridge worker job ID [--format plain|json]\n list/run/job require SAILORBRIDGE_CAPTAIN_ID; list/run also require SAILORBRIDGE_SESSION.\n sailorbridge worker serve [--relay-url URL] [--worker NAME] [--workdir DIR] [--max-concurrency N]\n sailorbridge supervise --agent A --cli claude|codex --cwd DIR --i-own-this-agent [--transport tmux] [--tmux-session S] [-- COMMAND...]\n\nEnvironment:\n SAILORBRIDGE_RELAY_URL / SAILORBRIDGE_TOKEN\n SAILORBRIDGE_API_URL overrides the default product API for login/tutorial (${DEFAULT_PRODUCT_API_URL}); --api-url wins\n SAILORBRIDGE_AGENT_NAME\n SAILORBRIDGE_CAPTAIN_ID is required for worker list/run/job.\n SAILORBRIDGE_SESSION is also required for worker list/run.\n SAILORBRIDGE_HOST_ID / SAILORBRIDGE_HOST_DISPLAY_NAME\n SAILORBRIDGE_NO_SERVICE=1 makes login skip the host service install\n SAILORBRIDGE_DEBUG=1 prints the internal pairing id during login (diagnostics only)\n Only SAILORBRIDGE_* relay configuration is read.\n\nOutput:\n Data-producing commands accept --format plain|json (default: plain).\n`;\n}\nmain(process.argv.slice(2)).catch((error) => {\n const message = error instanceof Error ? error.message : String(error);\n process.stderr.write(`sailorbridge: Error: ${message}\\n${_nextStep(error, message)}\\n`);\n process.exitCode = 1;\n});\nfunction _nextStep(error, message) {\n const task = /\\bRun (sail task get [^\\s.,;]+)/u.exec(message);\n if (task)\n return `Next: run ${task[1]}`;\n const status = error instanceof RelayHttpError ? error.status : _httpStatus(message);\n if (status === 401 || status === 403)\n return \"Next: verify SAILORBRIDGE_TOKEN and permissions, then retry the command.\";\n if (status !== null && status >= 500)\n return \"Next: retry the command after the SailorBridge relay recovers.\";\n if (error instanceof RelayNetworkError || _looksLikeNetworkFailure(message)) {\n return \"Next: check relay connectivity, then retry the command.\";\n }\n if (error instanceof RelayProtocolError)\n return \"Next: verify relay/client version compatibility, then retry the command.\";\n return \"Next: run sail --help\";\n}\nfunction _httpStatus(message) {\n const match = /\\bHTTP ([1-5][0-9]{2})\\b/u.exec(message);\n return match ? Number(match[1]) : null;\n}\nfunction _looksLikeNetworkFailure(message) {\n return /fetch failed|network|ECONN(?:REFUSED|RESET)|ENOTFOUND|ETIMEDOUT/iu.test(message);\n}\n//# sourceMappingURL=cli.js.map",
|
|
5
|
+
"#!/usr/bin/env node\nimport { hostname } from \"node:os\";\nimport { writeSync } from \"node:fs\";\nimport { DEFAULT_PRODUCT_API_URL, defaultHostCredentialsPath, loadHostCredential, pairHost } from \"./auth/index.js\";\nimport { HOST_RELAY_SUBCOMMANDS, createEnrollmentRedeemer, createRuntimeRecoverer, installHostService, materializeAgentRuntimeDefaults, materializeAgentRuntimeEnv, resolveTeamMemoryEntitlement, runClaudeContextStatusLine, runHostCommandFromCli, runHostDaemon, runHostServiceCommandFromCli, runHostStartRequestCommandFromCli, runHostWorkspaceCommandFromCli, recordHostWorkspace, defaultHostConfigPath, loadHostConfig, runTutorial, } from \"./host/index.js\";\nimport { runEventsFromCli } from \"./events.js\";\nimport { runAskFromCli } from \"./ask.js\";\nimport { runTaskFromCli } from \"./task.js\";\nimport { runTeamFromCli } from \"./team.js\";\nimport { runMemoryFromCli } from \"./memory.js\";\nimport { sendMailboxFromCli } from \"./mailbox-send.js\";\nimport { sendReplyFromCli } from \"./reply.js\";\nimport { runWorkerFromCli } from \"./worker/index.js\";\nimport { runWorkerCommandFromCli } from \"./worker-command.js\";\nimport { runCreateFromCli, CREATE_SUBCOMMANDS } from \"./create.js\";\nimport { RelayClient, RelayHttpError, RelayNetworkError, RelayProtocolError, loadRelayConfig, } from \"./relay/index.js\";\nimport { AgentSupervisorRuntime, MAILBOX_CLAIM_EXCLUDED_TAGS, SupervisorRetiredDuringStartError, WORKFLOW_OBLIGATION_ACK_REQUIRED_TAGS, assertSingleOwnerConfirmed, createStdioPrompt, ensureTmuxTransport, parseSuperviseArgs, resolveTransport, } from \"./supervisor/index.js\";\nimport { CLIENT_BUILD_DIRTY, CLIENT_GIT_SHA, CLIENT_VERSION, CLIENT_VERSION_LABEL } from \"./version.js\";\nimport { runUpgradeFromCli } from \"./upgrade.js\";\nimport { rejectUnusedTextInput } from \"./text-input.js\";\nimport { parseOutputArgs, writeOutput } from \"./output-format.js\";\nimport { renderAckPlain, renderAskPlain, renderDeliveryPlain, renderEnrollmentPlain, renderEventPlain, renderLoginPlain, renderMailboxPlain, renderTaskPlain, } from \"./plain-output-fields.js\";\nconst FORMATTED_COMMANDS = new Set([\n \"ask\", \"create\", \"enrollment\", \"event\", \"host\", \"login\", \"mailbox\", \"memory\", \"reply\", \"task\", \"team\", \"tutorial\", \"worker\",\n]);\nconst SERVICE_INSTALL_COMMAND = \"sailorbridge host service install\";\nconst SERVICE_UNINSTALL_COMMAND = \"sailorbridge host service uninstall\";\nconst SERVICE_INSTALL_FAILED_EXIT_CODE = 3;\nconst SERVICE_SKIP_FLAG = \"--no-service\";\nasync function main(argv) {\n const command = argv[0] ?? \"help\";\n if (command === \"--version\" || command === \"-v\" || command === \"version\") {\n process.stdout.write(`${CLIENT_VERSION_LABEL}\\n`);\n return;\n }\n if (command === \"help\" || command === \"--help\" || command === \"-h\") {\n usage();\n return;\n }\n // `<cmd> --help` prints that command's usage. Must run before output parsing,\n // which otherwise reads --help as a flag needing a value (\"--help requires a\n // value\"). Unknown commands still fall through to their typo error below.\n if (KNOWN_COMMANDS.has(command) && _wantsHelp(argv.slice(1))) {\n _commandUsage(command);\n return;\n }\n const output = FORMATTED_COMMANDS.has(command)\n ? parseOutputArgs(argv.slice(1))\n : { argv: argv.slice(1), format: \"plain\", provided: false };\n argv = [command, ...output.argv];\n _assertKnownCommand(command, argv[1]);\n if (command === \"host\" && argv[1] === \"run\" && output.provided) {\n throw new Error(\"host run does not produce a finite result; remove --format\");\n }\n if (command === \"worker\" && argv[1] === \"serve\" && output.provided) {\n throw new Error(\"worker serve does not produce a finite result; remove --format\");\n }\n await _rejectUnsupportedCliInput(command, argv.slice(1), process.stdin); // intentional — pass the CLI stream to the shared text-input guard\n if (command === \"login\") {\n await _hostLogin(argv.slice(1), output.format);\n return;\n }\n if (command === \"tutorial\") {\n const input = parseFlags(argv.slice(1).filter((arg) => arg !== \"--check\"));\n await runTutorial({\n stdout: process.stdout,\n check: argv.includes(\"--check\"),\n ...(input[\"credentials-path\"] ? { credentialsPath: input[\"credentials-path\"] } : {}),\n apiUrl: _resolveOptionalApiUrl(input[\"api-url\"], process.env.SAILORBRIDGE_API_URL),\n format: output.format,\n });\n return;\n }\n if (command === \"upgrade\") {\n await runUpgradeFromCli(argv.slice(1), { stdout: process.stdout });\n return;\n }\n if (command === \"host\" && argv[1] === \"start-request\") {\n await runHostStartRequestCommandFromCli(argv.slice(2), { stdout: process.stdout, stderr: process.stderr, format: output.format });\n return;\n }\n if (command === \"host\" && argv[1] === \"run\") {\n await hostRun(argv.slice(2));\n return;\n }\n if (command === \"host\" && argv[1] === \"statusline\") {\n // Invoked by Claude as its statusLine command (see agent-defaults\n // resolveClaudeStatusLineCommand); reads Claude's JSON on stdin, prints the\n // parseable context line. No relay config needed.\n await runClaudeContextStatusLine(process.stdin, (line) => process.stdout.write(line)); // intentional — stdin is Claude's statusLine JSON payload, not user text\n return;\n }\n if (command === \"host\" && argv[1] === \"service\") {\n await runHostServiceCommandFromCli(argv.slice(2), { stdout: process.stdout, stderr: process.stderr, format: output.format });\n return;\n }\n if (command === \"host\" && argv[1] === \"workspace\") {\n await runHostWorkspaceCommandFromCli(argv.slice(2), { stdout: process.stdout, format: output.format });\n return;\n }\n if (command === \"worker\" && argv[1] === \"serve\") {\n await runWorkerFromCli(argv.slice(2));\n return;\n }\n if (command === \"create\") {\n await runCreateFromCli(argv.slice(1), { stdout: process.stdout, format: output.format });\n return;\n }\n const config = loadRelayConfig();\n const client = new RelayClient(config);\n if (command === \"workflow\" || command === \"refresh\") {\n process.stdout.write(await client.fetchWorkflow({ runtimeView: true }));\n return;\n }\n if (command === \"mailbox\") {\n await _mailbox(client, argv.slice(1), config, output.format);\n return;\n }\n if (command === \"reply\") {\n const result = await sendReplyFromCli(client, argv.slice(1), config, { stdin: process.stdin }); // intentional — inject the CLI stream into text-input-aware reply handling\n writeOutput(process.stdout, result, output.format, () => renderDeliveryPlain(result));\n return;\n }\n if (command === \"event\") {\n const result = await runEventsFromCli(client, argv.slice(1), config);\n writeOutput(process.stdout, result, output.format, () => renderEventPlain(argv[1] ?? \"\", result));\n return;\n }\n if (command === \"ask\") {\n const result = await runAskFromCli(client, argv.slice(1), config, process.stdin); // intentional — inject the CLI stream into text-input-aware ask handling\n const askCommand = argv[1] === \"list\" || argv[1] === \"get\" || argv[1] === \"status\" ? argv[1] : \"create\";\n writeOutput(process.stdout, result, output.format, () => renderAskPlain(askCommand, result));\n return;\n }\n if (command === \"task\") {\n const result = await runTaskFromCli(client, argv.slice(1), config, process.stdin, output.format); // intentional — inject the CLI stream into text-input-aware task handling\n writeOutput(process.stdout, result, output.format, () => renderTaskPlain(argv[1] ?? \"\", result));\n return;\n }\n if (command === \"team\") {\n writeOutput(process.stdout, await runTeamFromCli(client, argv.slice(1), config, output.format), output.format);\n return;\n }\n if (command === \"memory\") {\n writeOutput(process.stdout, await runMemoryFromCli(client, argv.slice(1), config, process.stdin, output.format), output.format); // intentional — inject the CLI stream into text-input-aware memory handling\n return;\n }\n if (command === \"worker\") {\n await runWorkerCommandFromCli(client, argv.slice(1), config, {\n stdout: process.stdout,\n stderr: process.stderr,\n setExitCode: (code) => { process.exitCode = code; },\n }, output.format);\n return;\n }\n if (command === \"enrollment\") {\n await _enrollment(client, argv.slice(1), config.captainId, output.format);\n return;\n }\n if (command === \"host\") {\n await runHostCommandFromCli(client, argv.slice(1), config, { stdout: process.stdout, stderr: process.stderr, format: output.format });\n return;\n }\n if (command === \"supervise\") {\n await supervise(client, argv.slice(1), config);\n return;\n }\n throw new Error(`unknown command: ${command}`);\n}\n// Every top-level command main() dispatches. Checked before any config load so a typo\n// reports the typo instead of whatever configuration the real command would have needed.\nconst KNOWN_COMMANDS = new Set([\n \"ask\", \"create\", \"enrollment\", \"event\", \"host\", \"login\", \"mailbox\", \"memory\", \"refresh\", \"reply\",\n \"supervise\", \"task\", \"team\", \"tutorial\", \"upgrade\", \"workflow\", \"worker\",\n]);\n// Subcommands each command dispatches, checked in the same pass. An empty set means the\n// command takes flags only. HOST_RELAY_SUBCOMMANDS is the host dispatcher's own source of\n// truth, so a new host subcommand cannot become unreachable here.\nconst SUBCOMMANDS = {\n ask: new Set([\"get\", \"list\", \"status\"]),\n create: CREATE_SUBCOMMANDS,\n enrollment: new Set(),\n event: new Set([\"add\", \"disable\", \"enable\", \"list\", \"rm\"]),\n host: new Set([...HOST_RELAY_SUBCOMMANDS, \"run\", \"service\", \"start-request\", \"statusline\", \"workspace\"]),\n mailbox: new Set([\"ack\", \"claim\", \"peek\", \"send\"]),\n memory: new Set([\"current\", \"index\", \"pin\", \"search\", \"set\", \"unpin\"]),\n supervise: new Set(),\n task: new Set([\n \"activate\", \"close\", \"create\", \"get\", \"history\", \"list\", \"merge-ready\",\n \"needs-changes\", \"park\", \"pause\", \"ready\", \"unpark\",\n ]),\n team: new Set([\"bootstrap\"]),\n upgrade: new Set(),\n worker: new Set([\"job\", \"list\", \"run\", \"serve\"]),\n};\nfunction _assertKnownCommand(command, subcommand) {\n if (!KNOWN_COMMANDS.has(command))\n throw new Error(`unknown command: ${command}`);\n const allowed = SUBCOMMANDS[command];\n if (!allowed || subcommand === undefined || subcommand.startsWith(\"--\"))\n return;\n if (allowed.has(subcommand))\n return;\n if (allowed.size === 0)\n throw new Error(`${command} takes no subcommand: ${subcommand}`);\n throw new Error(`unknown ${command} command: ${subcommand}; expected ${[...allowed].sort().join(\", \")}`);\n}\nasync function _rejectUnsupportedCliInput(command, args, input) {\n const subcommand = args[0];\n const acceptsInput = command === \"reply\"\n || (command === \"host\" && subcommand === \"statusline\")\n || (command === \"mailbox\" && subcommand === \"send\")\n || (command === \"task\" && subcommand === \"create\")\n || (command === \"ask\" && subcommand !== \"list\" && subcommand !== \"get\" && subcommand !== \"status\")\n || (command === \"memory\" && (subcommand === \"set\" || subcommand === \"search\"));\n if (!acceptsInput)\n await rejectUnusedTextInput(input, `${command}${subcommand ? ` ${subcommand}` : \"\"} does not accept stdin`);\n}\nasync function _mailbox(client, argv, config, format) {\n const sub = argv[0] ?? \"peek\";\n if (sub === \"send\") {\n await _sendMailbox(client, argv.slice(1), config, format);\n return;\n }\n if (sub === \"ack\") {\n await _ackMailbox(client, argv.slice(1), format);\n return;\n }\n if (sub !== \"peek\" && sub !== \"claim\")\n throw new Error(\"mailbox command must be peek, claim, ack, or send\");\n await _readMailbox(client, argv, config, format, sub);\n}\nasync function _sendMailbox(client, argv, config, format) {\n const result = await sendMailboxFromCli(client, argv, config, { stdin: process.stdin }); // intentional — inject the CLI stream into text-input-aware mailbox handling\n writeOutput(process.stdout, result, format, () => renderDeliveryPlain(result));\n}\nasync function _ackMailbox(client, argv, format) {\n const messageId = argv[0]?.trim();\n if (!messageId || messageId.startsWith(\"--\"))\n throw new Error(\"mailbox ack requires a message id\");\n const leaseToken = requireFlag(parseFlags(argv.slice(1)), \"lease-token\");\n const result = await client.ackMailbox(messageId, leaseToken);\n writeOutput(process.stdout, result, format, () => renderAckPlain(result));\n}\nasync function _readMailbox(client, argv, config, format, sub) {\n const lease = argv.includes(\"--lease\");\n const agent = argv.find((arg) => !arg.startsWith(\"--\") && arg !== sub) ?? config.agentName;\n if (!agent)\n throw new Error(\"agent name is required\");\n const messages = await client.claimMailbox(agent, {\n wait: false,\n peek: sub === \"peek\",\n includeLeased: lease,\n ...(sub === \"claim\" ? { excludeTags: [...MAILBOX_CLAIM_EXCLUDED_TAGS] } : {}),\n }).then((body) => body.messages);\n const result = { messages };\n writeOutput(process.stdout, result, format, () => renderMailboxPlain(result, WORKFLOW_OBLIGATION_ACK_REQUIRED_TAGS));\n await _acknowledgeClaimedNonObligations(client, messages);\n}\nasync function _acknowledgeClaimedNonObligations(client, messages) {\n for (const message of messages) {\n const token = message.lease_token?.trim();\n if (!token || (message.tag && WORKFLOW_OBLIGATION_ACK_REQUIRED_TAGS.has(message.tag)))\n continue;\n await client.ackMailbox(message.id, token);\n }\n}\nasync function _enrollment(client, argv, captainId, format) {\n const input = parseFlags(argv);\n const session = requireFlag(input, \"session\");\n const agentName = requireFlag(input, \"agent\");\n const role = singleRoleFlag(input, \"roles\");\n const host = input.host ?? hostname();\n const descriptor = await client.createEnrollment({ session, agentName, role, host, name: input.name, captainId });\n writeOutput(process.stdout, descriptor, format, () => renderEnrollmentPlain(descriptor));\n}\nasync function _hostLogin(argv, format) {\n const skipService = _serviceSkipRequested(argv, process.env.SAILORBRIDGE_NO_SERVICE);\n const input = parseFlags(argv.filter((arg) => arg !== SERVICE_SKIP_FLAG));\n const apiUrl = _resolveApiUrl(input[\"api-url\"], process.env.SAILORBRIDGE_API_URL);\n const credentialsPath = input[\"credentials-path\"] ?? process.env.SAILORBRIDGE_CREDENTIALS_FILE ?? defaultHostCredentialsPath();\n const result = await pairHost({\n apiUrl,\n hostId: input[\"host-id\"] ?? process.env.SAILORBRIDGE_HOST_ID,\n displayName: input[\"display-name\"] ?? process.env.SAILORBRIDGE_HOST_DISPLAY_NAME,\n credentialsPath,\n onCode: (code, pairingId, hostId) => _emitPairingCode(code, pairingId, hostId, format),\n });\n const service = skipService\n ? _reportServiceSkipped()\n : await _installHostServiceAfterLogin(input, result.hostId, result.credentialsPath);\n const workspace = await _recordLoginWorkspace(input);\n const output = {\n paired: true,\n pairing_id: result.pairingId,\n host_id: result.hostId,\n key_id: result.credential.key_id,\n captain_id: result.credential.captain_id,\n credentials_path: result.credentialsPath,\n service,\n ...(workspace ? { workspace } : {}),\n };\n writeOutput(process.stdout, output, format, () => renderLoginPlain(output));\n}\n// The pairing code is the one thing the user must read and type into the console,\n// and login then blocks polling for minutes. Emit it on STDOUT in the human (plain)\n// format so `sailorbridge login | tee install.log`, CI logs, and install scripts\n// capture it — the previous stderr-only output left every stdout consumer with an\n// empty stream that read as a hang (the P1). JSON consumers own stdout for the\n// result object, so their progress stays on stderr. writeSync (not the async\n// stdout/stderr streams) guarantees the line lands immediately, before the\n// long-poll, under any stream form — pipe, file, or TTY. (The CLI has no i18n\n// framework; these strings are English, consistent with every other CLI message.)\nfunction _emitPairingCode(code, pairingId, hostId, format) {\n const fd = format === \"json\" ? 2 : 1;\n writeSync(fd, `Enter this SailorBridge host pairing code in the console: ${code}\\n`);\n writeSync(fd, `Host: ${hostId}\\n`);\n // The internal pairing id means nothing to the user typing the code; keep it out\n // of the default output and behind a debug opt-in.\n if (_debugEnabled())\n writeSync(fd, `Pairing id (debug): ${pairingId}\\n`);\n}\nfunction _debugEnabled() {\n const value = process.env.SAILORBRIDGE_DEBUG?.trim().toLowerCase();\n return !!value && value !== \"0\" && value !== \"false\";\n}\n/** Explicit opt-out for containers, CI images, and hosts without a service manager. */\nfunction _serviceSkipRequested(argv, env) {\n if (argv.includes(SERVICE_SKIP_FLAG))\n return true;\n const value = env?.trim().toLowerCase();\n return !!value && value !== \"0\" && value !== \"false\";\n}\nfunction _reportServiceSkipped() {\n process.stderr.write(`Skipped the host service install (${SERVICE_SKIP_FLAG}).\\n`);\n process.stderr.write(`This host cannot accept console-created workers or agents until you run: ${SERVICE_INSTALL_COMMAND}\\n`);\n return { installed: false, skipped: true, manual_command: SERVICE_INSTALL_COMMAND };\n}\n/** Pairing already succeeded here, so a service failure degrades the exit code instead of failing login. */\nasync function _installHostServiceAfterLogin(input, hostId, credentialsPath) {\n try {\n const report = await installHostService({\n credentialsPath,\n hostId,\n ...(input.binary ? { binary: input.binary } : {}),\n ...(input[\"display-name\"] ? { displayName: input[\"display-name\"] } : {}),\n ...(input[\"service-dir\"] ? { serviceDir: input[\"service-dir\"] } : {}),\n ...(input[\"service-name\"] ? { serviceName: input[\"service-name\"] } : {}),\n });\n return _reportServiceInstalled(report);\n }\n catch (error) {\n return _reportServiceInstallFailed(error instanceof Error ? error.message : String(error));\n }\n}\nfunction _reportServiceInstalled(report) {\n process.stderr.write(`Installed the SailorBridge host service (${report.platform}) at ${report.file}; it is running now and will restart with your session.\\n`);\n process.stderr.write(`To remove it, run: ${SERVICE_UNINSTALL_COMMAND}\\n`);\n if (report.note)\n process.stderr.write(`${report.note}\\n`);\n return {\n installed: true,\n path: report.file,\n uninstall_command: SERVICE_UNINSTALL_COMMAND,\n linger: report.linger,\n ...(report.note ? { note: report.note } : {}),\n };\n}\nfunction _reportServiceInstallFailed(reason) {\n process.stderr.write(`Paired successfully, but the host service was not installed: ${reason}\\n`);\n process.stderr.write(`This host is offline and cannot receive console tasks. Run: ${SERVICE_INSTALL_COMMAND}\\n`);\n process.exitCode = SERVICE_INSTALL_FAILED_EXIT_CODE; // intentional — pairing succeeded, so signal the partial failure instead of throwing\n return { installed: false, reason, manual_command: SERVICE_INSTALL_COMMAND };\n}\n// Records the login directory (or an explicit --workspace) as this host's default\n// workspace so the daemon reports it — the fix for \"host details always show No\n// reported workspaces\". Pairing already succeeded, so a workspace-recording\n// problem (e.g. the directory is unreadable) degrades to a stderr warning rather\n// than failing login, mirroring the service-install stance.\nasync function _recordLoginWorkspace(input) {\n const target = input.workspace ?? process.cwd();\n const configPath = input[\"host-config-path\"] ?? process.env.SAILORBRIDGE_HOST_CONFIG_FILE ?? defaultHostConfigPath();\n try {\n const result = await recordHostWorkspace(target, configPath);\n if (result.added)\n process.stderr.write(`Recorded this host's default workspace: ${result.path}\\n`);\n if (result.note)\n process.stderr.write(`${result.note}\\n`);\n return { path: result.path, git: result.git };\n }\n catch (error) {\n process.stderr.write(`Paired successfully, but did not record a default workspace: ${error instanceof Error ? error.message : String(error)}\\n`);\n return undefined;\n }\n}\nfunction _resolveApiUrl(flag, env) {\n return _resolveOptionalApiUrl(flag, env) ?? DEFAULT_PRODUCT_API_URL;\n}\nfunction _resolveOptionalApiUrl(flag, env) {\n if (flag !== undefined) {\n const trimmed = flag.trim();\n if (!trimmed) {\n throw new Error(`product API URL is empty; unset --api-url/SAILORBRIDGE_API_URL to use SailorBridge at ${DEFAULT_PRODUCT_API_URL}.`);\n }\n return trimmed;\n }\n // intentional — blank SAILORBRIDGE_API_URL is treated as unset; only an explicit blank flag fails.\n return env?.trim() || undefined;\n}\nconst AUTO_UPDATE_SKIP_FLAG = \"--disable-auto-update\";\nasync function hostRun(argv) {\n const input = parseFlags(argv.filter((arg) => arg !== AUTO_UPDATE_SKIP_FLAG));\n const credentialsPath = input[\"credentials-path\"] ?? process.env.SAILORBRIDGE_CREDENTIALS_FILE ?? defaultHostCredentialsPath();\n const credential = await loadHostCredential(credentialsPath);\n const relayUrl = credential.relay_url ?? process.env.SAILORBRIDGE_RELAY_URL;\n if (!relayUrl)\n throw new Error(\"host credential has no relay_url and SAILORBRIDGE_RELAY_URL is unset\");\n const apiUrl = input[\"api-url\"] ?? credential.api_url;\n const relay = new RelayClient({ relayUrl, bearerToken: credential.token });\n const resolveCredential = createEnrollmentRedeemer({ apiUrl, hostToken: credential.token });\n const recoverRuntimes = createRuntimeRecoverer({ apiUrl, hostToken: credential.token });\n const controller = new AbortController();\n const stop = () => controller.abort();\n process.once(\"SIGINT\", stop);\n process.once(\"SIGTERM\", stop);\n const emit = (event, fields = {}) => {\n process.stderr.write(`${JSON.stringify({ ts: new Date().toISOString(), event, host_id: credential.host_id, ...fields })}\\n`);\n };\n const autoUpdate = !argv.includes(AUTO_UPDATE_SKIP_FLAG) && await _hostConfigAllowsAutoUpdate(emit);\n await runHostDaemon({\n relay,\n resolveCredential,\n recoverRuntimes,\n captainId: String(credential.captain_id),\n hostId: input[\"host-id\"] ?? credential.host_id,\n displayName: input[\"display-name\"] ?? credential.host_id,\n signal: controller.signal,\n redactSecrets: [credential.token],\n ...(input[\"workspace-root\"] ? { workspaceRoot: input[\"workspace-root\"] } : {}),\n autoUpdate,\n logger: emit,\n });\n}\n// Mirrors the daemon's best-effort config stance: a corrupt host config must not\n// stop the daemon, and auto-update stays at its default (on) rather than being\n// silently disabled. // intentional — degrade a bad config to the default.\nasync function _hostConfigAllowsAutoUpdate(emit) {\n try {\n const config = await loadHostConfig(process.env.SAILORBRIDGE_HOST_CONFIG_FILE ?? defaultHostConfigPath());\n return config.auto_update !== false;\n }\n catch (error) {\n emit(\"host_config_load_error\", { error: error instanceof Error ? error.message : String(error) });\n return true;\n }\n}\nasync function supervise(client, argv, config) {\n const parsed = parseSuperviseArgs(argv);\n assertSingleOwnerConfirmed(parsed);\n const emit = (event, fields = {}) => {\n process.stderr.write(`${JSON.stringify({ ts: new Date().toISOString(), event, agent: parsed.agentName, ...fields })}\\n`);\n };\n const resolveOptions = {\n cli: parsed.cli,\n cwd: parsed.cwd,\n transport: parsed.transport,\n command: parsed.command,\n tmuxSession: parsed.tmuxSession,\n agentName: parsed.agentName,\n driverOptions: parsed.driverOptions,\n };\n let resolved = resolveTransport(resolveOptions);\n if (resolved.transport === \"tmux\") {\n await ensureTmuxTransport({\n explicit: parsed.transport === \"tmux\",\n platform: process.platform,\n io: createStdioPrompt(),\n log: emit,\n });\n }\n const { env, credentialGuard } = await materializeAgentRuntimeEnv({\n agentName: parsed.agentName,\n engine: parsed.cli,\n hostEnv: process.env,\n teamMemoryEntitled: await resolveTeamMemoryEntitlement(client, config.captainId, config.session),\n descriptor: {\n key_id: \"direct-supervise\",\n relay_url: config.relayUrl,\n token: config.bearerToken,\n ...(config.captainId ? { captain_id: config.captainId } : {}),\n agent_name: parsed.agentName,\n session: config.session ?? \"\",\n role: \"operator\",\n roles: [\"operator\"],\n host: hostname(),\n created_at: \"\",\n },\n });\n await _trustSuperviseWorkspace(parsed.agentName, parsed.cli, env, parsed.cwd);\n const runtime = new AgentSupervisorRuntime({\n agentName: parsed.agentName,\n displayName: parsed.agentName,\n cli: parsed.cli,\n transport: resolved.transport,\n tmuxSession: resolved.tmuxSession,\n session: config.session,\n driver: resolved.createDriver(),\n relay: client,\n captainId: config.captainId,\n ...(credentialGuard ? { credentialGuard } : {}), // null for env-based auth — no credential file to guard\n model: _configuredModel(parsed.cli, parsed.driverOptions),\n startOptions: {\n agentId: parsed.agentName,\n cwd: parsed.cwd,\n env,\n command: resolved.command,\n },\n waitTimeoutSec: parsed.waitTimeoutSec,\n livenessIntervalMs: parsed.livenessIntervalMs,\n relaunchMaxFailures: parsed.relaunchMaxFailures,\n logger: emit,\n });\n const stopHandlers = _installRuntimeStopHandlers(runtime, emit);\n try {\n try {\n await runtime.start();\n }\n catch (error) {\n if (!stopHandlers.isStopping())\n throw error;\n if (_isStopInducedStartAbort(error)) {\n _logSuperviseError(emit, \"supervise_start_stopped\", error);\n }\n else {\n process.exitCode = 1;\n _logSuperviseError(emit, \"supervise_start_failed_during_stop\", error);\n }\n await stopHandlers.wait();\n return;\n }\n process.stderr.write(JSON.stringify({\n event: \"supervise_started\",\n agent: parsed.agentName,\n ...(config.captainId ? { captain_id: config.captainId } : {}),\n client_version: CLIENT_VERSION,\n client_git_sha: CLIENT_GIT_SHA,\n client_build_dirty: CLIENT_BUILD_DIRTY,\n cli: parsed.cli,\n transport: resolved.transport,\n relay: config.relayUrl,\n }) + \"\\n\");\n await stopHandlers.wait();\n }\n finally {\n stopHandlers.dispose();\n }\n}\nfunction _configuredModel(cli, options) {\n return cli === \"claude\" ? options.claude?.model : cli === \"codex\" ? options.codex?.model : undefined;\n}\nasync function _trustSuperviseWorkspace(agentName, engine, env, cwd) {\n if (engine === \"claude\") {\n const homeDir = env.CLAUDE_CONFIG_DIR;\n if (!homeDir)\n throw new Error(\"claude runtime home missing after runtime materialization\");\n await materializeAgentRuntimeDefaults({ agentName, engine, homeDir, workspaceDir: cwd });\n return;\n }\n if (engine === \"codex\") {\n const homeDir = env.CODEX_HOME;\n if (!homeDir)\n throw new Error(\"codex runtime home missing after runtime materialization\");\n await materializeAgentRuntimeDefaults({ agentName, engine, homeDir, workspaceDir: cwd });\n }\n}\nfunction _installRuntimeStopHandlers(runtime, log) {\n let stopping = false;\n let resolveStop;\n const stopped = new Promise((resolve) => { resolveStop = resolve; });\n const stopOnce = () => {\n if (stopping)\n return;\n stopping = true;\n void _stopRuntime(runtime, log).finally(resolveStop);\n };\n process.once(\"SIGINT\", stopOnce);\n process.once(\"SIGTERM\", stopOnce);\n // SIGHUP arrives when the supervisor's own tmux session/terminal dies; node's\n // default silent exit would orphan the member session and violate fail-fast.\n process.once(\"SIGHUP\", stopOnce);\n return {\n isStopping: () => stopping,\n wait: () => stopped,\n dispose: () => {\n process.off(\"SIGINT\", stopOnce);\n process.off(\"SIGTERM\", stopOnce);\n process.off(\"SIGHUP\", stopOnce);\n },\n };\n}\nasync function _stopRuntime(runtime, log) {\n try {\n await runtime.stop();\n }\n catch (error) {\n process.exitCode = 1;\n _logSuperviseError(log, \"supervise_stop_failed\", error);\n }\n}\nfunction _logSuperviseError(log, event, error) {\n log(event, { error: error instanceof Error ? error.message : String(error) });\n}\nfunction _isStopInducedStartAbort(error) {\n return error instanceof SupervisorRetiredDuringStartError;\n}\nfunction parseFlags(argv) {\n const values = {};\n for (let i = 0; i < argv.length; i += 1) {\n const item = argv[i];\n if (!item.startsWith(\"--\"))\n throw new Error(`unexpected argument: ${item}`);\n const key = item.slice(2);\n const value = argv[i + 1];\n if (!value || value.startsWith(\"--\"))\n throw new Error(`--${key} requires a value`);\n values[key] = value;\n i += 1;\n }\n return values;\n}\nfunction requireFlag(values, key) {\n const value = values[key]?.trim();\n if (!value)\n throw new Error(`--${key} is required`);\n return value;\n}\nfunction singleRoleFlag(values, key) {\n const roles = requireFlag(values, key).split(\",\").map((role) => role.trim()).filter(Boolean);\n if (roles.length !== 1)\n throw new Error(`--${key} must contain exactly one role`);\n return roles[0];\n}\nfunction usage() {\n process.stdout.write(_usageText());\n}\n// Print just the requested command's lines from the single usage source, so\n// `<cmd> --help` reuses the top-level usage instead of a second hand-written copy.\nfunction _commandUsage(command) {\n const entry = new RegExp(`^ {2}(?:sailorbridge|sail) ${command}(?: |$)`);\n const selected = [];\n let capturing = false;\n for (const line of _usageText().split(\"\\n\")) {\n if (entry.test(line)) {\n selected.push(line);\n capturing = true;\n continue;\n }\n if (capturing && /^ {4}\\S/.test(line)) {\n selected.push(line);\n continue;\n }\n capturing = false;\n }\n if (selected.length === 0) {\n usage();\n return;\n }\n process.stdout.write(`Usage:\\n${selected.join(\"\\n\")}\\n`);\n}\nfunction _wantsHelp(args) {\n return args.includes(\"--help\") || args.includes(\"-h\");\n}\nfunction _usageText() {\n return `Usage:\n sailorbridge workflow\n sailorbridge refresh\n sailorbridge --version\n sailorbridge upgrade\n installs @sailorbridge/client@latest and restarts a running SailorBridge-managed host service.\n sailorbridge tutorial [--check] [--api-url URL] [--credentials-path PATH] (default API: ${DEFAULT_PRODUCT_API_URL})\n sailorbridge login [--api-url URL] [--host-id H] [--display-name N] [--credentials-path PATH] [--binary PATH] [${SERVICE_SKIP_FLAG}] [--service-dir DIR] [--service-name NAME] (default API: ${DEFAULT_PRODUCT_API_URL})\n pairs this host, then installs and starts the host service so the console can start workers and agents here.\n ${SERVICE_SKIP_FLAG} (or SAILORBRIDGE_NO_SERVICE=1) pairs only, for containers and CI images without a service manager.\n Exit ${SERVICE_INSTALL_FAILED_EXIT_CODE} means pairing succeeded but the service did not install; the host remains offline and cannot receive console tasks. Run '${SERVICE_INSTALL_COMMAND}'.\n sailorbridge mailbox peek [agent]\n sailorbridge mailbox claim [agent] [--lease]\n sailorbridge mailbox ack MESSAGE_ID --lease-token TOKEN\n sailorbridge mailbox send (--to-agents A[,B] | --to-roles R[,S] [--to-host H[,K]] | --to-host H[,K]) [--session S] [--tag T] [--task-id ID --task-version N [--commit SHA]] [--body-file PATH|-]\n sailorbridge reply [--session S] --agent A --in-reply-to MESSAGE_ID TAG [--body-file PATH|- | BODY...|-]\n sailorbridge event add --at HH:MM --tz IANA --days once|daily|weekday --message TEXT [--run-date YYYY-MM-DD] [--tag T] [--disabled] [--session S]\n sailorbridge event list [--session S]\n sailorbridge event enable|disable|rm EVENT_ID [--session S]\n sailorbridge ask --title TITLE --option LABEL::DESCRIPTION --option LABEL::DESCRIPTION --recommend A --reason TEXT [--reason TEXT] --body-file - [--session S]\n sailorbridge ask list [--session S]\n sailorbridge ask get|status DECISION_ID [--session S]\n sailorbridge task create [--description TEXT|-|--body-file PATH|-|--description-file PATH|-] [--pair PAIR] [--draft|--status draft|new] [--type feature|bug|docs|chore] [--priority high|normal|low] [--level d1|d2|d3|d4] [--depends TASK[,TASK]] [--artifact-id ID] [--image PATH] [--session S]\n sailorbridge task list [--all|--pair PAIR] [--status STATUS] [--after CURSOR] [--limit 1..100] [--query TEXT] [--format plain|json] [--session S]\n sailorbridge task get TASK_ID [--session S]\n sailorbridge task history TASK_ID [--limit 1..200] [--after CURSOR|--before CURSOR|--all] [--format plain|json] [--session S]\n sailorbridge task activate TASK_ID [--session S]\n sailorbridge task pause TASK_ID [--session S]\n sailorbridge task merge-ready TASK_ID [--commit SHA] [--version N] [--findings P0=n,P1=n,P2=n,P3=n] [--session S] (alias: task ready)\n sailorbridge task needs-changes TASK_ID --reason TEXT [--commit SHA] [--version N] [--findings P0=n,P1=n,P2=n,P3=n] [--session S]\n sailorbridge task park TASK_ID --resume-condition TEXT [--resume-dependency TASK_ID] [--owner-of-resume AGENT] [--version N] [--session S]\n sailorbridge task unpark TASK_ID [--version N] [--session S]\n sailorbridge task close TASK_ID [--version N] [--findings P0=n,P1=n,P2=n,P3=n] [--session S]\n sailorbridge create team --name DISPLAY_NAME --template classic3 [--host H] [--workspace PATH] [--engine claude|codex]\n creates an auto-numbered team and starts every template slot on one paired online host.\n sailorbridge create pair [--host H] [--workspace PATH|GIT_URL] [--engine claude|codex] [--name N] [--session S]\n builds a writer+reviewer dev pair on a paired online host; workspace defaults to the host's reported one.\n sailorbridge create planner [--host H] [--workspace PATH] [--engine claude|codex] [--session S]\n adds the team's single planner through the console slot + start flow.\n sailorbridge create tester [--host H] [--workspace PATH] [--engine claude|codex] [--session S]\n adds one tester through the console slot + start flow.\n sailorbridge create worker --name N --concurrency N [--host H] [--workspace PATH] [--session S]\n starts a worker on a paired online host. All create commands: [--api-url URL] [--credentials-path PATH] [--format plain|json]\n sailorbridge team bootstrap --template classic3 --slot SLOT=HOST:claude|codex [--slot ...] [--session S]\n sail memory set KEY (--stdin | --file PATH) --source SOURCE\n sail memory search [QUERY]\n sail memory current KEY\n sail memory pin KEY (moderator/captain only)\n sail memory unpin KEY (moderator/captain only)\n sail memory index\n sailorbridge enrollment --session S --agent A --roles operator [--host H] [--name N]\n sailorbridge host list|register|heartbeat [--host-id H] [--display-name N]\n sailorbridge host consume --once --dry-run-start [--host-id H] [--display-name N]\n sailorbridge host service install|uninstall|status [--binary PATH] [--credentials-path PATH] [--workspace-root DIR] [--service-dir DIR] [--service-name NAME]\n sailorbridge host start-request [--credentials-path PATH] [--api-url URL] [--access-token TOKEN] --team T [--host-id H] --agent A --engine codex --roles operator --workspace-mode fresh|git [--git-url URL]\n sailorbridge host run [--credentials-path PATH] [--api-url URL] [--host-id H] [--display-name N] [--workspace-root DIR] [--disable-auto-update]\n sailorbridge worker list [--format plain|json]\n sailorbridge worker run [--detach] --worker NAME [--timeout SEC] [--format plain|json] -- ARGV...\n sailorbridge worker job ID [--format plain|json]\n list/run/job require SAILORBRIDGE_CAPTAIN_ID; list/run also require SAILORBRIDGE_SESSION.\n sailorbridge worker serve [--relay-url URL] [--worker NAME] [--workdir DIR] [--max-concurrency N]\n sailorbridge supervise --agent A --cli claude|codex --cwd DIR --i-own-this-agent [--transport tmux] [--tmux-session S] [-- COMMAND...]\n\nEnvironment:\n SAILORBRIDGE_RELAY_URL / SAILORBRIDGE_TOKEN\n SAILORBRIDGE_API_URL overrides the default product API for login/tutorial (${DEFAULT_PRODUCT_API_URL}); --api-url wins\n SAILORBRIDGE_AGENT_NAME\n SAILORBRIDGE_CAPTAIN_ID is required for worker list/run/job.\n SAILORBRIDGE_SESSION is also required for worker list/run.\n SAILORBRIDGE_HOST_ID / SAILORBRIDGE_HOST_DISPLAY_NAME\n SAILORBRIDGE_NO_SERVICE=1 makes login skip the host service install\n SAILORBRIDGE_DEBUG=1 prints the internal pairing id during login (diagnostics only)\n Only SAILORBRIDGE_* relay configuration is read.\n\nOutput:\n Data-producing commands accept --format plain|json (default: plain).\n`;\n}\nmain(process.argv.slice(2)).catch((error) => {\n const message = error instanceof Error ? error.message : String(error);\n process.stderr.write(`sailorbridge: Error: ${message}\\n${_nextStep(error, message)}\\n`);\n process.exitCode = 1;\n});\nfunction _nextStep(error, message) {\n const task = /\\bRun (sail task get [^\\s.,;]+)/u.exec(message);\n if (task)\n return `Next: run ${task[1]}`;\n const status = error instanceof RelayHttpError ? error.status : _httpStatus(message);\n if (status === 401 || status === 403)\n return \"Next: verify SAILORBRIDGE_TOKEN and permissions, then retry the command.\";\n if (status !== null && status >= 500)\n return \"Next: retry the command after the SailorBridge relay recovers.\";\n if (error instanceof RelayNetworkError || _looksLikeNetworkFailure(message)) {\n return \"Next: check relay connectivity, then retry the command.\";\n }\n if (error instanceof RelayProtocolError)\n return \"Next: verify relay/client version compatibility, then retry the command.\";\n return \"Next: run sail --help\";\n}\nfunction _httpStatus(message) {\n const match = /\\bHTTP ([1-5][0-9]{2})\\b/u.exec(message);\n return match ? Number(match[1]) : null;\n}\nfunction _looksLikeNetworkFailure(message) {\n return /fetch failed|network|ECONN(?:REFUSED|RESET)|ENOTFOUND|ETIMEDOUT/iu.test(message);\n}\n//# sourceMappingURL=cli.js.map",
|
|
6
6
|
"import { chmod, mkdir, readFile, writeFile } from \"node:fs/promises\"; // intentional — pairing reads the managed credential store, not a user text parameter\nimport { homedir, hostname, platform } from \"node:os\";\nimport path from \"node:path\";\nconst TERMINAL_WITHOUT_KEY = new Set([\"expired\", \"cancelled\", \"consumed\"]);\nconst HOST_PAIRING_POLL_RETRY_DELAYS_MS = [250, 500, 1000];\nexport const DEFAULT_PRODUCT_API_URL = \"https://www.sailorbridge.com\";\nexport async function pairHost(options) {\n const apiUrl = _requiredUrl(options.apiUrl);\n const fetchImpl = options.fetchImpl ?? fetch;\n const hostId = options.hostId?.trim() || hostname();\n const displayName = options.displayName?.trim() || hostId;\n const create = await _postJson(apiUrl, \"/api/host-pairings\", {\n host_id: hostId,\n display_name: displayName,\n platform: options.platform?.trim() || platform(),\n }, fetchImpl);\n options.onCode?.(create.code, create.pairing.id, create.pairing.host_id);\n const poll = await _waitForHostKey(apiUrl, create.pairing.id, create.poll_secret, fetchImpl, options);\n _assertCreatedHostId(poll.pairing.host_id, create.pairing.host_id);\n const credential = _hostCredentialFromKey(apiUrl, poll.host_key, create.pairing.host_id);\n const credentialsPath = options.credentialsPath ?? defaultHostCredentialsPath();\n await storeHostCredential(credentialsPath, credential);\n return {\n code: create.code,\n pairingId: create.pairing.id,\n hostId: create.pairing.host_id,\n credentialsPath,\n credential,\n };\n}\nexport async function createHostPairingCode(options) {\n const apiUrl = _requiredUrl(options.apiUrl);\n const hostId = options.hostId?.trim() || hostname();\n const response = await _postJson(apiUrl, \"/api/host-pairings\", {\n host_id: hostId,\n display_name: options.displayName?.trim() || hostId,\n platform: options.platform?.trim() || platform(),\n }, options.fetchImpl ?? fetch);\n return {\n code: response.code,\n pairingId: response.pairing.id,\n pollSecret: response.poll_secret,\n hostId: response.pairing.host_id,\n };\n}\nexport async function pollHostPairingKey(apiUrl, pairingId, pollSecret, fetchImpl = fetch, options = {}) {\n const poll = await _waitForHostKey(_requiredUrl(apiUrl), pairingId, pollSecret, fetchImpl, options);\n return _hostCredentialFromKey(_requiredUrl(apiUrl), poll.host_key, poll.pairing.host_id);\n}\nexport async function storeHostCredential(credentialsPath, credential) {\n await mkdir(path.dirname(credentialsPath), { recursive: true, mode: 0o700 });\n await chmod(path.dirname(credentialsPath), 0o700);\n await writeFile(credentialsPath, `${JSON.stringify(credential, null, 2)}\\n`, { mode: 0o600 });\n await chmod(credentialsPath, 0o600);\n}\nexport function defaultHostCredentialsPath() {\n return path.join(homedir(), \".sailorbridge\", \"credentials.json\");\n}\n// Reads a host credential written by `pair`. Fails fast (not a silent default) so\n// `host run` reports a clear \"run pair first\" error instead of starting unpaired.\nexport async function loadHostCredential(credentialsPath) {\n let text;\n try {\n text = await readFile(credentialsPath, \"utf8\"); // intentional — validate the managed pairing credential store\n }\n catch (error) {\n const reason = error instanceof Error ? error.message : String(error);\n throw new Error(`no host credential at ${credentialsPath} (run 'sailorbridge login' first): ${reason}`);\n }\n const parsed = _assertObject(JSON.parse(text));\n if (parsed.kind !== \"sailorbridge-host-key\")\n throw new Error(\"host credential file is not a sailorbridge-host-key\");\n const token = _credentialSecret(parsed.token, \"token\");\n const captainId = parsed.captain_id;\n if (typeof captainId !== \"number\" || !Number.isInteger(captainId)) {\n throw new Error(\"host credential captain_id must be an integer\");\n }\n return {\n kind: \"sailorbridge-host-key\",\n api_url: _credentialString(parsed.api_url, \"api_url\"),\n ...(typeof parsed.relay_url === \"string\" && parsed.relay_url ? { relay_url: parsed.relay_url } : {}),\n token,\n captain_id: captainId,\n key_id: _credentialString(parsed.key_id, \"key_id\"),\n host_id: _credentialString(parsed.host_id, \"host_id\"),\n key_scope: _hostKeyScope(parsed.key_scope),\n };\n}\nfunction _hostCredentialFromKey(apiUrl, hostKey, pairingHostId) {\n const id = _credentialString(hostKey.id, \"host key id\");\n const token = _credentialSecret(hostKey.token, \"host key token\");\n const hostId = _credentialString(hostKey.host_id, \"host key host_id\");\n const relayUrl = _optionalCredentialString(hostKey.relay_url, \"host key relay_url\");\n const captainId = hostKey.captain_id;\n if (typeof captainId !== \"number\" || !Number.isInteger(captainId)) {\n throw new Error(\"host key captain_id must be an integer\");\n }\n if (hostKey.host_id !== pairingHostId) {\n throw new Error(\"host key host_id must match pairing host_id\");\n }\n return {\n kind: \"sailorbridge-host-key\",\n api_url: apiUrl,\n ...(relayUrl === undefined ? {} : { relay_url: relayUrl }),\n token,\n captain_id: captainId,\n key_id: id,\n host_id: hostId,\n key_scope: _hostKeyScope(hostKey.key_scope),\n };\n}\nfunction _hostKeyScope(value) {\n if (value !== \"host\")\n throw new Error(\"host credential key_scope must be host\");\n return value;\n}\nfunction _assertCreatedHostId(pairingHostId, createdHostId) {\n if (pairingHostId !== createdHostId)\n throw new Error(\"host pairing host_id must match created host_id\");\n}\nfunction _credentialString(value, label) {\n if (typeof value !== \"string\" || !value.trim())\n throw new Error(`host credential ${label} must be a non-empty string`);\n return value.trim();\n}\nfunction _credentialSecret(value, label) {\n const credential = _credentialString(value, label);\n if (!/^[A-Za-z0-9._~+/=-]+$/u.test(credential)) {\n throw new Error(`host credential ${label} must be an opaque credential`);\n }\n return credential;\n}\nfunction _optionalCredentialString(value, label) {\n if (value === undefined || value === null)\n return undefined;\n if (typeof value !== \"string\")\n throw new Error(`host credential ${label} must be a string`);\n const trimmed = value.trim();\n return trimmed ? trimmed : undefined;\n}\nasync function _waitForHostKey(apiUrl, pairingId, pollSecret, fetchImpl, options = {}) {\n while (true) {\n const poll = await _pollHostPairing(apiUrl, pairingId, pollSecret, fetchImpl, 0, options);\n if (poll.host_key)\n return poll;\n if (TERMINAL_WITHOUT_KEY.has(poll.pairing.status)) {\n throw new Error(`host pairing ended without a key: ${poll.pairing.status}`);\n }\n }\n}\nasync function _pollHostPairing(apiUrl, pairingId, pollSecret, fetchImpl, retryIndex, options) {\n try {\n return await _postJson(apiUrl, `/api/host-pairings/${encodeURIComponent(pairingId)}/poll`, { poll_secret: pollSecret, wait: true }, fetchImpl);\n }\n catch (error) {\n return await _retryTransientPollError(error, apiUrl, pairingId, pollSecret, fetchImpl, retryIndex, options);\n }\n}\nasync function _retryTransientPollError(error, apiUrl, pairingId, pollSecret, fetchImpl, retryIndex, options) {\n if (!_isTransientPairingPollError(error))\n throw error;\n const delays = options.pollRetryDelaysMs ?? HOST_PAIRING_POLL_RETRY_DELAYS_MS;\n const delayMs = delays[retryIndex];\n if (delayMs === undefined)\n throw _hostPairingPollRetriesExhausted(error, delays.length + 1);\n await _sleepHostPairingPollRetry(delayMs, options);\n return await _pollHostPairing(apiUrl, pairingId, pollSecret, fetchImpl, retryIndex + 1, options);\n}\nfunction _isTransientPairingPollError(error) {\n if (error instanceof _HostPairingNetworkError)\n return true;\n return error instanceof _HostPairingHttpError && error.status >= 500;\n}\nfunction _hostPairingPollRetriesExhausted(error, attempts) {\n const cause = error instanceof Error ? ` Last error: ${error.message}` : \"\";\n return new Error(`host pairing poll failed after ${attempts} attempts due to a transient server or network error; run 'sailorbridge login' again later.${cause}`);\n}\nasync function _sleepHostPairingPollRetry(delayMs, options) {\n if (options.pollRetrySleep) {\n await options.pollRetrySleep(delayMs);\n return;\n }\n await new Promise((resolve) => setTimeout(resolve, delayMs));\n}\nasync function _postJson(apiUrl, pathSuffix, body, fetchImpl) {\n const response = await _fetchPostJson(apiUrl, pathSuffix, body, fetchImpl);\n const text = await response.text();\n if (!response.ok)\n throw new _HostPairingHttpError(response.status, text);\n const parsed = text ? JSON.parse(text) : {};\n return _assertObject(parsed);\n}\nasync function _fetchPostJson(apiUrl, pathSuffix, body, fetchImpl) {\n try {\n return await fetchImpl(`${apiUrl.replace(/\\/+$/u, \"\")}${pathSuffix}`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify(body),\n });\n }\n catch (error) {\n throw new _HostPairingNetworkError(error);\n }\n}\nclass _HostPairingHttpError extends Error {\n status;\n body;\n constructor(status, body) {\n super(`host pairing request failed with status ${status}: ${body}`);\n this.status = status;\n this.body = body;\n }\n}\nclass _HostPairingNetworkError extends Error {\n causeError;\n constructor(causeError) {\n const message = causeError instanceof Error ? causeError.message : String(causeError);\n super(`host pairing request failed due to a network error: ${message}`);\n this.causeError = causeError;\n }\n}\nfunction _requiredUrl(value) {\n if (value === undefined)\n return DEFAULT_PRODUCT_API_URL;\n const trimmed = value?.trim();\n if (!trimmed) {\n throw new Error(`product API URL is empty; unset --api-url/SAILORBRIDGE_API_URL to use SailorBridge at ${DEFAULT_PRODUCT_API_URL}.`);\n }\n return trimmed.replace(/\\/+$/u, \"\");\n}\nfunction _assertObject(value) {\n if (!value || typeof value !== \"object\")\n throw new Error(\"host pairing response must be an object\");\n return value;\n}\n//# sourceMappingURL=host-pairing.js.map",
|
|
7
7
|
"import { createHash } from \"node:crypto\";\nimport { existsSync, mkdirSync } from \"node:fs\";\nimport { homedir } from \"node:os\";\nimport path from \"node:path\";\nimport { spawn } from \"node:child_process\";\n// Host-side half of the remote-repo tip observation loop (owner ruling\n// 2026-07-18): the relay never touches customer git remotes; this reporter\n// fetches a daemon-owned bare mirror with the host's existing git credentials,\n// reads tips/ancestry locally, and reports metadata (shas, booleans,\n// timestamps) — never repo content.\nconst COMMAND_TIMEOUT_MS = 120_000;\nconst REPO_BACKOFF_INITIAL_MS = 60_000;\nconst REPO_BACKOFF_MAX_MS = 60 * 60_000;\nconst SHA_RE = /^[0-9a-f]{40}(?:[0-9a-f]{24})?$/;\nexport function defaultRepoMirrorRoot() {\n return path.join(homedir(), \".sailorbridge\", \"repo-mirrors\");\n}\nexport function createRepoTipReporter(deps = {}) {\n const backoffs = new Map();\n return async (options) => _reportRepoTipsOnce(options, deps, backoffs);\n}\n// One report cycle: ask the relay what to observe, observe each remote repo in\n// its mirror, report per session. Per-repo failures are isolated so a broken\n// remote never starves the other sessions' observations.\nexport async function reportRepoTipsOnce(options, deps = {}) {\n return _reportRepoTipsOnce(options, deps, new Map());\n}\nasync function _reportRepoTipsOnce(options, deps, backoffs) {\n const wanted = await options.relay.getTaskRepoTipWanted(options.captainId);\n const mirrorRoot = options.mirrorRoot ?? defaultRepoMirrorRoot();\n let reported = 0;\n for (const entry of wanted.wanted) {\n if (await _reportRepoTip(entry, mirrorRoot, options, deps, backoffs))\n reported += 1;\n }\n _forgetUnwantedBackoffs(backoffs, wanted.wanted);\n return { observed: wanted.wanted.length, reported };\n}\nasync function _reportRepoTip(entry, mirrorRoot, options, deps, backoffs) {\n const backoff = backoffs.get(entry.repo_path);\n if (backoff && _now(deps) < backoff.retryAt)\n return false;\n try {\n const report = await observeRepoTips(entry, mirrorRoot, deps);\n await options.relay.putTaskRepoTips(options.captainId, entry.session, report);\n }\n catch (error) {\n _backOffRepo(entry, error, options.logger, deps, backoffs);\n return false;\n }\n if (backoff)\n _recoverRepo(entry, backoff, options.logger, backoffs);\n return true;\n}\nfunction _backOffRepo(entry, error, logger, deps, backoffs) {\n const previous = backoffs.get(entry.repo_path);\n const retryMs = previous ? Math.min(previous.retryMs * 2, REPO_BACKOFF_MAX_MS) : REPO_BACKOFF_INITIAL_MS;\n const failures = (previous?.failures ?? 0) + 1;\n backoffs.set(entry.repo_path, { failures, retryAt: _now(deps) + retryMs, retryMs });\n if (previous)\n return;\n logger?.(\"host_repo_tip_backoff_started\", {\n session: entry.session,\n repo: entry.repo_path,\n error: error instanceof Error ? error.message : String(error),\n failures,\n retry_ms: retryMs,\n });\n}\nfunction _recoverRepo(entry, backoff, logger, backoffs) {\n backoffs.delete(entry.repo_path);\n logger?.(\"host_repo_tip_backoff_recovered\", {\n session: entry.session,\n repo: entry.repo_path,\n failures: backoff.failures,\n });\n}\nfunction _forgetUnwantedBackoffs(backoffs, wanted) {\n const activeRepos = new Set(wanted.map((entry) => entry.repo_path));\n for (const repo of backoffs.keys()) {\n if (!activeRepos.has(repo))\n backoffs.delete(repo);\n }\n}\nfunction _now(deps) {\n return deps.now?.() ?? Date.now();\n}\nasync function observeRepoTips(entry, mirrorRoot, deps) {\n const exec = deps.execCommand ?? execArgv;\n const mirror = mirrorPathFor(mirrorRoot, entry.repo_path);\n await syncMirror(exec, entry.repo_path, mirror);\n const refs = {};\n for (const branch of entry.branches) {\n if (!branch.trim() || branch.startsWith(\"-\"))\n continue;\n const tip = await gitStdout(exec, mirror, [\"rev-parse\", \"--verify\", \"--end-of-options\", branch]);\n if (tip === null || !SHA_RE.test(tip))\n continue; // branch absent on the remote — omit, the relay reads that as unresolvable\n const committedAt = await gitStdout(exec, mirror, [\"log\", \"-1\", \"--format=%cI\", \"--end-of-options\", branch, \"--\"]);\n refs[branch] = { commit: tip, ...(committedAt ? { committed_at: committedAt } : {}) };\n }\n const commits = {};\n const observeSet = new Set(entry.commits.filter((commit) => SHA_RE.test(commit)));\n for (const ref of Object.values(refs))\n observeSet.add(ref.commit);\n for (const commit of observeSet) {\n const merge = await observeMerge(exec, mirror, entry.main_ref, commit);\n if (merge !== null)\n commits[commit] = merge;\n }\n return { repo_path: entry.repo_path, main_ref: entry.main_ref, refs, commits };\n}\nasync function syncMirror(exec, repoUrl, mirror) {\n if (!existsSync(path.join(mirror, \"HEAD\"))) {\n mkdirSync(path.dirname(mirror), { recursive: true });\n await gitOk(exec, process.cwd(), [\"clone\", \"--mirror\", \"--\", repoUrl, mirror], \"git mirror clone failed\");\n return;\n }\n // The registered URL can change credentials-neutral forms; keep origin honest.\n await gitOk(exec, mirror, [\"remote\", \"set-url\", \"origin\", \"--\", repoUrl], \"git remote set-url failed\");\n await gitOk(exec, mirror, [\"fetch\", \"--prune\", \"origin\"], \"git mirror fetch failed\");\n}\nasync function observeMerge(exec, mirror, mainRef, commit) {\n const probe = await exec([\"git\", \"-C\", mirror, \"merge-base\", \"--is-ancestor\", \"--end-of-options\", commit, mainRef], mirror);\n if (probe.exitCode === 1)\n return { merged: false };\n if (probe.exitCode !== 0)\n return null; // commit/ref unresolvable — omit, the relay keeps it fail-closed pending\n // Attribution walks the main ref's first-parent chain and takes the oldest\n // chain commit that contains the observed commit: a merge landing records\n // that merge; a first-parent landing (fast-forward / direct push) records\n // the commit itself. The nearest ancestry-path merge is not the answer — a\n // later unrelated merge on top of a fast-forward landing would absorb it\n // (live mis-attribution, vali-c5-pair 2026-07-19).\n const chain = await exec([\"git\", \"-C\", mirror, \"rev-list\", \"--first-parent\", \"--parents\", \"--end-of-options\", `${commit}..${mainRef}`], mirror);\n if (chain.exitCode !== 0)\n return null;\n const contained = await exec([\"git\", \"-C\", mirror, \"rev-list\", \"--ancestry-path\", \"--end-of-options\", `${commit}..${mainRef}`], mirror);\n if (contained.exitCode !== 0)\n return null;\n const contains = new Set(contained.stdout.split(/\\s+/).filter(Boolean));\n const lines = chain.stdout.split(\"\\n\").map((line) => line.trim()).filter(Boolean);\n for (let i = lines.length - 1; i >= 0; i -= 1) {\n const tokens = lines[i].split(/\\s+/);\n if (!contains.has(tokens[0]))\n continue;\n // Oldest chain commit containing the observed commit: its first parent is\n // the commit itself iff the work landed directly on the chain. Inputs are\n // full shas (SHA_RE-validated wanted commits / rev-parse tips), so the\n // equality against rev-list's full parent shas is sound.\n return { merged: true, merge_commit: tokens[1] === commit ? commit : tokens[0] };\n }\n // No chain commit above the observed commit: it is the observed main tip.\n return { merged: true, merge_commit: commit };\n}\nasync function gitOk(exec, cwd, args, failurePrefix) {\n const result = await exec([\"git\", ...args], cwd);\n if (result.exitCode !== 0) {\n const detail = [result.stderr.trim(), result.stdout.trim()].filter(Boolean).join(\"\\n\").slice(0, 500);\n throw new Error(detail ? `${failurePrefix}: ${detail}` : failurePrefix);\n }\n}\nasync function gitStdout(exec, mirror, args) {\n const result = await exec([\"git\", \"-C\", mirror, ...args], mirror);\n if (result.exitCode !== 0)\n return null;\n const value = result.stdout.trim();\n return value || null;\n}\nexport function mirrorPathFor(mirrorRoot, repoUrl) {\n const digest = createHash(\"sha256\").update(repoUrl).digest(\"hex\").slice(0, 16);\n const slug = repoUrl.replace(/[^A-Za-z0-9._-]+/g, \"-\").replace(/^-+|-+$/g, \"\").slice(-48);\n return path.join(mirrorRoot, `${slug || \"repo\"}-${digest}.git`);\n}\nfunction execArgv(argv, cwd) {\n return new Promise((resolve) => {\n const proc = spawn(argv[0], argv.slice(1), { cwd, stdio: [\"ignore\", \"pipe\", \"pipe\"] });\n const stdout = [];\n const stderr = [];\n let settled = false;\n const finish = (exitCode, extraStderr = \"\") => {\n if (settled)\n return;\n settled = true;\n clearTimeout(timer);\n resolve({\n exitCode,\n stdout: Buffer.concat(stdout).toString(\"utf8\"),\n stderr: `${Buffer.concat(stderr).toString(\"utf8\")}${extraStderr}`,\n });\n };\n const timer = setTimeout(() => {\n proc.kill(\"SIGTERM\");\n finish(124, \"\\ntimeout expired\");\n }, COMMAND_TIMEOUT_MS);\n proc.stdout.on(\"data\", (chunk) => stdout.push(chunk));\n proc.stderr.on(\"data\", (chunk) => stderr.push(chunk));\n proc.on(\"error\", (error) => finish(127, `\\n${error.message}`));\n proc.on(\"close\", (code) => finish(code ?? 1));\n });\n}\n//# sourceMappingURL=repo-tip-reporter.js.map",
|
|
8
|
-
"import { hostname } from \"node:os\";\nimport { redactSensitiveText } from \"../driver/secrets.js\";\nimport { CLIENT_GIT_SHA, CLIENT_VERSION } from \"../version.js\";\nconst MAX_ERROR_LENGTH = 500;\nexport function defaultHostIdentity(config) {\n const captainId = config.captainId?.trim();\n if (!captainId)\n throw new Error(\"SAILORBRIDGE_CAPTAIN_ID is required for host commands\");\n if (!/^\\d+$/.test(captainId))\n throw new Error(\"SAILORBRIDGE_CAPTAIN_ID must be a numeric string\");\n const systemHost = hostname();\n const hostId = config.hostId?.trim() || systemHost;\n const displayName = config.hostDisplayName?.trim() || hostId;\n if (!hostId)\n throw new Error(\"hostId is required\");\n if (!displayName)\n throw new Error(\"displayName is required\");\n return { captainId, hostId, displayName };\n}\nexport async function runHostRequestOnce(options) {\n const hostReport = await options.relay.registerClientHost(options.captainId, {\n hostId: options.hostId,\n displayName: options.displayName,\n clientVersion: CLIENT_VERSION,\n clientGitSha: CLIENT_GIT_SHA,\n });\n if (options.workspaceInventory) {\n try {\n await options.relay.replaceClientHostWorkspaces(options.captainId, options.hostId, {\n workspaces: options.workspaceInventory,\n });\n }\n catch (error) {\n options.onWorkspaceInventoryError?.(error);\n }\n }\n const request = await options.relay.claimAgentStartRequest(options.captainId, options.hostId, options.signal);\n if (request === null)\n return { status: \"idle\", host: hostReport.host, request: null };\n if (request.status !== \"claimed\") {\n throw new Error(`claimed request ${request.id} returned status ${request.status}`);\n }\n let result;\n try {\n result = await options.starter(request);\n }\n catch (error) {\n const message = limitErrorMessage(error, options.redactSecrets ?? []);\n const failed = await options.relay.markAgentStartRequestFailed(options.captainId, options.hostId, request.id, { error: message });\n return { status: \"failed\", host: hostReport.host, request: failed.request, error: message };\n }\n const started = await options.relay.markAgentStartRequestStarted(options.captainId, options.hostId, request.id, result === undefined ? {} : { result });\n return { status: \"started\", host: hostReport.host, request: started.request };\n}\nfunction limitErrorMessage(error, explicitSecrets) {\n const message = error instanceof Error ? error.message : String(error);\n const trimmed = redactSensitiveText(message, process.env, explicitSecrets).trim() || \"host request starter failed\";\n return trimmed.length <= MAX_ERROR_LENGTH ? trimmed : `${trimmed.slice(0, MAX_ERROR_LENGTH - 3)}...`;\n}\n//# sourceMappingURL=request-consumer.js.map",
|
|
8
|
+
"import { hostname } from \"node:os\";\nimport { redactSensitiveText } from \"../driver/secrets.js\";\nimport { CLIENT_GIT_SHA, CLIENT_VERSION } from \"../version.js\";\nconst MAX_ERROR_LENGTH = 500;\nexport function defaultHostIdentity(config) {\n const captainId = config.captainId?.trim();\n if (!captainId)\n throw new Error(\"SAILORBRIDGE_CAPTAIN_ID is required for host commands\");\n if (!/^\\d+$/.test(captainId))\n throw new Error(\"SAILORBRIDGE_CAPTAIN_ID must be a numeric string\");\n const systemHost = hostname();\n const hostId = config.hostId?.trim() || systemHost;\n const displayName = config.hostDisplayName?.trim() || hostId;\n if (!hostId)\n throw new Error(\"hostId is required\");\n if (!displayName)\n throw new Error(\"displayName is required\");\n return { captainId, hostId, displayName };\n}\nexport async function runHostRequestOnce(options) {\n const hostReport = await options.relay.registerClientHost(options.captainId, {\n hostId: options.hostId,\n displayName: options.displayName,\n clientVersion: CLIENT_VERSION,\n clientGitSha: CLIENT_GIT_SHA,\n ...(options.updateError === undefined ? {} : { updateError: options.updateError }),\n });\n if (options.workspaceInventory) {\n try {\n await options.relay.replaceClientHostWorkspaces(options.captainId, options.hostId, {\n workspaces: options.workspaceInventory,\n });\n }\n catch (error) {\n options.onWorkspaceInventoryError?.(error);\n }\n }\n const request = await options.relay.claimAgentStartRequest(options.captainId, options.hostId, options.signal);\n if (request === null)\n return { status: \"idle\", host: hostReport.host, request: null };\n if (request.status !== \"claimed\") {\n throw new Error(`claimed request ${request.id} returned status ${request.status}`);\n }\n let result;\n try {\n result = await options.starter(request);\n }\n catch (error) {\n const message = limitErrorMessage(error, options.redactSecrets ?? []);\n const failed = await options.relay.markAgentStartRequestFailed(options.captainId, options.hostId, request.id, { error: message });\n return { status: \"failed\", host: hostReport.host, request: failed.request, error: message };\n }\n const started = await options.relay.markAgentStartRequestStarted(options.captainId, options.hostId, request.id, result === undefined ? {} : { result });\n return { status: \"started\", host: hostReport.host, request: started.request };\n}\nfunction limitErrorMessage(error, explicitSecrets) {\n const message = error instanceof Error ? error.message : String(error);\n const trimmed = redactSensitiveText(message, process.env, explicitSecrets).trim() || \"host request starter failed\";\n return trimmed.length <= MAX_ERROR_LENGTH ? trimmed : `${trimmed.slice(0, MAX_ERROR_LENGTH - 3)}...`;\n}\n//# sourceMappingURL=request-consumer.js.map",
|
|
9
9
|
"export function redactSensitiveText(text, env = {}, explicitSecrets = []) {\n let redacted = text;\n for (const [key, value] of Object.entries(env)) {\n if (!value || !isSensitiveEnvKey(key))\n continue;\n redacted = redacted.split(value).join(\"[redacted]\");\n }\n for (const value of explicitSecrets) {\n if (!value)\n continue;\n redacted = redacted.split(value).join(\"[redacted]\");\n }\n return redacted;\n}\nexport function isSensitiveEnvKey(key) {\n return /(TOKEN|KEY|SECRET|AUTHORIZATION|PASSWORD)/i.test(key);\n}\n//# sourceMappingURL=secrets.js.map",
|
|
10
|
-
"export const CLIENT_VERSION = \"0.2.
|
|
10
|
+
"export const CLIENT_VERSION = \"0.2.4\";\nexport const CLIENT_GIT_SHA = \"22d3b8376a97\";\nexport const CLIENT_BUILD_DIRTY = false;\nexport const CLIENT_VERSION_LABEL = formatClientVersion(CLIENT_VERSION, CLIENT_GIT_SHA);\nexport function formatClientVersion(version, gitSha) {\n return `${version}+git.${gitSha}`;\n}\n//# sourceMappingURL=version.js.map",
|
|
11
11
|
"import { DEFAULT_PRODUCT_API_URL } from \"../auth/index.js\";\nexport async function createAgentStartRequest(options) {\n const apiUrl = _required(options.apiUrl, \"product API URL\").replace(/\\/+$/u, \"\");\n const accessToken = _required(options.accessToken, \"product API bearer token\");\n const teamId = _required(options.teamId, \"team\");\n const hostId = _required(options.hostId, \"host id\");\n const agentName = _required(options.agentName, \"agent name\");\n const response = await (options.fetchImpl ?? fetch)(`${apiUrl}/api/console/teams/${encodeURIComponent(teamId)}/agent-start-requests`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\", Authorization: `Bearer ${accessToken}` },\n body: JSON.stringify({\n host_id: hostId,\n agent_name: agentName,\n ...(options.slotId === undefined ? {} : { slot_id: options.slotId }),\n ...(options.captainId === undefined ? {} : { captain_id: options.captainId }),\n spec: options.spec,\n }),\n });\n const text = await response.text();\n if (!response.ok) {\n throw new Error(`agent start request failed with status ${response.status}: ${text.slice(0, 300)}`);\n }\n return _result(text ? JSON.parse(text) : {});\n}\nfunction _result(payload) {\n const root = _object(payload, \"agent start request response\");\n const request = _object(root.request, \"request\");\n const agent = _object(root.agent, \"agent\");\n return {\n request: {\n id: _string(request.id, \"request.id\"),\n status: _string(request.status, \"request.status\"),\n host_id: _string(request.host_id, \"request.host_id\"),\n agent_name: _string(request.agent_name, \"request.agent_name\"),\n },\n agent: {\n name: _string(agent.name, \"agent.name\"),\n key_id: agent.key_id === null ? null : _string(agent.key_id, \"agent.key_id\"),\n },\n };\n}\nfunction _required(value, label) {\n const trimmed = value?.trim();\n if (!trimmed && label === \"product API URL\") {\n throw new Error(`product API URL is empty; unset --api-url/SAILORBRIDGE_API_URL to use SailorBridge at ${DEFAULT_PRODUCT_API_URL}.`);\n }\n if (!trimmed)\n throw new Error(`${label} is required`);\n return trimmed;\n}\nfunction _object(value, label) {\n if (!value || typeof value !== \"object\" || Array.isArray(value))\n throw new Error(`${label} must be an object`);\n return value;\n}\nfunction _string(value, label) {\n if (typeof value !== \"string\" || !value.trim())\n throw new Error(`${label} must be a non-empty string`);\n return value;\n}\n//# sourceMappingURL=start-request.js.map",
|
|
12
12
|
"import { DEFAULT_PRODUCT_API_URL } from \"../auth/index.js\";\nexport async function createPair(options) {\n const apiUrl = _required(options.apiUrl, \"product API URL\").replace(/\\/+$/u, \"\");\n const accessToken = _required(options.accessToken, \"product API bearer token\");\n const teamId = _required(options.teamId, \"team\");\n const hostId = _required(options.hostId, \"host id\");\n const response = await (options.fetchImpl ?? fetch)(`${apiUrl}/api/console/teams/${encodeURIComponent(teamId)}/pairs`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\", Authorization: `Bearer ${accessToken}` },\n body: JSON.stringify({\n host_id: hostId,\n ...(options.name === undefined ? {} : { name: options.name }),\n ...(options.captainId === undefined ? {} : { captain_id: options.captainId }),\n spec: options.spec,\n }),\n });\n const text = await response.text();\n if (!response.ok) {\n throw new Error(`pair creation failed with status ${response.status}: ${text.slice(0, 300)}`);\n }\n return _result(text ? JSON.parse(text) : {});\n}\nfunction _result(payload) {\n const root = _object(payload, \"pair creation response\");\n const pair = _object(root.pair, \"pair\");\n return {\n pair: {\n name: _string(pair.name, \"pair.name\"),\n member_agents: _memberAgents(pair.member_agents),\n state: _string(pair.state, \"pair.state\"),\n kind: _string(pair.kind, \"pair.kind\"),\n },\n writer: _member(root.writer, \"writer\"),\n reviewer: _member(root.reviewer, \"reviewer\"),\n };\n}\nfunction _member(value, label) {\n const member = _object(value, label);\n const request = _object(member.request, `${label}.request`);\n const agent = _object(member.agent, `${label}.agent`);\n return {\n request: {\n id: _string(request.id, `${label}.request.id`),\n status: _string(request.status, `${label}.request.status`),\n host_id: _string(request.host_id, `${label}.request.host_id`),\n agent_name: _string(request.agent_name, `${label}.request.agent_name`),\n },\n agent: {\n name: _string(agent.name, `${label}.agent.name`),\n key_id: agent.key_id === null ? null : _string(agent.key_id, `${label}.agent.key_id`),\n },\n };\n}\nfunction _memberAgents(value) {\n if (!Array.isArray(value))\n throw new Error(\"pair.member_agents must be an array\");\n return value.map((member, index) => _string(member, `pair.member_agents[${index}]`));\n}\nfunction _required(value, label) {\n const trimmed = value?.trim();\n if (!trimmed && label === \"product API URL\") {\n throw new Error(`product API URL is empty; unset --api-url/SAILORBRIDGE_API_URL to use SailorBridge at ${DEFAULT_PRODUCT_API_URL}.`);\n }\n if (!trimmed)\n throw new Error(`${label} is required`);\n return trimmed;\n}\nfunction _object(value, label) {\n if (!value || typeof value !== \"object\" || Array.isArray(value))\n throw new Error(`${label} must be an object`);\n return value;\n}\nfunction _string(value, label) {\n if (typeof value !== \"string\" || !value.trim())\n throw new Error(`${label} must be a non-empty string`);\n return value;\n}\n//# sourceMappingURL=pair.js.map",
|
|
13
13
|
"import { DEFAULT_PRODUCT_API_URL } from \"../auth/index.js\";\nexport async function createWorker(options) {\n const apiUrl = _required(options.apiUrl, \"product API URL\").replace(/\\/+$/u, \"\");\n const accessToken = _required(options.accessToken, \"product API bearer token\");\n const teamId = _required(options.teamId, \"team\");\n const hostId = _required(options.hostId, \"host id\");\n const workerName = _required(options.workerName, \"worker name\");\n const workdir = _required(options.workdir, \"workdir\");\n if (!Number.isSafeInteger(options.maxConcurrency) || options.maxConcurrency < 1) {\n throw new Error(\"max concurrency must be an integer >= 1\");\n }\n const response = await (options.fetchImpl ?? fetch)(`${apiUrl}/api/console/teams/${encodeURIComponent(teamId)}/workers`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\", Authorization: `Bearer ${accessToken}` },\n body: JSON.stringify({\n host_id: hostId,\n worker_name: workerName,\n workdir,\n max_concurrency: options.maxConcurrency,\n ...(options.captainId === undefined ? {} : { captain_id: options.captainId }),\n }),\n });\n const text = await response.text();\n if (!response.ok) {\n throw new Error(`worker creation failed with status ${response.status}: ${text.slice(0, 300)}`);\n }\n return _result(text ? JSON.parse(text) : {});\n}\nfunction _result(payload) {\n const root = _object(payload, \"worker creation response\");\n const request = _object(root.request, \"request\");\n const worker = _object(root.worker, \"worker\");\n return {\n request: {\n id: _string(request.id, \"request.id\"),\n status: _string(request.status, \"request.status\"),\n host_id: _string(request.host_id, \"request.host_id\"),\n worker_name: _string(request.worker_name, \"request.worker_name\"),\n },\n worker: {\n name: _string(worker.name, \"worker.name\"),\n key_id: worker.key_id === null ? null : _string(worker.key_id, \"worker.key_id\"),\n },\n };\n}\nfunction _required(value, label) {\n const trimmed = value?.trim();\n if (!trimmed && label === \"product API URL\") {\n throw new Error(`product API URL is empty; unset --api-url/SAILORBRIDGE_API_URL to use SailorBridge at ${DEFAULT_PRODUCT_API_URL}.`);\n }\n if (!trimmed)\n throw new Error(`${label} is required`);\n return trimmed;\n}\nfunction _object(value, label) {\n if (!value || typeof value !== \"object\" || Array.isArray(value))\n throw new Error(`${label} must be an object`);\n return value;\n}\nfunction _string(value, label) {\n if (typeof value !== \"string\" || !value.trim())\n throw new Error(`${label} must be a non-empty string`);\n return value;\n}\n//# sourceMappingURL=worker.js.map",
|
|
@@ -25,19 +25,19 @@
|
|
|
25
25
|
"export { BUSY_MARKERS, isBusy } from \"../liveness-heuristics.js\";\nexport function buildDispatchPlan(text, useTyping) {\n return {\n mode: useTyping ? \"type-literal\" : \"paste-buffer\",\n text,\n enterSeparately: true,\n };\n}\nexport function headerCount(capture, exactHeader) {\n return capture.split(/\\r?\\n/).filter((line) => line.includes(exactHeader)).length;\n}\nexport function messageTailPending(capture, text) {\n const expected = nonemptyTail(text, 2);\n if (expected.length === 0)\n return false;\n return arraysEqual(nonemptyTail(capture, expected.length), expected);\n}\nfunction nonemptyTail(text, limit) {\n return text.split(/\\r?\\n/).map((line) => line.trim()).filter(Boolean).slice(-limit);\n}\nfunction arraysEqual(left, right) {\n return left.length === right.length && left.every((item, index) => item === right[index]);\n}\n//# sourceMappingURL=paste.js.map",
|
|
26
26
|
"import { classifyInteractiveOutput } from \"../liveness-heuristics.js\";\nconst SHELL_COMMANDS = new Set([\"\", \"bash\", \"zsh\", \"sh\", \"fish\", \"pwsh\", \"powershell\"]);\nexport function classifyTmuxLiveness(input) {\n if (!input.hasSession) {\n return { processAlive: false, replyAlive: null, state: \"missing\", paneCommand: input.paneCommand };\n }\n const processAlive = isTmuxProcessAlive(input.paneCommand, input.runningCommands);\n if (!processAlive) {\n return { processAlive: false, replyAlive: null, state: \"exited\", paneCommand: input.paneCommand };\n }\n const output = classifyInteractiveOutput(input);\n return { processAlive: true, paneCommand: input.paneCommand, ...output };\n}\nexport function isTmuxProcessAlive(command, runningCommands) {\n if (runningCommands?.length) {\n return runningCommands.some((expected) => expected.endsWith(\"*\")\n ? command.startsWith(expected.slice(0, -1))\n : command === expected);\n }\n return !SHELL_COMMANDS.has(command);\n}\n//# sourceMappingURL=liveness.js.map",
|
|
27
27
|
"import { spawn } from \"node:child_process\";\nconst DEFAULT_TIMEOUT_MS = 15_000;\nexport class TmuxCommandError extends Error {\n args;\n result;\n constructor(args, result) {\n const redactedArgs = redactTmuxArgs(args);\n super(result.stderr.trim() || `tmux ${redactedArgs.join(\" \")} failed`);\n this.name = \"TmuxCommandError\";\n this.args = redactedArgs;\n this.result = result;\n }\n}\nexport class SubprocessTmuxRunner {\n async run(args, options = {}) {\n return await new Promise((resolve, reject) => {\n const child = spawn(\"tmux\", args, {\n env: { ...process.env, ...options.env },\n stdio: [\"ignore\", \"pipe\", \"pipe\"],\n });\n let stdout = \"\";\n let stderr = \"\";\n const timeout = setTimeout(() => {\n child.kill(\"SIGKILL\");\n reject(new Error(`tmux ${redactTmuxArgs(args).join(\" \")} timed out after ${options.timeoutMs ?? DEFAULT_TIMEOUT_MS}ms`));\n }, options.timeoutMs ?? DEFAULT_TIMEOUT_MS);\n child.on(\"error\", (error) => {\n clearTimeout(timeout);\n if (error.code === \"ENOENT\") {\n reject(new Error(\"tmux not found\"));\n return;\n }\n reject(error);\n });\n child.stdout?.on(\"data\", (chunk) => {\n stdout += chunk.toString(\"utf8\");\n });\n child.stderr?.on(\"data\", (chunk) => {\n stderr += chunk.toString(\"utf8\");\n });\n child.on(\"close\", (code, signal) => {\n clearTimeout(timeout);\n resolve({ code, signal, stdout, stderr });\n });\n });\n }\n}\nfunction redactTmuxArgs(args) {\n return args.map((arg, index) => {\n if (args[index - 1] !== \"-e\")\n return arg;\n const [key] = arg.split(\"=\", 1);\n return isSensitiveEnvKey(key) ? `${key}=[redacted]` : arg;\n });\n}\nfunction isSensitiveEnvKey(key) {\n return /(TOKEN|KEY|SECRET|AUTHORIZATION|PASSWORD)/i.test(key);\n}\n// tmux -t falls back to prefix matching when no session has the exact name, so a\n// bare \"-t vali-mod\" can resolve to an unrelated \"vali-mod-sup\" session — and\n// kill-session then destroys it (including the supervisor's own enclosing\n// session). \"=name\" forces exact matching. Session-targeted commands take\n// \"=name\"; pane-targeted commands (capture-pane/list-panes/send-keys/\n// paste-buffer) need the \"=name:\" target-pane form — bare \"=name\" is rejected\n// with \"can't find pane\" (tmux 3.4).\nfunction exactSessionTarget(session) {\n return `=${session}`;\n}\nfunction exactPaneTarget(session) {\n return `=${session}:`;\n}\nexport class TmuxClient {\n runner;\n constructor(runner = new SubprocessTmuxRunner()) {\n this.runner = runner;\n }\n async hasSession(session) {\n const result = await this.runner.run([\"has-session\", \"-t\", exactSessionTarget(session)]);\n return result.code === 0;\n }\n async capturePane(session, options = {}) {\n const args = [\"capture-pane\", \"-J\", \"-t\", exactPaneTarget(session), \"-p\"];\n if (options.scrollback)\n args.push(\"-S\", \"-\");\n return (await this.checked(args)).stdout;\n }\n async paneCommand(session) {\n const output = (await this.checked([\"list-panes\", \"-t\", exactPaneTarget(session), \"-F\", \"#{pane_current_command}\"])).stdout;\n return output.split(/\\r?\\n/)[0] ?? \"\";\n }\n // tmux buffers are server-global: an unnamed load-buffer pushes the shared\n // stack and an unnamed paste-buffer takes the most recent buffer, so two\n // supervisors interleaving load/paste cross-deliver each other's text\n // (vali-c4 doorbell cross-paste, 2026-07-19). A private buffer name pins\n // each paste to its own content; -d consumes the buffer on paste so message\n // text never lingers on the tmux server.\n async loadBuffer(path, buffer) {\n await this.checked([\"load-buffer\", \"-b\", buffer, path]);\n }\n async pasteBuffer(session, buffer) {\n await this.checked([\"paste-buffer\", \"-d\", \"-b\", buffer, \"-t\", exactPaneTarget(session)]);\n }\n async deleteBuffer(buffer) {\n await this.checked([\"delete-buffer\", \"-b\", buffer]);\n }\n async typeText(session, text) {\n await this.checked([\"send-keys\", \"-t\", exactPaneTarget(session), \"-l\", \"--\", text]);\n }\n async sendEnter(session) {\n await this.sendKey(session, \"Enter\");\n }\n async sendKey(session, key) {\n await this.checked([\"send-keys\", \"-t\", exactPaneTarget(session), key]);\n }\n async sendInterrupt(session) {\n await this.checked([\"send-keys\", \"-t\", exactPaneTarget(session), \"C-c\"]);\n }\n async killSession(session) {\n await this.checked([\"kill-session\", \"-t\", exactSessionTarget(session)]);\n }\n async waitFor(channel) {\n await this.checked([\"wait-for\", channel]);\n }\n attachCommand(session) {\n return [\"tmux\", \"attach\", \"-t\", exactSessionTarget(session)];\n }\n async checked(args, options) {\n const result = await this.runner.run(args, options);\n if (result.code !== 0)\n throw new TmuxCommandError(args, result);\n return result;\n }\n}\n//# sourceMappingURL=runner.js.map",
|
|
28
|
-
"import { Buffer } from \"node:buffer\";\nimport http from \"node:http\";\nimport https from \"node:https\";\nimport { RelayError, RelayHttpError, RelayNetworkError, RelayProtocolError } from \"./errors.js\";\nimport { MAX_JOB_TIMEOUT_SECONDS, WORKER_JOB_RESULT_GRACE_SECONDS, } from \"../worker/protocol.js\";\nconst JSON_CONTENT_TYPE = \"application/json\";\nconst MAX_MAILBOX_LIMIT = 16;\nconst MAX_WAIT_TIMEOUT_SEC = 120;\nconst MANAGED_BANNER_FIELD_RE = /^[\\x21-\\x7e]+$/u;\nconst PAYLOAD_INTEGRITY_ERROR_PREFIX = \"mailbox payload integrity failure:\";\nclass MailboxPayloadIntegrityError extends RelayProtocolError {\n detail;\n constructor(detail) {\n super(\"GET\", \"/api/v1/mailbox\", detail);\n this.detail = detail;\n }\n}\nexport class RelayClient {\n relayUrl;\n bearerToken;\n fetchImpl;\n defaultTimeoutMs;\n httpClient;\n constructor(options) {\n if (!options.relayUrl.trim())\n throw new Error(\"relayUrl is required\");\n if (!options.bearerToken.trim())\n throw new Error(\"bearerToken is required\");\n this.relayUrl = options.relayUrl.replace(/\\/+$/, \"\");\n this.bearerToken = options.bearerToken;\n this.httpClient = options.fetchImpl ? null : new NodeRelayHttpClient();\n this.fetchImpl = options.fetchImpl ?? this.httpClient.fetch;\n this.defaultTimeoutMs = options.defaultTimeoutMs ?? 60_000;\n }\n close() {\n this.httpClient?.close();\n }\n async listWorkers(captainId, session) {\n requireCaptainId(captainId);\n if (session !== undefined)\n requireSegment(session, \"session\");\n const suffix = session === undefined ? \"\" : `?session=${segment(session)}`;\n const path = `/api/v1/captains/${segment(captainId)}/workers${suffix}`;\n const response = await this.requestJson(\"GET\", path);\n if (!Array.isArray(response.workers)) {\n throw new RelayProtocolError(\"GET\", path, \"workers must be an array\");\n }\n return { workers: response.workers.map((worker) => _parseWorkerRecord(worker, path)) };\n }\n async submitJob(captainId, body) {\n requireCaptainId(captainId);\n _validateWorkerJobSubmit(body);\n const path = `/api/v1/captains/${segment(captainId)}/task`;\n const spec = {\n argv: [...body.argv],\n ...(body.timeoutSec === undefined ? {} : { timeout_sec: body.timeoutSec }),\n };\n const response = await this.requestJson(\"POST\", path, { kind: \"bash\", worker: body.worker, spec });\n return _parseWorkerJobSubmitResponse(response, path);\n }\n async getJobStatus(captainId, jobId) {\n return this._getJob(captainId, jobId);\n }\n async getJobResult(captainId, jobId, timeoutSec) {\n _validateWorkerJobWaitTimeout(timeoutSec);\n return this._getJob(captainId, jobId, timeoutSec);\n }\n async _getJob(captainId, jobId, timeoutSec) {\n requireCaptainId(captainId);\n requireSegment(jobId, \"jobId\");\n const base = `/api/v1/captains/${segment(captainId)}/task/${segment(jobId)}`;\n const path = timeoutSec === undefined ? base : `${base}?wait=true&timeout_sec=${timeoutSec}`;\n const timeoutMs = timeoutSec === undefined ? this.defaultTimeoutMs : (timeoutSec + 5) * 1000;\n return _parseWorkerJobResultResponse(await this.requestJson(\"GET\", path, undefined, timeoutMs), path);\n }\n async claimMailbox(agentName, options = {}) {\n requireSegment(agentName, \"agentName\");\n if (options.messageId)\n requireSegment(options.messageId, \"messageId\");\n const query = new URLSearchParams();\n if (options.peek ?? true)\n query.set(\"peek\", \"true\");\n if (options.wait) {\n query.set(\"wait\", \"true\");\n query.set(\"timeout_sec\", String(clampTimeout(options.timeoutSec ?? 30)));\n }\n if (options.tag)\n query.set(\"tag\", options.tag);\n if (options.messageId)\n query.set(\"message_id\", options.messageId);\n for (const tag of options.excludeTags ?? []) {\n if (tag)\n query.append(\"exclude_tags\", tag);\n }\n if (options.limit !== undefined)\n query.set(\"limit\", String(clampLimit(options.limit)));\n if (options.includeLeased)\n query.set(\"include_leased\", \"true\");\n const suffix = query.size ? `?${query.toString()}` : \"\";\n const waitMs = options.wait ? (clampTimeout(options.timeoutSec ?? 30) + 5) * 1000 : this.defaultTimeoutMs;\n const body = await this.requestJson(\"GET\", `/api/v1/mailbox/${segment(agentName)}${suffix}`, undefined, waitMs, options.signal);\n if (!Array.isArray(body.messages)) {\n throw new RelayProtocolError(\"GET\", `/api/v1/mailbox/${segment(agentName)}`, \"messages must be an array\");\n }\n const messages = [];\n for (const item of body.messages) {\n try {\n messages.push(parseMailboxMessage(item));\n }\n catch (error) {\n if (!(error instanceof MailboxPayloadIntegrityError))\n throw error;\n await this.recordMailboxPayloadFailure(item, error);\n throw error;\n }\n }\n return { messages };\n }\n async recordMailboxPayloadFailure(value, error) {\n const context = mailboxPayloadFailureContext(value);\n if (!context || context.surfaceError?.startsWith(PAYLOAD_INTEGRITY_ERROR_PREFIX))\n return;\n const requestBody = {\n status: \"failed\",\n error: `${PAYLOAD_INTEGRITY_ERROR_PREFIX} ${error.detail}`,\n ...(context.leaseToken ? { lease_token: context.leaseToken } : {}),\n };\n await this.requestJson(\"POST\", `/api/v1/mailbox/${segment(context.messageId)}/surface`, requestBody);\n }\n async ackMailbox(messageId, leaseToken) {\n requireSegment(messageId, \"messageId\");\n requireNonEmpty(leaseToken, \"leaseToken\");\n const body = await this.requestJson(\"POST\", `/api/v1/mailbox/${segment(messageId)}/ack`, { lease_token: leaseToken });\n if (typeof body.id !== \"string\" || body.status !== \"acked\") {\n throw new RelayProtocolError(\"POST\", `/api/v1/mailbox/${segment(messageId)}/ack`, \"invalid ack response\");\n }\n return { id: body.id, status: \"acked\" };\n }\n async recordMailboxSurface(messageId, body) {\n requireSegment(messageId, \"messageId\");\n if (body.status !== \"surfaced\" && body.status !== \"failed\")\n throw new Error(\"surface status must be surfaced or failed\");\n const leaseToken = body.lease_token;\n if (leaseToken !== undefined)\n requireNonEmpty(leaseToken, \"lease_token\");\n const requestBody = leaseToken === undefined\n ? { status: body.status, ...(body.error === undefined ? {} : { error: body.error }) }\n : { status: body.status, lease_token: leaseToken, ...(body.error === undefined ? {} : { error: body.error }) };\n const response = await this.requestJson(\"POST\", `/api/v1/mailbox/${segment(messageId)}/surface`, requestBody);\n return { message: parseMailboxMessage(response.message) };\n }\n async sendMailbox(agentName, body) {\n requireSegment(agentName, \"agentName\");\n validateMailboxPayload(body);\n const response = await this.requestJson(\"POST\", `/api/v1/mailbox/${segment(agentName)}`, normalizeMailboxBody(body));\n if (typeof response.id !== \"string\" || response.status !== \"queued\") {\n throw new RelayProtocolError(\"POST\", `/api/v1/mailbox/${segment(agentName)}`, \"invalid send response\");\n }\n return { id: response.id, status: \"queued\" };\n }\n async sendSessionMailbox(session, body) {\n requireSegment(session, \"session\");\n validateMailboxPayload(body);\n if (!hasSessionMailboxRecipients(body)) {\n throw new Error(\"session mailbox requires to_agents, to_roles, or to_host\");\n }\n const response = await this.requestJson(\"POST\", `/api/v1/mailbox/session/${segment(session)}`, normalizeMailboxBody(body));\n if (response.status !== \"queued\" || !isStringArray(response.ids) || !isStringArray(response.recipients)) {\n throw new RelayProtocolError(\"POST\", `/api/v1/mailbox/session/${segment(session)}`, \"invalid session send response\");\n }\n return { status: \"queued\", ids: response.ids, recipients: response.recipients };\n }\n // Post a transcript-backfill REPLY either to the captain transcript sink or back to the peer who prompted it.\n async postSessionReply(session, text, target = { kind: \"captain\" }, inReplyToMessageId, tag = \"REPLY\") {\n requireSegment(session, \"session\");\n const toAgent = target.kind === \"captain\" ? \"captain\" : target.agentName;\n requireNonEmpty(toAgent, \"reply target\");\n requireNonEmpty(tag, \"reply tag\");\n if (inReplyToMessageId !== undefined)\n requireNonEmpty(inReplyToMessageId, \"in_reply_to_message_id\");\n const response = await this.requestJson(\"POST\", `/api/v1/mailbox/session/${segment(session)}`, {\n tag,\n to_agents: [toAgent],\n payload_kind: \"raw\",\n payload_json: text,\n ...(inReplyToMessageId === undefined\n ? {}\n : {\n in_reply_to_message_id: inReplyToMessageId,\n }),\n });\n const expectedStatus = target.kind === \"captain\" ? \"recorded\" : \"queued\";\n if (response.status !== expectedStatus || !isNonEmptyStringArray(response.ids) || !isStringArray(response.recipients)) {\n throw new RelayProtocolError(\"POST\", `/api/v1/mailbox/session/${segment(session)}`, \"invalid session reply response\");\n }\n if (response.recipients.length !== 1 || response.recipients[0] !== toAgent) {\n throw new RelayProtocolError(\"POST\", `/api/v1/mailbox/session/${segment(session)}`, \"invalid session reply response\");\n }\n return { ids: response.ids, recipients: response.recipients };\n }\n // Report one batch of token-usage windows for the agent's own metering. The relay dedupes on\n // (source, source_ref), so re-posting deterministic refs after a crash/retry is safe.\n async postAgentTokenUsage(agentName, events) {\n requireSegment(agentName, \"agentName\");\n if (events.length === 0)\n throw new Error(\"postAgentTokenUsage requires at least one event\");\n const path = `/api/v1/agents/${segment(agentName)}/usage`;\n const response = await this.requestJson(\"POST\", path, { events });\n if (typeof response.recorded !== \"number\" || typeof response.duplicates !== \"number\") {\n throw new RelayProtocolError(\"POST\", path, \"usage report response must include numeric recorded/duplicates\");\n }\n return { recorded: response.recorded, duplicates: response.duplicates };\n }\n async fetchWorkflow(options = {}) {\n const suffix = options.runtimeView ?? true ? \"?view=runtime\" : \"\";\n const body = await this.requestText(\"GET\", `/api/v1/workflow${suffix}`);\n if (!body.trim())\n throw new RelayProtocolError(\"GET\", `/api/v1/workflow${suffix}`, \"workflow body is empty\");\n return body;\n }\n async createScheduledEvent(session, body) {\n const path = `/api/v1/sessions/${segment(session)}/events`;\n return parseScheduledEventResponse(await this.requestJson(\"POST\", path, body), \"POST\", path);\n }\n async listScheduledEvents(session) {\n const path = `/api/v1/sessions/${segment(session)}/events`;\n return parseScheduledEventListResponse(await this.requestJson(\"GET\", path), path);\n }\n async setScheduledEventEnabled(session, id, enabled) {\n const path = `/api/v1/sessions/${segment(session)}/events/${segment(id)}`;\n return parseScheduledEventResponse(await this.requestJson(\"PATCH\", path, { enabled }), \"PATCH\", path);\n }\n async deleteScheduledEvent(session, id) {\n const path = `/api/v1/sessions/${segment(session)}/events/${segment(id)}`;\n const response = await this.requestJson(\"DELETE\", path);\n if (typeof response.deleted !== \"string\" || !response.deleted)\n throw new RelayProtocolError(\"DELETE\", path, \"deleted must be a non-empty string\");\n return { deleted: response.deleted };\n }\n async createDecision(captainId, session, body) {\n const path = _decisionPath(captainId, session);\n return _parseDecisionResponse(await this.requestJson(\"POST\", path, body), \"POST\", path);\n }\n async listDecisions(captainId, session) {\n const path = _decisionPath(captainId, session);\n return _parseDecisionListResponse(await this.requestJson(\"GET\", path), path);\n }\n async getDecision(captainId, session, id) {\n const path = _decisionPath(captainId, session, id);\n return _parseDecisionResponse(await this.requestJson(\"GET\", path), \"GET\", path);\n }\n async createSessionTask(captainId, session, body) {\n const path = _sessionTaskPath(captainId, session);\n return _parseSessionTaskResponse(await this.requestJson(\"POST\", path, body), \"POST\", path);\n }\n async uploadSessionArtifact(captainId, session, body) {\n const path = `/api/v1/captains/${segment(captainId)}/artifacts/session/${segment(session)}`;\n return _parseSessionArtifact(await this.requestJson(\"POST\", path, body), \"POST\", path);\n }\n async listSessionTasks(captainId, session, statusOrOptions = {}) {\n const options = typeof statusOrOptions === \"string\" ? { status: statusOrOptions } : statusOrOptions;\n if (options.scope !== undefined && options.pair !== undefined)\n throw new Error(\"scope and pair are mutually exclusive\");\n const query = new URLSearchParams();\n if (options.status)\n query.set(\"status\", options.status);\n if (options.scope)\n query.set(\"scope\", options.scope);\n if (options.pair)\n query.set(\"pair\", options.pair);\n if (options.after)\n query.set(\"after\", options.after);\n if (options.limit !== undefined)\n query.set(\"limit\", String(options.limit));\n if (options.query)\n query.set(\"query\", options.query);\n const suffix = query.size ? `?${query.toString()}` : \"\";\n const path = `${_sessionTaskPath(captainId, session)}${suffix}`;\n return _parseSessionTaskListResponse(await this.requestJson(\"GET\", path), path);\n }\n async getSessionTask(captainId, session, id) {\n const path = _sessionTaskPath(captainId, session, id);\n return _parseSessionTaskResponse(await this.requestJson(\"GET\", path), \"GET\", path);\n }\n async activateSessionTask(captainId, session, id) {\n const path = `${_sessionTaskPath(captainId, session, id)}/activate`;\n return _parseSessionTaskResponse(await this.requestJson(\"POST\", path, {}), \"POST\", path);\n }\n async pauseSessionTask(captainId, session, id) {\n const path = `${_sessionTaskPath(captainId, session, id)}/pause`;\n return _parseSessionTaskResponse(await this.requestJson(\"POST\", path, {}), \"POST\", path);\n }\n async listSessionTaskEvents(captainId, session, id, options = {}) {\n if (options.after !== undefined && options.before !== undefined)\n throw new Error(\"after and before are mutually exclusive\");\n const query = new URLSearchParams();\n if (options.limit !== undefined)\n query.set(\"limit\", String(options.limit));\n if (options.after)\n query.set(\"after\", options.after);\n if (options.before)\n query.set(\"before\", options.before);\n const suffix = query.size ? `?${query.toString()}` : \"\";\n const path = `${_sessionTaskPath(captainId, session, id)}/events${suffix}`;\n return _parseSessionTaskEventsResponse(await this.requestJson(\"GET\", path), path);\n }\n async markSessionTaskReady(captainId, session, id, version, commit, findingsCounts) {\n return await this._transitionSessionTask(captainId, session, id, \"ready\", { version, ...(commit === undefined ? {} : { commit }), ...(findingsCounts === undefined ? {} : { findings_counts: findingsCounts }) });\n }\n async markSessionTaskNeedsChanges(captainId, session, id, version, reason, commit, findingsCounts) {\n return await this._transitionSessionTask(captainId, session, id, \"needs-changes\", { version, reason, ...(commit === undefined ? {} : { commit }), ...(findingsCounts === undefined ? {} : { findings_counts: findingsCounts }) });\n }\n async parkSessionTask(captainId, session, id, body) {\n return await this._transitionSessionTask(captainId, session, id, \"park\", body);\n }\n async unparkSessionTask(captainId, session, id, version) {\n return await this._transitionSessionTask(captainId, session, id, \"unpark\", { version });\n }\n async closeSessionTask(captainId, session, id, version, findingsCounts) {\n return await this._transitionSessionTask(captainId, session, id, \"close\", { version, ...(findingsCounts === undefined ? {} : { findings_counts: findingsCounts }) });\n }\n async getTeamAgentSlots(captainId, session) {\n const path = `${_sessionWorkflowPath(captainId, session)}/agent-slots`;\n return _parseTeamAgentSlotsResponse(await this.requestJson(\"GET\", path), \"GET\", path);\n }\n async applyBuiltinTeamTemplate(captainId, session, templateId) {\n const path = `${_sessionWorkflowPath(captainId, session)}/team-builder/apply-template`;\n const body = { template_id: templateId, confirm_task_fixed: true };\n return _parseTeamAgentSlotsResponse(await this.requestJson(\"POST\", path, body), \"POST\", path);\n }\n async materializeTeamAgentSlot(captainId, session, body) {\n const path = `${_sessionWorkflowPath(captainId, session)}/agent-slots/materialize`;\n const response = await this.requestJson(\"POST\", path, body);\n return _parseTeamAgentSlot(response.agent_slot, \"POST\", path);\n }\n async getAgentStartRequest(captainId, session, requestId, timeoutMs) {\n const path = `${_captainSessionPath(captainId, session)}/agent-start-requests/${segment(requestId)}`;\n const response = await this.requestJson(\"GET\", path, undefined, timeoutMs);\n const request = parseAgentStartRequest(response.request, \"GET\", path);\n if (request.id !== requestId || request.session !== session)\n throw new RelayProtocolError(\"GET\", path, \"request identity does not match path\");\n return request;\n }\n async getAgentMonitor(agentName) {\n requireSegment(agentName, \"agentName\");\n const response = await this.requestJson(\"GET\", `/api/v1/agents/${segment(agentName)}/monitor`);\n return parseAgentMonitor(response);\n }\n async _transitionSessionTask(captainId, session, id, action, body) {\n const path = `${_sessionTaskPath(captainId, session, id)}/${action}`;\n return _parseSessionTaskResponse(await this.requestJson(\"POST\", path, body), \"POST\", path);\n }\n async patchAgent(agentName, body) {\n requireSegment(agentName, \"agentName\");\n const patch = normalizeAgentPatch(body);\n const response = await this.requestJson(\"PATCH\", `/api/v1/agents/${segment(agentName)}`, patch);\n if (!response.agent || typeof response.agent !== \"object\") {\n throw new RelayProtocolError(\"PATCH\", `/api/v1/agents/${segment(agentName)}`, \"missing agent payload\");\n }\n return { agent: response.agent };\n }\n // Claim the next pending resolve command for this agent. The relay returns {} when none is queued\n // (a quick poll, not a long-poll), or {\"command\": {...}} with the claimed command.\n async pollResolveCommand(agentName, signal) {\n requireSegment(agentName, \"agentName\");\n const path = `/api/v1/agents/${segment(agentName)}/resolve/poll`;\n const body = await this.requestJson(\"GET\", path, undefined, this.defaultTimeoutMs, signal);\n if (body.command === undefined || body.command === null)\n return null;\n return parseResolveCommand(body.command, path);\n }\n // Report a resolve command's outcome. result is the action-specific object on success, null on failure.\n async submitResolveResult(agentName, commandId, body) {\n requireSegment(agentName, \"agentName\");\n requireSegment(commandId, \"commandId\");\n if (body.status !== \"done\" && body.status !== \"failed\")\n throw new Error(\"resolve result status must be done or failed\");\n await this.requestOptionalJson(\"POST\", `/api/v1/agents/${segment(agentName)}/resolve/${segment(commandId)}/result`, { status: body.status, result: body.result, error: body.error });\n }\n async registerClientHost(captainId, body) {\n requireCaptainId(captainId);\n requireSegment(body.hostId, \"hostId\");\n requireNonEmpty(body.displayName, \"displayName\");\n validateClientBuildMetadata(body.clientVersion, body.clientGitSha);\n const path = `/api/v1/captains/${segment(captainId)}/client-hosts/register`;\n const response = await this.requestJson(\"POST\", path, {\n host_id: body.hostId,\n display_name: body.displayName,\n ...(body.clientVersion === undefined ? {} : { client_version: body.clientVersion }),\n ...(body.clientGitSha === undefined ? {} : { client_git_sha: body.clientGitSha }),\n });\n return parseClientHostReport(response, \"POST\", path);\n }\n async heartbeatClientHost(captainId, hostId, body = {}) {\n requireCaptainId(captainId);\n requireSegment(hostId, \"hostId\");\n if (body.displayName !== undefined)\n requireNonEmpty(body.displayName, \"displayName\");\n validateClientBuildMetadata(body.clientVersion, body.clientGitSha);\n const path = `/api/v1/captains/${segment(captainId)}/client-hosts/${segment(hostId)}/heartbeat`;\n const response = await this.requestJson(\"POST\", path, {\n ...(body.displayName === undefined ? {} : { display_name: body.displayName }),\n ...(body.clientVersion === undefined ? {} : { client_version: body.clientVersion }),\n ...(body.clientGitSha === undefined ? {} : { client_git_sha: body.clientGitSha }),\n });\n return parseClientHostReport(response, \"POST\", path);\n }\n // The host daemon's reconcile authority: live (unarchived) member names bound\n // to this host. Fetched on demand only when a reconcile cycle is due. A 404\n // from an older relay throws (RelayHttpError) — the daemon treats that as an\n // unknown set and skips reclaim, so a live worktree is never removed on a\n // missing endpoint. An empty array is authoritative (\"no live members\").\n async listHostActiveAgents(captainId, hostId) {\n requireCaptainId(captainId);\n requireSegment(hostId, \"hostId\");\n const path = `/api/v1/captains/${segment(captainId)}/client-hosts/${segment(hostId)}/active-agents`;\n const response = await this.requestJson(\"GET\", path);\n if (!Array.isArray(response.active_agents) || response.active_agents.some((name) => typeof name !== \"string\")) {\n throw new RelayProtocolError(\"GET\", path, \"active_agents must be an array of strings\");\n }\n return response.active_agents;\n }\n async listClientHosts(captainId) {\n requireCaptainId(captainId);\n const path = `/api/v1/captains/${segment(captainId)}/client-hosts`;\n const response = await this.requestJson(\"GET\", path);\n if (!Array.isArray(response.hosts)) {\n throw new RelayProtocolError(\"GET\", path, \"hosts must be an array\");\n }\n return { hosts: response.hosts.map((host) => parseClientHost(host, \"GET\", path)) };\n }\n async replaceClientHostWorkspaces(captainId, hostId, body) {\n requireCaptainId(captainId);\n requireSegment(hostId, \"hostId\");\n const path = `/api/v1/captains/${segment(captainId)}/client-hosts/${segment(hostId)}/workspaces`;\n const response = await this.requestJson(\"POST\", path, { workspaces: body.workspaces.map(normalizeClientHostWorkspaceReport) });\n return parseClientHostWorkspacesResponse(response, \"POST\", path);\n }\n async listClientHostWorkspaces(captainId, hostId) {\n requireCaptainId(captainId);\n requireSegment(hostId, \"hostId\");\n const path = `/api/v1/captains/${segment(captainId)}/client-hosts/${segment(hostId)}/workspaces`;\n const response = await this.requestJson(\"GET\", path);\n return parseClientHostWorkspacesResponse(response, \"GET\", path);\n }\n async claimAgentStartRequest(captainId, hostId, signal) {\n requireCaptainId(captainId);\n requireSegment(hostId, \"hostId\");\n const path = `/api/v1/captains/${segment(captainId)}/client-hosts/${segment(hostId)}/agent-start-requests/claim`;\n const response = await this.requestJson(\"POST\", path, {}, this.defaultTimeoutMs, signal);\n if (response.request === null)\n return null;\n if (response.request === undefined)\n throw new RelayProtocolError(\"POST\", path, \"request field is required\");\n return parseAgentStartRequest(response.request, \"POST\", path);\n }\n async getTaskRepoTipWanted(captainId) {\n requireCaptainId(captainId);\n const path = `/api/v1/captains/${segment(captainId)}/task-repo-tips/wanted`;\n const response = await this.requestJson(\"GET\", path);\n if (!Array.isArray(response.wanted))\n throw new RelayProtocolError(\"GET\", path, \"wanted field is required\");\n return response;\n }\n async putTaskRepoTips(captainId, session, body) {\n requireCaptainId(captainId);\n requireSegment(session, \"session\");\n const path = `/api/v1/captains/${segment(captainId)}/sessions/${segment(session)}/task-repo/tips`;\n return this.requestJson(\"PUT\", path, body);\n }\n async markAgentStartRequestStarted(captainId, hostId, requestId, body = {}) {\n return this.transitionAgentStartRequest(captainId, hostId, requestId, \"started\", body.result === undefined ? {} : { result: body.result });\n }\n async markAgentStartRequestFailed(captainId, hostId, requestId, body = {}) {\n if (body.error !== undefined)\n requireNonEmpty(body.error, \"error\");\n return this.transitionAgentStartRequest(captainId, hostId, requestId, \"failed\", {\n ...(body.error === undefined ? {} : { error: body.error }),\n ...(body.result === undefined ? {} : { result: body.result }),\n });\n }\n async createKey(body) {\n validateKeyCreate(body);\n const response = await this.requestJson(\"POST\", \"/api/v1/keys\", body);\n if (typeof response.id !== \"string\" || typeof response.key !== \"string\") {\n throw new RelayProtocolError(\"POST\", \"/api/v1/keys\", \"invalid key response\");\n }\n return response;\n }\n async ingestRagDocument(captainId, teamId, body) {\n requireCaptainId(captainId);\n requireSegment(teamId, \"teamId\");\n validateRagIngestDocument(body);\n const path = `/api/v1/rag/captains/${segment(captainId)}/teams/${segment(teamId)}/ingest`;\n const response = await this.requestJson(\"POST\", path, normalizeRagIngestDocument(body));\n return parseRagIngestDocumentResponse(response, \"POST\", path);\n }\n async upsertRagCard(captainId, teamId, body) {\n requireCaptainId(captainId);\n requireSegment(teamId, \"teamId\");\n validateRagCardUpsert(body);\n const path = `/api/v1/rag/captains/${segment(captainId)}/teams/${segment(teamId)}/docs`;\n return parseRagCardUpsertResponse(await this.requestJson(\"POST\", path, body), path, body.key);\n }\n async searchRag(captainId, teamId, text) {\n requireCaptainId(captainId);\n requireSegment(teamId, \"teamId\");\n requireNonEmpty(text, \"text\");\n const path = `/api/v1/rag/captains/${segment(captainId)}/teams/${segment(teamId)}/query`;\n return parseRagSearchResponse(await this.requestJson(\"POST\", path, { text }), \"POST\", path);\n }\n async getRagMemoryIndex(captainId, teamId) {\n requireCaptainId(captainId);\n requireSegment(teamId, \"teamId\");\n const path = `/api/v1/rag/captains/${segment(captainId)}/teams/${segment(teamId)}/index`;\n return parseRagMemoryIndex(await this.requestJson(\"GET\", path), \"GET\", path);\n }\n async getRagEntitlement(captainId, teamId) {\n requireCaptainId(captainId);\n requireSegment(teamId, \"teamId\");\n const path = `/api/v1/rag/captains/${segment(captainId)}/teams/${segment(teamId)}/entitlement`;\n return parseRagEntitlement(await this.requestJson(\"GET\", path), \"GET\", path);\n }\n async setRagCardPin(captainId, teamId, key, pinned) {\n requireCaptainId(captainId);\n requireSegment(teamId, \"teamId\");\n requireNonEmpty(key, \"key\");\n const path = `/api/v1/rag/captains/${segment(captainId)}/teams/${segment(teamId)}/${pinned ? \"pin\" : \"unpin\"}/${segment(key)}`;\n return parseRagCard(await this.requestJson(\"POST\", path, {}), \"POST\", path, key);\n }\n async getRagCurrentCard(captainId, teamId, key) {\n requireCaptainId(captainId);\n requireSegment(teamId, \"teamId\");\n requireNonEmpty(key, \"key\");\n const path = `/api/v1/rag/captains/${segment(captainId)}/teams/${segment(teamId)}/current/${segment(key)}`;\n return parseRagCard(await this.requestJson(\"GET\", path), \"GET\", path, key);\n }\n async fetchManagedMaterialization(captainId, teamId, agentName, engine, cursor, pageCursor) {\n requireCaptainId(captainId);\n requireSegment(teamId, \"teamId\");\n requireSegment(agentName, \"agentName\");\n if (engine !== \"claude\" && engine !== \"codex\")\n throw new Error(\"engine must be claude or codex\");\n const query = new URLSearchParams({ engine });\n if (pageCursor?.trim())\n query.set(\"page_cursor\", pageCursor.trim());\n else if (cursor?.trim())\n query.set(\"cursor\", cursor.trim());\n const path = `/api/v1/rag/captains/${segment(captainId)}/teams/${segment(teamId)}/agents/${segment(agentName)}/managed-materialization?${query.toString()}`;\n const response = await this.requestManagedMaterialization(path, pageCursor?.trim() ? undefined : cursor);\n return parseManagedMaterializationResponse(response, \"GET\", path, cursor);\n }\n async reportManagedMaterializationDrift(captainId, teamId, body) {\n requireCaptainId(captainId);\n requireSegment(teamId, \"teamId\");\n validateManagedDrift(body);\n await this.requestOptionalJson(\"POST\", `/api/v1/rag/captains/${segment(captainId)}/teams/${segment(teamId)}/managed-materialization/drift`, body);\n }\n async listKeys() {\n const response = await this.requestJson(\"GET\", \"/api/v1/keys\");\n if (!Array.isArray(response.keys)) {\n throw new RelayProtocolError(\"GET\", \"/api/v1/keys\", \"keys must be an array\");\n }\n return { keys: response.keys };\n }\n async revokeKey(id) {\n requireSegment(id, \"id\");\n const response = await this.requestJson(\"DELETE\", `/api/v1/keys/${segment(id)}`);\n if (!(\"key\" in response)) {\n throw new RelayProtocolError(\"DELETE\", `/api/v1/keys/${segment(id)}`, \"missing key payload\");\n }\n return { key: response.key };\n }\n async createEnrollment(input) {\n requireSegment(input.session, \"session\");\n requireSegment(input.agentName, \"agentName\");\n requireSegment(input.host, \"host\");\n if (input.captainId !== undefined && !/^\\d+$/.test(input.captainId.trim())) {\n throw new Error(\"captainId must be a numeric string\");\n }\n const key = await this.createKey({\n name: input.name ?? input.agentName,\n role: input.role,\n session: input.session,\n agent_name: input.agentName,\n host: input.host,\n ...(input.captainId === undefined ? {} : { captain_id: input.captainId.trim() }),\n });\n return {\n key_id: key.id,\n relay_url: this.relayUrl,\n token: key.key,\n ...(input.captainId === undefined ? {} : { captain_id: input.captainId.trim() }),\n agent_name: input.agentName,\n session: input.session,\n role: input.role,\n roles: [input.role],\n host: input.host,\n created_at: new Date().toISOString(),\n };\n }\n async transitionAgentStartRequest(captainId, hostId, requestId, status, body) {\n requireCaptainId(captainId);\n requireSegment(hostId, \"hostId\");\n requireSegment(requestId, \"requestId\");\n const path = `/api/v1/captains/${segment(captainId)}/client-hosts/${segment(hostId)}/agent-start-requests/${segment(requestId)}/${status}`;\n const response = await this.requestJson(\"POST\", path, body);\n if (response.request === undefined || response.request === null) {\n throw new RelayProtocolError(\"POST\", path, \"request field is required\");\n }\n const parsed = parseAgentStartRequest(response.request, \"POST\", path);\n if (response.error !== undefined && typeof response.error !== \"string\") {\n throw new RelayProtocolError(\"POST\", path, \"error must be a string\");\n }\n if (parsed.status !== status) {\n throw new RelayProtocolError(\"POST\", path, `request.status must be ${status}`);\n }\n return response.error === undefined ? { request: parsed } : { request: parsed, error: response.error };\n }\n async requestJson(method, path, body, timeoutMs = this.defaultTimeoutMs, signal) {\n return await this.request(method, path, body, timeoutMs, signal, async (response) => {\n const contentType = response.headers.get(\"Content-Type\") ?? \"\";\n if (!contentType.includes(JSON_CONTENT_TYPE)) {\n await response.text();\n throw new RelayProtocolError(method, path, \"response is not JSON\");\n }\n let parsed;\n try {\n const text = await response.text();\n parsed = JSON.parse(text);\n attachMailboxPayloadSources(parsed, text);\n }\n catch (error) {\n if (error instanceof SyntaxError) {\n throw new RelayProtocolError(method, path, \"response JSON is invalid\");\n }\n throw error;\n }\n if (!parsed || typeof parsed !== \"object\" || Array.isArray(parsed)) {\n throw new RelayProtocolError(method, path, \"response JSON must be an object\");\n }\n return parsed;\n });\n }\n async requestOptionalJson(method, path, body, timeoutMs = this.defaultTimeoutMs, signal) {\n await this.request(method, path, body, timeoutMs, signal, async (response) => {\n const text = await response.text();\n if (!text.trim())\n return;\n const contentType = response.headers.get(\"Content-Type\") ?? \"\";\n if (!contentType.includes(JSON_CONTENT_TYPE)) {\n throw new RelayProtocolError(method, path, \"response is not JSON\");\n }\n let parsed;\n try {\n parsed = JSON.parse(text);\n }\n catch (error) {\n if (error instanceof SyntaxError) {\n throw new RelayProtocolError(method, path, \"response JSON is invalid\");\n }\n throw error;\n }\n if (!parsed || typeof parsed !== \"object\" || Array.isArray(parsed)) {\n throw new RelayProtocolError(method, path, \"response JSON must be an object\");\n }\n });\n }\n async requestText(method, path) {\n return await this.request(method, path, undefined, this.defaultTimeoutMs, undefined, async (response) => response.text());\n }\n async requestManagedMaterialization(path, cursor) {\n const controller = new AbortController();\n const timeout = setTimeout(() => controller.abort(), this.defaultTimeoutMs);\n try {\n const response = await this.fetchImpl(`${this.relayUrl}${path}`, {\n method: \"GET\",\n headers: {\n Accept: JSON_CONTENT_TYPE,\n Authorization: `Bearer ${this.bearerToken}`,\n ...(cursor?.trim() ? { \"If-None-Match\": cursor.trim() } : {}),\n },\n signal: controller.signal,\n });\n if (response.status === 304)\n return \"not_modified_304\";\n if (!response.ok)\n throw new RelayHttpError(\"GET\", path, response.status, redact(await response.text(), this.bearerToken));\n const contentType = response.headers.get(\"Content-Type\") ?? \"\";\n if (!contentType.includes(JSON_CONTENT_TYPE)) {\n await response.text();\n throw new RelayProtocolError(\"GET\", path, \"response is not JSON\");\n }\n let parsed;\n try {\n parsed = await response.json();\n }\n catch (error) {\n if (error instanceof SyntaxError) {\n throw new RelayProtocolError(\"GET\", path, \"response JSON is invalid\");\n }\n throw error;\n }\n if (!parsed || typeof parsed !== \"object\" || Array.isArray(parsed)) {\n throw new RelayProtocolError(\"GET\", path, \"response JSON must be an object\");\n }\n return parsed;\n }\n catch (error) {\n if (error instanceof RelayError)\n throw error;\n throw new RelayNetworkError(\"GET\", path, redact(errorMessage(error), this.bearerToken));\n }\n finally {\n clearTimeout(timeout);\n }\n }\n async request(method, path, body, timeoutMs, signal, readResponse) {\n const controller = new AbortController();\n const abort = () => controller.abort(signal?.reason);\n const timeout = setTimeout(() => controller.abort(), timeoutMs);\n if (signal?.aborted)\n abort();\n signal?.addEventListener(\"abort\", abort, { once: true });\n try {\n const response = await this.fetchImpl(`${this.relayUrl}${path}`, {\n method,\n headers: {\n Accept: body === undefined ? \"*/*\" : JSON_CONTENT_TYPE,\n Authorization: `Bearer ${this.bearerToken}`,\n Connection: \"close\",\n ...(body === undefined ? {} : { \"Content-Type\": JSON_CONTENT_TYPE }),\n },\n body: body === undefined ? undefined : JSON.stringify(body),\n signal: controller.signal,\n });\n if (!response.ok) {\n throw new RelayHttpError(method, path, response.status, redact(await response.text(), this.bearerToken));\n }\n return await readResponse(response);\n }\n catch (error) {\n if (error instanceof RelayError)\n throw error;\n throw new RelayNetworkError(method, path, redact(errorMessage(error), this.bearerToken));\n }\n finally {\n clearTimeout(timeout);\n signal?.removeEventListener(\"abort\", abort);\n }\n }\n}\nclass NodeRelayHttpClient {\n httpAgent = new http.Agent({ keepAlive: false });\n httpsAgent = new https.Agent({ keepAlive: false });\n activeRequests = new Set();\n fetch = async (input, init = {}) => {\n const url = requestUrl(input);\n const body = requestBody(init.body);\n const headers = new Headers(init.headers);\n if (body)\n headers.set(\"Content-Length\", String(body.byteLength));\n return await new Promise((resolve, reject) => {\n let settled = false;\n let active = null;\n let responseStarted = false;\n const settleReject = (error) => {\n if (settled)\n return;\n settled = true;\n if (active)\n this.activeRequests.delete(active);\n reject(error);\n };\n const settleResolve = (response) => {\n if (settled)\n return;\n settled = true;\n if (active)\n this.activeRequests.delete(active);\n resolve(response);\n };\n const request = (url.protocol === \"https:\" ? https : http).request(url, {\n method: init.method ?? \"GET\",\n headers: headersRecord(headers),\n agent: url.protocol === \"https:\" ? this.httpsAgent : this.httpAgent,\n }, (response) => {\n responseStarted = true;\n const chunks = [];\n let ended = false;\n response.on(\"data\", (chunk) => {\n chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk));\n });\n response.on(\"end\", () => {\n ended = true;\n try {\n settleResolve(_nodeResponse(response, chunks));\n }\n catch (error) {\n settleReject(error instanceof Error ? error : new Error(String(error)));\n }\n });\n response.on(\"error\", (error) => settleReject(error));\n response.on(\"close\", () => {\n if (!ended)\n settleReject(new Error(\"relay response closed before end\"));\n });\n });\n active = {\n fail: (error) => {\n settleReject(error);\n request.destroy(error);\n },\n };\n this.activeRequests.add(active);\n const abort = () => {\n const reason = init.signal?.reason;\n active?.fail(reason instanceof Error ? reason : new Error(\"relay request aborted\"));\n };\n request.on(\"error\", (error) => settleReject(error));\n if (init.signal?.aborted)\n abort();\n init.signal?.addEventListener(\"abort\", abort, { once: true });\n request.on(\"close\", () => {\n init.signal?.removeEventListener(\"abort\", abort);\n if (!settled && !responseStarted)\n settleReject(new Error(\"relay request closed before response\"));\n });\n if (!settled) {\n if (body)\n request.write(body);\n request.end();\n }\n });\n };\n close() {\n const error = new Error(\"relay client closed\");\n for (const active of [...this.activeRequests])\n active.fail(error);\n this.httpAgent.destroy();\n this.httpsAgent.destroy();\n }\n}\nfunction requestUrl(input) {\n if (typeof input === \"string\" || input instanceof URL)\n return new URL(input);\n return new URL(input.url);\n}\nfunction requestBody(body) {\n if (body === undefined || body === null)\n return null;\n if (typeof body === \"string\")\n return Buffer.from(body);\n if (body instanceof URLSearchParams)\n return Buffer.from(body.toString());\n if (body instanceof ArrayBuffer)\n return Buffer.from(body);\n if (ArrayBuffer.isView(body))\n return Buffer.from(body.buffer, body.byteOffset, body.byteLength);\n throw new TypeError(\"unsupported relay request body type\");\n}\nfunction responseHeaders(input) {\n const headers = new Headers();\n for (const [key, value] of Object.entries(input)) {\n if (value === undefined)\n continue;\n if (Array.isArray(value)) {\n for (const item of value)\n headers.append(key, item);\n continue;\n }\n headers.set(key, value);\n }\n return headers;\n}\nfunction _nodeResponse(response, chunks) {\n const status = response.statusCode ?? 0;\n const body = status === 204 || status === 205 || status === 304\n ? null\n : new Uint8Array(Buffer.concat(chunks));\n return new Response(body, {\n status,\n statusText: response.statusMessage,\n headers: responseHeaders(response.headers),\n });\n}\nfunction headersRecord(headers) {\n const out = {};\n headers.forEach((value, key) => { out[key] = value; });\n return out;\n}\nfunction normalizeMailboxBody(body) {\n return { ...body, payload_kind: body.payload_kind ?? \"raw\" };\n}\nfunction validateMailboxPayload(body) {\n const hasJson = Object.hasOwn(body, \"payload_json\");\n const hasBytes = Object.hasOwn(body, \"payload_bytes_base64\");\n if (hasJson === hasBytes)\n throw new Error(\"specify exactly one mailbox payload\");\n if (hasJson && body.payload_json === undefined)\n throw new Error(\"payload_json cannot be undefined\");\n if (hasJson && body.payload_json === null)\n throw new Error(\"payload_json cannot be null\");\n if (hasBytes && typeof body.payload_bytes_base64 !== \"string\") {\n throw new Error(\"payload_bytes_base64 must be a string\");\n }\n}\nfunction hasSessionMailboxRecipients(body) {\n const hasAgents = hasRecipientArray(body.to_agents, \"to_agents\");\n const hasRoles = hasRecipientArray(body.to_roles, \"to_roles\");\n const hasHost = hasHostRecipient(body.to_host);\n if (hasAgents && (hasRoles || hasHost))\n throw new Error(\"to_agents cannot be combined with to_roles or to_host\");\n return hasAgents || hasRoles || hasHost;\n}\nfunction hasRecipientArray(value, label) {\n if (value === undefined)\n return false;\n if (!Array.isArray(value))\n throw new Error(`${label} must be a string array`);\n if (value.some((item) => typeof item !== \"string\" || !item.trim())) {\n throw new Error(`${label} must not contain empty values`);\n }\n return value.length > 0;\n}\nfunction hasHostRecipient(value) {\n if (value === undefined)\n return false;\n const hosts = Array.isArray(value) ? value : [value];\n if (hosts.some((host) => typeof host !== \"string\" || !host.trim())) {\n throw new Error(\"to_host must not contain empty values\");\n }\n return hosts.length > 0;\n}\nfunction validateKeyCreate(body) {\n requireSegment(body.name, \"name\");\n if (body.role !== undefined) {\n body.role = normalizeRole(body.role, \"role\");\n return;\n }\n if (body.roles !== undefined) {\n body.role = normalizeLegacyRole(body.roles);\n delete body.roles;\n return;\n }\n throw new Error(\"role must be a non-empty string\");\n}\nfunction normalizeAgentPatch(body) {\n if (!Object.hasOwn(body, \"session\")\n && !Object.hasOwn(body, \"role\")\n && !Object.hasOwn(body, \"roles\")\n && !Object.hasOwn(body, \"engine\")\n && !Object.hasOwn(body, \"transport\")\n && !Object.hasOwn(body, \"cwd\")\n && !Object.hasOwn(body, \"restart_command\")\n && !Object.hasOwn(body, \"session_handle\")) {\n throw new Error(\"agent patch requires session, role, engine, transport, cwd, restart_command, or session_handle\");\n }\n const patch = { ...body };\n if (body.session !== undefined)\n requireSegment(body.session, \"session\");\n if (body.role !== undefined) {\n patch.role = normalizeRole(body.role, \"role\");\n delete patch.roles;\n }\n else if (body.roles !== undefined) {\n patch.role = normalizeLegacyRole(body.roles);\n delete patch.roles;\n }\n if (body.engine !== undefined && !isAgentEngineId(body.engine))\n throw new Error(\"engine must be a bounded identifier when provided\");\n if (body.engine !== undefined && !KNOWN_AGENT_ENGINE_IDS.has(body.engine) && body.restart_command === undefined) {\n throw new Error(\"restart_command is required when patching a custom engine\");\n }\n if (body.transport !== undefined && ![\"tmux\", \"sdk\", \"headless\", \"pty\"].includes(body.transport)) {\n throw new Error(\"transport must be tmux, sdk, headless, or pty when provided\");\n }\n if (body.cwd !== undefined && !validProfileString(body.cwd))\n throw new Error(\"cwd must be a non-empty string without control characters\");\n if (body.restart_command !== undefined && !validProfileString(body.restart_command)) {\n throw new Error(\"restart_command must be a non-empty string without control characters\");\n }\n if (body.session_handle !== undefined && body.session_handle !== null && !body.session_handle.trim()) {\n throw new Error(\"session_handle must be null or a non-empty string\");\n }\n return patch;\n}\nconst AGENT_ENGINE_ID_RE = /^[a-z][a-z0-9._-]{0,63}$/;\nconst KNOWN_AGENT_ENGINE_IDS = new Set([\"claude\", \"codex\", \"opencode\"]);\nconst CONTROL_CHAR_RE = /[\\u0000-\\u001F\\u007F]/;\nconst MAX_PROFILE_STRING_LENGTH = 1024;\nfunction isAgentEngineId(value) {\n return AGENT_ENGINE_ID_RE.test(value)\n && !/[._-]$/.test(value)\n && !value.includes(\"..\");\n}\nfunction validProfileString(value) {\n const trimmed = value.trim();\n return trimmed.length > 0 && trimmed.length <= MAX_PROFILE_STRING_LENGTH && !CONTROL_CHAR_RE.test(trimmed);\n}\nfunction normalizeRole(role, label) {\n if (typeof role !== \"string\" || !role.trim())\n throw new Error(`${label} must be a non-empty string`);\n return role.trim();\n}\nfunction normalizeLegacyRole(roles) {\n if (!Array.isArray(roles) || roles.length !== 1)\n throw new Error(\"roles must contain exactly one role\");\n return normalizeRole(roles[0], \"roles[0]\");\n}\nfunction parseAgentMonitor(value) {\n if (typeof value.name !== \"string\") {\n throw new RelayProtocolError(\"GET\", \"/api/v1/agents/{name}/monitor\", \"name must be a string\");\n }\n if (value.engine !== null && typeof value.engine !== \"string\") {\n throw new RelayProtocolError(\"GET\", \"/api/v1/agents/{name}/monitor\", \"engine must be string or null\");\n }\n if (typeof value.should_resume !== \"boolean\") {\n throw new RelayProtocolError(\"GET\", \"/api/v1/agents/{name}/monitor\", \"should_resume must be boolean\");\n }\n if (value.session_handle !== null && typeof value.session_handle !== \"string\") {\n throw new RelayProtocolError(\"GET\", \"/api/v1/agents/{name}/monitor\", \"session_handle must be string or null\");\n }\n if (typeof value.context_checkpoint_percent !== \"number\" || !Number.isFinite(value.context_checkpoint_percent)) {\n throw new RelayProtocolError(\"GET\", \"/api/v1/agents/{name}/monitor\", \"context_checkpoint_percent must be a finite number\");\n }\n if (value.idle_presave_min !== null && (typeof value.idle_presave_min !== \"number\" || !Number.isFinite(value.idle_presave_min))) {\n throw new RelayProtocolError(\"GET\", \"/api/v1/agents/{name}/monitor\", \"idle_presave_min must be a finite number or null\");\n }\n const latestInbound = value.latest_message_inbound_at;\n const latestOutbound = value.latest_message_outbound_at;\n if (latestInbound !== null && typeof latestInbound !== \"string\") {\n throw new RelayProtocolError(\"GET\", \"/api/v1/agents/{name}/monitor\", \"latest_message_inbound_at must be string or null\");\n }\n if (latestOutbound !== null && typeof latestOutbound !== \"string\") {\n throw new RelayProtocolError(\"GET\", \"/api/v1/agents/{name}/monitor\", \"latest_message_outbound_at must be string or null\");\n }\n return {\n name: value.name,\n engine: value.engine,\n should_resume: value.should_resume,\n session_handle: value.session_handle,\n context_checkpoint_percent: value.context_checkpoint_percent,\n idle_presave_min: value.idle_presave_min,\n latest_message_inbound_at: latestInbound,\n latest_message_outbound_at: latestOutbound,\n };\n}\nfunction _parseWorkerRecord(value, path) {\n const worker = _requireObject(value, \"GET\", path, \"worker\");\n for (const field of [\"id\", \"session\", \"name\", \"host\", \"consumer_status\", \"last_seen\"]) {\n _requireStringField(worker, field, \"GET\", path, \"worker\");\n }\n if (!isStringArray(worker.capabilities) || !isStringArray(worker.caps)) {\n throw new RelayProtocolError(\"GET\", path, \"worker capabilities and caps must be string arrays\");\n }\n if (!Number.isSafeInteger(worker.max_concurrency) || worker.max_concurrency < 1) {\n throw new RelayProtocolError(\"GET\", path, \"worker.max_concurrency must be a positive integer\");\n }\n if (typeof worker.online !== \"boolean\") {\n throw new RelayProtocolError(\"GET\", path, \"worker.online must be boolean\");\n }\n return worker;\n}\nfunction _validateWorkerJobSubmit(body) {\n requireSegment(body.worker, \"worker\");\n if (body.argv.length === 0 || !body.argv[0]?.trim())\n throw new Error(\"job argv requires a command\");\n if (body.argv.some((arg) => typeof arg !== \"string\"))\n throw new Error(\"job argv must contain strings\");\n if (body.timeoutSec !== undefined)\n _validateWorkerJobTimeout(body.timeoutSec);\n}\nfunction _validateWorkerJobTimeout(value) {\n if (!Number.isFinite(value) || value < 1 || value > MAX_JOB_TIMEOUT_SECONDS) {\n throw new Error(`timeoutSec must be a number from 1 to ${MAX_JOB_TIMEOUT_SECONDS}`);\n }\n}\nfunction _validateWorkerJobWaitTimeout(value) {\n const maximum = MAX_JOB_TIMEOUT_SECONDS + WORKER_JOB_RESULT_GRACE_SECONDS;\n if (!Number.isFinite(value) || value < 1 || value > maximum) {\n throw new Error(`result wait timeoutSec must be a number from 1 to ${maximum}`);\n }\n}\nfunction _parseWorkerJobSubmitResponse(value, path) {\n if (typeof value.id !== \"string\" || !value.id || value.status !== \"queued\") {\n throw new RelayProtocolError(\"POST\", path, \"job submit response requires id and queued status\");\n }\n if (value.warning !== undefined && typeof value.warning !== \"string\") {\n throw new RelayProtocolError(\"POST\", path, \"job submit warning must be a string\");\n }\n return {\n id: value.id,\n status: \"queued\",\n ...(value.warning === undefined ? {} : { warning: value.warning }),\n };\n}\nfunction _parseWorkerJobResultResponse(value, path) {\n const status = value.status;\n if (!_isWorkerJobStatus(status))\n throw new RelayProtocolError(\"GET\", path, \"job status is invalid\");\n for (const field of [\"id\", \"created_at\"])\n _requireStringField(value, field, \"GET\", path, \"job\");\n _requireNullableStringFields(value, [\"started_at\", \"finished_at\", \"submitter_agent_name\"], path);\n _requireNullableNumberFields(value, [\"duration_sec\"], path);\n if (value.exit_code !== null && !Number.isSafeInteger(value.exit_code)) {\n throw new RelayProtocolError(\"GET\", path, \"job.exit_code must be an integer or null\");\n }\n const result = value.result === undefined ? undefined : _parseWorkerJobResult(value.result, path);\n if (_isTerminalJobStatus(status) && (result === undefined || value.exit_code !== result.exit_code)) {\n throw new RelayProtocolError(\"GET\", path, \"terminal job response requires a matching result\");\n }\n return { ...value, status, ...(result ? { result } : {}) };\n}\nfunction _parseWorkerJobResult(value, path) {\n const result = _requireObject(value, \"GET\", path, \"job result\");\n for (const field of [\"stdout\", \"stderr\"])\n _requireStringField(result, field, \"GET\", path, \"job result\", true);\n _requireNullableStringFields(result, [\"started_at\", \"ended_at\"], path, \"job result\");\n if (!Number.isSafeInteger(result.exit_code)) {\n throw new RelayProtocolError(\"GET\", path, \"job result.exit_code must be an integer\");\n }\n _requireNullableNumberFields(result, [\"duration_sec\"], path, \"job result\");\n if (!isStringArray(result.attached_file_paths)) {\n throw new RelayProtocolError(\"GET\", path, \"job result.attached_file_paths must be a string array\");\n }\n return result;\n}\nfunction _isWorkerJobStatus(value) {\n return value === \"queued\" || value === \"running\" || value === \"done\"\n || value === \"failed\" || value === \"cancelled\";\n}\nfunction _isTerminalJobStatus(value) {\n return value === \"done\" || value === \"failed\" || value === \"cancelled\";\n}\nfunction _requireObject(value, method, path, label) {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) {\n throw new RelayProtocolError(method, path, `${label} must be an object`);\n }\n return value;\n}\nfunction _requireStringField(value, field, method, path, label, allowEmpty = false) {\n if (typeof value[field] !== \"string\" || (!allowEmpty && !value[field])) {\n throw new RelayProtocolError(method, path, `${label}.${field} must be a string`);\n }\n}\nfunction _requireNullableStringFields(value, fields, path, label = \"job\") {\n for (const field of fields) {\n if (value[field] !== null && typeof value[field] !== \"string\") {\n throw new RelayProtocolError(\"GET\", path, `${label}.${field} must be a string or null`);\n }\n }\n}\nfunction _requireNullableNumberFields(value, fields, path, label = \"job\") {\n for (const field of fields) {\n if (value[field] !== null && (typeof value[field] !== \"number\" || !Number.isFinite(value[field]))) {\n throw new RelayProtocolError(\"GET\", path, `${label}.${field} must be a finite number or null`);\n }\n }\n}\nfunction parseScheduledEventResponse(value, method, path) {\n return { event: parseScheduledEvent(value.event, method, path) };\n}\nfunction parseScheduledEventListResponse(value, path) {\n if (!Array.isArray(value.events))\n throw new RelayProtocolError(\"GET\", path, \"events must be an array\");\n return { events: value.events.map((event) => parseScheduledEvent(event, \"GET\", path)) };\n}\nfunction parseScheduledEvent(value, method, path) {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) {\n throw new RelayProtocolError(method, path, \"event must be an object\");\n }\n const event = value;\n if (typeof event.id !== \"string\" || !event.id)\n throw new RelayProtocolError(method, path, \"event.id must be a non-empty string\");\n return event;\n}\nfunction _decisionPath(captainId, session, id) {\n return `/api/v1/captains/${segment(captainId)}/sessions/${segment(session)}/decisions${id ? `/${segment(id)}` : \"\"}`;\n}\nfunction _sessionTaskPath(captainId, session, id) {\n return `/api/v1/captains/${segment(captainId)}/sessions/${segment(session)}/tasks${id ? `/${segment(id)}` : \"\"}`;\n}\nfunction _parseDecisionResponse(value, method, path) {\n return { question: _parseDecisionQuestion(value.question, method, path) };\n}\nfunction _parseDecisionListResponse(value, path) {\n if (!Array.isArray(value.questions))\n throw new RelayProtocolError(\"GET\", path, \"questions must be an array\");\n return { questions: value.questions.map((question) => _parseDecisionQuestion(question, \"GET\", path)) };\n}\nfunction _parseSessionTaskResponse(value, method, path) {\n return { task: _parseSessionTask(value.task, method, path) };\n}\nfunction _sessionWorkflowPath(captainId, session) {\n return `${_captainSessionPath(captainId, session)}/workflow`;\n}\nfunction _captainSessionPath(captainId, session) {\n return `/api/v1/captains/${segment(captainId)}/sessions/${segment(session)}`;\n}\nfunction _parseTeamAgentSlotsResponse(value, method, path) {\n if (!Array.isArray(value.agent_slots))\n throw new RelayProtocolError(method, path, \"agent_slots must be an array\");\n return { agent_slots: value.agent_slots.map((slot) => _parseTeamAgentSlot(slot, method, path)) };\n}\nfunction _parseTeamAgentSlot(value, method, path) {\n if (!value || typeof value !== \"object\" || Array.isArray(value))\n throw new RelayProtocolError(method, path, \"agent_slot must be an object\");\n const slot = value;\n for (const field of [\"slot_id\", \"role_name\", \"status\"]) {\n if (typeof slot[field] !== \"string\" || !slot[field])\n throw new RelayProtocolError(method, path, `agent_slot.${field} must be a non-empty string`);\n }\n for (const field of [\"role\", \"agent_name\", \"host_id\", \"engine\", \"tmux_session_name\", \"template_id\"]) {\n if (slot[field] != null && typeof slot[field] !== \"string\")\n throw new RelayProtocolError(method, path, `agent_slot.${field} must be a string or null`);\n }\n return {\n slot_id: slot.slot_id,\n role_name: slot.role_name,\n status: slot.status,\n role: slot.role ?? null,\n agent_name: slot.agent_name ?? null,\n host_id: slot.host_id ?? null,\n engine: slot.engine ?? null,\n tmux_session_name: slot.tmux_session_name ?? null,\n template_id: slot.template_id ?? null,\n };\n}\nfunction _parseSessionArtifact(value, method, path) {\n for (const field of [\"id\", \"name\", \"sha256\", \"content_url\"]) {\n if (typeof value[field] !== \"string\" || !value[field])\n throw new RelayProtocolError(method, path, `${field} must be a non-empty string`);\n }\n if (!Number.isSafeInteger(value.size_bytes) || value.size_bytes < 0) {\n throw new RelayProtocolError(method, path, \"size_bytes must be a non-negative integer\");\n }\n return value;\n}\nfunction _parseSessionTaskListResponse(value, path) {\n if (typeof value.session !== \"string\" || !value.session)\n throw new RelayProtocolError(\"GET\", path, \"session must be a non-empty string\");\n if (!Array.isArray(value.tasks))\n throw new RelayProtocolError(\"GET\", path, \"tasks must be an array\");\n if (!Number.isSafeInteger(value.total) || value.total < 0)\n throw new RelayProtocolError(\"GET\", path, \"total must be a non-negative integer\");\n if (typeof value.has_more !== \"boolean\")\n throw new RelayProtocolError(\"GET\", path, \"has_more must be boolean\");\n if (value.next_cursor !== null && typeof value.next_cursor !== \"string\")\n throw new RelayProtocolError(\"GET\", path, \"next_cursor must be string or null\");\n return { session: value.session, tasks: value.tasks.map((task) => _parseSessionTask(task, \"GET\", path)), total: value.total, has_more: value.has_more, next_cursor: value.next_cursor };\n}\nfunction _parseSessionTaskEventsResponse(value, path) {\n if (typeof value.session !== \"string\" || !value.session)\n throw new RelayProtocolError(\"GET\", path, \"session must be a non-empty string\");\n if (typeof value.task_id !== \"string\" || !value.task_id)\n throw new RelayProtocolError(\"GET\", path, \"task_id must be a non-empty string\");\n if (typeof value.has_more !== \"boolean\")\n throw new RelayProtocolError(\"GET\", path, \"has_more must be boolean\");\n for (const field of [\"next_cursor\", \"previous_cursor\"]) {\n if (value[field] !== null && typeof value[field] !== \"string\")\n throw new RelayProtocolError(\"GET\", path, `${field} must be string or null`);\n }\n if (!Array.isArray(value.events))\n throw new RelayProtocolError(\"GET\", path, \"events must be an array\");\n return {\n session: value.session,\n task_id: value.task_id,\n next_cursor: value.next_cursor,\n previous_cursor: value.previous_cursor,\n has_more: value.has_more,\n events: value.events.map((event) => _parseSessionTaskEvent(event, path)),\n };\n}\nfunction _parseSessionTaskEvent(value, path) {\n if (!value || typeof value !== \"object\" || Array.isArray(value))\n throw new RelayProtocolError(\"GET\", path, \"task event must be an object\");\n const event = value;\n for (const field of [\"id\", \"task_id\", \"session\", \"to_status\", \"created_at\"]) {\n if (typeof event[field] !== \"string\" || !event[field])\n throw new RelayProtocolError(\"GET\", path, `event.${field} must be a non-empty string`);\n }\n if (!Number.isSafeInteger(event.task_version) || event.task_version < 1) {\n throw new RelayProtocolError(\"GET\", path, \"event.task_version must be a positive integer\");\n }\n for (const field of [\"from_status\", \"actor_agent_name\", \"actor_role\", \"source_message_id\", \"failure_reason\"]) {\n if (event[field] !== null && event[field] !== undefined && typeof event[field] !== \"string\") {\n throw new RelayProtocolError(\"GET\", path, `event.${field} must be a string or null`);\n }\n }\n if (event.models !== null && event.models !== undefined && (typeof event.models !== \"object\" || Array.isArray(event.models))) {\n throw new RelayProtocolError(\"GET\", path, \"event.models must be an object or null\");\n }\n return event;\n}\nfunction _parseSessionTask(value, method, path) {\n if (!value || typeof value !== \"object\" || Array.isArray(value))\n throw new RelayProtocolError(method, path, \"task must be an object\");\n const task = value;\n const required = [\"id\", \"session\", \"description\", \"status\", \"type\", \"priority\"];\n for (const field of required) {\n if (typeof task[field] !== \"string\" || !task[field])\n throw new RelayProtocolError(method, path, `task.${field} must be a non-empty string`);\n }\n if (!Number.isSafeInteger(task.version) || task.version < 1)\n throw new RelayProtocolError(method, path, \"task.version must be a positive integer\");\n _parseTaskParkedMetadata(task, method, path);\n _parseTaskSignalRejection(task.last_signal_rejection, method, path);\n return task;\n}\nfunction _parseTaskParkedMetadata(task, method, path) {\n const nullableStrings = [\n \"resume_condition\", \"resume_dependency_task_id\", \"owner_of_resume\", \"parked_at\", \"parked_duration\",\n ];\n for (const field of nullableStrings) {\n const value = task[field];\n if (value !== undefined && value !== null && typeof value !== \"string\") {\n throw new RelayProtocolError(method, path, `task.${field} must be a string or null`);\n }\n }\n if (typeof task.resume_dependency_task_id === \"string\" && !task.resume_dependency_task_id.trim()) {\n throw new RelayProtocolError(method, path, \"task.resume_dependency_task_id must be a non-empty string or null\");\n }\n if (task.parked_seconds !== undefined && task.parked_seconds !== null\n && (!Number.isSafeInteger(task.parked_seconds) || task.parked_seconds < 0)) {\n throw new RelayProtocolError(method, path, \"task.parked_seconds must be a non-negative integer or null\");\n }\n if (task.parked_over_24h !== undefined && typeof task.parked_over_24h !== \"boolean\") {\n throw new RelayProtocolError(method, path, \"task.parked_over_24h must be boolean\");\n }\n if (task.status === \"parked\")\n _parseRequiredParkedMetadata(task, method, path);\n}\nfunction _parseRequiredParkedMetadata(task, method, path) {\n for (const field of [\"resume_condition\", \"owner_of_resume\", \"parked_at\", \"parked_duration\"]) {\n if (typeof task[field] !== \"string\" || !task[field].trim()) {\n throw new RelayProtocolError(method, path, `task.${field} must be a non-empty string for a parked task`);\n }\n }\n if (!Number.isSafeInteger(task.parked_seconds) || task.parked_seconds < 0) {\n throw new RelayProtocolError(method, path, \"task.parked_seconds must be a non-negative integer for a parked task\");\n }\n if (typeof task.parked_over_24h !== \"boolean\") {\n throw new RelayProtocolError(method, path, \"task.parked_over_24h must be boolean for a parked task\");\n }\n}\nfunction _parseTaskSignalRejection(value, method, path) {\n if (value === undefined || value === null)\n return;\n if (!value || typeof value !== \"object\" || Array.isArray(value))\n throw new RelayProtocolError(method, path, \"task.last_signal_rejection must be an object or null\");\n const rejection = value;\n if (typeof rejection.reason !== \"string\" || !rejection.reason)\n throw new RelayProtocolError(method, path, \"task.last_signal_rejection.reason must be a non-empty string\");\n if (!Number.isSafeInteger(rejection.task_version) || rejection.task_version < 1)\n throw new RelayProtocolError(method, path, \"task.last_signal_rejection.task_version must be a positive integer\");\n if (rejection.actor_agent_name !== null && (typeof rejection.actor_agent_name !== \"string\" || !rejection.actor_agent_name))\n throw new RelayProtocolError(method, path, \"task.last_signal_rejection.actor_agent_name must be a non-empty string or null\");\n if (typeof rejection.created_at !== \"string\" || !rejection.created_at)\n throw new RelayProtocolError(method, path, \"task.last_signal_rejection.created_at must be a non-empty string\");\n}\nfunction _parseDecisionQuestion(value, method, path) {\n const question = _decisionObject(value, method, path, \"question\");\n return {\n id: _decisionString(question, \"id\", method, path), session: _decisionString(question, \"session\", method, path),\n asking_agent: _decisionString(question, \"asking_agent\", method, path), title: _decisionString(question, \"title\", method, path),\n context: _decisionString(question, \"context\", method, path), options: _decisionOptions(question.options, method, path),\n recommendation: _decisionRecommendation(question.recommendation, method, path),\n ..._decisionProtocolFields(question, method, path),\n allow_custom: _decisionBoolean(question, \"allow_custom\", method, path), multi_select: _decisionBoolean(question, \"multi_select\", method, path),\n status: _decisionString(question, \"status\", method, path), ..._decisionMetadata(question, method, path),\n ...(question.answer === undefined ? {} : { answer: _decisionAnswer(question.answer, method, path) }),\n };\n}\nfunction _decisionProtocolFields(question, method, path) {\n const moderator = _optionalDecisionSide(question.moderator_recommendation, method, path);\n const planner = _optionalDecisionSide(question.planner_recommendation, method, path);\n const delta = _optionalNullableDecisionString(question.delta, \"delta\", method, path);\n const confirmed = _optionalDecisionStrings(question.confirmed_so_far, \"confirmed_so_far\", method, path);\n return {\n ...(moderator !== undefined ? { moderator_recommendation: moderator } : {}),\n ...(planner !== undefined ? { planner_recommendation: planner } : {}),\n ...(delta !== undefined ? { delta } : {}), ...(confirmed !== undefined ? { confirmed_so_far: confirmed } : {}),\n };\n}\nfunction _decisionMetadata(question, method, path) {\n return {\n parent_question_id: _nullableDecisionString(question, \"parent_question_id\", method, path),\n superseded_by_question_id: _nullableDecisionString(question, \"superseded_by_question_id\", method, path),\n transcript_message_id: _nullableDecisionString(question, \"transcript_message_id\", method, path),\n answer_message_id: _nullableDecisionString(question, \"answer_message_id\", method, path),\n created_at: _decisionString(question, \"created_at\", method, path),\n updated_at: _decisionString(question, \"updated_at\", method, path),\n answered_at: _nullableDecisionString(question, \"answered_at\", method, path),\n };\n}\nfunction _decisionObject(value, method, path, name) {\n if (!value || typeof value !== \"object\" || Array.isArray(value))\n throw new RelayProtocolError(method, path, `${name} must be an object`);\n return value;\n}\nfunction _decisionString(value, name, method, path) {\n if (typeof value[name] !== \"string\" || !value[name])\n throw new RelayProtocolError(method, path, `${name} must be a non-empty string`);\n return value[name];\n}\nfunction _decisionBoolean(value, name, method, path) {\n if (typeof value[name] !== \"boolean\")\n throw new RelayProtocolError(method, path, `${name} must be a boolean`);\n return value[name];\n}\nfunction _nullableDecisionString(value, name, method, path) {\n if (value[name] === null)\n return null;\n return _decisionString(value, name, method, path);\n}\nfunction _optionalNullableDecisionString(value, name, method, path) {\n if (value === undefined || value === null)\n return value;\n if (typeof value !== \"string\")\n throw new RelayProtocolError(method, path, `${name} must be a string or null`);\n return value;\n}\nfunction _optionalDecisionStrings(value, name, method, path) {\n if (value === undefined)\n return undefined;\n if (!Array.isArray(value) || value.some((item) => typeof item !== \"string\" || !item)) {\n throw new RelayProtocolError(method, path, `${name} must contain non-empty strings`);\n }\n return value;\n}\nfunction _decisionOptions(value, method, path) {\n if (!Array.isArray(value))\n throw new RelayProtocolError(method, path, \"options must be an array\");\n return value.map((option) => {\n const parsed = _decisionObject(option, method, path, \"option\");\n return { key: _decisionString(parsed, \"key\", method, path), label: _decisionString(parsed, \"label\", method, path), description: _decisionString(parsed, \"description\", method, path) };\n });\n}\nfunction _decisionRecommendation(value, method, path) {\n const recommendation = _decisionObject(value, method, path, \"recommendation\");\n if (!Array.isArray(recommendation.reasons) || recommendation.reasons.some((reason) => typeof reason !== \"string\" || !reason)) {\n throw new RelayProtocolError(method, path, \"recommendation.reasons must be non-empty strings\");\n }\n return { option: _decisionString(recommendation, \"option\", method, path), reasons: recommendation.reasons };\n}\nfunction _optionalDecisionSide(value, method, path) {\n if (value === undefined || value === null)\n return value;\n return _decisionRecommendation(value, method, path);\n}\nfunction _decisionAnswer(value, method, path) {\n const answer = _decisionObject(value, method, path, \"answer\");\n return { action: _decisionString(answer, \"action\", method, path), ..._optionalDecisionAnswerFields(answer, method, path) };\n}\nfunction _optionalDecisionAnswerFields(answer, method, path) {\n const fields = [\"option\", \"text\", \"reason\"];\n return Object.fromEntries(fields.filter((field) => answer[field] !== undefined).map((field) => [field, _decisionString(answer, field, method, path)]));\n}\nfunction parseClientHostReport(value, method, path) {\n if (typeof value.heartbeat_interval_sec !== \"number\" || !Number.isFinite(value.heartbeat_interval_sec) || value.heartbeat_interval_sec <= 0) {\n throw new RelayProtocolError(method, path, \"heartbeat_interval_sec must be a positive number\");\n }\n return {\n host: parseClientHost(value.host, method, path),\n heartbeat_interval_sec: value.heartbeat_interval_sec,\n };\n}\nfunction parseClientHost(value, method, path) {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) {\n throw new RelayProtocolError(method, path, \"host must be an object\");\n }\n const host = value;\n for (const field of [\"host_id\", \"display_name\", \"created_at\", \"last_seen_at\"]) {\n if (typeof host[field] !== \"string\") {\n throw new RelayProtocolError(method, path, `host.${field} must be a string`);\n }\n }\n if (typeof host.online !== \"boolean\") {\n throw new RelayProtocolError(method, path, \"host.online must be a boolean\");\n }\n return {\n host_id: host.host_id,\n display_name: host.display_name,\n created_at: host.created_at,\n last_seen_at: host.last_seen_at,\n online: host.online,\n ...optionalClientHostMetadata(host, method, path),\n };\n}\nfunction validateClientBuildMetadata(version, gitSha) {\n if (version === undefined && gitSha === undefined)\n return;\n if (version === undefined || gitSha === undefined)\n throw new Error(\"clientVersion and clientGitSha must be supplied together\");\n requireNonEmpty(version, \"clientVersion\");\n requireNonEmpty(gitSha, \"clientGitSha\");\n}\nfunction optionalClientHostMetadata(host, method, path) {\n const version = optionalClientHostString(host, \"client_version\", method, path);\n const gitSha = optionalClientHostString(host, \"client_git_sha\", method, path);\n const minimum = optionalClientHostString(host, \"minimum_client_version\", method, path);\n if (minimum === null)\n throw new RelayProtocolError(method, path, \"host.minimum_client_version must be a string\");\n const compatibility = host.client_compatibility;\n if (compatibility !== undefined && compatibility !== \"current\" && compatibility !== \"outdated\" && compatibility !== \"unknown\" && compatibility !== \"development\") {\n throw new RelayProtocolError(method, path, \"host.client_compatibility is invalid\");\n }\n return {\n ...(version === undefined ? {} : { client_version: version }),\n ...(gitSha === undefined ? {} : { client_git_sha: gitSha }),\n ...(minimum === undefined ? {} : { minimum_client_version: minimum }),\n ...(compatibility === undefined ? {} : { client_compatibility: compatibility }),\n };\n}\nfunction optionalClientHostString(host, field, method, path) {\n const value = host[field];\n if (value === undefined || value === null || typeof value === \"string\")\n return value;\n throw new RelayProtocolError(method, path, `host.${field} must be a string or null`);\n}\nfunction normalizeClientHostWorkspaceReport(workspace) {\n requireNonEmpty(workspace.path, \"workspace.path\");\n if (workspace.gitOrigin !== null)\n requireNonEmpty(workspace.gitOrigin, \"workspace.gitOrigin\");\n if (workspace.currentBranch !== undefined && workspace.currentBranch !== null) {\n requireNonEmpty(workspace.currentBranch, \"workspace.currentBranch\");\n }\n return {\n path: workspace.path,\n git_origin: workspace.gitOrigin,\n ...(workspace.currentBranch === undefined ? {} : { current_branch: workspace.currentBranch }),\n readable: workspace.readable,\n writable: workspace.writable,\n };\n}\nfunction parseClientHostWorkspacesResponse(value, method, path) {\n if (!Array.isArray(value.workspaces)) {\n throw new RelayProtocolError(method, path, \"workspaces must be an array\");\n }\n return { workspaces: value.workspaces.map((workspace) => parseClientHostWorkspace(workspace, method, path)) };\n}\nfunction parseClientHostWorkspace(value, method, path) {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) {\n throw new RelayProtocolError(method, path, \"workspace must be an object\");\n }\n const workspace = value;\n for (const field of [\"path\", \"reported_at\"]) {\n if (typeof workspace[field] !== \"string\" || !workspace[field]) {\n throw new RelayProtocolError(method, path, `workspace.${field} must be a string`);\n }\n }\n // git_origin is null for a repo with no remote, or one whose origin was credential-redacted.\n if (workspace.git_origin !== null && (typeof workspace.git_origin !== \"string\" || !workspace.git_origin)) {\n throw new RelayProtocolError(method, path, \"workspace.git_origin must be a string or null\");\n }\n if (workspace.current_branch !== null && typeof workspace.current_branch !== \"string\") {\n throw new RelayProtocolError(method, path, \"workspace.current_branch must be a string or null\");\n }\n for (const field of [\"readable\", \"writable\"]) {\n if (typeof workspace[field] !== \"boolean\") {\n throw new RelayProtocolError(method, path, `workspace.${field} must be a boolean`);\n }\n }\n return workspace;\n}\nfunction parseAgentStartRequest(value, method, path) {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) {\n throw new RelayProtocolError(method, path, \"request must be an object\");\n }\n const request = value;\n for (const field of [\"id\", \"session\", \"host_id\", \"agent_name\", \"status\", \"created_at\"]) {\n if (typeof request[field] !== \"string\") {\n throw new RelayProtocolError(method, path, `request.${field} must be a string`);\n }\n }\n if (!isAgentStartStatus(request.status)) {\n throw new RelayProtocolError(method, path, \"request.status is invalid\");\n }\n if (!request.spec || typeof request.spec !== \"object\" || Array.isArray(request.spec)) {\n throw new RelayProtocolError(method, path, \"request.spec must be an object\");\n }\n if (request.request_kind === undefined)\n request.request_kind = \"agent_start\";\n if (request.request_kind !== \"agent_start\" && request.request_kind !== \"worker_start\") {\n throw new RelayProtocolError(method, path, \"request.request_kind is invalid\");\n }\n if (request.result !== undefined && (!request.result || typeof request.result !== \"object\" || Array.isArray(request.result))) {\n throw new RelayProtocolError(method, path, \"request.result must be an object\");\n }\n if (request.error !== undefined && typeof request.error !== \"string\") {\n throw new RelayProtocolError(method, path, \"request.error must be a string\");\n }\n return request;\n}\nfunction validateRagIngestDocument(body) {\n requireNonEmpty(body.name, \"name\");\n requireNonEmpty(body.text, \"text\");\n if (body.type !== undefined && ![\"memory\", \"design-doc\", \"research\", \"skill\", \"command\", \"note\"].includes(body.type)) {\n throw new Error(\"type must be memory, design-doc, research, skill, command, or note\");\n }\n if (body.max_chars !== undefined && (!Number.isInteger(body.max_chars) || body.max_chars < 1)) {\n throw new Error(\"max_chars must be a positive integer\");\n }\n if (body.as_of !== undefined && !Number.isFinite(body.as_of))\n throw new Error(\"as_of must be a finite number\");\n if (body.stale_after !== undefined && !Number.isFinite(body.stale_after))\n throw new Error(\"stale_after must be a finite number\");\n if (body.source_run_id !== undefined)\n requireNonEmpty(body.source_run_id, \"source_run_id\");\n if (body.citation !== undefined && (!body.citation || typeof body.citation !== \"object\" || Array.isArray(body.citation))) {\n throw new Error(\"citation must be an object\");\n }\n}\nfunction validateRagCardUpsert(body) {\n requireNonEmpty(body.key, \"key\");\n requireNonEmpty(body.value, \"value\");\n requireNonEmpty(body.source, \"source\");\n if (body.type !== \"memory\")\n throw new Error(\"type must be memory\");\n}\nfunction normalizeRagIngestDocument(body) {\n return {\n name: body.name,\n text: body.text,\n ...(body.type === undefined ? {} : { type: body.type }),\n ...(body.max_chars === undefined ? {} : { max_chars: body.max_chars }),\n ...(body.as_of === undefined ? {} : { as_of: body.as_of }),\n ...(body.stale_after === undefined ? {} : { stale_after: body.stale_after }),\n ...(body.source_run_id === undefined ? {} : { source_run_id: body.source_run_id }),\n ...(body.citation === undefined ? {} : { citation: body.citation }),\n };\n}\nfunction parseRagIngestDocumentResponse(value, method, path) {\n if (typeof value.doc_id !== \"string\" || !value.doc_id)\n throw new RelayProtocolError(method, path, \"doc_id must be a string\");\n const cards = value.cards;\n const replaced = value.replaced;\n if (typeof cards !== \"number\" || !Number.isInteger(cards) || cards < 0) {\n throw new RelayProtocolError(method, path, \"cards must be a non-negative integer\");\n }\n if (typeof replaced !== \"number\" || !Number.isInteger(replaced) || replaced < 0) {\n throw new RelayProtocolError(method, path, \"replaced must be a non-negative integer\");\n }\n return { doc_id: value.doc_id, cards, replaced };\n}\nfunction parseRagCard(value, method, path, expectedKey) {\n if (typeof value.key !== \"string\" || !value.key)\n throw new RelayProtocolError(method, path, \"key must be a string\");\n if (value.key !== expectedKey)\n throw new RelayProtocolError(method, path, \"key must match requested key\");\n if (typeof value.value !== \"string\")\n throw new RelayProtocolError(method, path, \"value must be a string\");\n const card = { key: value.key, value: value.value };\n if (value.captain_id !== undefined) {\n if (typeof value.captain_id !== \"number\" || !Number.isInteger(value.captain_id)) {\n throw new RelayProtocolError(method, path, \"captain_id must be an integer\");\n }\n card.captain_id = value.captain_id;\n }\n if (value.team_id !== undefined)\n card.team_id = requireOptionalString(value.team_id, method, path, \"team_id\");\n if (value.type !== undefined)\n card.type = requireOptionalString(value.type, method, path, \"type\");\n if (value.source !== undefined)\n card.source = requireOptionalString(value.source, method, path, \"source\");\n if (value.author !== undefined) {\n if (value.author !== null && typeof value.author !== \"string\")\n throw new RelayProtocolError(method, path, \"author must be a string or null\");\n card.author = value.author;\n }\n if (value.status !== undefined)\n card.status = requireOptionalString(value.status, method, path, \"status\");\n if (value.version !== undefined) {\n if (typeof value.version !== \"number\" || !Number.isInteger(value.version)) {\n throw new RelayProtocolError(method, path, \"version must be an integer\");\n }\n card.version = value.version;\n }\n return card;\n}\nfunction parseRagCardUpsertResponse(value, path, expectedKey) {\n if (value.status === \"auto_resolved\")\n return _autoResolvedRagCard(value, path, expectedKey);\n if (value.status === \"needs_decision\")\n return { status: \"needs_decision\", question: parseRagConflictQuestion(value.question, \"POST\", path) };\n if (typeof value.key === \"string\")\n return { status: \"saved\", card: parseRagCard(value, \"POST\", path, expectedKey) };\n throw new RelayProtocolError(\"POST\", path, \"RAG card response status is invalid\");\n}\nfunction _autoResolvedRagCard(value, path, expectedKey) {\n if (typeof value.rule !== \"string\" || !value.rule)\n throw new RelayProtocolError(\"POST\", path, \"auto_resolved rule must be a string\");\n if (!value.card || typeof value.card !== \"object\" || Array.isArray(value.card))\n throw new RelayProtocolError(\"POST\", path, \"auto_resolved card must be an object\");\n return { status: \"auto_resolved\", rule: value.rule, card: parseRagCard(value.card, \"POST\", path, expectedKey) };\n}\nfunction parseRagConflictQuestion(value, method, path) {\n if (!value || typeof value !== \"object\" || Array.isArray(value))\n throw new RelayProtocolError(method, path, \"RAG decision question must be an object\");\n const question = value;\n return {\n id: _ragQuestionField(question, \"id\", method, path),\n title: _ragQuestionField(question, \"title\", method, path),\n status: _ragQuestionField(question, \"status\", method, path),\n };\n}\nfunction _ragQuestionField(question, field, method, path) {\n const value = question[field];\n if (typeof value !== \"string\" || !value)\n throw new RelayProtocolError(method, path, `RAG decision question.${field} must be a string`);\n return value;\n}\nfunction parseRagSearchResponse(value, method, path) {\n if (!Array.isArray(value.cards))\n throw new RelayProtocolError(method, path, \"cards must be an array\");\n return { cards: value.cards.map((card) => parseRagSearchCard(card, method, path)) };\n}\nfunction parseRagSearchCard(value, method, path) {\n if (!value || typeof value !== \"object\" || Array.isArray(value))\n throw new RelayProtocolError(method, path, \"card must be an object\");\n const card = value;\n if (typeof card.key !== \"string\" || !card.key)\n throw new RelayProtocolError(method, path, \"card.key must be a string\");\n if (typeof card.value !== \"string\")\n throw new RelayProtocolError(method, path, \"card.value must be a string\");\n if (typeof card.score !== \"number\" || !Number.isFinite(card.score))\n throw new RelayProtocolError(method, path, \"card.score must be a finite number\");\n return { key: card.key, value: card.value, score: card.score };\n}\nfunction parseRagMemoryIndex(value, method, path) {\n if (typeof value.enabled !== \"boolean\" || typeof value.degraded !== \"boolean\" || typeof value.text !== \"string\") {\n throw new RelayProtocolError(method, path, \"index flags must be valid\");\n }\n for (const field of [\"budget_tokens\", \"total_cards\", \"omitted_cards\"]) {\n if (!Number.isSafeInteger(value[field]) || value[field] < 0)\n throw new RelayProtocolError(method, path, `index.${field} must be a non-negative integer`);\n }\n if (!value.sections || typeof value.sections !== \"object\" || Array.isArray(value.sections))\n throw new RelayProtocolError(method, path, \"index.sections must be an object\");\n const sections = Object.fromEntries(Object.entries(value.sections).map(([key, lines]) => {\n if (!Array.isArray(lines) || !lines.every((line) => typeof line === \"string\"))\n throw new RelayProtocolError(method, path, \"index section must contain strings\");\n return [key, lines];\n }));\n return { enabled: value.enabled, degraded: value.degraded, text: value.text, budget_tokens: value.budget_tokens, total_cards: value.total_cards, omitted_cards: value.omitted_cards, sections };\n}\nfunction parseRagEntitlement(value, method, path) {\n if (typeof value.enabled !== \"boolean\")\n throw new RelayProtocolError(method, path, \"entitlement.enabled must be a boolean\");\n return { enabled: value.enabled };\n}\nfunction parseManagedMaterializationResponse(value, method, path, cursor) {\n if (value === \"not_modified_304\") {\n if (!cursor?.trim())\n throw new RelayProtocolError(method, path, \"304 requires a prior cursor\");\n return { status: \"not_modified\", cursor: cursor.trim() };\n }\n if (value.status === \"not_modified\") {\n const nextCursor = requireManagedBannerField(value.cursor, method, path, \"cursor\");\n return { status: \"not_modified\", cursor: nextCursor };\n }\n if (value.status !== \"changed\")\n throw new RelayProtocolError(method, path, \"status must be changed or not_modified\");\n const nextCursor = requireManagedBannerField(value.cursor, method, path, \"cursor\");\n if (!Array.isArray(value.files))\n throw new RelayProtocolError(method, path, \"files must be an array\");\n const hasMore = value.has_more === undefined ? undefined : requireBoolean(value.has_more, method, path, \"has_more\");\n const nextPageCursor = value.next_cursor === undefined\n ? undefined\n : requireManagedBannerField(value.next_cursor, method, path, \"next_cursor\");\n if (hasMore === true && nextPageCursor === undefined) {\n throw new RelayProtocolError(method, path, \"next_cursor is required when has_more is true\");\n }\n return {\n status: \"changed\",\n cursor: nextCursor,\n files: value.files.map((file) => parseManagedMaterializationFile(file, method, path)),\n ...(value.deleted === undefined ? {} : { deleted: parseManagedMaterializationDeletedFiles(value.deleted, method, path) }),\n ...(hasMore === undefined ? {} : { has_more: hasMore }),\n ...(nextPageCursor === undefined ? {} : { next_cursor: nextPageCursor }),\n };\n}\nfunction parseManagedMaterializationFile(value, method, path) {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) {\n throw new RelayProtocolError(method, path, \"file must be an object\");\n }\n const file = value;\n if (file.kind !== \"skill\" && file.kind !== \"command\") {\n throw new RelayProtocolError(method, path, \"file.kind must be skill or command\");\n }\n for (const field of [\"relative_path\", \"content_hash\", \"version\"]) {\n if (typeof file[field] !== \"string\" || !file[field]) {\n throw new RelayProtocolError(method, path, `file.${field} must be a string`);\n }\n }\n if (typeof file.content !== \"string\")\n throw new RelayProtocolError(method, path, \"file.content must be a string\");\n requireManagedBannerField(file.version, method, path, \"file.version\");\n return {\n kind: file.kind,\n relative_path: String(file.relative_path),\n content: String(file.content),\n content_hash: String(file.content_hash),\n version: String(file.version),\n };\n}\nfunction requireManagedBannerField(value, method, path, field) {\n if (typeof value !== \"string\" || !value.trim()) {\n throw new RelayProtocolError(method, path, `${field} must be a string`);\n }\n if (value !== value.trim() || !MANAGED_BANNER_FIELD_RE.test(value)) {\n throw new RelayProtocolError(method, path, `${field} must be printable ASCII without whitespace`);\n }\n return value;\n}\nfunction requireBoolean(value, method, path, field) {\n if (typeof value !== \"boolean\")\n throw new RelayProtocolError(method, path, `${field} must be a boolean`);\n return value;\n}\nfunction parseManagedMaterializationDeletedFiles(value, method, path) {\n if (!Array.isArray(value))\n throw new RelayProtocolError(method, path, \"deleted must be an array\");\n return value.map((item) => {\n if (!item || typeof item !== \"object\" || Array.isArray(item)) {\n throw new RelayProtocolError(method, path, \"deleted file must be an object\");\n }\n const file = item;\n if (file.kind !== \"skill\" && file.kind !== \"command\") {\n throw new RelayProtocolError(method, path, \"deleted.kind must be skill or command\");\n }\n if (typeof file.relative_path !== \"string\" || !file.relative_path) {\n throw new RelayProtocolError(method, path, \"deleted.relative_path must be a string\");\n }\n return { kind: file.kind, relative_path: file.relative_path };\n });\n}\nfunction validateManagedDrift(body) {\n requireSegment(body.agent_name, \"agent_name\");\n if (body.engine !== \"claude\" && body.engine !== \"codex\")\n throw new Error(\"engine must be claude or codex\");\n if (body.kind !== \"skill\" && body.kind !== \"command\")\n throw new Error(\"kind must be skill or command\");\n requireNonEmpty(body.relative_path, \"relative_path\");\n requireNonEmpty(body.version_cursor, \"version_cursor\");\n requireNonEmpty(body.head_hash, \"head_hash\");\n requireNonEmpty(body.local_hash, \"local_hash\");\n if (body.expected_hash !== null && typeof body.expected_hash !== \"string\")\n throw new Error(\"expected_hash must be string or null\");\n if (typeof body.local_content !== \"string\")\n throw new Error(\"local_content must be a string\");\n if (!Array.isArray(body.actions)\n || body.actions.length !== 2\n || body.actions[0] !== \"ingest-new-version\"\n || body.actions[1] !== \"restore-managed-version\") {\n throw new Error(\"actions must be ingest-new-version and restore-managed-version\");\n }\n}\nfunction requireOptionalString(value, method, path, field) {\n if (typeof value !== \"string\")\n throw new RelayProtocolError(method, path, `${field} must be a string`);\n return value;\n}\nfunction isAgentStartStatus(value) {\n return value === \"queued\" || value === \"claimed\" || value === \"started\" || value === \"failed\" || value === \"cancelled\";\n}\nfunction parseMailboxMessage(value) {\n if (!value || typeof value !== \"object\") {\n throw new RelayProtocolError(\"GET\", \"/api/v1/mailbox\", \"message must be an object\");\n }\n const message = value;\n for (const field of [\"id\", \"session\", \"agent_name\", \"payload_kind\", \"status\", \"submitted_at\"]) {\n if (typeof message[field] !== \"string\") {\n throw new RelayProtocolError(\"GET\", \"/api/v1/mailbox\", `message.${field} must be a string`);\n }\n }\n if (typeof message.payload_size_bytes !== \"number\") {\n throw new MailboxPayloadIntegrityError(\"message.payload_size_bytes must be a number\");\n }\n validateMailboxResponsePayload(message);\n if (message.payload_kind !== \"raw\" && message.payload_kind !== \"a2a-message\") {\n throw new RelayProtocolError(\"GET\", \"/api/v1/mailbox\", \"message.payload_kind is invalid\");\n }\n if (message.lease_token !== undefined && message.lease_token !== null && typeof message.lease_token !== \"string\") {\n throw new RelayProtocolError(\"GET\", \"/api/v1/mailbox\", \"message.lease_token must be a string\");\n }\n if (message.kind !== undefined && message.kind !== \"control\" && message.kind !== \"conversation\") {\n throw new RelayProtocolError(\"GET\", \"/api/v1/mailbox\", \"message.kind must be control or conversation\");\n }\n for (const field of [\"sender_role\", \"sender_agent_name\", \"tag\"]) {\n if (message[field] !== null && typeof message[field] !== \"string\") {\n throw new RelayProtocolError(\"GET\", \"/api/v1/mailbox\", `message.${field} must be a string or null`);\n }\n }\n for (const field of [\"leased_at\", \"lease_until\", \"surfaced_at\", \"surface_status\", \"surface_error\", \"surfaced_by\", \"payload_bytes_base64\"]) {\n if (message[field] !== undefined && message[field] !== null && typeof message[field] !== \"string\") {\n throw new RelayProtocolError(\"GET\", \"/api/v1/mailbox\", `message.${field} must be a string or null`);\n }\n }\n if (message.surface_attempts !== undefined && typeof message.surface_attempts !== \"number\") {\n throw new RelayProtocolError(\"GET\", \"/api/v1/mailbox\", \"message.surface_attempts must be a number\");\n }\n return message;\n}\nfunction validateMailboxResponsePayload(message) {\n const hasJson = Object.hasOwn(message, \"payload_json\");\n const hasBytes = Object.hasOwn(message, \"payload_bytes_base64\");\n if (hasJson === hasBytes)\n throw new MailboxPayloadIntegrityError(\"message must specify exactly one payload\");\n if (!Number.isSafeInteger(message.payload_size_bytes) || Number(message.payload_size_bytes) < 0) {\n throw new MailboxPayloadIntegrityError(\"message.payload_size_bytes must be a non-negative integer\");\n }\n if (hasJson && message.payload_json === null) {\n throw new MailboxPayloadIntegrityError(\"message.payload_json cannot be null\");\n }\n const source = Reflect.get(message, MAILBOX_PAYLOAD_JSON_SOURCE);\n if (hasJson && typeof source !== \"string\") {\n throw new MailboxPayloadIntegrityError(\"message.payload_json source is unavailable\");\n }\n const actualSize = hasJson ? Buffer.byteLength(source, \"utf8\") : strictBase64Size(message.payload_bytes_base64);\n if (actualSize !== message.payload_size_bytes) {\n throw new MailboxPayloadIntegrityError(\"message.payload_size_bytes does not match payload content\");\n }\n}\nfunction mailboxPayloadFailureContext(value) {\n if (!value || typeof value !== \"object\")\n return null;\n const message = value;\n if (typeof message.id !== \"string\" || !message.id)\n return null;\n const leaseToken = typeof message.lease_token === \"string\" && message.lease_token ? message.lease_token : undefined;\n if (!leaseToken && message.status !== \"queued\")\n return null;\n const surfaceError = typeof message.surface_error === \"string\" ? message.surface_error : undefined;\n return { messageId: message.id, ...(leaseToken ? { leaseToken } : {}), ...(surfaceError ? { surfaceError } : {}) };\n}\nfunction strictBase64Size(value) {\n if (typeof value !== \"string\")\n throw new MailboxPayloadIntegrityError(\"message.payload_bytes_base64 must be a string\");\n const decoded = Buffer.from(value, \"base64\");\n if (decoded.toString(\"base64\") !== value) {\n throw new MailboxPayloadIntegrityError(\"message.payload_bytes_base64 must be valid Base64\");\n }\n return decoded.byteLength;\n}\nconst MAILBOX_PAYLOAD_JSON_SOURCE = Symbol(\"mailboxPayloadJsonSource\");\nfunction attachMailboxPayloadSources(value, text) {\n const sources = jsonFieldSources(text, \"payload_json\");\n let sourceIndex = 0;\n const visit = (item) => {\n if (!item || typeof item !== \"object\")\n return;\n if (Array.isArray(item)) {\n for (const child of item)\n visit(child);\n return;\n }\n const record = item;\n if (Object.hasOwn(record, \"payload_json\")) {\n const source = sources[sourceIndex++];\n if (source !== undefined)\n Object.defineProperty(record, MAILBOX_PAYLOAD_JSON_SOURCE, { value: source });\n }\n for (const [key, child] of Object.entries(record)) {\n if (key !== \"payload_json\")\n visit(child);\n }\n };\n visit(value);\n}\nfunction jsonFieldSources(text, field) {\n const sources = [];\n for (let index = 0; index < text.length;) {\n if (text[index] !== '\"') {\n index += 1;\n continue;\n }\n const found = jsonFieldSourceAt(text, index, field);\n if (found.source !== undefined)\n sources.push(found.source);\n index = found.end;\n }\n return sources;\n}\nfunction jsonFieldSourceAt(text, start, field) {\n const keyEnd = jsonStringEnd(text, start);\n const key = JSON.parse(text.slice(start, keyEnd));\n let cursor = skipJsonWhitespace(text, keyEnd);\n if (key !== field || text[cursor] !== \":\")\n return { end: keyEnd };\n cursor = skipJsonWhitespace(text, cursor + 1);\n const valueEnd = jsonValueEnd(text, cursor);\n return { source: text.slice(cursor, valueEnd), end: valueEnd };\n}\nfunction jsonStringEnd(text, start) {\n for (let index = start + 1; index < text.length; index += 1) {\n if (text[index] === \"\\\\\")\n index += 1;\n else if (text[index] === '\"')\n return index + 1;\n }\n throw new SyntaxError(\"unterminated JSON string\");\n}\nfunction jsonValueEnd(text, start) {\n if (text[start] === '\"')\n return jsonStringEnd(text, start);\n if (text[start] !== \"{\" && text[start] !== \"[\") {\n let index = start;\n while (index < text.length && !/[\\s,}\\]]/.test(text[index] ?? \"\"))\n index += 1;\n return index;\n }\n const stack = [text[start]];\n for (let index = start + 1; index < text.length; index += 1) {\n if (text[index] === '\"')\n index = jsonStringEnd(text, index) - 1;\n else if (text[index] === \"{\" || text[index] === \"[\")\n stack.push(text[index]);\n else if (text[index] === \"}\" || text[index] === \"]\")\n stack.pop();\n if (stack.length === 0)\n return index + 1;\n }\n throw new SyntaxError(\"unterminated JSON value\");\n}\nfunction skipJsonWhitespace(text, start) {\n let index = start;\n while (/\\s/.test(text[index] ?? \"\"))\n index += 1;\n return index;\n}\nfunction parseResolveCommand(value, path) {\n if (!value || typeof value !== \"object\")\n throw new RelayProtocolError(\"GET\", path, \"command must be an object\");\n const command = value;\n if (typeof command.id !== \"string\")\n throw new RelayProtocolError(\"GET\", path, \"command.id must be a string\");\n if (typeof command.action !== \"string\")\n throw new RelayProtocolError(\"GET\", path, \"command.action must be a string\");\n const params = command.params;\n if (params !== undefined && (typeof params !== \"object\" || params === null || Array.isArray(params))) {\n throw new RelayProtocolError(\"GET\", path, \"command.params must be an object\");\n }\n return { id: command.id, action: command.action, params: params ?? {} };\n}\nfunction segment(value) {\n return encodeURIComponent(value);\n}\nfunction requireSegment(value, label) {\n if (!value.trim())\n throw new Error(`${label} is required`);\n}\nfunction requireNonEmpty(value, label) {\n if (!value.trim())\n throw new Error(`${label} is required`);\n}\nfunction requireCaptainId(value) {\n if (!/^\\d+$/.test(value))\n throw new Error(\"captainId must be a numeric string\");\n}\nfunction clampLimit(limit) {\n if (!Number.isFinite(limit))\n throw new Error(\"limit must be a finite number\");\n return Math.max(1, Math.min(Math.trunc(limit), MAX_MAILBOX_LIMIT));\n}\nfunction clampTimeout(timeoutSec) {\n if (!Number.isFinite(timeoutSec))\n throw new Error(\"timeoutSec must be a finite number\");\n return Math.max(0, Math.min(Math.trunc(timeoutSec), MAX_WAIT_TIMEOUT_SEC));\n}\nfunction isStringArray(value) {\n return Array.isArray(value) && value.every((item) => typeof item === \"string\");\n}\nfunction isNonEmptyStringArray(value) {\n return (Array.isArray(value) &&\n value.length > 0 &&\n value.every((item) => typeof item === \"string\" && item.length > 0));\n}\nfunction errorMessage(error) {\n return error instanceof Error ? error.message : String(error);\n}\nfunction redact(value, token) {\n return value.split(token).join(\"[redacted]\");\n}\nexport function bytesToBase64(bytes) {\n return Buffer.from(bytes).toString(\"base64\");\n}\n//# sourceMappingURL=client.js.map",
|
|
28
|
+
"import { Buffer } from \"node:buffer\";\nimport http from \"node:http\";\nimport https from \"node:https\";\nimport { RelayError, RelayHttpError, RelayNetworkError, RelayProtocolError } from \"./errors.js\";\nimport { MAX_JOB_TIMEOUT_SECONDS, WORKER_JOB_RESULT_GRACE_SECONDS, } from \"../worker/protocol.js\";\nconst JSON_CONTENT_TYPE = \"application/json\";\nconst MAX_MAILBOX_LIMIT = 16;\nconst MAX_WAIT_TIMEOUT_SEC = 120;\nconst MANAGED_BANNER_FIELD_RE = /^[\\x21-\\x7e]+$/u;\nconst PAYLOAD_INTEGRITY_ERROR_PREFIX = \"mailbox payload integrity failure:\";\nclass MailboxPayloadIntegrityError extends RelayProtocolError {\n detail;\n constructor(detail) {\n super(\"GET\", \"/api/v1/mailbox\", detail);\n this.detail = detail;\n }\n}\nexport class RelayClient {\n relayUrl;\n bearerToken;\n fetchImpl;\n defaultTimeoutMs;\n httpClient;\n constructor(options) {\n if (!options.relayUrl.trim())\n throw new Error(\"relayUrl is required\");\n if (!options.bearerToken.trim())\n throw new Error(\"bearerToken is required\");\n this.relayUrl = options.relayUrl.replace(/\\/+$/, \"\");\n this.bearerToken = options.bearerToken;\n this.httpClient = options.fetchImpl ? null : new NodeRelayHttpClient();\n this.fetchImpl = options.fetchImpl ?? this.httpClient.fetch;\n this.defaultTimeoutMs = options.defaultTimeoutMs ?? 60_000;\n }\n close() {\n this.httpClient?.close();\n }\n async listWorkers(captainId, session) {\n requireCaptainId(captainId);\n if (session !== undefined)\n requireSegment(session, \"session\");\n const suffix = session === undefined ? \"\" : `?session=${segment(session)}`;\n const path = `/api/v1/captains/${segment(captainId)}/workers${suffix}`;\n const response = await this.requestJson(\"GET\", path);\n if (!Array.isArray(response.workers)) {\n throw new RelayProtocolError(\"GET\", path, \"workers must be an array\");\n }\n return { workers: response.workers.map((worker) => _parseWorkerRecord(worker, path)) };\n }\n async submitJob(captainId, body) {\n requireCaptainId(captainId);\n _validateWorkerJobSubmit(body);\n const path = `/api/v1/captains/${segment(captainId)}/task`;\n const spec = {\n argv: [...body.argv],\n ...(body.timeoutSec === undefined ? {} : { timeout_sec: body.timeoutSec }),\n };\n const response = await this.requestJson(\"POST\", path, { kind: \"bash\", worker: body.worker, spec });\n return _parseWorkerJobSubmitResponse(response, path);\n }\n async getJobStatus(captainId, jobId) {\n return this._getJob(captainId, jobId);\n }\n async getJobResult(captainId, jobId, timeoutSec) {\n _validateWorkerJobWaitTimeout(timeoutSec);\n return this._getJob(captainId, jobId, timeoutSec);\n }\n async _getJob(captainId, jobId, timeoutSec) {\n requireCaptainId(captainId);\n requireSegment(jobId, \"jobId\");\n const base = `/api/v1/captains/${segment(captainId)}/task/${segment(jobId)}`;\n const path = timeoutSec === undefined ? base : `${base}?wait=true&timeout_sec=${timeoutSec}`;\n const timeoutMs = timeoutSec === undefined ? this.defaultTimeoutMs : (timeoutSec + 5) * 1000;\n return _parseWorkerJobResultResponse(await this.requestJson(\"GET\", path, undefined, timeoutMs), path);\n }\n async claimMailbox(agentName, options = {}) {\n requireSegment(agentName, \"agentName\");\n if (options.messageId)\n requireSegment(options.messageId, \"messageId\");\n const query = new URLSearchParams();\n if (options.peek ?? true)\n query.set(\"peek\", \"true\");\n if (options.wait) {\n query.set(\"wait\", \"true\");\n query.set(\"timeout_sec\", String(clampTimeout(options.timeoutSec ?? 30)));\n }\n if (options.tag)\n query.set(\"tag\", options.tag);\n if (options.messageId)\n query.set(\"message_id\", options.messageId);\n for (const tag of options.excludeTags ?? []) {\n if (tag)\n query.append(\"exclude_tags\", tag);\n }\n if (options.limit !== undefined)\n query.set(\"limit\", String(clampLimit(options.limit)));\n if (options.includeLeased)\n query.set(\"include_leased\", \"true\");\n const suffix = query.size ? `?${query.toString()}` : \"\";\n const waitMs = options.wait ? (clampTimeout(options.timeoutSec ?? 30) + 5) * 1000 : this.defaultTimeoutMs;\n const body = await this.requestJson(\"GET\", `/api/v1/mailbox/${segment(agentName)}${suffix}`, undefined, waitMs, options.signal);\n if (!Array.isArray(body.messages)) {\n throw new RelayProtocolError(\"GET\", `/api/v1/mailbox/${segment(agentName)}`, \"messages must be an array\");\n }\n const messages = [];\n for (const item of body.messages) {\n try {\n messages.push(parseMailboxMessage(item));\n }\n catch (error) {\n if (!(error instanceof MailboxPayloadIntegrityError))\n throw error;\n await this.recordMailboxPayloadFailure(item, error);\n throw error;\n }\n }\n return { messages };\n }\n async recordMailboxPayloadFailure(value, error) {\n const context = mailboxPayloadFailureContext(value);\n if (!context || context.surfaceError?.startsWith(PAYLOAD_INTEGRITY_ERROR_PREFIX))\n return;\n const requestBody = {\n status: \"failed\",\n error: `${PAYLOAD_INTEGRITY_ERROR_PREFIX} ${error.detail}`,\n ...(context.leaseToken ? { lease_token: context.leaseToken } : {}),\n };\n await this.requestJson(\"POST\", `/api/v1/mailbox/${segment(context.messageId)}/surface`, requestBody);\n }\n async ackMailbox(messageId, leaseToken) {\n requireSegment(messageId, \"messageId\");\n requireNonEmpty(leaseToken, \"leaseToken\");\n const body = await this.requestJson(\"POST\", `/api/v1/mailbox/${segment(messageId)}/ack`, { lease_token: leaseToken });\n if (typeof body.id !== \"string\" || body.status !== \"acked\") {\n throw new RelayProtocolError(\"POST\", `/api/v1/mailbox/${segment(messageId)}/ack`, \"invalid ack response\");\n }\n return { id: body.id, status: \"acked\" };\n }\n async recordMailboxSurface(messageId, body) {\n requireSegment(messageId, \"messageId\");\n if (body.status !== \"surfaced\" && body.status !== \"failed\")\n throw new Error(\"surface status must be surfaced or failed\");\n const leaseToken = body.lease_token;\n if (leaseToken !== undefined)\n requireNonEmpty(leaseToken, \"lease_token\");\n const requestBody = leaseToken === undefined\n ? { status: body.status, ...(body.error === undefined ? {} : { error: body.error }) }\n : { status: body.status, lease_token: leaseToken, ...(body.error === undefined ? {} : { error: body.error }) };\n const response = await this.requestJson(\"POST\", `/api/v1/mailbox/${segment(messageId)}/surface`, requestBody);\n return { message: parseMailboxMessage(response.message) };\n }\n async sendMailbox(agentName, body) {\n requireSegment(agentName, \"agentName\");\n validateMailboxPayload(body);\n const response = await this.requestJson(\"POST\", `/api/v1/mailbox/${segment(agentName)}`, normalizeMailboxBody(body));\n if (typeof response.id !== \"string\" || response.status !== \"queued\") {\n throw new RelayProtocolError(\"POST\", `/api/v1/mailbox/${segment(agentName)}`, \"invalid send response\");\n }\n return { id: response.id, status: \"queued\" };\n }\n async sendSessionMailbox(session, body) {\n requireSegment(session, \"session\");\n validateMailboxPayload(body);\n if (!hasSessionMailboxRecipients(body)) {\n throw new Error(\"session mailbox requires to_agents, to_roles, or to_host\");\n }\n const response = await this.requestJson(\"POST\", `/api/v1/mailbox/session/${segment(session)}`, normalizeMailboxBody(body));\n if (response.status !== \"queued\" || !isStringArray(response.ids) || !isStringArray(response.recipients)) {\n throw new RelayProtocolError(\"POST\", `/api/v1/mailbox/session/${segment(session)}`, \"invalid session send response\");\n }\n return { status: \"queued\", ids: response.ids, recipients: response.recipients };\n }\n // Post a transcript-backfill REPLY either to the captain transcript sink or back to the peer who prompted it.\n // `origin: \"transcript-backfill\"` opts the captain path into the relay's safety-net contract: the relay may\n // answer status \"skipped\" (explicit reply already exists / pure internal narration) instead of persisting.\n async postSessionReply(session, text, target = { kind: \"captain\" }, inReplyToMessageId, tag = \"REPLY\", origin) {\n requireSegment(session, \"session\");\n const toAgent = target.kind === \"captain\" ? \"captain\" : target.agentName;\n requireNonEmpty(toAgent, \"reply target\");\n requireNonEmpty(tag, \"reply tag\");\n if (inReplyToMessageId !== undefined)\n requireNonEmpty(inReplyToMessageId, \"in_reply_to_message_id\");\n if (origin !== undefined && target.kind !== \"captain\")\n throw new Error(\"origin is only valid for captain replies\");\n const response = await this.requestJson(\"POST\", `/api/v1/mailbox/session/${segment(session)}`, {\n tag,\n to_agents: [toAgent],\n payload_kind: \"raw\",\n payload_json: text,\n ...(inReplyToMessageId === undefined\n ? {}\n : {\n in_reply_to_message_id: inReplyToMessageId,\n }),\n ...(origin === undefined ? {} : { origin }),\n });\n const validRecipients = isStringArray(response.recipients)\n && response.recipients.length === 1 && response.recipients[0] === toAgent;\n if (origin !== undefined && response.status === \"skipped\") {\n if (!validRecipients || typeof response.reason !== \"string\" || !response.reason) {\n throw new RelayProtocolError(\"POST\", `/api/v1/mailbox/session/${segment(session)}`, \"invalid session reply skip response\");\n }\n return { ids: [], recipients: response.recipients, skippedReason: response.reason };\n }\n const expectedStatus = target.kind === \"captain\" ? \"recorded\" : \"queued\";\n if (response.status !== expectedStatus || !isNonEmptyStringArray(response.ids) || !validRecipients) {\n throw new RelayProtocolError(\"POST\", `/api/v1/mailbox/session/${segment(session)}`, \"invalid session reply response\");\n }\n return { ids: response.ids, recipients: response.recipients };\n }\n // Report one batch of token-usage windows for the agent's own metering. The relay dedupes on\n // (source, source_ref), so re-posting deterministic refs after a crash/retry is safe.\n async postAgentTokenUsage(agentName, events) {\n requireSegment(agentName, \"agentName\");\n if (events.length === 0)\n throw new Error(\"postAgentTokenUsage requires at least one event\");\n const path = `/api/v1/agents/${segment(agentName)}/usage`;\n const response = await this.requestJson(\"POST\", path, { events });\n if (typeof response.recorded !== \"number\" || typeof response.duplicates !== \"number\") {\n throw new RelayProtocolError(\"POST\", path, \"usage report response must include numeric recorded/duplicates\");\n }\n return { recorded: response.recorded, duplicates: response.duplicates };\n }\n async fetchWorkflow(options = {}) {\n const suffix = options.runtimeView ?? true ? \"?view=runtime\" : \"\";\n const body = await this.requestText(\"GET\", `/api/v1/workflow${suffix}`);\n if (!body.trim())\n throw new RelayProtocolError(\"GET\", `/api/v1/workflow${suffix}`, \"workflow body is empty\");\n return body;\n }\n async createScheduledEvent(session, body) {\n const path = `/api/v1/sessions/${segment(session)}/events`;\n return parseScheduledEventResponse(await this.requestJson(\"POST\", path, body), \"POST\", path);\n }\n async listScheduledEvents(session) {\n const path = `/api/v1/sessions/${segment(session)}/events`;\n return parseScheduledEventListResponse(await this.requestJson(\"GET\", path), path);\n }\n async setScheduledEventEnabled(session, id, enabled) {\n const path = `/api/v1/sessions/${segment(session)}/events/${segment(id)}`;\n return parseScheduledEventResponse(await this.requestJson(\"PATCH\", path, { enabled }), \"PATCH\", path);\n }\n async deleteScheduledEvent(session, id) {\n const path = `/api/v1/sessions/${segment(session)}/events/${segment(id)}`;\n const response = await this.requestJson(\"DELETE\", path);\n if (typeof response.deleted !== \"string\" || !response.deleted)\n throw new RelayProtocolError(\"DELETE\", path, \"deleted must be a non-empty string\");\n return { deleted: response.deleted };\n }\n async createDecision(captainId, session, body) {\n const path = _decisionPath(captainId, session);\n return _parseDecisionResponse(await this.requestJson(\"POST\", path, body), \"POST\", path);\n }\n async listDecisions(captainId, session) {\n const path = _decisionPath(captainId, session);\n return _parseDecisionListResponse(await this.requestJson(\"GET\", path), path);\n }\n async getDecision(captainId, session, id) {\n const path = _decisionPath(captainId, session, id);\n return _parseDecisionResponse(await this.requestJson(\"GET\", path), \"GET\", path);\n }\n async createSessionTask(captainId, session, body) {\n const path = _sessionTaskPath(captainId, session);\n return _parseSessionTaskResponse(await this.requestJson(\"POST\", path, body), \"POST\", path);\n }\n async uploadSessionArtifact(captainId, session, body) {\n const path = `/api/v1/captains/${segment(captainId)}/artifacts/session/${segment(session)}`;\n return _parseSessionArtifact(await this.requestJson(\"POST\", path, body), \"POST\", path);\n }\n async listSessionTasks(captainId, session, statusOrOptions = {}) {\n const options = typeof statusOrOptions === \"string\" ? { status: statusOrOptions } : statusOrOptions;\n if (options.scope !== undefined && options.pair !== undefined)\n throw new Error(\"scope and pair are mutually exclusive\");\n const query = new URLSearchParams();\n if (options.status)\n query.set(\"status\", options.status);\n if (options.scope)\n query.set(\"scope\", options.scope);\n if (options.pair)\n query.set(\"pair\", options.pair);\n if (options.after)\n query.set(\"after\", options.after);\n if (options.limit !== undefined)\n query.set(\"limit\", String(options.limit));\n if (options.query)\n query.set(\"query\", options.query);\n const suffix = query.size ? `?${query.toString()}` : \"\";\n const path = `${_sessionTaskPath(captainId, session)}${suffix}`;\n return _parseSessionTaskListResponse(await this.requestJson(\"GET\", path), path);\n }\n async getSessionTask(captainId, session, id) {\n const path = _sessionTaskPath(captainId, session, id);\n return _parseSessionTaskResponse(await this.requestJson(\"GET\", path), \"GET\", path);\n }\n async activateSessionTask(captainId, session, id) {\n const path = `${_sessionTaskPath(captainId, session, id)}/activate`;\n return _parseSessionTaskResponse(await this.requestJson(\"POST\", path, {}), \"POST\", path);\n }\n async pauseSessionTask(captainId, session, id) {\n const path = `${_sessionTaskPath(captainId, session, id)}/pause`;\n return _parseSessionTaskResponse(await this.requestJson(\"POST\", path, {}), \"POST\", path);\n }\n async listSessionTaskEvents(captainId, session, id, options = {}) {\n if (options.after !== undefined && options.before !== undefined)\n throw new Error(\"after and before are mutually exclusive\");\n const query = new URLSearchParams();\n if (options.limit !== undefined)\n query.set(\"limit\", String(options.limit));\n if (options.after)\n query.set(\"after\", options.after);\n if (options.before)\n query.set(\"before\", options.before);\n const suffix = query.size ? `?${query.toString()}` : \"\";\n const path = `${_sessionTaskPath(captainId, session, id)}/events${suffix}`;\n return _parseSessionTaskEventsResponse(await this.requestJson(\"GET\", path), path);\n }\n async markSessionTaskReady(captainId, session, id, version, commit, findingsCounts) {\n return await this._transitionSessionTask(captainId, session, id, \"ready\", { version, ...(commit === undefined ? {} : { commit }), ...(findingsCounts === undefined ? {} : { findings_counts: findingsCounts }) });\n }\n async markSessionTaskNeedsChanges(captainId, session, id, version, reason, commit, findingsCounts) {\n return await this._transitionSessionTask(captainId, session, id, \"needs-changes\", { version, reason, ...(commit === undefined ? {} : { commit }), ...(findingsCounts === undefined ? {} : { findings_counts: findingsCounts }) });\n }\n async parkSessionTask(captainId, session, id, body) {\n return await this._transitionSessionTask(captainId, session, id, \"park\", body);\n }\n async unparkSessionTask(captainId, session, id, version) {\n return await this._transitionSessionTask(captainId, session, id, \"unpark\", { version });\n }\n async closeSessionTask(captainId, session, id, version, findingsCounts) {\n return await this._transitionSessionTask(captainId, session, id, \"close\", { version, ...(findingsCounts === undefined ? {} : { findings_counts: findingsCounts }) });\n }\n async getTeamAgentSlots(captainId, session) {\n const path = `${_sessionWorkflowPath(captainId, session)}/agent-slots`;\n return _parseTeamAgentSlotsResponse(await this.requestJson(\"GET\", path), \"GET\", path);\n }\n async applyBuiltinTeamTemplate(captainId, session, templateId) {\n const path = `${_sessionWorkflowPath(captainId, session)}/team-builder/apply-template`;\n const body = { template_id: templateId, confirm_task_fixed: true };\n return _parseTeamAgentSlotsResponse(await this.requestJson(\"POST\", path, body), \"POST\", path);\n }\n async materializeTeamAgentSlot(captainId, session, body) {\n const path = `${_sessionWorkflowPath(captainId, session)}/agent-slots/materialize`;\n const response = await this.requestJson(\"POST\", path, body);\n return _parseTeamAgentSlot(response.agent_slot, \"POST\", path);\n }\n async getAgentStartRequest(captainId, session, requestId, timeoutMs) {\n const path = `${_captainSessionPath(captainId, session)}/agent-start-requests/${segment(requestId)}`;\n const response = await this.requestJson(\"GET\", path, undefined, timeoutMs);\n const request = parseAgentStartRequest(response.request, \"GET\", path);\n if (request.id !== requestId || request.session !== session)\n throw new RelayProtocolError(\"GET\", path, \"request identity does not match path\");\n return request;\n }\n async getAgentMonitor(agentName) {\n requireSegment(agentName, \"agentName\");\n const response = await this.requestJson(\"GET\", `/api/v1/agents/${segment(agentName)}/monitor`);\n return parseAgentMonitor(response);\n }\n async _transitionSessionTask(captainId, session, id, action, body) {\n const path = `${_sessionTaskPath(captainId, session, id)}/${action}`;\n return _parseSessionTaskResponse(await this.requestJson(\"POST\", path, body), \"POST\", path);\n }\n async patchAgent(agentName, body) {\n requireSegment(agentName, \"agentName\");\n const patch = normalizeAgentPatch(body);\n const response = await this.requestJson(\"PATCH\", `/api/v1/agents/${segment(agentName)}`, patch);\n if (!response.agent || typeof response.agent !== \"object\") {\n throw new RelayProtocolError(\"PATCH\", `/api/v1/agents/${segment(agentName)}`, \"missing agent payload\");\n }\n return { agent: response.agent };\n }\n // Claim the next pending resolve command for this agent. The relay returns {} when none is queued\n // (a quick poll, not a long-poll), or {\"command\": {...}} with the claimed command.\n async pollResolveCommand(agentName, signal) {\n requireSegment(agentName, \"agentName\");\n const path = `/api/v1/agents/${segment(agentName)}/resolve/poll`;\n const body = await this.requestJson(\"GET\", path, undefined, this.defaultTimeoutMs, signal);\n if (body.command === undefined || body.command === null)\n return null;\n return parseResolveCommand(body.command, path);\n }\n // Report a resolve command's outcome. result is the action-specific object on success, null on failure.\n async submitResolveResult(agentName, commandId, body) {\n requireSegment(agentName, \"agentName\");\n requireSegment(commandId, \"commandId\");\n if (body.status !== \"done\" && body.status !== \"failed\")\n throw new Error(\"resolve result status must be done or failed\");\n await this.requestOptionalJson(\"POST\", `/api/v1/agents/${segment(agentName)}/resolve/${segment(commandId)}/result`, { status: body.status, result: body.result, error: body.error });\n }\n async registerClientHost(captainId, body) {\n requireCaptainId(captainId);\n requireSegment(body.hostId, \"hostId\");\n requireNonEmpty(body.displayName, \"displayName\");\n validateClientBuildMetadata(body.clientVersion, body.clientGitSha);\n const path = `/api/v1/captains/${segment(captainId)}/client-hosts/register`;\n const response = await this.requestJson(\"POST\", path, {\n host_id: body.hostId,\n display_name: body.displayName,\n ...(body.clientVersion === undefined ? {} : { client_version: body.clientVersion }),\n ...(body.clientGitSha === undefined ? {} : { client_git_sha: body.clientGitSha }),\n ...(body.updateError === undefined ? {} : { update_error: body.updateError }),\n });\n return parseClientHostReport(response, \"POST\", path);\n }\n async heartbeatClientHost(captainId, hostId, body = {}) {\n requireCaptainId(captainId);\n requireSegment(hostId, \"hostId\");\n if (body.displayName !== undefined)\n requireNonEmpty(body.displayName, \"displayName\");\n validateClientBuildMetadata(body.clientVersion, body.clientGitSha);\n const path = `/api/v1/captains/${segment(captainId)}/client-hosts/${segment(hostId)}/heartbeat`;\n const response = await this.requestJson(\"POST\", path, {\n ...(body.displayName === undefined ? {} : { display_name: body.displayName }),\n ...(body.clientVersion === undefined ? {} : { client_version: body.clientVersion }),\n ...(body.clientGitSha === undefined ? {} : { client_git_sha: body.clientGitSha }),\n ...(body.updateError === undefined ? {} : { update_error: body.updateError }),\n });\n return parseClientHostReport(response, \"POST\", path);\n }\n // The host daemon's reconcile authority: live (unarchived) member names bound\n // to this host. Fetched on demand only when a reconcile cycle is due. A 404\n // from an older relay throws (RelayHttpError) — the daemon treats that as an\n // unknown set and skips reclaim, so a live worktree is never removed on a\n // missing endpoint. An empty array is authoritative (\"no live members\").\n async listHostActiveAgents(captainId, hostId) {\n requireCaptainId(captainId);\n requireSegment(hostId, \"hostId\");\n const path = `/api/v1/captains/${segment(captainId)}/client-hosts/${segment(hostId)}/active-agents`;\n const response = await this.requestJson(\"GET\", path);\n if (!Array.isArray(response.active_agents) || response.active_agents.some((name) => typeof name !== \"string\")) {\n throw new RelayProtocolError(\"GET\", path, \"active_agents must be an array of strings\");\n }\n return response.active_agents;\n }\n async listClientHosts(captainId) {\n requireCaptainId(captainId);\n const path = `/api/v1/captains/${segment(captainId)}/client-hosts`;\n const response = await this.requestJson(\"GET\", path);\n if (!Array.isArray(response.hosts)) {\n throw new RelayProtocolError(\"GET\", path, \"hosts must be an array\");\n }\n return { hosts: response.hosts.map((host) => parseClientHost(host, \"GET\", path)) };\n }\n async replaceClientHostWorkspaces(captainId, hostId, body) {\n requireCaptainId(captainId);\n requireSegment(hostId, \"hostId\");\n const path = `/api/v1/captains/${segment(captainId)}/client-hosts/${segment(hostId)}/workspaces`;\n const response = await this.requestJson(\"POST\", path, { workspaces: body.workspaces.map(normalizeClientHostWorkspaceReport) });\n return parseClientHostWorkspacesResponse(response, \"POST\", path);\n }\n async listClientHostWorkspaces(captainId, hostId) {\n requireCaptainId(captainId);\n requireSegment(hostId, \"hostId\");\n const path = `/api/v1/captains/${segment(captainId)}/client-hosts/${segment(hostId)}/workspaces`;\n const response = await this.requestJson(\"GET\", path);\n return parseClientHostWorkspacesResponse(response, \"GET\", path);\n }\n async claimAgentStartRequest(captainId, hostId, signal) {\n requireCaptainId(captainId);\n requireSegment(hostId, \"hostId\");\n const path = `/api/v1/captains/${segment(captainId)}/client-hosts/${segment(hostId)}/agent-start-requests/claim`;\n const response = await this.requestJson(\"POST\", path, {}, this.defaultTimeoutMs, signal);\n if (response.request === null)\n return null;\n if (response.request === undefined)\n throw new RelayProtocolError(\"POST\", path, \"request field is required\");\n return parseAgentStartRequest(response.request, \"POST\", path);\n }\n async getTaskRepoTipWanted(captainId) {\n requireCaptainId(captainId);\n const path = `/api/v1/captains/${segment(captainId)}/task-repo-tips/wanted`;\n const response = await this.requestJson(\"GET\", path);\n if (!Array.isArray(response.wanted))\n throw new RelayProtocolError(\"GET\", path, \"wanted field is required\");\n return response;\n }\n async putTaskRepoTips(captainId, session, body) {\n requireCaptainId(captainId);\n requireSegment(session, \"session\");\n const path = `/api/v1/captains/${segment(captainId)}/sessions/${segment(session)}/task-repo/tips`;\n return this.requestJson(\"PUT\", path, body);\n }\n async markAgentStartRequestStarted(captainId, hostId, requestId, body = {}) {\n return this.transitionAgentStartRequest(captainId, hostId, requestId, \"started\", body.result === undefined ? {} : { result: body.result });\n }\n async markAgentStartRequestFailed(captainId, hostId, requestId, body = {}) {\n if (body.error !== undefined)\n requireNonEmpty(body.error, \"error\");\n return this.transitionAgentStartRequest(captainId, hostId, requestId, \"failed\", {\n ...(body.error === undefined ? {} : { error: body.error }),\n ...(body.result === undefined ? {} : { result: body.result }),\n });\n }\n async createKey(body) {\n validateKeyCreate(body);\n const response = await this.requestJson(\"POST\", \"/api/v1/keys\", body);\n if (typeof response.id !== \"string\" || typeof response.key !== \"string\") {\n throw new RelayProtocolError(\"POST\", \"/api/v1/keys\", \"invalid key response\");\n }\n return response;\n }\n async ingestRagDocument(captainId, teamId, body) {\n requireCaptainId(captainId);\n requireSegment(teamId, \"teamId\");\n validateRagIngestDocument(body);\n const path = `/api/v1/rag/captains/${segment(captainId)}/teams/${segment(teamId)}/ingest`;\n const response = await this.requestJson(\"POST\", path, normalizeRagIngestDocument(body));\n return parseRagIngestDocumentResponse(response, \"POST\", path);\n }\n async upsertRagCard(captainId, teamId, body) {\n requireCaptainId(captainId);\n requireSegment(teamId, \"teamId\");\n validateRagCardUpsert(body);\n const path = `/api/v1/rag/captains/${segment(captainId)}/teams/${segment(teamId)}/docs`;\n return parseRagCardUpsertResponse(await this.requestJson(\"POST\", path, body), path, body.key);\n }\n async searchRag(captainId, teamId, text) {\n requireCaptainId(captainId);\n requireSegment(teamId, \"teamId\");\n requireNonEmpty(text, \"text\");\n const path = `/api/v1/rag/captains/${segment(captainId)}/teams/${segment(teamId)}/query`;\n return parseRagSearchResponse(await this.requestJson(\"POST\", path, { text }), \"POST\", path);\n }\n async getRagMemoryIndex(captainId, teamId) {\n requireCaptainId(captainId);\n requireSegment(teamId, \"teamId\");\n const path = `/api/v1/rag/captains/${segment(captainId)}/teams/${segment(teamId)}/index`;\n return parseRagMemoryIndex(await this.requestJson(\"GET\", path), \"GET\", path);\n }\n async getRagEntitlement(captainId, teamId) {\n requireCaptainId(captainId);\n requireSegment(teamId, \"teamId\");\n const path = `/api/v1/rag/captains/${segment(captainId)}/teams/${segment(teamId)}/entitlement`;\n return parseRagEntitlement(await this.requestJson(\"GET\", path), \"GET\", path);\n }\n async setRagCardPin(captainId, teamId, key, pinned) {\n requireCaptainId(captainId);\n requireSegment(teamId, \"teamId\");\n requireNonEmpty(key, \"key\");\n const path = `/api/v1/rag/captains/${segment(captainId)}/teams/${segment(teamId)}/${pinned ? \"pin\" : \"unpin\"}/${segment(key)}`;\n return parseRagCard(await this.requestJson(\"POST\", path, {}), \"POST\", path, key);\n }\n async getRagCurrentCard(captainId, teamId, key) {\n requireCaptainId(captainId);\n requireSegment(teamId, \"teamId\");\n requireNonEmpty(key, \"key\");\n const path = `/api/v1/rag/captains/${segment(captainId)}/teams/${segment(teamId)}/current/${segment(key)}`;\n return parseRagCard(await this.requestJson(\"GET\", path), \"GET\", path, key);\n }\n async fetchManagedMaterialization(captainId, teamId, agentName, engine, cursor, pageCursor) {\n requireCaptainId(captainId);\n requireSegment(teamId, \"teamId\");\n requireSegment(agentName, \"agentName\");\n if (engine !== \"claude\" && engine !== \"codex\")\n throw new Error(\"engine must be claude or codex\");\n const query = new URLSearchParams({ engine });\n if (pageCursor?.trim())\n query.set(\"page_cursor\", pageCursor.trim());\n else if (cursor?.trim())\n query.set(\"cursor\", cursor.trim());\n const path = `/api/v1/rag/captains/${segment(captainId)}/teams/${segment(teamId)}/agents/${segment(agentName)}/managed-materialization?${query.toString()}`;\n const response = await this.requestManagedMaterialization(path, pageCursor?.trim() ? undefined : cursor);\n return parseManagedMaterializationResponse(response, \"GET\", path, cursor);\n }\n async reportManagedMaterializationDrift(captainId, teamId, body) {\n requireCaptainId(captainId);\n requireSegment(teamId, \"teamId\");\n validateManagedDrift(body);\n await this.requestOptionalJson(\"POST\", `/api/v1/rag/captains/${segment(captainId)}/teams/${segment(teamId)}/managed-materialization/drift`, body);\n }\n async listKeys() {\n const response = await this.requestJson(\"GET\", \"/api/v1/keys\");\n if (!Array.isArray(response.keys)) {\n throw new RelayProtocolError(\"GET\", \"/api/v1/keys\", \"keys must be an array\");\n }\n return { keys: response.keys };\n }\n async revokeKey(id) {\n requireSegment(id, \"id\");\n const response = await this.requestJson(\"DELETE\", `/api/v1/keys/${segment(id)}`);\n if (!(\"key\" in response)) {\n throw new RelayProtocolError(\"DELETE\", `/api/v1/keys/${segment(id)}`, \"missing key payload\");\n }\n return { key: response.key };\n }\n async createEnrollment(input) {\n requireSegment(input.session, \"session\");\n requireSegment(input.agentName, \"agentName\");\n requireSegment(input.host, \"host\");\n if (input.captainId !== undefined && !/^\\d+$/.test(input.captainId.trim())) {\n throw new Error(\"captainId must be a numeric string\");\n }\n const key = await this.createKey({\n name: input.name ?? input.agentName,\n role: input.role,\n session: input.session,\n agent_name: input.agentName,\n host: input.host,\n ...(input.captainId === undefined ? {} : { captain_id: input.captainId.trim() }),\n });\n return {\n key_id: key.id,\n relay_url: this.relayUrl,\n token: key.key,\n ...(input.captainId === undefined ? {} : { captain_id: input.captainId.trim() }),\n agent_name: input.agentName,\n session: input.session,\n role: input.role,\n roles: [input.role],\n host: input.host,\n created_at: new Date().toISOString(),\n };\n }\n async transitionAgentStartRequest(captainId, hostId, requestId, status, body) {\n requireCaptainId(captainId);\n requireSegment(hostId, \"hostId\");\n requireSegment(requestId, \"requestId\");\n const path = `/api/v1/captains/${segment(captainId)}/client-hosts/${segment(hostId)}/agent-start-requests/${segment(requestId)}/${status}`;\n const response = await this.requestJson(\"POST\", path, body);\n if (response.request === undefined || response.request === null) {\n throw new RelayProtocolError(\"POST\", path, \"request field is required\");\n }\n const parsed = parseAgentStartRequest(response.request, \"POST\", path);\n if (response.error !== undefined && typeof response.error !== \"string\") {\n throw new RelayProtocolError(\"POST\", path, \"error must be a string\");\n }\n if (parsed.status !== status) {\n throw new RelayProtocolError(\"POST\", path, `request.status must be ${status}`);\n }\n return response.error === undefined ? { request: parsed } : { request: parsed, error: response.error };\n }\n async requestJson(method, path, body, timeoutMs = this.defaultTimeoutMs, signal) {\n return await this.request(method, path, body, timeoutMs, signal, async (response) => {\n const contentType = response.headers.get(\"Content-Type\") ?? \"\";\n if (!contentType.includes(JSON_CONTENT_TYPE)) {\n await response.text();\n throw new RelayProtocolError(method, path, \"response is not JSON\");\n }\n let parsed;\n try {\n const text = await response.text();\n parsed = JSON.parse(text);\n attachMailboxPayloadSources(parsed, text);\n }\n catch (error) {\n if (error instanceof SyntaxError) {\n throw new RelayProtocolError(method, path, \"response JSON is invalid\");\n }\n throw error;\n }\n if (!parsed || typeof parsed !== \"object\" || Array.isArray(parsed)) {\n throw new RelayProtocolError(method, path, \"response JSON must be an object\");\n }\n return parsed;\n });\n }\n async requestOptionalJson(method, path, body, timeoutMs = this.defaultTimeoutMs, signal) {\n await this.request(method, path, body, timeoutMs, signal, async (response) => {\n const text = await response.text();\n if (!text.trim())\n return;\n const contentType = response.headers.get(\"Content-Type\") ?? \"\";\n if (!contentType.includes(JSON_CONTENT_TYPE)) {\n throw new RelayProtocolError(method, path, \"response is not JSON\");\n }\n let parsed;\n try {\n parsed = JSON.parse(text);\n }\n catch (error) {\n if (error instanceof SyntaxError) {\n throw new RelayProtocolError(method, path, \"response JSON is invalid\");\n }\n throw error;\n }\n if (!parsed || typeof parsed !== \"object\" || Array.isArray(parsed)) {\n throw new RelayProtocolError(method, path, \"response JSON must be an object\");\n }\n });\n }\n async requestText(method, path) {\n return await this.request(method, path, undefined, this.defaultTimeoutMs, undefined, async (response) => response.text());\n }\n async requestManagedMaterialization(path, cursor) {\n const controller = new AbortController();\n const timeout = setTimeout(() => controller.abort(), this.defaultTimeoutMs);\n try {\n const response = await this.fetchImpl(`${this.relayUrl}${path}`, {\n method: \"GET\",\n headers: {\n Accept: JSON_CONTENT_TYPE,\n Authorization: `Bearer ${this.bearerToken}`,\n ...(cursor?.trim() ? { \"If-None-Match\": cursor.trim() } : {}),\n },\n signal: controller.signal,\n });\n if (response.status === 304)\n return \"not_modified_304\";\n if (!response.ok)\n throw new RelayHttpError(\"GET\", path, response.status, redact(await response.text(), this.bearerToken));\n const contentType = response.headers.get(\"Content-Type\") ?? \"\";\n if (!contentType.includes(JSON_CONTENT_TYPE)) {\n await response.text();\n throw new RelayProtocolError(\"GET\", path, \"response is not JSON\");\n }\n let parsed;\n try {\n parsed = await response.json();\n }\n catch (error) {\n if (error instanceof SyntaxError) {\n throw new RelayProtocolError(\"GET\", path, \"response JSON is invalid\");\n }\n throw error;\n }\n if (!parsed || typeof parsed !== \"object\" || Array.isArray(parsed)) {\n throw new RelayProtocolError(\"GET\", path, \"response JSON must be an object\");\n }\n return parsed;\n }\n catch (error) {\n if (error instanceof RelayError)\n throw error;\n throw new RelayNetworkError(\"GET\", path, redact(errorMessage(error), this.bearerToken));\n }\n finally {\n clearTimeout(timeout);\n }\n }\n async request(method, path, body, timeoutMs, signal, readResponse) {\n const controller = new AbortController();\n const abort = () => controller.abort(signal?.reason);\n const timeout = setTimeout(() => controller.abort(), timeoutMs);\n if (signal?.aborted)\n abort();\n signal?.addEventListener(\"abort\", abort, { once: true });\n try {\n const response = await this.fetchImpl(`${this.relayUrl}${path}`, {\n method,\n headers: {\n Accept: body === undefined ? \"*/*\" : JSON_CONTENT_TYPE,\n Authorization: `Bearer ${this.bearerToken}`,\n Connection: \"close\",\n ...(body === undefined ? {} : { \"Content-Type\": JSON_CONTENT_TYPE }),\n },\n body: body === undefined ? undefined : JSON.stringify(body),\n signal: controller.signal,\n });\n if (!response.ok) {\n throw new RelayHttpError(method, path, response.status, redact(await response.text(), this.bearerToken));\n }\n return await readResponse(response);\n }\n catch (error) {\n if (error instanceof RelayError)\n throw error;\n throw new RelayNetworkError(method, path, redact(errorMessage(error), this.bearerToken));\n }\n finally {\n clearTimeout(timeout);\n signal?.removeEventListener(\"abort\", abort);\n }\n }\n}\nclass NodeRelayHttpClient {\n httpAgent = new http.Agent({ keepAlive: false });\n httpsAgent = new https.Agent({ keepAlive: false });\n activeRequests = new Set();\n fetch = async (input, init = {}) => {\n const url = requestUrl(input);\n const body = requestBody(init.body);\n const headers = new Headers(init.headers);\n if (body)\n headers.set(\"Content-Length\", String(body.byteLength));\n return await new Promise((resolve, reject) => {\n let settled = false;\n let active = null;\n let responseStarted = false;\n const settleReject = (error) => {\n if (settled)\n return;\n settled = true;\n if (active)\n this.activeRequests.delete(active);\n reject(error);\n };\n const settleResolve = (response) => {\n if (settled)\n return;\n settled = true;\n if (active)\n this.activeRequests.delete(active);\n resolve(response);\n };\n const request = (url.protocol === \"https:\" ? https : http).request(url, {\n method: init.method ?? \"GET\",\n headers: headersRecord(headers),\n agent: url.protocol === \"https:\" ? this.httpsAgent : this.httpAgent,\n }, (response) => {\n responseStarted = true;\n const chunks = [];\n let ended = false;\n response.on(\"data\", (chunk) => {\n chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk));\n });\n response.on(\"end\", () => {\n ended = true;\n try {\n settleResolve(_nodeResponse(response, chunks));\n }\n catch (error) {\n settleReject(error instanceof Error ? error : new Error(String(error)));\n }\n });\n response.on(\"error\", (error) => settleReject(error));\n response.on(\"close\", () => {\n if (!ended)\n settleReject(new Error(\"relay response closed before end\"));\n });\n });\n active = {\n fail: (error) => {\n settleReject(error);\n request.destroy(error);\n },\n };\n this.activeRequests.add(active);\n const abort = () => {\n const reason = init.signal?.reason;\n active?.fail(reason instanceof Error ? reason : new Error(\"relay request aborted\"));\n };\n request.on(\"error\", (error) => settleReject(error));\n if (init.signal?.aborted)\n abort();\n init.signal?.addEventListener(\"abort\", abort, { once: true });\n request.on(\"close\", () => {\n init.signal?.removeEventListener(\"abort\", abort);\n if (!settled && !responseStarted)\n settleReject(new Error(\"relay request closed before response\"));\n });\n if (!settled) {\n if (body)\n request.write(body);\n request.end();\n }\n });\n };\n close() {\n const error = new Error(\"relay client closed\");\n for (const active of [...this.activeRequests])\n active.fail(error);\n this.httpAgent.destroy();\n this.httpsAgent.destroy();\n }\n}\nfunction requestUrl(input) {\n if (typeof input === \"string\" || input instanceof URL)\n return new URL(input);\n return new URL(input.url);\n}\nfunction requestBody(body) {\n if (body === undefined || body === null)\n return null;\n if (typeof body === \"string\")\n return Buffer.from(body);\n if (body instanceof URLSearchParams)\n return Buffer.from(body.toString());\n if (body instanceof ArrayBuffer)\n return Buffer.from(body);\n if (ArrayBuffer.isView(body))\n return Buffer.from(body.buffer, body.byteOffset, body.byteLength);\n throw new TypeError(\"unsupported relay request body type\");\n}\nfunction responseHeaders(input) {\n const headers = new Headers();\n for (const [key, value] of Object.entries(input)) {\n if (value === undefined)\n continue;\n if (Array.isArray(value)) {\n for (const item of value)\n headers.append(key, item);\n continue;\n }\n headers.set(key, value);\n }\n return headers;\n}\nfunction _nodeResponse(response, chunks) {\n const status = response.statusCode ?? 0;\n const body = status === 204 || status === 205 || status === 304\n ? null\n : new Uint8Array(Buffer.concat(chunks));\n return new Response(body, {\n status,\n statusText: response.statusMessage,\n headers: responseHeaders(response.headers),\n });\n}\nfunction headersRecord(headers) {\n const out = {};\n headers.forEach((value, key) => { out[key] = value; });\n return out;\n}\nfunction normalizeMailboxBody(body) {\n return { ...body, payload_kind: body.payload_kind ?? \"raw\" };\n}\nfunction validateMailboxPayload(body) {\n const hasJson = Object.hasOwn(body, \"payload_json\");\n const hasBytes = Object.hasOwn(body, \"payload_bytes_base64\");\n if (hasJson === hasBytes)\n throw new Error(\"specify exactly one mailbox payload\");\n if (hasJson && body.payload_json === undefined)\n throw new Error(\"payload_json cannot be undefined\");\n if (hasJson && body.payload_json === null)\n throw new Error(\"payload_json cannot be null\");\n if (hasBytes && typeof body.payload_bytes_base64 !== \"string\") {\n throw new Error(\"payload_bytes_base64 must be a string\");\n }\n}\nfunction hasSessionMailboxRecipients(body) {\n const hasAgents = hasRecipientArray(body.to_agents, \"to_agents\");\n const hasRoles = hasRecipientArray(body.to_roles, \"to_roles\");\n const hasHost = hasHostRecipient(body.to_host);\n if (hasAgents && (hasRoles || hasHost))\n throw new Error(\"to_agents cannot be combined with to_roles or to_host\");\n return hasAgents || hasRoles || hasHost;\n}\nfunction hasRecipientArray(value, label) {\n if (value === undefined)\n return false;\n if (!Array.isArray(value))\n throw new Error(`${label} must be a string array`);\n if (value.some((item) => typeof item !== \"string\" || !item.trim())) {\n throw new Error(`${label} must not contain empty values`);\n }\n return value.length > 0;\n}\nfunction hasHostRecipient(value) {\n if (value === undefined)\n return false;\n const hosts = Array.isArray(value) ? value : [value];\n if (hosts.some((host) => typeof host !== \"string\" || !host.trim())) {\n throw new Error(\"to_host must not contain empty values\");\n }\n return hosts.length > 0;\n}\nfunction validateKeyCreate(body) {\n requireSegment(body.name, \"name\");\n if (body.role !== undefined) {\n body.role = normalizeRole(body.role, \"role\");\n return;\n }\n if (body.roles !== undefined) {\n body.role = normalizeLegacyRole(body.roles);\n delete body.roles;\n return;\n }\n throw new Error(\"role must be a non-empty string\");\n}\nfunction normalizeAgentPatch(body) {\n if (!Object.hasOwn(body, \"session\")\n && !Object.hasOwn(body, \"role\")\n && !Object.hasOwn(body, \"roles\")\n && !Object.hasOwn(body, \"engine\")\n && !Object.hasOwn(body, \"transport\")\n && !Object.hasOwn(body, \"cwd\")\n && !Object.hasOwn(body, \"restart_command\")\n && !Object.hasOwn(body, \"session_handle\")) {\n throw new Error(\"agent patch requires session, role, engine, transport, cwd, restart_command, or session_handle\");\n }\n const patch = { ...body };\n if (body.session !== undefined)\n requireSegment(body.session, \"session\");\n if (body.role !== undefined) {\n patch.role = normalizeRole(body.role, \"role\");\n delete patch.roles;\n }\n else if (body.roles !== undefined) {\n patch.role = normalizeLegacyRole(body.roles);\n delete patch.roles;\n }\n if (body.engine !== undefined && !isAgentEngineId(body.engine))\n throw new Error(\"engine must be a bounded identifier when provided\");\n if (body.engine !== undefined && !KNOWN_AGENT_ENGINE_IDS.has(body.engine) && body.restart_command === undefined) {\n throw new Error(\"restart_command is required when patching a custom engine\");\n }\n if (body.transport !== undefined && ![\"tmux\", \"sdk\", \"headless\", \"pty\"].includes(body.transport)) {\n throw new Error(\"transport must be tmux, sdk, headless, or pty when provided\");\n }\n if (body.cwd !== undefined && !validProfileString(body.cwd))\n throw new Error(\"cwd must be a non-empty string without control characters\");\n if (body.restart_command !== undefined && !validProfileString(body.restart_command)) {\n throw new Error(\"restart_command must be a non-empty string without control characters\");\n }\n if (body.session_handle !== undefined && body.session_handle !== null && !body.session_handle.trim()) {\n throw new Error(\"session_handle must be null or a non-empty string\");\n }\n return patch;\n}\nconst AGENT_ENGINE_ID_RE = /^[a-z][a-z0-9._-]{0,63}$/;\nconst KNOWN_AGENT_ENGINE_IDS = new Set([\"claude\", \"codex\", \"opencode\"]);\nconst CONTROL_CHAR_RE = /[\\u0000-\\u001F\\u007F]/;\nconst MAX_PROFILE_STRING_LENGTH = 1024;\nfunction isAgentEngineId(value) {\n return AGENT_ENGINE_ID_RE.test(value)\n && !/[._-]$/.test(value)\n && !value.includes(\"..\");\n}\nfunction validProfileString(value) {\n const trimmed = value.trim();\n return trimmed.length > 0 && trimmed.length <= MAX_PROFILE_STRING_LENGTH && !CONTROL_CHAR_RE.test(trimmed);\n}\nfunction normalizeRole(role, label) {\n if (typeof role !== \"string\" || !role.trim())\n throw new Error(`${label} must be a non-empty string`);\n return role.trim();\n}\nfunction normalizeLegacyRole(roles) {\n if (!Array.isArray(roles) || roles.length !== 1)\n throw new Error(\"roles must contain exactly one role\");\n return normalizeRole(roles[0], \"roles[0]\");\n}\nfunction parseAgentMonitor(value) {\n if (typeof value.name !== \"string\") {\n throw new RelayProtocolError(\"GET\", \"/api/v1/agents/{name}/monitor\", \"name must be a string\");\n }\n if (value.engine !== null && typeof value.engine !== \"string\") {\n throw new RelayProtocolError(\"GET\", \"/api/v1/agents/{name}/monitor\", \"engine must be string or null\");\n }\n if (typeof value.should_resume !== \"boolean\") {\n throw new RelayProtocolError(\"GET\", \"/api/v1/agents/{name}/monitor\", \"should_resume must be boolean\");\n }\n if (value.session_handle !== null && typeof value.session_handle !== \"string\") {\n throw new RelayProtocolError(\"GET\", \"/api/v1/agents/{name}/monitor\", \"session_handle must be string or null\");\n }\n if (typeof value.context_checkpoint_percent !== \"number\" || !Number.isFinite(value.context_checkpoint_percent)) {\n throw new RelayProtocolError(\"GET\", \"/api/v1/agents/{name}/monitor\", \"context_checkpoint_percent must be a finite number\");\n }\n if (value.idle_presave_min !== null && (typeof value.idle_presave_min !== \"number\" || !Number.isFinite(value.idle_presave_min))) {\n throw new RelayProtocolError(\"GET\", \"/api/v1/agents/{name}/monitor\", \"idle_presave_min must be a finite number or null\");\n }\n const latestInbound = value.latest_message_inbound_at;\n const latestOutbound = value.latest_message_outbound_at;\n if (latestInbound !== null && typeof latestInbound !== \"string\") {\n throw new RelayProtocolError(\"GET\", \"/api/v1/agents/{name}/monitor\", \"latest_message_inbound_at must be string or null\");\n }\n if (latestOutbound !== null && typeof latestOutbound !== \"string\") {\n throw new RelayProtocolError(\"GET\", \"/api/v1/agents/{name}/monitor\", \"latest_message_outbound_at must be string or null\");\n }\n return {\n name: value.name,\n engine: value.engine,\n should_resume: value.should_resume,\n session_handle: value.session_handle,\n context_checkpoint_percent: value.context_checkpoint_percent,\n idle_presave_min: value.idle_presave_min,\n latest_message_inbound_at: latestInbound,\n latest_message_outbound_at: latestOutbound,\n };\n}\nfunction _parseWorkerRecord(value, path) {\n const worker = _requireObject(value, \"GET\", path, \"worker\");\n for (const field of [\"id\", \"session\", \"name\", \"host\", \"consumer_status\", \"last_seen\"]) {\n _requireStringField(worker, field, \"GET\", path, \"worker\");\n }\n if (!isStringArray(worker.capabilities) || !isStringArray(worker.caps)) {\n throw new RelayProtocolError(\"GET\", path, \"worker capabilities and caps must be string arrays\");\n }\n if (!Number.isSafeInteger(worker.max_concurrency) || worker.max_concurrency < 1) {\n throw new RelayProtocolError(\"GET\", path, \"worker.max_concurrency must be a positive integer\");\n }\n if (typeof worker.online !== \"boolean\") {\n throw new RelayProtocolError(\"GET\", path, \"worker.online must be boolean\");\n }\n return worker;\n}\nfunction _validateWorkerJobSubmit(body) {\n requireSegment(body.worker, \"worker\");\n if (body.argv.length === 0 || !body.argv[0]?.trim())\n throw new Error(\"job argv requires a command\");\n if (body.argv.some((arg) => typeof arg !== \"string\"))\n throw new Error(\"job argv must contain strings\");\n if (body.timeoutSec !== undefined)\n _validateWorkerJobTimeout(body.timeoutSec);\n}\nfunction _validateWorkerJobTimeout(value) {\n if (!Number.isFinite(value) || value < 1 || value > MAX_JOB_TIMEOUT_SECONDS) {\n throw new Error(`timeoutSec must be a number from 1 to ${MAX_JOB_TIMEOUT_SECONDS}`);\n }\n}\nfunction _validateWorkerJobWaitTimeout(value) {\n const maximum = MAX_JOB_TIMEOUT_SECONDS + WORKER_JOB_RESULT_GRACE_SECONDS;\n if (!Number.isFinite(value) || value < 1 || value > maximum) {\n throw new Error(`result wait timeoutSec must be a number from 1 to ${maximum}`);\n }\n}\nfunction _parseWorkerJobSubmitResponse(value, path) {\n if (typeof value.id !== \"string\" || !value.id || value.status !== \"queued\") {\n throw new RelayProtocolError(\"POST\", path, \"job submit response requires id and queued status\");\n }\n if (value.warning !== undefined && typeof value.warning !== \"string\") {\n throw new RelayProtocolError(\"POST\", path, \"job submit warning must be a string\");\n }\n return {\n id: value.id,\n status: \"queued\",\n ...(value.warning === undefined ? {} : { warning: value.warning }),\n };\n}\nfunction _parseWorkerJobResultResponse(value, path) {\n const status = value.status;\n if (!_isWorkerJobStatus(status))\n throw new RelayProtocolError(\"GET\", path, \"job status is invalid\");\n for (const field of [\"id\", \"created_at\"])\n _requireStringField(value, field, \"GET\", path, \"job\");\n _requireNullableStringFields(value, [\"started_at\", \"finished_at\", \"submitter_agent_name\"], path);\n _requireNullableNumberFields(value, [\"duration_sec\"], path);\n if (value.exit_code !== null && !Number.isSafeInteger(value.exit_code)) {\n throw new RelayProtocolError(\"GET\", path, \"job.exit_code must be an integer or null\");\n }\n const result = value.result === undefined ? undefined : _parseWorkerJobResult(value.result, path);\n if (_isTerminalJobStatus(status) && (result === undefined || value.exit_code !== result.exit_code)) {\n throw new RelayProtocolError(\"GET\", path, \"terminal job response requires a matching result\");\n }\n return { ...value, status, ...(result ? { result } : {}) };\n}\nfunction _parseWorkerJobResult(value, path) {\n const result = _requireObject(value, \"GET\", path, \"job result\");\n for (const field of [\"stdout\", \"stderr\"])\n _requireStringField(result, field, \"GET\", path, \"job result\", true);\n _requireNullableStringFields(result, [\"started_at\", \"ended_at\"], path, \"job result\");\n if (!Number.isSafeInteger(result.exit_code)) {\n throw new RelayProtocolError(\"GET\", path, \"job result.exit_code must be an integer\");\n }\n _requireNullableNumberFields(result, [\"duration_sec\"], path, \"job result\");\n if (!isStringArray(result.attached_file_paths)) {\n throw new RelayProtocolError(\"GET\", path, \"job result.attached_file_paths must be a string array\");\n }\n return result;\n}\nfunction _isWorkerJobStatus(value) {\n return value === \"queued\" || value === \"running\" || value === \"done\"\n || value === \"failed\" || value === \"cancelled\";\n}\nfunction _isTerminalJobStatus(value) {\n return value === \"done\" || value === \"failed\" || value === \"cancelled\";\n}\nfunction _requireObject(value, method, path, label) {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) {\n throw new RelayProtocolError(method, path, `${label} must be an object`);\n }\n return value;\n}\nfunction _requireStringField(value, field, method, path, label, allowEmpty = false) {\n if (typeof value[field] !== \"string\" || (!allowEmpty && !value[field])) {\n throw new RelayProtocolError(method, path, `${label}.${field} must be a string`);\n }\n}\nfunction _requireNullableStringFields(value, fields, path, label = \"job\") {\n for (const field of fields) {\n if (value[field] !== null && typeof value[field] !== \"string\") {\n throw new RelayProtocolError(\"GET\", path, `${label}.${field} must be a string or null`);\n }\n }\n}\nfunction _requireNullableNumberFields(value, fields, path, label = \"job\") {\n for (const field of fields) {\n if (value[field] !== null && (typeof value[field] !== \"number\" || !Number.isFinite(value[field]))) {\n throw new RelayProtocolError(\"GET\", path, `${label}.${field} must be a finite number or null`);\n }\n }\n}\nfunction parseScheduledEventResponse(value, method, path) {\n return { event: parseScheduledEvent(value.event, method, path) };\n}\nfunction parseScheduledEventListResponse(value, path) {\n if (!Array.isArray(value.events))\n throw new RelayProtocolError(\"GET\", path, \"events must be an array\");\n return { events: value.events.map((event) => parseScheduledEvent(event, \"GET\", path)) };\n}\nfunction parseScheduledEvent(value, method, path) {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) {\n throw new RelayProtocolError(method, path, \"event must be an object\");\n }\n const event = value;\n if (typeof event.id !== \"string\" || !event.id)\n throw new RelayProtocolError(method, path, \"event.id must be a non-empty string\");\n return event;\n}\nfunction _decisionPath(captainId, session, id) {\n return `/api/v1/captains/${segment(captainId)}/sessions/${segment(session)}/decisions${id ? `/${segment(id)}` : \"\"}`;\n}\nfunction _sessionTaskPath(captainId, session, id) {\n return `/api/v1/captains/${segment(captainId)}/sessions/${segment(session)}/tasks${id ? `/${segment(id)}` : \"\"}`;\n}\nfunction _parseDecisionResponse(value, method, path) {\n return { question: _parseDecisionQuestion(value.question, method, path) };\n}\nfunction _parseDecisionListResponse(value, path) {\n if (!Array.isArray(value.questions))\n throw new RelayProtocolError(\"GET\", path, \"questions must be an array\");\n return { questions: value.questions.map((question) => _parseDecisionQuestion(question, \"GET\", path)) };\n}\nfunction _parseSessionTaskResponse(value, method, path) {\n return { task: _parseSessionTask(value.task, method, path) };\n}\nfunction _sessionWorkflowPath(captainId, session) {\n return `${_captainSessionPath(captainId, session)}/workflow`;\n}\nfunction _captainSessionPath(captainId, session) {\n return `/api/v1/captains/${segment(captainId)}/sessions/${segment(session)}`;\n}\nfunction _parseTeamAgentSlotsResponse(value, method, path) {\n if (!Array.isArray(value.agent_slots))\n throw new RelayProtocolError(method, path, \"agent_slots must be an array\");\n return { agent_slots: value.agent_slots.map((slot) => _parseTeamAgentSlot(slot, method, path)) };\n}\nfunction _parseTeamAgentSlot(value, method, path) {\n if (!value || typeof value !== \"object\" || Array.isArray(value))\n throw new RelayProtocolError(method, path, \"agent_slot must be an object\");\n const slot = value;\n for (const field of [\"slot_id\", \"role_name\", \"status\"]) {\n if (typeof slot[field] !== \"string\" || !slot[field])\n throw new RelayProtocolError(method, path, `agent_slot.${field} must be a non-empty string`);\n }\n for (const field of [\"role\", \"agent_name\", \"host_id\", \"engine\", \"tmux_session_name\", \"template_id\"]) {\n if (slot[field] != null && typeof slot[field] !== \"string\")\n throw new RelayProtocolError(method, path, `agent_slot.${field} must be a string or null`);\n }\n return {\n slot_id: slot.slot_id,\n role_name: slot.role_name,\n status: slot.status,\n role: slot.role ?? null,\n agent_name: slot.agent_name ?? null,\n host_id: slot.host_id ?? null,\n engine: slot.engine ?? null,\n tmux_session_name: slot.tmux_session_name ?? null,\n template_id: slot.template_id ?? null,\n };\n}\nfunction _parseSessionArtifact(value, method, path) {\n for (const field of [\"id\", \"name\", \"sha256\", \"content_url\"]) {\n if (typeof value[field] !== \"string\" || !value[field])\n throw new RelayProtocolError(method, path, `${field} must be a non-empty string`);\n }\n if (!Number.isSafeInteger(value.size_bytes) || value.size_bytes < 0) {\n throw new RelayProtocolError(method, path, \"size_bytes must be a non-negative integer\");\n }\n return value;\n}\nfunction _parseSessionTaskListResponse(value, path) {\n if (typeof value.session !== \"string\" || !value.session)\n throw new RelayProtocolError(\"GET\", path, \"session must be a non-empty string\");\n if (!Array.isArray(value.tasks))\n throw new RelayProtocolError(\"GET\", path, \"tasks must be an array\");\n if (!Number.isSafeInteger(value.total) || value.total < 0)\n throw new RelayProtocolError(\"GET\", path, \"total must be a non-negative integer\");\n if (typeof value.has_more !== \"boolean\")\n throw new RelayProtocolError(\"GET\", path, \"has_more must be boolean\");\n if (value.next_cursor !== null && typeof value.next_cursor !== \"string\")\n throw new RelayProtocolError(\"GET\", path, \"next_cursor must be string or null\");\n return { session: value.session, tasks: value.tasks.map((task) => _parseSessionTask(task, \"GET\", path)), total: value.total, has_more: value.has_more, next_cursor: value.next_cursor };\n}\nfunction _parseSessionTaskEventsResponse(value, path) {\n if (typeof value.session !== \"string\" || !value.session)\n throw new RelayProtocolError(\"GET\", path, \"session must be a non-empty string\");\n if (typeof value.task_id !== \"string\" || !value.task_id)\n throw new RelayProtocolError(\"GET\", path, \"task_id must be a non-empty string\");\n if (typeof value.has_more !== \"boolean\")\n throw new RelayProtocolError(\"GET\", path, \"has_more must be boolean\");\n for (const field of [\"next_cursor\", \"previous_cursor\"]) {\n if (value[field] !== null && typeof value[field] !== \"string\")\n throw new RelayProtocolError(\"GET\", path, `${field} must be string or null`);\n }\n if (!Array.isArray(value.events))\n throw new RelayProtocolError(\"GET\", path, \"events must be an array\");\n return {\n session: value.session,\n task_id: value.task_id,\n next_cursor: value.next_cursor,\n previous_cursor: value.previous_cursor,\n has_more: value.has_more,\n events: value.events.map((event) => _parseSessionTaskEvent(event, path)),\n };\n}\nfunction _parseSessionTaskEvent(value, path) {\n if (!value || typeof value !== \"object\" || Array.isArray(value))\n throw new RelayProtocolError(\"GET\", path, \"task event must be an object\");\n const event = value;\n for (const field of [\"id\", \"task_id\", \"session\", \"to_status\", \"created_at\"]) {\n if (typeof event[field] !== \"string\" || !event[field])\n throw new RelayProtocolError(\"GET\", path, `event.${field} must be a non-empty string`);\n }\n if (!Number.isSafeInteger(event.task_version) || event.task_version < 1) {\n throw new RelayProtocolError(\"GET\", path, \"event.task_version must be a positive integer\");\n }\n for (const field of [\"from_status\", \"actor_agent_name\", \"actor_role\", \"source_message_id\", \"failure_reason\"]) {\n if (event[field] !== null && event[field] !== undefined && typeof event[field] !== \"string\") {\n throw new RelayProtocolError(\"GET\", path, `event.${field} must be a string or null`);\n }\n }\n if (event.models !== null && event.models !== undefined && (typeof event.models !== \"object\" || Array.isArray(event.models))) {\n throw new RelayProtocolError(\"GET\", path, \"event.models must be an object or null\");\n }\n return event;\n}\nfunction _parseSessionTask(value, method, path) {\n if (!value || typeof value !== \"object\" || Array.isArray(value))\n throw new RelayProtocolError(method, path, \"task must be an object\");\n const task = value;\n const required = [\"id\", \"session\", \"description\", \"status\", \"type\", \"priority\"];\n for (const field of required) {\n if (typeof task[field] !== \"string\" || !task[field])\n throw new RelayProtocolError(method, path, `task.${field} must be a non-empty string`);\n }\n if (!Number.isSafeInteger(task.version) || task.version < 1)\n throw new RelayProtocolError(method, path, \"task.version must be a positive integer\");\n _parseTaskParkedMetadata(task, method, path);\n _parseTaskSignalRejection(task.last_signal_rejection, method, path);\n return task;\n}\nfunction _parseTaskParkedMetadata(task, method, path) {\n const nullableStrings = [\n \"resume_condition\", \"resume_dependency_task_id\", \"owner_of_resume\", \"parked_at\", \"parked_duration\",\n ];\n for (const field of nullableStrings) {\n const value = task[field];\n if (value !== undefined && value !== null && typeof value !== \"string\") {\n throw new RelayProtocolError(method, path, `task.${field} must be a string or null`);\n }\n }\n if (typeof task.resume_dependency_task_id === \"string\" && !task.resume_dependency_task_id.trim()) {\n throw new RelayProtocolError(method, path, \"task.resume_dependency_task_id must be a non-empty string or null\");\n }\n if (task.parked_seconds !== undefined && task.parked_seconds !== null\n && (!Number.isSafeInteger(task.parked_seconds) || task.parked_seconds < 0)) {\n throw new RelayProtocolError(method, path, \"task.parked_seconds must be a non-negative integer or null\");\n }\n if (task.parked_over_24h !== undefined && typeof task.parked_over_24h !== \"boolean\") {\n throw new RelayProtocolError(method, path, \"task.parked_over_24h must be boolean\");\n }\n if (task.status === \"parked\")\n _parseRequiredParkedMetadata(task, method, path);\n}\nfunction _parseRequiredParkedMetadata(task, method, path) {\n for (const field of [\"resume_condition\", \"owner_of_resume\", \"parked_at\", \"parked_duration\"]) {\n if (typeof task[field] !== \"string\" || !task[field].trim()) {\n throw new RelayProtocolError(method, path, `task.${field} must be a non-empty string for a parked task`);\n }\n }\n if (!Number.isSafeInteger(task.parked_seconds) || task.parked_seconds < 0) {\n throw new RelayProtocolError(method, path, \"task.parked_seconds must be a non-negative integer for a parked task\");\n }\n if (typeof task.parked_over_24h !== \"boolean\") {\n throw new RelayProtocolError(method, path, \"task.parked_over_24h must be boolean for a parked task\");\n }\n}\nfunction _parseTaskSignalRejection(value, method, path) {\n if (value === undefined || value === null)\n return;\n if (!value || typeof value !== \"object\" || Array.isArray(value))\n throw new RelayProtocolError(method, path, \"task.last_signal_rejection must be an object or null\");\n const rejection = value;\n if (typeof rejection.reason !== \"string\" || !rejection.reason)\n throw new RelayProtocolError(method, path, \"task.last_signal_rejection.reason must be a non-empty string\");\n if (!Number.isSafeInteger(rejection.task_version) || rejection.task_version < 1)\n throw new RelayProtocolError(method, path, \"task.last_signal_rejection.task_version must be a positive integer\");\n if (rejection.actor_agent_name !== null && (typeof rejection.actor_agent_name !== \"string\" || !rejection.actor_agent_name))\n throw new RelayProtocolError(method, path, \"task.last_signal_rejection.actor_agent_name must be a non-empty string or null\");\n if (typeof rejection.created_at !== \"string\" || !rejection.created_at)\n throw new RelayProtocolError(method, path, \"task.last_signal_rejection.created_at must be a non-empty string\");\n}\nfunction _parseDecisionQuestion(value, method, path) {\n const question = _decisionObject(value, method, path, \"question\");\n return {\n id: _decisionString(question, \"id\", method, path), session: _decisionString(question, \"session\", method, path),\n asking_agent: _decisionString(question, \"asking_agent\", method, path), title: _decisionString(question, \"title\", method, path),\n context: _decisionString(question, \"context\", method, path), options: _decisionOptions(question.options, method, path),\n recommendation: _decisionRecommendation(question.recommendation, method, path),\n ..._decisionProtocolFields(question, method, path),\n allow_custom: _decisionBoolean(question, \"allow_custom\", method, path), multi_select: _decisionBoolean(question, \"multi_select\", method, path),\n status: _decisionString(question, \"status\", method, path), ..._decisionMetadata(question, method, path),\n ...(question.answer === undefined ? {} : { answer: _decisionAnswer(question.answer, method, path) }),\n };\n}\nfunction _decisionProtocolFields(question, method, path) {\n const moderator = _optionalDecisionSide(question.moderator_recommendation, method, path);\n const planner = _optionalDecisionSide(question.planner_recommendation, method, path);\n const delta = _optionalNullableDecisionString(question.delta, \"delta\", method, path);\n const confirmed = _optionalDecisionStrings(question.confirmed_so_far, \"confirmed_so_far\", method, path);\n return {\n ...(moderator !== undefined ? { moderator_recommendation: moderator } : {}),\n ...(planner !== undefined ? { planner_recommendation: planner } : {}),\n ...(delta !== undefined ? { delta } : {}), ...(confirmed !== undefined ? { confirmed_so_far: confirmed } : {}),\n };\n}\nfunction _decisionMetadata(question, method, path) {\n return {\n parent_question_id: _nullableDecisionString(question, \"parent_question_id\", method, path),\n superseded_by_question_id: _nullableDecisionString(question, \"superseded_by_question_id\", method, path),\n transcript_message_id: _nullableDecisionString(question, \"transcript_message_id\", method, path),\n answer_message_id: _nullableDecisionString(question, \"answer_message_id\", method, path),\n created_at: _decisionString(question, \"created_at\", method, path),\n updated_at: _decisionString(question, \"updated_at\", method, path),\n answered_at: _nullableDecisionString(question, \"answered_at\", method, path),\n };\n}\nfunction _decisionObject(value, method, path, name) {\n if (!value || typeof value !== \"object\" || Array.isArray(value))\n throw new RelayProtocolError(method, path, `${name} must be an object`);\n return value;\n}\nfunction _decisionString(value, name, method, path) {\n if (typeof value[name] !== \"string\" || !value[name])\n throw new RelayProtocolError(method, path, `${name} must be a non-empty string`);\n return value[name];\n}\nfunction _decisionBoolean(value, name, method, path) {\n if (typeof value[name] !== \"boolean\")\n throw new RelayProtocolError(method, path, `${name} must be a boolean`);\n return value[name];\n}\nfunction _nullableDecisionString(value, name, method, path) {\n if (value[name] === null)\n return null;\n return _decisionString(value, name, method, path);\n}\nfunction _optionalNullableDecisionString(value, name, method, path) {\n if (value === undefined || value === null)\n return value;\n if (typeof value !== \"string\")\n throw new RelayProtocolError(method, path, `${name} must be a string or null`);\n return value;\n}\nfunction _optionalDecisionStrings(value, name, method, path) {\n if (value === undefined)\n return undefined;\n if (!Array.isArray(value) || value.some((item) => typeof item !== \"string\" || !item)) {\n throw new RelayProtocolError(method, path, `${name} must contain non-empty strings`);\n }\n return value;\n}\nfunction _decisionOptions(value, method, path) {\n if (!Array.isArray(value))\n throw new RelayProtocolError(method, path, \"options must be an array\");\n return value.map((option) => {\n const parsed = _decisionObject(option, method, path, \"option\");\n return { key: _decisionString(parsed, \"key\", method, path), label: _decisionString(parsed, \"label\", method, path), description: _decisionString(parsed, \"description\", method, path) };\n });\n}\nfunction _decisionRecommendation(value, method, path) {\n const recommendation = _decisionObject(value, method, path, \"recommendation\");\n if (!Array.isArray(recommendation.reasons) || recommendation.reasons.some((reason) => typeof reason !== \"string\" || !reason)) {\n throw new RelayProtocolError(method, path, \"recommendation.reasons must be non-empty strings\");\n }\n return { option: _decisionString(recommendation, \"option\", method, path), reasons: recommendation.reasons };\n}\nfunction _optionalDecisionSide(value, method, path) {\n if (value === undefined || value === null)\n return value;\n return _decisionRecommendation(value, method, path);\n}\nfunction _decisionAnswer(value, method, path) {\n const answer = _decisionObject(value, method, path, \"answer\");\n return { action: _decisionString(answer, \"action\", method, path), ..._optionalDecisionAnswerFields(answer, method, path) };\n}\nfunction _optionalDecisionAnswerFields(answer, method, path) {\n const fields = [\"option\", \"text\", \"reason\"];\n return Object.fromEntries(fields.filter((field) => answer[field] !== undefined).map((field) => [field, _decisionString(answer, field, method, path)]));\n}\nfunction parseClientHostReport(value, method, path) {\n if (typeof value.heartbeat_interval_sec !== \"number\" || !Number.isFinite(value.heartbeat_interval_sec) || value.heartbeat_interval_sec <= 0) {\n throw new RelayProtocolError(method, path, \"heartbeat_interval_sec must be a positive number\");\n }\n return {\n host: parseClientHost(value.host, method, path),\n heartbeat_interval_sec: value.heartbeat_interval_sec,\n };\n}\nfunction parseClientHost(value, method, path) {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) {\n throw new RelayProtocolError(method, path, \"host must be an object\");\n }\n const host = value;\n for (const field of [\"host_id\", \"display_name\", \"created_at\", \"last_seen_at\"]) {\n if (typeof host[field] !== \"string\") {\n throw new RelayProtocolError(method, path, `host.${field} must be a string`);\n }\n }\n if (typeof host.online !== \"boolean\") {\n throw new RelayProtocolError(method, path, \"host.online must be a boolean\");\n }\n return {\n host_id: host.host_id,\n display_name: host.display_name,\n created_at: host.created_at,\n last_seen_at: host.last_seen_at,\n online: host.online,\n ...optionalClientHostMetadata(host, method, path),\n };\n}\nfunction validateClientBuildMetadata(version, gitSha) {\n if (version === undefined && gitSha === undefined)\n return;\n if (version === undefined || gitSha === undefined)\n throw new Error(\"clientVersion and clientGitSha must be supplied together\");\n requireNonEmpty(version, \"clientVersion\");\n requireNonEmpty(gitSha, \"clientGitSha\");\n}\nfunction optionalClientHostMetadata(host, method, path) {\n const version = optionalClientHostString(host, \"client_version\", method, path);\n const gitSha = optionalClientHostString(host, \"client_git_sha\", method, path);\n const minimum = optionalClientHostString(host, \"minimum_client_version\", method, path);\n if (minimum === null)\n throw new RelayProtocolError(method, path, \"host.minimum_client_version must be a string\");\n const latest = optionalClientHostString(host, \"latest_client_version\", method, path);\n const updateError = optionalClientHostString(host, \"update_error\", method, path);\n const compatibility = host.client_compatibility;\n if (compatibility !== undefined && compatibility !== \"current\" && compatibility !== \"outdated\" && compatibility !== \"unknown\" && compatibility !== \"development\") {\n throw new RelayProtocolError(method, path, \"host.client_compatibility is invalid\");\n }\n return {\n ...(version === undefined ? {} : { client_version: version }),\n ...(gitSha === undefined ? {} : { client_git_sha: gitSha }),\n ...(minimum === undefined ? {} : { minimum_client_version: minimum }),\n ...(latest === undefined ? {} : { latest_client_version: latest }),\n ...(compatibility === undefined ? {} : { client_compatibility: compatibility }),\n ...(updateError === undefined ? {} : { update_error: updateError }),\n };\n}\nfunction optionalClientHostString(host, field, method, path) {\n const value = host[field];\n if (value === undefined || value === null || typeof value === \"string\")\n return value;\n throw new RelayProtocolError(method, path, `host.${field} must be a string or null`);\n}\nfunction normalizeClientHostWorkspaceReport(workspace) {\n requireNonEmpty(workspace.path, \"workspace.path\");\n if (workspace.gitOrigin !== null)\n requireNonEmpty(workspace.gitOrigin, \"workspace.gitOrigin\");\n if (workspace.currentBranch !== undefined && workspace.currentBranch !== null) {\n requireNonEmpty(workspace.currentBranch, \"workspace.currentBranch\");\n }\n return {\n path: workspace.path,\n git_origin: workspace.gitOrigin,\n ...(workspace.currentBranch === undefined ? {} : { current_branch: workspace.currentBranch }),\n readable: workspace.readable,\n writable: workspace.writable,\n };\n}\nfunction parseClientHostWorkspacesResponse(value, method, path) {\n if (!Array.isArray(value.workspaces)) {\n throw new RelayProtocolError(method, path, \"workspaces must be an array\");\n }\n return { workspaces: value.workspaces.map((workspace) => parseClientHostWorkspace(workspace, method, path)) };\n}\nfunction parseClientHostWorkspace(value, method, path) {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) {\n throw new RelayProtocolError(method, path, \"workspace must be an object\");\n }\n const workspace = value;\n for (const field of [\"path\", \"reported_at\"]) {\n if (typeof workspace[field] !== \"string\" || !workspace[field]) {\n throw new RelayProtocolError(method, path, `workspace.${field} must be a string`);\n }\n }\n // git_origin is null for a repo with no remote, or one whose origin was credential-redacted.\n if (workspace.git_origin !== null && (typeof workspace.git_origin !== \"string\" || !workspace.git_origin)) {\n throw new RelayProtocolError(method, path, \"workspace.git_origin must be a string or null\");\n }\n if (workspace.current_branch !== null && typeof workspace.current_branch !== \"string\") {\n throw new RelayProtocolError(method, path, \"workspace.current_branch must be a string or null\");\n }\n for (const field of [\"readable\", \"writable\"]) {\n if (typeof workspace[field] !== \"boolean\") {\n throw new RelayProtocolError(method, path, `workspace.${field} must be a boolean`);\n }\n }\n return workspace;\n}\nfunction parseAgentStartRequest(value, method, path) {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) {\n throw new RelayProtocolError(method, path, \"request must be an object\");\n }\n const request = value;\n for (const field of [\"id\", \"session\", \"host_id\", \"agent_name\", \"status\", \"created_at\"]) {\n if (typeof request[field] !== \"string\") {\n throw new RelayProtocolError(method, path, `request.${field} must be a string`);\n }\n }\n if (!isAgentStartStatus(request.status)) {\n throw new RelayProtocolError(method, path, \"request.status is invalid\");\n }\n if (!request.spec || typeof request.spec !== \"object\" || Array.isArray(request.spec)) {\n throw new RelayProtocolError(method, path, \"request.spec must be an object\");\n }\n if (request.request_kind === undefined)\n request.request_kind = \"agent_start\";\n if (request.request_kind !== \"agent_start\" && request.request_kind !== \"worker_start\") {\n throw new RelayProtocolError(method, path, \"request.request_kind is invalid\");\n }\n if (request.result !== undefined && (!request.result || typeof request.result !== \"object\" || Array.isArray(request.result))) {\n throw new RelayProtocolError(method, path, \"request.result must be an object\");\n }\n if (request.error !== undefined && typeof request.error !== \"string\") {\n throw new RelayProtocolError(method, path, \"request.error must be a string\");\n }\n return request;\n}\nfunction validateRagIngestDocument(body) {\n requireNonEmpty(body.name, \"name\");\n requireNonEmpty(body.text, \"text\");\n if (body.type !== undefined && ![\"memory\", \"design-doc\", \"research\", \"skill\", \"command\", \"note\"].includes(body.type)) {\n throw new Error(\"type must be memory, design-doc, research, skill, command, or note\");\n }\n if (body.max_chars !== undefined && (!Number.isInteger(body.max_chars) || body.max_chars < 1)) {\n throw new Error(\"max_chars must be a positive integer\");\n }\n if (body.as_of !== undefined && !Number.isFinite(body.as_of))\n throw new Error(\"as_of must be a finite number\");\n if (body.stale_after !== undefined && !Number.isFinite(body.stale_after))\n throw new Error(\"stale_after must be a finite number\");\n if (body.source_run_id !== undefined)\n requireNonEmpty(body.source_run_id, \"source_run_id\");\n if (body.citation !== undefined && (!body.citation || typeof body.citation !== \"object\" || Array.isArray(body.citation))) {\n throw new Error(\"citation must be an object\");\n }\n}\nfunction validateRagCardUpsert(body) {\n requireNonEmpty(body.key, \"key\");\n requireNonEmpty(body.value, \"value\");\n requireNonEmpty(body.source, \"source\");\n if (body.type !== \"memory\")\n throw new Error(\"type must be memory\");\n}\nfunction normalizeRagIngestDocument(body) {\n return {\n name: body.name,\n text: body.text,\n ...(body.type === undefined ? {} : { type: body.type }),\n ...(body.max_chars === undefined ? {} : { max_chars: body.max_chars }),\n ...(body.as_of === undefined ? {} : { as_of: body.as_of }),\n ...(body.stale_after === undefined ? {} : { stale_after: body.stale_after }),\n ...(body.source_run_id === undefined ? {} : { source_run_id: body.source_run_id }),\n ...(body.citation === undefined ? {} : { citation: body.citation }),\n };\n}\nfunction parseRagIngestDocumentResponse(value, method, path) {\n if (typeof value.doc_id !== \"string\" || !value.doc_id)\n throw new RelayProtocolError(method, path, \"doc_id must be a string\");\n const cards = value.cards;\n const replaced = value.replaced;\n if (typeof cards !== \"number\" || !Number.isInteger(cards) || cards < 0) {\n throw new RelayProtocolError(method, path, \"cards must be a non-negative integer\");\n }\n if (typeof replaced !== \"number\" || !Number.isInteger(replaced) || replaced < 0) {\n throw new RelayProtocolError(method, path, \"replaced must be a non-negative integer\");\n }\n return { doc_id: value.doc_id, cards, replaced };\n}\nfunction parseRagCard(value, method, path, expectedKey) {\n if (typeof value.key !== \"string\" || !value.key)\n throw new RelayProtocolError(method, path, \"key must be a string\");\n if (value.key !== expectedKey)\n throw new RelayProtocolError(method, path, \"key must match requested key\");\n if (typeof value.value !== \"string\")\n throw new RelayProtocolError(method, path, \"value must be a string\");\n const card = { key: value.key, value: value.value };\n if (value.captain_id !== undefined) {\n if (typeof value.captain_id !== \"number\" || !Number.isInteger(value.captain_id)) {\n throw new RelayProtocolError(method, path, \"captain_id must be an integer\");\n }\n card.captain_id = value.captain_id;\n }\n if (value.team_id !== undefined)\n card.team_id = requireOptionalString(value.team_id, method, path, \"team_id\");\n if (value.type !== undefined)\n card.type = requireOptionalString(value.type, method, path, \"type\");\n if (value.source !== undefined)\n card.source = requireOptionalString(value.source, method, path, \"source\");\n if (value.author !== undefined) {\n if (value.author !== null && typeof value.author !== \"string\")\n throw new RelayProtocolError(method, path, \"author must be a string or null\");\n card.author = value.author;\n }\n if (value.status !== undefined)\n card.status = requireOptionalString(value.status, method, path, \"status\");\n if (value.version !== undefined) {\n if (typeof value.version !== \"number\" || !Number.isInteger(value.version)) {\n throw new RelayProtocolError(method, path, \"version must be an integer\");\n }\n card.version = value.version;\n }\n return card;\n}\nfunction parseRagCardUpsertResponse(value, path, expectedKey) {\n if (value.status === \"auto_resolved\")\n return _autoResolvedRagCard(value, path, expectedKey);\n if (value.status === \"needs_decision\")\n return { status: \"needs_decision\", question: parseRagConflictQuestion(value.question, \"POST\", path) };\n if (typeof value.key === \"string\")\n return { status: \"saved\", card: parseRagCard(value, \"POST\", path, expectedKey) };\n throw new RelayProtocolError(\"POST\", path, \"RAG card response status is invalid\");\n}\nfunction _autoResolvedRagCard(value, path, expectedKey) {\n if (typeof value.rule !== \"string\" || !value.rule)\n throw new RelayProtocolError(\"POST\", path, \"auto_resolved rule must be a string\");\n if (!value.card || typeof value.card !== \"object\" || Array.isArray(value.card))\n throw new RelayProtocolError(\"POST\", path, \"auto_resolved card must be an object\");\n return { status: \"auto_resolved\", rule: value.rule, card: parseRagCard(value.card, \"POST\", path, expectedKey) };\n}\nfunction parseRagConflictQuestion(value, method, path) {\n if (!value || typeof value !== \"object\" || Array.isArray(value))\n throw new RelayProtocolError(method, path, \"RAG decision question must be an object\");\n const question = value;\n return {\n id: _ragQuestionField(question, \"id\", method, path),\n title: _ragQuestionField(question, \"title\", method, path),\n status: _ragQuestionField(question, \"status\", method, path),\n };\n}\nfunction _ragQuestionField(question, field, method, path) {\n const value = question[field];\n if (typeof value !== \"string\" || !value)\n throw new RelayProtocolError(method, path, `RAG decision question.${field} must be a string`);\n return value;\n}\nfunction parseRagSearchResponse(value, method, path) {\n if (!Array.isArray(value.cards))\n throw new RelayProtocolError(method, path, \"cards must be an array\");\n return { cards: value.cards.map((card) => parseRagSearchCard(card, method, path)) };\n}\nfunction parseRagSearchCard(value, method, path) {\n if (!value || typeof value !== \"object\" || Array.isArray(value))\n throw new RelayProtocolError(method, path, \"card must be an object\");\n const card = value;\n if (typeof card.key !== \"string\" || !card.key)\n throw new RelayProtocolError(method, path, \"card.key must be a string\");\n if (typeof card.value !== \"string\")\n throw new RelayProtocolError(method, path, \"card.value must be a string\");\n if (typeof card.score !== \"number\" || !Number.isFinite(card.score))\n throw new RelayProtocolError(method, path, \"card.score must be a finite number\");\n return { key: card.key, value: card.value, score: card.score };\n}\nfunction parseRagMemoryIndex(value, method, path) {\n if (typeof value.enabled !== \"boolean\" || typeof value.degraded !== \"boolean\" || typeof value.text !== \"string\") {\n throw new RelayProtocolError(method, path, \"index flags must be valid\");\n }\n for (const field of [\"budget_tokens\", \"total_cards\", \"omitted_cards\"]) {\n if (!Number.isSafeInteger(value[field]) || value[field] < 0)\n throw new RelayProtocolError(method, path, `index.${field} must be a non-negative integer`);\n }\n if (!value.sections || typeof value.sections !== \"object\" || Array.isArray(value.sections))\n throw new RelayProtocolError(method, path, \"index.sections must be an object\");\n const sections = Object.fromEntries(Object.entries(value.sections).map(([key, lines]) => {\n if (!Array.isArray(lines) || !lines.every((line) => typeof line === \"string\"))\n throw new RelayProtocolError(method, path, \"index section must contain strings\");\n return [key, lines];\n }));\n return { enabled: value.enabled, degraded: value.degraded, text: value.text, budget_tokens: value.budget_tokens, total_cards: value.total_cards, omitted_cards: value.omitted_cards, sections };\n}\nfunction parseRagEntitlement(value, method, path) {\n if (typeof value.enabled !== \"boolean\")\n throw new RelayProtocolError(method, path, \"entitlement.enabled must be a boolean\");\n return { enabled: value.enabled };\n}\nfunction parseManagedMaterializationResponse(value, method, path, cursor) {\n if (value === \"not_modified_304\") {\n if (!cursor?.trim())\n throw new RelayProtocolError(method, path, \"304 requires a prior cursor\");\n return { status: \"not_modified\", cursor: cursor.trim() };\n }\n if (value.status === \"not_modified\") {\n const nextCursor = requireManagedBannerField(value.cursor, method, path, \"cursor\");\n return { status: \"not_modified\", cursor: nextCursor };\n }\n if (value.status !== \"changed\")\n throw new RelayProtocolError(method, path, \"status must be changed or not_modified\");\n const nextCursor = requireManagedBannerField(value.cursor, method, path, \"cursor\");\n if (!Array.isArray(value.files))\n throw new RelayProtocolError(method, path, \"files must be an array\");\n const hasMore = value.has_more === undefined ? undefined : requireBoolean(value.has_more, method, path, \"has_more\");\n const nextPageCursor = value.next_cursor === undefined\n ? undefined\n : requireManagedBannerField(value.next_cursor, method, path, \"next_cursor\");\n if (hasMore === true && nextPageCursor === undefined) {\n throw new RelayProtocolError(method, path, \"next_cursor is required when has_more is true\");\n }\n return {\n status: \"changed\",\n cursor: nextCursor,\n files: value.files.map((file) => parseManagedMaterializationFile(file, method, path)),\n ...(value.deleted === undefined ? {} : { deleted: parseManagedMaterializationDeletedFiles(value.deleted, method, path) }),\n ...(hasMore === undefined ? {} : { has_more: hasMore }),\n ...(nextPageCursor === undefined ? {} : { next_cursor: nextPageCursor }),\n };\n}\nfunction parseManagedMaterializationFile(value, method, path) {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) {\n throw new RelayProtocolError(method, path, \"file must be an object\");\n }\n const file = value;\n if (file.kind !== \"skill\" && file.kind !== \"command\") {\n throw new RelayProtocolError(method, path, \"file.kind must be skill or command\");\n }\n for (const field of [\"relative_path\", \"content_hash\", \"version\"]) {\n if (typeof file[field] !== \"string\" || !file[field]) {\n throw new RelayProtocolError(method, path, `file.${field} must be a string`);\n }\n }\n if (typeof file.content !== \"string\")\n throw new RelayProtocolError(method, path, \"file.content must be a string\");\n requireManagedBannerField(file.version, method, path, \"file.version\");\n return {\n kind: file.kind,\n relative_path: String(file.relative_path),\n content: String(file.content),\n content_hash: String(file.content_hash),\n version: String(file.version),\n };\n}\nfunction requireManagedBannerField(value, method, path, field) {\n if (typeof value !== \"string\" || !value.trim()) {\n throw new RelayProtocolError(method, path, `${field} must be a string`);\n }\n if (value !== value.trim() || !MANAGED_BANNER_FIELD_RE.test(value)) {\n throw new RelayProtocolError(method, path, `${field} must be printable ASCII without whitespace`);\n }\n return value;\n}\nfunction requireBoolean(value, method, path, field) {\n if (typeof value !== \"boolean\")\n throw new RelayProtocolError(method, path, `${field} must be a boolean`);\n return value;\n}\nfunction parseManagedMaterializationDeletedFiles(value, method, path) {\n if (!Array.isArray(value))\n throw new RelayProtocolError(method, path, \"deleted must be an array\");\n return value.map((item) => {\n if (!item || typeof item !== \"object\" || Array.isArray(item)) {\n throw new RelayProtocolError(method, path, \"deleted file must be an object\");\n }\n const file = item;\n if (file.kind !== \"skill\" && file.kind !== \"command\") {\n throw new RelayProtocolError(method, path, \"deleted.kind must be skill or command\");\n }\n if (typeof file.relative_path !== \"string\" || !file.relative_path) {\n throw new RelayProtocolError(method, path, \"deleted.relative_path must be a string\");\n }\n return { kind: file.kind, relative_path: file.relative_path };\n });\n}\nfunction validateManagedDrift(body) {\n requireSegment(body.agent_name, \"agent_name\");\n if (body.engine !== \"claude\" && body.engine !== \"codex\")\n throw new Error(\"engine must be claude or codex\");\n if (body.kind !== \"skill\" && body.kind !== \"command\")\n throw new Error(\"kind must be skill or command\");\n requireNonEmpty(body.relative_path, \"relative_path\");\n requireNonEmpty(body.version_cursor, \"version_cursor\");\n requireNonEmpty(body.head_hash, \"head_hash\");\n requireNonEmpty(body.local_hash, \"local_hash\");\n if (body.expected_hash !== null && typeof body.expected_hash !== \"string\")\n throw new Error(\"expected_hash must be string or null\");\n if (typeof body.local_content !== \"string\")\n throw new Error(\"local_content must be a string\");\n if (!Array.isArray(body.actions)\n || body.actions.length !== 2\n || body.actions[0] !== \"ingest-new-version\"\n || body.actions[1] !== \"restore-managed-version\") {\n throw new Error(\"actions must be ingest-new-version and restore-managed-version\");\n }\n}\nfunction requireOptionalString(value, method, path, field) {\n if (typeof value !== \"string\")\n throw new RelayProtocolError(method, path, `${field} must be a string`);\n return value;\n}\nfunction isAgentStartStatus(value) {\n return value === \"queued\" || value === \"claimed\" || value === \"started\" || value === \"failed\" || value === \"cancelled\";\n}\nfunction parseMailboxMessage(value) {\n if (!value || typeof value !== \"object\") {\n throw new RelayProtocolError(\"GET\", \"/api/v1/mailbox\", \"message must be an object\");\n }\n const message = value;\n for (const field of [\"id\", \"session\", \"agent_name\", \"payload_kind\", \"status\", \"submitted_at\"]) {\n if (typeof message[field] !== \"string\") {\n throw new RelayProtocolError(\"GET\", \"/api/v1/mailbox\", `message.${field} must be a string`);\n }\n }\n if (typeof message.payload_size_bytes !== \"number\") {\n throw new MailboxPayloadIntegrityError(\"message.payload_size_bytes must be a number\");\n }\n validateMailboxResponsePayload(message);\n if (message.payload_kind !== \"raw\" && message.payload_kind !== \"a2a-message\") {\n throw new RelayProtocolError(\"GET\", \"/api/v1/mailbox\", \"message.payload_kind is invalid\");\n }\n if (message.lease_token !== undefined && message.lease_token !== null && typeof message.lease_token !== \"string\") {\n throw new RelayProtocolError(\"GET\", \"/api/v1/mailbox\", \"message.lease_token must be a string\");\n }\n if (message.kind !== undefined && message.kind !== \"control\" && message.kind !== \"conversation\") {\n throw new RelayProtocolError(\"GET\", \"/api/v1/mailbox\", \"message.kind must be control or conversation\");\n }\n for (const field of [\"sender_role\", \"sender_agent_name\", \"tag\"]) {\n if (message[field] !== null && typeof message[field] !== \"string\") {\n throw new RelayProtocolError(\"GET\", \"/api/v1/mailbox\", `message.${field} must be a string or null`);\n }\n }\n for (const field of [\"leased_at\", \"lease_until\", \"surfaced_at\", \"surface_status\", \"surface_error\", \"surfaced_by\", \"payload_bytes_base64\"]) {\n if (message[field] !== undefined && message[field] !== null && typeof message[field] !== \"string\") {\n throw new RelayProtocolError(\"GET\", \"/api/v1/mailbox\", `message.${field} must be a string or null`);\n }\n }\n if (message.surface_attempts !== undefined && typeof message.surface_attempts !== \"number\") {\n throw new RelayProtocolError(\"GET\", \"/api/v1/mailbox\", \"message.surface_attempts must be a number\");\n }\n return message;\n}\nfunction validateMailboxResponsePayload(message) {\n const hasJson = Object.hasOwn(message, \"payload_json\");\n const hasBytes = Object.hasOwn(message, \"payload_bytes_base64\");\n if (hasJson === hasBytes)\n throw new MailboxPayloadIntegrityError(\"message must specify exactly one payload\");\n if (!Number.isSafeInteger(message.payload_size_bytes) || Number(message.payload_size_bytes) < 0) {\n throw new MailboxPayloadIntegrityError(\"message.payload_size_bytes must be a non-negative integer\");\n }\n if (hasJson && message.payload_json === null) {\n throw new MailboxPayloadIntegrityError(\"message.payload_json cannot be null\");\n }\n const source = Reflect.get(message, MAILBOX_PAYLOAD_JSON_SOURCE);\n if (hasJson && typeof source !== \"string\") {\n throw new MailboxPayloadIntegrityError(\"message.payload_json source is unavailable\");\n }\n const actualSize = hasJson ? Buffer.byteLength(source, \"utf8\") : strictBase64Size(message.payload_bytes_base64);\n if (actualSize !== message.payload_size_bytes) {\n throw new MailboxPayloadIntegrityError(\"message.payload_size_bytes does not match payload content\");\n }\n}\nfunction mailboxPayloadFailureContext(value) {\n if (!value || typeof value !== \"object\")\n return null;\n const message = value;\n if (typeof message.id !== \"string\" || !message.id)\n return null;\n const leaseToken = typeof message.lease_token === \"string\" && message.lease_token ? message.lease_token : undefined;\n if (!leaseToken && message.status !== \"queued\")\n return null;\n const surfaceError = typeof message.surface_error === \"string\" ? message.surface_error : undefined;\n return { messageId: message.id, ...(leaseToken ? { leaseToken } : {}), ...(surfaceError ? { surfaceError } : {}) };\n}\nfunction strictBase64Size(value) {\n if (typeof value !== \"string\")\n throw new MailboxPayloadIntegrityError(\"message.payload_bytes_base64 must be a string\");\n const decoded = Buffer.from(value, \"base64\");\n if (decoded.toString(\"base64\") !== value) {\n throw new MailboxPayloadIntegrityError(\"message.payload_bytes_base64 must be valid Base64\");\n }\n return decoded.byteLength;\n}\nconst MAILBOX_PAYLOAD_JSON_SOURCE = Symbol(\"mailboxPayloadJsonSource\");\nfunction attachMailboxPayloadSources(value, text) {\n const sources = jsonFieldSources(text, \"payload_json\");\n let sourceIndex = 0;\n const visit = (item) => {\n if (!item || typeof item !== \"object\")\n return;\n if (Array.isArray(item)) {\n for (const child of item)\n visit(child);\n return;\n }\n const record = item;\n if (Object.hasOwn(record, \"payload_json\")) {\n const source = sources[sourceIndex++];\n if (source !== undefined)\n Object.defineProperty(record, MAILBOX_PAYLOAD_JSON_SOURCE, { value: source });\n }\n for (const [key, child] of Object.entries(record)) {\n if (key !== \"payload_json\")\n visit(child);\n }\n };\n visit(value);\n}\nfunction jsonFieldSources(text, field) {\n const sources = [];\n for (let index = 0; index < text.length;) {\n if (text[index] !== '\"') {\n index += 1;\n continue;\n }\n const found = jsonFieldSourceAt(text, index, field);\n if (found.source !== undefined)\n sources.push(found.source);\n index = found.end;\n }\n return sources;\n}\nfunction jsonFieldSourceAt(text, start, field) {\n const keyEnd = jsonStringEnd(text, start);\n const key = JSON.parse(text.slice(start, keyEnd));\n let cursor = skipJsonWhitespace(text, keyEnd);\n if (key !== field || text[cursor] !== \":\")\n return { end: keyEnd };\n cursor = skipJsonWhitespace(text, cursor + 1);\n const valueEnd = jsonValueEnd(text, cursor);\n return { source: text.slice(cursor, valueEnd), end: valueEnd };\n}\nfunction jsonStringEnd(text, start) {\n for (let index = start + 1; index < text.length; index += 1) {\n if (text[index] === \"\\\\\")\n index += 1;\n else if (text[index] === '\"')\n return index + 1;\n }\n throw new SyntaxError(\"unterminated JSON string\");\n}\nfunction jsonValueEnd(text, start) {\n if (text[start] === '\"')\n return jsonStringEnd(text, start);\n if (text[start] !== \"{\" && text[start] !== \"[\") {\n let index = start;\n while (index < text.length && !/[\\s,}\\]]/.test(text[index] ?? \"\"))\n index += 1;\n return index;\n }\n const stack = [text[start]];\n for (let index = start + 1; index < text.length; index += 1) {\n if (text[index] === '\"')\n index = jsonStringEnd(text, index) - 1;\n else if (text[index] === \"{\" || text[index] === \"[\")\n stack.push(text[index]);\n else if (text[index] === \"}\" || text[index] === \"]\")\n stack.pop();\n if (stack.length === 0)\n return index + 1;\n }\n throw new SyntaxError(\"unterminated JSON value\");\n}\nfunction skipJsonWhitespace(text, start) {\n let index = start;\n while (/\\s/.test(text[index] ?? \"\"))\n index += 1;\n return index;\n}\nfunction parseResolveCommand(value, path) {\n if (!value || typeof value !== \"object\")\n throw new RelayProtocolError(\"GET\", path, \"command must be an object\");\n const command = value;\n if (typeof command.id !== \"string\")\n throw new RelayProtocolError(\"GET\", path, \"command.id must be a string\");\n if (typeof command.action !== \"string\")\n throw new RelayProtocolError(\"GET\", path, \"command.action must be a string\");\n const params = command.params;\n if (params !== undefined && (typeof params !== \"object\" || params === null || Array.isArray(params))) {\n throw new RelayProtocolError(\"GET\", path, \"command.params must be an object\");\n }\n return { id: command.id, action: command.action, params: params ?? {} };\n}\nfunction segment(value) {\n return encodeURIComponent(value);\n}\nfunction requireSegment(value, label) {\n if (!value.trim())\n throw new Error(`${label} is required`);\n}\nfunction requireNonEmpty(value, label) {\n if (!value.trim())\n throw new Error(`${label} is required`);\n}\nfunction requireCaptainId(value) {\n if (!/^\\d+$/.test(value))\n throw new Error(\"captainId must be a numeric string\");\n}\nfunction clampLimit(limit) {\n if (!Number.isFinite(limit))\n throw new Error(\"limit must be a finite number\");\n return Math.max(1, Math.min(Math.trunc(limit), MAX_MAILBOX_LIMIT));\n}\nfunction clampTimeout(timeoutSec) {\n if (!Number.isFinite(timeoutSec))\n throw new Error(\"timeoutSec must be a finite number\");\n return Math.max(0, Math.min(Math.trunc(timeoutSec), MAX_WAIT_TIMEOUT_SEC));\n}\nfunction isStringArray(value) {\n return Array.isArray(value) && value.every((item) => typeof item === \"string\");\n}\nfunction isNonEmptyStringArray(value) {\n return (Array.isArray(value) &&\n value.length > 0 &&\n value.every((item) => typeof item === \"string\" && item.length > 0));\n}\nfunction errorMessage(error) {\n return error instanceof Error ? error.message : String(error);\n}\nfunction redact(value, token) {\n return value.split(token).join(\"[redacted]\");\n}\nexport function bytesToBase64(bytes) {\n return Buffer.from(bytes).toString(\"base64\");\n}\n//# sourceMappingURL=client.js.map",
|
|
29
29
|
"export class RelayError extends Error {\n method;\n path;\n constructor(name, message, method, path) {\n super(message);\n this.name = name;\n this.method = method;\n this.path = path;\n }\n}\nexport class RelayNetworkError extends RelayError {\n causeMessage;\n constructor(method, path, cause) {\n const causeMessage = cause instanceof Error ? cause.message : String(cause);\n super(\"RelayNetworkError\", `${method} ${path} failed: ${causeMessage}`, method, path);\n this.causeMessage = causeMessage;\n }\n}\nexport class RelayHttpError extends RelayError {\n status;\n body;\n constructor(method, path, status, body) {\n super(\"RelayHttpError\", `${method} ${path} returned HTTP ${status}: ${body}`, method, path);\n this.status = status;\n this.body = body;\n }\n}\nexport class RelayProtocolError extends RelayError {\n constructor(method, path, message) {\n super(\"RelayProtocolError\", `${method} ${path} protocol error: ${message}`, method, path);\n }\n}\n//# sourceMappingURL=errors.js.map",
|
|
30
30
|
"import { DEFAULT_PRODUCT_API_URL } from \"../auth/host-pairing.js\";\n// The relay is served from the same canonical origin as the product API; keep a\n// single literal (DEFAULT_PRODUCT_API_URL) so the two never drift apart.\nexport const DEFAULT_RELAY_URL = DEFAULT_PRODUCT_API_URL;\nexport const DEFAULT_WORKER = \"host\";\nexport const DEFAULT_WORKDIR = \"~/sailorbridge-workdir\";\nexport const DEFAULT_JOB_TIMEOUT_SECONDS = 300;\nexport const MAX_JOB_TIMEOUT_SECONDS = 24 * 60 * 60;\nexport const MIN_JOB_TIMEOUT_SECONDS = 1;\nexport const WORKER_JOB_RESULT_GRACE_SECONDS = 30;\nexport const ACTIVE_JOB_KINDS = new Set([\"apply_diff\", \"bash\", \"read_file\", \"write_file\", \"compose\", \"stream\", \"status\"]);\nexport const READONLY_ALLOWED_KINDS = new Set([\"read_file\", \"status\"]);\nexport const WORKER_SOCK_CONNECT_MS = 10_000;\nexport const WORKER_PULL_READ_IDLE_MS = 45_000;\nexport const WORKER_QUICK_READ_IDLE_MS = 15_000;\nexport const WORKER_UPLOAD_READ_IDLE_MS = (MAX_JOB_TIMEOUT_SECONDS + 300) * 1000;\nexport const DRAIN_AFTER_KILL_MS = 5_000;\nexport const WORKER_RETRY_INITIAL_MS = 1_000;\nexport const WORKER_RETRY_MAX_MS = 30_000;\nexport const WORKER_SESSION_REBUILD_FAILURES = 10;\nexport const MAX_WORKER_RESULT_OUTPUT_BYTES = 256 * 1024;\nexport function coerceJobTimeoutSeconds(spec) {\n const value = spec.timeout_sec === undefined ? DEFAULT_JOB_TIMEOUT_SECONDS : spec.timeout_sec;\n if (typeof value !== \"number\" || !Number.isFinite(value) || value <= 0) {\n throw new Error(\"spec.timeout_sec must be a finite positive number\");\n }\n return Math.max(MIN_JOB_TIMEOUT_SECONDS, Math.min(value, MAX_JOB_TIMEOUT_SECONDS));\n}\nexport function effectiveJobKind(kind, spec) {\n return kind === \"stream\" || spec.stream === true ? \"stream\" : kind;\n}\n//# sourceMappingURL=protocol.js.map",
|
|
31
|
-
"import { existsSync, readFileSync } from \"node:fs\"; // intentional — relay credentials are internal configuration, not CLI text parameters\nimport { homedir } from \"node:os\";\nimport path from \"node:path\";\nimport { DEFAULT_RELAY_URL } from \"../worker/protocol.js\";\nexport function loadRelayConfig(env = process.env) {\n const envRelayUrl = nonEmpty(env.SAILORBRIDGE_RELAY_URL);\n const envBearerToken = nonEmpty(env.SAILORBRIDGE_TOKEN);\n const stored = loadStoredHostCredential(env, { tolerateInvalid: Boolean(envRelayUrl && envBearerToken) });\n // Priority: env → stored host credential → official relay default.\n const relayUrl = envRelayUrl ?? stored?.relay_url ?? DEFAULT_RELAY_URL;\n const bearerToken = envBearerToken ?? stored?.token;\n if (!bearerToken) {\n throw new Error(\"no SailorBridge credential found; run 'sail login' first (or set SAILORBRIDGE_TOKEN)\");\n }\n const agentName = nonEmpty(env.SAILORBRIDGE_AGENT_NAME);\n const session = nonEmpty(env.SAILORBRIDGE_SESSION);\n const captainId = optionalCaptainId(env.SAILORBRIDGE_CAPTAIN_ID) ?? stored?.captain_id;\n const hostId = nonEmpty(env.SAILORBRIDGE_HOST_ID) ?? stored?.host_id;\n const hostDisplayName = nonEmpty(env.SAILORBRIDGE_HOST_DISPLAY_NAME);\n return {\n relayUrl,\n bearerToken,\n ...(agentName ? { agentName } : {}),\n ...(session ? { session } : {}),\n ...(captainId ? { captainId } : {}),\n ...(hostId ? { hostId } : {}),\n ...(hostDisplayName ? { hostDisplayName } : {}),\n };\n}\nfunction loadStoredHostCredential(env, options = {}) {\n const credentialsPath = nonEmpty(env.SAILORBRIDGE_CREDENTIALS_FILE)\n ?? path.join(homedir(), \".sailorbridge\", \"credentials.json\");\n if (!existsSync(credentialsPath))\n return null;\n let parsed;\n try {\n parsed = JSON.parse(readFileSync(credentialsPath, \"utf8\")); // intentional — load the managed relay credential file\n }\n catch {\n if (options.tolerateInvalid)\n return null;\n throw new Error(`SailorBridge credentials file is invalid JSON: ${credentialsPath}`);\n }\n if (parsed.kind !== \"sailorbridge-host-key\")\n return null;\n const relayUrl = typeof parsed.relay_url === \"string\" ? nonEmpty(parsed.relay_url) : undefined;\n const token = typeof parsed.token === \"string\" ? nonEmpty(parsed.token) : undefined;\n const hostId = typeof parsed.host_id === \"string\" ? nonEmpty(parsed.host_id) : undefined;\n const captainId = storedCaptainId(parsed.captain_id);\n if (!relayUrl || !token || !hostId || !captainId) {\n if (options.tolerateInvalid)\n return null;\n throw new Error(`SailorBridge credentials file is invalid: ${credentialsPath}`);\n }\n return { relay_url: relayUrl, token, captain_id: captainId, host_id: hostId };\n}\nfunction nonEmpty(value) {\n const trimmed = value?.trim();\n return trimmed || undefined;\n}\nfunction optionalCaptainId(value) {\n if (value === undefined)\n return undefined;\n const trimmed = value.trim();\n if (!trimmed || !/^\\d+$/.test(trimmed)) {\n throw new Error(\"SAILORBRIDGE_CAPTAIN_ID must be a numeric string\");\n }\n return trimmed;\n}\nfunction storedCaptainId(value) {\n if (typeof value === \"number\" && Number.isInteger(value) && value >= 0)\n return String(value);\n if (typeof value === \"string\") {\n const trimmed = value.trim();\n return /^\\d+$/.test(trimmed) ? trimmed : undefined;\n }\n return undefined;\n}\n//# sourceMappingURL=config.js.map",
|
|
31
|
+
"import { existsSync, readFileSync } from \"node:fs\"; // intentional — relay credentials are internal configuration, not CLI text parameters\nimport { homedir } from \"node:os\";\nimport path from \"node:path\";\nimport { DEFAULT_RELAY_URL } from \"../worker/protocol.js\";\nexport function loadRelayConfig(env = process.env) {\n const envRelayUrl = nonEmpty(env.SAILORBRIDGE_RELAY_URL);\n const envBearerToken = nonEmpty(env.SAILORBRIDGE_TOKEN);\n const stored = loadStoredHostCredential(env, { tolerateInvalid: Boolean(envRelayUrl && envBearerToken) });\n // Priority: env → stored host credential → official relay default.\n const relayUrl = envRelayUrl ?? stored?.relay_url ?? DEFAULT_RELAY_URL;\n const bearerToken = envBearerToken ?? stored?.token;\n if (!bearerToken) {\n throw new Error(\"no SailorBridge credential found; run 'sail login' first (or set SAILORBRIDGE_TOKEN)\");\n }\n const agentName = nonEmpty(env.SAILORBRIDGE_AGENT_NAME);\n const session = nonEmpty(env.SAILORBRIDGE_SESSION);\n const captainId = optionalCaptainId(env.SAILORBRIDGE_CAPTAIN_ID) ?? stored?.captain_id;\n const hostId = nonEmpty(env.SAILORBRIDGE_HOST_ID) ?? stored?.host_id;\n const hostDisplayName = nonEmpty(env.SAILORBRIDGE_HOST_DISPLAY_NAME);\n const keyScope = !envBearerToken && stored ? \"host\" : undefined;\n return {\n relayUrl,\n bearerToken,\n ...(agentName ? { agentName } : {}),\n ...(session ? { session } : {}),\n ...(captainId ? { captainId } : {}),\n ...(hostId ? { hostId } : {}),\n ...(hostDisplayName ? { hostDisplayName } : {}),\n ...(keyScope ? { keyScope } : {}),\n };\n}\nfunction loadStoredHostCredential(env, options = {}) {\n const credentialsPath = nonEmpty(env.SAILORBRIDGE_CREDENTIALS_FILE)\n ?? path.join(homedir(), \".sailorbridge\", \"credentials.json\");\n if (!existsSync(credentialsPath))\n return null;\n let parsed;\n try {\n parsed = JSON.parse(readFileSync(credentialsPath, \"utf8\")); // intentional — load the managed relay credential file\n }\n catch {\n if (options.tolerateInvalid)\n return null;\n throw new Error(`SailorBridge credentials file is invalid JSON: ${credentialsPath}`);\n }\n if (parsed.kind !== \"sailorbridge-host-key\")\n return null;\n const relayUrl = typeof parsed.relay_url === \"string\" ? nonEmpty(parsed.relay_url) : undefined;\n const token = typeof parsed.token === \"string\" ? nonEmpty(parsed.token) : undefined;\n const hostId = typeof parsed.host_id === \"string\" ? nonEmpty(parsed.host_id) : undefined;\n const captainId = storedCaptainId(parsed.captain_id);\n if (!relayUrl || !token || !hostId || !captainId) {\n if (options.tolerateInvalid)\n return null;\n throw new Error(`SailorBridge credentials file is invalid: ${credentialsPath}`);\n }\n return { relay_url: relayUrl, token, captain_id: captainId, host_id: hostId };\n}\nfunction nonEmpty(value) {\n const trimmed = value?.trim();\n return trimmed || undefined;\n}\nfunction optionalCaptainId(value) {\n if (value === undefined)\n return undefined;\n const trimmed = value.trim();\n if (!trimmed || !/^\\d+$/.test(trimmed)) {\n throw new Error(\"SAILORBRIDGE_CAPTAIN_ID must be a numeric string\");\n }\n return trimmed;\n}\nfunction storedCaptainId(value) {\n if (typeof value === \"number\" && Number.isInteger(value) && value >= 0)\n return String(value);\n if (typeof value === \"string\") {\n const trimmed = value.trim();\n return /^\\d+$/.test(trimmed) ? trimmed : undefined;\n }\n return undefined;\n}\n//# sourceMappingURL=config.js.map",
|
|
32
32
|
"import { RelayHttpError } from \"../relay/index.js\";\nconst DEFAULT_THRESHOLD = 3;\nconst DEFAULT_WINDOW_MS = 30_000;\nconst DEFAULT_COOLDOWN_MS = 1_000;\nexport class AgentRetirementSignalGuard {\n threshold;\n windowMs;\n cooldownMs;\n clock;\n failures = [];\n constructor(options = {}) {\n this.threshold = Math.max(1, Math.trunc(options.threshold ?? DEFAULT_THRESHOLD));\n this.windowMs = Math.max(1, Math.trunc(options.windowMs ?? DEFAULT_WINDOW_MS));\n this.cooldownMs = Math.max(0, Math.trunc(options.cooldownMs ?? DEFAULT_COOLDOWN_MS));\n this.clock = options.clock ?? Date.now;\n }\n recordSuccess() {\n this.failures = [];\n }\n recordFailure(reason, error) {\n if (!isAgentRetirementSignalRelayError(reason, error))\n return null;\n const now = this.clock();\n if (isAuthoritativeRetirementRelayError(error)) {\n this.failures = [];\n return this.decision(reason, error.status, true, false, false);\n }\n const failures = this._failuresForStatus(error.status, now);\n const last = failures.at(-1);\n if (last && now - last.at < this.cooldownMs) {\n return this.decision(reason, error.status, false, false, true, failures.length);\n }\n this.failures.push({ at: now, reason, status: error.status });\n return this._thresholdDecision(reason, error.status, failures.length + 1);\n }\n _failuresForStatus(status, now) {\n this.failures = this.failures.filter((failure) => now - failure.at <= this.windowMs);\n return this.failures.filter((failure) => failure.status === status);\n }\n _thresholdDecision(reason, status, count) {\n const thresholdReached = count >= this.threshold;\n return this.decision(reason, status, status === 404 && thresholdReached, status === 401 && thresholdReached, false, count);\n }\n decision(reason, status, retire, stop, cooldownSuppressed, count = this.failures.length) {\n return {\n retire,\n stop,\n count,\n threshold: this.threshold,\n status,\n reason,\n windowMs: this.windowMs,\n cooldownMs: this.cooldownMs,\n cooldownSuppressed,\n };\n }\n}\nexport function isAgentRetirementSignalRelayError(reason, error) {\n if (!(error instanceof RelayHttpError))\n return false;\n if (error.status === 401)\n return true;\n return isAuthoritativeRetirementReason(reason) && [404, 410].includes(error.status);\n}\nexport function isAgentRetiredRelayError(error) {\n return error instanceof RelayHttpError && error.status === 401;\n}\nfunction isAuthoritativeRetirementRelayError(error) {\n return error.status === 410;\n}\nfunction isAuthoritativeRetirementReason(reason) {\n return reason === \"monitor_fetch\" || reason === \"agent_session_patch\";\n}\n//# sourceMappingURL=retirement.js.map",
|
|
33
33
|
"export async function waitForWakeableTimeout(ms, setWake, sleep) {\n if (sleep) {\n await Promise.race([\n sleep(ms),\n new Promise((resolve) => { setWake(resolve); }),\n ]);\n setWake(null);\n return;\n }\n let timer = null;\n let settled = false;\n await new Promise((resolve) => {\n const finish = () => {\n if (settled)\n return;\n settled = true;\n if (timer !== null) {\n clearTimeout(timer);\n timer = null;\n }\n resolve();\n };\n timer = setTimeout(finish, ms);\n setWake(finish);\n });\n setWake(null);\n}\n//# sourceMappingURL=wait.js.map",
|
|
34
|
-
"import { DriverTargetNotReadyError, redactSensitiveText } from \"../driver/index.js\";\nimport { RelayHttpError } from \"../relay/index.js\";\nimport { isAgentRetiredRelayError } from \"./retirement.js\";\nimport { waitForWakeableTimeout } from \"./wait.js\";\nexport const CLEAR_TAG = \"CLEAR\";\nexport const REFRESH_TAG = \"WORKFLOW-REFRESH\";\nexport const SYNC_TAG = \"SYNC\";\nexport const SAVE_CONTEXT_TAG = \"SAVE-CONTEXT\";\nexport const SAVE_CONTEXT_DONE_TAG = \"SAVE-CONTEXT-DONE\";\n// Runtime copy of @sailorbridge/shared-types MAILBOX_CLAIM_EXCLUDED_TAGS (the\n// TS truth, itself parity-gated against engine's mailbox_kind.py). This package\n// ships standalone to npm without workspace deps, so it cannot import\n// shared-types; tooling/e2e/supervisor-mailbox-parity.test.ts pins this copy\n// against both shared-types and the relay.\nexport const MAILBOX_CLAIM_EXCLUDED_TAGS = [\n CLEAR_TAG,\n REFRESH_TAG,\n SYNC_TAG,\n SAVE_CONTEXT_TAG,\n SAVE_CONTEXT_DONE_TAG,\n];\nexport const MONITOR_OWNED_MAILBOX_TAGS = MAILBOX_CLAIM_EXCLUDED_TAGS;\nexport const DEFAULT_MAILBOX_LIMIT = 16;\nconst DOORBELL_TAG_MAX_LENGTH = 64;\nconst TARGET_NOT_READY_ERROR_PREFIX = \"tmux target not ready after\";\nconst ORDINARY_DELIVERY_ERROR_PREFIX = \"doorbell delivery failed at ordinary attempt \";\nconst MONITOR_OWNED_MAILBOX_TAG_SET = new Set(MONITOR_OWNED_MAILBOX_TAGS);\n// Keep this exact-tag registry aligned with engine's\n// WORKFLOW_OBLIGATION_ACK_REQUIRED_TAGS. The two runtimes cannot import each\n// other, so a cross-runtime regression test and review artifact keep the\n// protocol contract visible.\nexport const WORKFLOW_OBLIGATION_ACK_REQUIRED_TAGS = new Set([\n \"DISPATCH\",\n \"MERGE-READY\",\n \"DIFF-REVIEW\",\n \"PLAN-REVIEW\",\n \"IMPLEMENT\",\n \"DIFF-REVIEW:ACK\",\n \"DIFF-REVIEW:NEEDS-CHANGES\",\n \"PLAN-REVIEW:ACK\",\n \"PLAN-REVIEW:NEEDS-CHANGES\",\n \"PUSHED\",\n \"NEEDS-INFO\",\n \"INVESTIGATE\",\n \"INVESTIGATE-DONE\",\n \"Q-DRAFTS\",\n \"Q-DRAFTS-DONE\",\n]);\nexport class MailboxProtocolError extends Error {\n}\nexport class MailboxSupervisor {\n options;\n waitTimeoutSec;\n limit;\n backoffInitialMs;\n backoffMaxMs;\n sleep;\n logger;\n stopped = false;\n claimAbort = null;\n wake = null;\n doorbellAttempts = new Map();\n targetNotReadyDefers = new Map();\n constructor(options) {\n this.options = options;\n if (!options.agentName.trim())\n throw new Error(\"agentName is required\");\n this.waitTimeoutSec = options.waitTimeoutSec ?? 60;\n this.limit = options.limit ?? DEFAULT_MAILBOX_LIMIT;\n this.backoffInitialMs = options.backoffInitialMs ?? 1000;\n this.backoffMaxMs = options.backoffMaxMs ?? 5000;\n this.sleep = options.sleep;\n this.logger = options.logger ?? (() => { });\n }\n async runOnce() {\n const controls = await this.peekControlMessages();\n if (this.stopped)\n return 0;\n let handled = await this.dispatchBatch(controls, true);\n if (this.stopped)\n return handled;\n const messages = await this.claimOwnedMessages(true, undefined, true, this.limit, [...MAILBOX_CLAIM_EXCLUDED_TAGS]);\n this.restoreDoorbellAttempts(messages);\n this.pruneDoorbellAttempts(messages);\n if (messages.length === 0)\n return handled;\n await this.reportTimedOutDoorbells(messages);\n const pending = messages.filter((message) => this.shouldSurface(message));\n if (pending.length === 0) {\n await this.waitBackoff(1000);\n return handled;\n }\n handled += await this.dispatchBatch(pending);\n return handled;\n }\n async runLoop() {\n let backoff = this.backoffInitialMs;\n while (!this.stopped) {\n try {\n await this.runOnce();\n this.options.onRelaySuccess?.();\n backoff = this.backoffInitialMs;\n }\n catch (error) {\n if (this.stopped)\n return;\n if (isAgentRetiredRelayError(error)) {\n const retired = await this.options.onTerminalAuthFailure?.(\"mailbox\", error);\n if (retired)\n return;\n this.log(\"mailbox_auth_failure_retry\", { status: error.status, retryMs: backoff });\n await this.waitBackoff(backoff);\n backoff = Math.min(backoff * 2, this.backoffMaxMs);\n continue;\n }\n this.log(\"mailbox_loop_error\", { error: this.redact(errorMessage(error)), retryMs: backoff });\n await this.waitBackoff(backoff);\n backoff = Math.min(backoff * 2, this.backoffMaxMs);\n }\n }\n }\n stop() {\n this.stopped = true;\n this.claimAbort?.abort(new Error(\"mailbox supervisor stopped\"));\n this.wake?.();\n }\n async waitBackoff(ms) {\n await waitForWakeableTimeout(ms, (wake) => { this.wake = wake; }, this.sleep);\n }\n async claimOwnedMessages(peek, tag, wait = true, limit = this.limit, excludeTags, messageId) {\n this.claimAbort = new AbortController();\n try {\n const result = await this.options.relay.claimMailbox(this.options.agentName, {\n wait,\n peek,\n timeoutSec: this.waitTimeoutSec,\n limit,\n ...(tag ? { tag } : {}),\n ...(messageId ? { messageId } : {}),\n ...(excludeTags ? { excludeTags } : {}),\n signal: this.claimAbort.signal,\n });\n return result.messages;\n }\n finally {\n this.claimAbort = null;\n }\n }\n async peekControlMessages() {\n const controls = [];\n for (const tag of MONITOR_OWNED_MAILBOX_TAGS) {\n controls.push(...await this.claimOwnedMessages(true, tag, false));\n }\n return controls;\n }\n async dispatchBatch(messages, deliverControls = false) {\n let handled = 0;\n handled += await this.handleClearMessages(messages.filter((message) => tagOf(message) === CLEAR_TAG), deliverControls);\n handled += await this.handleRefreshMessages(messages.filter((message) => tagOf(message) === REFRESH_TAG), deliverControls);\n handled += await this.handleSyncMessages(messages.filter((message) => tagOf(message) === SYNC_TAG), deliverControls);\n const checkpointStarts = messages.filter((message) => tagOf(message) === SAVE_CONTEXT_TAG);\n handled += await this.handleSaveContextMessages(checkpointStarts, deliverControls);\n handled += await this.handleSaveContextDoneMessages(messages.filter((message) => tagOf(message) === SAVE_CONTEXT_DONE_TAG), checkpointStarts, deliverControls);\n const work = messages.filter((item) => !isControl(item));\n if (work.length > 0 && !this.stopped)\n handled += await this.handleWorkMessages(work);\n return handled;\n }\n async handleClearMessages(messages, deliver = false) {\n const pending = unsurfaced(messages);\n let handled = 0;\n for (const message of pending) {\n if (this.stopped && !deliver)\n return handled;\n if (!await this.deliverControl(message, \"/clear\", true))\n return handled;\n handled += 1;\n }\n await this.claimDeliveredControls(messages);\n return handled;\n }\n async handleRefreshMessages(messages, deliver = false) {\n const pending = unsurfaced(messages);\n if (pending.length === 0) {\n if (messages.length > 0)\n await this.claimDeliveredControls(messages);\n return 0;\n }\n if (this.stopped && !deliver)\n return 0;\n try {\n await this.deliverRefreshCue();\n }\n catch (error) {\n await this.recordSurfaceBatch(pending, { status: \"failed\", error: this.redact(errorMessage(error)) });\n return 0;\n }\n for (const message of pending) {\n if (!await this.recordSurfaceBestEffort(message, { status: \"surfaced\" }))\n return 0;\n }\n await this.claimDeliveredControls(messages);\n return pending.length;\n }\n async deliverRefreshCue() {\n const text = refreshCue(this.options.cli);\n await this.options.driver.send(text, { verifyText: REFRESH_TAG });\n }\n async handleSyncMessages(messages, deliver = false) {\n const pending = unsurfaced(messages);\n if (pending.length === 0) {\n if (messages.length > 0)\n await this.claimDeliveredControls(messages);\n return 0;\n }\n if (this.stopped && !deliver)\n return 0;\n try {\n if (!this.options.onSync)\n throw new Error(\"SYNC handler is not configured\");\n await this.options.onSync(pending);\n }\n catch (error) {\n await this.recordSurfaceBatch(pending, { status: \"failed\", error: this.redact(errorMessage(error)) });\n return 0;\n }\n for (const message of pending) {\n if (!await this.recordSurfaceBestEffort(message, { status: \"surfaced\" }))\n return 0;\n }\n await this.claimDeliveredControls(messages);\n return pending.length;\n }\n async handleSaveContextMessages(messages, deliver = false) {\n let outstanding = messages.find((message) => message.surface_status === \"surfaced\");\n let handled = 0;\n for (const message of messages) {\n if (this.stopped && !deliver)\n return handled;\n if (message.surface_status === \"surfaced\")\n continue;\n if (outstanding) {\n const error = `checkpoint already outstanding: ${outstanding.id}`;\n if (!await this.recordSurfaceBestEffort(message, { status: \"failed\", error }))\n return handled;\n await this.claimAndAckCheckpoint(SAVE_CONTEXT_TAG, message.id);\n this.log(\"save_context_ignored_outstanding\", { checkpointId: message.id, outstandingId: outstanding.id });\n handled += 1;\n continue;\n }\n if (!await this.deliverControl(message, saveContextCue(this.options.agentName, message.id), false, message.id))\n return handled;\n message.surface_status = \"surfaced\";\n outstanding = message;\n handled += 1;\n }\n return handled;\n }\n async handleSaveContextDoneMessages(messages, starts, deliver = false) {\n let handled = 0;\n for (const message of messages) {\n if (this.stopped && !deliver)\n return handled;\n const checkpointId = checkpointIdFrom(message);\n const start = checkpointId\n ? starts.find((candidate) => candidate.id === checkpointId && candidate.surface_status === \"surfaced\")\n : undefined;\n if (!start || message.sender_agent_name !== this.options.agentName) {\n if (!await this.recordSurfaceBestEffort(message, { status: \"surfaced\" }))\n return handled;\n }\n else if (!await this.resumeCheckpoint(message)) {\n return handled;\n }\n else {\n await this.claimAndAckCheckpoint(SAVE_CONTEXT_TAG, start.id);\n starts.splice(starts.indexOf(start), 1);\n }\n await this.claimAndAckCheckpoint(SAVE_CONTEXT_DONE_TAG, message.id);\n handled += 1;\n }\n return handled;\n }\n async claimAndAckCheckpoint(tag, messageId) {\n const claimed = await this.claimOwnedMessages(false, tag, false, 1, undefined, messageId);\n const message = claimed.find((candidate) => candidate.id === messageId);\n if (!message)\n throw new Error(`checkpoint control claim lost: ${tag} ${messageId}`);\n await this.ackIfLeased(message);\n }\n async resumeCheckpoint(message) {\n try {\n await this.options.driver.send(\"/clear\", { verifyText: \"/clear\", acceptScreenChange: true });\n const cue = \"Use the resume_ctx skill to resume from .agent/context.md.\";\n await this.options.driver.send(cue, { verifyText: cue });\n }\n catch (error) {\n await this.recordSurfaceBestEffort(message, { status: \"failed\", error: this.redact(errorMessage(error)) });\n return false;\n }\n return await this.recordSurfaceBestEffort(message, { status: \"surfaced\" });\n }\n async deliverControl(message, text, acceptScreenChange = false, verifyText = text) {\n try {\n await this.options.driver.send(text, { verifyText, acceptScreenChange });\n }\n catch (error) {\n await this.recordSurfaceBestEffort(message, { status: \"failed\", error: this.redact(errorMessage(error)) });\n return false;\n }\n if (!await this.recordSurfaceBestEffort(message, { status: \"surfaced\" }))\n return false;\n return true;\n }\n async claimDeliveredControls(messages) {\n for (const tag of [...new Set(messages.map(tagOf))]) {\n const expected = messages.filter((message) => tagOf(message) === tag);\n const claimed = await this.claimOwnedMessages(false, tag, false, expected.length);\n const claimedIds = new Set(claimed.map((message) => message.id));\n if (expected.some((message) => !claimedIds.has(message.id)))\n throw new Error(`control claim lost after delivery: ${tag}`);\n for (const message of claimed)\n await this.ackIfLeased(message);\n }\n }\n async handleWorkMessages(messages) {\n const doorbell = formatWorkDoorbell(messages, this.options.displayName ?? this.options.agentName);\n try {\n await this.options.driver.send(doorbell, { verifyText: doorbellToken(messages[0].id) });\n }\n catch (error) {\n const targetNotReady = error instanceof DriverTargetNotReadyError;\n if (targetNotReady) {\n await this.deferTargetNotReady(messages, error);\n return 0;\n }\n for (const message of messages) {\n const attempt = (this.doorbellAttempts.get(message.id)?.count ?? 0) + 1;\n const detail = `${ORDINARY_DELIVERY_ERROR_PREFIX}${attempt}: ${this.redact(errorMessage(error))}`;\n await this.recordSurfaceBestEffort(message, { status: \"failed\", error: detail });\n this.rememberDoorbell(message.id);\n }\n return 0;\n }\n let handled = 0;\n for (const message of messages) {\n this.targetNotReadyDefers.delete(message.id);\n this.rememberDoorbell(message.id);\n if (!await this.recordSurfaceBestEffort(message, { status: \"surfaced\" }))\n return handled;\n this.notifyWorkSurfaced(message);\n await this.ackIfLeased(message);\n handled += 1;\n }\n return handled;\n }\n async deferTargetNotReady(messages, error) {\n const now = Date.now();\n for (const message of messages) {\n const prior = this.targetNotReadyDefers.get(message.id);\n if (!prior) {\n this.targetNotReadyDefers.set(message.id, { firstSeenAt: now, reported: false });\n continue;\n }\n if (prior.reported || now - prior.firstSeenAt < this.waitTimeoutSec * 1000)\n continue;\n const detail = `${TARGET_NOT_READY_ERROR_PREFIX} ${this.waitTimeoutSec}s: ${this.redact(errorMessage(error))}`;\n if (await this.recordSurfaceBestEffort(message, { status: \"failed\", error: detail })) {\n this.targetNotReadyDefers.set(message.id, { ...prior, reported: true });\n }\n }\n await this.waitBackoff(this.backoffInitialMs);\n }\n shouldSurface(message) {\n // A surfaced doorbell is terminal only once the agent has engaged with it: claiming a work\n // message leases it, so the row leaves \"queued\". While it stays queued the earlier doorbell was\n // lost — a /clear, relaunch, or wedged (unsubmitted) injection dropped it before the agent could\n // claim — so it must be re-surfaced or it is orphaned forever (silent delivery loss). This mirrors\n // the Python listener's _repair_wedged_doorbells; the driver's target-ready gate keeps the retry\n // from interrupting an active turn. restoreDoorbellAttempts seeds the retry cap/window from\n // surfaced_at, so the prior branch bounds re-notification here.\n if (message.surface_status === \"surfaced\" && message.status !== \"queued\")\n return false;\n const prior = this.doorbellAttempts.get(message.id);\n if (!prior)\n return message.surface_status !== \"surfaced\";\n return prior.count < 3 && Date.now() - prior.sentAt >= this.waitTimeoutSec * 1000;\n }\n restoreDoorbellAttempts(messages) {\n for (const message of messages) {\n // Keep restoring across a fresh process for surfaced-yet-queued messages: their persisted\n // surface_attempts/surfaced_at anchor the re-notification cap and window (see shouldSurface).\n if (message.surface_status === \"surfaced\" && message.status !== \"queued\")\n continue;\n if (message.surface_error?.startsWith(TARGET_NOT_READY_ERROR_PREFIX)) {\n this.targetNotReadyDefers.set(message.id, { firstSeenAt: 0, reported: true });\n continue;\n }\n const count = ordinaryDeliveryAttempt(message.surface_error) ?? message.surface_attempts ?? 0;\n if (count === 0)\n continue;\n const prior = this.doorbellAttempts.get(message.id);\n const sentAt = Date.parse(message.surfaced_at ?? \"\") || 0;\n this.doorbellAttempts.set(message.id, {\n count: Math.max(prior?.count ?? 0, count),\n sentAt: Math.max(prior?.sentAt ?? 0, sentAt),\n reported: prior?.reported === true || message.surface_error === \"doorbell claim timeout after 3 attempts\",\n });\n }\n }\n rememberDoorbell(messageId) {\n const prior = this.doorbellAttempts.get(messageId);\n this.doorbellAttempts.set(messageId, { count: (prior?.count ?? 0) + 1, sentAt: Date.now(), reported: false });\n }\n pruneDoorbellAttempts(messages) {\n const pending = new Set(messages.map((message) => message.id));\n for (const messageId of this.doorbellAttempts.keys()) {\n if (!pending.has(messageId))\n this.doorbellAttempts.delete(messageId);\n }\n for (const messageId of this.targetNotReadyDefers.keys()) {\n if (!pending.has(messageId))\n this.targetNotReadyDefers.delete(messageId);\n }\n }\n async reportTimedOutDoorbells(messages) {\n for (const message of messages) {\n if (tagOf(message) === \"DOORBELL-TIMEOUT\")\n continue;\n // A surfaced-yet-queued doorbell that exhausted its retries still escalates: the agent never\n // claimed it. Only a message that left the queue (claimed/acked) is a terminal surface.\n if (message.surface_status === \"surfaced\" && message.status !== \"queued\")\n continue;\n const prior = this.doorbellAttempts.get(message.id);\n if (!prior || prior.count < 3 || prior.reported)\n continue;\n if (await this.recordSurfaceBestEffort(message, { status: \"failed\", error: \"doorbell claim timeout after 3 attempts\" })) {\n try {\n await this.options.relay.sendSessionMailbox(message.session, {\n tag: \"DOORBELL-TIMEOUT\",\n payload_json: `doorbell claim timeout after 3 attempts: ${message.id}`,\n to_roles: [\"moderator\"],\n });\n }\n catch (error) {\n if (!_isMissingModerator(error))\n throw error;\n this.log(\"doorbell_timeout_alert_skipped\", { messageId: message.id, reason: \"no_moderator\" });\n }\n this.doorbellAttempts.set(message.id, { ...prior, reported: true });\n }\n }\n }\n notifyWorkSurfaced(message) {\n try {\n this.options.onWorkSurfaced?.(message);\n }\n catch (error) {\n this.log(\"work_surfaced_hook_error\", { messageId: message.id, error: this.redact(errorMessage(error)) });\n }\n }\n async recordSurfaceBatch(messages, body) {\n for (const message of messages) {\n if (this.stopped)\n return;\n if (!await this.recordSurfaceBestEffort(message, body))\n return;\n }\n }\n async recordSurfaceBestEffort(message, body) {\n try {\n await this.options.relay.recordMailboxSurface(message.id, surfaceBody(message, body));\n return true;\n }\n catch (error) {\n if (error instanceof MailboxProtocolError)\n throw error;\n if (isAgentRetiredRelayError(error)) {\n const retired = await this.options.onTerminalAuthFailure?.(\"mailbox\", error);\n if (retired) {\n this.stopped = true;\n return false;\n }\n throw error;\n }\n this.log(\"surface_record_failed\", { messageId: message.id, error: this.redact(errorMessage(error)) });\n throw error;\n }\n }\n async ackIfLeased(message) {\n if (WORKFLOW_OBLIGATION_ACK_REQUIRED_TAGS.has(tagOf(message)))\n return;\n const token = message.lease_token?.trim();\n if (!token)\n return;\n await this.options.relay.ackMailbox(message.id, token);\n }\n log(event, fields) {\n this.logger(event, fields);\n }\n redact(text) {\n return redactSensitiveText(text, this.options.env ?? {});\n }\n}\nexport function formatWorkDoorbell(input, toDisplay) {\n const messages = Array.isArray(input) ? input : [input];\n const message = messages[0];\n if (!message)\n throw new Error(\"cannot format an empty work doorbell\");\n const sender = message.sender_agent_name ?? message.sender_role ?? \"unknown\";\n const tag = canonicalDoorbellTag(tagOf(message));\n // See engine/PROTOCOL.md: protocol doorbells are injected into a terminal, not product UI copy.\n return `[${sender}->${toDisplay}] ${tag} ${doorbellToken(message.id)} 📬 ${messages.length} new message(s). Read and claim: sail mailbox claim; complete obligation tags; direct workflows use the returned lease token.`;\n}\nfunction canonicalDoorbellTag(tag) {\n const printable = Array.from(tag, (char) => char >= \" \" && char <= \"~\" ? char : \" \").join(\"\");\n const compact = printable.trim().replace(/\\s+/g, \" \") || \"MAIL\";\n return compact.length <= DOORBELL_TAG_MAX_LENGTH ? compact : `${compact.slice(0, DOORBELL_TAG_MAX_LENGTH - 1)}…`;\n}\nfunction unsurfaced(messages) {\n return messages.filter((message) => message.surface_status !== \"surfaced\");\n}\nfunction doorbellToken(messageId) {\n return `#${messageId}#`;\n}\nexport function refreshCue(_cli) {\n return `${REFRESH_TAG}\\n\\nRun \\`sail refresh\\` before handling mailbox work.`;\n}\nfunction saveContextCue(agentName, checkpointId) {\n return [\n \"Use the save_ctx skill to write .agent/context.md.\",\n \"After the file is complete, send this completion message:\",\n `printf 'checkpoint_id=${checkpointId}\\\\npath=.agent/context.md\\\\n' | sail mailbox send --to-agents ${agentName} --tag ${SAVE_CONTEXT_DONE_TAG}`,\n ].join(\"\\n\");\n}\nfunction checkpointIdFrom(message) {\n if (typeof message.payload_json !== \"string\")\n return null;\n const line = message.payload_json.split(\"\\n\").find((item) => item.startsWith(\"checkpoint_id=\"));\n const checkpointId = line?.slice(\"checkpoint_id=\".length).trim();\n return checkpointId || null;\n}\nfunction isControl(message) {\n return MONITOR_OWNED_MAILBOX_TAG_SET.has(tagOf(message));\n}\nfunction tagOf(message) {\n return message.tag || \"MAIL\";\n}\nfunction surfaceBody(message, body) {\n const token = message.lease_token?.trim();\n if (!token && message.status !== \"queued\" && message.status !== \"acked\")\n throw new MailboxProtocolError(\"mailbox message is missing lease_token\");\n if (!token)\n return body;\n return { ...body, lease_token: token };\n}\nfunction errorMessage(error) {\n return error instanceof Error ? error.message : String(error);\n}\nfunction ordinaryDeliveryAttempt(error) {\n const match = error?.match(/^doorbell delivery failed at ordinary attempt ([1-3]):/u);\n return match ? Number(match[1]) : null;\n}\nfunction _isMissingModerator(error) {\n return error instanceof RelayHttpError\n && error.status === 400\n && error.body.includes(\"no agents match\");\n}\n//# sourceMappingURL=mailbox.js.map",
|
|
34
|
+
"import { DriverTargetNotReadyError, redactSensitiveText } from \"../driver/index.js\";\nimport { RelayHttpError } from \"../relay/index.js\";\nimport { isAgentRetiredRelayError } from \"./retirement.js\";\nimport { waitForWakeableTimeout } from \"./wait.js\";\nexport const CLEAR_TAG = \"CLEAR\";\nexport const REFRESH_TAG = \"WORKFLOW-REFRESH\";\nexport const SYNC_TAG = \"SYNC\";\nexport const SAVE_CONTEXT_TAG = \"SAVE-CONTEXT\";\nexport const SAVE_CONTEXT_DONE_TAG = \"SAVE-CONTEXT-DONE\";\n// Runtime copy of @sailorbridge/shared-types MAILBOX_CLAIM_EXCLUDED_TAGS (the\n// historical public name for monitor-owned tags, itself parity-gated against\n// engine's mailbox_kind.py). This package ships standalone to npm without\n// workspace deps, so it cannot import shared-types; tooling/e2e/\n// supervisor-mailbox-parity.test.ts pins this copy against both runtimes.\nexport const MAILBOX_CLAIM_EXCLUDED_TAGS = [\n CLEAR_TAG,\n REFRESH_TAG,\n SYNC_TAG,\n SAVE_CONTEXT_TAG,\n SAVE_CONTEXT_DONE_TAG,\n];\nexport const MONITOR_OWNED_MAILBOX_TAGS = MAILBOX_CLAIM_EXCLUDED_TAGS;\nexport const DEFAULT_MAILBOX_LIMIT = 16;\nconst DOORBELL_TAG_MAX_LENGTH = 64;\nconst TARGET_NOT_READY_ERROR_PREFIX = \"tmux target not ready after\";\nconst ORDINARY_DELIVERY_ERROR_PREFIX = \"doorbell delivery failed at ordinary attempt \";\nconst MONITOR_OWNED_MAILBOX_TAG_SET = new Set(MONITOR_OWNED_MAILBOX_TAGS);\n// Keep this exact-tag registry aligned with engine's\n// WORKFLOW_OBLIGATION_ACK_REQUIRED_TAGS. The two runtimes cannot import each\n// other, so a cross-runtime regression test and review artifact keep the\n// protocol contract visible.\nexport const WORKFLOW_OBLIGATION_ACK_REQUIRED_TAGS = new Set([\n \"DISPATCH\",\n \"MERGE-READY\",\n \"DIFF-REVIEW\",\n \"PLAN-REVIEW\",\n \"IMPLEMENT\",\n \"DIFF-REVIEW:ACK\",\n \"DIFF-REVIEW:NEEDS-CHANGES\",\n \"PLAN-REVIEW:ACK\",\n \"PLAN-REVIEW:NEEDS-CHANGES\",\n \"PUSHED\",\n \"NEEDS-INFO\",\n \"INVESTIGATE\",\n \"INVESTIGATE-DONE\",\n \"Q-DRAFTS\",\n \"Q-DRAFTS-DONE\",\n]);\nexport class MailboxProtocolError extends Error {\n}\nexport class MailboxSupervisor {\n options;\n waitTimeoutSec;\n limit;\n backoffInitialMs;\n backoffMaxMs;\n sleep;\n logger;\n stopped = false;\n claimAbort = null;\n wake = null;\n doorbellAttempts = new Map();\n targetNotReadyDefers = new Map();\n constructor(options) {\n this.options = options;\n if (!options.agentName.trim())\n throw new Error(\"agentName is required\");\n this.waitTimeoutSec = options.waitTimeoutSec ?? 60;\n this.limit = options.limit ?? DEFAULT_MAILBOX_LIMIT;\n this.backoffInitialMs = options.backoffInitialMs ?? 1000;\n this.backoffMaxMs = options.backoffMaxMs ?? 5000;\n this.sleep = options.sleep;\n this.logger = options.logger ?? (() => { });\n }\n async runOnce() {\n const controls = await this.peekControlMessages();\n if (this.stopped)\n return 0;\n let handled = await this.dispatchBatch(controls, true);\n if (this.stopped)\n return handled;\n // Keep controls visible to this waiting preview: their mailbox notification\n // must end the long poll so the control handler runs immediately.\n const preview = await this.claimOwnedMessages(true);\n handled += await this.dispatchBatch(preview.filter(isControl));\n const messages = preview.filter((message) => !isControl(message));\n this.restoreDoorbellAttempts(messages);\n this.pruneDoorbellAttempts(messages);\n if (messages.length === 0)\n return handled;\n await this.reportTimedOutDoorbells(messages);\n const pending = messages.filter((message) => this.shouldSurface(message));\n if (pending.length === 0) {\n await this.waitBackoff(1000);\n return handled;\n }\n handled += await this.dispatchBatch(pending);\n return handled;\n }\n async runLoop() {\n let backoff = this.backoffInitialMs;\n while (!this.stopped) {\n try {\n await this.runOnce();\n this.options.onRelaySuccess?.();\n backoff = this.backoffInitialMs;\n }\n catch (error) {\n if (this.stopped)\n return;\n if (isAgentRetiredRelayError(error)) {\n const retired = await this.options.onTerminalAuthFailure?.(\"mailbox\", error);\n if (retired)\n return;\n this.log(\"mailbox_auth_failure_retry\", { status: error.status, retryMs: backoff });\n await this.waitBackoff(backoff);\n backoff = Math.min(backoff * 2, this.backoffMaxMs);\n continue;\n }\n this.log(\"mailbox_loop_error\", { error: this.redact(errorMessage(error)), retryMs: backoff });\n await this.waitBackoff(backoff);\n backoff = Math.min(backoff * 2, this.backoffMaxMs);\n }\n }\n }\n stop() {\n this.stopped = true;\n this.claimAbort?.abort(new Error(\"mailbox supervisor stopped\"));\n this.wake?.();\n }\n async waitBackoff(ms) {\n await waitForWakeableTimeout(ms, (wake) => { this.wake = wake; }, this.sleep);\n }\n async claimOwnedMessages(peek, tag, wait = true, limit = this.limit, excludeTags, messageId) {\n this.claimAbort = new AbortController();\n try {\n const result = await this.options.relay.claimMailbox(this.options.agentName, {\n wait,\n peek,\n timeoutSec: this.waitTimeoutSec,\n limit,\n ...(tag ? { tag } : {}),\n ...(messageId ? { messageId } : {}),\n ...(excludeTags ? { excludeTags } : {}),\n signal: this.claimAbort.signal,\n });\n return result.messages;\n }\n finally {\n this.claimAbort = null;\n }\n }\n async peekControlMessages() {\n const controls = [];\n for (const tag of MONITOR_OWNED_MAILBOX_TAGS) {\n controls.push(...await this.claimOwnedMessages(true, tag, false));\n }\n return controls;\n }\n async dispatchBatch(messages, deliverControls = false) {\n let handled = 0;\n handled += await this.handleClearMessages(messages.filter((message) => tagOf(message) === CLEAR_TAG), deliverControls);\n handled += await this.handleRefreshMessages(messages.filter((message) => tagOf(message) === REFRESH_TAG), deliverControls);\n handled += await this.handleSyncMessages(messages.filter((message) => tagOf(message) === SYNC_TAG), deliverControls);\n const checkpointStarts = messages.filter((message) => tagOf(message) === SAVE_CONTEXT_TAG);\n handled += await this.handleSaveContextMessages(checkpointStarts, deliverControls);\n handled += await this.handleSaveContextDoneMessages(messages.filter((message) => tagOf(message) === SAVE_CONTEXT_DONE_TAG), checkpointStarts, deliverControls);\n const work = messages.filter((item) => !isControl(item));\n if (work.length > 0 && !this.stopped)\n handled += await this.handleWorkMessages(work);\n return handled;\n }\n async handleClearMessages(messages, deliver = false) {\n const pending = unsurfaced(messages);\n let handled = 0;\n for (const message of pending) {\n if (this.stopped && !deliver)\n return handled;\n if (!await this.deliverControl(message, \"/clear\", true))\n return handled;\n handled += 1;\n }\n await this.claimDeliveredControls(messages);\n return handled;\n }\n async handleRefreshMessages(messages, deliver = false) {\n const pending = unsurfaced(messages);\n if (pending.length === 0) {\n if (messages.length > 0)\n await this.claimDeliveredControls(messages);\n return 0;\n }\n if (this.stopped && !deliver)\n return 0;\n try {\n await this.deliverRefreshCue(refreshNotices(pending));\n }\n catch (error) {\n await this.recordSurfaceBatch(pending, { status: \"failed\", error: this.redact(errorMessage(error)) });\n return 0;\n }\n for (const message of pending) {\n if (!await this.recordSurfaceBestEffort(message, { status: \"surfaced\" }))\n return 0;\n }\n await this.claimDeliveredControls(messages);\n return pending.length;\n }\n async deliverRefreshCue(notices = []) {\n const text = refreshCue(this.options.cli, notices);\n await this.options.driver.send(text, { verifyText: REFRESH_TAG });\n }\n async handleSyncMessages(messages, deliver = false) {\n const pending = unsurfaced(messages);\n if (pending.length === 0) {\n if (messages.length > 0)\n await this.claimDeliveredControls(messages);\n return 0;\n }\n if (this.stopped && !deliver)\n return 0;\n try {\n if (!this.options.onSync)\n throw new Error(\"SYNC handler is not configured\");\n await this.options.onSync(pending);\n }\n catch (error) {\n await this.recordSurfaceBatch(pending, { status: \"failed\", error: this.redact(errorMessage(error)) });\n return 0;\n }\n for (const message of pending) {\n if (!await this.recordSurfaceBestEffort(message, { status: \"surfaced\" }))\n return 0;\n }\n await this.claimDeliveredControls(messages);\n return pending.length;\n }\n async handleSaveContextMessages(messages, deliver = false) {\n let outstanding = messages.find((message) => message.surface_status === \"surfaced\");\n let handled = 0;\n for (const message of messages) {\n if (this.stopped && !deliver)\n return handled;\n if (message.surface_status === \"surfaced\")\n continue;\n if (outstanding) {\n const error = `checkpoint already outstanding: ${outstanding.id}`;\n if (!await this.recordSurfaceBestEffort(message, { status: \"failed\", error }))\n return handled;\n await this.claimAndAckCheckpoint(SAVE_CONTEXT_TAG, message.id);\n this.log(\"save_context_ignored_outstanding\", { checkpointId: message.id, outstandingId: outstanding.id });\n handled += 1;\n continue;\n }\n if (!await this.deliverControl(message, saveContextCue(this.options.agentName, message.id), false, message.id))\n return handled;\n message.surface_status = \"surfaced\";\n outstanding = message;\n handled += 1;\n }\n return handled;\n }\n async handleSaveContextDoneMessages(messages, starts, deliver = false) {\n let handled = 0;\n for (const message of messages) {\n if (this.stopped && !deliver)\n return handled;\n const checkpointId = checkpointIdFrom(message);\n const start = checkpointId\n ? starts.find((candidate) => candidate.id === checkpointId && candidate.surface_status === \"surfaced\")\n : undefined;\n if (!start || message.sender_agent_name !== this.options.agentName) {\n if (!await this.recordSurfaceBestEffort(message, { status: \"surfaced\" }))\n return handled;\n }\n else if (!await this.resumeCheckpoint(message)) {\n return handled;\n }\n else {\n await this.claimAndAckCheckpoint(SAVE_CONTEXT_TAG, start.id);\n starts.splice(starts.indexOf(start), 1);\n }\n await this.claimAndAckCheckpoint(SAVE_CONTEXT_DONE_TAG, message.id);\n handled += 1;\n }\n return handled;\n }\n async claimAndAckCheckpoint(tag, messageId) {\n const claimed = await this.claimOwnedMessages(false, tag, false, 1, undefined, messageId);\n const message = claimed.find((candidate) => candidate.id === messageId);\n if (!message)\n throw new Error(`checkpoint control claim lost: ${tag} ${messageId}`);\n await this.ackIfLeased(message);\n }\n async resumeCheckpoint(message) {\n try {\n await this.options.driver.send(\"/clear\", { verifyText: \"/clear\", acceptScreenChange: true });\n const cue = \"Use the resume_ctx skill to resume from .agent/context.md.\";\n await this.options.driver.send(cue, { verifyText: cue });\n }\n catch (error) {\n await this.recordSurfaceBestEffort(message, { status: \"failed\", error: this.redact(errorMessage(error)) });\n return false;\n }\n return await this.recordSurfaceBestEffort(message, { status: \"surfaced\" });\n }\n async deliverControl(message, text, acceptScreenChange = false, verifyText = text) {\n try {\n await this.options.driver.send(text, { verifyText, acceptScreenChange });\n }\n catch (error) {\n await this.recordSurfaceBestEffort(message, { status: \"failed\", error: this.redact(errorMessage(error)) });\n return false;\n }\n if (!await this.recordSurfaceBestEffort(message, { status: \"surfaced\" }))\n return false;\n return true;\n }\n async claimDeliveredControls(messages) {\n for (const tag of [...new Set(messages.map(tagOf))]) {\n const expected = messages.filter((message) => tagOf(message) === tag);\n const claimed = await this.claimOwnedMessages(false, tag, false, expected.length);\n const claimedIds = new Set(claimed.map((message) => message.id));\n if (expected.some((message) => !claimedIds.has(message.id)))\n throw new Error(`control claim lost after delivery: ${tag}`);\n for (const message of claimed)\n await this.ackIfLeased(message);\n }\n }\n async handleWorkMessages(messages) {\n const doorbell = formatWorkDoorbell(messages, this.options.displayName ?? this.options.agentName);\n try {\n await this.options.driver.send(doorbell, { verifyText: doorbellToken(messages[0].id) });\n }\n catch (error) {\n const targetNotReady = error instanceof DriverTargetNotReadyError;\n if (targetNotReady) {\n await this.deferTargetNotReady(messages, error);\n return 0;\n }\n for (const message of messages) {\n const attempt = (this.doorbellAttempts.get(message.id)?.count ?? 0) + 1;\n const detail = `${ORDINARY_DELIVERY_ERROR_PREFIX}${attempt}: ${this.redact(errorMessage(error))}`;\n await this.recordSurfaceBestEffort(message, { status: \"failed\", error: detail });\n this.rememberDoorbell(message.id);\n }\n return 0;\n }\n let handled = 0;\n for (const message of messages) {\n this.targetNotReadyDefers.delete(message.id);\n this.rememberDoorbell(message.id);\n if (!await this.recordSurfaceBestEffort(message, { status: \"surfaced\" }))\n return handled;\n this.notifyWorkSurfaced(message);\n await this.ackIfLeased(message);\n handled += 1;\n }\n return handled;\n }\n async deferTargetNotReady(messages, error) {\n const now = Date.now();\n for (const message of messages) {\n const prior = this.targetNotReadyDefers.get(message.id);\n if (!prior) {\n this.targetNotReadyDefers.set(message.id, { firstSeenAt: now, reported: false });\n continue;\n }\n if (prior.reported || now - prior.firstSeenAt < this.waitTimeoutSec * 1000)\n continue;\n const detail = `${TARGET_NOT_READY_ERROR_PREFIX} ${this.waitTimeoutSec}s: ${this.redact(errorMessage(error))}`;\n if (await this.recordSurfaceBestEffort(message, { status: \"failed\", error: detail })) {\n this.targetNotReadyDefers.set(message.id, { ...prior, reported: true });\n }\n }\n await this.waitBackoff(this.backoffInitialMs);\n }\n shouldSurface(message) {\n // A surfaced doorbell is terminal only once the agent has engaged with it: claiming a work\n // message leases it, so the row leaves \"queued\". While it stays queued the earlier doorbell was\n // lost — a /clear, relaunch, or wedged (unsubmitted) injection dropped it before the agent could\n // claim — so it must be re-surfaced or it is orphaned forever (silent delivery loss). This mirrors\n // the Python listener's _repair_wedged_doorbells; the driver's target-ready gate keeps the retry\n // from interrupting an active turn. restoreDoorbellAttempts seeds the retry cap/window from\n // surfaced_at, so the prior branch bounds re-notification here.\n if (message.surface_status === \"surfaced\" && message.status !== \"queued\")\n return false;\n const prior = this.doorbellAttempts.get(message.id);\n if (!prior)\n return message.surface_status !== \"surfaced\";\n return prior.count < 3 && Date.now() - prior.sentAt >= this.waitTimeoutSec * 1000;\n }\n restoreDoorbellAttempts(messages) {\n for (const message of messages) {\n // Keep restoring across a fresh process for surfaced-yet-queued messages: their persisted\n // surface_attempts/surfaced_at anchor the re-notification cap and window (see shouldSurface).\n if (message.surface_status === \"surfaced\" && message.status !== \"queued\")\n continue;\n if (message.surface_error?.startsWith(TARGET_NOT_READY_ERROR_PREFIX)) {\n this.targetNotReadyDefers.set(message.id, { firstSeenAt: 0, reported: true });\n continue;\n }\n const count = ordinaryDeliveryAttempt(message.surface_error) ?? message.surface_attempts ?? 0;\n if (count === 0)\n continue;\n const prior = this.doorbellAttempts.get(message.id);\n const sentAt = Date.parse(message.surfaced_at ?? \"\") || 0;\n this.doorbellAttempts.set(message.id, {\n count: Math.max(prior?.count ?? 0, count),\n sentAt: Math.max(prior?.sentAt ?? 0, sentAt),\n reported: prior?.reported === true || message.surface_error === \"doorbell claim timeout after 3 attempts\",\n });\n }\n }\n rememberDoorbell(messageId) {\n const prior = this.doorbellAttempts.get(messageId);\n this.doorbellAttempts.set(messageId, { count: (prior?.count ?? 0) + 1, sentAt: Date.now(), reported: false });\n }\n pruneDoorbellAttempts(messages) {\n const pending = new Set(messages.map((message) => message.id));\n for (const messageId of this.doorbellAttempts.keys()) {\n if (!pending.has(messageId))\n this.doorbellAttempts.delete(messageId);\n }\n for (const messageId of this.targetNotReadyDefers.keys()) {\n if (!pending.has(messageId))\n this.targetNotReadyDefers.delete(messageId);\n }\n }\n async reportTimedOutDoorbells(messages) {\n for (const message of messages) {\n if (tagOf(message) === \"DOORBELL-TIMEOUT\")\n continue;\n // A surfaced-yet-queued doorbell that exhausted its retries still escalates: the agent never\n // claimed it. Only a message that left the queue (claimed/acked) is a terminal surface.\n if (message.surface_status === \"surfaced\" && message.status !== \"queued\")\n continue;\n const prior = this.doorbellAttempts.get(message.id);\n if (!prior || prior.count < 3 || prior.reported)\n continue;\n if (await this.recordSurfaceBestEffort(message, { status: \"failed\", error: \"doorbell claim timeout after 3 attempts\" })) {\n try {\n await this.options.relay.sendSessionMailbox(message.session, {\n tag: \"DOORBELL-TIMEOUT\",\n payload_json: `doorbell claim timeout after 3 attempts: ${message.id}`,\n to_roles: [\"moderator\"],\n });\n }\n catch (error) {\n if (!_isMissingModerator(error))\n throw error;\n this.log(\"doorbell_timeout_alert_skipped\", { messageId: message.id, reason: \"no_moderator\" });\n }\n this.doorbellAttempts.set(message.id, { ...prior, reported: true });\n }\n }\n }\n notifyWorkSurfaced(message) {\n try {\n this.options.onWorkSurfaced?.(message);\n }\n catch (error) {\n this.log(\"work_surfaced_hook_error\", { messageId: message.id, error: this.redact(errorMessage(error)) });\n }\n }\n async recordSurfaceBatch(messages, body) {\n for (const message of messages) {\n if (this.stopped)\n return;\n if (!await this.recordSurfaceBestEffort(message, body))\n return;\n }\n }\n async recordSurfaceBestEffort(message, body) {\n try {\n await this.options.relay.recordMailboxSurface(message.id, surfaceBody(message, body));\n return true;\n }\n catch (error) {\n if (error instanceof MailboxProtocolError)\n throw error;\n if (isAgentRetiredRelayError(error)) {\n const retired = await this.options.onTerminalAuthFailure?.(\"mailbox\", error);\n if (retired) {\n this.stopped = true;\n return false;\n }\n throw error;\n }\n this.log(\"surface_record_failed\", { messageId: message.id, error: this.redact(errorMessage(error)) });\n throw error;\n }\n }\n async ackIfLeased(message) {\n if (WORKFLOW_OBLIGATION_ACK_REQUIRED_TAGS.has(tagOf(message)))\n return;\n const token = message.lease_token?.trim();\n if (!token)\n return;\n await this.options.relay.ackMailbox(message.id, token);\n }\n log(event, fields) {\n this.logger(event, fields);\n }\n redact(text) {\n return redactSensitiveText(text, this.options.env ?? {});\n }\n}\nexport function formatWorkDoorbell(input, toDisplay) {\n const messages = Array.isArray(input) ? input : [input];\n const message = messages[0];\n if (!message)\n throw new Error(\"cannot format an empty work doorbell\");\n const sender = message.sender_agent_name ?? message.sender_role ?? \"unknown\";\n const tag = canonicalDoorbellTag(tagOf(message));\n // See engine/PROTOCOL.md: protocol doorbells are injected into a terminal, not product UI copy.\n return `[${sender}->${toDisplay}] ${tag} ${doorbellToken(message.id)} 📬 ${messages.length} new message(s). Read: sail mailbox claim. Conversational tags: answer with one sail reply — no ack owed. Obligation tags: complete them; their claim output prints the ack line.`;\n}\nfunction canonicalDoorbellTag(tag) {\n const printable = Array.from(tag, (char) => char >= \" \" && char <= \"~\" ? char : \" \").join(\"\");\n const compact = printable.trim().replace(/\\s+/g, \" \") || \"MAIL\";\n return compact.length <= DOORBELL_TAG_MAX_LENGTH ? compact : `${compact.slice(0, DOORBELL_TAG_MAX_LENGTH - 1)}…`;\n}\nfunction unsurfaced(messages) {\n return messages.filter((message) => message.surface_status !== \"surfaced\");\n}\nfunction doorbellToken(messageId) {\n return `#${messageId}#`;\n}\nexport function refreshCue(_cli, notices = []) {\n return [\n REFRESH_TAG,\n ...notices,\n \"Run `sail refresh` now to reload your role and instructions, then continue.\",\n ].join(\"\\n\\n\");\n}\n// Relay-composed provenance for rule-change refreshes (E2E F-2b): the relay is\n// the only writer able to put `notice` into a WORKFLOW-REFRESH payload (the\n// mailbox HTTP surface rejects client-supplied notices), so surfacing it in the\n// pasted cue gives the member an authenticated control-channel signal instead\n// of a self-declaration inside the rendered document.\nexport function refreshNotices(messages) {\n const notices = [];\n for (const message of messages) {\n const payload = message.payload_json;\n if (!payload || typeof payload !== \"object\" || Array.isArray(payload))\n continue;\n const notice = payload.notice;\n if (typeof notice === \"string\" && notice.trim() && !notices.includes(notice.trim())) {\n notices.push(notice.trim());\n }\n }\n return notices;\n}\nfunction saveContextCue(agentName, checkpointId) {\n return [\n \"Use the save_ctx skill to write .agent/context.md.\",\n \"After the file is complete, send this completion message:\",\n `printf 'checkpoint_id=${checkpointId}\\\\npath=.agent/context.md\\\\n' | sail mailbox send --to-agents ${agentName} --tag ${SAVE_CONTEXT_DONE_TAG}`,\n ].join(\"\\n\");\n}\nfunction checkpointIdFrom(message) {\n if (typeof message.payload_json !== \"string\")\n return null;\n const line = message.payload_json.split(\"\\n\").find((item) => item.startsWith(\"checkpoint_id=\"));\n const checkpointId = line?.slice(\"checkpoint_id=\".length).trim();\n return checkpointId || null;\n}\nfunction isControl(message) {\n return MONITOR_OWNED_MAILBOX_TAG_SET.has(tagOf(message));\n}\nfunction tagOf(message) {\n return message.tag || \"MAIL\";\n}\nfunction surfaceBody(message, body) {\n const token = message.lease_token?.trim();\n if (!token && message.status !== \"queued\" && message.status !== \"acked\")\n throw new MailboxProtocolError(\"mailbox message is missing lease_token\");\n if (!token)\n return body;\n return { ...body, lease_token: token };\n}\nfunction errorMessage(error) {\n return error instanceof Error ? error.message : String(error);\n}\nfunction ordinaryDeliveryAttempt(error) {\n const match = error?.match(/^doorbell delivery failed at ordinary attempt ([1-3]):/u);\n return match ? Number(match[1]) : null;\n}\nfunction _isMissingModerator(error) {\n return error instanceof RelayHttpError\n && error.status === 400\n && error.body.includes(\"no agents match\");\n}\n//# sourceMappingURL=mailbox.js.map",
|
|
35
35
|
"import path from \"node:path\";\nimport { execFile } from \"node:child_process\";\nimport { promisify } from \"node:util\";\nimport { redactSensitiveText } from \"../driver/index.js\";\nimport { RelayHttpError } from \"../relay/index.js\";\nimport { createManagedMaterializationState, materializeManagedFiles, } from \"../host/managed-materialization.js\";\nimport { CredentialGuardian } from \"../host/credential-guardian.js\";\nimport { DEFAULT_MAILBOX_LIMIT, MailboxSupervisor } from \"./mailbox.js\";\nimport { AgentRetirementSignalGuard, isAgentRetirementSignalRelayError, } from \"./retirement.js\";\nimport { ResolveSupervisor, tailLines } from \"./resolve.js\";\nimport { SUPPORTED_BACKFILL_ENGINES, TranscriptBackfillWorker } from \"./transcript-backfill.js\";\nimport { SUPPORTED_USAGE_ENGINES, UsageCollector } from \"./usage-collector.js\";\nimport { waitForWakeableTimeout } from \"./wait.js\";\nconst RESOLVE_CAPTURE_LINES = 200;\nconst SHORT_LIVED_EXIT_MS = 5_000;\nconst STARTUP_OBSERVATION_MS = 10_000;\nconst EXIT_DIAGNOSTIC_LINES = 200;\nconst MAX_EXIT_DIAGNOSTIC_CHARS = 4_000;\nconst CLI_VERSION_TIMEOUT_MS = 5_000;\nconst execFileAsync = promisify(execFile);\nexport class SupervisorRetiredDuringStartError extends Error {\n constructor() {\n super(\"agent retired during supervisor start\");\n this.name = \"SupervisorRetiredDuringStartError\";\n }\n}\nexport class AgentSupervisorRuntime {\n options;\n sleep;\n clock;\n logger;\n livenessIntervalMs;\n relaunchBackoffInitialMs;\n relaunchBackoffMaxMs;\n relaunchMaxFailures;\n retirementGuard;\n mailbox;\n resolve;\n backfill;\n usageCollector;\n credentialGuardian;\n managedMaterializationState;\n mailboxTask = null;\n livenessTask = null;\n resolveTask = null;\n backfillTask = null;\n usageTask = null;\n credentialTask = null;\n unsubscribeExit = null;\n wakeLiveness = null;\n lastDriverStartAt = null;\n shortLivedExitStreak = 0;\n startFailureAttempts = 0;\n cliVersion;\n stopped = false;\n relaunch = {\n attempts: 0,\n nextAttemptAt: 0,\n inFlight: false,\n givingUp: false,\n lastStatus: null,\n lastError: null,\n };\n constructor(options) {\n this.options = options;\n if (!options.agentName.trim())\n throw new Error(\"agentName is required\");\n this.sleep = options.sleep;\n this.clock = options.clock ?? Date.now;\n this.logger = options.logger ?? (() => { });\n this.livenessIntervalMs = options.livenessIntervalMs ?? 2000;\n this.relaunchBackoffInitialMs = options.relaunchBackoffInitialMs ?? 1000;\n this.relaunchBackoffMaxMs = options.relaunchBackoffMaxMs ?? 300_000;\n this.relaunchMaxFailures = options.relaunchMaxFailures ?? 5;\n this.retirementGuard = new AgentRetirementSignalGuard(this.retirementGuardOptions(options));\n this.managedMaterializationState = createManagedMaterializationState();\n this.backfill = this.buildBackfillWorker(options);\n this.usageCollector = this.buildUsageCollector(options);\n this.credentialGuardian = options.credentialGuard\n ? new CredentialGuardian({\n ...options.credentialGuard,\n ...(options.credentialSweepIntervalMs !== undefined ? { sweepIntervalMs: options.credentialSweepIntervalMs } : {}),\n ...(this.sleep ? { sleep: this.sleep } : {}),\n logger: this.logger,\n })\n : null;\n this.mailbox = new MailboxSupervisor({\n agentName: options.agentName,\n displayName: options.displayName,\n cli: options.cli,\n driver: options.driver,\n relay: options.relay,\n waitTimeoutSec: options.waitTimeoutSec,\n limit: options.mailboxLimit ?? DEFAULT_MAILBOX_LIMIT,\n backoffInitialMs: options.mailboxBackoffInitialMs,\n backoffMaxMs: options.mailboxBackoffMaxMs,\n sleep: this.sleep,\n logger: this.logger,\n env: options.startOptions.env,\n onTerminalAuthFailure: (reason, error) => this.handleRetirementSignal(reason, error),\n onRelaySuccess: () => this.recordRelaySuccess(),\n onWorkSurfaced: this.backfill ? (message) => this.backfill?.recordSurface(message) : undefined,\n onSync: (messages) => this.syncManagedMaterialization(messages),\n });\n this.resolve = this.supportsResolve()\n ? new ResolveSupervisor({\n agentName: options.agentName,\n tmuxSession: options.tmuxSession ?? \"\",\n relay: options.relay,\n driver: options.driver,\n relaunch: () => this.relaunchForResolve(),\n inspectExitDiagnosis: () => this.exitDiagnosisForResolve(),\n sleep: this.sleep,\n logger: this.logger,\n onTerminalAuthFailure: (reason, error) => this.handleRetirementSignal(reason, error),\n onRelaySuccess: () => this.recordRelaySuccess(),\n })\n : null;\n }\n exitDiagnosisForResolve() {\n if (!this._isModelCliMismatchGivingUp())\n return { diagnosis: null };\n return {\n reason: this.relaunch.reason,\n cli_version: this.relaunch.cliVersion ?? null,\n configured_model: this.relaunch.configuredModel ?? null,\n };\n }\n retirementGuardOptions(options) {\n const guard = { clock: this.clock };\n if (options.retirementAuthFailureThreshold !== undefined)\n guard.threshold = options.retirementAuthFailureThreshold;\n if (options.retirementAuthFailureWindowMs !== undefined)\n guard.windowMs = options.retirementAuthFailureWindowMs;\n if (options.retirementAuthFailureCooldownMs !== undefined)\n guard.cooldownMs = options.retirementAuthFailureCooldownMs;\n return guard;\n }\n // Resolve support requires a driver that can surface a live pane (tmux today). Gating on the optional\n // capturePane keeps non-tmux drivers from declaring a capability they cannot serve.\n supportsResolve() {\n return this.options.transport === \"tmux\" && typeof this.options.driver.capturePane === \"function\";\n }\n // Transcript backfill only applies to engines whose local logs we can parse (claude/codex) and only when\n // we know the session + workspace to scope discovery and route the REPLY. Otherwise the worker is absent.\n buildBackfillWorker(options) {\n if (!SUPPORTED_BACKFILL_ENGINES.has(options.cli) || !options.session || !options.startOptions.cwd)\n return null;\n return new TranscriptBackfillWorker({\n engine: options.cli,\n agentName: options.agentName,\n session: options.session,\n workspace: options.startOptions.cwd,\n relay: options.relay,\n transcriptRoots: transcriptBackfillRoots(options.startOptions.env),\n sleep: this.sleep,\n logger: this.logger,\n });\n }\n // Token-usage collection applies to the same claude/codex local-log engines as backfill, and likewise needs\n // the session + workspace to scope discovery and attribute the report. Otherwise the collector is absent.\n buildUsageCollector(options) {\n if (!SUPPORTED_USAGE_ENGINES.has(options.cli) || !options.session || !options.startOptions.cwd)\n return null;\n return new UsageCollector({\n engine: options.cli,\n agentName: options.agentName,\n session: options.session,\n workspace: options.startOptions.cwd,\n relay: options.relay,\n transcriptRoots: transcriptBackfillRoots(options.startOptions.env),\n sleep: this.sleep,\n logger: this.logger,\n });\n }\n async syncManagedMaterialization(messages) {\n if (this.options.cli !== \"claude\" && this.options.cli !== \"codex\") {\n throw new Error(\"managed materialization sync requires claude or codex\");\n }\n if (!this.options.captainId || !this.options.session) {\n throw new Error(\"managed materialization sync requires captainId and session\");\n }\n const result = await materializeManagedFiles({\n agentName: this.options.agentName,\n engine: this.options.cli,\n captainId: this.options.captainId,\n teamId: this.options.session,\n relay: this.options.relay,\n env: this.options.startOptions.env,\n state: this.managedMaterializationState,\n logger: this.logger,\n });\n this.logger(\"agent_managed_materialization_synced\", {\n agent_name: this.options.agentName,\n messages: messages.length,\n status: result.status,\n written: result.written,\n removed: result.removed,\n drifted: result.drifted,\n });\n }\n async start() {\n this.stopped = false;\n await this._startDriverWithRecovery();\n if (this.stopped) {\n await this.options.driver.stop();\n throw new SupervisorRetiredDuringStartError();\n }\n this.unsubscribeExit = this.options.driver.on(\"exit\", (event) => {\n void this.handleProcessDead(\"driver_exit\", event.type === \"exit\" ? event : undefined);\n });\n if (this.options.runLoops === false)\n return;\n this.mailboxTask = this.mailbox.runLoop();\n this.livenessTask = this.livenessLoop();\n this.resolveTask = this.resolve?.runLoop() ?? null;\n this.backfillTask = this.backfill?.runLoop() ?? null;\n this.usageTask = this.usageCollector?.runLoop() ?? null;\n this.credentialTask = this.credentialGuardian?.runLoop() ?? null;\n }\n async stop() {\n this.stopped = true;\n this.mailbox.stop();\n this.resolve?.stop();\n this.backfill?.stop();\n this.usageCollector?.stop();\n this.credentialGuardian?.stop();\n this.wakeLiveness?.();\n await this.options.relay.close?.();\n this.unsubscribeExit?.();\n this.unsubscribeExit = null;\n await this.options.driver.stop();\n await Promise.allSettled([this.mailboxTask, this.livenessTask, this.resolveTask, this.backfillTask, this.usageTask, this.credentialTask].filter(Boolean));\n this.mailboxTask = null;\n this.livenessTask = null;\n this.resolveTask = null;\n this.backfillTask = null;\n this.usageTask = null;\n this.credentialTask = null;\n }\n // A resolve-initiated relaunch (console action): capture the dying pane's tail, restart the driver\n // (startDriver re-fetches the resume handle + re-patches the session), and report the before/after\n // pane command, the new session handle, and the pre-relaunch capture tail (mirrors the Python listener).\n async relaunchForResolve() {\n // Atomically claim the relaunch slot BEFORE any await: stopping the driver emits \"exit\" and the\n // pre-stop capture awaits both yield, during which the exit/liveness-driven auto-relaunch\n // (handleProcessDead) could otherwise enter with inFlight=false and start a second driver. The\n // check+set is synchronous (no await between), so whichever path claims first wins; a concurrent\n // relaunch already in flight is refused here and surfaces as a failed resolve result.\n if (this.stopped)\n throw new Error(\"supervisor stopped\");\n if (this.relaunch.inFlight)\n throw new Error(\"relaunch already in flight\");\n this.relaunch.inFlight = true;\n try {\n const before = (await this.options.driver.paneCommand?.()) ?? null;\n const captureTail = this.options.driver.capturePane\n ? tailLines(await this.options.driver.capturePane({ scrollback: true }), RESOLVE_CAPTURE_LINES)\n : \"\";\n await this.options.driver.stop();\n // A SIGTERM / runtime.stop() may have landed during the awaits above (it kills the session). Do\n // NOT recreate it: a stopped supervisor must not leave a restarted driver behind. startDriver also\n // re-checks stopped internally (the stop can land during its monitor fetch); re-check here so a\n // stop landing inside startDriver surfaces as a failed relaunch rather than a false success.\n if (this.stopped)\n throw new Error(\"supervisor stopped during relaunch\");\n await this._startDriverWithRecovery(\"rebuilt\");\n // startDriver has returned, so the session is deterministically either created or not. If a stop\n // landed during it (the in-flight driver.start window the pre-start guard cannot cover), the session\n // may have been recreated — stop it here before failing, so a stopped supervisor leaves none behind.\n // This is a bounded sequential cleanup, not a best-effort race guard.\n if (this.stopped) {\n await this.options.driver.stop();\n throw new Error(\"supervisor stopped during relaunch\");\n }\n if (this._isModelCliMismatchGivingUp()) {\n throw new Error(\"model CLI mismatch prevents resolve relaunch\");\n }\n const after = (await this.options.driver.paneCommand?.()) ?? null;\n const handle = this.options.driver.getSessionHandle?.() ?? null;\n // Clean success: clear inFlight + reset backoff (mirrors handleProcessDead's success reset). Done\n // last so the slot stays claimed across every await above.\n this.shortLivedExitStreak = 0;\n this.startFailureAttempts = 0;\n this.relaunch = { attempts: 0, nextAttemptAt: 0, inFlight: false, givingUp: false, lastStatus: \"relaunched\", lastError: null };\n return { before_pane_command: before, after_pane_command: after, session_handle: handle, capture_tail: captureTail };\n }\n catch (error) {\n this.relaunch.inFlight = false;\n throw error;\n }\n }\n async runLivenessOnce() {\n const liveness = await this.options.driver.isAlive();\n if (this._isModelCliMismatchGivingUp())\n return liveness;\n if (liveness.processAlive)\n await this.checkLiveModelMismatch();\n if (!liveness.processAlive)\n await this.handleProcessDead(\"process_dead\");\n return liveness;\n }\n relaunchState() {\n return { ...this.relaunch };\n }\n async livenessLoop() {\n while (!this.stopped) {\n await this.waitForLivenessInterval();\n if (this.stopped)\n return;\n try {\n await this.runLivenessOnce();\n }\n catch (error) {\n this.log(\"liveness_error\", { error: this.redact(errorMessage(error)) });\n }\n }\n }\n async waitForLivenessInterval() {\n await waitForWakeableTimeout(this.livenessIntervalMs, (wake) => { this.wakeLiveness = wake; }, this.sleep);\n }\n async startDriver(lifecycleOverride) {\n const monitor = await this.fetchMonitorBestEffort();\n // Shutdown may have begun during the monitor fetch (e.g. SIGTERM mid-relaunch). Never (re)create a\n // driver/session once stopped — otherwise a stopped supervisor leaves a restarted session behind.\n if (this.stopped)\n return null;\n const resumeHandle = monitor?.should_resume && monitor.session_handle && this.options.driver.capabilities.resume\n ? monitor.session_handle\n : undefined;\n await this.options.driver.start({ ...this.options.startOptions, resumeHandle });\n this.lastDriverStartAt = this.clock();\n const lifecycle = lifecycleOverride ?? this.options.driver.lastStartLifecycle?.() ?? \"created\";\n this._logMemberSessionStarted(lifecycle);\n await this.checkLiveModelMismatch();\n await this.patchAgentSessionBestEffort(resumeHandle);\n return lifecycle;\n }\n _logMemberSessionStarted(lifecycle) {\n const sessionHandle = this.options.driver.getSessionHandle?.();\n this.log(\"member_session_started\", {\n agent: this.options.agentName,\n lifecycle,\n transport: this.options.transport,\n ...(sessionHandle ? { session_handle: sessionHandle } : {}),\n });\n }\n async _startDriverWithRecovery(lifecycleOverride) {\n const lifecycle = await this.startDriver(lifecycleOverride);\n if (lifecycle === null || this.stopped)\n return;\n if (this._skipRecoveryForModelMismatch(lifecycle))\n return;\n try {\n await this.mailbox.deliverRefreshCue();\n this.log(\"member_session_recovery_cue_delivered\", { agent: this.options.agentName, lifecycle });\n }\n catch (error) {\n await this._handleRecoveryFailure(error, lifecycle);\n }\n }\n _skipRecoveryForModelMismatch(lifecycle) {\n if (!this._isModelCliMismatchGivingUp())\n return false;\n this.log(\"member_session_recovery_skipped\", {\n agent: this.options.agentName,\n lifecycle,\n reason: \"model_cli_mismatch\",\n });\n return true;\n }\n async _handleRecoveryFailure(error, lifecycle) {\n await this.checkLiveModelMismatch();\n if (this._skipRecoveryForModelMismatch(lifecycle))\n return;\n // Capture BEFORE the fail-closed stop below destroys the session — a member CLI\n // that exits at launch (auth/root/model errors) leaves its reason only on the\n // pane, and without it the operator sees just a generic cue-delivery error.\n const paneTail = await this._recoveryPaneTail();\n this.log(\"member_session_recovery_failed\", {\n agent: this.options.agentName,\n lifecycle,\n error: this.redact(errorMessage(error)),\n ...(paneTail ? { pane_tail: this.redact(paneTail) } : {}),\n });\n await this.options.driver.stop();\n throw error;\n }\n async _recoveryPaneTail() {\n if (!this.options.driver.capturePane)\n return null;\n try {\n return tailLines(await this.options.driver.capturePane({ scrollback: true }), EXIT_DIAGNOSTIC_LINES);\n }\n catch {\n return null; // intentional — diagnostics only; the session may already be gone\n }\n }\n async checkLiveModelMismatch() {\n if (!this.options.driver.capturePane || this.relaunch.givingUp)\n return;\n if (this.lastDriverStartAt === null || this.clock() - this.lastDriverStartAt >= STARTUP_OBSERVATION_MS)\n return;\n let diagnostics;\n try {\n diagnostics = await this.exitDiagnostics(\"startup_model_check\", undefined, 0);\n }\n catch {\n return;\n }\n if (!this._modelCliMismatch(diagnostics))\n return;\n this.relaunch = this._givingUpState(diagnostics, {\n reason: \"model_cli_mismatch\",\n cliVersion: await this._cliVersion(),\n configuredModel: this.options.model?.trim() || null,\n });\n this.log(\"relaunch_giving_up\", {\n reason: \"model_cli_mismatch\",\n error: this.relaunch.lastError,\n cli_version: this.relaunch.cliVersion,\n configured_model: this.relaunch.configuredModel,\n });\n }\n async handleProcessDead(reason, event) {\n if (this.stopped || this.relaunch.inFlight || this.relaunch.givingUp)\n return;\n const now = this.clock();\n if (now < this.relaunch.nextAttemptAt)\n return;\n const runtimeMs = this.lastDriverStartAt === null ? null : Math.max(0, now - this.lastDriverStartAt);\n this.relaunch.inFlight = true;\n const diagnostics = await this.exitDiagnostics(reason, event, runtimeMs);\n const modelMismatch = this._modelCliMismatch(diagnostics);\n if (modelMismatch) {\n this.relaunch = this._givingUpState(diagnostics, {\n reason: \"model_cli_mismatch\",\n cliVersion: await this._cliVersion(),\n configuredModel: this.options.model?.trim() || null,\n });\n this.log(\"relaunch_giving_up\", {\n reason: \"model_cli_mismatch\",\n error: this.relaunch.lastError,\n cli_version: this.relaunch.cliVersion,\n configured_model: this.relaunch.configuredModel,\n });\n return;\n }\n const shortLivedExit = runtimeMs !== null && runtimeMs < SHORT_LIVED_EXIT_MS;\n this.shortLivedExitStreak = shortLivedExit\n ? this.shortLivedExitStreak + 1\n : (runtimeMs === null ? this.shortLivedExitStreak : 0);\n if (shortLivedExit && this.shortLivedExitStreak >= this.relaunchMaxFailures) {\n this.relaunch = this._givingUpState(diagnostics);\n this.log(\"relaunch_giving_up\", {\n reason,\n attempts: this.shortLivedExitStreak,\n runtime_ms: runtimeMs,\n error: this.relaunch.lastError,\n });\n return;\n }\n try {\n await this._startDriverWithRecovery(\"rebuilt\");\n if (this.relaunch.givingUp)\n return;\n this.startFailureAttempts = 0;\n this.relaunch = {\n attempts: this.relaunchAttempts(),\n shortLivedExitStreak: this.shortLivedExitStreak,\n startFailureAttempts: this.startFailureAttempts,\n nextAttemptAt: 0,\n inFlight: false,\n givingUp: false,\n lastStatus: \"relaunched\",\n lastError: shortLivedExit ? diagnostics.message : null,\n ...(shortLivedExit ? diagnostics.fields : {}),\n };\n this.log(\"relaunch_success\", { reason, ...(shortLivedExit ? { attempts: this.shortLivedExitStreak, runtime_ms: runtimeMs } : {}) });\n }\n catch (error) {\n this.lastDriverStartAt = null;\n this.startFailureAttempts += 1;\n const attempts = this.relaunchAttempts();\n const givingUp = this.startFailureAttempts >= this.relaunchMaxFailures;\n const lastError = this.redact([errorMessage(error), diagnostics.message].filter(Boolean).join(\"; \")).slice(0, MAX_EXIT_DIAGNOSTIC_CHARS);\n this.relaunch = {\n attempts,\n shortLivedExitStreak: this.shortLivedExitStreak,\n startFailureAttempts: this.startFailureAttempts,\n givingUp,\n inFlight: false,\n nextAttemptAt: givingUp ? 0 : now + Math.min(this.relaunchBackoffMaxMs, this.relaunchBackoffInitialMs * 2 ** (attempts - 1)),\n lastStatus: givingUp ? \"giving_up\" : \"failed\",\n lastError,\n ...diagnostics.fields,\n };\n this.log(givingUp ? \"relaunch_giving_up\" : \"relaunch_failed\", { reason, attempts, error: this.relaunch.lastError });\n }\n }\n relaunchAttempts() {\n return Math.max(this.shortLivedExitStreak, this.startFailureAttempts);\n }\n _givingUpState(diagnostics, details = {}) {\n return {\n attempts: this.relaunchAttempts(),\n shortLivedExitStreak: this.shortLivedExitStreak,\n startFailureAttempts: this.startFailureAttempts,\n nextAttemptAt: 0,\n inFlight: false,\n givingUp: true,\n lastStatus: \"giving_up\",\n lastError: diagnostics.message,\n ...diagnostics.fields,\n ...details,\n };\n }\n _modelCliMismatch(diagnostics) {\n const output = normalizeCliDiagnostic(diagnostics.message);\n if (this.options.cli === \"codex\")\n return /model is not supported when using codex/i.test(output);\n if (this.options.cli === \"claude\") {\n return /issue with the selected model\\s*\\([^)]*\\).*may not exist or you may not have access/i.test(output);\n }\n return false;\n }\n _isModelCliMismatchGivingUp() {\n return this.relaunch.givingUp && this.relaunch.reason === \"model_cli_mismatch\";\n }\n async _cliVersion() {\n if (this.cliVersion !== undefined)\n return this.cliVersion;\n try {\n this.cliVersion = await (this.options.cliVersionProbe?.(this.options.cli) ?? readCliVersion(this.options.cli, this.options.startOptions.env));\n }\n catch (error) {\n this.cliVersion = null;\n this.log(\"cli_version_probe_failed\", { cli: this.options.cli, error: this.redact(errorMessage(error)) });\n }\n return this.cliVersion;\n }\n async exitDiagnostics(reason, event, runtimeMs) {\n const rawTail = await this.captureExitTail();\n const diagnosticTail = rawTail ? this.redact(rawTail).slice(-MAX_EXIT_DIAGNOSTIC_CHARS) : null;\n const prefix = this.redact([\n `${reason} after ${runtimeMs === null ? \"unknown\" : runtimeMs}ms`,\n `exit_code=${event?.code ?? \"unknown\"}`,\n `signal=${event?.signal ?? \"unknown\"}`,\n event?.reason ? `reason=${event.reason}` : null,\n ].filter((part) => Boolean(part)).join(\" \"));\n return {\n message: _exitDiagnosticMessage(prefix, diagnosticTail),\n fields: {\n lastExitCode: event?.code ?? null,\n lastExitSignal: event?.signal ?? null,\n lastExitReason: event?.reason ?? reason,\n lastRuntimeMs: runtimeMs,\n diagnosticTail,\n },\n };\n }\n async captureExitTail() {\n if (!this.options.driver.capturePane)\n return \"\";\n try {\n return tailLines(await this.options.driver.capturePane({ scrollback: true }), EXIT_DIAGNOSTIC_LINES);\n }\n catch (error) {\n return `pane capture failed: ${errorMessage(error)}`;\n }\n }\n async fetchMonitorBestEffort() {\n try {\n const monitor = await this.options.relay.getAgentMonitor(this.options.agentName);\n this.recordRelaySuccess();\n return monitor;\n }\n catch (error) {\n if (isAgentRetirementSignalRelayError(\"monitor_fetch\", error)) {\n if (await this.handleRetirementSignal(\"monitor_fetch\", error))\n return null;\n this.log(\"monitor_fetch_auth_failure_retry\", { status: error.status });\n return null;\n }\n this.log(\"monitor_fetch_failed\", { error: this.redact(errorMessage(error)) });\n return null;\n }\n }\n async patchAgentSessionBestEffort(resumeHandle) {\n const handle = this.options.driver.getSessionHandle?.() ?? resumeHandle ?? null;\n const restartCommand = this.options.restartCommand ?? (this.options.startOptions.command.length ? formatRestartCommand(this.options.startOptions.command) : undefined);\n try {\n await this.options.relay.patchAgent(this.options.agentName, {\n engine: this.options.cli,\n transport: this.options.transport,\n cwd: this.options.startOptions.cwd,\n ...(restartCommand === undefined ? {} : { restart_command: restartCommand }),\n session_handle: handle,\n });\n this.recordRelaySuccess();\n }\n catch (error) {\n if (isAgentRetirementSignalRelayError(\"agent_session_patch\", error)) {\n if (await this.handleRetirementSignal(\"agent_session_patch\", error))\n return;\n this.log(\"agent_session_patch_auth_failure_retry\", { status: error.status });\n return;\n }\n this.log(\"agent_session_patch_failed\", { error: this.redact(errorMessage(error)) });\n }\n }\n recordRelaySuccess() {\n this.retirementGuard.recordSuccess();\n }\n async handleRetirementSignal(reason, error) {\n const decision = this.retirementGuard.recordFailure(reason, error);\n if (!decision)\n return false;\n this.log(\"agent_retirement_auth_signal\", {\n reason: decision.reason,\n status: decision.status,\n count: decision.count,\n threshold: decision.threshold,\n windowMs: decision.windowMs,\n cooldownMs: decision.cooldownMs,\n cooldownSuppressed: decision.cooldownSuppressed,\n retire: decision.retire,\n heuristic: !decision.retire,\n });\n if (decision.retire) {\n await this.retireSelf(reason, error);\n return true;\n }\n if (decision.stop) {\n await this.stopForAuthFailure(reason, error);\n return true;\n }\n return false;\n }\n async stopForAuthFailure(reason, error) {\n if (this.stopped)\n return;\n const status = error instanceof RelayHttpError ? error.status : 0;\n this.stopped = true;\n this.stopLocalLoopsForRetirement();\n this.log(\"agent_supervision_stopped_auth_failure\", { agent: this.options.agentName, reason, status });\n await this.stopDriverForRetirement();\n }\n async retireSelf(reason, error) {\n if (this.stopped)\n return;\n const status = error instanceof RelayHttpError ? error.status : 0;\n this.stopped = true;\n this.stopLocalLoopsForRetirement();\n this.log(\"agent_retired_self_clean_start\", { agent: this.options.agentName, reason, status });\n await this.stopDriverForRetirement();\n await this.notifyRetired({ agentName: this.options.agentName, reason, status });\n this.log(\"agent_retired_self_clean_done\", { agent: this.options.agentName, reason, status });\n }\n stopLocalLoopsForRetirement() {\n this.mailbox.stop();\n this.resolve?.stop();\n this.backfill?.stop();\n this.usageCollector?.stop();\n this.credentialGuardian?.stop();\n this.wakeLiveness?.();\n this.unsubscribeExit?.();\n this.unsubscribeExit = null;\n }\n async stopDriverForRetirement() {\n try {\n await this.options.driver.stop();\n }\n catch (stopError) {\n this.log(\"agent_retired_driver_stop_failed\", { error: this.redact(errorMessage(stopError)) });\n }\n }\n async notifyRetired(event) {\n try {\n await this.options.onRetired?.(event);\n }\n catch (callbackError) {\n this.log(\"agent_retired_callback_failed\", { error: this.redact(errorMessage(callbackError)) });\n }\n }\n log(event, fields) {\n this.logger(event, fields);\n }\n redact(text) {\n return redactSensitiveText(text, this.options.startOptions.env);\n }\n}\nfunction _exitDiagnosticMessage(prefix, diagnosticTail) {\n if (!diagnosticTail)\n return prefix.slice(0, MAX_EXIT_DIAGNOSTIC_CHARS);\n const suffix = `pane_tail=${diagnosticTail.slice(-(MAX_EXIT_DIAGNOSTIC_CHARS - 10))}`;\n return `${prefix.slice(0, Math.max(0, MAX_EXIT_DIAGNOSTIC_CHARS - suffix.length - 1))} ${suffix}`.trim();\n}\nasync function readCliVersion(cli, env) {\n const { stdout, stderr } = await execFileAsync(cli, [\"--version\"], {\n env: { ...process.env, ...env },\n timeout: CLI_VERSION_TIMEOUT_MS,\n maxBuffer: 4_096,\n });\n return `${stdout}\\n${stderr}`.trim().split(/\\r?\\n/, 1)[0] || null;\n}\nfunction normalizeCliDiagnostic(output) {\n return output.replace(/\\u001B\\[[0-?]*[ -/]*[@-~]/gu, \"\").replace(/\\s+/gu, \" \").trim();\n}\nfunction transcriptBackfillRoots(env) {\n const roots = {};\n const claudeConfigDir = nonEmptyEnv(env.CLAUDE_CONFIG_DIR);\n const codexHome = nonEmptyEnv(env.CODEX_HOME);\n if (claudeConfigDir)\n roots.claudeRoot = path.join(claudeConfigDir, \"projects\");\n if (codexHome)\n roots.codexRoot = path.join(codexHome, \"sessions\");\n return roots;\n}\nfunction nonEmptyEnv(value) {\n return value && value.trim() ? value : null;\n}\nfunction errorMessage(error) {\n return error instanceof Error ? error.message : String(error);\n}\nfunction formatRestartCommand(command) {\n return command.map((part) => (/^[A-Za-z0-9_./:=@%+-]+$/.test(part) ? part : `'${part.replaceAll(\"'\", \"'\\\\''\")}'`)).join(\" \");\n}\n//# sourceMappingURL=runtime.js.map",
|
|
36
36
|
"import { createHash, randomBytes } from \"node:crypto\";\nimport { constants as fsConstants } from \"node:fs\";\nimport { lstat, mkdir, open, readdir, rename, rm } from \"node:fs/promises\"; // intentional — materialization manages internal agent-home files, not CLI text parameters\nimport { homedir } from \"node:os\";\nimport path from \"node:path\";\nimport { agentSandboxHome } from \"./memory-stub.js\";\nconst MANIFEST_FILE = \".sailorbridge-managed-manifest.json\";\nconst BANNER_PREFIX = \"# SailorBridge managed file\";\nconst HASH_RE = /^sha256:[a-f0-9]{64}$/u;\nconst BANNER_FIELD_RE = /^[\\x21-\\x7e]+$/u;\nconst TEMP_OPEN_FLAGS = fsConstants.O_WRONLY | fsConstants.O_CREAT | fsConstants.O_EXCL | fsConstants.O_NOFOLLOW;\nconst TEMP_OPEN_RETRIES = 8;\nexport function createManagedMaterializationState() {\n return { cursors: new Map() };\n}\nexport async function materializeManagedFiles(options) {\n const captainId = _captainId(options.captainId);\n const engine = _engine(options.engine);\n const homeDir = _materializationHomeDir(options.agentName, engine, options.env ?? process.env);\n const stateKey = `${captainId}/${options.teamId}/${options.agentName}/${engine}`;\n const manifest = await _readManifest(homeDir, options);\n const cursor = options.state?.cursors.get(stateKey) ?? (manifest.version_cursor || undefined);\n const response = await _fetchManagedMaterialization(options, captainId, engine, cursor);\n if (response.status === \"not_modified\") {\n const drifted = await _scanManifestDrift(homeDir, manifest, options, engine, captainId, response.cursor);\n options.state?.cursors.set(stateKey, response.cursor);\n return { status: \"not_modified\", written: 0, removed: 0, drifted, cursor: response.cursor };\n }\n const result = await _applyChanged(homeDir, manifest, response, options, engine, captainId);\n options.state?.cursors.set(stateKey, result.cursor);\n return result;\n}\nasync function _fetchManagedMaterialization(options, captainId, engine, cursor) {\n const first = await options.relay.fetchManagedMaterialization(captainId, options.teamId, options.agentName, engine, cursor);\n if (first.status === \"not_modified\" || !first.has_more)\n return first;\n const files = [...first.files];\n const deleted = [...(first.deleted ?? [])];\n let pageCursor = first.next_cursor;\n while (pageCursor) {\n const page = await options.relay.fetchManagedMaterialization(captainId, options.teamId, options.agentName, engine, cursor, pageCursor);\n if (page.status === \"not_modified\")\n throw new Error(\"managed materialization page cannot be not_modified\");\n if (page.cursor !== first.cursor)\n throw new Error(\"managed materialization cursor changed during pagination\");\n files.push(...page.files);\n deleted.push(...(page.deleted ?? []));\n if (!page.has_more)\n return { status: \"changed\", cursor: first.cursor, files, deleted };\n pageCursor = page.next_cursor;\n }\n throw new Error(\"managed materialization next_cursor is required when has_more is true\");\n}\nexport async function cleanupManagedMaterialization(options = {}) {\n const root = options.homeDir ?? path.join(_stateRoot(options.env ?? process.env), \"agents\");\n let removed = 0;\n let drifted = 0;\n for (const manifestPath of await _findManifests(root, options)) {\n const homeDir = path.dirname(manifestPath);\n const manifest = await _readManifest(homeDir, options);\n const remaining = {};\n for (const [relativePath, entry] of Object.entries(manifest.files)) {\n const filePath = _managedPath(homeDir, relativePath);\n const current = await _readManagedPath(homeDir, filePath, options);\n if (current.type === \"missing\")\n continue;\n if (current.type !== \"text\" || _hash(current.text) !== entry.materialized_hash) {\n remaining[relativePath] = entry;\n drifted += 1;\n options.logger?.(\"host_managed_cleanup_drift_kept\", { path: relativePath });\n continue;\n }\n await _removeManagedFile(homeDir, filePath, options);\n removed += 1;\n }\n if (Object.keys(remaining).length === 0)\n await _removeManagedFile(homeDir, manifestPath, options);\n else\n await _writeFileAtomic(homeDir, manifestPath, JSON.stringify({ ...manifest, files: remaining }, null, 2) + \"\\n\", 0o600, options);\n }\n return { removed, drifted };\n}\nasync function _applyChanged(homeDir, manifest, response, options, engine, captainId) {\n for (const file of response.files)\n _validateFile(file);\n _validateBannerField(\"cursor\", response.cursor);\n _validateDeletedFiles(response.deleted ?? [], response.files);\n const nextFiles = { ...manifest.files };\n const mutations = [];\n let written = 0;\n let drifted = 0;\n for (const file of response.files) {\n const current = await _readManagedPath(homeDir, _managedPath(homeDir, file.relative_path), options);\n const previous = manifest.files[file.relative_path];\n if (previous && current.type === \"missing\") {\n drifted += await _reportDrift(options, engine, captainId, response.cursor, file, _driftLocal(current), previous);\n nextFiles[file.relative_path] = previous;\n continue;\n }\n if (current.type !== \"missing\" && previous && (current.type !== \"text\" || _hash(current.text) !== previous.materialized_hash)) {\n drifted += await _reportDrift(options, engine, captainId, response.cursor, file, _driftLocal(current), previous);\n nextFiles[file.relative_path] = previous;\n continue;\n }\n if (current.type !== \"missing\" && !previous) {\n drifted += await _reportDrift(options, engine, captainId, response.cursor, file, _driftLocal(current), null);\n continue;\n }\n const materialized = _managedText(file);\n const materializedHash = _hash(materialized);\n nextFiles[file.relative_path] = {\n kind: file.kind,\n content_hash: file.content_hash,\n materialized_hash: materializedHash,\n version: file.version,\n };\n if (current.type === \"text\" && current.text === materialized)\n continue;\n mutations.push({\n type: \"write\",\n filePath: _managedPath(homeDir, file.relative_path),\n content: materialized,\n previous: current.type === \"text\" ? current.text : null,\n });\n written += 1;\n }\n const deleted = await _planDeleted(homeDir, response.deleted ?? [], nextFiles, mutations, options, engine, captainId, response.cursor);\n const removed = deleted.removed;\n drifted += deleted.drifted;\n const nextCursor = drifted === 0 ? response.cursor : manifest.version_cursor;\n const next = { manifest_version: 1, version_cursor: nextCursor, files: nextFiles };\n await _applyFileMutations(homeDir, mutations, path.join(homeDir, MANIFEST_FILE), JSON.stringify(next, null, 2) + \"\\n\", options);\n return { status: \"changed\", written, drifted, removed, cursor: nextCursor };\n}\nasync function _planDeleted(homeDir, deleted, nextFiles, mutations, options, engine, captainId, cursor) {\n let removed = 0;\n let drifted = 0;\n for (const file of deleted) {\n const relativePath = file.relative_path;\n const entry = nextFiles[relativePath];\n if (!entry)\n continue;\n const filePath = _managedPath(homeDir, relativePath);\n const current = await _readManagedPath(homeDir, filePath, options);\n if (current.type !== \"missing\" && (current.type !== \"text\" || _hash(current.text) !== entry.materialized_hash)) {\n drifted += await _reportDrift(options, engine, captainId, cursor, {\n kind: entry.kind,\n relative_path: relativePath,\n content: \"\",\n content_hash: entry.content_hash,\n version: entry.version,\n }, _driftLocal(current), entry);\n continue;\n }\n if (current.type === \"text\") {\n mutations.push({ type: \"delete\", filePath, previous: current.text });\n removed += 1;\n }\n delete nextFiles[relativePath];\n }\n return { removed, drifted };\n}\nasync function _scanManifestDrift(homeDir, manifest, options, engine, captainId, cursor) {\n let drifted = 0;\n for (const [relativePath, entry] of Object.entries(manifest.files)) {\n const current = await _readManagedPath(homeDir, _managedPath(homeDir, relativePath), options);\n if (current.type === \"text\" && _hash(current.text) === entry.materialized_hash)\n continue;\n drifted += await _reportDrift(options, engine, captainId, cursor, {\n kind: entry.kind,\n relative_path: relativePath,\n content: _driftLocal(current).localContent,\n content_hash: entry.content_hash,\n version: entry.version,\n }, _driftLocal(current), entry);\n }\n return drifted;\n}\nasync function _reportDrift(options, engine, captainId, cursor, file, local, previous) {\n const body = {\n agent_name: options.agentName,\n engine,\n kind: file.kind,\n relative_path: file.relative_path,\n version_cursor: cursor,\n expected_hash: previous?.materialized_hash ?? null,\n head_hash: file.content_hash,\n local_hash: local.localHash,\n local_content: local.localContent,\n actions: [\"ingest-new-version\", \"restore-managed-version\"],\n };\n await options.relay.reportManagedMaterializationDrift(captainId, options.teamId, body);\n options.logger?.(\"host_managed_materialization_drift\", { agent_name: options.agentName, engine, path: file.relative_path });\n return 1;\n}\nasync function _applyFileMutations(homeDir, mutations, manifestPath, manifestContent, deps) {\n const applied = [];\n try {\n for (const mutation of mutations) {\n if (mutation.type === \"write\")\n await _writeFileAtomic(homeDir, mutation.filePath, mutation.content, 0o600, deps);\n else\n await _removeManagedFile(homeDir, mutation.filePath, deps);\n applied.push(mutation);\n }\n await _writeFileAtomic(homeDir, manifestPath, manifestContent, 0o600, deps);\n }\n catch (error) {\n await _rollbackFileMutations(homeDir, applied, deps);\n throw error;\n }\n}\nasync function _rollbackFileMutations(homeDir, applied, deps) {\n for (const mutation of applied.reverse()) {\n try {\n if (mutation.previous === null)\n await _removeManagedFile(homeDir, mutation.filePath, deps);\n else\n await _writeFileAtomic(homeDir, mutation.filePath, mutation.previous, 0o600, deps);\n }\n catch {\n // Preserve the original materialization error while still attempting every rollback step.\n }\n }\n}\nfunction _managedText(file) {\n const banner = [\n `${BANNER_PREFIX}: ${file.kind}`,\n `# version: ${file.version}`,\n `# content-hash: ${file.content_hash}`,\n \"# Generated by SailorBridge RAG managed materialization. Local edits create a drift card.\",\n ].join(\"\\n\");\n if (file.kind === \"skill\" && file.content.startsWith(\"---\\n\")) {\n return `---\\n${banner}\\n${file.content.slice(4)}`;\n }\n return `${banner}\\n\\n${file.content}`;\n}\nfunction _stripBanner(content) {\n if (content.startsWith(`---\\n${BANNER_PREFIX}`)) {\n const lines = content.split(\"\\n\");\n const payloadStart = lines[4]?.startsWith(\"# cursor: \") ? 6 : 5;\n return [\"---\", ...lines.slice(payloadStart)].join(\"\\n\");\n }\n if (!content.startsWith(BANNER_PREFIX))\n return content;\n const marker = \"\\n\\n\";\n const index = content.indexOf(marker);\n return index === -1 ? \"\" : content.slice(index + marker.length);\n}\nfunction _payloadHash(content) {\n return _hash(_stripBanner(content));\n}\nfunction _hash(content) {\n return `sha256:${createHash(\"sha256\").update(content).digest(\"hex\")}`;\n}\nfunction _validateFile(file) {\n if (file.kind !== \"skill\" && file.kind !== \"command\")\n throw new Error(\"managed file kind must be skill or command\");\n _validateBannerField(\"version\", file.version);\n if (!HASH_RE.test(file.content_hash))\n throw new Error(\"managed file content_hash must be sha256:<hex>\");\n if (_hash(file.content) !== file.content_hash)\n throw new Error(`managed file hash mismatch: ${file.relative_path}`);\n _validateRelativePath(file.relative_path);\n _validateKindPath(file);\n}\nfunction _validateBannerField(field, value) {\n if (!value.trim())\n throw new Error(`managed file ${field} is required`);\n if (value !== value.trim() || !BANNER_FIELD_RE.test(value)) {\n throw new Error(`managed file ${field} must be printable ASCII without whitespace`);\n }\n}\nfunction _validateDeletedFiles(deleted, files) {\n const changedPaths = new Set(files.map((file) => file.relative_path));\n for (const file of deleted) {\n if (file.kind !== \"skill\" && file.kind !== \"command\")\n throw new Error(\"managed deleted file kind must be skill or command\");\n _validateRelativePath(file.relative_path);\n _validateKindPath(file);\n if (changedPaths.has(file.relative_path))\n throw new Error(\"managed file cannot be both changed and deleted\");\n }\n}\nfunction _managedPath(homeDir, relativePath) {\n _validateRelativePath(relativePath);\n const resolved = path.resolve(homeDir, relativePath);\n const root = path.resolve(homeDir);\n if (resolved !== root && resolved.startsWith(`${root}${path.sep}`))\n return resolved;\n throw new Error(\"managed file path escapes agent sandbox\");\n}\nfunction _validateKindPath(file) {\n if (file.kind === \"skill\" && !file.relative_path.startsWith(\"skills/\")) {\n throw new Error(\"managed skill relative_path must be under skills/\");\n }\n if (file.kind === \"command\" && !file.relative_path.startsWith(\"commands/\")) {\n throw new Error(\"managed command relative_path must be under commands/\");\n }\n}\nfunction _validateRelativePath(relativePath) {\n if (!relativePath || path.isAbsolute(relativePath) || relativePath.split(/[\\\\/]/u).some((part) => !part || part === \".\" || part === \"..\")) {\n throw new Error(\"managed file relative_path must stay inside the agent sandbox\");\n }\n}\nasync function _readManifest(homeDir, deps) {\n const text = await _readTextIfExists(homeDir, path.join(homeDir, MANIFEST_FILE), deps);\n if (!text)\n return { manifest_version: 1, version_cursor: \"\", files: {} };\n const parsed = JSON.parse(text);\n if (parsed.manifest_version !== 1 || typeof parsed.version_cursor !== \"string\" || !parsed.files || typeof parsed.files !== \"object\") {\n throw new Error(\"managed materialization manifest is invalid\");\n }\n return parsed;\n}\nasync function _readTextIfExists(homeDir, filePath, deps) {\n const current = await _readManagedPath(homeDir, filePath, deps);\n if (current.type === \"missing\")\n return null;\n if (current.type === \"text\")\n return current.text;\n throw new Error(\"managed materialization refuses to read non-regular managed path\");\n}\nasync function _readManagedPath(homeDir, filePath, deps) {\n if (!await _verifyManagedParentDirectory(homeDir, filePath, deps))\n return { type: \"missing\" };\n try {\n const stats = await (deps.lstat ?? lstat)(filePath);\n if (stats.isSymbolicLink())\n return { type: \"symlink\" };\n if (!stats.isFile())\n return { type: \"special\" };\n }\n catch (error) {\n if (error.code === \"ENOENT\")\n return { type: \"missing\" };\n throw error;\n }\n return await _readRegularTextNoFollow(filePath, deps);\n}\nasync function _readRegularTextNoFollow(filePath, deps) {\n try {\n const handle = await (deps.open ?? open)(filePath, fsConstants.O_RDONLY | fsConstants.O_NOFOLLOW);\n try {\n return { type: \"text\", text: await handle.readFile(\"utf8\") }; // intentional — inspect a no-follow managed materialization file\n }\n finally {\n await handle.close();\n }\n }\n catch (error) {\n const code = error.code;\n if (code === \"ENOENT\")\n return { type: \"missing\" };\n if (code === \"ELOOP\")\n return { type: \"symlink\" };\n throw error;\n }\n}\nfunction _driftLocal(current) {\n if (current.type === \"text\")\n return { localHash: _payloadHash(current.text), localContent: _stripBanner(current.text) };\n return { localHash: _hash(\"\"), localContent: \"\" };\n}\nasync function _findManifests(root, deps) {\n try {\n const entries = await (deps.readdir ?? readdir)(root, { withFileTypes: true });\n const out = [];\n for (const entry of entries) {\n const filePath = path.join(root, entry.name);\n if (entry.isDirectory())\n out.push(...await _findManifests(filePath, deps));\n if (entry.isFile() && entry.name === MANIFEST_FILE)\n out.push(filePath);\n }\n return out;\n }\n catch (error) {\n if (error.code === \"ENOENT\")\n return [];\n throw error;\n }\n}\nasync function _writeFileAtomic(homeDir, filePath, content, mode, deps) {\n await _ensureManagedParentDirectory(homeDir, filePath, deps);\n for (let attempt = 0; attempt < TEMP_OPEN_RETRIES; attempt += 1) {\n const tempPath = _randomTempPath(filePath);\n const written = await _tryWriteAtomicTemp(tempPath, content, mode, deps);\n if (written === \"collision\")\n continue;\n try {\n await (deps.rename ?? rename)(tempPath, filePath);\n return;\n }\n catch (error) {\n await (deps.rm ?? rm)(tempPath, { force: true }).catch(() => { });\n throw error;\n }\n }\n throw new Error(\"managed materialization could not create an exclusive temp file\");\n}\nasync function _tryWriteAtomicTemp(tempPath, content, mode, deps) {\n let handle = null;\n try {\n handle = await (deps.open ?? open)(tempPath, TEMP_OPEN_FLAGS, mode);\n await handle.writeFile(content, \"utf8\");\n await handle.close();\n return \"written\";\n }\n catch (error) {\n await handle?.close().catch(() => { });\n if (!handle && _isTempCollision(error))\n return \"collision\";\n if (handle)\n await (deps.rm ?? rm)(tempPath, { force: true }).catch(() => { });\n throw error;\n }\n}\nfunction _randomTempPath(filePath) {\n return path.join(path.dirname(filePath), `.${path.basename(filePath)}.${randomBytes(12).toString(\"hex\")}.tmp`);\n}\nfunction _isTempCollision(error) {\n const code = error.code;\n return code === \"EEXIST\" || code === \"ELOOP\";\n}\nasync function _removeManagedFile(homeDir, filePath, deps) {\n if (!await _verifyManagedParentDirectory(homeDir, filePath, deps))\n return;\n await (deps.rm ?? rm)(filePath, { force: true });\n}\nasync function _ensureManagedParentDirectory(homeDir, filePath, deps) {\n for (const dirPath of _managedDirectoryAncestors(homeDir, path.dirname(filePath))) {\n try {\n const stats = await (deps.lstat ?? lstat)(dirPath);\n _assertManagedDirectoryAncestor(dirPath, stats);\n }\n catch (error) {\n if (error.code !== \"ENOENT\")\n throw error;\n await (deps.mkdir ?? mkdir)(dirPath, { recursive: dirPath === path.resolve(homeDir) });\n const stats = await (deps.lstat ?? lstat)(dirPath);\n _assertManagedDirectoryAncestor(dirPath, stats);\n }\n }\n}\nasync function _verifyManagedParentDirectory(homeDir, filePath, deps) {\n for (const dirPath of _managedDirectoryAncestors(homeDir, path.dirname(filePath))) {\n try {\n const stats = await (deps.lstat ?? lstat)(dirPath);\n _assertManagedDirectoryAncestor(dirPath, stats);\n }\n catch (error) {\n if (error.code === \"ENOENT\")\n return false;\n throw error;\n }\n }\n return true;\n}\nfunction _managedDirectoryAncestors(homeDir, dirPath) {\n const root = path.resolve(homeDir);\n const dir = path.resolve(dirPath);\n if (dir !== root && !dir.startsWith(`${root}${path.sep}`))\n throw new Error(\"managed file path escapes agent sandbox\");\n const relative = path.relative(root, dir);\n const ancestors = [root];\n if (!relative)\n return ancestors;\n let current = root;\n for (const part of relative.split(path.sep)) {\n current = path.join(current, part);\n ancestors.push(current);\n }\n return ancestors;\n}\nfunction _assertManagedDirectoryAncestor(dirPath, stats) {\n if (stats.isSymbolicLink())\n throw new Error(`managed materialization refuses symlink ancestor: ${dirPath}`);\n if (!stats.isDirectory())\n throw new Error(`managed materialization refuses non-directory ancestor: ${dirPath}`);\n}\nfunction _captainId(value) {\n if (value?.trim())\n return value.trim();\n throw new Error(\"managed materialization requires descriptor captain_id\");\n}\nfunction _engine(value) {\n if (value === \"claude\" || value === \"codex\")\n return value;\n throw new Error(\"managed materialization engine must be claude or codex\");\n}\nfunction _materializationHomeDir(agentName, engine, env) {\n const nativeHome = engine === \"claude\" ? env.CLAUDE_CONFIG_DIR?.trim() : env.CODEX_HOME?.trim();\n if (nativeHome) {\n const sandboxHome = _sandboxNativeHome(agentName, engine, nativeHome);\n if (sandboxHome)\n return sandboxHome;\n }\n return agentSandboxHome(agentName, engine, env);\n}\nfunction _sandboxNativeHome(agentName, engine, nativeHome) {\n const resolved = path.resolve(_expandHome(nativeHome));\n if (path.basename(resolved) !== engine)\n return null;\n const agentDir = path.dirname(resolved);\n if (path.basename(agentDir) !== agentName)\n return null;\n const agentsDir = path.dirname(agentDir);\n if (path.basename(agentsDir) !== \"agents\")\n return null;\n const stateRoot = path.dirname(agentsDir);\n if (stateRoot === path.dirname(stateRoot))\n return null;\n return resolved;\n}\nfunction _stateRoot(env) {\n const configured = env.SAILORBRIDGE_STATE_DIR?.trim();\n if (configured)\n return path.resolve(_expandHome(configured));\n const home = env.HOME?.trim() || homedir();\n return path.join(home, \".sailorbridge\");\n}\nfunction _expandHome(value) {\n if (value === \"~\")\n return homedir();\n if (value.startsWith(\"~/\"))\n return path.join(homedir(), value.slice(2));\n return value;\n}\n//# sourceMappingURL=managed-materialization.js.map",
|
|
37
37
|
"import { mkdir, readFile, writeFile } from \"node:fs/promises\"; // intentional — the stub splice must read the agent-owned file it is editing\nimport { homedir } from \"node:os\";\nimport path from \"node:path\";\nimport { RelayHttpError } from \"../relay/index.js\";\nexport const TEAM_MEMORY_STUB_BEGIN = \"<!-- sailorbridge-team-memory-stub:begin -->\";\nexport const TEAM_MEMORY_STUB_END = \"<!-- sailorbridge-team-memory-stub:end -->\";\n// Markers written by the retired service-only protocol (pre owner 2026-07-23).\n// Files that still carry them get their block replaced once; agent content\n// around the block is preserved.\nconst LEGACY_STUB_BEGIN = \"<!-- sailorbridge-rag-memory-stub:begin -->\";\nconst LEGACY_STUB_END = \"<!-- sailorbridge-rag-memory-stub:end -->\";\n// Shared opening: local memory is unrestricted and role-bound content stays\n// local — a moderator's role memory surfacing in another member's recall is an\n// identity mix-up, which is why role-bound content never goes to shared stores.\nconst STUB_LOCAL_MEMORY = [\n \"- Your local memory files are yours: the product never collects, rewrites, or deletes them.\",\n \" Keep working notes and everything tied to your own role in local memory.\",\n \"- Role-bound and personal content must stay local. Never publish it to shared team stores:\",\n \" another member recalling your role's private memory is an identity mix-up.\",\n];\nexport const TEAM_MEMORY_STUB_ENTITLED = [\n \"# SailorBridge Team Memory Protocol\",\n \"\",\n ...STUB_LOCAL_MEMORY,\n \"- Team memory is the team's shared knowledge and experience. Before a non-trivial\",\n \" question, run `sail memory search <query>` — someone may already know.\",\n \"- When you learn something the whole team benefits from, save it with\",\n \" `sail memory set <key> --stdin --source <source>` (or `--file <path>`).\",\n \"- Prefer team memory over rules when saving: rules are behavior norms; knowledge\",\n \" and experience belong in team memory.\",\n \"- If the memory service is unavailable, fail fast and say so; never present stale\",\n \" local content as the team's shared truth.\",\n \"\",\n].join(\"\\n\");\nexport const TEAM_MEMORY_STUB_UNENTITLED = [\n \"# SailorBridge Team Memory Protocol\",\n \"\",\n ...STUB_LOCAL_MEMORY,\n \"- Share lessons and working norms through team rules: propose a rule to your\",\n \" captain or moderator so the whole team inherits it.\",\n \"- The Team Memory add-on adds shared cross-member memory with corrections\",\n \" (`sail memory` commands); the captain can enable it from the console.\",\n \"\",\n].join(\"\\n\");\nexport function teamMemoryStub(entitled) {\n return entitled ? TEAM_MEMORY_STUB_ENTITLED : TEAM_MEMORY_STUB_UNENTITLED;\n}\nexport function teamMemoryStubMarked(entitled) {\n return `${TEAM_MEMORY_STUB_BEGIN}\\n${teamMemoryStub(entitled)}${TEAM_MEMORY_STUB_END}\\n`;\n}\n/**\n * Whether the team has the Team Memory add-on, asked of the relay's dedicated\n * entitlement probe: 200 when entitled, 402 when not, 503 when the relay\n * cannot know (storage unavailable). Anything but 402 rethrows — an unknown\n * state must fail the launch rather than materialize a guessed protocol.\n */\nexport async function resolveTeamMemoryEntitlement(relay, captainId, teamId) {\n const captain = captainId?.trim();\n const team = teamId?.trim();\n if (!captain || !team)\n throw new Error(\"team memory entitlement requires captain_id and session\");\n try {\n return (await relay.getRagEntitlement(captain, team)).enabled;\n }\n catch (error) {\n if (error instanceof RelayHttpError && error.status === 402)\n return false;\n throw error;\n }\n}\n/**\n * Write the team-memory protocol block into the agent sandbox's engine memory\n * file (CLAUDE.md / AGENTS.md). The block is marker-delimited and spliced in\n * place: content the agent keeps in the same file is preserved on every launch\n * (local memory is unrestricted — owner 2026-07-23). Legacy service-only blocks\n * are replaced by the current protocol; stray/unpaired markers are dropped and\n * the remaining text is kept as agent content.\n */\nexport async function materializeAgentMemoryStub(options) {\n const engine = _memoryStubEngine(options.engine);\n const homeDir = options.homeDir ? path.resolve(_expandHome(options.homeDir)) : agentSandboxHome(options.agentName, engine, options.env ?? process.env);\n const fileName = memoryStubFileName(engine);\n const filePath = path.join(homeDir, fileName);\n const mkdirFn = options.mkdir ?? mkdir;\n const writeFileFn = options.writeFile ?? writeFile;\n await mkdirFn(homeDir, { recursive: true });\n const existing = await _readIfPresent(filePath, options.readFile ?? readFile); // intentional — splice preserves the agent-owned file around the stub block\n const next = _spliceStubBlock(existing, teamMemoryStubMarked(options.teamMemoryEntitled));\n if (next !== existing)\n await writeFileFn(filePath, next, { mode: 0o600 });\n return {\n engine,\n homeDir,\n filePath,\n env: engine === \"claude\" ? { CLAUDE_CONFIG_DIR: homeDir } : { CODEX_HOME: homeDir },\n };\n}\nexport function agentSandboxHome(agentName, engine, env = process.env) {\n const stateRoot = _stateRoot(env);\n return path.join(stateRoot, \"agents\", _safePathLabel(agentName, \"agentName\"), engine);\n}\nexport function memoryStubFileName(engine) {\n return engine === \"claude\" ? \"CLAUDE.md\" : \"AGENTS.md\";\n}\nfunction _spliceStubBlock(existing, block) {\n if (existing === null || !existing.trim())\n return block;\n const current = _replaceMarkedBlock(existing, TEAM_MEMORY_STUB_BEGIN, TEAM_MEMORY_STUB_END, block)\n ?? _replaceMarkedBlock(existing, LEGACY_STUB_BEGIN, LEGACY_STUB_END, block);\n if (current !== undefined)\n return current;\n const cleaned = _dropStrayMarkers(existing);\n if (!cleaned.trim())\n return block;\n return `${block}\\n${cleaned.replace(/^\\n+/u, \"\")}`;\n}\n// Returns undefined when the pair is absent or malformed (caller falls through).\nfunction _replaceMarkedBlock(content, begin, end, block) {\n const start = content.indexOf(begin);\n const stop = content.indexOf(end);\n if (start < 0 || stop < start)\n return undefined;\n const after = content.slice(stop + end.length).replace(/^\\n/u, \"\");\n return `${content.slice(0, start)}${block}${after}`;\n}\nfunction _dropStrayMarkers(content) {\n return [TEAM_MEMORY_STUB_BEGIN, TEAM_MEMORY_STUB_END, LEGACY_STUB_BEGIN, LEGACY_STUB_END]\n .reduce((text, marker) => text.split(marker).join(\"\"), content);\n}\nasync function _readIfPresent(filePath, readFileFn) {\n try {\n return await readFileFn(filePath, \"utf8\");\n }\n catch (error) {\n if (error && typeof error === \"object\" && \"code\" in error && error.code === \"ENOENT\")\n return null;\n throw error;\n }\n}\nfunction _memoryStubEngine(value) {\n if (value !== \"claude\" && value !== \"codex\") {\n throw new Error(\"memory stub engine must be claude or codex\");\n }\n return value;\n}\nfunction _stateRoot(env) {\n const configured = env.SAILORBRIDGE_STATE_DIR?.trim();\n if (configured)\n return path.resolve(_expandHome(configured));\n const home = env.HOME?.trim() || homedir();\n return path.join(home, \".sailorbridge\");\n}\nfunction _expandHome(value) {\n if (value === \"~\")\n return homedir();\n if (value.startsWith(\"~/\"))\n return path.join(homedir(), value.slice(2));\n return value;\n}\nfunction _safePathLabel(value, field) {\n const trimmed = value.trim();\n if (!trimmed || !/^[A-Za-z0-9._-]+$/u.test(trimmed) || trimmed === \".\" || trimmed === \"..\") {\n throw new Error(`${field} must be a path-safe label`);\n }\n return trimmed;\n}\n//# sourceMappingURL=memory-stub.js.map",
|
|
38
38
|
"import { lstat, readFile, rename, symlink, unlink, writeFile } from \"node:fs/promises\"; // intentional — guardian heals managed credential bytes, not CLI text parameters\nimport path from \"node:path\";\nimport { waitForWakeableTimeout } from \"../supervisor/wait.js\";\n// Owner ruling 2026-07-18 (product = one account, one physical credential file, N\n// sessions sharing it via symlink): an in-sandbox CLI token refresh atomically\n// replaces the materialized symlink with a real file, silently detaching the\n// session from the shared credential. The guardian sweeps the link at runtime and\n// heals detachment by flowing the fresh token BACK into the shared file before\n// rebuilding the link — rebuilding first would discard the refreshed token and\n// force the rotation-kill pathology it exists to prevent.\nexport const DEFAULT_CREDENTIAL_SWEEP_INTERVAL_MS = 60_000;\nconst DEFAULT_FAILURE_ALERT_THRESHOLD = 3;\nconst defaultFs = {\n lstat,\n readFile: (filePath) => readFile(filePath), // intentional — bind the managed-credential byte reader\n writeFile: (filePath, data, options) => writeFile(filePath, data, options),\n rename,\n symlink: (target, linkPath) => symlink(target, linkPath),\n unlink,\n};\nlet tmpSequence = 0;\nexport class CredentialGuardian {\n options;\n fs;\n intervalMs;\n failureAlertThreshold;\n logger;\n stopped = false;\n wake = null;\n consecutiveFailures = 0;\n constructor(options) {\n this.options = options;\n if (!options.linkPath.trim())\n throw new Error(\"credential guardian requires linkPath\");\n if (!options.sharedTargetPath.trim())\n throw new Error(\"credential guardian requires sharedTargetPath\");\n this.intervalMs = options.sweepIntervalMs ?? DEFAULT_CREDENTIAL_SWEEP_INTERVAL_MS;\n if (!Number.isFinite(this.intervalMs) || this.intervalMs <= 0)\n throw new Error(\"credential sweep interval must be > 0\");\n this.failureAlertThreshold = options.failureAlertThreshold ?? DEFAULT_FAILURE_ALERT_THRESHOLD;\n this.fs = { ...defaultFs, ...options.fs };\n this.logger = options.logger ?? (() => { });\n }\n async runLoop() {\n while (!this.stopped) {\n await waitForWakeableTimeout(this.intervalMs, (wake) => { this.wake = wake; }, this.options.sleep);\n if (this.stopped)\n return;\n await this._sweepCountingFailures();\n }\n }\n stop() {\n this.stopped = true;\n this.wake?.();\n }\n // Public for targeted verification: one sweep = detect + heal, no scheduling.\n async sweepOnce() {\n const outcome = await this._inspectAndHeal();\n if (outcome !== \"intact\") {\n // Paths and outcomes only — credential content must never reach logs.\n this.logger(`credential_guardian_${outcome}`, {\n link_path: this.options.linkPath,\n target_path: this.options.sharedTargetPath,\n });\n }\n return outcome;\n }\n async _sweepCountingFailures() {\n try {\n await this.sweepOnce();\n this.consecutiveFailures = 0;\n }\n catch (error) {\n this.consecutiveFailures += 1;\n this.logger(\"credential_guardian_sweep_failed\", {\n link_path: this.options.linkPath,\n error: error instanceof Error ? error.message : String(error),\n consecutive_failures: this.consecutiveFailures,\n });\n if (this.consecutiveFailures >= this.failureAlertThreshold) {\n this.logger(\"credential_guardian_failing\", {\n link_path: this.options.linkPath,\n consecutive_failures: this.consecutiveFailures,\n threshold: this.failureAlertThreshold,\n });\n }\n }\n }\n async _inspectAndHeal() {\n let detached;\n try {\n detached = await this.fs.lstat(this.options.linkPath);\n }\n catch (error) {\n if (error.code !== \"ENOENT\")\n throw error;\n await _atomicRelink(this.options.linkPath, this.options.sharedTargetPath, this.fs);\n return \"relinked\";\n }\n if (detached.isSymbolicLink())\n return \"intact\";\n if (!detached.isFile())\n throw new Error(`credential path is neither symlink nor regular file: ${this.options.linkPath}`);\n return healDetachedCredential({\n linkPath: this.options.linkPath,\n linkTarget: this.options.sharedTargetPath,\n writeTarget: this.options.sharedTargetPath,\n detached,\n fs: this.fs,\n });\n }\n}\n// Backfill the detached file's token into the shared target (same-dir tmp+rename,\n// atomic for concurrent readers), then atomically swap the symlink back in.\nexport async function healDetachedCredential(input) {\n const fs = { ...defaultFs, ...input.fs };\n const content = await fs.readFile(input.linkPath); // intentional — recover detached managed credential bytes\n if (content.byteLength === 0)\n throw new Error(`detached credential file is empty, refusing to backfill: ${input.linkPath}`);\n await _atomicWrite(input.writeTarget, content, fs);\n // The CLI may refresh again (atomic replace) while we were backfilling; swapping\n // the symlink in now would clobber that newer token. Defer — the next sweep\n // re-ingests the newest generation.\n if (!(await _detachedUnchanged(input.linkPath, input.detached, fs)))\n return \"deferred\";\n await _atomicRelink(input.linkPath, input.linkTarget, fs);\n return \"healed\";\n}\nasync function _detachedUnchanged(linkPath, before, fs) {\n let after;\n try {\n after = await fs.lstat(linkPath);\n }\n catch (error) {\n if (error.code === \"ENOENT\")\n return false;\n throw error;\n }\n return after.isFile() && after.ino === before.ino && after.mtimeMs === before.mtimeMs && after.size === before.size;\n}\nasync function _atomicWrite(filePath, content, fs) {\n const tmpPath = _tmpSibling(filePath);\n await fs.writeFile(tmpPath, content, { mode: 0o600 });\n await fs.rename(tmpPath, filePath);\n}\nasync function _atomicRelink(linkPath, target, fs) {\n const tmpPath = _tmpSibling(linkPath);\n await fs.symlink(target, tmpPath);\n try {\n await fs.rename(tmpPath, linkPath);\n }\n catch (error) {\n // intentional — best-effort tmp cleanup; the rename error is the failure that surfaces\n await fs.unlink(tmpPath).catch(() => { });\n throw error;\n }\n}\nfunction _tmpSibling(filePath) {\n tmpSequence += 1;\n return path.join(path.dirname(filePath), `.${path.basename(filePath)}.sb-guardian.${process.pid}.${tmpSequence}.tmp`);\n}\n//# sourceMappingURL=credential-guardian.js.map",
|
|
39
39
|
"import { RelayHttpError } from \"../relay/index.js\";\nimport { isAgentRetiredRelayError } from \"./retirement.js\";\nimport { waitForWakeableTimeout } from \"./wait.js\";\nconst DEFAULT_CAPTURE_LINES = 200;\nconst MAX_CAPTURE_LINES = 1000;\n// Consumes relay resolve commands (capture_tmux / relaunch / config reload) for one agent, mirroring the Python listener\n// resolve sweep. Each command is claimed via poll, executed against the driver, and its outcome POSTed\n// back as done|failed. A single command that fails is reported failed and the loop continues; a transport\n// failure on poll/submit backs off without killing the loop.\nexport class ResolveSupervisor {\n options;\n pollIntervalMs;\n backoffInitialMs;\n backoffMaxMs;\n stopDrainMs;\n sleep;\n clock;\n logger;\n stopped = false;\n wake = null;\n pollAbort = null;\n // An already-claimed+executed command whose result POST has not yet been accepted. Retained across\n // loop turns and re-flushed before claiming new work, so a computed result is not abandoned while\n // the process is alive even under a sustained relay outage. On shutdown, runLoop gives this a bounded\n // final drain; if the relay stays unavailable, relay-side claim TTL/requeue makes the command visible again.\n pending = null;\n constructor(options) {\n this.options = options;\n if (!options.agentName.trim())\n throw new Error(\"agentName is required\");\n this.pollIntervalMs = options.pollIntervalMs ?? 2000;\n this.backoffInitialMs = options.backoffInitialMs ?? 1000;\n this.backoffMaxMs = options.backoffMaxMs ?? 30_000;\n this.stopDrainMs = options.stopDrainMs ?? 5000;\n this.sleep = options.sleep;\n this.clock = options.clock ?? Date.now;\n this.logger = options.logger ?? (() => { });\n }\n // Claim and resolve at most one command. Returns true when a command was handled (so the loop can poll\n // again promptly), false when the queue was empty.\n async runOnce() {\n // Re-flush a previously executed command whose submit failed BEFORE claiming new work. A submit\n // failure throws to runLoop (which backs off) with `pending` retained, so the next turn retries it —\n // the claimed+executed result is never abandoned while the process is alive.\n if (this.pending) {\n await this.submitOrReconcile(this.pending.commandId, this.pending.body);\n this.pending = null;\n return true;\n }\n const command = await this.pollResolveCommand();\n // A null poll means nothing was received by this client — safe to idle/stop locally. But once the relay\n // returns a claimed command, we must complete it (execute + submit) even if stop was requested mid-poll;\n // returning early on `stopped` here would orphan it server-side. If stop aborts after the relay has\n // committed a claim but before this client receives the response, the command can still be stranded; that\n // residual graceful-stop race is covered by relay-side claim TTL/requeue.\n if (command === null)\n return false;\n let body;\n try {\n body = { status: \"done\", result: await this.execute(command), error: null };\n }\n catch (error) {\n // A command we claimed but could not execute (no session, unsupported action, capture failure) is\n // reported failed — never a fabricated success — so the requester sees the real outcome.\n body = { status: \"failed\", result: null, error: errorMessage(error) };\n }\n // Stage the result before submitting: if the POST throws, `pending` keeps it for the next turn.\n this.pending = { commandId: command.id, body };\n await this.submitOrReconcile(command.id, body);\n this.pending = null;\n return true;\n }\n // Submit a result, reconciling the ambiguous already-committed case to success. A 409 means the relay\n // already finished this command (a prior submit committed but our response was lost) — that IS the\n // desired terminal state, so we treat it as success and clear the pending re-flush rather than\n // deadlocking on a permanent 409. Any other error (transport / 5xx) propagates so the loop backs off\n // and retries the still-unconfirmed result.\n async submitOrReconcile(commandId, body) {\n try {\n await this.options.relay.submitResolveResult(this.options.agentName, commandId, body);\n }\n catch (error) {\n if (error instanceof RelayHttpError && error.status === 409)\n return;\n throw error;\n }\n }\n async runLoop() {\n let backoff = this.backoffInitialMs;\n while (!this.stopped) {\n try {\n const handled = await this.runOnce();\n this.options.onRelaySuccess?.();\n backoff = this.backoffInitialMs;\n if (!handled && !this.stopped)\n await this.waitPoll(this.pollIntervalMs);\n }\n catch (error) {\n // Loop-level resilience: a poll/submit transport failure must NOT kill the loop (single-command\n // execute failures are already turned into a submitted \"failed\" result inside runOnce). Back off\n // and keep polling so the agent recovers resolve support once the relay is reachable again.\n if (this.stopped) {\n await this.drainPendingOnStop(backoff);\n return;\n }\n if (isAgentRetiredRelayError(error)) {\n const retired = await this.options.onTerminalAuthFailure?.(\"resolve\", error);\n if (retired)\n return;\n this.logger(\"resolve_auth_failure_retry\", { status: error.status, retryMs: backoff });\n await this.waitPoll(backoff);\n backoff = Math.min(backoff * 2, this.backoffMaxMs);\n continue;\n }\n this.logger(\"resolve_loop_error\", { error: errorMessage(error), retryMs: backoff });\n await this.waitPoll(backoff);\n backoff = Math.min(backoff * 2, this.backoffMaxMs);\n }\n }\n }\n async drainPendingOnStop(retryMs) {\n const startedAt = this.clock();\n let accountedSleepMs = 0;\n while (this.pending && Math.max(this.clock() - startedAt, accountedSleepMs) < this.stopDrainMs) {\n try {\n await this.submitOrReconcile(this.pending.commandId, this.pending.body);\n this.pending = null;\n return;\n }\n catch (error) {\n this.logger(\"resolve_stop_drain_error\", { error: errorMessage(error), retryMs });\n const elapsed = Math.max(this.clock() - startedAt, accountedSleepMs);\n if (elapsed >= this.stopDrainMs)\n return;\n const delay = Math.min(retryMs, this.stopDrainMs - elapsed);\n await (this.sleep ?? defaultSleep)(delay);\n accountedSleepMs += delay;\n }\n }\n }\n stop() {\n this.stopped = true;\n this.pollAbort?.abort(new Error(\"resolve supervisor stopped\"));\n this.wake?.(); // wake an in-flight poll-interval / backoff sleep so shutdown is prompt\n }\n async pollResolveCommand() {\n this.pollAbort = new AbortController();\n try {\n return await this.options.relay.pollResolveCommand(this.options.agentName, this.pollAbort.signal);\n }\n finally {\n this.pollAbort = null;\n }\n }\n // Sleep that a stop() can cut short (mirrors the runtime liveness loop's wakeable wait).\n async waitPoll(ms) {\n await waitForWakeableTimeout(ms, (wake) => { this.wake = wake; }, this.sleep);\n }\n async execute(command) {\n if (command.action === \"capture_tmux\")\n return await this.captureTmux(command.params);\n if (command.action === \"send_tmux_command\")\n return await this.sendTmuxCommand(command.params);\n if (command.action === \"relaunch\")\n return await this.relaunchResult();\n if (command.action === \"inspect_exit_diagnosis\")\n return this.inspectExitDiagnosis();\n if (command.action === \"reload_context_autopilot\")\n return await this.reloadContextAutopilot();\n throw new Error(`unsupported resolve action: ${command.action}`);\n }\n inspectExitDiagnosis() {\n if (!this.options.inspectExitDiagnosis)\n throw new Error(\"exit diagnosis inspection is not configured\");\n return this.options.inspectExitDiagnosis();\n }\n async reloadContextAutopilot() {\n if (!this.options.reloadContextAutopilot)\n throw new Error(\"reload_context_autopilot is not configured\");\n return await this.options.reloadContextAutopilot();\n }\n async captureTmux(params) {\n if (!this.options.driver.capturePane)\n throw new Error(\"driver does not support tmux capture\");\n const lines = resolveLines(params);\n const capture = tailLines(await this.options.driver.capturePane({ scrollback: true }), lines);\n return { tmux_session: this.options.tmuxSession, lines, capture };\n }\n async sendTmuxCommand(params) {\n if (!this.options.driver.sendCommand)\n throw new Error(\"driver does not support tmux command input\");\n const command = resolveCommandText(params);\n await this.options.driver.sendCommand(command);\n return { tmux_session: this.options.tmuxSession, sent: true };\n }\n async relaunchResult() {\n const relaunch = await this.options.relaunch();\n return {\n before_pane_command: relaunch.before_pane_command,\n after_pane_command: relaunch.after_pane_command,\n session_handle: relaunch.session_handle,\n capture_tail: relaunch.capture_tail,\n };\n }\n}\n// Mirrors the Python _resolve_lines: an integer (not bool) lines param clamped to [1, 1000], default 200.\nfunction resolveLines(params) {\n const value = params.lines;\n if (typeof value !== \"number\" || !Number.isInteger(value))\n return DEFAULT_CAPTURE_LINES;\n return Math.max(1, Math.min(value, MAX_CAPTURE_LINES));\n}\n// Mirrors the relay's strict _resolve_command_text (the relay is the primary gate, so a well-formed\n// reach here carries a plaintext string). Defense-in-depth: a missing/empty/non-string command fails\n// the resolve rather than silently typing nothing. Control chars are already rejected at the relay.\nconst MAX_COMMAND_CHARS = 4096;\nconst CONTROL_CHAR_RE = /[\\u0000-\\u001F\\u007F]/;\nfunction resolveCommandText(params) {\n const value = params.command;\n if (typeof value !== \"string\")\n throw new Error(\"send_tmux_command requires a string command\");\n const command = value.trim();\n if (!command)\n throw new Error(\"send_tmux_command requires a non-empty command\");\n if (command.length > MAX_COMMAND_CHARS)\n throw new Error(`send_tmux_command exceeds ${MAX_COMMAND_CHARS} characters`);\n if (CONTROL_CHAR_RE.test(command))\n throw new Error(\"send_tmux_command rejects control characters\");\n return command;\n}\n// Mirror Python str.splitlines() for the tmux capture case: tmux capture-pane -p ends in a trailing\n// newline, so drop exactly one trailing terminator before slicing — otherwise the last `lines` would\n// include a phantom empty tail and lose one real content line (off-by-one vs the Python listener).\nexport function tailLines(text, lines) {\n const normalized = text.endsWith(\"\\n\") ? text.slice(0, -1) : text;\n return normalized.split(\"\\n\").slice(-lines).join(\"\\n\");\n}\nfunction errorMessage(error) {\n return error instanceof Error ? error.message : String(error);\n}\nfunction defaultSleep(ms) {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n//# sourceMappingURL=resolve.js.map",
|
|
40
|
-
"import { createHash } from \"node:crypto\";\nimport { closeSync, existsSync, mkdirSync, openSync, readdirSync, readFileSync, // intentional — backfill reads internal transcript state, not CLI text parameters\nreadSync, renameSync, statSync, writeFileSync, } from \"node:fs\";\nimport { homedir } from \"node:os\";\nimport path from \"node:path\";\nimport { waitForWakeableTimeout } from \"./wait.js\";\n// Port of the Python listener's transcript backfill (engine/sailorbridge/listener/transcript_backfill.py).\n// When a captain or peer chat message is surfaced into a local CLI agent, the agent's eventual reply lands only\n// in its local transcript log (claude/codex jsonl) — never the mailbox. This worker watches those logs and posts\n// the final assistant turn back as a REPLY so the chat round-trips. Logic is aligned to the Python reference,\n// not copied line-for-line.\nexport const SUPPORTED_BACKFILL_ENGINES = new Set([\"claude\", \"codex\"]);\nconst CLOCK_SKEW_TOLERANCE_MS = 1000;\nconst PENDING_TURN_TTL_MS = 1_800_000;\nconst DISCOVERY_CACHE_MS = 30_000;\nconst POLL_INTERVAL_MS = 1000;\nconst POSTED_EVENT_LIMIT = 4096;\nconst TRANSIENT_RETRY_INITIAL_MS = 5000;\nconst TRANSIENT_RETRY_MAX_MS = 60_000;\nconst CLAUDE_DISCOVERY_HEAD = 200;\nconst CODEX_DISCOVERY_HEAD = 20;\nconst NEWEST_SOURCE_LIMIT = 8;\nexport function isCaptainOriginMessage(message) {\n // Monitor-handled control traffic (CLEAR/RULE/JOB-DONE/...) is never a captain chat turn, even if it\n // carries tag HUMAN or sender captain. Exclude it first, mirroring the Python listener's kind guard.\n if (message.kind === \"control\")\n return false;\n const sender = message.sender_agent_name ?? \"\";\n return sender === \"captain\" || sender.startsWith(\"console_captain_\");\n}\nexport function parseTranscriptLine(engine, line, sourcePath, lineOffset) {\n let item;\n try {\n item = JSON.parse(line);\n }\n catch {\n return null;\n }\n if (!isRecord(item))\n return null;\n if (engine === \"claude\")\n return parseClaudeEvent(item, sourcePath, lineOffset, line);\n if (engine === \"codex\")\n return parseCodexEvent(item, sourcePath, lineOffset, line);\n return null;\n}\nfunction parseClaudeEvent(item, sourcePath, lineOffset, rawLine) {\n if (item.type !== \"assistant\")\n return null;\n const message = item.message;\n const content = isRecord(message) ? message.content : item.content;\n if (isClaudeIntermediateTurn(message, content))\n return null;\n const text = textFromContentBlocks(content, new Set([\"text\"]));\n if (!text)\n return null;\n const eventId = stringField(item, \"uuid\", \"requestId\", \"sessionId\") ?? eventHash(\"claude\", sourcePath, lineOffset, rawLine);\n return { engine: \"claude\", sourcePath, lineOffset, eventId, timestamp: parseTimestamp(stringField(item, \"timestamp\")), text };\n}\nfunction parseCodexEvent(item, sourcePath, lineOffset, rawLine) {\n const payload = item.payload;\n if (item.type === \"event_msg\" && isRecord(payload) && payload.type === \"agent_message\") {\n if (!isCodexFinalPhase(payload.phase))\n return null;\n const message = payload.message;\n if (typeof message === \"string\" && message.trim()) {\n const eventId = stringField(payload, \"id\", \"turn_id\") ?? eventHash(\"codex\", sourcePath, lineOffset, rawLine);\n return { engine: \"codex\", sourcePath, lineOffset, eventId, timestamp: parseTimestamp(stringField(item, \"timestamp\")), text: message };\n }\n }\n if (item.type !== \"response_item\" || !isRecord(payload))\n return null;\n const responseItem = isRecord(payload.item) ? payload.item : payload;\n if (!isCodexFinalPhase(payload.phase ?? responseItem.phase))\n return null;\n const role = responseItem.role;\n if (role != null && role !== \"assistant\")\n return null;\n if (responseItem.type !== \"message\" && responseItem.type !== \"assistant_message\")\n return null;\n let text = textFromContentBlocks(responseItem.content, new Set([\"output_text\", \"text\"]));\n if (!text && typeof responseItem.text === \"string\")\n text = responseItem.text;\n if (!text)\n return null;\n const eventId = stringField(responseItem, \"id\") ?? stringField(payload, \"id\") ?? eventHash(\"codex\", sourcePath, lineOffset, rawLine);\n return { engine: \"codex\", sourcePath, lineOffset, eventId, timestamp: parseTimestamp(stringField(item, \"timestamp\")), text };\n}\n// Codex marks intermediate turns with phase \"commentary\" and the final answer with \"final_answer\" (the\n// real CLI shape; \"final\"/absent kept for legacy/forward tolerance). Anything else is an intermediate turn.\nconst CODEX_FINAL_PHASES = new Set([\"final\", \"final_answer\"]);\nfunction isCodexFinalPhase(phase) {\n return phase == null || (typeof phase === \"string\" && CODEX_FINAL_PHASES.has(phase));\n}\nfunction isClaudeIntermediateTurn(message, content) {\n if (isRecord(message) && (message.stop_reason === \"tool_use\" || message.stop_reason === \"pause_turn\"))\n return true;\n if (!Array.isArray(content))\n return false;\n return content.some((block) => isRecord(block) && block.type === \"tool_use\");\n}\nfunction textFromContentBlocks(content, textTypes) {\n if (typeof content === \"string\")\n return content.trim();\n if (!Array.isArray(content))\n return \"\";\n const parts = [];\n for (const block of content) {\n if (!isRecord(block) || typeof block.type !== \"string\" || !textTypes.has(block.type))\n continue;\n const text = block.text;\n if (typeof text === \"string\" && text.trim())\n parts.push(text.trim());\n }\n return parts.join(\"\\n\");\n}\nexport class BackfillStateStore {\n filePath;\n data = { sources: {} };\n constructor(filePath) {\n this.filePath = filePath;\n }\n static forConfig(config, dirName = \"transcript-backfill-state\") {\n if (!config.workspace || !config.session)\n return null;\n const filePath = path.join(config.workspace, \".agent\", dirName, config.session, `${config.agentName}.json`);\n return new BackfillStateStore(filePath);\n }\n load() {\n if (!existsSync(this.filePath)) {\n this.data = { sources: {} };\n return;\n }\n let raw;\n try {\n raw = JSON.parse(readFileSync(this.filePath, \"utf8\")); // intentional — restore the internal backfill checkpoint\n }\n catch (error) {\n throw new Error(`cannot read transcript backfill state ${this.filePath}: ${errorMessage(error)}`);\n }\n if (!isRecord(raw))\n throw new Error(`invalid transcript backfill state ${this.filePath}: expected object`);\n if (!isRecord(raw.sources))\n raw.sources = {};\n this.data = raw;\n }\n ensureWritable() {\n mkdirSync(path.dirname(this.filePath), { recursive: true });\n this.load();\n this.save();\n }\n offset(sourcePath) {\n const value = this.sourceState(sourcePath).offset;\n return typeof value === \"number\" && Number.isInteger(value) && value >= 0 ? value : 0;\n }\n rememberProcessedOffset(sourcePath, offset, fingerprint) {\n const state = this.sourceState(sourcePath);\n state.offset = Math.max(0, Math.trunc(offset));\n state.fingerprint = fingerprint;\n this.save();\n }\n hasPostedEvent(sourcePath, eventId) {\n const posted = this.sourceState(sourcePath).posted_event_ids;\n return Array.isArray(posted) && posted.includes(eventId);\n }\n rememberPostedEvent(sourcePath, eventId, offset, fingerprint) {\n const state = this.sourceState(sourcePath);\n const previous = Array.isArray(state.posted_event_ids) ? state.posted_event_ids : [];\n const ordered = new Map();\n for (const value of previous) {\n if (typeof value === \"string\")\n ordered.set(value, true);\n }\n ordered.set(eventId, true); // existing keys keep their position; new ids append (mirrors OrderedDict)\n while (ordered.size > POSTED_EVENT_LIMIT)\n ordered.delete(ordered.keys().next().value);\n state.posted_event_ids = [...ordered.keys()];\n state.offset = Math.max(0, Math.trunc(offset));\n state.fingerprint = fingerprint;\n this.save();\n }\n // Public so a sibling sweeper (usage collector) can carry per-source scratch state (codex turn_context\n // model/effort) forward; mutations persist on the next remember* call, which invokes save().\n sourceState(sourcePath) {\n const key = path.resolve(sourcePath);\n let state = this.data.sources[key];\n if (!isRecord(state)) {\n state = { offset: 0, posted_event_ids: [] };\n this.data.sources[key] = state;\n }\n return state;\n }\n save() {\n mkdirSync(path.dirname(this.filePath), { recursive: true });\n const tempPath = `${this.filePath}.tmp`;\n writeFileSync(tempPath, JSON.stringify(this.data));\n renameSync(tempPath, this.filePath);\n }\n}\nexport class TranscriptSourceDiscovery {\n engine;\n workspace;\n claudeRoot;\n codexRoot;\n clock;\n limit;\n cached = [];\n nextScanAt = 0;\n constructor(engine, workspace, options = {}) {\n this.engine = engine;\n this.workspace = path.resolve(workspace);\n this.claudeRoot = options.claudeRoot ?? path.join(homedir(), \".claude\", \"projects\");\n this.codexRoot = options.codexRoot ?? path.join(homedir(), \".codex\", \"sessions\");\n this.clock = options.clock ?? (() => Date.now());\n this.limit = options.limit ?? NEWEST_SOURCE_LIMIT;\n }\n discover() {\n const now = this.clock();\n if (now < this.nextScanAt)\n return [...this.cached];\n const found = this.engine === \"claude\" ? this.discoverClaude() : this.engine === \"codex\" ? this.discoverCodex() : [];\n this.cached = found;\n this.nextScanAt = now + DISCOVERY_CACHE_MS;\n return [...found];\n }\n discoverClaude() {\n if (!existsSync(this.claudeRoot))\n return [];\n const candidates = walkFiles(this.claudeRoot)\n .filter((file) => file.endsWith(\".jsonl\"))\n .filter((file) => jsonlDeclaresWorkspace(file, this.workspace));\n return sortNewest(candidates, this.limit);\n }\n discoverCodex() {\n if (!existsSync(this.codexRoot))\n return [];\n const candidates = walkFiles(this.codexRoot)\n .filter((file) => /^rollout-.*\\.jsonl$/.test(path.basename(file)))\n .filter((file) => codexJsonlDeclaresWorkspace(file, this.workspace));\n return sortNewest(candidates, this.limit);\n }\n}\nexport class TranscriptBackfillWorker {\n options;\n pending = null;\n ready = false;\n retryAfter = null;\n retryDelayMs = TRANSIENT_RETRY_INITIAL_MS;\n stopped = false;\n stateStore;\n discovery;\n now;\n sleep;\n logger;\n wake = null;\n constructor(options) {\n this.options = options;\n this.stateStore = options.stateStore !== undefined\n ? options.stateStore\n : BackfillStateStore.forConfig({ workspace: options.workspace, session: options.session, agentName: options.agentName });\n this.discovery = options.discovery ?? null;\n this.now = options.now ?? (() => new Date());\n this.sleep = options.sleep;\n this.logger = options.logger ?? (() => { });\n }\n get pendingTurn() {\n return this.pending;\n }\n stop() {\n this.stopped = true;\n this.wake?.();\n }\n // Record a surfaced mailbox message as the latest pending turn. Captain turns and peer chat turns open\n // a reply window; protocol/control traffic and this worker's own replies must not self-loop.\n recordSurface(message) {\n const replyTarget = replyTargetForSurface(message, this.options.agentName);\n if (!replyTarget)\n return false;\n const now = this.now();\n let earliest = parseTimestamp(message.submitted_at) ?? now;\n if (earliest.getTime() > now.getTime())\n earliest = now;\n this.pending = {\n messageId: message.id,\n earliestAt: earliest,\n expiresAt: new Date(now.getTime() + PENDING_TURN_TTL_MS),\n replyTarget,\n };\n this.resetRetry();\n this.log(\"transcript_backfill_pending_turn\", { agent: this.options.agentName, messageId: message.id });\n return true;\n }\n async runLoop() {\n if (!this.ensureReady())\n return;\n while (!this.stopped) {\n try {\n await this.runOnce();\n }\n catch (error) {\n this.log(\"transcript_backfill_loop_error\", { agent: this.options.agentName, error: errorMessage(error) });\n }\n if (this.stopped)\n return;\n await this.waitPoll(POLL_INTERVAL_MS);\n }\n }\n async waitPoll(ms) {\n await waitForWakeableTimeout(ms, (wake) => { this.wake = wake; }, this.sleep);\n }\n async runOnce() {\n if (!this.ensureReady())\n return 0;\n this.expirePending();\n const sources = this.sources();\n if (this.pending === null) {\n this.alignSourcesToEnd(sources);\n return 0;\n }\n if (this.retryAfter && this.now().getTime() < this.retryAfter.getTime())\n return 0;\n let posted = 0;\n for (const source of sources) {\n posted += await this.processSource(source);\n if (this.pending === null)\n break;\n }\n return posted;\n }\n ensureReady() {\n if (this.ready)\n return true;\n if (!SUPPORTED_BACKFILL_ENGINES.has(this.options.engine)) {\n this.log(\"transcript_backfill_unsupported_engine\", { agent: this.options.agentName, engine: this.options.engine });\n return false;\n }\n if (!this.options.workspace || !this.options.session) {\n this.log(\"transcript_backfill_disabled\", { agent: this.options.agentName, reason: \"missing_workspace_or_session\" });\n return false;\n }\n if (!this.stateStore) {\n this.log(\"transcript_backfill_disabled\", { agent: this.options.agentName, reason: \"missing_state_store\" });\n return false;\n }\n try {\n this.stateStore.ensureWritable();\n }\n catch (error) {\n this.log(\"transcript_backfill_disabled\", { agent: this.options.agentName, reason: errorMessage(error) });\n return false;\n }\n if (!this.discovery) {\n this.discovery = new TranscriptSourceDiscovery(this.options.engine, this.options.workspace, this.options.transcriptRoots);\n }\n this.ready = true;\n return true;\n }\n // Process the most-recently-written source first. The session that just answered the captain is the one\n // being actively appended to (newest mtime); since a post clears the pending turn and stops the scan, the\n // live source wins over any stale same-workspace source even if discovery returns them in another order.\n sources() {\n if (!this.discovery)\n throw new Error(\"transcript backfill discovery is not initialized\");\n return orderByNewestMtime(this.discovery.discover());\n }\n // No pending turn: advance each fresh source to EOF so a later first turn replays only post-turn replies,\n // not the entire historical transcript. Only aligns sources still at offset 0 (never rewinds progress).\n alignSourcesToEnd(sources) {\n const store = this.stateStore;\n if (!store)\n return;\n for (const source of sources) {\n const stat = safeStat(source);\n if (!stat)\n continue;\n if (store.offset(source) === 0)\n store.rememberProcessedOffset(source, stat.size, fingerprintFromStat(stat));\n }\n }\n async processSource(source) {\n const store = this.stateStore;\n let count = 0;\n for (const item of readCompleteLines(source, store.offset(source))) {\n const fingerprint = pathFingerprint(source);\n const event = parseTranscriptLine(this.options.engine, item.line, source, item.startOffset);\n if (!event) {\n store.rememberProcessedOffset(source, item.nextOffset, fingerprint);\n continue;\n }\n if (store.hasPostedEvent(source, event.eventId)) {\n store.rememberProcessedOffset(source, item.nextOffset, fingerprint);\n continue;\n }\n if (!this.matchesPending(event)) {\n store.rememberProcessedOffset(source, item.nextOffset, fingerprint);\n continue;\n }\n const pendingMessageId = this.pending ? this.pending.messageId : \"\";\n let result;\n try {\n result = await this.postReply(event);\n }\n catch (error) {\n if (isPermanentPostError(error)) {\n store.rememberProcessedOffset(source, item.nextOffset, fingerprint);\n this.clearPendingIfUnchanged(pendingMessageId);\n this.resetRetry();\n this.log(\"transcript_backfill_post_skipped\", {\n agent: this.options.agentName,\n engine: this.options.engine,\n source,\n offset: item.startOffset,\n eventId: event.eventId,\n status: httpStatusFromError(error),\n });\n break;\n }\n const retryMs = this.scheduleRetry();\n this.log(\"transcript_backfill_post_failed\", {\n agent: this.options.agentName,\n engine: this.options.engine,\n source,\n offset: item.startOffset,\n eventId: event.eventId,\n error: errorMessage(error),\n retryMs,\n });\n break;\n }\n store.rememberPostedEvent(source, event.eventId, item.nextOffset, fingerprint);\n this.clearPendingIfUnchanged(pendingMessageId);\n this.resetRetry();\n count += 1;\n this.log(\"transcript_backfill_posted\", {\n agent: this.options.agentName,\n engine: this.options.engine,\n source,\n offset: item.startOffset,\n eventId: event.eventId,\n postedIds: result.ids.join(\",\"),\n recipients: result.recipients.join(\",\"),\n });\n break;\n }\n return count;\n }\n matchesPending(event) {\n const pending = this.pending;\n if (!pending)\n return false;\n if (!event.timestamp)\n return false;\n const lower = pending.earliestAt.getTime() - CLOCK_SKEW_TOLERANCE_MS;\n return event.timestamp.getTime() >= lower;\n }\n async postReply(event) {\n if (!this.options.session)\n throw new Error(\"transcript backfill requires session\");\n const target = this.pending?.replyTarget ?? { kind: \"captain\" };\n const inReplyToMessageId = target.kind === \"captain\" ? this.pending?.messageId : undefined;\n return this.options.relay.postSessionReply(this.options.session, event.text, target, inReplyToMessageId);\n }\n // Only clear the pending turn if it is still the one we posted for. A newer turn may have been recorded\n // while the POST was in flight; clearing it would drop a reply the agent has not produced yet.\n clearPendingIfUnchanged(pendingMessageId) {\n if (this.pending && this.pending.messageId === pendingMessageId)\n this.pending = null;\n }\n expirePending() {\n const pending = this.pending;\n if (pending && this.now().getTime() >= pending.expiresAt.getTime()) {\n this.log(\"transcript_backfill_pending_expired\", { agent: this.options.agentName, messageId: pending.messageId });\n this.pending = null;\n this.resetRetry();\n }\n }\n scheduleRetry() {\n const retryMs = this.retryDelayMs;\n this.retryAfter = new Date(this.now().getTime() + retryMs);\n this.retryDelayMs = Math.min(this.retryDelayMs * 2, TRANSIENT_RETRY_MAX_MS);\n return retryMs;\n }\n resetRetry() {\n this.retryAfter = null;\n this.retryDelayMs = TRANSIENT_RETRY_INITIAL_MS;\n }\n log(event, fields) {\n this.logger(event, fields);\n }\n}\n// ---- module-private helpers ----------------------------------------------\nfunction replyTargetForSurface(message, agentName) {\n if (isCaptainOriginMessage(message))\n return { kind: \"captain\" };\n if (message.kind !== \"conversation\")\n return null;\n if (!isConversationReplyTag(normalizedConversationTag(message)))\n return null;\n const sender = message.sender_agent_name;\n if (!sender || sender === agentName)\n return null;\n return { kind: \"agent\", agentName: sender };\n}\nfunction normalizedConversationTag(message) {\n // intentional — untagged peer conversation is plain chat in relay; mirror Python listener _parse_message.\n return message.tag || \"MAIL\";\n}\nfunction isConversationReplyTag(tag) {\n return tag === \"MAIL\" || tag === \"HUMAN\";\n}\nexport function readCompleteLines(sourcePath, offset, maxBytes) {\n const stat = safeStat(sourcePath);\n if (!stat)\n return [];\n const safeOffset = stat.size < offset ? 0 : Math.max(0, offset);\n const available = stat.size - safeOffset;\n const length = maxBytes === undefined ? available : Math.min(available, maxBytes);\n const data = readFromOffset(sourcePath, safeOffset, length);\n if (data.length === 0)\n return [];\n const results = [];\n let lineStart = 0;\n for (let i = 0; i < data.length; i += 1) {\n if (data[i] !== 0x0a)\n continue;\n const raw = data.subarray(lineStart, i + 1);\n const start = safeOffset + lineStart;\n const next = start + raw.length;\n results.push({ startOffset: start, nextOffset: next, line: raw.toString(\"utf8\").replace(/\\r?\\n$/, \"\") });\n lineStart = i + 1;\n }\n return results;\n}\n// Read only [offset, offset+length) by seeking, instead of slurping the whole file each poll — an active\n// transcript can be many MB and this runs ~every second. Mirrors the Python listener's seek()+read().\nfunction readFromOffset(sourcePath, offset, length) {\n if (length <= 0)\n return Buffer.alloc(0);\n let fd;\n try {\n fd = openSync(sourcePath, \"r\");\n }\n catch {\n return Buffer.alloc(0);\n }\n try {\n const buffer = Buffer.alloc(length);\n const read = readSync(fd, buffer, 0, length, offset);\n return read === length ? buffer : buffer.subarray(0, read);\n }\n catch {\n return Buffer.alloc(0);\n }\n finally {\n closeSync(fd);\n }\n}\nfunction jsonlDeclaresWorkspace(file, workspace) {\n for (const item of jsonlHead(file, CLAUDE_DISCOVERY_HEAD)) {\n const cwd = stringField(item, \"cwd\");\n if (cwd && path.resolve(cwd) === workspace)\n return true;\n }\n return false;\n}\nfunction codexJsonlDeclaresWorkspace(file, workspace) {\n for (const item of jsonlHead(file, CODEX_DISCOVERY_HEAD)) {\n if (item.type !== \"session_meta\")\n continue;\n const payload = item.payload;\n if (!isRecord(payload))\n continue;\n const cwd = payload.cwd;\n if (typeof cwd !== \"string\" || path.resolve(cwd) !== workspace)\n continue;\n // Bind backfill to the agent's own primary session. Codex spawns subagent threads in the SAME\n // workspace cwd (session_meta marks them: parent_thread_id / thread_source \"subagent\" / source.subagent);\n // posting their final answers would deliver another session's reply as this agent's captain chat turn.\n return !isCodexSubagentSession(payload);\n }\n return false;\n}\nfunction isCodexSubagentSession(payload) {\n if (payload.parent_thread_id != null)\n return true;\n if (payload.thread_source === \"subagent\")\n return true;\n return isRecord(payload.source) && \"subagent\" in payload.source;\n}\nfunction jsonlHead(file, limit) {\n let text;\n try {\n text = readFileSync(file, \"utf8\"); // intentional — parse an agent transcript file for backfill\n }\n catch {\n return [];\n }\n const items = [];\n for (const line of text.split(\"\\n\").slice(0, limit)) {\n let item;\n try {\n item = JSON.parse(line);\n }\n catch {\n continue;\n }\n if (isRecord(item))\n items.push(item);\n }\n return items;\n}\nfunction walkFiles(root) {\n let entries;\n try {\n entries = readdirSync(root, { withFileTypes: true });\n }\n catch {\n return [];\n }\n const files = [];\n for (const entry of entries) {\n const full = path.join(root, entry.name);\n if (entry.isDirectory())\n files.push(...walkFiles(full));\n else if (entry.isFile())\n files.push(full);\n }\n return files;\n}\nfunction sortNewest(paths, limit = NEWEST_SOURCE_LIMIT) {\n return orderByNewestMtime(paths).slice(0, limit);\n}\nfunction orderByNewestMtime(paths) {\n return [...paths].sort((a, b) => (safeStat(b)?.mtimeMs ?? 0) - (safeStat(a)?.mtimeMs ?? 0));\n}\nexport function pathFingerprint(sourcePath) {\n const stat = safeStat(sourcePath);\n return stat ? fingerprintFromStat(stat) : { missing: 1 };\n}\nfunction fingerprintFromStat(stat) {\n return { inode: Number(stat.ino), mtimeMs: Math.trunc(stat.mtimeMs), size: stat.size };\n}\nfunction safeStat(sourcePath) {\n try {\n return statSync(sourcePath);\n }\n catch {\n return null;\n }\n}\nexport function parseTimestamp(value) {\n if (!value)\n return null;\n const hasTz = /([+-]\\d{2}:?\\d{2}|[Zz])$/.test(value);\n const normalized = hasTz ? value : `${value}Z`;\n const parsed = new Date(normalized);\n return Number.isNaN(parsed.getTime()) ? null : parsed;\n}\nexport function stringField(item, ...names) {\n for (const name of names) {\n const value = item[name];\n if (typeof value === \"string\" && value)\n return value;\n }\n return null;\n}\nfunction eventHash(engine, sourcePath, offset, rawLine) {\n return createHash(\"sha256\").update(`${engine}\\0${sourcePath}\\0${offset}\\0${rawLine}`).digest(\"hex\").slice(0, 32);\n}\nfunction isPermanentPostError(error) {\n const status = httpStatusFromError(error);\n return status !== null && status >= 400 && status < 500;\n}\nfunction httpStatusFromError(error) {\n if (isRecord(error) && typeof error.status === \"number\")\n return error.status;\n return null;\n}\nexport function isRecord(value) {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\nexport function errorMessage(error) {\n return error instanceof Error ? error.message : String(error);\n}\n//# sourceMappingURL=transcript-backfill.js.map",
|
|
40
|
+
"import { createHash } from \"node:crypto\";\nimport { closeSync, existsSync, mkdirSync, openSync, readdirSync, readFileSync, // intentional — backfill reads internal transcript state, not CLI text parameters\nreadSync, renameSync, statSync, writeFileSync, } from \"node:fs\";\nimport { homedir } from \"node:os\";\nimport path from \"node:path\";\nimport { waitForWakeableTimeout } from \"./wait.js\";\n// Port of the Python listener's transcript backfill (engine/sailorbridge/listener/transcript_backfill.py).\n// When a captain or peer chat message is surfaced into a local CLI agent, the agent's eventual reply lands only\n// in its local transcript log (claude/codex jsonl) — never the mailbox. This worker watches those logs and posts\n// the final assistant turn back as a REPLY so the chat round-trips. Logic is aligned to the Python reference,\n// not copied line-for-line.\nexport const SUPPORTED_BACKFILL_ENGINES = new Set([\"claude\", \"codex\"]);\nconst CLOCK_SKEW_TOLERANCE_MS = 1000;\nconst PENDING_TURN_TTL_MS = 1_800_000;\nconst DISCOVERY_CACHE_MS = 30_000;\nconst POLL_INTERVAL_MS = 1000;\nconst POSTED_EVENT_LIMIT = 4096;\nconst TRANSIENT_RETRY_INITIAL_MS = 5000;\nconst TRANSIENT_RETRY_MAX_MS = 60_000;\nconst CLAUDE_DISCOVERY_HEAD = 200;\nconst CODEX_DISCOVERY_HEAD = 20;\nconst NEWEST_SOURCE_LIMIT = 8;\nexport function isCaptainOriginMessage(message) {\n // Monitor-handled control traffic (CLEAR/RULE/JOB-DONE/...) is never a captain chat turn, even if it\n // carries tag HUMAN or sender captain. Exclude it first, mirroring the Python listener's kind guard.\n if (message.kind === \"control\")\n return false;\n const sender = message.sender_agent_name ?? \"\";\n return sender === \"captain\" || sender.startsWith(\"console_captain_\");\n}\nexport function parseTranscriptLine(engine, line, sourcePath, lineOffset) {\n let item;\n try {\n item = JSON.parse(line);\n }\n catch {\n return null;\n }\n if (!isRecord(item))\n return null;\n if (engine === \"claude\")\n return parseClaudeEvent(item, sourcePath, lineOffset, line);\n if (engine === \"codex\")\n return parseCodexEvent(item, sourcePath, lineOffset, line);\n return null;\n}\nfunction parseClaudeEvent(item, sourcePath, lineOffset, rawLine) {\n if (item.type !== \"assistant\")\n return null;\n const message = item.message;\n const content = isRecord(message) ? message.content : item.content;\n if (isClaudeIntermediateTurn(message, content))\n return null;\n const text = textFromContentBlocks(content, new Set([\"text\"]));\n if (!text)\n return null;\n const eventId = stringField(item, \"uuid\", \"requestId\", \"sessionId\") ?? eventHash(\"claude\", sourcePath, lineOffset, rawLine);\n return { engine: \"claude\", sourcePath, lineOffset, eventId, timestamp: parseTimestamp(stringField(item, \"timestamp\")), text };\n}\nfunction parseCodexEvent(item, sourcePath, lineOffset, rawLine) {\n const payload = item.payload;\n if (item.type === \"event_msg\" && isRecord(payload) && payload.type === \"agent_message\") {\n if (!isCodexFinalPhase(payload.phase))\n return null;\n const message = payload.message;\n if (typeof message === \"string\" && message.trim()) {\n const eventId = stringField(payload, \"id\", \"turn_id\") ?? eventHash(\"codex\", sourcePath, lineOffset, rawLine);\n return { engine: \"codex\", sourcePath, lineOffset, eventId, timestamp: parseTimestamp(stringField(item, \"timestamp\")), text: message };\n }\n }\n if (item.type !== \"response_item\" || !isRecord(payload))\n return null;\n const responseItem = isRecord(payload.item) ? payload.item : payload;\n if (!isCodexFinalPhase(payload.phase ?? responseItem.phase))\n return null;\n const role = responseItem.role;\n if (role != null && role !== \"assistant\")\n return null;\n if (responseItem.type !== \"message\" && responseItem.type !== \"assistant_message\")\n return null;\n let text = textFromContentBlocks(responseItem.content, new Set([\"output_text\", \"text\"]));\n if (!text && typeof responseItem.text === \"string\")\n text = responseItem.text;\n if (!text)\n return null;\n const eventId = stringField(responseItem, \"id\") ?? stringField(payload, \"id\") ?? eventHash(\"codex\", sourcePath, lineOffset, rawLine);\n return { engine: \"codex\", sourcePath, lineOffset, eventId, timestamp: parseTimestamp(stringField(item, \"timestamp\")), text };\n}\n// Codex marks intermediate turns with phase \"commentary\" and the final answer with \"final_answer\" (the\n// real CLI shape; \"final\"/absent kept for legacy/forward tolerance). Anything else is an intermediate turn.\nconst CODEX_FINAL_PHASES = new Set([\"final\", \"final_answer\"]);\nfunction isCodexFinalPhase(phase) {\n return phase == null || (typeof phase === \"string\" && CODEX_FINAL_PHASES.has(phase));\n}\nfunction isClaudeIntermediateTurn(message, content) {\n if (isRecord(message) && (message.stop_reason === \"tool_use\" || message.stop_reason === \"pause_turn\"))\n return true;\n if (!Array.isArray(content))\n return false;\n return content.some((block) => isRecord(block) && block.type === \"tool_use\");\n}\nfunction textFromContentBlocks(content, textTypes) {\n if (typeof content === \"string\")\n return content.trim();\n if (!Array.isArray(content))\n return \"\";\n const parts = [];\n for (const block of content) {\n if (!isRecord(block) || typeof block.type !== \"string\" || !textTypes.has(block.type))\n continue;\n const text = block.text;\n if (typeof text === \"string\" && text.trim())\n parts.push(text.trim());\n }\n return parts.join(\"\\n\");\n}\nexport class BackfillStateStore {\n filePath;\n data = { sources: {} };\n constructor(filePath) {\n this.filePath = filePath;\n }\n static forConfig(config, dirName = \"transcript-backfill-state\") {\n if (!config.workspace || !config.session)\n return null;\n const filePath = path.join(config.workspace, \".agent\", dirName, config.session, `${config.agentName}.json`);\n return new BackfillStateStore(filePath);\n }\n load() {\n if (!existsSync(this.filePath)) {\n this.data = { sources: {} };\n return;\n }\n let raw;\n try {\n raw = JSON.parse(readFileSync(this.filePath, \"utf8\")); // intentional — restore the internal backfill checkpoint\n }\n catch (error) {\n throw new Error(`cannot read transcript backfill state ${this.filePath}: ${errorMessage(error)}`);\n }\n if (!isRecord(raw))\n throw new Error(`invalid transcript backfill state ${this.filePath}: expected object`);\n if (!isRecord(raw.sources))\n raw.sources = {};\n this.data = raw;\n }\n ensureWritable() {\n mkdirSync(path.dirname(this.filePath), { recursive: true });\n this.load();\n this.save();\n }\n offset(sourcePath) {\n const value = this.sourceState(sourcePath).offset;\n return typeof value === \"number\" && Number.isInteger(value) && value >= 0 ? value : 0;\n }\n rememberProcessedOffset(sourcePath, offset, fingerprint) {\n const state = this.sourceState(sourcePath);\n state.offset = Math.max(0, Math.trunc(offset));\n state.fingerprint = fingerprint;\n this.save();\n }\n hasPostedEvent(sourcePath, eventId) {\n const posted = this.sourceState(sourcePath).posted_event_ids;\n return Array.isArray(posted) && posted.includes(eventId);\n }\n rememberPostedEvent(sourcePath, eventId, offset, fingerprint) {\n const state = this.sourceState(sourcePath);\n const previous = Array.isArray(state.posted_event_ids) ? state.posted_event_ids : [];\n const ordered = new Map();\n for (const value of previous) {\n if (typeof value === \"string\")\n ordered.set(value, true);\n }\n ordered.set(eventId, true); // existing keys keep their position; new ids append (mirrors OrderedDict)\n while (ordered.size > POSTED_EVENT_LIMIT)\n ordered.delete(ordered.keys().next().value);\n state.posted_event_ids = [...ordered.keys()];\n state.offset = Math.max(0, Math.trunc(offset));\n state.fingerprint = fingerprint;\n this.save();\n }\n // Public so a sibling sweeper (usage collector) can carry per-source scratch state (codex turn_context\n // model/effort) forward; mutations persist on the next remember* call, which invokes save().\n sourceState(sourcePath) {\n const key = path.resolve(sourcePath);\n let state = this.data.sources[key];\n if (!isRecord(state)) {\n state = { offset: 0, posted_event_ids: [] };\n this.data.sources[key] = state;\n }\n return state;\n }\n save() {\n mkdirSync(path.dirname(this.filePath), { recursive: true });\n const tempPath = `${this.filePath}.tmp`;\n writeFileSync(tempPath, JSON.stringify(this.data));\n renameSync(tempPath, this.filePath);\n }\n}\nexport class TranscriptSourceDiscovery {\n engine;\n workspace;\n claudeRoot;\n codexRoot;\n clock;\n limit;\n cached = [];\n nextScanAt = 0;\n constructor(engine, workspace, options = {}) {\n this.engine = engine;\n this.workspace = path.resolve(workspace);\n this.claudeRoot = options.claudeRoot ?? path.join(homedir(), \".claude\", \"projects\");\n this.codexRoot = options.codexRoot ?? path.join(homedir(), \".codex\", \"sessions\");\n this.clock = options.clock ?? (() => Date.now());\n this.limit = options.limit ?? NEWEST_SOURCE_LIMIT;\n }\n discover() {\n const now = this.clock();\n if (now < this.nextScanAt)\n return [...this.cached];\n const found = this.engine === \"claude\" ? this.discoverClaude() : this.engine === \"codex\" ? this.discoverCodex() : [];\n this.cached = found;\n this.nextScanAt = now + DISCOVERY_CACHE_MS;\n return [...found];\n }\n discoverClaude() {\n if (!existsSync(this.claudeRoot))\n return [];\n const candidates = walkFiles(this.claudeRoot)\n .filter((file) => file.endsWith(\".jsonl\"))\n .filter((file) => jsonlDeclaresWorkspace(file, this.workspace));\n return sortNewest(candidates, this.limit);\n }\n discoverCodex() {\n if (!existsSync(this.codexRoot))\n return [];\n const candidates = walkFiles(this.codexRoot)\n .filter((file) => /^rollout-.*\\.jsonl$/.test(path.basename(file)))\n .filter((file) => codexJsonlDeclaresWorkspace(file, this.workspace));\n return sortNewest(candidates, this.limit);\n }\n}\nexport class TranscriptBackfillWorker {\n options;\n pending = null;\n ready = false;\n retryAfter = null;\n retryDelayMs = TRANSIENT_RETRY_INITIAL_MS;\n stopped = false;\n stateStore;\n discovery;\n now;\n sleep;\n logger;\n wake = null;\n constructor(options) {\n this.options = options;\n this.stateStore = options.stateStore !== undefined\n ? options.stateStore\n : BackfillStateStore.forConfig({ workspace: options.workspace, session: options.session, agentName: options.agentName });\n this.discovery = options.discovery ?? null;\n this.now = options.now ?? (() => new Date());\n this.sleep = options.sleep;\n this.logger = options.logger ?? (() => { });\n }\n get pendingTurn() {\n return this.pending;\n }\n stop() {\n this.stopped = true;\n this.wake?.();\n }\n // Record a surfaced mailbox message as the latest pending turn. Captain turns and peer chat turns open\n // a reply window; protocol/control traffic and this worker's own replies must not self-loop.\n recordSurface(message) {\n const replyTarget = replyTargetForSurface(message, this.options.agentName);\n if (!replyTarget)\n return false;\n const now = this.now();\n let earliest = parseTimestamp(message.submitted_at) ?? now;\n if (earliest.getTime() > now.getTime())\n earliest = now;\n this.pending = {\n messageId: message.id,\n earliestAt: earliest,\n expiresAt: new Date(now.getTime() + PENDING_TURN_TTL_MS),\n replyTarget,\n };\n this.resetRetry();\n this.log(\"transcript_backfill_pending_turn\", { agent: this.options.agentName, messageId: message.id });\n return true;\n }\n async runLoop() {\n if (!this.ensureReady())\n return;\n while (!this.stopped) {\n try {\n await this.runOnce();\n }\n catch (error) {\n this.log(\"transcript_backfill_loop_error\", { agent: this.options.agentName, error: errorMessage(error) });\n }\n if (this.stopped)\n return;\n await this.waitPoll(POLL_INTERVAL_MS);\n }\n }\n async waitPoll(ms) {\n await waitForWakeableTimeout(ms, (wake) => { this.wake = wake; }, this.sleep);\n }\n async runOnce() {\n if (!this.ensureReady())\n return 0;\n this.expirePending();\n const sources = this.sources();\n if (this.pending === null) {\n this.alignSourcesToEnd(sources);\n return 0;\n }\n if (this.retryAfter && this.now().getTime() < this.retryAfter.getTime())\n return 0;\n let posted = 0;\n for (const source of sources) {\n posted += await this.processSource(source);\n if (this.pending === null)\n break;\n }\n return posted;\n }\n ensureReady() {\n if (this.ready)\n return true;\n if (!SUPPORTED_BACKFILL_ENGINES.has(this.options.engine)) {\n this.log(\"transcript_backfill_unsupported_engine\", { agent: this.options.agentName, engine: this.options.engine });\n return false;\n }\n if (!this.options.workspace || !this.options.session) {\n this.log(\"transcript_backfill_disabled\", { agent: this.options.agentName, reason: \"missing_workspace_or_session\" });\n return false;\n }\n if (!this.stateStore) {\n this.log(\"transcript_backfill_disabled\", { agent: this.options.agentName, reason: \"missing_state_store\" });\n return false;\n }\n try {\n this.stateStore.ensureWritable();\n }\n catch (error) {\n this.log(\"transcript_backfill_disabled\", { agent: this.options.agentName, reason: errorMessage(error) });\n return false;\n }\n if (!this.discovery) {\n this.discovery = new TranscriptSourceDiscovery(this.options.engine, this.options.workspace, this.options.transcriptRoots);\n }\n this.ready = true;\n return true;\n }\n // Process the most-recently-written source first. The session that just answered the captain is the one\n // being actively appended to (newest mtime); since a post clears the pending turn and stops the scan, the\n // live source wins over any stale same-workspace source even if discovery returns them in another order.\n sources() {\n if (!this.discovery)\n throw new Error(\"transcript backfill discovery is not initialized\");\n return orderByNewestMtime(this.discovery.discover());\n }\n // No pending turn: advance each fresh source to EOF so a later first turn replays only post-turn replies,\n // not the entire historical transcript. Only aligns sources still at offset 0 (never rewinds progress).\n alignSourcesToEnd(sources) {\n const store = this.stateStore;\n if (!store)\n return;\n for (const source of sources) {\n const stat = safeStat(source);\n if (!stat)\n continue;\n if (store.offset(source) === 0)\n store.rememberProcessedOffset(source, stat.size, fingerprintFromStat(stat));\n }\n }\n async processSource(source) {\n const store = this.stateStore;\n let count = 0;\n for (const item of readCompleteLines(source, store.offset(source))) {\n const fingerprint = pathFingerprint(source);\n const event = parseTranscriptLine(this.options.engine, item.line, source, item.startOffset);\n if (!event) {\n store.rememberProcessedOffset(source, item.nextOffset, fingerprint);\n continue;\n }\n if (store.hasPostedEvent(source, event.eventId)) {\n store.rememberProcessedOffset(source, item.nextOffset, fingerprint);\n continue;\n }\n if (!this.matchesPending(event)) {\n store.rememberProcessedOffset(source, item.nextOffset, fingerprint);\n continue;\n }\n const pendingMessageId = this.pending ? this.pending.messageId : \"\";\n let result;\n try {\n result = await this.postReply(event);\n }\n catch (error) {\n if (isPermanentPostError(error)) {\n store.rememberProcessedOffset(source, item.nextOffset, fingerprint);\n this.clearPendingIfUnchanged(pendingMessageId);\n this.resetRetry();\n this.log(\"transcript_backfill_post_skipped\", {\n agent: this.options.agentName,\n engine: this.options.engine,\n source,\n offset: item.startOffset,\n eventId: event.eventId,\n status: httpStatusFromError(error),\n });\n break;\n }\n const retryMs = this.scheduleRetry();\n this.log(\"transcript_backfill_post_failed\", {\n agent: this.options.agentName,\n engine: this.options.engine,\n source,\n offset: item.startOffset,\n eventId: event.eventId,\n error: errorMessage(error),\n retryMs,\n });\n break;\n }\n store.rememberPostedEvent(source, event.eventId, item.nextOffset, fingerprint);\n this.clearPendingIfUnchanged(pendingMessageId);\n this.resetRetry();\n if (result.skippedReason !== undefined) {\n this.log(\"transcript_backfill_relay_skipped\", {\n agent: this.options.agentName,\n engine: this.options.engine,\n source,\n offset: item.startOffset,\n eventId: event.eventId,\n reason: result.skippedReason,\n });\n break;\n }\n count += 1;\n this.log(\"transcript_backfill_posted\", {\n agent: this.options.agentName,\n engine: this.options.engine,\n source,\n offset: item.startOffset,\n eventId: event.eventId,\n postedIds: result.ids.join(\",\"),\n recipients: result.recipients.join(\",\"),\n });\n break;\n }\n return count;\n }\n matchesPending(event) {\n const pending = this.pending;\n if (!pending)\n return false;\n if (!event.timestamp)\n return false;\n const lower = pending.earliestAt.getTime() - CLOCK_SKEW_TOLERANCE_MS;\n return event.timestamp.getTime() >= lower;\n }\n async postReply(event) {\n if (!this.options.session)\n throw new Error(\"transcript backfill requires session\");\n const target = this.pending?.replyTarget ?? { kind: \"captain\" };\n const inReplyToMessageId = target.kind === \"captain\" ? this.pending?.messageId : undefined;\n const origin = target.kind === \"captain\" ? \"transcript-backfill\" : undefined;\n return this.options.relay.postSessionReply(this.options.session, event.text, target, inReplyToMessageId, \"REPLY\", origin);\n }\n // Only clear the pending turn if it is still the one we posted for. A newer turn may have been recorded\n // while the POST was in flight; clearing it would drop a reply the agent has not produced yet.\n clearPendingIfUnchanged(pendingMessageId) {\n if (this.pending && this.pending.messageId === pendingMessageId)\n this.pending = null;\n }\n expirePending() {\n const pending = this.pending;\n if (pending && this.now().getTime() >= pending.expiresAt.getTime()) {\n this.log(\"transcript_backfill_pending_expired\", { agent: this.options.agentName, messageId: pending.messageId });\n this.pending = null;\n this.resetRetry();\n }\n }\n scheduleRetry() {\n const retryMs = this.retryDelayMs;\n this.retryAfter = new Date(this.now().getTime() + retryMs);\n this.retryDelayMs = Math.min(this.retryDelayMs * 2, TRANSIENT_RETRY_MAX_MS);\n return retryMs;\n }\n resetRetry() {\n this.retryAfter = null;\n this.retryDelayMs = TRANSIENT_RETRY_INITIAL_MS;\n }\n log(event, fields) {\n this.logger(event, fields);\n }\n}\n// ---- module-private helpers ----------------------------------------------\nfunction replyTargetForSurface(message, agentName) {\n if (isCaptainOriginMessage(message))\n return { kind: \"captain\" };\n if (message.kind !== \"conversation\")\n return null;\n if (!isConversationReplyTag(normalizedConversationTag(message)))\n return null;\n const sender = message.sender_agent_name;\n if (!sender || sender === agentName)\n return null;\n return { kind: \"agent\", agentName: sender };\n}\nfunction normalizedConversationTag(message) {\n // intentional — untagged peer conversation is plain chat in relay; mirror Python listener _parse_message.\n return message.tag || \"MAIL\";\n}\nfunction isConversationReplyTag(tag) {\n return tag === \"MAIL\" || tag === \"HUMAN\";\n}\nexport function readCompleteLines(sourcePath, offset, maxBytes) {\n const stat = safeStat(sourcePath);\n if (!stat)\n return [];\n const safeOffset = stat.size < offset ? 0 : Math.max(0, offset);\n const available = stat.size - safeOffset;\n const length = maxBytes === undefined ? available : Math.min(available, maxBytes);\n const data = readFromOffset(sourcePath, safeOffset, length);\n if (data.length === 0)\n return [];\n const results = [];\n let lineStart = 0;\n for (let i = 0; i < data.length; i += 1) {\n if (data[i] !== 0x0a)\n continue;\n const raw = data.subarray(lineStart, i + 1);\n const start = safeOffset + lineStart;\n const next = start + raw.length;\n results.push({ startOffset: start, nextOffset: next, line: raw.toString(\"utf8\").replace(/\\r?\\n$/, \"\") });\n lineStart = i + 1;\n }\n return results;\n}\n// Read only [offset, offset+length) by seeking, instead of slurping the whole file each poll — an active\n// transcript can be many MB and this runs ~every second. Mirrors the Python listener's seek()+read().\nfunction readFromOffset(sourcePath, offset, length) {\n if (length <= 0)\n return Buffer.alloc(0);\n let fd;\n try {\n fd = openSync(sourcePath, \"r\");\n }\n catch {\n return Buffer.alloc(0);\n }\n try {\n const buffer = Buffer.alloc(length);\n const read = readSync(fd, buffer, 0, length, offset);\n return read === length ? buffer : buffer.subarray(0, read);\n }\n catch {\n return Buffer.alloc(0);\n }\n finally {\n closeSync(fd);\n }\n}\nfunction jsonlDeclaresWorkspace(file, workspace) {\n for (const item of jsonlHead(file, CLAUDE_DISCOVERY_HEAD)) {\n const cwd = stringField(item, \"cwd\");\n if (cwd && path.resolve(cwd) === workspace)\n return true;\n }\n return false;\n}\nfunction codexJsonlDeclaresWorkspace(file, workspace) {\n for (const item of jsonlHead(file, CODEX_DISCOVERY_HEAD)) {\n if (item.type !== \"session_meta\")\n continue;\n const payload = item.payload;\n if (!isRecord(payload))\n continue;\n const cwd = payload.cwd;\n if (typeof cwd !== \"string\" || path.resolve(cwd) !== workspace)\n continue;\n // Bind backfill to the agent's own primary session. Codex spawns subagent threads in the SAME\n // workspace cwd (session_meta marks them: parent_thread_id / thread_source \"subagent\" / source.subagent);\n // posting their final answers would deliver another session's reply as this agent's captain chat turn.\n return !isCodexSubagentSession(payload);\n }\n return false;\n}\nfunction isCodexSubagentSession(payload) {\n if (payload.parent_thread_id != null)\n return true;\n if (payload.thread_source === \"subagent\")\n return true;\n return isRecord(payload.source) && \"subagent\" in payload.source;\n}\nfunction jsonlHead(file, limit) {\n let text;\n try {\n text = readFileSync(file, \"utf8\"); // intentional — parse an agent transcript file for backfill\n }\n catch {\n return [];\n }\n const items = [];\n for (const line of text.split(\"\\n\").slice(0, limit)) {\n let item;\n try {\n item = JSON.parse(line);\n }\n catch {\n continue;\n }\n if (isRecord(item))\n items.push(item);\n }\n return items;\n}\nfunction walkFiles(root) {\n let entries;\n try {\n entries = readdirSync(root, { withFileTypes: true });\n }\n catch {\n return [];\n }\n const files = [];\n for (const entry of entries) {\n const full = path.join(root, entry.name);\n if (entry.isDirectory())\n files.push(...walkFiles(full));\n else if (entry.isFile())\n files.push(full);\n }\n return files;\n}\nfunction sortNewest(paths, limit = NEWEST_SOURCE_LIMIT) {\n return orderByNewestMtime(paths).slice(0, limit);\n}\nfunction orderByNewestMtime(paths) {\n return [...paths].sort((a, b) => (safeStat(b)?.mtimeMs ?? 0) - (safeStat(a)?.mtimeMs ?? 0));\n}\nexport function pathFingerprint(sourcePath) {\n const stat = safeStat(sourcePath);\n return stat ? fingerprintFromStat(stat) : { missing: 1 };\n}\nfunction fingerprintFromStat(stat) {\n return { inode: Number(stat.ino), mtimeMs: Math.trunc(stat.mtimeMs), size: stat.size };\n}\nfunction safeStat(sourcePath) {\n try {\n return statSync(sourcePath);\n }\n catch {\n return null;\n }\n}\nexport function parseTimestamp(value) {\n if (!value)\n return null;\n const hasTz = /([+-]\\d{2}:?\\d{2}|[Zz])$/.test(value);\n const normalized = hasTz ? value : `${value}Z`;\n const parsed = new Date(normalized);\n return Number.isNaN(parsed.getTime()) ? null : parsed;\n}\nexport function stringField(item, ...names) {\n for (const name of names) {\n const value = item[name];\n if (typeof value === \"string\" && value)\n return value;\n }\n return null;\n}\nfunction eventHash(engine, sourcePath, offset, rawLine) {\n return createHash(\"sha256\").update(`${engine}\\0${sourcePath}\\0${offset}\\0${rawLine}`).digest(\"hex\").slice(0, 32);\n}\nfunction isPermanentPostError(error) {\n const status = httpStatusFromError(error);\n return status !== null && status >= 400 && status < 500;\n}\nfunction httpStatusFromError(error) {\n if (isRecord(error) && typeof error.status === \"number\")\n return error.status;\n return null;\n}\nexport function isRecord(value) {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\nexport function errorMessage(error) {\n return error instanceof Error ? error.message : String(error);\n}\n//# sourceMappingURL=transcript-backfill.js.map",
|
|
41
41
|
"import { statSync } from \"node:fs\";\nimport path from \"node:path\";\nimport { BackfillStateStore, errorMessage, isRecord, parseTimestamp, pathFingerprint, readCompleteLines, stringField, TranscriptSourceDiscovery, } from \"./transcript-backfill.js\";\nimport { waitForWakeableTimeout } from \"./wait.js\";\n// Port of the Python listener's token-usage collector (engine/sailorbridge/listener/usage_collector.py).\n// Every ~minute it sweeps the agent's local session artifacts (claude transcript / codex rollout jsonl),\n// aggregates per-message usage into 5-minute model+effort buckets, and reports them to the relay. Fail-fast:\n// an unreadable source or a malformed usage line is reported as an explicit probe_failed marker — never an\n// estimate. State (per-file offset + posted refs) advances only after the relay accepts a report, and every\n// source_ref is deterministic, so crash/retry overlap is absorbed by the relay's idempotent dedup.\nexport const SUPPORTED_USAGE_ENGINES = new Set([\"claude\", \"codex\"]);\nconst USAGE_STATE_DIR_NAME = \"token-usage-state\";\nconst SWEEP_INTERVAL_MS = 60_000;\n// Dispatch-mandated aggregation granularity: 5-minute windows per model+effort.\nconst BUCKET_WINDOW_SEC = 300;\n// A window with no newer line yet is reported once wall clock passes its end by this grace; a straggler\n// landing later becomes a per-line supplemental row.\nconst WINDOW_CLOSE_GRACE_MS = 60_000;\nconst MAX_EVENTS_PER_REPORT = 500;\n// History rescan covers this many newest matching session files per agent.\nconst DISCOVERY_LIMIT = 64;\n// One sweep reads at most this many bytes per source, so a first sweep over a multi-hundred-MB history file\n// consumes bounded memory; the remainder is picked up by subsequent sweeps (window refs stay deterministic,\n// and a window split across slices resolves through the supplemental-row path).\nconst USAGE_READ_CHUNK_BYTES = 8 * 1024 * 1024;\nconst TOKEN_CLASS_FIELDS = [\n \"input_tokens\",\n \"cache_write_tokens\",\n \"cache_read_tokens\",\n \"output_tokens\",\n \"reasoning_tokens\",\n];\nexport class UsageCollector {\n options;\n ready = false;\n stopped = false;\n stateStore;\n discovery;\n now;\n sleep;\n logger;\n wake = null;\n constructor(options) {\n this.options = options;\n this.stateStore = options.stateStore !== undefined\n ? options.stateStore\n : BackfillStateStore.forConfig({ workspace: options.workspace, session: options.session, agentName: options.agentName }, USAGE_STATE_DIR_NAME);\n this.discovery = options.discovery ?? null;\n this.now = options.now ?? (() => new Date());\n this.sleep = options.sleep;\n this.logger = options.logger ?? (() => { });\n }\n stop() {\n this.stopped = true;\n this.wake?.();\n }\n async runLoop() {\n if (!this.ensureReady())\n return;\n while (!this.stopped) {\n try {\n await this.runOnce();\n }\n catch (error) {\n this.log(\"usage_collector_loop_error\", { agent: this.options.agentName, error: errorMessage(error) });\n }\n if (this.stopped)\n return;\n await waitForWakeableTimeout(SWEEP_INTERVAL_MS, (wake) => { this.wake = wake; }, this.sleep);\n }\n }\n // One sweep over all discovered sources; returns the number of reported event rows.\n async runOnce() {\n if (!this.ensureReady())\n return 0;\n if (!this.discovery)\n throw new Error(\"usage collector discovery is not initialized\");\n const sources = this.discovery.discover();\n let reported = 0;\n for (const source of sources) {\n reported += await this.processSource(source);\n }\n return reported;\n }\n ensureReady() {\n if (this.ready)\n return true;\n if (!SUPPORTED_USAGE_ENGINES.has(this.options.engine)) {\n this.log(\"usage_collector_unsupported_engine\", { agent: this.options.agentName, engine: this.options.engine });\n return false;\n }\n if (!this.options.workspace || !this.options.session) {\n this.log(\"usage_collector_disabled\", { agent: this.options.agentName, reason: \"missing_workspace_or_session\" });\n return false;\n }\n if (!this.stateStore) {\n this.log(\"usage_collector_disabled\", { agent: this.options.agentName, reason: \"missing_state_store\" });\n return false;\n }\n try {\n this.stateStore.ensureWritable();\n }\n catch (error) {\n this.log(\"usage_collector_disabled\", { agent: this.options.agentName, reason: errorMessage(error) });\n return false;\n }\n if (!this.discovery) {\n this.discovery = new TranscriptSourceDiscovery(this.options.engine, this.options.workspace, {\n ...this.options.transcriptRoots,\n limit: DISCOVERY_LIMIT,\n });\n }\n this.ready = true;\n return true;\n }\n async processSource(source) {\n const store = this.stateStore;\n const sweep = this.collectSource(source);\n if (sweep === null)\n return 0;\n if (sweep.events.length > 0) {\n const posted = await this.postEvents(sweep.events);\n // State stays put on failure; the same deterministic refs are rebuilt and retried next sweep, and the\n // relay dedupes any overlap.\n if (!posted)\n return 0;\n }\n const fingerprint = pathFingerprint(source);\n const endOffset = sweep.endOffset ?? store.offset(source);\n for (const ref of sweep.refs) {\n store.rememberPostedEvent(source, ref, endOffset, fingerprint);\n }\n if (sweep.context !== null) {\n const state = store.sourceState(source);\n state.context_model = sweep.context[0];\n state.context_effort = sweep.context[1] ?? undefined;\n }\n if (sweep.endOffset !== null) {\n store.rememberProcessedOffset(source, sweep.endOffset, fingerprint);\n }\n return sweep.events.length;\n }\n // Synchronous filesystem/parse half of one source sweep.\n collectSource(source) {\n const store = this.stateStore;\n const offset = store.offset(source);\n const sourceKey = `${this.options.engine}:${path.parse(source).name}`;\n const items = readCompleteLines(source, offset, this.options.readChunkBytes ?? USAGE_READ_CHUNK_BYTES);\n // readCompleteLines returns [] both for an unreadable source and for a source with no new complete lines.\n // Disambiguate by stat: an unreadable source must surface a probe marker once; an empty/stalled source\n // simply yields nothing this sweep.\n if (items.length === 0) {\n const unreadable = sourceUnreadableReason(source);\n if (unreadable === null)\n return null;\n const markerRef = `${sourceKey}:probe:${offset}`;\n if (store.hasPostedEvent(source, markerRef))\n return null;\n const marker = this.markerEvent(markerRef, unreadable);\n return { events: [marker], refs: [markerRef], endOffset: null, context: null };\n }\n const state = store.sourceState(source);\n let contextModel = typeof state.context_model === \"string\" ? state.context_model : null;\n let contextEffort = typeof state.context_effort === \"string\" ? state.context_effort : null;\n const parsed = [];\n for (const item of items) {\n const line = this.parseLine(item, contextModel, contextEffort);\n if (line.context != null)\n [contextModel, contextEffort] = line.context;\n parsed.push(line);\n }\n const consumed = parsed.slice(0, this.consumptionBoundary(parsed, this.now()));\n if (consumed.length === 0)\n return null;\n const { events, refs } = this.eventsForConsumed(source, sourceKey, consumed);\n let consumedContext = null;\n for (const line of consumed) {\n if (line.context != null)\n consumedContext = line.context;\n }\n return { events, refs, endOffset: consumed[consumed.length - 1].item.nextOffset, context: consumedContext };\n }\n // Index of the first line still in an open window; lines after it are re-read next sweep so a window is\n // always reported from full content.\n consumptionBoundary(parsed, now) {\n let newest = null;\n for (const line of parsed) {\n if (line.record)\n newest = Math.max(newest ?? -Infinity, line.record.timestamp.getTime());\n }\n for (let index = 0; index < parsed.length; index += 1) {\n const record = parsed[index].record;\n if (!record)\n continue;\n const windowEnd = windowStartMs(record.timestamp) + BUCKET_WINDOW_SEC * 1000;\n const newerLineExists = newest !== null && newest >= windowEnd;\n if (!newerLineExists && now.getTime() < windowEnd + WINDOW_CLOSE_GRACE_MS)\n return index;\n }\n return parsed.length;\n }\n eventsForConsumed(source, sourceKey, consumed) {\n const store = this.stateStore;\n const events = [];\n const refs = [];\n const buckets = new Map();\n const seenLineRefs = new Set();\n for (const line of consumed) {\n if (line.markerReason != null) {\n const ref = `${sourceKey}:probe-line:${line.item.startOffset}`;\n if (!store.hasPostedEvent(source, ref)) {\n events.push(this.markerEvent(ref, line.markerReason));\n refs.push(ref);\n }\n continue;\n }\n const record = line.record;\n if (!record)\n continue;\n // Claude writes one assistant line per content block; blocks of the same API request repeat the same\n // usage object — count it once.\n if (seenLineRefs.has(record.lineRef))\n continue;\n seenLineRefs.add(record.lineRef);\n const windowIso = isoUtcSeconds(new Date(windowStartMs(record.timestamp)));\n const key = `${windowIso}\u0000${record.model}\u0000${record.effort ?? \"\"}`;\n const bucket = buckets.get(key);\n if (bucket)\n bucket.records.push(record);\n else\n buckets.set(key, { windowIso, model: record.model, effort: record.effort, records: [record] });\n }\n for (const { windowIso, model, effort, records } of sortedBuckets(buckets)) {\n const bucketRef = `${sourceKey}:${windowIso}:${model}:${effort || \"-\"}`;\n if (!store.hasPostedEvent(source, bucketRef)) {\n events.push(this.bucketEvent(bucketRef, windowIso, model, effort, records));\n refs.push(bucketRef);\n continue;\n }\n // Straggler: the window was already reported; report the late lines individually so nothing is lost or\n // double-counted.\n for (const record of records) {\n const supplementalRef = `${bucketRef}:${record.lineRef}`;\n if (store.hasPostedEvent(source, supplementalRef))\n continue;\n events.push(this.bucketEvent(supplementalRef, windowIso, model, effort, [record]));\n refs.push(supplementalRef);\n }\n }\n return { events, refs };\n }\n bucketEvent(ref, windowIso, model, effort, records) {\n const windowStartAt = new Date(windowIso);\n const windowEndAt = new Date(windowStartAt.getTime() + BUCKET_WINDOW_SEC * 1000);\n return {\n engine: this.options.engine,\n model,\n effort,\n input_tokens: sumCounts(records, \"input_tokens\"),\n cache_write_tokens: sumCounts(records, \"cache_write_tokens\"),\n cache_read_tokens: sumCounts(records, \"cache_read_tokens\"),\n output_tokens: sumCounts(records, \"output_tokens\"),\n reasoning_tokens: sumCounts(records, \"reasoning_tokens\"),\n window_started_at: windowIso,\n window_ended_at: isoUtcSeconds(windowEndAt),\n source: this.options.engine === \"claude\" ? \"transcript\" : \"rollout\",\n source_ref: ref,\n };\n }\n markerEvent(ref, reason) {\n const now = isoUtcSeconds(this.now());\n return {\n engine: this.options.engine,\n model: null,\n effort: null,\n input_tokens: null,\n cache_write_tokens: null,\n cache_read_tokens: null,\n output_tokens: null,\n reasoning_tokens: null,\n window_started_at: now,\n window_ended_at: now,\n source: this.options.engine === \"claude\" ? \"transcript\" : \"rollout\",\n source_ref: ref,\n probe_failed_reason: reason,\n };\n }\n parseLine(item, contextModel, contextEffort) {\n let data;\n try {\n data = JSON.parse(item.line);\n }\n catch {\n return { item };\n }\n if (!isRecord(data))\n return { item };\n if (this.options.engine === \"claude\")\n return parseClaudeLine(item, data);\n return parseCodexLine(item, data, contextModel, contextEffort);\n }\n async postEvents(events) {\n try {\n for (let start = 0; start < events.length; start += MAX_EVENTS_PER_REPORT) {\n const chunk = events.slice(start, start + MAX_EVENTS_PER_REPORT);\n await this.options.relay.postAgentTokenUsage(this.options.agentName, chunk);\n }\n return true;\n }\n catch (error) {\n this.log(\"usage_report_failed\", {\n agent: this.options.agentName,\n engine: this.options.engine,\n error: errorMessage(error),\n events: events.length,\n });\n return false;\n }\n }\n log(event, fields) {\n this.logger(event, fields);\n }\n}\n// ---- module-private helpers ----------------------------------------------\nfunction parseClaudeLine(item, data) {\n if (data.type !== \"assistant\")\n return { item };\n const message = data.message;\n const usage = isRecord(message) ? message.usage : undefined;\n if (!isRecord(usage))\n return { item };\n const timestamp = parseTimestamp(stringField(data, \"timestamp\"));\n const model = isRecord(message) ? stringField(message, \"model\") : null;\n if (timestamp === null || model === null)\n return { item, markerReason: \"usage line missing timestamp or model\" };\n const validated = validatedCounts({\n input_tokens: usage.input_tokens,\n cache_write_tokens: usage.cache_creation_input_tokens,\n cache_read_tokens: usage.cache_read_input_tokens,\n output_tokens: usage.output_tokens,\n });\n if (validated === null)\n return { item, markerReason: \"usage counters are malformed\" };\n const lineRef = stringField(data, \"requestId\", \"uuid\") ?? String(item.startOffset);\n return {\n item,\n record: {\n timestamp,\n model,\n effort: stringField(data, \"effort\"),\n input_tokens: validated.input_tokens ?? null,\n cache_write_tokens: validated.cache_write_tokens ?? null,\n cache_read_tokens: validated.cache_read_tokens ?? null,\n output_tokens: validated.output_tokens ?? null,\n reasoning_tokens: null,\n lineRef,\n },\n };\n}\nfunction parseCodexLine(item, data, contextModel, contextEffort) {\n const payload = data.payload;\n if (data.type === \"turn_context\" && isRecord(payload)) {\n const model = stringField(payload, \"model\");\n if (model !== null)\n return { item, context: [model, stringField(payload, \"effort\")] };\n return { item };\n }\n if (data.type !== \"event_msg\" || !isRecord(payload) || payload.type !== \"token_count\")\n return { item };\n const info = payload.info;\n const last = isRecord(info) ? info.last_token_usage : undefined;\n // intentional — codex emits count-less token_count heartbeats (rate-limit refreshes); nothing measured.\n if (!isRecord(last))\n return { item };\n const timestamp = parseTimestamp(stringField(data, \"timestamp\"));\n if (timestamp === null)\n return { item, markerReason: \"token_count line missing timestamp\" };\n if (contextModel === null)\n return { item, markerReason: \"token_count line precedes any turn_context model\" };\n const validated = validatedCounts({\n input_tokens: last.input_tokens,\n cache_read_tokens: last.cached_input_tokens,\n output_tokens: last.output_tokens,\n reasoning_tokens: last.reasoning_output_tokens,\n });\n if (validated === null)\n return { item, markerReason: \"usage counters are malformed\" };\n return {\n item,\n record: {\n timestamp,\n model: contextModel,\n effort: contextEffort,\n input_tokens: validated.input_tokens ?? null,\n cache_write_tokens: null,\n cache_read_tokens: validated.cache_read_tokens ?? null,\n output_tokens: validated.output_tokens ?? null,\n reasoning_tokens: validated.reasoning_tokens ?? null,\n lineRef: String(item.startOffset),\n },\n };\n}\nfunction validatedCounts(counts) {\n const validated = {};\n let any = false;\n for (const field of Object.keys(counts)) {\n const value = counts[field];\n if (value === undefined || value === null)\n continue;\n if (typeof value !== \"number\" || !Number.isInteger(value) || value < 0)\n return null;\n validated[field] = value;\n any = true;\n }\n return any ? validated : null;\n}\nfunction sumCounts(records, field) {\n let total = 0;\n let any = false;\n for (const record of records) {\n const value = record[field];\n if (value === null)\n continue;\n total += value;\n any = true;\n }\n return any ? total : null;\n}\nfunction windowStartMs(timestamp) {\n const epochSec = Math.floor(Math.floor(timestamp.getTime() / 1000) / BUCKET_WINDOW_SEC) * BUCKET_WINDOW_SEC;\n return epochSec * 1000;\n}\n// Match Python datetime.isoformat() for whole-second UTC instants: \"YYYY-MM-DDTHH:MM:SS+00:00\". Window\n// boundaries are always 300s-aligned (no fractional seconds); markers stamp whole-second \"now\".\nfunction isoUtcSeconds(date) {\n const pad = (n) => String(n).padStart(2, \"0\");\n return (`${date.getUTCFullYear()}-${pad(date.getUTCMonth() + 1)}-${pad(date.getUTCDate())}` +\n `T${pad(date.getUTCHours())}:${pad(date.getUTCMinutes())}:${pad(date.getUTCSeconds())}+00:00`);\n}\nfunction sortedBuckets(buckets) {\n return [...buckets.entries()].sort(([a], [b]) => (a < b ? -1 : a > b ? 1 : 0)).map(([, value]) => value);\n}\nfunction sourceUnreadableReason(source) {\n try {\n statSync(source);\n return null;\n }\n catch (error) {\n const code = isRecord(error) && typeof error.code === \"string\" ? error.code : \"unknown\";\n return `source unreadable: ${code}`;\n }\n}\n//# sourceMappingURL=usage-collector.js.map",
|
|
42
42
|
"import { ClaudeAgentSdkDriver, CodexSdkDriver, PtyDriver, TmuxDriver, } from \"../driver/index.js\";\nexport const SUPPORTED_PHASE1_CLI_KINDS = [\"claude\", \"codex\"];\nexport const PHASE1_ENGINE_GATE_MESSAGE = \"Only claude and codex engines are available in this release; opencode and custom CLI engines will open in the next release.\";\nexport const PHASE1_TRANSPORT_GATE_MESSAGE = \"Only tmux transport is available in this release; sdk, headless, and pty transports will open in the next release.\";\nexport const TMUX_RUNNING_COMMANDS_BY_CLI = {\n claude: [\"claude\"],\n codex: [\"codex\", \"node\", \"codex-*\"],\n};\n// Pane substrings that only the fully painted composer shows — calibrated on a\n// live host (tw, 2026-07-22: claude 2.1.217 bypass+manual modes, codex 0.144.1).\n// None of them appear on the pre-screens (trust/bypass dialogs, update prompt,\n// auth onboarding), so a match means the input surface can accept a paste.\nexport const TMUX_READY_MARKERS_BY_CLI = {\n claude: [\"bypass permissions on\", \"? for shortcuts\", \"← for agents\"],\n codex: [\">_ OpenAI Codex\", \"/model to change\"],\n};\n// Phase 1 exposes only claude/codex on tmux. Other drivers remain in the codebase\n// behind the release gate so they can reopen next release without a rewrite.\nexport const DEFAULT_TRANSPORTS = {\n claude: \"tmux\",\n codex: \"tmux\",\n};\n// claude/codex default to tmux: running the real first-party CLI keeps the\n// agent under the captain's Claude/Codex subscription (third-party SDK harnesses\n// are billed per-API and bypass the prompt cache, owner 2026-06-16) and unlocks\n// tmux screen-view + attach (spec §4.2).\nconst CODEX_TMUX_SUBMIT_KEYS = [\"C-m\"];\nconst CLI_ID_RE = /^[a-z][a-z0-9._-]{0,63}$/;\nexport function isCliKind(value) {\n if (typeof value !== \"string\")\n return false;\n const trimmed = value.trim();\n return trimmed === value\n && CLI_ID_RE.test(trimmed)\n && !/[._-]$/.test(trimmed)\n && !trimmed.includes(\"..\");\n}\nexport function deriveTmuxSession(agentNameOrOptions) {\n const options = typeof agentNameOrOptions === \"string\" ? { team: agentNameOrOptions } : agentNameOrOptions;\n const team = _safeTmuxNamePart(options.team);\n const role = _safeTmuxNamePart(options.role);\n const captain = _safeTmuxNamePart(options.captainNumber);\n const agent = _safeTmuxNamePart(options.agentName);\n const nameParts = [team, role].filter(Boolean);\n if (!nameParts.length)\n return \"\";\n const parts = [\"sb\", ...nameParts];\n if (options.includeCaptainNumber && captain)\n parts.push(captain);\n if (options.includeAgentName && agent)\n parts.push(agent);\n return parts.filter(Boolean).join(\"-\");\n}\nexport function resolveTransport(options) {\n validateResolveOptions(options);\n const transport = options.transport === undefined || options.transport === \"auto\"\n ? defaultTransport(options.cli)\n : options.transport;\n assertTransportAllowed(options.cli, transport);\n const command = options.command?.length ? normalizeCommand(options.command) : defaultCommand(options.cli, options.cwd, options.driverOptions);\n // Derive a default tmux session when none was supplied.\n const tmuxSession = transport === \"tmux\"\n ? (options.tmuxSession?.trim() || _deriveDefaultTmuxSession(options))\n : options.tmuxSession;\n if (transport === \"tmux\" && !tmuxSession) {\n throw new Error(\"tmux transport requires --tmux-session or an agent name to derive it from\");\n }\n if ((transport === \"pty\" || transport === \"tmux\") && command.length === 0) {\n throw new Error(`${transport} transport requires a command`);\n }\n return {\n cli: options.cli,\n transport,\n command,\n ...(transport === \"tmux\" ? { tmuxSession } : {}),\n createDriver: () => createDriver(options.cli, transport, tmuxSession, options.driverOptions),\n };\n}\nfunction _deriveDefaultTmuxSession(options) {\n const named = options.tmuxSessionName ? deriveTmuxSession(options.tmuxSessionName) : \"\";\n if (named)\n return named;\n return options.agentName ? deriveTmuxSession(options.agentName) : \"\";\n}\nfunction _safeTmuxNamePart(value) {\n return value?.trim().replace(/[^A-Za-z0-9_-]+/g, \"-\").replace(/^-+|-+$/g, \"\") ?? \"\";\n}\nexport function defaultCommand(cli, cwd, driverOptions = {}) {\n if (!cwd.trim())\n throw new Error(\"cwd is required\");\n if (cli === \"claude\")\n return defaultClaudeCommand(driverOptions.claude);\n if (cli === \"codex\")\n return defaultCodexCommand(driverOptions.codex);\n if (cli === \"opencode\")\n return [\"opencode\", cwd];\n if (cli === \"copilot\")\n return [\"copilot\", \"-C\", cwd];\n throw new Error(`custom cli ${cli} requires an explicit command`);\n}\nfunction defaultClaudeCommand(options) {\n const model = cliModelArguments(options?.model);\n if (options?.permissionMode && options.permissionMode !== \"bypassPermissions\") {\n return [\"claude\", \"--permission-mode\", options.permissionMode, ...model];\n }\n return [\"claude\", \"--dangerously-skip-permissions\", ...model];\n}\nfunction defaultCodexCommand(options) {\n assertCodexSafetyConsistent(options);\n const hasSafety = options?.yolo !== undefined || options?.sandboxMode !== undefined || options?.approvalPolicy !== undefined;\n if (!hasSafety || options?.yolo === true)\n return [\"codex\", \"--dangerously-bypass-approvals-and-sandbox\", ...cliModelArguments(options?.model)];\n const command = [\"codex\"];\n if (options?.sandboxMode)\n command.push(\"--sandbox\", options.sandboxMode);\n if (options?.approvalPolicy)\n command.push(\"--ask-for-approval\", options.approvalPolicy);\n return [...command, ...cliModelArguments(options?.model)];\n}\nfunction cliModelArguments(model) {\n if (model === undefined)\n return [];\n const value = model.trim();\n if (!value)\n throw new Error(\"model is required\");\n return [\"--model\", value];\n}\nfunction defaultTransport(cli) {\n assertPhase1CliAllowed(cli);\n return \"tmux\";\n}\nfunction createDriver(cli, transport, tmuxSession, options = {}) {\n const sdkLike = transport === \"sdk\" || transport === \"headless\";\n if (sdkLike && cli === \"claude\")\n return new ClaudeAgentSdkDriver(defaultClaudeSdkOptions(options.claude));\n if (sdkLike && cli === \"codex\")\n return new CodexSdkDriver(defaultCodexSdkOptions(options.codex));\n if (transport === \"pty\")\n return new PtyDriver(options.pty);\n if (transport === \"tmux\") {\n return new TmuxDriver({\n ...options.tmux,\n runningCommands: options.tmux?.runningCommands ?? _tmuxRunningCommands(cli),\n readyMarkers: options.tmux?.readyMarkers ?? _tmuxReadyMarkers(cli),\n ...(cli === \"codex\" && options.tmux?.submitKeys === undefined ? { submitKeys: [...CODEX_TMUX_SUBMIT_KEYS] } : {}),\n tmuxSession: tmuxSession ?? \"\",\n });\n }\n throw new Error(`unsupported transport ${transport} for ${cli}`);\n}\nfunction _tmuxRunningCommands(cli) {\n if (cli === \"claude\" || cli === \"codex\")\n return [...TMUX_RUNNING_COMMANDS_BY_CLI[cli]];\n throw new Error(`tmux running commands are not configured for ${cli}`);\n}\nfunction _tmuxReadyMarkers(cli) {\n if (cli === \"claude\" || cli === \"codex\")\n return [...TMUX_READY_MARKERS_BY_CLI[cli]];\n return []; // intentional — no calibrated marker for custom CLIs; gate disabled\n}\nfunction defaultClaudeSdkOptions(options = {}) {\n const permissionMode = options.permissionMode ?? \"bypassPermissions\";\n return {\n ...options,\n permissionMode,\n ...(permissionMode === \"bypassPermissions\" && options.allowDangerouslySkipPermissions === undefined\n ? { allowDangerouslySkipPermissions: true }\n : {}),\n };\n}\nfunction defaultCodexSdkOptions(options = {}) {\n assertCodexSafetyConsistent(options);\n const explicitSafety = options.yolo !== undefined || options.sandboxMode !== undefined || options.approvalPolicy !== undefined;\n const yolo = options.yolo ?? !explicitSafety;\n const base = {\n ...options,\n yolo,\n };\n if (yolo)\n return base;\n return {\n ...base,\n sandboxMode: options.sandboxMode,\n approvalPolicy: options.approvalPolicy,\n };\n}\nfunction assertCodexSafetyConsistent(options) {\n if (options?.yolo === true && (options.sandboxMode !== undefined || options.approvalPolicy !== undefined)) {\n throw new Error(\"yolo true cannot be combined with sandboxMode or approvalPolicy\");\n }\n}\nfunction assertTransportAllowed(cli, transport) {\n assertPhase1CliAllowed(cli);\n if (transport !== \"tmux\") {\n throw new Error(PHASE1_TRANSPORT_GATE_MESSAGE);\n }\n}\nexport function assertPhase1CliAllowed(cli) {\n if (!SUPPORTED_PHASE1_CLI_KINDS.includes(cli)) {\n throw new Error(PHASE1_ENGINE_GATE_MESSAGE);\n }\n}\nfunction normalizeCommand(command) {\n if (command.some((part) => !part.trim()))\n throw new Error(\"command argv parts must be non-empty\");\n return [...command];\n}\nfunction validateResolveOptions(options) {\n if (!isCliKind(options.cli))\n throw new Error(`unsupported cli: ${options.cli}`);\n if (!options.cwd.trim())\n throw new Error(\"cwd is required\");\n if (hasClaudeSafetyDriverOptions(options.driverOptions) && options.cli !== \"claude\") {\n throw new Error(`claude safety driverOptions require cli claude, got ${options.cli}`);\n }\n if (hasCodexSafetyDriverOptions(options.driverOptions) && options.cli !== \"codex\") {\n throw new Error(`codex safety driverOptions require cli codex, got ${options.cli}`);\n }\n if (options.command?.length && hasSafetyDriverOptions(options.driverOptions)) {\n throw new Error(\"explicit command cannot be combined with safety driverOptions\");\n }\n}\nfunction hasSafetyDriverOptions(options) {\n return hasClaudeSafetyDriverOptions(options) || hasCodexSafetyDriverOptions(options);\n}\nfunction hasClaudeSafetyDriverOptions(options) {\n return options?.claude?.permissionMode !== undefined\n || options?.claude?.allowDangerouslySkipPermissions !== undefined;\n}\nfunction hasCodexSafetyDriverOptions(options) {\n return options?.codex?.sandboxMode !== undefined\n || options?.codex?.approvalPolicy !== undefined\n || options?.codex?.yolo !== undefined;\n}\n//# sourceMappingURL=transport.js.map",
|
|
43
43
|
"import { PHASE1_TRANSPORT_GATE_MESSAGE, assertPhase1CliAllowed, isCliKind, } from \"./transport.js\";\nexport function parseSuperviseArgs(argv) {\n const split = argv.indexOf(\"--\");\n const flagArgs = split >= 0 ? argv.slice(0, split) : argv;\n const command = split >= 0 ? argv.slice(split + 1) : [];\n const flags = parseFlags(flagArgs);\n const cli = parseCli(requireFlag(flags, \"cli\"));\n const driverOptions = _parseDriverOptions(flags, cli, command);\n return {\n agentName: requireFlag(flags, \"agent\"),\n cli,\n cwd: requireFlag(flags, \"cwd\"),\n transport: parseTransport(flags.transport),\n command,\n tmuxSession: flags[\"tmux-session\"],\n iOwnThisAgent: flags[\"i-own-this-agent\"] === \"true\",\n waitTimeoutSec: optionalNumber(flags[\"wait-timeout-sec\"], \"wait-timeout-sec\"),\n livenessIntervalMs: optionalNumber(flags[\"liveness-interval-ms\"], \"liveness-interval-ms\"),\n relaunchMaxFailures: optionalNumber(flags[\"relaunch-max-failures\"], \"relaunch-max-failures\"),\n driverOptions,\n };\n}\nexport function assertSingleOwnerConfirmed(options) {\n if (!options.iOwnThisAgent) {\n throw new Error(\"supervise requires --i-own-this-agent true; do not run two supervisors/listeners for the same agent_name\");\n }\n}\nfunction parseFlags(argv) {\n const values = {};\n for (let i = 0; i < argv.length; i += 1) {\n const item = argv[i];\n if (!item.startsWith(\"--\"))\n throw new Error(`unexpected argument: ${item}`);\n const key = item.slice(2);\n const next = argv[i + 1];\n if (next === undefined || next.startsWith(\"--\")) {\n if (key === \"model\")\n throw new Error(\"--model requires a value\");\n values[key] = \"true\";\n continue;\n }\n values[key] = next;\n i += 1;\n }\n return values;\n}\nfunction requireFlag(values, key) {\n const value = values[key]?.trim();\n if (!value)\n throw new Error(`--${key} is required`);\n return value;\n}\nfunction parseCli(value) {\n if (isCliKind(value)) {\n assertPhase1CliAllowed(value);\n return value;\n }\n throw new Error(`unsupported cli: ${value}`);\n}\nfunction parseTransport(value) {\n if (value === undefined)\n return \"auto\";\n if (value === \"tmux\")\n return value;\n if (value === \"auto\")\n throw new Error(PHASE1_TRANSPORT_GATE_MESSAGE);\n if (value === \"sdk\" || value === \"pty\" || value === \"headless\") {\n throw new Error(PHASE1_TRANSPORT_GATE_MESSAGE);\n }\n throw new Error(`unsupported transport: ${value}`);\n}\nfunction optionalNumber(value, label) {\n if (value === undefined)\n return undefined;\n const parsed = Number(value);\n if (!Number.isFinite(parsed) || parsed <= 0)\n throw new Error(`--${label} must be a positive number`);\n return parsed;\n}\nconst CLAUDE_PERMISSION_MODES = [\"default\", \"acceptEdits\", \"bypassPermissions\", \"plan\", \"dontAsk\", \"auto\"];\nconst CODEX_SANDBOX_MODES = [\"read-only\", \"workspace-write\", \"danger-full-access\"];\nconst CODEX_APPROVAL_POLICIES = [\"never\", \"on-request\", \"on-failure\", \"untrusted\"];\nfunction _parseDriverOptions(flags, cli, command) {\n _rejectMismatchedDriverOptions(flags, cli, command);\n return {\n claude: parseClaudeDriverOptions(flags),\n codex: parseCodexDriverOptions(flags),\n };\n}\nfunction _rejectMismatchedDriverOptions(flags, cli, command) {\n if (flags[\"permission-mode\"] !== undefined && cli !== \"claude\") {\n throw new Error(\"--permission-mode is only valid for --cli claude\");\n }\n const hasCodexSafety = flags[\"sandbox-mode\"] !== undefined || flags[\"approval-policy\"] !== undefined || flags.yolo !== undefined;\n if (hasCodexSafety && cli !== \"codex\") {\n throw new Error(\"--sandbox-mode/--approval-policy/--yolo are only valid for --cli codex\");\n }\n if (flags.yolo === \"true\" && (flags[\"sandbox-mode\"] !== undefined || flags[\"approval-policy\"] !== undefined)) {\n throw new Error(\"--yolo true cannot be combined with --sandbox-mode or --approval-policy\");\n }\n if (command.length > 0 && flags.model !== undefined) {\n throw new Error(\"explicit command cannot be combined with --model; put --model in the command or omit command\");\n }\n if (command.length > 0 && (flags[\"permission-mode\"] !== undefined || hasCodexSafety)) {\n throw new Error(\"explicit command cannot be combined with --permission-mode/--sandbox-mode/--approval-policy/--yolo\");\n }\n}\nfunction parseClaudeDriverOptions(flags) {\n const permissionMode = optionalChoice(flags[\"permission-mode\"], CLAUDE_PERMISSION_MODES, \"--permission-mode\");\n const model = optionalModel(flags.model);\n return {\n ...(permissionMode === undefined ? {} : { permissionMode }),\n ...(permissionMode === \"bypassPermissions\" ? { allowDangerouslySkipPermissions: true } : {}),\n model,\n };\n}\nfunction parseCodexDriverOptions(flags) {\n const sandboxMode = optionalChoice(flags[\"sandbox-mode\"], CODEX_SANDBOX_MODES, \"--sandbox-mode\");\n const approvalPolicy = optionalChoice(flags[\"approval-policy\"], CODEX_APPROVAL_POLICIES, \"--approval-policy\");\n const yolo = optionalBoolean(flags.yolo, \"--yolo\");\n const model = optionalModel(flags.model);\n return {\n ...(sandboxMode === undefined ? {} : { sandboxMode }),\n ...(approvalPolicy === undefined ? {} : { approvalPolicy }),\n ...(yolo === undefined ? {} : { yolo }),\n model,\n };\n}\nfunction optionalModel(value) {\n if (value === undefined)\n return undefined;\n const model = value.trim();\n if (!model)\n throw new Error(\"--model requires a value\");\n return model;\n}\nfunction optionalChoice(value, allowed, label) {\n if (value === undefined)\n return undefined;\n if (allowed.includes(value))\n return value;\n throw new Error(`${label} must be one of ${allowed.join(\"|\")}`);\n}\nfunction optionalBoolean(value, label) {\n if (value === undefined)\n return undefined;\n if (value === \"true\")\n return true;\n if (value === \"false\")\n return false;\n throw new Error(`${label} must be true or false`);\n}\n//# sourceMappingURL=cli-options.js.map",
|
|
@@ -45,12 +45,14 @@
|
|
|
45
45
|
"export function parseOutputArgs(argv) {\n const separator = argv.indexOf(\"--\");\n const localArgv = separator < 0 ? argv : argv.slice(0, separator);\n const remoteArgv = separator < 0 ? [] : argv.slice(separator);\n const cleaned = [];\n let format = \"plain\";\n let seen = false;\n for (let index = 0; index < localArgv.length; index += 1) {\n const token = localArgv[index];\n if (token !== \"--format\" && !token.startsWith(\"--format=\")) {\n cleaned.push(token);\n continue;\n }\n if (seen)\n throw new Error(\"--format may only be provided once\");\n const value = token === \"--format\" ? localArgv[++index] : token.slice(\"--format=\".length);\n if (value !== \"plain\" && value !== \"json\")\n throw new Error(\"--format must be plain or json\");\n format = value;\n seen = true;\n }\n return { argv: [...cleaned, ...remoteArgv], format, provided: seen };\n}\nfunction _renderOutput(value, format, plain) {\n if (format === \"json\") {\n const rendered = JSON.stringify(value, null, 2);\n if (rendered === undefined)\n throw new Error(\"output cannot be serialized as JSON\");\n return rendered;\n }\n if (typeof plain === \"function\")\n return plain();\n if (plain !== undefined)\n return plain;\n if (typeof value === \"string\")\n return value;\n return _renderPlain(value, 0);\n}\nexport function writeOutput(writer, value, format, plain) {\n writer.write(`${_renderOutput(value, format, plain)}\\n`);\n}\nfunction _renderPlain(value, depth) {\n if (_isScalar(value))\n return `${\" \".repeat(depth)}${_renderScalar(value, depth)}`;\n if (Array.isArray(value))\n return _renderArray(value, depth);\n return _renderObject(value, depth);\n}\nfunction _renderArray(values, depth) {\n if (!values.length)\n return `${\" \".repeat(depth)}[]`;\n return values.map((value) => {\n const prefix = `${\" \".repeat(depth)}-`;\n return _isScalar(value) ? `${prefix} ${_renderScalar(value, depth)}` : `${prefix}\\n${_renderPlain(value, depth + 2)}`;\n }).join(\"\\n\");\n}\nfunction _renderObject(value, depth) {\n const entries = Object.entries(value);\n if (!entries.length)\n return `${\" \".repeat(depth)}{}`;\n return entries.map(([key, child]) => {\n const prefix = `${\" \".repeat(depth)}${key}:`;\n return _isScalar(child) ? `${prefix} ${_renderScalar(child, depth)}` : `${prefix}\\n${_renderPlain(child, depth + 2)}`;\n }).join(\"\\n\");\n}\nfunction _isScalar(value) {\n return value === null || typeof value !== \"object\";\n}\nfunction _scalar(value) {\n if (value === null)\n return \"null\";\n if (value === undefined)\n return \"undefined\";\n return String(value);\n}\nfunction _renderScalar(value, depth) {\n if (typeof value !== \"string\" || !/[\\r\\n]/u.test(value))\n return _scalar(value);\n const normalized = value.replace(/\\r\\n?/gu, \"\\n\");\n const indentation = \" \".repeat(depth + 2);\n return `|-\\n${normalized.split(\"\\n\").map((line) => `${indentation}${line}`).join(\"\\n\")}`;\n}\n//# sourceMappingURL=output-format.js.map",
|
|
46
46
|
"const PREVIEW_LIMIT = 20;\nconst UNSAFE_DISPLAY_CODE_POINT = /[\\u007f-\\u009f\\u2028-\\u202e\\u2066-\\u2069]/gu;\nexport function renderTaskPlain(command, value) {\n if (typeof value === \"string\")\n return value;\n const task = _record(_record(value, \"task response\").task, \"task\");\n const lines = command === \"get\" ? _taskDetailLines(task) : _taskSummaryLines(task);\n return lines.join(\"\\n\");\n}\nfunction _taskSummaryLines(task) {\n return _present([\n `Task ${_inlineText(_requiredText(task, \"id\"))}`,\n _line(\"status\", task.status),\n _line(\"version\", task.version),\n _line(\"title\", _taskTitle(task)),\n _line(\"owner\", task.assignee ?? task.assigned_pair),\n _line(\"resume_condition\", task.resume_condition),\n _line(\"owner_of_resume\", task.owner_of_resume),\n ]);\n}\nfunction _taskDetailLines(task) {\n return _present([\n ..._taskSummaryLines(task),\n _line(\"type\", task.type), _line(\"priority\", task.priority), _line(\"level\", task.level),\n _line(\"depends\", task.depends), _line(\"branch\", task.branch),\n _line(\"gating_commit\", task.gating_commit), _line(\"merge_commit\", task.merge_commit),\n _line(\"gate_progress\", task.gate_progress), _line(\"running_age\", task.running_duration),\n _line(\"overdue\", task.overdue), _line(\"resume_dependency\", task.resume_dependency_task_id),\n _line(\"parked_age\", task.parked_duration), _rejectionLine(task.last_signal_rejection),\n _textBlock(\"description\", _requiredText(task, \"description\")),\n ]);\n}\nfunction _taskTitle(task) {\n const title = _optionalText(task.title);\n if (title)\n return title;\n return _requiredText(task, \"description\").split(/\\r?\\n/u, 1)[0];\n}\nfunction _rejectionLine(value) {\n const rejection = _optionalRecord(value, \"last_signal_rejection\");\n if (!rejection)\n return undefined;\n const actor = _optionalText(rejection.actor_agent_name);\n const suffix = actor ? ` by ${_inlineText(actor)}` : \"\";\n return `last_signal_rejection: ${_inlineText(_requiredText(rejection, \"reason\"))} (v${_requiredNumber(rejection, \"task_version\")}${suffix})`;\n}\nexport function renderMailboxPlain(value, ackTags) {\n const messages = _requiredArray(_record(value, \"mailbox response\").messages, \"messages\");\n const shown = messages.slice(0, PREVIEW_LIMIT).map((item) => _messagePlain(_record(item, \"message\"), ackTags));\n return [`Messages: ${messages.length}`, ...shown, _omissionLine(messages.length)].filter(Boolean).join(\"\\n\\n\");\n}\nfunction _messagePlain(message, ackTags) {\n const tag = _optionalText(message.tag) ?? \"MAIL\";\n const sender = _optionalText(message.sender_agent_name) ?? _optionalText(message.sender_role) ?? \"unknown\";\n return _present([\n `Message ${_inlineText(_requiredText(message, \"id\"))}`,\n _line(\"tag\", tag), _line(\"from\", sender), _line(\"status\", message.status),\n ..._mailTaskLines(message.payload_json), ackTags.has(tag) ? _line(\"lease_token\", message.lease_token) : undefined,\n _ackLine(message, tag, ackTags), _mailPayload(message),\n ]).join(\"\\n\");\n}\nfunction _mailTaskLines(value) {\n if (!value || typeof value !== \"object\" || Array.isArray(value))\n return [];\n const payload = value;\n return [_line(\"task_id\", payload.task_id), _line(\"task_version\", payload.version), _line(\"commit\", payload.commit)];\n}\nfunction _mailPayload(message) {\n if (!(\"payload_json\" in message)) {\n return `payload: [binary omitted; ${_requiredNumber(message, \"payload_size_bytes\")} bytes; use --format json]`;\n }\n const payload = message.payload_json;\n if (typeof payload === \"string\")\n return _textBlock(\"body\", payload);\n if (payload && typeof payload === \"object\" && !Array.isArray(payload)) {\n const record = payload;\n if (typeof record.text === \"string\")\n return _textBlock(\"body\", record.text);\n }\n if (typeof payload === \"object\")\n return \"payload: [structured payload omitted; use --format json]\";\n return `payload: ${_compact(payload)}`;\n}\nfunction _ackLine(message, tag, ackTags) {\n const token = _optionalText(message.lease_token);\n if (!token || !ackTags.has(tag))\n return undefined;\n const id = _commandAtom(_requiredText(message, \"id\"), \"message id\");\n return `Next: sail mailbox ack ${id} --lease-token ${_commandAtom(token, \"lease token\")}`;\n}\nexport function renderDeliveryPlain(value) {\n const result = _record(value, \"delivery response\");\n const ids = Array.isArray(result.ids) ? result.ids : result.id === undefined ? [] : [result.id];\n const recipients = Array.isArray(result.recipients) ? result.recipients : [];\n const pairs = ids.slice(0, PREVIEW_LIMIT).map((id, index) => _deliveryLine(id, recipients[index]));\n return _present([_line(\"status\", result.status), `delivered: ${ids.length}`, ...pairs, _omissionLine(ids.length)]).join(\"\\n\");\n}\nfunction _deliveryLine(id, recipient) {\n const messageId = _scalar(id);\n if (!messageId)\n throw new Error(\"delivery message id is required\");\n const target = _scalar(recipient);\n return target ? `${target}: ${messageId}` : `message_id: ${messageId}`;\n}\nexport function renderAckPlain(value) {\n const result = _record(value, \"ack response\");\n return _present([_line(\"message_id\", result.id), _line(\"status\", result.status)]).join(\"\\n\");\n}\nexport function renderAskPlain(command, value) {\n const root = _record(value, \"decision response\");\n if (command === \"list\")\n return _decisionListPlain(_requiredArray(root.questions, \"questions\"));\n const question = _record(root.question, \"question\");\n return command === \"get\" || command === \"status\" ? _decisionDetail(question) : _decisionCreated(question);\n}\nfunction _decisionListPlain(questions) {\n const shown = questions.slice(0, PREVIEW_LIMIT).map((item) => {\n const question = _record(item, \"question\");\n return _present([_requiredText(question, \"id\"), _requiredText(question, \"status\"), _requiredText(question, \"title\"), _optionalText(question.asking_agent), _recommendationKey(question.recommendation), _answerText(question.answer)]).map(_inlineText).join(\" | \");\n });\n return [`Decisions: ${questions.length}`, ...shown, _omissionLine(questions.length)].filter(Boolean).join(\"\\n\");\n}\nfunction _decisionCreated(question) {\n const id = _requiredText(question, \"id\");\n return _present([`Decision ${_inlineText(id)}`, _line(\"status\", question.status), _line(\"title\", question.title), _line(\"recommend\", _recommendationKey(question.recommendation)), `Next: sail ask get ${_commandAtom(id, \"decision id\")}`]).join(\"\\n\");\n}\nfunction _decisionDetail(question) {\n const options = _requiredArray(question.options, \"options\").map((item) => _optionLine(_record(item, \"option\")));\n return _present([\n `Decision ${_inlineText(_requiredText(question, \"id\"))}`, _line(\"status\", question.status),\n _line(\"title\", question.title), _line(\"asking_agent\", question.asking_agent),\n _textBlock(\"context\", _requiredText(question, \"context\")), \"options:\", ...options,\n _line(\"recommend\", _recommendationText(question.recommendation)),\n _line(\"moderator_recommendation\", _recommendationText(question.moderator_recommendation)),\n _line(\"planner_recommendation\", _recommendationText(question.planner_recommendation)),\n _line(\"delta\", question.delta), _line(\"answer\", _answerText(question.answer)),\n ]).join(\"\\n\");\n}\nfunction _optionLine(option) {\n const key = _inlineText(_requiredText(option, \"key\"));\n const label = _inlineText(_requiredText(option, \"label\"));\n return ` ${key}. ${label}: ${_inlineText(_requiredText(option, \"description\"))}`;\n}\nfunction _recommendationKey(value) {\n const recommendation = _optionalRecord(value, \"recommendation\");\n return recommendation ? _optionalText(recommendation.option) : undefined;\n}\nfunction _recommendationText(value) {\n const recommendation = _optionalRecord(value, \"recommendation\");\n if (!recommendation)\n return undefined;\n const reasons = Array.isArray(recommendation.reasons) ? recommendation.reasons.map(_scalar).filter(Boolean).join(\"; \") : \"\";\n return `${_requiredText(recommendation, \"option\")}${reasons ? ` — ${reasons}` : \"\"}`;\n}\nfunction _answerText(value) {\n const answer = _optionalRecord(value, \"answer\");\n if (!answer)\n return undefined;\n return _present([_optionalText(answer.action), _optionalText(answer.option), _optionalText(answer.text), _optionalText(answer.reason)]).join(\": \");\n}\nexport function renderEventPlain(command, value) {\n const root = _record(value, \"event response\");\n if (command === \"list\")\n return _eventListPlain(_requiredArray(root.events, \"events\"));\n if (command === \"rm\")\n return `deleted: ${_inlineText(_requiredText(root, \"deleted\"))}`;\n return _eventMutationLines(_record(root.event, \"event\")).join(\"\\n\");\n}\nfunction _eventListPlain(events) {\n const shown = events.slice(0, PREVIEW_LIMIT).map((item) => _eventLines(_record(item, \"event\")).join(\" | \"));\n return [`Events: ${events.length}`, ...shown, _omissionLine(events.length)].filter(Boolean).join(\"\\n\");\n}\nfunction _eventLines(event) {\n return _present([\n `Event ${_inlineText(_requiredText(event, \"id\"))}`, _line(\"enabled\", event.enabled),\n _line(\"schedule\", _eventSchedule(event)), _line(\"tag\", event.tag),\n _line(\"target\", event.target_agent ?? event.target_kind), _line(\"message\", event.message),\n _line(\"last_status\", event.last_status),\n ]);\n}\nfunction _eventMutationLines(event) {\n return _present([\n `Event ${_inlineText(_requiredText(event, \"id\"))}`, _line(\"enabled\", event.enabled),\n _line(\"schedule\", _eventSchedule(event)), _line(\"tag\", event.tag), _line(\"message\", event.message),\n ]);\n}\nfunction _eventSchedule(event) {\n const at = _optionalText(event.at_local);\n if (!at)\n return undefined;\n const parts = [at, _optionalText(event.tz), _optionalText(event.days_mode), _optionalText(event.run_date)].filter(Boolean);\n return parts.join(\" \");\n}\nexport function renderEnrollmentPlain(value) {\n const descriptor = _record(value, \"enrollment\");\n return _present([\n _line(\"key_id\", descriptor.key_id), _line(\"agent\", descriptor.agent_name),\n _line(\"session\", descriptor.session), _line(\"role\", descriptor.role),\n _line(\"host\", descriptor.host), _line(\"relay_url\", descriptor.relay_url),\n \"credential_token: [omitted; use --format json only for credential setup]\",\n ]).join(\"\\n\");\n}\nexport function renderLoginPlain(value) {\n const login = _record(value, \"login result\");\n const service = _record(login.service, \"service result\");\n const installed = service.installed === true;\n const workspace = login.workspace && typeof login.workspace === \"object\" ? login.workspace : undefined;\n return _present([\n _line(\"host_id\", login.host_id), _line(\"credentials_path\", login.credentials_path),\n _line(\"workspace\", workspace?.path),\n `service_installed: ${installed}`, _line(\"service_path\", service.path),\n service.skipped === true ? \"service_skipped: true\" : \"\",\n _line(\"linger\", service.linger), _line(\"note\", service.note), _line(\"reason\", service.reason),\n installed ? _line(\"uninstall\", service.uninstall_command) : _line(\"Next\", service.manual_command),\n ]).join(\"\\n\");\n}\nexport function renderHostPlain(command, value) {\n const result = _record(value, \"host response\");\n if (command === \"list\")\n return _hostListPlain(_requiredArray(result.hosts, \"hosts\"));\n if (command === \"consume\")\n return _hostConsumePlain(result);\n const host = _record(result.host, \"host\");\n return _present([..._hostLines(host), _line(\"heartbeat_interval_sec\", result.heartbeat_interval_sec)]).join(\"\\n\");\n}\nfunction _hostListPlain(hosts) {\n const shown = hosts.slice(0, PREVIEW_LIMIT).map((item) => _hostLines(_record(item, \"host\")).join(\" | \"));\n return [`Hosts: ${hosts.length}`, ...shown, _omissionLine(hosts.length)].filter(Boolean).join(\"\\n\");\n}\nfunction _hostLines(host) {\n return _present([\n `Host ${_inlineText(_requiredText(host, \"host_id\"))}`, _line(\"name\", host.display_name),\n _line(\"online\", host.online), _line(\"compatibility\", host.client_compatibility),\n _line(\"client_version\", host.client_version), host.online === false ? _line(\"last_seen\", host.last_seen_at) : undefined,\n ]);\n}\nfunction _hostConsumePlain(result) {\n const host = _record(result.host, \"host\");\n const request = _optionalRecord(result.request, \"request\");\n return _present([\n _line(\"status\", result.status), _line(\"host_id\", host.host_id),\n request ? _line(\"request_id\", request.id) : undefined, request ? _line(\"session\", request.session) : undefined,\n request ? _line(\"agent\", request.agent_name) : undefined, request ? _line(\"request_status\", request.status) : undefined,\n _line(\"error\", result.error), result.status === \"failed\" ? \"Next: sail host consume --once --dry-run-start\" : undefined,\n ]).join(\"\\n\");\n}\nexport function renderStartRequestPlain(value) {\n const root = _record(value, \"start request response\");\n const request = _record(root.request, \"request\");\n const agent = _record(root.agent, \"agent\");\n return _present([\n _line(\"request_id\", request.id), _line(\"status\", request.status),\n _line(\"host_id\", request.host_id), _line(\"agent\", request.agent_name), _line(\"key_id\", agent.key_id),\n ]).join(\"\\n\");\n}\nexport function renderServicePlain(value) {\n const service = _record(value, \"service response\");\n return _present([\n _line(\"status\", service.status), _line(\"installed\", service.installed),\n _line(\"platform\", service.platform), _line(\"file\", service.file),\n _line(\"linger\", service.linger), _line(\"note\", service.note),\n ]).join(\"\\n\");\n}\nfunction _record(value, label) {\n if (!value || typeof value !== \"object\" || Array.isArray(value))\n throw new Error(`${label} must be an object`);\n return value;\n}\nfunction _optionalRecord(value, label) {\n if (value === undefined || value === null)\n return undefined;\n return _record(value, label);\n}\nfunction _requiredArray(value, label) {\n if (!Array.isArray(value))\n throw new Error(`${label} must be an array`);\n return value;\n}\nfunction _requiredText(value, key) {\n const text = _optionalText(value[key]);\n if (!text)\n throw new Error(`${key} must be a non-empty string`);\n return text;\n}\nfunction _optionalText(value) {\n if (value === undefined || value === null)\n return undefined;\n if (typeof value !== \"string\")\n throw new Error(\"plain output text field must be a string\");\n return value.trim() ? value : undefined;\n}\nfunction _requiredNumber(value, key) {\n const number = value[key];\n if (typeof number !== \"number\" || !Number.isFinite(number))\n throw new Error(`${key} must be a number`);\n return number;\n}\nfunction _line(label, value) {\n const scalar = _scalar(value);\n return scalar === undefined ? undefined : `${label}: ${scalar}`;\n}\nfunction _scalar(value) {\n if (value === undefined || value === null || value === \"\")\n return undefined;\n if (Array.isArray(value))\n return value.map(_scalar).filter(Boolean).join(\", \");\n if (typeof value === \"string\")\n return _inlineText(value);\n if (typeof value === \"number\" || typeof value === \"boolean\")\n return String(value);\n return _compact(value);\n}\nfunction _compact(value) {\n const rendered = _jsonLiteral(value);\n return rendered;\n}\nfunction _jsonLiteral(value) {\n const rendered = JSON.stringify(value);\n if (rendered === undefined)\n throw new Error(\"plain output field cannot be serialized\");\n return rendered.replace(UNSAFE_DISPLAY_CODE_POINT, _escapedCodePoint);\n}\nfunction _escapedCodePoint(value) {\n const codePoint = value.codePointAt(0);\n if (codePoint === undefined)\n throw new Error(\"display code point is required\");\n return `\\\\u${codePoint.toString(16).padStart(4, \"0\")}`;\n}\nfunction _inlineText(value) {\n return _jsonLiteral(value).slice(1, -1);\n}\nfunction _textBlock(label, value) {\n return `${label}_json:\\n ${_jsonLiteral(value)}`;\n}\nfunction _commandAtom(value, label) {\n if (!/^[A-Za-z0-9._:-]+$/u.test(value))\n throw new Error(`${label} cannot be rendered safely in a command`);\n return value;\n}\nfunction _present(values) {\n return values.filter((value) => value !== undefined && value !== \"\");\n}\nfunction _omissionLine(total) {\n return total > PREVIEW_LIMIT ? `Omitted ${total - PREVIEW_LIMIT}; rerun with --format json for the complete response.` : undefined;\n}\n//# sourceMappingURL=plain-output-fields.js.map",
|
|
47
47
|
"import { DEFAULT_PRODUCT_API_URL, defaultHostCredentialsPath, loadHostCredential } from \"../auth/index.js\";\nimport { createAgentStartRequest } from \"../product/index.js\";\nimport { CLIENT_GIT_SHA, CLIENT_VERSION } from \"../version.js\";\nimport { PHASE1_ENGINE_GATE_MESSAGE, PHASE1_TRANSPORT_GATE_MESSAGE } from \"../supervisor/index.js\";\nimport { writeOutput } from \"../output-format.js\";\nimport { renderHostPlain, renderStartRequestPlain } from \"../plain-output-fields.js\";\nimport { defaultHostIdentity, runHostRequestOnce } from \"./request-consumer.js\";\n/** The relay-backed host subcommands this dispatcher handles; `cli.ts` builds its guard from this set. */\nexport const HOST_RELAY_SUBCOMMANDS = new Set([\"consume\", \"heartbeat\", \"list\", \"register\"]);\nexport async function runHostCommandFromCli(client, argv, config, io) {\n const sub = argv[0] ?? \"list\";\n if (!HOST_RELAY_SUBCOMMANDS.has(sub))\n throw new Error(`host command must be ${[...HOST_RELAY_SUBCOMMANDS].sort().join(\", \")}`);\n const flags = parseHostFlags(argv.slice(1));\n const identity = defaultHostIdentity({\n captainId: config.captainId,\n hostId: flags.hostId ?? config.hostId,\n hostDisplayName: flags.displayName ?? config.hostDisplayName,\n });\n if (sub === \"register\") {\n const response = await client.registerClientHost(identity.captainId, {\n hostId: identity.hostId,\n displayName: identity.displayName,\n clientVersion: CLIENT_VERSION,\n clientGitSha: CLIENT_GIT_SHA,\n });\n writeOutput(io.stdout, response, io.format, () => renderHostPlain(sub, response));\n return;\n }\n if (sub === \"heartbeat\") {\n const displayName = optionalDisplayName(flags.displayName ?? config.hostDisplayName);\n const response = await client.heartbeatClientHost(identity.captainId, identity.hostId, {\n ...(displayName === undefined ? {} : { displayName }),\n clientVersion: CLIENT_VERSION,\n clientGitSha: CLIENT_GIT_SHA,\n });\n writeOutput(io.stdout, response, io.format, () => renderHostPlain(sub, response));\n return;\n }\n if (sub === \"list\") {\n const response = await client.listClientHosts(identity.captainId);\n writeOutput(io.stdout, response, io.format, () => renderHostPlain(sub, response));\n return;\n }\n if (sub === \"consume\") {\n if (!flags.once)\n throw new Error(\"host consume requires --once\");\n if (!flags.dryRunStart)\n throw new Error(\"host consume is a diagnostic dry-run and requires --dry-run-start; use 'host run' for real starts\");\n const result = await runHostRequestOnce({\n relay: client,\n ...identity,\n starter: (request) => {\n io.stderr.write(`${JSON.stringify({\n event: \"host_request_dry_run_start\",\n request_id: request.id,\n session: request.session,\n agent_name: request.agent_name,\n host_id: request.host_id,\n })}\\n`);\n },\n });\n writeOutput(io.stdout, result, io.format, () => renderHostPlain(sub, result));\n return;\n }\n}\nexport async function runHostStartRequestCommandFromCli(argv, io, deps = {}) {\n const flags = parseStartRequestFlags(argv);\n const env = deps.env ?? process.env;\n const loadCredential = deps.loadHostCredential ?? loadHostCredential;\n const productToken = flags.accessToken ?? env.SAILORBRIDGE_CAPTAIN_ACCESS_TOKEN;\n const credential = productToken\n ? null\n : await loadCredential(flags.credentialsPath ?? env.SAILORBRIDGE_CREDENTIALS_FILE ?? defaultHostCredentialsPath());\n const result = await createAgentStartRequest({\n apiUrl: required(flags.apiUrl ?? env.SAILORBRIDGE_API_URL ?? credential?.api_url, \"product API URL\"),\n accessToken: required(productToken ?? credential?.token, \"product API bearer token or paired host credential\"),\n teamId: required(flags.teamId, \"--team\"),\n hostId: required(flags.hostId ?? credential?.host_id, \"--host-id\"),\n agentName: required(flags.agentName, \"--agent\"),\n ...(flags.slotId === undefined ? {} : { slotId: flags.slotId }),\n ...(credential ? { captainId: String(credential.captain_id) } : {}),\n spec: buildStartRequestSpec(flags),\n ...(deps.fetchImpl ? { fetchImpl: deps.fetchImpl } : {}),\n });\n writeOutput(io.stdout, result, io.format, () => renderStartRequestPlain(result));\n}\nfunction parseHostFlags(argv) {\n const parsed = {\n once: false,\n dryRunStart: false,\n };\n for (let i = 0; i < argv.length; i += 1) {\n const item = argv[i];\n if (item === \"--once\") {\n parsed.once = true;\n continue;\n }\n if (item === \"--dry-run-start\") {\n parsed.dryRunStart = true;\n continue;\n }\n if (item === \"--host-id\" || item === \"--display-name\") {\n const value = argv[i + 1];\n if (!value || value.startsWith(\"--\"))\n throw new Error(`${item} requires a value`);\n if (item === \"--host-id\")\n parsed.hostId = value;\n if (item === \"--display-name\")\n parsed.displayName = value;\n i += 1;\n continue;\n }\n throw new Error(`unexpected host argument: ${item}`);\n }\n return parsed;\n}\nfunction parseStartRequestFlags(argv) {\n const parsed = { command: [], env: {} };\n for (let i = 0; i < argv.length; i += 1) {\n const item = argv[i];\n if (item === \"--command\") {\n const value = argv[i + 1];\n if (!value || value.startsWith(\"--\"))\n throw new Error(\"--command requires a value\");\n parsed.command.push(value);\n i += 1;\n continue;\n }\n if (item === \"--env\") {\n const value = argv[i + 1];\n if (!value || value.startsWith(\"--\"))\n throw new Error(\"--env requires KEY=VALUE\");\n const equals = value.indexOf(\"=\");\n if (equals <= 0)\n throw new Error(\"--env requires KEY=VALUE\");\n parsed.env[value.slice(0, equals)] = value.slice(equals + 1);\n i += 1;\n continue;\n }\n const value = argv[i + 1];\n if (!value || value.startsWith(\"--\"))\n throw new Error(`${item} requires a value`);\n switch (item) {\n case \"--api-url\":\n parsed.apiUrl = value;\n break;\n case \"--access-token\":\n parsed.accessToken = value;\n break;\n case \"--team\":\n parsed.teamId = value;\n break;\n case \"--host-id\":\n parsed.hostId = value;\n break;\n case \"--agent\":\n parsed.agentName = value;\n break;\n case \"--slot-id\":\n parsed.slotId = value;\n break;\n case \"--engine\":\n parsed.engine = value;\n break;\n case \"--roles\":\n parsed.roles = value;\n break;\n case \"--transport\":\n parsed.transport = value;\n break;\n case \"--workspace-mode\":\n parsed.workspaceMode = value;\n break;\n case \"--git-url\":\n parsed.gitUrl = value;\n break;\n case \"--git-ref\":\n parsed.gitRef = value;\n break;\n case \"--subdir\":\n parsed.subdir = value;\n break;\n case \"--restart-command\":\n parsed.restartCommand = value;\n break;\n case \"--credentials-path\":\n parsed.credentialsPath = value;\n break;\n default: throw new Error(`unexpected host start-request argument: ${item}`);\n }\n i += 1;\n }\n return parsed;\n}\nfunction buildStartRequestSpec(flags) {\n const workspaceMode = required(flags.workspaceMode, \"--workspace-mode\");\n if (workspaceMode !== \"fresh\" && workspaceMode !== \"git\") {\n throw new Error(\"--workspace-mode must be fresh or git\");\n }\n const workspace = workspaceMode === \"fresh\"\n ? { mode: \"fresh\" }\n : {\n mode: \"git\",\n git_url: required(flags.gitUrl, \"--git-url\"),\n ...(flags.gitRef ? { git_ref: flags.gitRef } : {}),\n ...(flags.subdir ? { subdir: flags.subdir } : {}),\n };\n return {\n engine: phase1Engine(required(flags.engine, \"--engine\")),\n role: singleRole(flags.roles),\n workspace,\n ...(flags.transport ? { transport: phase1Transport(flags.transport) } : {}),\n ...(flags.restartCommand ? { restart_command: flags.restartCommand } : {}),\n ...(flags.command.length ? { command: flags.command } : {}),\n ...(Object.keys(flags.env).length ? { env: flags.env } : {}),\n };\n}\nfunction phase1Engine(value) {\n if (value !== \"claude\" && value !== \"codex\")\n throw new Error(PHASE1_ENGINE_GATE_MESSAGE);\n return value;\n}\nfunction phase1Transport(value) {\n if (value !== \"tmux\")\n throw new Error(PHASE1_TRANSPORT_GATE_MESSAGE);\n return value;\n}\nfunction required(value, label) {\n const trimmed = value?.trim();\n if (!trimmed && label === \"product API URL\") {\n throw new Error(`product API URL is empty; unset --api-url/SAILORBRIDGE_API_URL to use SailorBridge at ${DEFAULT_PRODUCT_API_URL}.`);\n }\n if (!trimmed)\n throw new Error(`${label} is required`);\n return trimmed;\n}\nfunction singleRole(value) {\n const roles = required(value, \"--roles\").split(\",\").map((role) => role.trim()).filter(Boolean);\n if (roles.length !== 1)\n throw new Error(\"--roles must contain exactly one role\");\n return roles[0];\n}\nfunction optionalDisplayName(value) {\n const trimmed = value?.trim();\n return trimmed || undefined;\n}\n//# sourceMappingURL=cli.js.map",
|
|
48
|
-
"import { execFile as execFileCb } from \"node:child_process\";\nimport { createHash } from \"node:crypto\";\nimport { constants as fsConstants } from \"node:fs\";\nimport { access, chmod, lstat, mkdir, readFile, rename, rm, writeFile } from \"node:fs/promises\"; // intentional — service management reads generated host state, not CLI text parameters\nimport { homedir, platform, userInfo } from \"node:os\";\nimport path from \"node:path\";\nimport { promisify } from \"node:util\";\nimport { defaultHostCredentialsPath } from \"../auth/index.js\";\nimport { writeOutput } from \"../output-format.js\";\nimport { renderServicePlain } from \"../plain-output-fields.js\";\nimport { cleanupManagedMaterialization } from \"./managed-materialization.js\";\nconst execFileDefault = promisify(execFileCb);\nconst DEFAULT_SYSTEMD_SERVICE_NAME = \"sailorbridge-host.service\";\nconst DEFAULT_LAUNCHD_LABEL = \"com.sailorbridge.host\";\n// Scoped units must stay inside our own namespace so `--service-name` can never enable\n// or overwrite an unrelated user unit such as `pipewire.service`.\nconst SCOPED_SYSTEMD_PREFIX = \"sailorbridge-host-\";\nconst SCOPED_LAUNCHD_PREFIX = \"com.sailorbridge.host.\";\n// Marks a definition as ours and fingerprints which host it serves, so reinstall can tell\n// \"same host, refresh it\" from \"someone else's file\" and \"another host already lives here\".\nconst MANAGED_MARKER = /sailorbridge-managed 1 ([0-9a-f]{16})/u;\nconst UNINSTALL_HINT = \"sailorbridge host service uninstall\";\nconst XML_ENTITIES = { amp: \"&\", lt: \"<\", gt: \">\", quot: '\"', apos: \"'\" };\n/** Installs and starts the host daemon service, returning what landed on disk. Re-running overwrites the same unit. */\nexport async function installHostService(options, deps = {}) {\n const flags = { ...options, dryRun: false };\n assertScopedServiceFlags(flags);\n const runtime = assertSupportedPlatform(serviceRuntime(deps));\n const paths = servicePaths(runtime, flags);\n const command = resolveCommand(flags.binary, runtime);\n if (runtime.platform === \"linux\")\n return installSystemd(flags, runtime, paths, command);\n return installLaunchd(flags, runtime, paths, command);\n}\nexport const UNSUPPORTED_SERVICE_PLATFORM = \"host service supports Linux systemd and macOS launchd only\";\nexport async function runHostServiceCommandFromCli(argv, io, deps = {}) {\n const action = argv[0] ?? \"status\";\n const flags = parseServiceFlags(argv.slice(1));\n assertScopedServiceFlags(flags);\n const runtime = assertSupportedPlatform(serviceRuntime(deps));\n const paths = servicePaths(runtime, flags);\n const command = resolveCommand(flags.binary, runtime);\n if (runtime.platform === \"linux\")\n await runSystemd(action, flags, runtime, paths, command, io);\n else\n await runLaunchd(action, flags, runtime, paths, command, io);\n}\nexport function renderSystemdUnit(input) {\n return `# ${managedMarker(input)}\n[Unit]\nDescription=SailorBridge host daemon\nAfter=network-online.target\nWants=network-online.target\n\n[Service]\nType=simple\nWorkingDirectory=${systemdArg(input.workingDirectory)}\nExecStart=${systemdCommand(hostRunArgs(input))}\nRestart=on-failure\nRestartSec=5\n\n[Install]\nWantedBy=default.target\n`;\n}\nexport function renderLaunchdPlist(input) {\n const args = hostRunArgs(input).map(xmlString).join(\"\\n\");\n return `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- ${managedMarker(input)} -->\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n <key>Label</key>\n <string>${xmlEscape(input.label ?? DEFAULT_LAUNCHD_LABEL)}</string>\n <key>ProgramArguments</key>\n <array>\n${args}\n </array>\n <key>WorkingDirectory</key>\n <string>${xmlEscape(input.workingDirectory)}</string>\n <key>RunAtLoad</key>\n <true/>\n <key>KeepAlive</key>\n <true/>\n <key>StandardOutPath</key>\n <string>${xmlEscape(path.join(input.logsDir, \"host.out.log\"))}</string>\n <key>StandardErrorPath</key>\n <string>${xmlEscape(path.join(input.logsDir, \"host.err.log\"))}</string>\n</dict>\n</plist>\n`;\n}\nfunction parseServiceFlags(argv) {\n const parsed = { dryRun: false };\n for (let i = 0; i < argv.length; i += 1) {\n const item = argv[i];\n if (item === \"--dry-run\") {\n parsed.dryRun = true;\n continue;\n }\n const value = argv[i + 1];\n if (!value || value.startsWith(\"--\"))\n throw new Error(`${item} requires a value`);\n assignServiceFlag(parsed, item, value);\n i += 1;\n }\n return parsed;\n}\nfunction assignServiceFlag(parsed, item, value) {\n if (item === \"--binary\")\n parsed.binary = value;\n else if (item === \"--credentials-path\")\n parsed.credentialsPath = value;\n else if (item === \"--workspace-root\")\n parsed.workspaceRoot = value;\n else if (item === \"--host-id\")\n parsed.hostId = value;\n else if (item === \"--display-name\")\n parsed.displayName = value;\n else if (item === \"--service-dir\")\n parsed.serviceDir = value;\n else if (item === \"--service-name\")\n parsed.serviceName = value;\n else\n throw new Error(`unexpected host service argument: ${item}`);\n}\nfunction assertScopedServiceFlags(flags) {\n if (flags.serviceDir !== undefined && flags.serviceName === undefined) {\n throw new Error(\"--service-dir requires --service-name\");\n }\n}\nasync function runSystemd(action, flags, runtime, paths, command, io) {\n if (action === \"install\")\n return _writeServiceOutput(io, await installSystemd(flags, runtime, paths, command));\n if (action === \"uninstall\")\n return uninstallSystemd(flags, runtime, paths, io);\n if (action === \"status\")\n return statusSystemd(runtime, paths, io);\n throw new Error(\"host service command must be install, uninstall, or status\");\n}\nasync function installSystemd(flags, runtime, paths, command) {\n const unit = renderSystemdUnit(serviceInput(flags, runtime, command, paths));\n assertNoSecretMaterial(unit, runtime.env);\n if (!flags.dryRun) {\n await runtime.mkdir(paths.serviceDir, { recursive: true });\n const disposition = await _definitionDisposition(runtime, paths.file, unit, \"systemd\");\n if (disposition === \"legacy\") {\n await runtime.execFile(\"systemctl\", [\"--user\", \"stop\", paths.serviceName]);\n await _archiveDefinition(runtime, paths.file);\n }\n await writeDefinition(runtime, paths.file, unit);\n await runtime.execFile(\"systemctl\", [\"--user\", \"daemon-reload\"]);\n await runtime.execFile(\"systemctl\", [\"--user\", \"enable\", paths.file]);\n // restart, not `enable --now`: `--now` is a no-op on an already-active unit, which would\n // leave the previous process running with the previous unit's arguments.\n await runtime.execFile(\"systemctl\", [\"--user\", \"restart\", paths.serviceName]);\n }\n const linger = flags.dryRun ? \"unknown\" : await detectLinger(runtime);\n return { status: \"installed\", platform: \"systemd\", file: paths.file, linger, note: lingerNote(runtime.username, linger) };\n}\nasync function uninstallSystemd(flags, runtime, paths, io) {\n if (!flags.dryRun) {\n await optionalExec(runtime, \"systemctl\", [\"--user\", \"disable\", \"--now\", paths.serviceName]);\n await runtime.rm(paths.file, { force: true });\n if (isProductionServiceTarget(flags)) {\n await cleanupManagedMaterialization({ env: { ...runtime.env, HOME: runtime.homeDir }, rm: runtime.rm, readFile: runtime.readFile, logger: (event, fields) => writeServiceLog(io, event, fields) }); // intentional — forward the managed-state reader to cleanup\n }\n await optionalExec(runtime, \"systemctl\", [\"--user\", \"daemon-reload\"]);\n }\n _writeServiceOutput(io, { status: \"uninstalled\", platform: \"systemd\", file: paths.file });\n}\nasync function statusSystemd(runtime, paths, io) {\n const active = await optionalExec(runtime, \"systemctl\", [\"--user\", \"is-active\", paths.serviceName]);\n const installed = await fileExists(runtime, paths.file);\n const linger = await detectLinger(runtime);\n _writeServiceOutput(io, { status: active?.stdout.trim() || \"unknown\", installed, platform: \"systemd\", file: paths.file, linger, note: lingerNote(runtime.username, linger) });\n}\nasync function runLaunchd(action, flags, runtime, paths, command, io) {\n if (action === \"install\")\n return _writeServiceOutput(io, await installLaunchd(flags, runtime, paths, command));\n if (action === \"uninstall\")\n return uninstallLaunchd(flags, runtime, paths, io);\n if (action === \"status\")\n return statusLaunchd(runtime, paths, io);\n throw new Error(\"host service command must be install, uninstall, or status\");\n}\nasync function installLaunchd(flags, runtime, paths, command) {\n const plist = renderLaunchdPlist({ ...serviceInput(flags, runtime, command, paths), label: paths.launchdLabel });\n assertNoSecretMaterial(plist, runtime.env);\n if (!flags.dryRun) {\n await runtime.mkdir(paths.serviceDir, { recursive: true });\n await runtime.mkdir(paths.logsDir, { recursive: true });\n const disposition = await _definitionDisposition(runtime, paths.file, plist, \"launchd\");\n await unloadLaunchdService(runtime, paths.launchdLabel);\n if (disposition === \"legacy\")\n await _archiveDefinition(runtime, paths.file);\n await writeDefinition(runtime, paths.file, plist);\n await runtime.execFile(\"launchctl\", [\"bootstrap\", `gui/${runtime.uid}`, paths.file]);\n await runtime.execFile(\"launchctl\", [\"enable\", launchdServiceTarget(runtime.uid, paths.launchdLabel)]);\n }\n return { status: \"installed\", platform: \"launchd\", file: paths.file, linger: \"not-applicable\" };\n}\n/** Unloads before the plist is overwritten, so a bootout we cannot confirm never leaves a rewritten plist behind. */\nasync function unloadLaunchdService(runtime, label) {\n const target = launchdServiceTarget(runtime.uid, label);\n await optionalExec(runtime, \"launchctl\", [\"bootout\", target]);\n const stillLoaded = await optionalExec(runtime, \"launchctl\", [\"print\", target]);\n if (stillLoaded)\n throw new Error(`launchd service ${target} is still loaded; run 'launchctl bootout ${target}' and retry`);\n}\nasync function uninstallLaunchd(flags, runtime, paths, io) {\n if (!flags.dryRun) {\n await optionalExec(runtime, \"launchctl\", [\"bootout\", launchdServiceTarget(runtime.uid, paths.launchdLabel)]);\n await runtime.rm(paths.file, { force: true });\n if (isProductionServiceTarget(flags)) {\n await cleanupManagedMaterialization({ env: { ...runtime.env, HOME: runtime.homeDir }, rm: runtime.rm, readFile: runtime.readFile, logger: (event, fields) => writeServiceLog(io, event, fields) }); // intentional — forward the managed-state reader to cleanup\n }\n }\n _writeServiceOutput(io, { status: \"uninstalled\", platform: \"launchd\", file: paths.file });\n}\nasync function statusLaunchd(runtime, paths, io) {\n const active = await optionalExec(runtime, \"launchctl\", [\"print\", launchdServiceTarget(runtime.uid, paths.launchdLabel)]);\n const installed = await fileExists(runtime, paths.file);\n _writeServiceOutput(io, { status: active ? \"active\" : \"inactive\", installed, platform: \"launchd\", file: paths.file, linger: \"not-applicable\" });\n}\nfunction serviceRuntime(deps) {\n const info = userInfo();\n return {\n platform: deps.platform ?? platform(),\n homeDir: deps.homeDir ?? homedir(),\n uid: deps.uid ?? (typeof process.getuid === \"function\" ? process.getuid() : info.uid),\n username: deps.username ?? info.username,\n execFile: deps.execFile ?? execFileDefault,\n writeFile: deps.writeFile ?? writeFile,\n readFile: deps.readFile ?? readFile, // intentional — bind the managed service-state reader\n mkdir: deps.mkdir ?? mkdir,\n rm: deps.rm ?? rm,\n access: deps.access ?? access,\n lstat: deps.lstat ?? lstat,\n rename: deps.rename ?? rename,\n chmod: deps.chmod ?? chmod,\n env: deps.env ?? process.env,\n execPath: deps.execPath ?? process.execPath,\n argv1: deps.argv1 ?? process.argv[1],\n };\n}\n/** Rejects unsupported platforms before any path or name is derived, so nothing half-applies. */\nfunction assertSupportedPlatform(runtime) {\n if (runtime.platform !== \"linux\" && runtime.platform !== \"darwin\")\n throw new Error(UNSUPPORTED_SERVICE_PLATFORM);\n return runtime;\n}\nfunction launchdServiceTarget(uid, label) {\n return `gui/${uid}/${label}`;\n}\nfunction servicePaths(runtime, flags) {\n if (runtime.platform === \"linux\") {\n // intentional — systemctl enable receives the scoped unit's absolute file path.\n const base = flags.serviceDir ? path.resolve(flags.serviceDir) : path.join(runtime.env.XDG_CONFIG_HOME ?? path.join(runtime.homeDir, \".config\"), \"systemd\", \"user\");\n const serviceName = systemdServiceName(flags.serviceName);\n return { serviceDir: base, file: path.join(base, serviceName), logsDir: path.join(runtime.homeDir, \".sailorbridge\", \"logs\"), serviceName, launchdLabel: DEFAULT_LAUNCHD_LABEL };\n }\n const base = flags.serviceDir ?? path.join(runtime.homeDir, \"Library\", \"LaunchAgents\");\n const launchdLabel = launchdServiceName(flags.serviceName);\n return { serviceDir: base, file: path.join(base, `${launchdLabel}.plist`), logsDir: path.join(runtime.homeDir, \".sailorbridge\", \"logs\"), serviceName: DEFAULT_SYSTEMD_SERVICE_NAME, launchdLabel };\n}\nfunction isProductionServiceTarget(flags) {\n return flags.serviceDir === undefined && flags.serviceName === undefined;\n}\nfunction serviceInput(flags, runtime, command, paths) {\n return {\n command,\n credentialsPath: flags.credentialsPath ?? runtime.env.SAILORBRIDGE_CREDENTIALS_FILE ?? defaultHostCredentialsPath(),\n ...(flags.workspaceRoot ? { workspaceRoot: flags.workspaceRoot } : {}),\n ...(flags.hostId ? { hostId: flags.hostId } : {}),\n ...(flags.displayName ? { displayName: flags.displayName } : {}),\n workingDirectory: runtime.homeDir,\n logsDir: paths.logsDir,\n };\n}\nfunction systemdServiceName(value) {\n if (value === undefined)\n return DEFAULT_SYSTEMD_SERVICE_NAME;\n const name = value.trim();\n if (!name)\n throw new Error(`--service-name must be a scoped unit named ${SCOPED_SYSTEMD_PREFIX}<suffix>.service`);\n const unit = name.endsWith(\".service\") ? name : `${name}.service`;\n if (!/^[A-Za-z0-9_.@-]+\\.service$/.test(unit))\n throw new Error(\"--service-name must be a systemd unit name without path separators\");\n // Namespaced, so a scoped install can never enable or overwrite an unrelated user unit.\n if (!unit.startsWith(SCOPED_SYSTEMD_PREFIX))\n throw new Error(`--service-name must be a scoped unit named ${SCOPED_SYSTEMD_PREFIX}<suffix>.service`);\n return unit;\n}\nfunction launchdServiceName(value) {\n if (value === undefined)\n return DEFAULT_LAUNCHD_LABEL;\n const label = value.trim();\n if (!label)\n throw new Error(`--service-name must be a scoped label named ${SCOPED_LAUNCHD_PREFIX}<suffix>`);\n if (!/^[A-Za-z0-9_.-]+$/.test(label))\n throw new Error(\"--service-name must be a launchd label without path separators\");\n if (!label.startsWith(SCOPED_LAUNCHD_PREFIX))\n throw new Error(`--service-name must be a scoped label named ${SCOPED_LAUNCHD_PREFIX}<suffix>`);\n return label;\n}\nfunction hostRunArgs(input) {\n return [\n ...input.command,\n \"host\",\n \"run\",\n \"--credentials-path\",\n input.credentialsPath,\n ...flagArg(\"--workspace-root\", input.workspaceRoot),\n ...flagArg(\"--host-id\", input.hostId),\n ...flagArg(\"--display-name\", input.displayName),\n ];\n}\nfunction flagArg(flag, value) {\n return value ? [flag, value] : [];\n}\n/**\n * The argv prefix that starts the CLI. Under `npm i -g` the runtime is plain node/bun, so the\n * service has to run `<runtime> <entry point>` rather than the runtime alone.\n */\nfunction resolveCommand(flag, runtime) {\n if (flag)\n return [path.resolve(flag)];\n const name = path.basename(runtime.execPath);\n if (name !== \"node\" && name !== \"bun\")\n return [path.resolve(runtime.execPath)];\n const entry = runtime.argv1?.trim();\n if (!entry)\n throw new Error(\"--binary is required when host service install is not run from an installed sailorbridge entry point\");\n return [path.resolve(runtime.execPath), path.resolve(entry)];\n}\n/**\n * Fingerprints the credential the unit runs against — the one identity that distinguishes two\n * SailorBridge hosts sharing an OS user. Deliberately excludes host id and binary path so a\n * later `host service install` for the same credential refreshes the unit instead of colliding.\n */\nfunction managedMarker(input) {\n const fingerprint = createHash(\"sha256\").update(input.credentialsPath).digest(\"hex\").slice(0, 16);\n return `sailorbridge-managed 1 ${fingerprint}`;\n}\n/** Classifies a safe replacement while rejecting foreign definitions and different managed hosts. */\nasync function _definitionDisposition(runtime, file, next, manager) {\n const existing = await _readDefinition(runtime, file);\n if (existing === null)\n return \"missing\";\n const current = MANAGED_MARKER.exec(existing)?.[1];\n if (!current) {\n if (_isLegacyHostDefinition(existing, manager))\n return \"legacy\";\n throw new Error(`${file} was not written by SailorBridge; move it aside, or pass --service-name to install a scoped unit instead`);\n }\n if (current !== MANAGED_MARKER.exec(next)?.[1]) {\n throw new Error(`${file} already serves a different SailorBridge host; run '${UNINSTALL_HINT}' first, or pass --service-name to install a scoped unit instead`);\n }\n return \"managed\";\n}\nfunction _isLegacyHostDefinition(text, manager) {\n const args = manager === \"systemd\" ? _systemdExecStart(text) : _launchdProgramArguments(text);\n if (!args)\n return false;\n const executable = path.basename(args[0]?.replace(/^[-:@+!]+/u, \"\") ?? \"\");\n if (executable === \"sailorbridge\")\n return args[1] === \"host\" && args[2] === \"run\";\n if (executable !== \"node\" && executable !== \"bun\")\n return false;\n return _isSailorBridgeEntry(args[1]) && args[2] === \"host\" && args[3] === \"run\";\n}\nfunction _isSailorBridgeEntry(value) {\n if (!value)\n return false;\n const segments = value.replace(/\\\\/gu, \"/\").split(\"/\").filter(Boolean);\n return segments.at(-1) === \"cli.js\" && segments.at(-2) === \"dist\"\n && segments.at(-3) === \"client\" && segments.at(-4) === \"@sailorbridge\";\n}\nfunction _systemdExecStart(text) {\n const values = [...text.matchAll(/^\\s*ExecStart\\s*=(.*)$/gmu)].map((match) => match[1]?.trim() ?? \"\").filter(Boolean);\n if (values.length !== 1)\n return null;\n return _commandWords(values[0]);\n}\nfunction _commandWords(value) {\n const words = [];\n const token = /\"((?:\\\\.|[^\"])*)\"|'([^']*)'|((?:\\\\.|[^\\s\"'])+)/gu;\n let cursor = 0;\n for (const match of value.matchAll(token)) {\n if (value.slice(cursor, match.index).trim())\n return null;\n words.push((match[1] ?? match[2] ?? match[3] ?? \"\").replace(/\\\\(.)/gu, \"$1\"));\n cursor = (match.index ?? 0) + match[0].length;\n }\n return words.length && !value.slice(cursor).trim() ? words : null;\n}\nfunction _launchdProgramArguments(text) {\n const arrays = [...text.matchAll(/<key>\\s*ProgramArguments\\s*<\\/key>\\s*<array>([\\s\\S]*?)<\\/array>/gu)];\n if (arrays.length !== 1)\n return null;\n const body = arrays[0]?.[1] ?? \"\";\n const values = [...body.matchAll(/<string>([\\s\\S]*?)<\\/string>/gu)].map((match) => _xmlDecode(match[1] ?? \"\"));\n const remainder = body.replace(/<string>[\\s\\S]*?<\\/string>/gu, \"\").trim();\n if (!values.length || remainder || values.includes(null))\n return null;\n return values.filter((value) => value !== null);\n}\nfunction _xmlDecode(value) {\n let invalid = false;\n const decoded = value.replace(/&([^;]+);/gu, (_match, entity) => {\n const replacement = XML_ENTITIES[entity];\n if (replacement === undefined)\n invalid = true;\n return replacement ?? \"\";\n });\n return invalid ? null : decoded;\n}\nasync function _archiveDefinition(runtime, file) {\n const timestamp = new Date().toISOString().replace(/[-:.]/gu, \"\");\n const archive = `${file}.sb-legacy-${timestamp}`;\n if (await _lstatOrNull(runtime, archive))\n throw new Error(`legacy service archive already exists: ${archive}`);\n await runtime.rename(file, archive);\n}\nasync function _readDefinition(runtime, file) {\n const stats = await _lstatOrNull(runtime, file);\n if (!stats)\n return null;\n if (stats.isSymbolicLink())\n throw new Error(`${file} is a symlink; SailorBridge will not write through it`);\n return await runtime.readFile(file, \"utf8\"); // intentional — reads the definition we generated, not user text input\n}\nasync function _lstatOrNull(runtime, file) {\n try {\n return await runtime.lstat(file);\n }\n catch (error) {\n if (!(error instanceof Error) || !(\"code\" in error) || error.code !== \"ENOENT\")\n throw error;\n return null; // intentional — a missing definition is the normal first-install path\n }\n}\n/** Replaces rather than truncates, so a pre-created file cannot dictate the mode or redirect the write. */\nasync function writeDefinition(runtime, file, text) {\n await runtime.rm(file, { force: true });\n await runtime.writeFile(file, text, { mode: 0o644 });\n await runtime.chmod(file, 0o644);\n}\nfunction systemdCommand(args) {\n return args.map(systemdArg).join(\" \");\n}\nfunction systemdArg(value) {\n if (/[\\u0000-\\u001f\\u007f]/u.test(value))\n throw new Error(\"systemd unit values must not contain control characters\");\n const escaped = value.replace(/%/gu, \"%%\");\n if (/^[A-Za-z0-9_@+=:,./-]+$/u.test(escaped))\n return escaped;\n return `\"${escaped.replace(/\\\\/gu, \"\\\\\\\\\").replace(/\"/gu, '\\\\\"')}\"`;\n}\nfunction xmlString(value) {\n return ` <string>${xmlEscape(value)}</string>`;\n}\nfunction xmlEscape(value) {\n return value.replace(/&/gu, \"&\").replace(/</gu, \"<\").replace(/>/gu, \">\").replace(/\"/gu, \""\");\n}\nasync function detectLinger(runtime) {\n const result = await optionalExec(runtime, \"loginctl\", [\"show-user\", runtime.username, \"--property=Linger\", \"--value\"]);\n const value = result?.stdout.trim().toLowerCase();\n if (value === \"yes\")\n return \"enabled\";\n if (value === \"no\")\n return \"disabled\";\n return \"unknown\";\n}\nfunction lingerNote(username, state) {\n if (state === \"enabled\")\n return undefined;\n return `For boot persistence, run: sudo loginctl enable-linger ${username}`;\n}\nasync function optionalExec(runtime, file, args) {\n try {\n return await runtime.execFile(file, args);\n }\n catch {\n // intentional — callers only need \"did this succeed\"; every path that must not fail open\n // (install, uninstall) verifies the resulting state with a follow-up call instead.\n return null;\n }\n}\nasync function fileExists(runtime, file) {\n try {\n await runtime.access(file, fsConstants.F_OK);\n return true;\n }\n catch {\n return false;\n }\n}\nfunction assertNoSecretMaterial(text, env) {\n const secrets = [\"SAILORBRIDGE_TOKEN\", \"SAILORBRIDGE_CAPTAIN_ACCESS_TOKEN\"].flatMap((key) => env[key] ? [env[key]] : []);\n for (const secret of secrets) {\n if (secret && text.includes(secret))\n throw new Error(\"service definition must not embed bearer tokens\");\n }\n}\nfunction _writeServiceOutput(io, value) {\n writeOutput(io.stdout, value, io.format, () => renderServicePlain(value));\n}\nfunction writeServiceLog(io, event, fields) {\n io.stderr.write(`${JSON.stringify({ ts: new Date().toISOString(), event, ...(fields ?? {}) })}\\n`);\n}\n//# sourceMappingURL=service.js.map",
|
|
48
|
+
"import { execFile as execFileCb } from \"node:child_process\";\nimport { createHash } from \"node:crypto\";\nimport { constants as fsConstants } from \"node:fs\";\nimport { access, chmod, lstat, mkdir, readFile, rename, rm, writeFile } from \"node:fs/promises\"; // intentional — service management reads generated host state, not CLI text parameters\nimport { homedir, platform, userInfo } from \"node:os\";\nimport path from \"node:path\";\nimport { promisify } from \"node:util\";\nimport { defaultHostCredentialsPath } from \"../auth/index.js\";\nimport { writeOutput } from \"../output-format.js\";\nimport { renderServicePlain } from \"../plain-output-fields.js\";\nimport { cleanupManagedMaterialization } from \"./managed-materialization.js\";\nconst execFileDefault = promisify(execFileCb);\nconst DEFAULT_SYSTEMD_SERVICE_NAME = \"sailorbridge-host.service\";\nconst DEFAULT_LAUNCHD_LABEL = \"com.sailorbridge.host\";\n// Scoped units must stay inside our own namespace so `--service-name` can never enable\n// or overwrite an unrelated user unit such as `pipewire.service`.\nconst SCOPED_SYSTEMD_PREFIX = \"sailorbridge-host-\";\nconst SCOPED_LAUNCHD_PREFIX = \"com.sailorbridge.host.\";\n// Marks a definition as ours and fingerprints which host it serves, so reinstall can tell\n// \"same host, refresh it\" from \"someone else's file\" and \"another host already lives here\".\nconst MANAGED_MARKER = /sailorbridge-managed 1 ([0-9a-f]{16})/u;\nconst UNINSTALL_HINT = \"sailorbridge host service uninstall\";\nconst XML_ENTITIES = { amp: \"&\", lt: \"<\", gt: \">\", quot: '\"', apos: \"'\" };\n/** Installs and starts the host daemon service, returning what landed on disk. Re-running overwrites the same unit. */\nexport async function installHostService(options, deps = {}) {\n const flags = { ...options, dryRun: false };\n assertScopedServiceFlags(flags);\n const runtime = assertSupportedPlatform(serviceRuntime(deps));\n const paths = servicePaths(runtime, flags);\n const command = resolveCommand(flags.binary, runtime);\n if (runtime.platform === \"linux\")\n return installSystemd(flags, runtime, paths, command);\n return installLaunchd(flags, runtime, paths, command);\n}\n/** Restarts only the default product-managed service when it is already running. */\nexport async function restartRunningHostService(deps = {}) {\n const runtime = serviceRuntime(deps);\n if (runtime.platform !== \"linux\" && runtime.platform !== \"darwin\") {\n return { restarted: false, reason: \"unsupported-platform\" };\n }\n const paths = servicePaths(runtime, { dryRun: false });\n if (!await _isManagedHostService(runtime, paths))\n return { restarted: false, reason: \"not-managed\" };\n if (runtime.platform === \"linux\")\n return _restartRunningSystemd(runtime, paths);\n return _restartRunningLaunchd(runtime, paths);\n}\nexport const UNSUPPORTED_SERVICE_PLATFORM = \"host service supports Linux systemd and macOS launchd only\";\nexport async function runHostServiceCommandFromCli(argv, io, deps = {}) {\n const action = argv[0] ?? \"status\";\n const flags = parseServiceFlags(argv.slice(1));\n assertScopedServiceFlags(flags);\n const runtime = assertSupportedPlatform(serviceRuntime(deps));\n const paths = servicePaths(runtime, flags);\n const command = resolveCommand(flags.binary, runtime);\n if (runtime.platform === \"linux\")\n await runSystemd(action, flags, runtime, paths, command, io);\n else\n await runLaunchd(action, flags, runtime, paths, command, io);\n}\nexport function renderSystemdUnit(input) {\n return `# ${managedMarker(input)}\n[Unit]\nDescription=SailorBridge host daemon\nAfter=network-online.target\nWants=network-online.target\n\n[Service]\nType=simple\nWorkingDirectory=${systemdArg(input.workingDirectory)}\nExecStart=${systemdCommand(hostRunArgs(input))}\nRestart=on-failure\nRestartSec=5\n\n[Install]\nWantedBy=default.target\n`;\n}\nexport function renderLaunchdPlist(input) {\n const args = hostRunArgs(input).map(xmlString).join(\"\\n\");\n return `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- ${managedMarker(input)} -->\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n <key>Label</key>\n <string>${xmlEscape(input.label ?? DEFAULT_LAUNCHD_LABEL)}</string>\n <key>ProgramArguments</key>\n <array>\n${args}\n </array>\n <key>WorkingDirectory</key>\n <string>${xmlEscape(input.workingDirectory)}</string>\n <key>RunAtLoad</key>\n <true/>\n <key>KeepAlive</key>\n <true/>\n <key>StandardOutPath</key>\n <string>${xmlEscape(path.join(input.logsDir, \"host.out.log\"))}</string>\n <key>StandardErrorPath</key>\n <string>${xmlEscape(path.join(input.logsDir, \"host.err.log\"))}</string>\n</dict>\n</plist>\n`;\n}\nfunction parseServiceFlags(argv) {\n const parsed = { dryRun: false };\n for (let i = 0; i < argv.length; i += 1) {\n const item = argv[i];\n if (item === \"--dry-run\") {\n parsed.dryRun = true;\n continue;\n }\n const value = argv[i + 1];\n if (!value || value.startsWith(\"--\"))\n throw new Error(`${item} requires a value`);\n assignServiceFlag(parsed, item, value);\n i += 1;\n }\n return parsed;\n}\nfunction assignServiceFlag(parsed, item, value) {\n if (item === \"--binary\")\n parsed.binary = value;\n else if (item === \"--credentials-path\")\n parsed.credentialsPath = value;\n else if (item === \"--workspace-root\")\n parsed.workspaceRoot = value;\n else if (item === \"--host-id\")\n parsed.hostId = value;\n else if (item === \"--display-name\")\n parsed.displayName = value;\n else if (item === \"--service-dir\")\n parsed.serviceDir = value;\n else if (item === \"--service-name\")\n parsed.serviceName = value;\n else\n throw new Error(`unexpected host service argument: ${item}`);\n}\nfunction assertScopedServiceFlags(flags) {\n if (flags.serviceDir !== undefined && flags.serviceName === undefined) {\n throw new Error(\"--service-dir requires --service-name\");\n }\n}\nasync function runSystemd(action, flags, runtime, paths, command, io) {\n if (action === \"install\")\n return _writeServiceOutput(io, await installSystemd(flags, runtime, paths, command));\n if (action === \"uninstall\")\n return uninstallSystemd(flags, runtime, paths, io);\n if (action === \"status\")\n return statusSystemd(runtime, paths, io);\n throw new Error(\"host service command must be install, uninstall, or status\");\n}\nasync function installSystemd(flags, runtime, paths, command) {\n const unit = renderSystemdUnit(serviceInput(flags, runtime, command, paths));\n assertNoSecretMaterial(unit, runtime.env);\n if (!flags.dryRun) {\n await runtime.mkdir(paths.serviceDir, { recursive: true });\n const disposition = await _definitionDisposition(runtime, paths.file, unit, \"systemd\");\n if (disposition === \"legacy\") {\n await runtime.execFile(\"systemctl\", [\"--user\", \"stop\", paths.serviceName]);\n await _archiveDefinition(runtime, paths.file);\n }\n await writeDefinition(runtime, paths.file, unit);\n await runtime.execFile(\"systemctl\", [\"--user\", \"daemon-reload\"]);\n await runtime.execFile(\"systemctl\", [\"--user\", \"enable\", paths.file]);\n // restart, not `enable --now`: `--now` is a no-op on an already-active unit, which would\n // leave the previous process running with the previous unit's arguments.\n await runtime.execFile(\"systemctl\", [\"--user\", \"restart\", paths.serviceName]);\n }\n const linger = flags.dryRun ? \"unknown\" : await detectLinger(runtime);\n return { status: \"installed\", platform: \"systemd\", file: paths.file, linger, note: lingerNote(runtime.username, linger) };\n}\nasync function uninstallSystemd(flags, runtime, paths, io) {\n if (!flags.dryRun) {\n await optionalExec(runtime, \"systemctl\", [\"--user\", \"disable\", \"--now\", paths.serviceName]);\n await runtime.rm(paths.file, { force: true });\n if (isProductionServiceTarget(flags)) {\n await cleanupManagedMaterialization({ env: { ...runtime.env, HOME: runtime.homeDir }, rm: runtime.rm, readFile: runtime.readFile, logger: (event, fields) => writeServiceLog(io, event, fields) }); // intentional — forward the managed-state reader to cleanup\n }\n await optionalExec(runtime, \"systemctl\", [\"--user\", \"daemon-reload\"]);\n }\n _writeServiceOutput(io, { status: \"uninstalled\", platform: \"systemd\", file: paths.file });\n}\nasync function statusSystemd(runtime, paths, io) {\n const active = await optionalExec(runtime, \"systemctl\", [\"--user\", \"is-active\", paths.serviceName]);\n const installed = await fileExists(runtime, paths.file);\n const linger = await detectLinger(runtime);\n _writeServiceOutput(io, { status: active?.stdout.trim() || \"unknown\", installed, platform: \"systemd\", file: paths.file, linger, note: lingerNote(runtime.username, linger) });\n}\nasync function runLaunchd(action, flags, runtime, paths, command, io) {\n if (action === \"install\")\n return _writeServiceOutput(io, await installLaunchd(flags, runtime, paths, command));\n if (action === \"uninstall\")\n return uninstallLaunchd(flags, runtime, paths, io);\n if (action === \"status\")\n return statusLaunchd(runtime, paths, io);\n throw new Error(\"host service command must be install, uninstall, or status\");\n}\nasync function installLaunchd(flags, runtime, paths, command) {\n const plist = renderLaunchdPlist({ ...serviceInput(flags, runtime, command, paths), label: paths.launchdLabel });\n assertNoSecretMaterial(plist, runtime.env);\n if (!flags.dryRun) {\n await runtime.mkdir(paths.serviceDir, { recursive: true });\n await runtime.mkdir(paths.logsDir, { recursive: true });\n const disposition = await _definitionDisposition(runtime, paths.file, plist, \"launchd\");\n await unloadLaunchdService(runtime, paths.launchdLabel);\n if (disposition === \"legacy\")\n await _archiveDefinition(runtime, paths.file);\n await writeDefinition(runtime, paths.file, plist);\n await runtime.execFile(\"launchctl\", [\"bootstrap\", `gui/${runtime.uid}`, paths.file]);\n await runtime.execFile(\"launchctl\", [\"enable\", launchdServiceTarget(runtime.uid, paths.launchdLabel)]);\n }\n return { status: \"installed\", platform: \"launchd\", file: paths.file, linger: \"not-applicable\" };\n}\n/** Unloads before the plist is overwritten, so a bootout we cannot confirm never leaves a rewritten plist behind. */\nasync function unloadLaunchdService(runtime, label) {\n const target = launchdServiceTarget(runtime.uid, label);\n await optionalExec(runtime, \"launchctl\", [\"bootout\", target]);\n const stillLoaded = await optionalExec(runtime, \"launchctl\", [\"print\", target]);\n if (stillLoaded)\n throw new Error(`launchd service ${target} is still loaded; run 'launchctl bootout ${target}' and retry`);\n}\nasync function uninstallLaunchd(flags, runtime, paths, io) {\n if (!flags.dryRun) {\n await optionalExec(runtime, \"launchctl\", [\"bootout\", launchdServiceTarget(runtime.uid, paths.launchdLabel)]);\n await runtime.rm(paths.file, { force: true });\n if (isProductionServiceTarget(flags)) {\n await cleanupManagedMaterialization({ env: { ...runtime.env, HOME: runtime.homeDir }, rm: runtime.rm, readFile: runtime.readFile, logger: (event, fields) => writeServiceLog(io, event, fields) }); // intentional — forward the managed-state reader to cleanup\n }\n }\n _writeServiceOutput(io, { status: \"uninstalled\", platform: \"launchd\", file: paths.file });\n}\nasync function statusLaunchd(runtime, paths, io) {\n const active = await optionalExec(runtime, \"launchctl\", [\"print\", launchdServiceTarget(runtime.uid, paths.launchdLabel)]);\n const installed = await fileExists(runtime, paths.file);\n _writeServiceOutput(io, { status: active ? \"active\" : \"inactive\", installed, platform: \"launchd\", file: paths.file, linger: \"not-applicable\" });\n}\nasync function _restartRunningSystemd(runtime, paths) {\n const active = await optionalExec(runtime, \"systemctl\", [\"--user\", \"is-active\", paths.serviceName]);\n if (active?.stdout.trim() !== \"active\")\n return { restarted: false, reason: \"not-running\" };\n await runtime.execFile(\"systemctl\", [\"--user\", \"restart\", paths.serviceName]);\n return { restarted: true, platform: \"systemd\", target: paths.serviceName };\n}\nasync function _restartRunningLaunchd(runtime, paths) {\n const target = launchdServiceTarget(runtime.uid, paths.launchdLabel);\n if (!await optionalExec(runtime, \"launchctl\", [\"print\", target])) {\n return { restarted: false, reason: \"not-running\" };\n }\n await runtime.execFile(\"launchctl\", [\"kickstart\", \"-k\", target]);\n return { restarted: true, platform: \"launchd\", target: paths.launchdLabel };\n}\nasync function _isManagedHostService(runtime, paths) {\n try {\n const definition = await _readDefinition(runtime, paths.file);\n if (!definition)\n return false;\n const manager = runtime.platform === \"linux\" ? \"systemd\" : \"launchd\";\n return _isLegacyHostDefinition(definition, manager);\n }\n catch {\n return false; // intentional — an unreadable/foreign manager surface gets the manual restart path\n }\n}\nfunction serviceRuntime(deps) {\n const info = userInfo();\n return {\n platform: deps.platform ?? platform(),\n homeDir: deps.homeDir ?? homedir(),\n uid: deps.uid ?? (typeof process.getuid === \"function\" ? process.getuid() : info.uid),\n username: deps.username ?? info.username,\n execFile: deps.execFile ?? execFileDefault,\n writeFile: deps.writeFile ?? writeFile,\n readFile: deps.readFile ?? readFile, // intentional — bind the managed service-state reader\n mkdir: deps.mkdir ?? mkdir,\n rm: deps.rm ?? rm,\n access: deps.access ?? access,\n lstat: deps.lstat ?? lstat,\n rename: deps.rename ?? rename,\n chmod: deps.chmod ?? chmod,\n env: deps.env ?? process.env,\n execPath: deps.execPath ?? process.execPath,\n argv1: deps.argv1 ?? process.argv[1],\n };\n}\n/** Rejects unsupported platforms before any path or name is derived, so nothing half-applies. */\nfunction assertSupportedPlatform(runtime) {\n if (runtime.platform !== \"linux\" && runtime.platform !== \"darwin\")\n throw new Error(UNSUPPORTED_SERVICE_PLATFORM);\n return runtime;\n}\nfunction launchdServiceTarget(uid, label) {\n return `gui/${uid}/${label}`;\n}\nfunction servicePaths(runtime, flags) {\n if (runtime.platform === \"linux\") {\n // intentional — systemctl enable receives the scoped unit's absolute file path.\n const base = flags.serviceDir ? path.resolve(flags.serviceDir) : path.join(runtime.env.XDG_CONFIG_HOME ?? path.join(runtime.homeDir, \".config\"), \"systemd\", \"user\");\n const serviceName = systemdServiceName(flags.serviceName);\n return { serviceDir: base, file: path.join(base, serviceName), logsDir: path.join(runtime.homeDir, \".sailorbridge\", \"logs\"), serviceName, launchdLabel: DEFAULT_LAUNCHD_LABEL };\n }\n const base = flags.serviceDir ?? path.join(runtime.homeDir, \"Library\", \"LaunchAgents\");\n const launchdLabel = launchdServiceName(flags.serviceName);\n return { serviceDir: base, file: path.join(base, `${launchdLabel}.plist`), logsDir: path.join(runtime.homeDir, \".sailorbridge\", \"logs\"), serviceName: DEFAULT_SYSTEMD_SERVICE_NAME, launchdLabel };\n}\nfunction isProductionServiceTarget(flags) {\n return flags.serviceDir === undefined && flags.serviceName === undefined;\n}\nfunction serviceInput(flags, runtime, command, paths) {\n return {\n command,\n credentialsPath: flags.credentialsPath ?? runtime.env.SAILORBRIDGE_CREDENTIALS_FILE ?? defaultHostCredentialsPath(),\n ...(flags.workspaceRoot ? { workspaceRoot: flags.workspaceRoot } : {}),\n ...(flags.hostId ? { hostId: flags.hostId } : {}),\n ...(flags.displayName ? { displayName: flags.displayName } : {}),\n workingDirectory: runtime.homeDir,\n logsDir: paths.logsDir,\n };\n}\nfunction systemdServiceName(value) {\n if (value === undefined)\n return DEFAULT_SYSTEMD_SERVICE_NAME;\n const name = value.trim();\n if (!name)\n throw new Error(`--service-name must be a scoped unit named ${SCOPED_SYSTEMD_PREFIX}<suffix>.service`);\n const unit = name.endsWith(\".service\") ? name : `${name}.service`;\n if (!/^[A-Za-z0-9_.@-]+\\.service$/.test(unit))\n throw new Error(\"--service-name must be a systemd unit name without path separators\");\n // Namespaced, so a scoped install can never enable or overwrite an unrelated user unit.\n if (!unit.startsWith(SCOPED_SYSTEMD_PREFIX))\n throw new Error(`--service-name must be a scoped unit named ${SCOPED_SYSTEMD_PREFIX}<suffix>.service`);\n return unit;\n}\nfunction launchdServiceName(value) {\n if (value === undefined)\n return DEFAULT_LAUNCHD_LABEL;\n const label = value.trim();\n if (!label)\n throw new Error(`--service-name must be a scoped label named ${SCOPED_LAUNCHD_PREFIX}<suffix>`);\n if (!/^[A-Za-z0-9_.-]+$/.test(label))\n throw new Error(\"--service-name must be a launchd label without path separators\");\n if (!label.startsWith(SCOPED_LAUNCHD_PREFIX))\n throw new Error(`--service-name must be a scoped label named ${SCOPED_LAUNCHD_PREFIX}<suffix>`);\n return label;\n}\nfunction hostRunArgs(input) {\n return [\n ...input.command,\n \"host\",\n \"run\",\n \"--credentials-path\",\n input.credentialsPath,\n ...flagArg(\"--workspace-root\", input.workspaceRoot),\n ...flagArg(\"--host-id\", input.hostId),\n ...flagArg(\"--display-name\", input.displayName),\n ];\n}\nfunction flagArg(flag, value) {\n return value ? [flag, value] : [];\n}\n/**\n * The argv prefix that starts the CLI. Under `npm i -g` the runtime is plain node/bun, so the\n * service has to run `<runtime> <entry point>` rather than the runtime alone.\n */\nfunction resolveCommand(flag, runtime) {\n if (flag)\n return [path.resolve(flag)];\n const name = path.basename(runtime.execPath);\n if (name !== \"node\" && name !== \"bun\")\n return [path.resolve(runtime.execPath)];\n const entry = runtime.argv1?.trim();\n if (!entry)\n throw new Error(\"--binary is required when host service install is not run from an installed sailorbridge entry point\");\n return [path.resolve(runtime.execPath), path.resolve(entry)];\n}\n/**\n * Fingerprints the credential the unit runs against — the one identity that distinguishes two\n * SailorBridge hosts sharing an OS user. Deliberately excludes host id and binary path so a\n * later `host service install` for the same credential refreshes the unit instead of colliding.\n */\nfunction managedMarker(input) {\n const fingerprint = createHash(\"sha256\").update(input.credentialsPath).digest(\"hex\").slice(0, 16);\n return `sailorbridge-managed 1 ${fingerprint}`;\n}\n/** Classifies a safe replacement while rejecting foreign definitions and different managed hosts. */\nasync function _definitionDisposition(runtime, file, next, manager) {\n const existing = await _readDefinition(runtime, file);\n if (existing === null)\n return \"missing\";\n const current = MANAGED_MARKER.exec(existing)?.[1];\n if (!current) {\n if (_isLegacyHostDefinition(existing, manager))\n return \"legacy\";\n throw new Error(`${file} was not written by SailorBridge; move it aside, or pass --service-name to install a scoped unit instead`);\n }\n if (current !== MANAGED_MARKER.exec(next)?.[1]) {\n throw new Error(`${file} already serves a different SailorBridge host; run '${UNINSTALL_HINT}' first, or pass --service-name to install a scoped unit instead`);\n }\n return \"managed\";\n}\nfunction _isLegacyHostDefinition(text, manager) {\n const args = manager === \"systemd\" ? _systemdExecStart(text) : _launchdProgramArguments(text);\n if (!args)\n return false;\n const executable = path.basename(args[0]?.replace(/^[-:@+!]+/u, \"\") ?? \"\");\n if (executable === \"sailorbridge\")\n return args[1] === \"host\" && args[2] === \"run\";\n if (executable !== \"node\" && executable !== \"bun\")\n return false;\n return _isSailorBridgeEntry(args[1]) && args[2] === \"host\" && args[3] === \"run\";\n}\nfunction _isSailorBridgeEntry(value) {\n if (!value)\n return false;\n const normalized = `/${value.replace(/\\\\/gu, \"/\").split(\"/\").filter(Boolean).join(\"/\")}`;\n return normalized.endsWith(\"/@sailorbridge/client/dist/cli.js\")\n || normalized.endsWith(\"/@sailorbridge/client/dist/src/cli.js\");\n}\nfunction _systemdExecStart(text) {\n const values = [...text.matchAll(/^\\s*ExecStart\\s*=(.*)$/gmu)].map((match) => match[1]?.trim() ?? \"\").filter(Boolean);\n if (values.length !== 1)\n return null;\n return _commandWords(values[0]);\n}\nfunction _commandWords(value) {\n const words = [];\n const token = /\"((?:\\\\.|[^\"])*)\"|'([^']*)'|((?:\\\\.|[^\\s\"'])+)/gu;\n let cursor = 0;\n for (const match of value.matchAll(token)) {\n if (value.slice(cursor, match.index).trim())\n return null;\n words.push((match[1] ?? match[2] ?? match[3] ?? \"\").replace(/\\\\(.)/gu, \"$1\"));\n cursor = (match.index ?? 0) + match[0].length;\n }\n return words.length && !value.slice(cursor).trim() ? words : null;\n}\nfunction _launchdProgramArguments(text) {\n const arrays = [...text.matchAll(/<key>\\s*ProgramArguments\\s*<\\/key>\\s*<array>([\\s\\S]*?)<\\/array>/gu)];\n if (arrays.length !== 1)\n return null;\n const body = arrays[0]?.[1] ?? \"\";\n const values = [...body.matchAll(/<string>([\\s\\S]*?)<\\/string>/gu)].map((match) => _xmlDecode(match[1] ?? \"\"));\n const remainder = body.replace(/<string>[\\s\\S]*?<\\/string>/gu, \"\").trim();\n if (!values.length || remainder || values.includes(null))\n return null;\n return values.filter((value) => value !== null);\n}\nfunction _xmlDecode(value) {\n let invalid = false;\n const decoded = value.replace(/&([^;]+);/gu, (_match, entity) => {\n const replacement = XML_ENTITIES[entity];\n if (replacement === undefined)\n invalid = true;\n return replacement ?? \"\";\n });\n return invalid ? null : decoded;\n}\nasync function _archiveDefinition(runtime, file) {\n const timestamp = new Date().toISOString().replace(/[-:.]/gu, \"\");\n const archive = `${file}.sb-legacy-${timestamp}`;\n if (await _lstatOrNull(runtime, archive))\n throw new Error(`legacy service archive already exists: ${archive}`);\n await runtime.rename(file, archive);\n}\nasync function _readDefinition(runtime, file) {\n const stats = await _lstatOrNull(runtime, file);\n if (!stats)\n return null;\n if (stats.isSymbolicLink())\n throw new Error(`${file} is a symlink; SailorBridge will not write through it`);\n return await runtime.readFile(file, \"utf8\"); // intentional — reads the definition we generated, not user text input\n}\nasync function _lstatOrNull(runtime, file) {\n try {\n return await runtime.lstat(file);\n }\n catch (error) {\n if (!(error instanceof Error) || !(\"code\" in error) || error.code !== \"ENOENT\")\n throw error;\n return null; // intentional — a missing definition is the normal first-install path\n }\n}\n/** Replaces rather than truncates, so a pre-created file cannot dictate the mode or redirect the write. */\nasync function writeDefinition(runtime, file, text) {\n await runtime.rm(file, { force: true });\n await runtime.writeFile(file, text, { mode: 0o644 });\n await runtime.chmod(file, 0o644);\n}\nfunction systemdCommand(args) {\n return args.map(systemdArg).join(\" \");\n}\nfunction systemdArg(value) {\n if (/[\\u0000-\\u001f\\u007f]/u.test(value))\n throw new Error(\"systemd unit values must not contain control characters\");\n const escaped = value.replace(/%/gu, \"%%\");\n if (/^[A-Za-z0-9_@+=:,./-]+$/u.test(escaped))\n return escaped;\n return `\"${escaped.replace(/\\\\/gu, \"\\\\\\\\\").replace(/\"/gu, '\\\\\"')}\"`;\n}\nfunction xmlString(value) {\n return ` <string>${xmlEscape(value)}</string>`;\n}\nfunction xmlEscape(value) {\n return value.replace(/&/gu, \"&\").replace(/</gu, \"<\").replace(/>/gu, \">\").replace(/\"/gu, \""\");\n}\nasync function detectLinger(runtime) {\n const result = await optionalExec(runtime, \"loginctl\", [\"show-user\", runtime.username, \"--property=Linger\", \"--value\"]);\n const value = result?.stdout.trim().toLowerCase();\n if (value === \"yes\")\n return \"enabled\";\n if (value === \"no\")\n return \"disabled\";\n return \"unknown\";\n}\nfunction lingerNote(username, state) {\n if (state === \"enabled\")\n return undefined;\n return `For boot persistence, run: sudo loginctl enable-linger ${username}`;\n}\nasync function optionalExec(runtime, file, args) {\n try {\n return await runtime.execFile(file, args);\n }\n catch {\n // intentional — callers only need \"did this succeed\"; every path that must not fail open\n // (install, uninstall) verifies the resulting state with a follow-up call instead.\n return null;\n }\n}\nasync function fileExists(runtime, file) {\n try {\n await runtime.access(file, fsConstants.F_OK);\n return true;\n }\n catch {\n return false;\n }\n}\nfunction assertNoSecretMaterial(text, env) {\n const secrets = [\"SAILORBRIDGE_TOKEN\", \"SAILORBRIDGE_CAPTAIN_ACCESS_TOKEN\"].flatMap((key) => env[key] ? [env[key]] : []);\n for (const secret of secrets) {\n if (secret && text.includes(secret))\n throw new Error(\"service definition must not embed bearer tokens\");\n }\n}\nfunction _writeServiceOutput(io, value) {\n writeOutput(io.stdout, value, io.format, () => renderServicePlain(value));\n}\nfunction writeServiceLog(io, event, fields) {\n io.stderr.write(`${JSON.stringify({ ts: new Date().toISOString(), event, ...(fields ?? {}) })}\\n`);\n}\n//# sourceMappingURL=service.js.map",
|
|
49
49
|
"// Keep this runtime copy in parity with packages/shared-types/src/index.ts for standalone npm packaging.\nexport const GIT_SECRET_PATH_MARKERS = [\n \"token\", \"credential\", \"secret\", \"password\", \"passwd\", \"api_key\", \"api-key\",\n \"apikey\", \"access_key\", \"access-key\", \"private_key\", \"private-key\",\n];\nexport const GIT_REMOTE_UNSAFE_RE = /[\\s;&|`$()<>\\x00-\\x1f\\x7f]/u;\nexport function isAcceptedGitRemote(value) {\n return isAcceptedRemote(value, false);\n}\nexport function isAcceptedTeamGitRemote(value) {\n return isAcceptedRemote(value, true);\n}\n// Prepares a workspace's own `remote.origin.url` for reporting. Origin *form* is\n// never a reason to hide a workspace (owner ruling: we only require a git repo, the\n// user owns their git setup) — the sole constraint is no-secret-leakage. A blank\n// origin yields null (a repo with no remote is still reportable); embedded userinfo\n// is stripped; a credential hidden in a path segment cannot be safely stripped, so\n// the whole origin is dropped to null rather than leaked.\nexport function sanitizeGitOrigin(value) {\n const origin = value.trim();\n if (!origin)\n return null;\n if (/^[A-Za-z][A-Za-z0-9+.-]*:\\/\\//u.test(origin)) {\n let parsed;\n try {\n parsed = new URL(origin);\n }\n catch {\n return origin;\n }\n if (hasCredentialPath(parsed.pathname))\n return null;\n const sshLike = parsed.protocol === \"ssh:\";\n const carriesCredential = parsed.password !== \"\" || (!sshLike && parsed.username !== \"\");\n if (!carriesCredential)\n return origin;\n parsed.password = \"\";\n if (!sshLike)\n parsed.username = \"\"; // an ssh username (e.g. git@) is not a secret; keep it\n return parsed.toString();\n }\n const scp = /^([^@\\s]+@)?([^/:]+):(.+)$/u.exec(origin);\n if (scp) {\n if ((scp[1] ?? \"\").includes(\":\"))\n return null;\n return hasCredentialPath(scp[3] ?? \"\") ? null : origin;\n }\n return hasCredentialPath(origin) ? null : origin;\n}\nfunction isAcceptedRemote(value, allowLocalPath) {\n const remote = value.trim();\n if (!remote || remote.length > 2048 || GIT_REMOTE_UNSAFE_RE.test(remote))\n return false;\n if (remote.startsWith(\"/\"))\n return allowLocalPath && !hasCredentialPath(remote);\n if (remote.startsWith(\"git@\")) {\n const match = /^git@[A-Za-z0-9._-]+:([A-Za-z0-9._/~-]+)$/u.exec(remote);\n return Boolean(match) && !hasCredentialPath(match?.[1] ?? \"\");\n }\n try {\n const parsed = new URL(remote);\n if (parsed.search || parsed.hash || hasCredentialPath(parsed.pathname))\n return false;\n if (parsed.protocol === \"https:\")\n return !parsed.username && !parsed.password;\n return parsed.protocol === \"ssh:\" && !parsed.password;\n }\n catch {\n return false;\n }\n}\nfunction hasCredentialPath(value) {\n try {\n const decoded = decodeURIComponent(value);\n return GIT_SECRET_PATH_MARKERS.some((marker) => decoded.toLowerCase().includes(marker))\n || decoded.split(\"/\").some((segment) => looksLikeCredential(segment));\n }\n catch {\n return true;\n }\n}\nfunction looksLikeCredential(segment) {\n const value = segment.trim();\n if (value.length < 16)\n return false;\n if (value.startsWith(\"eyJ\"))\n return true;\n if ((value.split(\".\").length - 1) >= 2 && value.length >= 24 && /^[A-Za-z0-9._-]+$/u.test(value))\n return true;\n return value.length >= 32 && /^[A-Za-z0-9_-]+$/u.test(value);\n}\n//# sourceMappingURL=git-remote.js.map",
|
|
50
50
|
"import { isAcceptedGitRemote, isAcceptedTeamGitRemote } from \"./git-remote.js\";\nimport { PHASE1_ENGINE_GATE_MESSAGE, PHASE1_TRANSPORT_GATE_MESSAGE, } from \"../supervisor/index.js\";\nconst TRANSPORTS = [\"auto\", \"sdk\", \"pty\", \"tmux\", \"headless\"];\nconst SUPPORTED_PHASE1_ENGINES = [\"claude\", \"codex\"];\nconst ENGINE_PATTERN = /^[a-z][a-z0-9._-]{0,63}$/u;\nconst ROLE_PATTERN = /^[a-z0-9][a-z0-9_-]{0,63}$/u;\n// env names that may carry a credential — rejected so a start spec never smuggles\n// a secret into relay storage (mirrors the credential-isolation stance in P5b).\nconst SECRET_ENV_MARKERS = [\n \"sailorbridge_\", \"token\", \"secret\", \"password\", \"passwd\", \"credential\", \"key\", \"api_key\", \"apikey\",\n \"access_key\", \"private_key\", \"authorization\", \"bearer\", \"oauth\", \"session_key\",\n];\n// SAILORBRIDGE_* identity/transport is owned by the redeemed enrollment + host\n// runtime, never by a caller-supplied spec, so the whole namespace is reserved.\nconst RESERVED_ENV_PREFIX = \"SAILORBRIDGE_\";\nconst RESERVED_RUNTIME_ENV_NAMES = new Set([\n \"CLAUDE_CONFIG_DIR\",\n \"CODEX_HOME\",\n \"HOME\",\n \"XDG_CONFIG_HOME\",\n \"XDG_DATA_HOME\",\n \"XDG_STATE_HOME\",\n \"XDG_CACHE_HOME\",\n]);\nexport function parseAgentStartSpec(raw) {\n const spec = _asObject(raw, \"spec\");\n const engine = _engine(spec.engine);\n const restartCommand = _restartCommand(spec.restart_command);\n const command = _command(spec.command);\n const driverOptions = _driverOptions(spec, engine, command);\n const role = _role(spec.role, spec.roles);\n return {\n engine,\n transport: _transport(spec.transport),\n role,\n roles: [role],\n workspace: _workspace(spec.workspace),\n command,\n ...(restartCommand === undefined ? {} : { restartCommand }),\n env: _env(spec.env),\n ...(driverOptions === undefined ? {} : { driverOptions }),\n };\n}\nfunction _engine(value) {\n const engine = _trimmed(value, \"spec.engine\");\n if (!ENGINE_PATTERN.test(engine) || /[._-]$/u.test(engine) || engine.includes(\"..\")) {\n throw new Error(`spec.engine is not a valid engine id: ${engine}`);\n }\n if (!SUPPORTED_PHASE1_ENGINES.includes(engine)) {\n throw new Error(PHASE1_ENGINE_GATE_MESSAGE);\n }\n return engine;\n}\nfunction _transport(value) {\n if (value === undefined || value === null)\n return \"auto\";\n if (typeof value !== \"string\" || !TRANSPORTS.includes(value)) {\n throw new Error(`spec.transport must be one of ${TRANSPORTS.join(\"|\")}`);\n }\n if (value !== \"tmux\") {\n throw new Error(PHASE1_TRANSPORT_GATE_MESSAGE);\n }\n return value;\n}\nfunction _role(value, legacyRoles) {\n const role = value === undefined ? _legacyRole(legacyRoles) : _trimmed(value, \"spec.role\");\n if (!ROLE_PATTERN.test(role))\n throw new Error(`spec.role is not a valid role: ${role}`);\n return role;\n}\nfunction _legacyRole(value) {\n if (!Array.isArray(value) || value.length !== 1)\n throw new Error(\"spec.role must be a non-empty string\");\n return _trimmed(value[0], \"spec.roles[0]\");\n}\nfunction _workspace(value) {\n const workspace = _asObject(value, \"spec.workspace\");\n const mode = _trimmed(workspace.mode, \"spec.workspace.mode\");\n if (mode === \"fresh\")\n return { mode: \"fresh\" };\n if (mode === \"worktree\")\n return { mode: \"worktree\", root: _workspaceRoot(workspace.root) };\n if (mode !== \"git\")\n throw new Error(`spec.workspace.mode must be 'fresh', 'git', or 'worktree', got ${mode}`);\n const gitUrl = _gitUrl(workspace.git_url);\n const result = { mode: \"git\", gitUrl };\n if (workspace.git_ref !== undefined && workspace.git_ref !== null) {\n result.gitRef = _gitRef(workspace.git_ref);\n }\n if (workspace.subdir !== undefined && workspace.subdir !== null) {\n result.subdir = _subdir(workspace.subdir);\n }\n return result;\n}\nfunction _gitUrl(value) {\n const url = _trimmed(value, \"spec.workspace.git_url\");\n if (!isAcceptedGitRemote(url))\n throw new Error(`spec.workspace.git_url is not an accepted git remote: ${url}`);\n return url;\n}\nfunction _workspaceRoot(value) {\n const root = _trimmed(value, \"spec.workspace.root\");\n // A local absolute path on the host. isAcceptedTeamGitRemote also accepts remote\n // URLs, so gate on the leading slash to keep root a filesystem path — never a URL\n // the host would try to clone.\n if (!root.startsWith(\"/\") || !isAcceptedTeamGitRemote(root)) {\n throw new Error(`spec.workspace.root must be a local absolute path: ${root}`);\n }\n return root;\n}\nfunction _gitRef(value) {\n const ref = _trimmed(value, \"spec.workspace.git_ref\");\n if (!/^[A-Za-z0-9._/-]{1,200}$/u.test(ref) || ref.includes(\"..\")) {\n throw new Error(`spec.workspace.git_ref is not a valid ref: ${ref}`);\n }\n return ref;\n}\nfunction _subdir(value) {\n const subdir = _trimmed(value, \"spec.workspace.subdir\");\n if (subdir.startsWith(\"/\") || subdir.split(\"/\").some((part) => part === \"..\")) {\n throw new Error(`spec.workspace.subdir must be a relative path without '..': ${subdir}`);\n }\n return subdir;\n}\nfunction _command(value) {\n if (value === undefined || value === null)\n return [];\n if (!Array.isArray(value) || value.some((part) => typeof part !== \"string\" || !part.trim())) {\n throw new Error(\"spec.command must be an array of non-empty strings\");\n }\n return value;\n}\nfunction _restartCommand(value) {\n if (value === undefined || value === null)\n return undefined;\n return _trimmed(value, \"spec.restart_command\");\n}\nconst CLAUDE_PERMISSION_MODES = [\"default\", \"acceptEdits\", \"bypassPermissions\", \"plan\", \"dontAsk\", \"auto\"];\nconst CODEX_SANDBOX_MODES = [\"read-only\", \"workspace-write\", \"danger-full-access\"];\nconst CODEX_APPROVAL_POLICIES = [\"never\", \"on-request\", \"on-failure\", \"untrusted\"];\nfunction _driverOptions(spec, engine, command) {\n const model = _optionalModel(spec.model);\n if (model !== undefined && command.length > 0) {\n throw new Error(\"spec.model cannot be combined with explicit spec.command; put --model in the command or omit command\");\n }\n const permissionMode = _optionalChoice(spec.permission_mode, CLAUDE_PERMISSION_MODES, \"spec.permission_mode\");\n const sandboxMode = _optionalChoice(spec.sandbox_mode, CODEX_SANDBOX_MODES, \"spec.sandbox_mode\");\n const approvalPolicy = _optionalChoice(spec.approval_policy, CODEX_APPROVAL_POLICIES, \"spec.approval_policy\");\n const yolo = _optionalBoolean(spec.yolo, \"spec.yolo\");\n _rejectMismatchedDriverOptions(engine, permissionMode, sandboxMode, approvalPolicy, yolo, command);\n const claude = _claudeDriverOptions(permissionMode, model);\n const codex = _codexDriverOptions(sandboxMode, approvalPolicy, yolo, model);\n return claude || codex ? { ...(claude === undefined ? {} : { claude }), ...(codex === undefined ? {} : { codex }) } : undefined;\n}\nfunction _rejectMismatchedDriverOptions(engine, permissionMode, sandboxMode, approvalPolicy, yolo, command) {\n if (permissionMode !== undefined && engine !== \"claude\")\n throw new Error(\"spec.permission_mode is only valid for claude\");\n if ((sandboxMode !== undefined || approvalPolicy !== undefined || yolo !== undefined) && engine !== \"codex\") {\n throw new Error(\"spec.sandbox_mode/spec.approval_policy/spec.yolo are only valid for codex\");\n }\n if (yolo === true && (sandboxMode !== undefined || approvalPolicy !== undefined)) {\n throw new Error(\"spec.yolo true cannot be combined with spec.sandbox_mode or spec.approval_policy\");\n }\n if (command.length > 0 && (permissionMode !== undefined || sandboxMode !== undefined || approvalPolicy !== undefined || yolo !== undefined)) {\n throw new Error(\"spec.command cannot be combined with safety fields\");\n }\n}\nfunction _claudeDriverOptions(permissionMode, model) {\n if (permissionMode === undefined && model === undefined)\n return undefined;\n return {\n permissionMode,\n ...(permissionMode === \"bypassPermissions\" ? { allowDangerouslySkipPermissions: true } : {}),\n ...(model === undefined ? {} : { model }),\n };\n}\nfunction _codexDriverOptions(sandboxMode, approvalPolicy, yolo, model) {\n if (sandboxMode === undefined && approvalPolicy === undefined && yolo === undefined && model === undefined)\n return undefined;\n return {\n ...(sandboxMode === undefined ? {} : { sandboxMode }),\n ...(approvalPolicy === undefined ? {} : { approvalPolicy }),\n ...(yolo === undefined ? {} : { yolo }),\n ...(model === undefined ? {} : { model }),\n };\n}\nfunction _optionalModel(value) {\n if (value === undefined || value === null)\n return undefined;\n return _trimmed(value, \"spec.model\");\n}\nfunction _optionalChoice(value, allowed, label) {\n if (value === undefined || value === null)\n return undefined;\n if (typeof value !== \"string\" || !allowed.includes(value))\n throw new Error(`${label} must be one of ${allowed.join(\"|\")}`);\n return value;\n}\nfunction _optionalBoolean(value, label) {\n if (value === undefined || value === null)\n return undefined;\n if (typeof value === \"boolean\")\n return value;\n throw new Error(`${label} must be a boolean`);\n}\nfunction _env(value) {\n if (value === undefined || value === null)\n return {};\n const env = _asObject(value, \"spec.env\");\n const result = {};\n for (const [key, raw] of Object.entries(env)) {\n const name = key.trim();\n if (!/^[A-Za-z_][A-Za-z0-9_]*$/u.test(name))\n throw new Error(`spec.env has an invalid name: ${key}`);\n if (name.toUpperCase().startsWith(RESERVED_ENV_PREFIX)) {\n throw new Error(`spec.env may not set reserved ${RESERVED_ENV_PREFIX}* names: ${name}`);\n }\n if (RESERVED_RUNTIME_ENV_NAMES.has(name.toUpperCase())) {\n throw new Error(`spec.env may not set runtime-owned agent home: ${name}`);\n }\n if (_looksSecret(name))\n throw new Error(`spec.env may not carry a secret-like value: ${name}`);\n if (typeof raw !== \"string\")\n throw new Error(`spec.env.${name} must be a string`);\n result[name] = raw;\n }\n return result;\n}\nfunction _looksSecret(name) {\n const lowered = name.toLowerCase();\n return SECRET_ENV_MARKERS.some((marker) => lowered.includes(marker));\n}\nfunction _asObject(value, label) {\n if (!value || typeof value !== \"object\" || Array.isArray(value))\n throw new Error(`${label} must be an object`);\n return value;\n}\nfunction _trimmed(value, label) {\n if (typeof value !== \"string\")\n throw new Error(`${label} must be a string`);\n const trimmed = value.trim();\n if (!trimmed)\n throw new Error(`${label} must not be empty`);\n return trimmed;\n}\n//# sourceMappingURL=start-spec.js.map",
|
|
51
51
|
"import { spawn } from \"node:child_process\";\nimport { existsSync } from \"node:fs\";\nimport { mkdir, readdir, rename, stat } from \"node:fs/promises\";\nimport { homedir } from \"node:os\";\nimport path from \"node:path\";\nexport function defaultWorkspaceRoot(env = process.env) {\n const configured = env.SAILORBRIDGE_HOST_WORKSPACE_ROOT?.trim();\n if (configured)\n return configured;\n return path.join(homedir(), \".sailorbridge\", \"workspaces\");\n}\nexport async function prepareWorkspace(options) {\n const root = options.root?.trim() || defaultWorkspaceRoot();\n // Absolute so `git -C <base> worktree add <dir>` resolves the target against the\n // filesystem root, not against base's working directory.\n const dir = path.resolve(root, _safeSegment(options.captainId), _safeSegment(options.agentName));\n const spawnFn = options.spawnFn ?? spawn;\n if (options.workspace.mode === \"worktree\") {\n const base = path.resolve(options.workspace.root);\n await _assertGitBaseReady(base, spawnFn);\n await _ensureWorktree(dir, base, spawnFn, options.logger);\n return dir;\n }\n if (options.workspace.mode === \"fresh\") {\n return await _prepareFreshDir(dir, options.logger);\n }\n await _ensureClone(dir, options.workspace, spawnFn, options.logger);\n return _withSubdir(dir, options.workspace);\n}\n// Git is a hard prerequisite for a worktree workspace: the root must be a git repo\n// with at least one commit. Fail fast with an actionable message rather than\n// silently handing the agent an empty directory.\nasync function _assertGitBaseReady(base, spawnFn) {\n if (!existsSync(base)) {\n throw new Error(`workspace root does not exist: ${base} — point it at a local git repository (git init + at least one commit)`);\n }\n if (!(await _isGitRepo(base, spawnFn))) {\n throw new Error(`workspace root is not a git repository: ${base} — run \\`git init\\` and make at least one commit, then retry`);\n }\n if (!(await _gitSucceeds([\"-C\", base, \"rev-parse\", \"--verify\", \"HEAD\"], spawnFn))) {\n throw new Error(`workspace root has no commits: ${base} — make at least one commit before starting an agent`);\n }\n}\nexport async function cleanupAgentWorkspaceState(options) {\n const root = options.root?.trim() || defaultWorkspaceRoot();\n const base = path.join(root, _safeSegment(options.captainId), _safeSegment(options.agentName));\n const retiredRoot = path.join(root, \".retired\");\n await mkdir(retiredRoot, { recursive: true, mode: 0o700 });\n // Reuse is the norm — restart keeps the directory in place — so archiving runs\n // only here, on explicit retirement (the daemon calls this on a 404/410 retire).\n // A worktree left in the base repo's admin list after this rename is pruned\n // lazily by the next prepareWorkspace worktree add.\n const archive = await _archiveWorkspace(base, retiredRoot, options.captainId, options.agentName);\n if (!archive)\n return;\n options.logger?.(\"workspace_state_archived\", { agent: options.agentName, path: base, archive_path: archive });\n}\n// Reclaims member worktree dirs under `<root>/<captain>/` whose agent is no\n// longer a live member (team destroyed → agent rows deleted; host deleted →\n// archived). This is the host-pull cleanup the relay cannot push: a member\n// stopped before its team was destroyed leaves no live supervisor to observe a\n// 404/410, so only reconcile against relay authority reclaims it. Enumeration is\n// scoped to the product-owned root and worktree removal goes through\n// `git worktree remove`, which validates the dir is a registered worktree of its\n// base repo — a user's own directory is never touched.\nexport async function reclaimOrphanWorkspaces(options) {\n const root = options.root?.trim() || defaultWorkspaceRoot();\n const captainRoot = path.resolve(root, _safeSegment(options.captainId));\n if (!existsSync(captainRoot))\n return;\n // Compare on the dir key, not the raw name: a member dir is `_safeSegment(name)`,\n // and an agent name may legally carry a trailing `.`/`-` that the segment strips\n // — matching raw names would then miss a live member and reclaim its worktree.\n const live = _safeSegmentSet(options.liveAgents);\n const protectedAgents = _safeSegmentSet(options.protectedAgents ?? []);\n const spawnFn = options.spawnFn ?? spawn;\n const entries = await readdir(captainRoot, { withFileTypes: true });\n for (const entry of entries) {\n // Skip files and dotfiles (`.retired/` archive lives here) — only member dirs.\n if (!entry.isDirectory() || entry.name.startsWith(\".\"))\n continue;\n if (live.has(entry.name) || protectedAgents.has(entry.name))\n continue;\n await _reclaimOneWorkspace(path.join(captainRoot, entry.name), entry.name, spawnFn, options.logger);\n }\n}\n// Normalizes names to their on-disk dir key, dropping any that sanitize to\n// nothing (no member dir could exist for such a name, so it protects nothing).\nfunction _safeSegmentSet(names) {\n const segments = new Set();\n for (const name of names) {\n try {\n segments.add(_safeSegment(name));\n }\n catch {\n // Unsanitizable name — cannot correspond to any member directory.\n }\n }\n return segments;\n}\nasync function _reclaimOneWorkspace(dir, agentName, spawnFn, logger) {\n // Fail-closed: only a POSITIVELY-confirmed linked git worktree is reclaimable.\n // Anything we cannot confirm — a plain/clone dir, a forged or corrupt `.git`,\n // an unresolved base, or a `git worktree remove` that fails — is KEPT and\n // logged, never force-removed. There is deliberately no `rm -rf` fallback: a\n // reclaim must never delete a directory whose managed-worktree provenance is\n // in doubt.\n if (!(await _isFile(path.join(dir, \".git\")))) {\n logger?.(\"host_workspace_reclaim_skipped\", { agent: agentName, path: dir, reason: \"not-a-linked-worktree\" });\n return;\n }\n const base = await _worktreeBase(dir, spawnFn);\n if (!base) {\n logger?.(\"host_workspace_reclaim_skipped\", { agent: agentName, path: dir, reason: \"unresolved-worktree-base\" });\n return;\n }\n try {\n // `git worktree remove` refuses a dir that is not a registered worktree of\n // `base` (a forged `.git` never validates), which is the provenance gate; it\n // deletes the working tree, and --force covers uncommitted work (owner\n // default — a destroyed team's member has already merged/pushed). On any\n // failure we keep the dir; the isolation also stops one bad orphan from\n // aborting the rest of the sweep.\n await _runGit([\"-C\", base, \"worktree\", \"remove\", \"--force\", dir], spawnFn);\n await _runGit([\"-C\", base, \"worktree\", \"prune\"], spawnFn);\n logger?.(\"host_workspace_reclaimed\", { agent: agentName, path: dir, base });\n }\n catch (error) {\n logger?.(\"host_workspace_reclaim_failed\", { agent: agentName, path: dir, error: error instanceof Error ? error.message : String(error) });\n }\n}\n// Resolves the base repo of a linked worktree via git's own common-dir lookup —\n// which only succeeds for a real registered worktree, so a forged `.git` file\n// yields null. Null => metadata unconfirmable => caller keeps the dir (fail-closed).\nasync function _worktreeBase(dir, spawnFn) {\n const commonDir = await _gitCapture([\"-C\", dir, \"rev-parse\", \"--path-format=absolute\", \"--git-common-dir\"], spawnFn);\n if (!commonDir)\n return null;\n return path.basename(commonDir) === \".git\" ? path.dirname(commonDir) : commonDir;\n}\nasync function _isFile(target) {\n try {\n return (await stat(target)).isFile();\n }\n catch {\n return false;\n }\n}\nasync function _prepareFreshDir(dir, logger) {\n const reused = existsSync(dir);\n await mkdir(dir, { recursive: true, mode: 0o700 });\n logger?.(\"workspace_fresh\", { cwd: dir, reused });\n return dir;\n}\nasync function _ensureWorktree(dir, base, spawnFn, logger) {\n // Drop any stale admin entry a prior retirement's archive-rename left behind so\n // a re-add at the same path is not rejected as \"already registered\".\n await _runGit([\"-C\", base, \"worktree\", \"prune\"], spawnFn);\n if (existsSync(path.join(dir, \".git\"))) {\n logger?.(\"workspace_worktree_reused\", { cwd: dir, base });\n return;\n }\n await mkdir(path.dirname(dir), { recursive: true, mode: 0o700 });\n // --detach parks HEAD at the base tip without a branch, so the agent's own\n // `git checkout -b <task>` never collides with the base checkout's branch.\n await _runGit([\"-C\", base, \"worktree\", \"add\", \"--detach\", dir], spawnFn);\n logger?.(\"workspace_worktree_added\", { cwd: dir, base });\n}\nasync function _ensureClone(dir, workspace, spawnFn, logger) {\n if (existsSync(path.join(dir, \".git\"))) {\n logger?.(\"workspace_clone_reused\", { cwd: dir });\n return;\n }\n await mkdir(path.dirname(dir), { recursive: true, mode: 0o700 });\n await _cloneInto(dir, workspace, spawnFn, logger);\n}\nfunction _withSubdir(dir, workspace) {\n const subdir = workspace.mode === \"git\" ? workspace.subdir : undefined;\n return subdir ? path.join(dir, subdir) : dir;\n}\nasync function _archiveWorkspace(base, retiredRoot, captainId, agentName) {\n const prefix = `${_safeSegment(captainId)}-${_safeSegment(agentName)}-${Date.now()}`;\n for (let suffix = 0; suffix < 100; suffix += 1) {\n const archive = path.join(retiredRoot, suffix === 0 ? prefix : `${prefix}-${suffix}`);\n try {\n await rename(base, archive);\n return archive;\n }\n catch (error) {\n if (error.code === \"ENOENT\")\n return null;\n if (error.code !== \"EEXIST\")\n throw error;\n }\n }\n throw new Error(\"unable to reserve a retired workspace archive path\");\n}\nasync function _cloneInto(cwd, workspace, spawnFn, logger) {\n // argv form (no shell): the remote + ref were already validated by parseAgentStartSpec,\n // and `--` stops option injection from a remote that starts with a dash.\n const args = [\"clone\", \"--depth\", \"1\"];\n if (workspace.gitRef)\n args.push(\"--branch\", workspace.gitRef);\n args.push(\"--\", workspace.gitUrl, cwd);\n // Log a userinfo-stripped form so an (already-rejected, but defence-in-depth)\n // credential in the remote never reaches host logs.\n logger?.(\"workspace_clone_start\", { git_url: _redactGitUrl(workspace.gitUrl), git_ref: workspace.gitRef ?? null });\n await _runGit(args, spawnFn);\n logger?.(\"workspace_clone_done\", { cwd });\n}\nasync function _isGitRepo(dir, spawnFn) {\n if (!existsSync(dir))\n return false;\n return await _gitSucceeds([\"-C\", dir, \"rev-parse\", \"--git-dir\"], spawnFn);\n}\nfunction _gitSucceeds(args, spawnFn) {\n return new Promise((resolve) => {\n let child;\n try {\n child = spawnFn(\"git\", args, { stdio: [\"ignore\", \"ignore\", \"ignore\"] });\n }\n catch {\n resolve(false);\n return;\n }\n child.on(\"error\", () => resolve(false));\n child.on(\"close\", (code) => resolve(code === 0));\n });\n}\nfunction _runGit(args, spawnFn) {\n return new Promise((resolve, reject) => {\n const child = spawnFn(\"git\", args, { stdio: [\"ignore\", \"ignore\", \"pipe\"] });\n let stderr = \"\";\n child.stderr?.on(\"data\", (chunk) => {\n if (stderr.length < 2000)\n stderr += chunk.toString(\"utf8\");\n });\n child.on(\"error\", (error) => reject(new Error(`git ${args[0]} failed to spawn: ${error.message}`)));\n child.on(\"close\", (code) => {\n if (code === 0)\n return resolve();\n reject(new Error(`git ${args[0]} exited ${code ?? \"null\"}: ${stderr.trim().slice(0, 500)}`));\n });\n });\n}\n// Runs git and resolves its trimmed stdout, or null on any non-zero/spawn error\n// (callers treat that as \"metadata unavailable\", never as an empty success).\nfunction _gitCapture(args, spawnFn) {\n return new Promise((resolve) => {\n let child;\n try {\n child = spawnFn(\"git\", args, { stdio: [\"ignore\", \"pipe\", \"ignore\"] });\n }\n catch {\n resolve(null);\n return;\n }\n let stdout = \"\";\n child.stdout?.on(\"data\", (chunk) => {\n if (stdout.length < 4096)\n stdout += chunk.toString(\"utf8\");\n });\n child.on(\"error\", () => resolve(null));\n child.on(\"close\", (code) => resolve(code === 0 ? stdout.trim() || null : null));\n });\n}\nfunction _redactGitUrl(url) {\n if (url.startsWith(\"git@\"))\n return url; // scp-like, no secret userinfo\n try {\n const parsed = new URL(url);\n if (!parsed.username && !parsed.password)\n return url;\n parsed.username = \"\";\n parsed.password = \"\";\n return parsed.toString();\n }\n catch {\n return \"<redacted>\";\n }\n}\nfunction _safeSegment(value) {\n const segment = value.trim().replace(/[^A-Za-z0-9._-]+/gu, \"-\").replace(/^[.-]+|[.-]+$/gu, \"\");\n if (!segment)\n throw new Error(\"workspace path segment is empty after sanitizing\");\n return segment;\n}\n//# sourceMappingURL=workspace.js.map",
|
|
52
52
|
"import { access } from \"node:fs/promises\";\nimport { constants } from \"node:fs\";\nimport { execFile } from \"node:child_process\";\nimport { homedir } from \"node:os\";\nimport { delimiter, resolve } from \"node:path\";\nimport { promisify } from \"node:util\";\nimport { sanitizeGitOrigin } from \"./git-remote.js\";\nconst execFileAsync = promisify(execFile);\nexport function workspacePathsFromEnv(env) {\n const raw = env.SAILORBRIDGE_HOST_WORKSPACES?.trim();\n if (!raw)\n return [];\n return raw.split(delimiter).map((item) => item.trim()).filter(Boolean);\n}\nexport async function discoverWorkspaceInventory(paths, deps = {}) {\n const reports = [];\n for (const entry of paths) {\n reports.push(await discoverWorkspace(entry, deps));\n }\n return reports;\n}\nexport async function discoverWorkspaceInventoryBestEffort(paths, deps = {}) {\n const reports = [];\n for (const entry of paths) {\n try {\n reports.push(await discoverWorkspace(entry, deps));\n }\n catch (error) {\n deps.onError?.(entry, error);\n }\n }\n return reports;\n}\nexport async function probeWorkspace(entry, deps = {}) {\n const workspacePath = resolve(expandHome(entry));\n const git = deps.git ?? runGit;\n const inspected = await _inspectGitWorkspace(workspacePath, git);\n if (!inspected)\n return { path: workspacePath, kind: \"non-git\" };\n return {\n path: workspacePath,\n kind: \"git\",\n report: {\n path: workspacePath,\n gitOrigin: inspected.gitOrigin,\n currentBranch: inspected.currentBranch,\n readable: await canAccess(workspacePath, constants.R_OK, deps),\n writable: await canAccess(workspacePath, constants.W_OK, deps),\n },\n };\n}\nasync function discoverWorkspace(entry, deps) {\n const workspacePath = resolve(expandHome(entry));\n const git = deps.git ?? runGit;\n const inspected = await _inspectGitWorkspace(workspacePath, git);\n if (!inspected)\n throw new Error(`workspace ${workspacePath} is not a git repository`);\n return {\n path: workspacePath,\n gitOrigin: inspected.gitOrigin,\n currentBranch: inspected.currentBranch,\n readable: await canAccess(workspacePath, constants.R_OK, deps),\n writable: await canAccess(workspacePath, constants.W_OK, deps),\n };\n}\n// Detects a git checkout independently of its remote, then reads origin (may be\n// absent) and branch. Returns null when the path is not a git repository. Origin is\n// sanitized before it leaves the host — form is never a gate, secrets never leak.\nasync function _inspectGitWorkspace(workspacePath, git) {\n try {\n if ((await git(workspacePath, [\"rev-parse\", \"--is-inside-work-tree\"])).trim() !== \"true\")\n return null;\n }\n catch {\n return null;\n }\n let rawOrigin = \"\";\n try {\n rawOrigin = (await git(workspacePath, [\"config\", \"--get\", \"remote.origin.url\"])).trim();\n }\n catch {\n rawOrigin = \"\"; // a git repo with no configured remote is still reportable\n }\n const currentBranch = (await git(workspacePath, [\"branch\", \"--show-current\"])).trim() || null;\n return { gitOrigin: rawOrigin ? sanitizeGitOrigin(rawOrigin) : null, currentBranch };\n}\nfunction expandHome(entry) {\n if (entry === \"~\")\n return homedir();\n if (entry.startsWith(\"~/\"))\n return `${homedir()}${entry.slice(1)}`;\n return entry;\n}\nasync function runGit(cwd, args) {\n const { stdout } = await execFileAsync(\"git\", [\"-C\", cwd, ...args], { encoding: \"utf8\" });\n return String(stdout);\n}\nasync function canAccess(path, mode, deps) {\n try {\n await (deps.access ?? access)(path, mode);\n return true;\n }\n catch {\n return false;\n }\n}\n//# sourceMappingURL=workspace-inventory.js.map",
|
|
53
|
-
"import {
|
|
53
|
+
"import { spawn } from \"node:child_process\";\nimport { execFile as execFileCb } from \"node:child_process\";\nimport { readFile } from \"node:fs/promises\"; // intentional — reads npm-owned package metadata, never CLI text\nimport path from \"node:path\";\nimport { promisify } from \"node:util\";\nimport { restartRunningHostService, } from \"./host/service.js\";\nimport { CLIENT_VERSION } from \"./version.js\";\nconst execFileDefault = promisify(execFileCb);\nconst CLIENT_PACKAGE = \"@sailorbridge/client\";\nconst LATEST_PACKAGE = `${CLIENT_PACKAGE}@latest`;\nexport async function runUpgradeFromCli(argv, io, deps = {}) {\n if (argv.length)\n throw new Error(`upgrade takes no arguments: ${argv.join(\" \")}`);\n const before = deps.currentVersion ?? CLIENT_VERSION;\n await (deps.installLatest ?? installLatestClientPackage)();\n const after = await (deps.readInstalledVersion ?? readInstalledClientVersion)();\n if (before === after) {\n io.stdout.write(`SailorBridge client is already up to date (${after}).\\n`);\n return;\n }\n const service = await (deps.restartHostService ?? restartRunningHostService)();\n _writeUpgradeResult(io.stdout, before, after, service);\n}\n// Shared install channel for the manual `upgrade` command and the host daemon's\n// auto-update loop: same npm global install the client was distributed through.\nexport function installLatestClientPackage() {\n return new Promise((resolve, reject) => {\n const child = spawn(\"npm\", [\"i\", \"-g\", LATEST_PACKAGE], { stdio: \"inherit\" });\n child.once(\"error\", reject);\n child.once(\"close\", (code, signal) => {\n if (code === 0)\n resolve();\n else\n reject(new Error(`npm i -g ${LATEST_PACKAGE} failed (${signal ?? `exit ${code ?? \"unknown\"}`})`));\n });\n });\n}\nexport async function readInstalledClientVersion() {\n const { stdout } = await execFileDefault(\"npm\", [\"root\", \"-g\"]);\n const root = String(stdout).trim();\n if (!root)\n throw new Error(\"npm root -g returned an empty path after upgrade\");\n const packageJson = path.join(root, \"@sailorbridge\", \"client\", \"package.json\");\n const parsed = JSON.parse(await readFile(packageJson, \"utf8\")); // intentional — reads npm-owned package metadata, never CLI text\n const version = typeof parsed === \"object\" && parsed !== null ? Reflect.get(parsed, \"version\") : undefined;\n if (typeof version !== \"string\" || !version.trim()) {\n throw new Error(`${packageJson} has no valid version after upgrade`);\n }\n return version.trim();\n}\nfunction _writeUpgradeResult(output, before, after, service) {\n if (service.restarted) {\n output.write(`Updated SailorBridge client from ${before} to ${after} and restarted ${service.target} (${service.platform}).\\n`);\n return;\n }\n output.write(`Updated SailorBridge client from ${before} to ${after}. No running SailorBridge-managed host service was found; stop and rerun 'sailorbridge host run' to load ${after}.\\n`);\n}\n//# sourceMappingURL=upgrade.js.map",
|
|
54
|
+
"import { installLatestClientPackage, readInstalledClientVersion } from \"../upgrade.js\";\nimport { CLIENT_VERSION } from \"../version.js\";\nimport { restartRunningHostService } from \"./service.js\";\n// Industry-standard host auto-update loop (GitHub runner / Tailscale model):\n// the relay broadcasts the deploy-injected latest client version on every\n// register response; the daemon upgrades through its install channel (npm)\n// when idle, defers while sessions/jobs are active, and force-upgrades at the\n// next job gap once the hard deadline passes so no host straggles forever.\nexport const AUTO_UPDATE_HARD_DEADLINE_MS = 24 * 60 * 60 * 1000;\n// \"retry next heartbeat, never storm\": one attempt per cooldown window, not per\n// 5s poll cycle.\nexport const AUTO_UPDATE_ATTEMPT_COOLDOWN_MS = 60 * 1000;\nconst MAX_UPDATE_ERROR_LENGTH = 500;\nexport function createAutoUpdater(options) {\n const logger = options.logger ?? (() => { });\n const deps = options.deps ?? {};\n const now = deps.now ?? (() => Date.now());\n const currentVersion = deps.currentVersion ?? CLIENT_VERSION;\n const installLatest = deps.installLatest ?? installLatestClientPackage;\n const readInstalledVersion = deps.readInstalledVersion ?? readInstalledClientVersion;\n const restartHostService = deps.restartHostService ?? restartRunningHostService;\n let pendingSince;\n let lastAttemptAt;\n let updateError;\n // Set once npm has the target on disk but this process could not be restarted\n // (unmanaged foreground run): stop reinstalling; the new version loads on the\n // next manual restart.\n let installedVersion;\n const _attempt = async (reason, target) => {\n if (lastAttemptAt !== undefined && now() - lastAttemptAt < AUTO_UPDATE_ATTEMPT_COOLDOWN_MS)\n return;\n lastAttemptAt = now();\n logger(\"host_auto_update_start\", { reason, target, current: currentVersion });\n try {\n await installLatest();\n const after = await readInstalledVersion();\n updateError = undefined;\n installedVersion = after;\n if (after === currentVersion) {\n // npm's latest still equals the running version (registry lag behind the\n // relay broadcast): nothing new to load, so no restart.\n logger(\"host_auto_update_noop\", { reason, target, installed: after });\n return;\n }\n const report = await restartHostService();\n if (report.restarted) {\n // The restart tears down this very process; this log line races it.\n logger(\"host_auto_update_restarting\", { from: currentVersion, to: after, platform: report.platform, target: report.target });\n }\n else {\n logger(\"host_auto_update_installed_pending_restart\", { from: currentVersion, to: after, reason: report.reason });\n }\n }\n catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n updateError = message.length <= MAX_UPDATE_ERROR_LENGTH ? message : `${message.slice(0, MAX_UPDATE_ERROR_LENGTH - 3)}...`;\n logger(\"host_auto_update_error\", { reason, target, error: updateError });\n }\n };\n return {\n async onHostReport(host) {\n if (!options.enabled)\n return;\n const latest = host.latest_client_version;\n if (!latest || compareReleaseSemver(latest, currentVersion) !== 1) {\n pendingSince = undefined;\n return;\n }\n // An already-installed (but not yet loaded) version satisfies the broadcast:\n // don't reinstall in a loop while waiting for the manual restart. An\n // unparseable installed version must NOT block updates, so only a definite\n // >= comparison skips.\n const installedCmp = installedVersion === undefined ? null : compareReleaseSemver(installedVersion, latest);\n if (installedCmp === 0 || installedCmp === 1)\n return;\n if (pendingSince === undefined) {\n pendingSince = now();\n logger(\"host_auto_update_pending\", { latest, current: currentVersion });\n }\n const forced = now() - pendingSince >= AUTO_UPDATE_HARD_DEADLINE_MS;\n if (options.isActive() && !forced)\n return;\n if (options.isMidWork())\n return;\n await _attempt(forced ? \"deadline-forced\" : \"scheduled\", latest);\n },\n async onUpgradeRequired(detail) {\n if (!options.enabled) {\n logger(\"host_auto_update_disabled_upgrade_required\", { detail });\n return;\n }\n // A rejected host cannot claim work anyway, so activity no longer defers;\n // only an in-flight start/cleanup critical section does.\n if (options.isMidWork())\n return;\n await _attempt(\"relay-rejected\", null);\n },\n pendingUpdateError() {\n return updateError;\n },\n };\n}\n/** Strict release-SemVer compare: -1 / 0 / 1, or null when either side is not a release triple. */\nexport function compareReleaseSemver(a, b) {\n const left = _releaseTuple(a);\n const right = _releaseTuple(b);\n if (left === null || right === null)\n return null;\n for (let i = 0; i < 3; i += 1) {\n if (left[i] !== right[i])\n return left[i] < right[i] ? -1 : 1;\n }\n return 0;\n}\nfunction _releaseTuple(value) {\n const match = /^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)$/.exec(value);\n if (!match)\n return null;\n return [Number(match[1]), Number(match[2]), Number(match[3])];\n}\n//# sourceMappingURL=auto-update.js.map",
|
|
55
|
+
"import { chmod, mkdir, readFile, writeFile } from \"node:fs/promises\"; // intentional — reads the managed host-config store, not a user text parameter\nimport { homedir } from \"node:os\";\nimport path from \"node:path\";\nimport { workspacePathsFromEnv } from \"./workspace-inventory.js\";\nconst HOST_CONFIG_KIND = \"sailorbridge-host-config\";\nexport function defaultHostConfigPath() {\n return path.join(homedir(), \".sailorbridge\", \"host-config.json\");\n}\n/** Resolve `~`, then to an absolute path, so config entries dedupe and report stably. */\nexport function normalizeWorkspacePath(entry) {\n const trimmed = entry.trim();\n if (!trimmed)\n throw new Error(\"workspace path must not be empty\");\n const expanded = trimmed === \"~\" ? homedir() : trimmed.startsWith(\"~/\") ? `${homedir()}${trimmed.slice(1)}` : trimmed;\n return path.resolve(expanded);\n}\n// A missing config file is a legitimate \"no workspaces configured yet\" state (the\n// host paired but never recorded one), so it yields an empty config rather than a\n// hard failure. A present-but-malformed file DOES fail fast — a corrupted config\n// is a real fault, not a default.\nexport async function loadHostConfig(configPath = defaultHostConfigPath()) {\n let text;\n try {\n text = await readFile(configPath, \"utf8\"); // intentional — read the managed host-config store, not a user text parameter\n }\n catch (error) {\n if (error.code === \"ENOENT\")\n return { kind: HOST_CONFIG_KIND, workspaces: [] };\n throw error;\n }\n return _parseHostConfig(text, configPath);\n}\nexport async function saveHostConfig(configPath, config) {\n await mkdir(path.dirname(configPath), { recursive: true, mode: 0o700 });\n await chmod(path.dirname(configPath), 0o700);\n await writeFile(configPath, `${JSON.stringify(config, null, 2)}\\n`, { mode: 0o600 });\n await chmod(configPath, 0o600);\n}\n// Append a workspace (normalized + deduped) and persist. Returns the added path\n// plus whether it was already present, so callers can report \"recorded\" vs\n// \"already the default\" without re-reading.\nexport async function addHostWorkspace(configPath, workspacePath) {\n const normalized = normalizeWorkspacePath(workspacePath);\n const config = await loadHostConfig(configPath);\n if (config.workspaces.includes(normalized))\n return { config, path: normalized, added: false };\n const next = { ...config, workspaces: [...config.workspaces, normalized] };\n await saveHostConfig(configPath, next);\n return { config: next, path: normalized, added: true };\n}\n// The effective workspace paths the daemon reports: config entries first (the\n// primary source), then any SAILORBRIDGE_HOST_WORKSPACES env entries (compat),\n// deduped by normalized absolute path so an env + config overlap reports once.\nexport function hostWorkspacePaths(config, env) {\n const seen = new Set();\n const out = [];\n for (const entry of [...config.workspaces, ...workspacePathsFromEnv(env)]) {\n const normalized = normalizeWorkspacePath(entry);\n if (seen.has(normalized))\n continue;\n seen.add(normalized);\n out.push(normalized);\n }\n return out;\n}\n// Remove a workspace (matched by normalized path) and persist. Returns whether an\n// entry was actually removed, so callers can report \"removed\" vs \"not recorded\".\nexport async function removeHostWorkspace(configPath, workspacePath) {\n const normalized = normalizeWorkspacePath(workspacePath);\n const config = await loadHostConfig(configPath);\n if (!config.workspaces.includes(normalized))\n return { config, path: normalized, removed: false };\n const next = { ...config, workspaces: config.workspaces.filter((entry) => entry !== normalized) };\n await saveHostConfig(configPath, next);\n return { config: next, path: normalized, removed: true };\n}\nfunction _parseHostConfig(text, configPath) {\n let parsed;\n try {\n parsed = JSON.parse(text);\n }\n catch (error) {\n throw new Error(`host config at ${configPath} is not valid JSON: ${error instanceof Error ? error.message : String(error)}`);\n }\n if (!parsed || typeof parsed !== \"object\" || Array.isArray(parsed)) {\n throw new Error(`host config at ${configPath} must be an object`);\n }\n const record = parsed;\n if (record.kind !== HOST_CONFIG_KIND)\n throw new Error(`host config at ${configPath} is not a ${HOST_CONFIG_KIND}`);\n if (!Array.isArray(record.workspaces))\n throw new Error(`host config at ${configPath} workspaces must be an array`);\n const workspaces = record.workspaces.map((value, index) => {\n if (typeof value !== \"string\" || !value.trim())\n throw new Error(`host config workspaces[${index}] must be a non-empty string`);\n return value.trim();\n });\n if (record.auto_update !== undefined && typeof record.auto_update !== \"boolean\") {\n throw new Error(`host config at ${configPath} auto_update must be a boolean`);\n }\n return {\n kind: HOST_CONFIG_KIND,\n workspaces,\n ...(record.auto_update === undefined ? {} : { auto_update: record.auto_update }),\n };\n}\n//# sourceMappingURL=host-config.js.map",
|
|
54
56
|
"import { writeOutput } from \"../output-format.js\";\nimport { addHostWorkspace, defaultHostConfigPath, loadHostConfig, removeHostWorkspace } from \"./host-config.js\";\nimport { probeWorkspace } from \"./workspace-inventory.js\";\n// `host workspace` manages the persistent default-workspace list the daemon\n// reports (see host-config). It never touches the relay — it is local config —\n// so it is dispatched ahead of the relay host subcommands.\nexport async function runHostWorkspaceCommandFromCli(argv, io, deps = {}) {\n const configPath = deps.configPath ?? defaultHostConfigPath();\n const sub = argv[0] ?? \"list\";\n if (sub === \"list\") {\n const config = await loadHostConfig(configPath);\n writeOutput(io.stdout, { workspaces: config.workspaces }, io.format, () => config.workspaces.length ? config.workspaces.join(\"\\n\") : \"no workspaces recorded\");\n return;\n }\n if (sub === \"add\") {\n const target = argv[1];\n if (!target || target.startsWith(\"--\"))\n throw new Error(\"host workspace add requires a directory path\");\n const result = await recordHostWorkspace(target, configPath, deps);\n writeOutput(io.stdout, result, io.format, () => _renderAddPlain(result));\n return;\n }\n if (sub === \"remove\") {\n const target = argv[1];\n if (!target || target.startsWith(\"--\"))\n throw new Error(\"host workspace remove requires a directory path\");\n const result = await removeHostWorkspace(configPath, target);\n writeOutput(io.stdout, result, io.format, () => result.removed ? `removed workspace ${result.path}` : `workspace not recorded ${result.path}`);\n return;\n }\n throw new Error(`unknown host workspace command: ${sub}; expected add, list, remove`);\n}\n// Shared by the CLI and `login`: detects whether a directory is a git checkout the\n// same way the daemon's inventory does, records it, and annotates a non-git\n// directory (recorded, but it will not appear in reported workspaces until it is a\n// git checkout). Origin form is never a reason to refuse — the daemon reports the\n// origin sanitized (credentials redacted), the user owns their git setup.\nexport async function recordHostWorkspace(target, configPath, deps = {}) {\n const probe = await (deps.probe ?? probeWorkspace)(target, deps.probeDeps ?? {});\n const stored = await addHostWorkspace(configPath, probe.path);\n const git = probe.kind === \"git\";\n return {\n path: stored.path,\n added: stored.added,\n git,\n ...(git ? {} : { note: \"recorded as non-git; it will not appear in reported workspaces until it is a git checkout\" }),\n };\n}\nfunction _renderAddPlain(result) {\n const status = result.added ? \"recorded workspace\" : \"workspace already recorded\";\n return result.note ? `${status} ${result.path}\\n${result.note}` : `${status} ${result.path}`;\n}\n//# sourceMappingURL=host-workspace-cli.js.map",
|
|
55
57
|
"const RUNTIME_NATIVE_HOME_ENV = new Set([\"CLAUDE_CONFIG_DIR\", \"CODEX_HOME\"]);\nexport function buildAgentEnv(options) {\n const env = {};\n for (const [key, value] of Object.entries(options.hostEnv)) {\n if (value === undefined)\n continue;\n // Drivers launch the child as `{ ...process.env, ...startOptions.env }`, so it is\n // not enough to omit host SAILORBRIDGE_* here — an omitted key would survive from\n // process.env (e.g. SAILORBRIDGE_CREDENTIALS_FILE pointing at the host key file).\n // Overlay-clear every host SAILORBRIDGE_* to \"\" so the merge drops the host value;\n // the agent's own identity keys are then set to real values below.\n if (key.toUpperCase().startsWith(\"SAILORBRIDGE_\")) {\n env[key] = \"\";\n continue;\n }\n if (RUNTIME_NATIVE_HOME_ENV.has(key.toUpperCase())) {\n env[key] = \"\";\n continue;\n }\n env[key] = value;\n }\n // Caller-supplied spec env (already validated non-secret, non-reserved) before\n // identity so it can never shadow the SAILORBRIDGE_* credentials below.\n for (const [key, value] of Object.entries(options.specEnv ?? {})) {\n env[key] = value;\n }\n env.SAILORBRIDGE_RELAY_URL = options.descriptor.relay_url;\n env.SAILORBRIDGE_TOKEN = options.descriptor.token;\n env.SAILORBRIDGE_AGENT_NAME = options.descriptor.agent_name;\n env.SAILORBRIDGE_SESSION = options.descriptor.session;\n if (options.descriptor.captain_id !== undefined) {\n env.SAILORBRIDGE_CAPTAIN_ID = options.descriptor.captain_id;\n }\n return env;\n}\n//# sourceMappingURL=agent-env.js.map",
|
|
56
58
|
"import path from \"node:path\";\nimport { buildAgentEnv } from \"./agent-env.js\";\nimport { agentRuntimeConfigHome, materializeAgentRuntimeDefaults } from \"./agent-defaults.js\";\nimport { engineAuthSourcePath, provisionEngineAuth } from \"./engine-auth.js\";\nimport { materializeAgentMemoryStub } from \"./memory-stub.js\";\nexport async function materializeAgentRuntimeEnv(options) {\n const env = buildAgentEnv({\n hostEnv: options.hostEnv,\n descriptor: options.descriptor,\n specEnv: options.specEnv,\n });\n const homeDir = agentRuntimeConfigHome(options.agentName, options.engine, options.hostEnv);\n const memoryStub = await materializeAgentMemoryStub({\n agentName: options.agentName,\n engine: options.engine,\n teamMemoryEntitled: options.teamMemoryEntitled,\n env: options.hostEnv,\n homeDir,\n });\n // workspaceDir is intentionally omitted here: the workspace is prepared AFTER\n // env materialization (launcher.ts prepareWorkspace / cli.ts supervise), so the\n // real cwd is not known yet. Trust is therefore applied by the caller's\n // workspace-aware second call (_trustPreparedWorkspace / _trustSuperviseWorkspace)\n // once cwd exists. Non-workspace defaults — terse output, hooks, and the context\n // statusLine — need no cwd and are established here on every launch.\n // sourceHomeDir = the host's engine config dir. codex mirrors model settings from\n // its config.toml; claude mirrors the host settings.json `env` block (auth +\n // runtime env) into the sandbox settings.json so env-based auth actually reaches\n // the sandboxed engine. Both need the host dir, so it is supplied unconditionally.\n await materializeAgentRuntimeDefaults({\n agentName: options.agentName,\n engine: memoryStub.engine,\n homeDir: memoryStub.homeDir,\n sourceHomeDir: path.dirname(engineAuthSourcePath(memoryStub.engine, options.hostEnv)),\n });\n const credentialGuard = await provisionEngineAuth({\n engine: memoryStub.engine,\n homeDir: memoryStub.homeDir,\n hostEnv: options.hostEnv,\n });\n Object.assign(env, memoryStub.env);\n _ensureRootSandboxEscape(env, memoryStub.engine, options.processUid === undefined ? _currentUid() : options.processUid);\n return { env, credentialGuard };\n}\n// claude exits immediately when --dangerously-skip-permissions is used as root\n// (\"cannot be used with root/sudo privileges\") unless IS_SANDBOX=1 marks the\n// environment as sandboxed — the documented container escape hatch. Host daemons\n// on single-tenant VMs run as root, so without this every claude member dies at\n// launch and the recovery cue then fails with a misleading tmux delivery error.\nfunction _ensureRootSandboxEscape(env, engine, uid) {\n if (engine !== \"claude\" || uid !== 0)\n return;\n if (env.IS_SANDBOX !== undefined && env.IS_SANDBOX !== \"\")\n return; // intentional — an explicit host/spec value wins\n env.IS_SANDBOX = \"1\";\n}\nfunction _currentUid() {\n return typeof process.getuid === \"function\" ? process.getuid() : null;\n}\n//# sourceMappingURL=runtime-env.js.map",
|
|
@@ -69,7 +71,7 @@
|
|
|
69
71
|
"export class AsyncByteQueue {\n maxSize;\n values = [];\n readers = [];\n waiters = [];\n error = null;\n constructor(maxSize = 8) {\n this.maxSize = maxSize;\n }\n async push(value) {\n this.throwIfFailed();\n while (this.values.length >= this.maxSize) {\n await new Promise((resolve) => this.waiters.push(resolve));\n this.throwIfFailed();\n }\n this.deliver(value);\n }\n close() {\n this.deliver(null);\n }\n fail(error) {\n this.error = error;\n while (this.readers.length)\n this.readers.shift()?.reject(error);\n while (this.waiters.length)\n this.waiters.shift()?.();\n }\n async *[Symbol.asyncIterator]() {\n while (true) {\n this.throwIfFailed();\n const next = await this.next();\n if (next.done)\n return;\n yield next.value;\n }\n }\n async next() {\n const value = this.values.shift();\n this.waiters.shift()?.();\n if (value === null)\n return { done: true, value: undefined };\n if (value !== undefined)\n return { done: false, value };\n return new Promise((resolve, reject) => this.readers.push({ resolve, reject }));\n }\n deliver(value) {\n const reader = this.readers.shift();\n if (reader) {\n reader.resolve(value === null ? { done: true, value: undefined } : { done: false, value });\n return;\n }\n this.values.push(value);\n }\n throwIfFailed() {\n if (this.error)\n throw this.error;\n }\n}\n//# sourceMappingURL=async-queue.js.map",
|
|
70
72
|
"import { request as httpRequest } from \"node:http\";\nimport { request as httpsRequest } from \"node:https\";\nimport { URLSearchParams } from \"node:url\";\nimport { CLIENT_VERSION_LABEL } from \"../version.js\";\nimport { WorkerHttpError, WorkerNetworkError, raiseForLeaseFencingOrStatus } from \"./errors.js\";\nimport { WORKER_PULL_READ_IDLE_MS, WORKER_QUICK_READ_IDLE_MS, WORKER_SOCK_CONNECT_MS, WORKER_UPLOAD_READ_IDLE_MS } from \"./protocol.js\";\nexport const PULL_TIMEOUTS = {\n connectTimeoutMs: WORKER_SOCK_CONNECT_MS,\n readIdleTimeoutMs: WORKER_PULL_READ_IDLE_MS,\n};\nexport const QUICK_TIMEOUTS = {\n connectTimeoutMs: WORKER_SOCK_CONNECT_MS,\n readIdleTimeoutMs: WORKER_QUICK_READ_IDLE_MS,\n};\nexport const UPLOAD_TIMEOUTS = {\n connectTimeoutMs: WORKER_SOCK_CONNECT_MS,\n readIdleTimeoutMs: WORKER_UPLOAD_READ_IDLE_MS,\n};\nexport class WorkerHttpClient {\n token;\n signal;\n relayUrl;\n constructor(relayUrl, token, signal) {\n this.token = token;\n this.signal = signal;\n if (!relayUrl.trim())\n throw new Error(\"relayUrl is required\");\n if (!token.trim())\n throw new Error(\"token is required\");\n this.relayUrl = relayUrl.replace(/\\/+$/u, \"\");\n }\n async getJson(path, query, timeouts, options = {}) {\n const suffix = new URLSearchParams(query).toString();\n return this.requestJson(\"GET\", suffix ? `${path}?${suffix}` : path, undefined, timeouts, options);\n }\n async postJson(path, value, timeouts) {\n return this.requestJson(\"POST\", path, { type: \"json\", value }, timeouts, {});\n }\n async postBytes(path, body, headers, timeouts) {\n const response = await this.request(\"POST\", path, { type: \"bytes\", value: body }, timeouts, headers);\n raiseForLeaseFencingOrStatus(\"POST\", path, response.status, response.text);\n }\n async requestJson(method, path, body, timeouts, options) {\n const response = await this.request(method, path, body, timeouts, {});\n const errorPath = pathOnly(path);\n if (options.leaseFencing === false && response.status >= 300)\n throw new WorkerHttpError(method, errorPath, response.status, response.text);\n raiseForLeaseFencingOrStatus(method, errorPath, response.status, response.text);\n return parseJson(method, errorPath, response.text);\n }\n async request(method, path, body, timeouts, extraHeaders) {\n const url = new URL(`${this.relayUrl}${path}`);\n const headers = this.headers(body, extraHeaders);\n return sendRequest(method, url, body, headers, timeouts, this.signal);\n }\n headers(body, extraHeaders) {\n return {\n Accept: \"application/json\",\n Authorization: `Bearer ${this.token}`,\n \"User-Agent\": `sailorbridge-client/${CLIENT_VERSION_LABEL}`,\n ...(body?.type === \"json\" ? { \"Content-Type\": \"application/json\" } : {}),\n ...(body?.type === \"bytes\" && body.contentType ? { \"Content-Type\": body.contentType } : {}),\n ...extraHeaders,\n };\n }\n}\nasync function sendRequest(method, url, body, headers, timeouts, signal) {\n const transport = url.protocol === \"https:\" ? httpsRequest : httpRequest;\n return new Promise((resolve, reject) => {\n let settled = false;\n let responseStarted = false;\n let total;\n const settleReject = (error) => {\n if (settled)\n return;\n settled = true;\n if (total)\n clearTimeout(total);\n signal?.removeEventListener(\"abort\", onAbort);\n reject(new WorkerNetworkError(method, url.pathname, error.message));\n };\n const settleResolve = (status, text) => {\n if (settled)\n return;\n settled = true;\n if (total)\n clearTimeout(total);\n signal?.removeEventListener(\"abort\", onAbort);\n resolve({ status, text });\n };\n const onAbort = () => { req.destroy(new Error(\"request aborted\")); settleReject(new Error(\"request aborted\")); };\n const req = transport(url, { method, headers, agent: false }, (res) => {\n responseStarted = true;\n const chunks = [];\n res.on(\"data\", (chunk) => chunks.push(chunk));\n res.once(\"error\", settleReject);\n res.once(\"aborted\", () => settleReject(new Error(\"response aborted\")));\n res.on(\"end\", () => {\n req.destroy();\n settleResolve(res.statusCode ?? 0, Buffer.concat(chunks).toString(\"utf8\"));\n });\n });\n total = timeouts.totalTimeoutMs === undefined ? undefined : setTimeout(() => req.destroy(new Error(\"request total timeout\")), timeouts.totalTimeoutMs);\n req.setTimeout(timeouts.readIdleTimeoutMs, () => req.destroy(new Error(\"request read idle timeout\")));\n req.on(\"socket\", (socket) => socket.setTimeout(timeouts.connectTimeoutMs));\n req.on(\"error\", settleReject);\n req.on(\"close\", () => {\n if (settled)\n return;\n if (!responseStarted) {\n settleReject(new Error(\"request closed before response\"));\n return;\n }\n setImmediate(() => {\n if (!settled)\n settleReject(new Error(\"response closed before end\"));\n });\n });\n if (signal?.aborted) {\n // Settle explicitly: destroying a request that never opened a socket does\n // not reliably emit \"error\"/\"close\", so relying on those handlers would\n // leave this promise pending forever (hangs the worker's post-abort loop).\n req.destroy(new Error(\"request aborted\"));\n settleReject(new Error(\"request aborted\"));\n return;\n }\n signal?.addEventListener(\"abort\", onAbort, { once: true });\n void writeBody(req, body).catch((error) => {\n settleReject(error);\n req.destroy(error);\n });\n });\n}\nasync function writeBody(req, body) {\n if (body === undefined) {\n req.end();\n return;\n }\n if (body.type === \"json\") {\n req.end(JSON.stringify(body.value));\n return;\n }\n if (Buffer.isBuffer(body.value)) {\n req.end(body.value);\n return;\n }\n for await (const chunk of body.value) {\n if (req.destroyed)\n throw new Error(\"request closed while writing body\");\n if (!req.write(chunk))\n await waitForRequestDrain(req);\n }\n req.end();\n}\nfunction waitForRequestDrain(req) {\n return new Promise((resolve, reject) => {\n const cleanup = () => {\n req.off(\"drain\", onDrain);\n req.off(\"error\", onError);\n req.off(\"close\", onClose);\n };\n const onDrain = () => {\n cleanup();\n resolve();\n };\n const onError = (error) => {\n cleanup();\n reject(error);\n };\n const onClose = () => {\n cleanup();\n reject(new Error(\"request closed while waiting for drain\"));\n };\n req.once(\"drain\", onDrain);\n req.once(\"error\", onError);\n req.once(\"close\", onClose);\n });\n}\nfunction parseJson(method, path, text) {\n try {\n const parsed = JSON.parse(text);\n if (!parsed || typeof parsed !== \"object\" || Array.isArray(parsed)) {\n throw new Error(\"response JSON must be an object\");\n }\n return parsed;\n }\n catch (error) {\n if (error instanceof SyntaxError)\n throw new WorkerNetworkError(method, path, \"response JSON is invalid\");\n throw error;\n }\n}\nfunction pathOnly(path) {\n return path.split(\"?\", 1)[0] || path;\n}\n//# sourceMappingURL=http.js.map",
|
|
71
73
|
"import { UPLOAD_TIMEOUTS } from \"./http.js\";\nexport async function uploadStream(session, jobId, stream, leaseToken, chunks, workerId) {\n if (!leaseToken.trim())\n throw new Error(\"lease_token is required\");\n const query = new URLSearchParams({ stream });\n if (workerId)\n query.set(\"worker_id\", workerId);\n await session.http.postBytes(`/api/v1/jobs/${encodeURIComponent(jobId)}/stream-upload?${query.toString()}`, chunks, { \"X-Lease-Token\": leaseToken }, UPLOAD_TIMEOUTS);\n}\n//# sourceMappingURL=stream-upload.js.map",
|
|
72
|
-
"import { RelayHttpError } from \"../relay/index.js\";\nimport { RelayClient as AgentRelayClient } from \"../relay/index.js\";\nimport { launchSupervisedAgent } from \"./launcher.js\";\nimport { createManagedMaterializationState, materializeManagedFiles, } from \"./managed-materialization.js\";\nimport { scratchSweepEnabled, sweepWorkspaceScratch } from \"./scratch-sweeper.js\";\nimport { createRepoTipReporter } from \"./repo-tip-reporter.js\";\nimport { runHostRequestOnce } from \"./request-consumer.js\";\nimport { parseAgentStartSpec } from \"./start-spec.js\";\nimport { parseWorkerStartSpec } from \"./worker-start-spec.js\";\nimport { launchSupervisedWorker } from \"./worker-launcher.js\";\nimport { cleanupAgentWorkspaceState, reclaimOrphanWorkspaces } from \"./workspace.js\";\nimport { discoverWorkspaceInventoryBestEffort, workspacePathsFromEnv } from \"./workspace-inventory.js\";\nimport { defaultHostConfigPath, hostWorkspacePaths, loadHostConfig } from \"./host-config.js\";\n// Long-running host worker: drains queued agent-start-requests, clones+starts+\n// supervises a real engine per request, and tracks each runtime so a shutdown\n// stops them all. markStarted/markFailed are handled inside runHostRequestOnce.\nexport async function runHostDaemon(options) {\n const logger = options.logger ?? (() => { });\n const sleep = options.sleep ?? ((ms) => new Promise((resolve) => setTimeout(resolve, ms)));\n const pollIntervalMs = options.pollIntervalMs ?? 5000;\n const runtimes = new Map();\n const workerRuntimes = new Map();\n const cleanupLocks = new Map();\n const startLocks = new Map();\n const managedTargets = new Map();\n const launch = options.launch ?? launchSupervisedAgent;\n const launchWorker = options.launchWorker ?? launchSupervisedWorker;\n const cleanup = options.cleanupAgentWorkspaceState ?? cleanupAgentWorkspaceState;\n const reclaim = options.reclaimOrphanWorkspaces ?? reclaimOrphanWorkspaces;\n const identity = { captainId: options.captainId, hostId: options.hostId, displayName: options.displayName };\n const redactSecrets = [...(options.redactSecrets ?? [])];\n const materializeManaged = options.materializeManagedFiles ?? materializeManagedFiles;\n const now = options.now ?? (() => Date.now());\n // Fallback cadence only: SYNC pushes are the primary managed-file update path.\n const managedSyncIntervalMs = options.managedSyncIntervalMs ?? 6 * 60 * 60 * 1000;\n let lastManagedSyncAt = now();\n const scratchSweep = options.sweepWorkspaceScratch ?? sweepWorkspaceScratch;\n const scratchSweepIntervalMs = options.scratchSweepIntervalMs ?? 6 * 60 * 60 * 1000;\n let lastScratchSweepAt = now();\n const reportRepoTips = options.reportRepoTips ?? createRepoTipReporter();\n // Tip observation feeds merge-ready validation and merge-close observation;\n // keep the cycle well under the relay's report max-age (default 300s).\n const repoTipReportIntervalMs = options.repoTipReportIntervalMs ?? 60 * 1000;\n // First cycle runs on the first loop iteration, not an interval later.\n let lastRepoTipReportAt = now() - repoTipReportIntervalMs;\n // Reclaim orphan member worktrees left by destroyed teams. Poll-driven because\n // the relay never connects to the host; runs early so existing residue clears\n // on daemon start, then on a steady interval.\n const reconcileIntervalMs = options.reconcileIntervalMs ?? 5 * 60 * 1000;\n let lastReconcileAt = now() - reconcileIntervalMs;\n const _startWorker = async (request, recoveredDescriptor) => {\n const spec = parseWorkerStartSpec(request.spec);\n const descriptor = recoveredDescriptor ?? await options.resolveCredential(request);\n redactSecrets.push(descriptor.token);\n // A worker_start must redeem a worker-scoped enrollment; refusing any other\n // role stops a member/captain credential from being registered as a worker.\n if (descriptor.role !== \"worker\" && !descriptor.roles?.includes(\"worker\")) {\n throw new Error(`worker_start requires a worker enrollment, got role=${descriptor.role || \"(none)\"}`);\n }\n // Trim once and use the same key everywhere: launchWorker registers under the\n // trimmed name, so an untrimmed map key would let \"w1\" and \"w1 \" dodge the\n // dedup guard yet register as one worker.\n const worker = descriptor.agent_name?.trim();\n if (!worker)\n throw new Error(\"worker enrollment descriptor is missing agent_name (worker name)\");\n if (workerRuntimes.has(worker))\n throw new Error(`worker ${worker} is already running on this host`);\n // If the loop exits during the launch await (e.g. it registered then the\n // session dropped), onExit fires while `handle` is still undefined and cannot\n // remove itself. `exited` lets us skip inserting an already-dead runtime,\n // which would otherwise wedge the worker name as permanently \"already running\".\n let exited = false;\n let exitError;\n let handle;\n handle = await launchWorker({\n descriptor,\n spec,\n ...(options.hostEnv ? { hostEnv: options.hostEnv } : {}),\n logger,\n onExit: (error) => {\n exited = true;\n exitError = error;\n if (handle && workerRuntimes.get(worker) === handle)\n workerRuntimes.delete(worker);\n if (error)\n logger(\"host_worker_exited\", { worker, error: errorMessage(error) });\n },\n }, options.launchWorkerDeps);\n if (exited) {\n throw exitError instanceof Error ? exitError : new Error(`worker ${worker} exited before it was tracked`);\n }\n workerRuntimes.set(worker, handle);\n return { worker_name: worker, workdir: spec.workdir, max_concurrency: spec.maxConcurrency, tags: spec.tags };\n };\n const startAgent = async (request, descriptor, recoveryTmuxSession) => {\n redactSecrets.push(descriptor.token);\n await waitForAgentCleanup(cleanupLocks, request.agent_name);\n const spec = parseAgentStartSpec(request.spec);\n const agentRelay = agentRelayClient(descriptor, options);\n const managedTarget = managedMaterializationTarget(descriptor, spec.engine, options, agentRelay);\n await runManagedMaterialization(materializeManaged, managedTarget, \"pre-start\", logger, true);\n await waitForAgentCleanup(cleanupLocks, request.agent_name);\n let runtime = null;\n let currentStart = null;\n const onRetired = async (event) => {\n logger(\"host_agent_retired\", { agent_name: event.agentName, reason: event.reason, status: event.status });\n if (event.status !== 404 && event.status !== 410) {\n logger(\"host_agent_retirement_unconfirmed\", { agent_name: event.agentName, status: event.status });\n return;\n }\n await waitForAgentStart(startLocks, request.agent_name, currentStart);\n if (!isCurrentRuntime(runtimes, request.agent_name, runtime)) {\n logger(\"host_agent_retired_stale\", { agent_name: event.agentName });\n return;\n }\n const cleanupTask = Promise.resolve().then(async () => {\n await runManagedMaterialization(materializeManaged, managedTarget, \"runtime\", logger, false);\n runtimes.delete(request.agent_name);\n managedTargets.delete(request.agent_name);\n try {\n await cleanup({\n captainId: options.captainId,\n agentName: request.agent_name,\n ...(options.workspaceRoot ? { root: options.workspaceRoot } : {}),\n logger,\n });\n }\n catch (error) {\n logger(\"host_agent_state_cleanup_failed\", {\n agent_name: request.agent_name,\n error: error instanceof Error ? error.message : String(error),\n });\n }\n });\n cleanupLocks.set(request.agent_name, cleanupTask);\n try {\n await cleanupTask;\n }\n finally {\n if (cleanupLocks.get(request.agent_name) === cleanupTask) {\n cleanupLocks.delete(request.agent_name);\n }\n }\n };\n let finishStart;\n currentStart = new Promise((resolve) => {\n finishStart = resolve;\n });\n startLocks.set(request.agent_name, currentStart);\n let previous;\n try {\n runtime = await launch({\n descriptor,\n spec: request.spec,\n captainId: options.captainId,\n ...(options.hostEnv ? { hostEnv: options.hostEnv } : {}),\n ...(options.workspaceRoot ? { workspaceRoot: options.workspaceRoot } : {}),\n logger,\n onRetired,\n ...(recoveryTmuxSession ? { recoveryTmuxSession } : {}),\n }, options.launchDeps);\n previous = runtimes.get(request.agent_name);\n runtimes.set(request.agent_name, runtime);\n managedTargets.set(request.agent_name, managedTarget);\n }\n finally {\n finishStart();\n if (startLocks.get(request.agent_name) === currentStart) {\n startLocks.delete(request.agent_name);\n }\n }\n if (previous)\n await previous.stop().catch(() => { }); // a re-start supersedes the prior runtime\n };\n const starter = async (request) => {\n if (request.request_kind === \"worker_start\")\n return _startWorker(request);\n await startAgent(request, await options.resolveCredential(request));\n };\n const _recoverRuntime = async (recovery) => {\n if (recovery.request.request_kind === \"worker_start\") {\n await _startWorker(recovery.request, recovery.descriptor);\n logger(\"host_worker_runtime_recovered\", { worker_name: recovery.request.agent_name });\n return;\n }\n await startAgent(recovery.request, recovery.descriptor, recovery.tmuxSession);\n logger(\"host_agent_runtime_recovered\", { agent_name: recovery.request.agent_name });\n };\n const _recoverDurableRuntimes = async () => {\n if (!options.recoverRuntimes)\n return;\n const recoveries = await options.recoverRuntimes();\n const workers = recoveries.filter(({ request }) => request.request_kind === \"worker_start\").length;\n for (const recovery of recoveries) {\n if (options.signal?.aborted)\n return;\n try {\n await _recoverRuntime(recovery);\n }\n catch (error) {\n const kind = recovery.request.request_kind === \"worker_start\" ? \"worker\" : \"agent\";\n logger(`host_${kind}_runtime_recovery_failed`, {\n [`${kind}_name`]: recovery.request.agent_name,\n error: errorMessage(error),\n });\n }\n }\n logger(\"host_runtime_recovery_completed\", { agents: recoveries.length - workers, workers });\n };\n logger(\"host_daemon_start\", { host_id: options.hostId, captain_id: options.captainId });\n try {\n await _recoverDurableRuntimes();\n while (!options.signal?.aborted) {\n const drained = await _drainOnce(options, identity, starter, logger, redactSecrets);\n if (drained === \"retired\") {\n logger(\"host_daemon_retired\", { host_id: options.hostId, status: 401 });\n break;\n }\n if (now() - lastReconcileAt >= reconcileIntervalMs) {\n lastReconcileAt = now();\n // Fetch the reclaim authority on demand, only when a cycle is due (not on\n // the hot drain path). If the fetch fails — transient error, or a 404\n // from an older relay without the endpoint — the live set is UNKNOWN and\n // reconcile is skipped, so a live worktree is never removed on missing\n // data. An empty array is authoritative and reclaims all orphans.\n try {\n const liveAgents = await options.relay.listHostActiveAgents(options.captainId, options.hostId);\n // Protect any member the daemon is mid-managing even if a stale live\n // set omits it: runtimes = currently supervised; cleanupLocks = a\n // just-retired member whose runtime is already removed but whose\n // workspace archive is still in flight (onRetired runs concurrently\n // with this loop — the real race). startLocks is included defensively;\n // a start is set+cleared within the awaited drain, so it is empty by\n // the time this reconcile runs under the sequential loop.\n await reclaim({\n captainId: options.captainId,\n liveAgents,\n protectedAgents: [...runtimes.keys(), ...startLocks.keys(), ...cleanupLocks.keys()],\n ...(options.workspaceRoot ? { root: options.workspaceRoot } : {}),\n logger,\n });\n }\n catch (error) {\n // Isolated: an authority fetch / reconcile failure must not kill the loop.\n logger(\"host_workspace_reconcile_failed\", { error: errorMessage(error) });\n }\n }\n if (now() - lastManagedSyncAt >= managedSyncIntervalMs) {\n lastManagedSyncAt = now();\n await syncRuntimeManagedMaterialization(materializeManaged, managedTargets, logger);\n }\n if (now() - lastScratchSweepAt >= scratchSweepIntervalMs) {\n lastScratchSweepAt = now();\n await sweepWorkspaceScratchRoots(scratchSweep, options.hostEnv ?? process.env, logger);\n }\n if (now() - lastRepoTipReportAt >= repoTipReportIntervalMs) {\n lastRepoTipReportAt = now();\n try {\n await reportRepoTips({\n relay: options.relay,\n captainId: options.captainId,\n ...(options.repoMirrorRoot ? { mirrorRoot: options.repoMirrorRoot } : {}),\n logger,\n });\n }\n catch (error) {\n // Isolated: a relay/report failure must not kill the daemon loop.\n logger(\"host_repo_tip_cycle_failed\", { error: errorMessage(error) });\n }\n }\n if (options.signal?.aborted)\n break;\n if (!drained)\n await sleep(pollIntervalMs);\n }\n }\n finally {\n logger(\"host_daemon_stopping\", { agents: runtimes.size, workers: workerRuntimes.size });\n try {\n await syncRuntimeManagedMaterialization(materializeManaged, managedTargets, logger);\n }\n finally {\n await Promise.allSettled([\n ...[...runtimes.values()].map((runtime) => runtime.stop()),\n ...[...workerRuntimes.values()].map((runtime) => runtime.stop()),\n ]);\n }\n }\n}\nfunction managedMaterializationTarget(descriptor, engine, options, relay) {\n return {\n agentName: descriptor.agent_name,\n engine,\n captainId: descriptor.captain_id,\n teamId: descriptor.session,\n env: options.hostEnv ?? process.env,\n relay,\n state: createManagedMaterializationState(),\n };\n}\nfunction agentRelayClient(descriptor, options) {\n return new AgentRelayClient({\n relayUrl: descriptor.relay_url,\n bearerToken: descriptor.token,\n ...(options.launchDeps?.fetchImpl ? { fetchImpl: options.launchDeps.fetchImpl } : {}),\n });\n}\n// Reap `<root>/.agent/tmp/` for each declared managed workspace. Per-workspace failures are\n// isolated + logged so one bad root never kills the daemon loop.\nasync function sweepWorkspaceScratchRoots(scratchSweep, env, logger) {\n if (!scratchSweepEnabled(env))\n return;\n for (const workspaceRoot of workspacePathsFromEnv(env)) {\n try {\n await scratchSweep({ workspaceRoot, logger });\n }\n catch (error) {\n logger(\"host_scratch_sweep_failed\", { workspace: workspaceRoot, error: errorMessage(error) });\n }\n }\n}\nasync function syncRuntimeManagedMaterialization(materialize, targets, logger) {\n for (const target of targets.values()) {\n await runManagedMaterialization(materialize, target, \"runtime\", logger, false);\n }\n}\nasync function runManagedMaterialization(materialize, target, mode, logger, failFast) {\n try {\n await materialize({ ...target, logger });\n }\n catch (error) {\n if (isManagedMaterializationFetch404(error)) {\n // intentional — old relays may not have this endpoint during a non-atomic deploy.\n logger(\"host_managed_materialization_unavailable\", { agent_name: target.agentName, mode, error: errorMessage(error) });\n return;\n }\n logger(\"host_managed_materialization_failed\", { agent_name: target.agentName, mode, error: errorMessage(error) });\n if (failFast)\n throw error;\n }\n}\nfunction isManagedMaterializationFetch404(error) {\n return error instanceof RelayHttpError\n && error.status === 404\n && error.method === \"GET\"\n && error.path.includes(\"/managed-materialization?\")\n && isRouteMissing404Body(error.body);\n}\nfunction isRouteMissing404Body(body) {\n const normalized = body.trim().toLowerCase();\n return normalized === \"404: not found\";\n}\nasync function waitForAgentCleanup(cleanupLocks, agentName) {\n const cleanup = cleanupLocks.get(agentName);\n if (cleanup)\n await cleanup;\n}\nasync function waitForAgentStart(startLocks, agentName, ownStart) {\n const start = startLocks.get(agentName);\n if (start && start !== ownStart)\n await start;\n}\nfunction isCurrentRuntime(runtimes, agentName, runtime) {\n return Boolean(runtime) && runtimes.get(agentName) === runtime;\n}\nfunction errorMessage(error) {\n return error instanceof Error ? error.message : String(error);\n}\n// A corrupt host config should not wedge every agent start on this host, so it is\n// logged and treated as empty (env-var compat still applies) rather than thrown —\n// the user fixes the file; the daemon keeps draining. // intentional — degrade a\n// bad config to empty instead of halting the poll loop.\nasync function _loadHostConfigBestEffort(options, logger) {\n try {\n return await loadHostConfig(options.hostConfigPath ?? defaultHostConfigPath());\n }\n catch (error) {\n logger(\"host_config_load_error\", { error: error instanceof Error ? error.message : String(error) });\n return { kind: \"sailorbridge-host-config\", workspaces: [] };\n }\n}\n// One claim attempt. Returns true while requests were available (keep draining),\n// false once the queue is empty (sleep before polling again), \"retired\" on a 401.\nasync function _drainOnce(options, identity, starter, logger, redactSecrets) {\n try {\n const hostConfig = await _loadHostConfigBestEffort(options, logger);\n const workspaceInventory = await discoverWorkspaceInventoryBestEffort(hostWorkspacePaths(hostConfig, options.hostEnv ?? process.env), {\n onError: (entry, error) => logger(\"host_workspace_inventory_error\", {\n path: entry,\n error: error instanceof Error ? error.message : String(error),\n }),\n });\n const result = await runHostRequestOnce({\n relay: options.relay,\n ...identity,\n starter,\n redactSecrets,\n ...(workspaceInventory.length ? { workspaceInventory } : {}),\n onWorkspaceInventoryError: (error) => logger(\"host_workspace_inventory_error\", {\n error: error instanceof Error ? error.message : String(error),\n }),\n ...(options.signal ? { signal: options.signal } : {}),\n });\n if (result.status === \"idle\")\n return false;\n logger(`host_request_${result.status}`, {\n request_id: result.request.id,\n agent_name: result.request.agent_name,\n ...(result.status === \"failed\" ? { error: result.error } : {}),\n });\n return true;\n }\n catch (error) {\n if (error instanceof RelayHttpError && error.status === 401)\n return \"retired\";\n // claim/register failure (e.g. transient relay error) — log and back off via sleep.\n logger(\"host_daemon_poll_error\", { error: error instanceof Error ? error.message : String(error) });\n return false;\n }\n}\n//# sourceMappingURL=daemon.js.map",
|
|
74
|
+
"import { RelayHttpError } from \"../relay/index.js\";\nimport { RelayClient as AgentRelayClient } from \"../relay/index.js\";\nimport { launchSupervisedAgent } from \"./launcher.js\";\nimport { createManagedMaterializationState, materializeManagedFiles, } from \"./managed-materialization.js\";\nimport { scratchSweepEnabled, sweepWorkspaceScratch } from \"./scratch-sweeper.js\";\nimport { createRepoTipReporter } from \"./repo-tip-reporter.js\";\nimport { createAutoUpdater } from \"./auto-update.js\";\nimport { runHostRequestOnce } from \"./request-consumer.js\";\nimport { parseAgentStartSpec } from \"./start-spec.js\";\nimport { parseWorkerStartSpec } from \"./worker-start-spec.js\";\nimport { launchSupervisedWorker } from \"./worker-launcher.js\";\nimport { cleanupAgentWorkspaceState, reclaimOrphanWorkspaces } from \"./workspace.js\";\nimport { discoverWorkspaceInventoryBestEffort, workspacePathsFromEnv } from \"./workspace-inventory.js\";\nimport { defaultHostConfigPath, hostWorkspacePaths, loadHostConfig } from \"./host-config.js\";\n// Long-running host worker: drains queued agent-start-requests, clones+starts+\n// supervises a real engine per request, and tracks each runtime so a shutdown\n// stops them all. markStarted/markFailed are handled inside runHostRequestOnce.\nexport async function runHostDaemon(options) {\n const logger = options.logger ?? (() => { });\n const sleep = options.sleep ?? ((ms) => new Promise((resolve) => setTimeout(resolve, ms)));\n const pollIntervalMs = options.pollIntervalMs ?? 5000;\n const runtimes = new Map();\n const workerRuntimes = new Map();\n const cleanupLocks = new Map();\n const startLocks = new Map();\n const managedTargets = new Map();\n const launch = options.launch ?? launchSupervisedAgent;\n const launchWorker = options.launchWorker ?? launchSupervisedWorker;\n const cleanup = options.cleanupAgentWorkspaceState ?? cleanupAgentWorkspaceState;\n const reclaim = options.reclaimOrphanWorkspaces ?? reclaimOrphanWorkspaces;\n const identity = { captainId: options.captainId, hostId: options.hostId, displayName: options.displayName };\n const redactSecrets = [...(options.redactSecrets ?? [])];\n const materializeManaged = options.materializeManagedFiles ?? materializeManagedFiles;\n const now = options.now ?? (() => Date.now());\n // Fallback cadence only: SYNC pushes are the primary managed-file update path.\n const managedSyncIntervalMs = options.managedSyncIntervalMs ?? 6 * 60 * 60 * 1000;\n let lastManagedSyncAt = now();\n const scratchSweep = options.sweepWorkspaceScratch ?? sweepWorkspaceScratch;\n const scratchSweepIntervalMs = options.scratchSweepIntervalMs ?? 6 * 60 * 60 * 1000;\n let lastScratchSweepAt = now();\n const reportRepoTips = options.reportRepoTips ?? createRepoTipReporter();\n // Tip observation feeds merge-ready validation and merge-close observation;\n // keep the cycle well under the relay's report max-age (default 300s).\n const repoTipReportIntervalMs = options.repoTipReportIntervalMs ?? 60 * 1000;\n // First cycle runs on the first loop iteration, not an interval later.\n let lastRepoTipReportAt = now() - repoTipReportIntervalMs;\n // Reclaim orphan member worktrees left by destroyed teams. Poll-driven because\n // the relay never connects to the host; runs early so existing residue clears\n // on daemon start, then on a steady interval.\n const reconcileIntervalMs = options.reconcileIntervalMs ?? 5 * 60 * 1000;\n let lastReconcileAt = now() - reconcileIntervalMs;\n const autoUpdater = createAutoUpdater({\n enabled: options.autoUpdate !== false,\n isActive: () => runtimes.size > 0 || workerRuntimes.size > 0 || startLocks.size > 0 || cleanupLocks.size > 0,\n isMidWork: () => startLocks.size > 0 || cleanupLocks.size > 0,\n logger,\n deps: { now, ...options.autoUpdateDeps },\n });\n const _startWorker = async (request, recoveredDescriptor) => {\n const spec = parseWorkerStartSpec(request.spec);\n const descriptor = recoveredDescriptor ?? await options.resolveCredential(request);\n redactSecrets.push(descriptor.token);\n // A worker_start must redeem a worker-scoped enrollment; refusing any other\n // role stops a member/captain credential from being registered as a worker.\n if (descriptor.role !== \"worker\" && !descriptor.roles?.includes(\"worker\")) {\n throw new Error(`worker_start requires a worker enrollment, got role=${descriptor.role || \"(none)\"}`);\n }\n // Trim once and use the same key everywhere: launchWorker registers under the\n // trimmed name, so an untrimmed map key would let \"w1\" and \"w1 \" dodge the\n // dedup guard yet register as one worker.\n const worker = descriptor.agent_name?.trim();\n if (!worker)\n throw new Error(\"worker enrollment descriptor is missing agent_name (worker name)\");\n if (workerRuntimes.has(worker))\n throw new Error(`worker ${worker} is already running on this host`);\n // If the loop exits during the launch await (e.g. it registered then the\n // session dropped), onExit fires while `handle` is still undefined and cannot\n // remove itself. `exited` lets us skip inserting an already-dead runtime,\n // which would otherwise wedge the worker name as permanently \"already running\".\n let exited = false;\n let exitError;\n let handle;\n handle = await launchWorker({\n descriptor,\n spec,\n ...(options.hostEnv ? { hostEnv: options.hostEnv } : {}),\n logger,\n onExit: (error) => {\n exited = true;\n exitError = error;\n if (handle && workerRuntimes.get(worker) === handle)\n workerRuntimes.delete(worker);\n if (error)\n logger(\"host_worker_exited\", { worker, error: errorMessage(error) });\n },\n }, options.launchWorkerDeps);\n if (exited) {\n throw exitError instanceof Error ? exitError : new Error(`worker ${worker} exited before it was tracked`);\n }\n workerRuntimes.set(worker, handle);\n return { worker_name: worker, workdir: spec.workdir, max_concurrency: spec.maxConcurrency, tags: spec.tags };\n };\n const startAgent = async (request, descriptor, recoveryTmuxSession) => {\n redactSecrets.push(descriptor.token);\n await waitForAgentCleanup(cleanupLocks, request.agent_name);\n const spec = parseAgentStartSpec(request.spec);\n const agentRelay = agentRelayClient(descriptor, options);\n const managedTarget = managedMaterializationTarget(descriptor, spec.engine, options, agentRelay);\n await runManagedMaterialization(materializeManaged, managedTarget, \"pre-start\", logger, true);\n await waitForAgentCleanup(cleanupLocks, request.agent_name);\n let runtime = null;\n let currentStart = null;\n const onRetired = async (event) => {\n logger(\"host_agent_retired\", { agent_name: event.agentName, reason: event.reason, status: event.status });\n if (event.status !== 404 && event.status !== 410) {\n logger(\"host_agent_retirement_unconfirmed\", { agent_name: event.agentName, status: event.status });\n return;\n }\n await waitForAgentStart(startLocks, request.agent_name, currentStart);\n if (!isCurrentRuntime(runtimes, request.agent_name, runtime)) {\n logger(\"host_agent_retired_stale\", { agent_name: event.agentName });\n return;\n }\n const cleanupTask = Promise.resolve().then(async () => {\n await runManagedMaterialization(materializeManaged, managedTarget, \"runtime\", logger, false);\n runtimes.delete(request.agent_name);\n managedTargets.delete(request.agent_name);\n try {\n await cleanup({\n captainId: options.captainId,\n agentName: request.agent_name,\n ...(options.workspaceRoot ? { root: options.workspaceRoot } : {}),\n logger,\n });\n }\n catch (error) {\n logger(\"host_agent_state_cleanup_failed\", {\n agent_name: request.agent_name,\n error: error instanceof Error ? error.message : String(error),\n });\n }\n });\n cleanupLocks.set(request.agent_name, cleanupTask);\n try {\n await cleanupTask;\n }\n finally {\n if (cleanupLocks.get(request.agent_name) === cleanupTask) {\n cleanupLocks.delete(request.agent_name);\n }\n }\n };\n let finishStart;\n currentStart = new Promise((resolve) => {\n finishStart = resolve;\n });\n startLocks.set(request.agent_name, currentStart);\n let previous;\n try {\n runtime = await launch({\n descriptor,\n spec: request.spec,\n captainId: options.captainId,\n ...(options.hostEnv ? { hostEnv: options.hostEnv } : {}),\n ...(options.workspaceRoot ? { workspaceRoot: options.workspaceRoot } : {}),\n logger,\n onRetired,\n ...(recoveryTmuxSession ? { recoveryTmuxSession } : {}),\n }, options.launchDeps);\n previous = runtimes.get(request.agent_name);\n runtimes.set(request.agent_name, runtime);\n managedTargets.set(request.agent_name, managedTarget);\n }\n finally {\n finishStart();\n if (startLocks.get(request.agent_name) === currentStart) {\n startLocks.delete(request.agent_name);\n }\n }\n if (previous)\n await previous.stop().catch(() => { }); // a re-start supersedes the prior runtime\n };\n const starter = async (request) => {\n if (request.request_kind === \"worker_start\")\n return _startWorker(request);\n await startAgent(request, await options.resolveCredential(request));\n };\n const _recoverRuntime = async (recovery) => {\n if (recovery.request.request_kind === \"worker_start\") {\n await _startWorker(recovery.request, recovery.descriptor);\n logger(\"host_worker_runtime_recovered\", { worker_name: recovery.request.agent_name });\n return;\n }\n await startAgent(recovery.request, recovery.descriptor, recovery.tmuxSession);\n logger(\"host_agent_runtime_recovered\", { agent_name: recovery.request.agent_name });\n };\n const _recoverDurableRuntimes = async () => {\n if (!options.recoverRuntimes)\n return;\n const recoveries = await options.recoverRuntimes();\n const workers = recoveries.filter(({ request }) => request.request_kind === \"worker_start\").length;\n for (const recovery of recoveries) {\n if (options.signal?.aborted)\n return;\n try {\n await _recoverRuntime(recovery);\n }\n catch (error) {\n const kind = recovery.request.request_kind === \"worker_start\" ? \"worker\" : \"agent\";\n logger(`host_${kind}_runtime_recovery_failed`, {\n [`${kind}_name`]: recovery.request.agent_name,\n error: errorMessage(error),\n });\n }\n }\n logger(\"host_runtime_recovery_completed\", { agents: recoveries.length - workers, workers });\n };\n logger(\"host_daemon_start\", { host_id: options.hostId, captain_id: options.captainId });\n try {\n await _recoverDurableRuntimes();\n while (!options.signal?.aborted) {\n const drained = await _drainOnce(options, identity, starter, logger, redactSecrets, autoUpdater);\n if (drained === \"retired\") {\n logger(\"host_daemon_retired\", { host_id: options.hostId, status: 401 });\n break;\n }\n if (now() - lastReconcileAt >= reconcileIntervalMs) {\n lastReconcileAt = now();\n // Fetch the reclaim authority on demand, only when a cycle is due (not on\n // the hot drain path). If the fetch fails — transient error, or a 404\n // from an older relay without the endpoint — the live set is UNKNOWN and\n // reconcile is skipped, so a live worktree is never removed on missing\n // data. An empty array is authoritative and reclaims all orphans.\n try {\n const liveAgents = await options.relay.listHostActiveAgents(options.captainId, options.hostId);\n // Protect any member the daemon is mid-managing even if a stale live\n // set omits it: runtimes = currently supervised; cleanupLocks = a\n // just-retired member whose runtime is already removed but whose\n // workspace archive is still in flight (onRetired runs concurrently\n // with this loop — the real race). startLocks is included defensively;\n // a start is set+cleared within the awaited drain, so it is empty by\n // the time this reconcile runs under the sequential loop.\n await reclaim({\n captainId: options.captainId,\n liveAgents,\n protectedAgents: [...runtimes.keys(), ...startLocks.keys(), ...cleanupLocks.keys()],\n ...(options.workspaceRoot ? { root: options.workspaceRoot } : {}),\n logger,\n });\n }\n catch (error) {\n // Isolated: an authority fetch / reconcile failure must not kill the loop.\n logger(\"host_workspace_reconcile_failed\", { error: errorMessage(error) });\n }\n }\n if (now() - lastManagedSyncAt >= managedSyncIntervalMs) {\n lastManagedSyncAt = now();\n await syncRuntimeManagedMaterialization(materializeManaged, managedTargets, logger);\n }\n if (now() - lastScratchSweepAt >= scratchSweepIntervalMs) {\n lastScratchSweepAt = now();\n await sweepWorkspaceScratchRoots(scratchSweep, options.hostEnv ?? process.env, logger);\n }\n if (now() - lastRepoTipReportAt >= repoTipReportIntervalMs) {\n lastRepoTipReportAt = now();\n try {\n await reportRepoTips({\n relay: options.relay,\n captainId: options.captainId,\n ...(options.repoMirrorRoot ? { mirrorRoot: options.repoMirrorRoot } : {}),\n logger,\n });\n }\n catch (error) {\n // Isolated: a relay/report failure must not kill the daemon loop.\n logger(\"host_repo_tip_cycle_failed\", { error: errorMessage(error) });\n }\n }\n if (options.signal?.aborted)\n break;\n if (!drained)\n await sleep(pollIntervalMs);\n }\n }\n finally {\n logger(\"host_daemon_stopping\", { agents: runtimes.size, workers: workerRuntimes.size });\n try {\n await syncRuntimeManagedMaterialization(materializeManaged, managedTargets, logger);\n }\n finally {\n await Promise.allSettled([\n ...[...runtimes.values()].map((runtime) => runtime.stop()),\n ...[...workerRuntimes.values()].map((runtime) => runtime.stop()),\n ]);\n }\n }\n}\nfunction managedMaterializationTarget(descriptor, engine, options, relay) {\n return {\n agentName: descriptor.agent_name,\n engine,\n captainId: descriptor.captain_id,\n teamId: descriptor.session,\n env: options.hostEnv ?? process.env,\n relay,\n state: createManagedMaterializationState(),\n };\n}\nfunction agentRelayClient(descriptor, options) {\n return new AgentRelayClient({\n relayUrl: descriptor.relay_url,\n bearerToken: descriptor.token,\n ...(options.launchDeps?.fetchImpl ? { fetchImpl: options.launchDeps.fetchImpl } : {}),\n });\n}\n// Reap `<root>/.agent/tmp/` for each declared managed workspace. Per-workspace failures are\n// isolated + logged so one bad root never kills the daemon loop.\nasync function sweepWorkspaceScratchRoots(scratchSweep, env, logger) {\n if (!scratchSweepEnabled(env))\n return;\n for (const workspaceRoot of workspacePathsFromEnv(env)) {\n try {\n await scratchSweep({ workspaceRoot, logger });\n }\n catch (error) {\n logger(\"host_scratch_sweep_failed\", { workspace: workspaceRoot, error: errorMessage(error) });\n }\n }\n}\nasync function syncRuntimeManagedMaterialization(materialize, targets, logger) {\n for (const target of targets.values()) {\n await runManagedMaterialization(materialize, target, \"runtime\", logger, false);\n }\n}\nasync function runManagedMaterialization(materialize, target, mode, logger, failFast) {\n try {\n await materialize({ ...target, logger });\n }\n catch (error) {\n if (isManagedMaterializationFetch404(error)) {\n // intentional — old relays may not have this endpoint during a non-atomic deploy.\n logger(\"host_managed_materialization_unavailable\", { agent_name: target.agentName, mode, error: errorMessage(error) });\n return;\n }\n logger(\"host_managed_materialization_failed\", { agent_name: target.agentName, mode, error: errorMessage(error) });\n if (failFast)\n throw error;\n }\n}\nfunction isManagedMaterializationFetch404(error) {\n return error instanceof RelayHttpError\n && error.status === 404\n && error.method === \"GET\"\n && error.path.includes(\"/managed-materialization?\")\n && isRouteMissing404Body(error.body);\n}\nfunction isRouteMissing404Body(body) {\n const normalized = body.trim().toLowerCase();\n return normalized === \"404: not found\";\n}\nasync function waitForAgentCleanup(cleanupLocks, agentName) {\n const cleanup = cleanupLocks.get(agentName);\n if (cleanup)\n await cleanup;\n}\nasync function waitForAgentStart(startLocks, agentName, ownStart) {\n const start = startLocks.get(agentName);\n if (start && start !== ownStart)\n await start;\n}\nfunction isCurrentRuntime(runtimes, agentName, runtime) {\n return Boolean(runtime) && runtimes.get(agentName) === runtime;\n}\nfunction errorMessage(error) {\n return error instanceof Error ? error.message : String(error);\n}\n// A corrupt host config should not wedge every agent start on this host, so it is\n// logged and treated as empty (env-var compat still applies) rather than thrown —\n// the user fixes the file; the daemon keeps draining. // intentional — degrade a\n// bad config to empty instead of halting the poll loop.\nasync function _loadHostConfigBestEffort(options, logger) {\n try {\n return await loadHostConfig(options.hostConfigPath ?? defaultHostConfigPath());\n }\n catch (error) {\n logger(\"host_config_load_error\", { error: error instanceof Error ? error.message : String(error) });\n return { kind: \"sailorbridge-host-config\", workspaces: [] };\n }\n}\n// One claim attempt. Returns true while requests were available (keep draining),\n// false once the queue is empty (sleep before polling again), \"retired\" on a 401.\nasync function _drainOnce(options, identity, starter, logger, redactSecrets, autoUpdater) {\n try {\n const hostConfig = await _loadHostConfigBestEffort(options, logger);\n const workspaceInventory = await discoverWorkspaceInventoryBestEffort(hostWorkspacePaths(hostConfig, options.hostEnv ?? process.env), {\n onError: (entry, error) => logger(\"host_workspace_inventory_error\", {\n path: entry,\n error: error instanceof Error ? error.message : String(error),\n }),\n });\n const updateError = autoUpdater.pendingUpdateError();\n const result = await runHostRequestOnce({\n relay: options.relay,\n ...identity,\n starter,\n redactSecrets,\n ...(workspaceInventory.length ? { workspaceInventory } : {}),\n ...(updateError === undefined ? {} : { updateError }),\n onWorkspaceInventoryError: (error) => logger(\"host_workspace_inventory_error\", {\n error: error instanceof Error ? error.message : String(error),\n }),\n ...(options.signal ? { signal: options.signal } : {}),\n });\n // After the drain, not before: an update attempt (drain + restart) must never\n // preempt a request that was already claimed this cycle.\n await autoUpdater.onHostReport(result.host);\n if (result.status === \"idle\")\n return false;\n logger(`host_request_${result.status}`, {\n request_id: result.request.id,\n agent_name: result.request.agent_name,\n ...(result.status === \"failed\" ? { error: result.error } : {}),\n });\n return true;\n }\n catch (error) {\n if (error instanceof RelayHttpError && error.status === 401)\n return \"retired\";\n if (error instanceof RelayHttpError && error.status === 426) {\n // Compatibility-window rejection: the relay refuses this client version's\n // handshake. Keep polling (the loop self-converges once upgraded) and let\n // the auto-updater upgrade through the install channel.\n logger(\"host_daemon_upgrade_required\", { error: error.message });\n await autoUpdater.onUpgradeRequired(error.body);\n return false;\n }\n // claim/register failure (e.g. transient relay error) — log and back off via sleep.\n logger(\"host_daemon_poll_error\", { error: error instanceof Error ? error.message : String(error) });\n return false;\n }\n}\n//# sourceMappingURL=daemon.js.map",
|
|
73
75
|
"import { DEFAULT_PRODUCT_API_URL } from \"../auth/index.js\";\nconst DEFAULT_NOT_FOUND_RETRIES = 3;\nconst NOT_FOUND_RETRY_DELAY_MS = 500;\nexport function createEnrollmentRedeemer(options) {\n const apiUrl = options.apiUrl.trim().replace(/\\/+$/u, \"\");\n if (!apiUrl) {\n throw new Error(`product API URL is empty; unset --api-url/SAILORBRIDGE_API_URL to use SailorBridge at ${DEFAULT_PRODUCT_API_URL}.`);\n }\n if (!options.hostToken.trim())\n throw new Error(\"host token is required to redeem enrollments\");\n const fetchImpl = options.fetchImpl ?? fetch;\n const retries = options.notFoundRetries ?? DEFAULT_NOT_FOUND_RETRIES;\n const sleep = options.sleep ?? ((ms) => new Promise((resolve) => setTimeout(resolve, ms)));\n return async (request) => {\n for (let attempt = 0;; attempt += 1) {\n const response = await fetchImpl(`${apiUrl}/api/console/agent-start-requests/${encodeURIComponent(request.id)}/enrollment`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\", Authorization: `Bearer ${options.hostToken}` },\n body: JSON.stringify({}),\n });\n const text = await response.text();\n if (response.ok)\n return _descriptor(text ? JSON.parse(text) : {});\n if (response.status === 404 && attempt < retries) {\n await sleep(NOT_FOUND_RETRY_DELAY_MS);\n continue;\n }\n throw new Error(`enrollment redeem failed with status ${response.status}: ${text.slice(0, 300)}`);\n }\n };\n}\nexport function createRuntimeRecoverer(options) {\n const apiUrl = options.apiUrl.trim().replace(/\\/+$/u, \"\");\n if (!apiUrl)\n throw new Error(\"product API URL is required for runtime recovery\");\n if (!options.hostToken.trim())\n throw new Error(\"host token is required for runtime recovery\");\n const fetchImpl = options.fetchImpl ?? fetch;\n return async () => {\n const response = await fetchImpl(`${apiUrl}/api/console/client-hosts/runtime-recoveries`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\", Authorization: `Bearer ${options.hostToken}` },\n body: JSON.stringify({}),\n });\n const text = await response.text();\n if (!response.ok)\n throw new Error(`runtime recovery failed with status ${response.status}: ${text.slice(0, 300)}`);\n return _runtimeRecoveries(text ? JSON.parse(text) : {});\n };\n}\nfunction _runtimeRecoveries(payload) {\n const root = _object(payload, \"runtime recovery response\");\n if (!Array.isArray(root.recoveries))\n throw new Error(\"runtime recovery response recoveries must be an array\");\n return root.recoveries.map((raw) => {\n const row = _object(raw, \"runtime recovery\");\n const request = _runtimeRequest(row.request);\n const tmuxSession = row.tmux_session_name;\n if (request.request_kind === \"agent_start\" && (typeof tmuxSession !== \"string\" || !tmuxSession.trim())) {\n throw new Error(\"agent runtime recovery tmux_session_name must be a non-empty string\");\n }\n if (request.request_kind === \"worker_start\" && tmuxSession !== null) {\n throw new Error(\"worker runtime recovery tmux_session_name must be null\");\n }\n return { request, descriptor: _descriptor({ enrollment: row.enrollment }), ...(typeof tmuxSession === \"string\" ? { tmuxSession } : {}) };\n });\n}\nfunction _runtimeRequest(value) {\n const row = _object(value, \"runtime recovery request\");\n const status = _string(row.status, \"request.status\");\n if (status !== \"started\")\n throw new Error(\"runtime recovery request.status must be started\");\n const requestKind = _string(row.request_kind, \"request.request_kind\");\n if (requestKind !== \"agent_start\" && requestKind !== \"worker_start\") {\n throw new Error(\"runtime recovery request.request_kind must be agent_start or worker_start\");\n }\n const spec = _object(row.spec, \"runtime recovery request.spec\");\n return {\n id: _string(row.id, \"request.id\"), session: _string(row.session, \"request.session\"),\n host_id: _string(row.host_id, \"request.host_id\"), agent_name: _string(row.agent_name, \"request.agent_name\"),\n spec, status, created_at: typeof row.created_at === \"string\" ? row.created_at : \"\",\n request_kind: requestKind,\n };\n}\nfunction _descriptor(payload) {\n const root = _object(payload, \"enrollment redeem response\");\n const enrollment = _object(root.enrollment ?? root, \"enrollment\");\n const relayUrl = _string(enrollment.relay_url, \"relay_url\");\n const token = _opaqueCredential(enrollment.token, \"token\");\n const agentName = _string(enrollment.agent_name, \"agent_name\");\n const session = _string(enrollment.session, \"session\");\n const role = _role(enrollment);\n const descriptor = {\n key_id: typeof enrollment.key_id === \"string\" ? enrollment.key_id : \"\",\n relay_url: relayUrl,\n token,\n agent_name: agentName,\n session,\n role,\n roles: [role],\n host: typeof enrollment.host === \"string\" ? enrollment.host : \"\",\n created_at: typeof enrollment.created_at === \"string\" ? enrollment.created_at : new Date().toISOString(),\n };\n if (enrollment.captain_id !== undefined && enrollment.captain_id !== null) {\n descriptor.captain_id = String(enrollment.captain_id);\n }\n return descriptor;\n}\nfunction _object(value, label) {\n if (!value || typeof value !== \"object\")\n throw new Error(`${label} must be an object`);\n return value;\n}\nfunction _string(value, label) {\n if (typeof value !== \"string\" || !value.trim())\n throw new Error(`enrollment ${label} must be a non-empty string`);\n return value;\n}\nfunction _opaqueCredential(value, label) {\n const credential = _string(value, label).trim();\n if (!/^[A-Za-z0-9._~+/=-]+$/u.test(credential)) {\n throw new Error(`enrollment ${label} must be an opaque credential`);\n }\n return credential;\n}\nfunction _role(enrollment) {\n if (typeof enrollment.role === \"string\" && enrollment.role.trim())\n return enrollment.role.trim();\n if (!Array.isArray(enrollment.roles) || enrollment.roles.length !== 1) {\n throw new Error(\"enrollment role must be present or roles must contain exactly one role\");\n }\n return _string(enrollment.roles[0], \"roles[0]\").trim();\n}\n//# sourceMappingURL=enrollment-redeem.js.map",
|
|
74
76
|
"import { DEFAULT_PRODUCT_API_URL, defaultHostCredentialsPath, loadHostCredential } from \"../auth/index.js\";\nimport { writeOutput } from \"../output-format.js\";\nexport function buildTutorialSteps(state) {\n const paired = state.hasCredential;\n return [\n {\n id: \"config\",\n title: \"Configure the product API URL\",\n status: \"done\",\n detail: state.apiUrl\n ? `SAILORBRIDGE_API_URL=${state.apiUrl}`\n : `Using the SailorBridge product API (${DEFAULT_PRODUCT_API_URL}).`,\n },\n {\n id: \"pair\",\n title: \"Pair this host\",\n status: paired ? \"done\" : \"todo\",\n detail: paired\n ? `Paired as host '${state.hostId}' (captain ${state.captainId}); credential at ${state.credentialsPath}.`\n : \"Run 'sailorbridge login', then approve the printed code in the console (Hosts → Approve). Login also installs and starts the host service.\",\n },\n {\n id: \"create-request\",\n title: \"Create an agent start request\",\n status: \"info\",\n detail: paired\n ? `In the web console pick this host and an engine, OR run 'sailorbridge host start-request --team <team> --host-id ${state.hostId} --agent <name> --engine codex --roles operator --workspace-mode fresh'. Both use the same product API.`\n : \"Available once paired: choose this host + engine in the console, or run 'sailorbridge host start-request'.\",\n },\n {\n id: \"run\",\n title: \"Run the host worker\",\n status: \"info\", // login installs the service that runs this, so it is never a user to-do\n detail: paired\n ? \"'sailorbridge login' installs the service that runs 'sailorbridge host run'; check it with 'sailorbridge host service status'. If login exited 3, the host is offline until you run 'sailorbridge host service install'.\"\n : \"After login, the installed host service runs 'sailorbridge host run' and picks up start requests for this host.\",\n },\n {\n id: \"verify\",\n title: \"Watch the agent come online\",\n status: \"info\",\n detail: \"The new agent appears in the team roster and chat once its engine starts; the request transitions queued → started.\",\n },\n ];\n}\nexport async function runTutorial(options) {\n const credentialsPath = options.credentialsPath ?? defaultHostCredentialsPath();\n const load = options.loadCredential ?? loadHostCredential;\n let state = {\n credentialsPath,\n hasCredential: false,\n apiUrl: options.apiUrl ?? DEFAULT_PRODUCT_API_URL,\n };\n try {\n const credential = await load(credentialsPath);\n state = {\n credentialsPath,\n hasCredential: true,\n apiUrl: options.apiUrl ?? credential.api_url,\n captainId: String(credential.captain_id),\n hostId: credential.host_id,\n };\n }\n catch {\n // not paired yet — the steps render the pairing instructions. Not an error.\n }\n const steps = buildTutorialSteps(state);\n if (options.format === \"json\") {\n writeOutput(options.stdout, { steps }, \"json\");\n return steps;\n }\n options.stdout.write(\"SailorBridge host onboarding\\n\\n\");\n for (const [index, step] of steps.entries()) {\n const mark = step.status === \"done\" ? \"[x]\" : step.status === \"todo\" ? \"[ ]\" : \"[i]\";\n options.stdout.write(`${mark} ${index + 1}. ${step.title}\\n ${step.detail}\\n\\n`);\n }\n return steps;\n}\n//# sourceMappingURL=tutorial.js.map",
|
|
75
77
|
"const EVENT_COMMANDS = new Set([\"add\", \"list\", \"enable\", \"disable\", \"rm\"]);\nconst EVENT_FLAGS = new Set([\"at\", \"days\", \"message\", \"run-date\", \"session\", \"tag\", \"tz\"]);\nconst PRODUCT_DAYS_MODES = new Set([\"once\", \"daily\", \"weekday\"]);\nexport async function runEventsFromCli(client, argv, config) {\n const args = _parseEventArgs(argv);\n const session = _eventSession(args, config);\n if (args.command === \"add\")\n return await client.createScheduledEvent(session, _createEventRequest(args));\n if (args.command === \"list\") {\n _assertListArgs(args);\n return await client.listScheduledEvents(session);\n }\n const id = _eventId(args);\n if (args.command === \"rm\")\n return await client.deleteScheduledEvent(session, id);\n return await client.setScheduledEventEnabled(session, id, args.command === \"enable\");\n}\nfunction _parseEventArgs(argv) {\n const command = argv.shift();\n if (!command || !EVENT_COMMANDS.has(command))\n throw new Error(\"event command must be add, list, enable, disable, or rm\");\n const values = {};\n const positionals = [];\n let disabled = false;\n for (let index = 0; index < argv.length; index += 1) {\n const item = argv[index];\n if (!item.startsWith(\"--\"))\n positionals.push(item);\n else if (item === \"--disabled\")\n disabled = true;\n else\n values[item.slice(2)] = _eventFlagValue(argv, index++);\n }\n return { command: command, disabled, positionals, values };\n}\nfunction _eventFlagValue(argv, index) {\n const flag = argv[index].slice(2);\n if (!EVENT_FLAGS.has(flag))\n throw new Error(`unknown event flag: --${flag}`);\n const value = argv[index + 1];\n if (!value || value.startsWith(\"--\"))\n throw new Error(`--${flag} requires a value`);\n return value;\n}\nfunction _eventSession(args, config) {\n const session = args.values.session ?? config.session;\n if (!session?.trim())\n throw new Error(\"event requires --session or SAILORBRIDGE_SESSION\");\n return session;\n}\nfunction _createEventRequest(args) {\n if (args.positionals.length)\n throw new Error(\"event add does not accept positional arguments\");\n const daysMode = _eventDaysMode(args.values.days);\n return {\n at_local: _requiredEventFlag(args.values, \"at\"),\n tz: _requiredEventFlag(args.values, \"tz\"),\n days_mode: daysMode,\n message: _requiredEventFlag(args.values, \"message\"),\n ...(args.values[\"run-date\"] ? { run_date: args.values[\"run-date\"] } : {}),\n ...(args.values.tag ? { tag: args.values.tag } : {}),\n ...(args.disabled ? { enabled: false } : {}),\n };\n}\nfunction _eventDaysMode(value) {\n const daysMode = _requiredEventFlag({ days: value }, \"days\");\n if (!PRODUCT_DAYS_MODES.has(daysMode))\n throw new Error(\"--days must be once, daily, or weekday\");\n return daysMode;\n}\nfunction _requiredEventFlag(values, name) {\n const value = values[name]?.trim();\n if (!value)\n throw new Error(`--${name} is required`);\n return value;\n}\nfunction _eventId(args) {\n if (args.positionals.length !== 1)\n throw new Error(`event ${args.command} requires exactly one event id`);\n if (args.disabled || Object.keys(args.values).some((key) => key !== \"session\"))\n throw new Error(`event ${args.command} only accepts --session`);\n return args.positionals[0];\n}\nfunction _assertListArgs(args) {\n if (args.positionals.length || args.disabled || Object.keys(args.values).some((key) => key !== \"session\")) {\n throw new Error(\"event list only accepts --session\");\n }\n}\n//# sourceMappingURL=events.js.map",
|
|
@@ -80,10 +82,10 @@
|
|
|
80
82
|
"import { readTextFile, readTextInput, rejectUnusedTextInput } from \"./text-input.js\";\nconst VALUE_FLAGS = new Set([\"file\", \"source\"]);\nconst MEMORY_SEARCH_PLAIN_LIMIT = 20;\nexport async function runMemoryFromCli(client, argv, config, input, format) {\n const args = _parseMemoryCliArgs(argv);\n const captainId = _requireConfig(config.captainId, \"SAILORBRIDGE_CAPTAIN_ID\");\n const teamId = _requireConfig(config.session, \"SAILORBRIDGE_SESSION\");\n if (args.command === \"set\")\n return await _setMemory(client, captainId, teamId, args, input, format);\n if (args.command === \"search\")\n return await _searchMemory(client, captainId, teamId, args, input, format);\n if (args.command === \"current\")\n return await _currentMemory(client, captainId, teamId, args, format);\n if (args.command === \"pin\" || args.command === \"unpin\")\n return await _pinMemory(client, captainId, teamId, args, format);\n _assertMemoryShape(args, \"memory index\", 0, []);\n const result = await client.getRagMemoryIndex(captainId, teamId);\n return format === \"json\" ? result : result.text;\n}\nfunction _parseMemoryCliArgs(argv) {\n const command = argv[0];\n if (command !== \"set\" && command !== \"search\" && command !== \"current\" && command !== \"index\" && command !== \"pin\" && command !== \"unpin\") {\n throw new Error(\"memory command must be set, search, current, index, pin, or unpin\");\n }\n const positionals = [];\n const flags = {};\n for (let index = 1; index < argv.length; index += 1) {\n const token = argv[index];\n if (!token.startsWith(\"--\"))\n positionals.push(token);\n else\n _addMemoryFlag(flags, token, VALUE_FLAGS.has(token.slice(2)) ? argv[++index] : undefined);\n }\n return { command, positionals, flags };\n}\nfunction _addMemoryFlag(flags, token, value) {\n const name = token.slice(2);\n if (name !== \"stdin\" && !VALUE_FLAGS.has(name))\n throw new Error(`unknown memory flag: ${token}`);\n if (flags[name] !== undefined)\n throw new Error(`${token} may only be provided once`);\n if (name === \"stdin\")\n flags[name] = true;\n else if (!value || value.startsWith(\"--\"))\n throw new Error(`${token} requires a value`);\n else\n flags[name] = value;\n}\nasync function _setMemory(client, captainId, teamId, args, input, format) {\n _assertMemoryShape(args, \"memory set\", 1, [\"stdin\", \"file\", \"source\"]);\n const key = args.positionals[0];\n const source = _requiredFlag(args, \"source\");\n const value = await _payload(args, input);\n const result = await client.upsertRagCard(captainId, teamId, { key, value, source, type: \"memory\" });\n if (format === \"json\")\n return result;\n if (result.status === \"needs_decision\")\n return `${key} needs captain decision: ${result.question.id} (${result.question.title})`;\n const suffix = result.status === \"auto_resolved\" ? ` auto-resolved:${result.rule}` : \"\";\n return `${result.card.key} v${result.card.version ?? 1} ${result.card.status ?? \"active\"}${suffix}`;\n}\nasync function _searchMemory(client, captainId, teamId, args, input, format) {\n _assertMemoryShape(args, \"memory search\", 1, []);\n if (args.positionals[0] !== undefined)\n await rejectUnusedTextInput(input, \"memory search received stdin that its query argument does not consume; omit the query argument to read stdin\");\n const text = args.positionals[0] ?? await readTextInput(input);\n if (!text.trim())\n throw new Error(\"memory search requires a query argument or stdin\");\n const result = await client.searchRag(captainId, teamId, text);\n if (format === \"json\")\n return result;\n const { cards } = result;\n if (!cards.length)\n return \"No matching memory cards.\";\n const shown = cards.slice(0, MEMORY_SEARCH_PLAIN_LIMIT);\n const lines = shown.map((card) => `${card.key}\\t${card.score}\\t${_summary(card.value)}`);\n const omitted = cards.length - shown.length;\n return [...lines, `Shown ${shown.length} of ${cards.length}${omitted ? `; ${omitted} omitted (use --format json)` : \"\"}`].join(\"\\n\");\n}\nasync function _currentMemory(client, captainId, teamId, args, format) {\n _assertMemoryShape(args, \"memory current\", 1, []);\n const card = await client.getRagCurrentCard(captainId, teamId, args.positionals[0]);\n if (format === \"json\")\n return card;\n const source = card.source ? ` source:${card.source}` : \"\";\n return `${card.key} v${card.version ?? 1} ${card.status ?? \"active\"}${source}\\n${card.value}`;\n}\nasync function _pinMemory(client, captainId, teamId, args, format) {\n const pinned = args.command === \"pin\";\n _assertMemoryShape(args, `memory ${args.command}`, 1, []);\n const card = await client.setRagCardPin(captainId, teamId, args.positionals[0], pinned);\n if (format === \"json\")\n return card;\n return `${card.key} v${card.version ?? 1} ${pinned ? \"pinned\" : \"unpinned\"}`;\n}\nfunction _assertMemoryShape(args, name, maxPositionals, allowedFlags) {\n const requiresKey = name !== \"memory search\" && name !== \"memory index\";\n if (args.positionals.length > maxPositionals) {\n const requirement = maxPositionals ? (requiresKey ? \"requires one key\" : \"accepts at most one positional argument\") : \"requires no positional arguments\";\n throw new Error(`${name} ${requirement}`);\n }\n if (requiresKey && args.positionals.length !== maxPositionals)\n throw new Error(`${name} requires one key`);\n if (Object.keys(args.flags).some((flag) => !allowedFlags.includes(flag)))\n throw new Error(`${name} received an unsupported flag`);\n}\nasync function _payload(args, input) {\n const fromStdin = args.flags.stdin === true;\n const file = args.flags.file;\n if (fromStdin === (typeof file === \"string\"))\n throw new Error(\"memory set requires exactly one of --stdin or --file\");\n if (!fromStdin)\n await rejectUnusedTextInput(input, \"memory set received stdin that --file does not consume; use --stdin\");\n const value = fromStdin ? await readTextInput(input) : await readTextFile(file);\n if (!value.trim())\n throw new Error(\"memory set payload must not be empty\");\n return value;\n}\nfunction _requiredFlag(args, name) {\n const value = args.flags[name];\n if (typeof value !== \"string\" || !value.trim())\n throw new Error(`--${name} is required`);\n return value;\n}\nfunction _requireConfig(value, name) {\n if (!value?.trim())\n throw new Error(`memory requires ${name}`);\n return value;\n}\nfunction _summary(value) {\n return value.replace(/\\s+/gu, \" \").trim().slice(0, 180);\n}\n//# sourceMappingURL=memory.js.map",
|
|
81
83
|
"import { readTextFileOrStdin, readTextInput } from \"./text-input.js\";\nconst SEND_FLAGS = new Set([\"body-file\", \"commit\", \"session\", \"tag\", \"task-id\", \"task-version\", \"to-agents\", \"to-roles\", \"to-host\"]);\nexport function parseMailboxSendArgs(argv) {\n const parsed = argsFromValues(parseFlagValues(argv));\n if (!hasRecipients(parsed))\n throw new Error(\"mailbox send requires --to-agents, --to-roles, or --to-host\");\n rejectMixedAgentSelectors(parsed);\n return parsed;\n}\nfunction parseFlagValues(argv) {\n const values = {};\n for (let i = 0; i < argv.length; i += 1) {\n const item = argv[i];\n if (!item.startsWith(\"--\"))\n throw new Error(\"mailbox send body must come from stdin or --body-file, not argv\");\n const key = item.slice(2);\n if (!SEND_FLAGS.has(key))\n throw new Error(`unknown mailbox send flag: --${key}`);\n const value = argv[i + 1];\n if (!value || value.startsWith(\"--\"))\n throw new Error(`--${key} requires a value`);\n values[key] = value;\n i += 1;\n }\n return values;\n}\nfunction argsFromValues(values) {\n return {\n bodyFile: values[\"body-file\"],\n session: values.session,\n tag: values.tag,\n ..._taskSignalArgs(values),\n toAgents: splitList(values[\"to-agents\"]),\n toRoles: splitList(values[\"to-roles\"]),\n toHost: splitList(values[\"to-host\"]),\n };\n}\nfunction hasRecipients(args) {\n return Boolean(args.toAgents?.length || args.toRoles?.length || args.toHost?.length);\n}\nfunction rejectMixedAgentSelectors(args) {\n if (args.toAgents?.length && (args.toRoles?.length || args.toHost?.length)) {\n throw new Error(\"--to-agents cannot be combined with --to-roles or --to-host\");\n }\n}\nexport async function readMailboxSendBody(args, io, commandName = \"mailbox send\") {\n if (args.bodyFile) {\n return await readTextFileOrStdin(args.bodyFile, io.stdin, `${commandName} received stdin that --body-file does not consume; use --body-file -`, io.readFile); // intentional — injected reader is consumed only by text-input.ts\n }\n if (io.stdin.isTTY)\n throw new Error(`${commandName} body requires piped stdin or --body-file`);\n return await readTextInput(io.stdin);\n}\nexport async function sendMailboxFromCli(client, argv, config, io) {\n const args = parseMailboxSendArgs(argv);\n const text = await readMailboxSendBody(args, io);\n const payload = { ...(args.tag ? { tag: args.tag } : {}), payload_json: _mailboxPayload(args, text) };\n if (args.toAgents?.length === 1 && !args.toRoles?.length && !args.toHost?.length) {\n return await client.sendMailbox(args.toAgents[0], payload);\n }\n const session = args.session ?? config.session;\n if (!session)\n throw new Error(\"mailbox session send requires --session or SAILORBRIDGE_SESSION\");\n return await client.sendSessionMailbox(session, {\n ...payload,\n ...(args.toAgents?.length ? { to_agents: args.toAgents } : {}),\n ...(args.toRoles?.length ? { to_roles: args.toRoles } : {}),\n ...(args.toHost?.length ? { to_host: args.toHost.length === 1 ? args.toHost[0] : args.toHost } : {}),\n });\n}\nfunction _taskSignalArgs(values) {\n const taskId = values[\"task-id\"]?.trim();\n const rawVersion = values[\"task-version\"];\n const commit = values.commit?.trim();\n if (!taskId && rawVersion === undefined) {\n if (commit)\n throw new Error(\"--commit requires --task-id and --task-version\");\n return {};\n }\n if (!taskId || rawVersion === undefined)\n throw new Error(\"--task-id and --task-version must be used together\");\n return { taskId, taskVersion: _taskVersion(rawVersion), ...(commit ? { commit } : {}) };\n}\nfunction _taskVersion(value) {\n const version = Number(value);\n if (!Number.isSafeInteger(version) || version < 1)\n throw new Error(\"--task-version must be a positive integer\");\n return version;\n}\nfunction _mailboxPayload(args, text) {\n if (!args.taskId || args.taskVersion === undefined)\n return text;\n return { task_id: args.taskId, version: args.taskVersion, ...(args.commit ? { commit: args.commit } : {}), text };\n}\nfunction splitList(value) {\n const list = value?.split(\",\").map((item) => item.trim()).filter(Boolean);\n return list?.length ? list : undefined;\n}\n//# sourceMappingURL=mailbox-send.js.map",
|
|
82
84
|
"import { readMailboxSendBody } from \"./mailbox-send.js\";\nimport { rejectUnusedTextInput } from \"./text-input.js\";\nconst REPLY_FLAGS = new Set([\"agent\", \"body-file\", \"in-reply-to\", \"session\"]);\nexport async function sendReplyFromCli(client, argv, config, io) {\n const args = _parseReplyArgs(argv);\n const session = args.session ?? config.session;\n if (!session)\n throw new Error(\"reply requires --session or SAILORBRIDGE_SESSION\");\n const text = await _replyBody(args, io);\n const target = args.agent === \"captain\" ? { kind: \"captain\" } : { kind: \"agent\", agentName: args.agent };\n const response = await client.postSessionReply(session, text, target, args.inReplyTo, args.tag);\n return { status: args.agent === \"captain\" ? \"recorded\" : \"queued\", ...response };\n}\nasync function _replyBody(args, io) {\n if (args.body !== undefined && args.bodyFile !== undefined)\n throw new Error(\"only one of positional BODY or --body-file may be provided\");\n if (args.body === undefined)\n return await readMailboxSendBody(args, io, \"reply\");\n if (args.body === \"-\")\n return await readMailboxSendBody({}, io, \"reply\");\n await rejectUnusedTextInput(io.stdin, \"reply received stdin that positional BODY does not consume; use BODY - or --body-file -\");\n return args.body;\n}\nfunction _parseReplyArgs(argv) {\n const values = {};\n const positionals = [];\n for (let index = 0; index < argv.length; index += 1) {\n const item = argv[index];\n if (!item.startsWith(\"--\")) {\n positionals.push(item);\n continue;\n }\n const key = item.slice(2);\n if (!REPLY_FLAGS.has(key))\n throw new Error(`unknown reply flag: --${key}`);\n const value = argv[index + 1];\n if (!value || value.startsWith(\"--\"))\n throw new Error(`--${key} requires a value`);\n values[key] = value;\n index += 1;\n }\n return _replyArgsFromValues(values, positionals);\n}\nfunction _replyArgsFromValues(values, positionals) {\n const agent = _requiredReplyValue(values, \"agent\");\n const inReplyTo = _requiredReplyValue(values, \"in-reply-to\");\n const tag = positionals.shift();\n if (!tag)\n throw new Error(\"reply requires a tag\");\n return { agent, inReplyTo, tag, session: values.session, bodyFile: values[\"body-file\"], body: positionals.length ? positionals.join(\" \") : undefined };\n}\nfunction _requiredReplyValue(values, name) {\n const value = values[name]?.trim();\n if (!value)\n throw new Error(`--${name} is required`);\n return value;\n}\n//# sourceMappingURL=reply.js.map",
|
|
83
|
-
"import { writeOutput } from \"./output-format.js\";\nimport { DEFAULT_JOB_TIMEOUT_SECONDS, MAX_JOB_TIMEOUT_SECONDS, WORKER_JOB_RESULT_GRACE_SECONDS, } from \"./worker/protocol.js\";\nexport async function runWorkerCommandFromCli(client, argv, config, io, format = \"plain\") {\n const captainId = config.captainId;\n if (!captainId)\n throw new Error(\"SAILORBRIDGE_CAPTAIN_ID is required for worker commands\");\n
|
|
85
|
+
"import { writeOutput } from \"./output-format.js\";\nimport { DEFAULT_JOB_TIMEOUT_SECONDS, MAX_JOB_TIMEOUT_SECONDS, WORKER_JOB_RESULT_GRACE_SECONDS, } from \"./worker/protocol.js\";\nexport async function runWorkerCommandFromCli(client, argv, config, io, format = \"plain\") {\n const command = argv[0];\n _requireWorkerCredential(config.keyScope, command);\n const captainId = config.captainId;\n if (!captainId)\n throw new Error(\"SAILORBRIDGE_CAPTAIN_ID is required for worker commands\");\n switch (command) {\n case \"list\":\n return _listWorkers(client, captainId, _requireSession(config.session), argv.slice(1), io, format);\n case \"run\":\n return _runWorker(client, captainId, _requireSession(config.session), argv.slice(1), io, format);\n case \"job\":\n return _showJob(client, captainId, argv.slice(1), io, format);\n default:\n throw new Error(\"worker command must be job, list, run, or serve\");\n }\n}\nfunction _requireWorkerCredential(keyScope, command) {\n if (keyScope !== \"host\")\n return;\n if (command === \"list\") {\n throw new Error(\"worker list cannot use a paired host credential. \"\n + \"Open this team's Workers page in the SailorBridge console.\");\n }\n throw new Error(\"worker run/job requires a member-runtime credential; this command loaded a paired host credential. \"\n + \"Retry from a member workspace where SAILORBRIDGE_TOKEN is already set.\");\n}\nfunction _requireSession(session) {\n if (!session)\n throw new Error(\"SAILORBRIDGE_SESSION is required for worker list and run\");\n return session;\n}\nasync function _listWorkers(client, captainId, session, argv, io, format) {\n if (argv.length > 0)\n throw new Error(`unexpected argument: ${argv[0]}`);\n const response = await client.listWorkers(captainId, session);\n if (format === \"json\") {\n writeOutput(io.stdout, response, format);\n return;\n }\n const { workers } = response;\n if (workers.length === 0) {\n io.stdout.write(\"No workers registered.\\n\");\n return;\n }\n for (const worker of workers.slice(0, 20)) {\n io.stdout.write(`${worker.name}\\t${worker.online ? \"online\" : \"offline\"}\\t${worker.host}\\n`);\n }\n const omitted = workers.length - 20;\n if (omitted > 0)\n io.stdout.write(`${omitted} omitted; run sail worker list --format json for all.\\n`);\n}\nasync function _runWorker(client, captainId, session, argv, io, format) {\n const input = _parseRunArgs(argv);\n const workers = (await client.listWorkers(captainId, session)).workers;\n const worker = _requireRunnableWorker(workers, input.worker);\n const submitted = await _submitWorkerJob(client, captainId, input);\n if (!input.detach || format === \"plain\" || !submitted.warning) {\n _writeWarning(submitted.warning, worker, io);\n }\n if (input.detach) {\n if (format === \"json\")\n writeOutput(io.stdout, submitted, format);\n else\n io.stdout.write(`${submitted.id}\\n`);\n return;\n }\n const remoteBudget = input.timeoutSec ?? DEFAULT_JOB_TIMEOUT_SECONDS;\n const result = await client.getJobResult(captainId, submitted.id, remoteBudget + WORKER_JOB_RESULT_GRACE_SECONDS);\n _writeResult(result, io, format);\n}\nfunction _requireRunnableWorker(workers, name) {\n const worker = workers.find((item) => item.name === name);\n if (!worker)\n throw new Error(`worker '${name}' is not registered in this team`);\n if (worker.capabilities.includes(\"mode=readonly\")) {\n throw new Error(`worker '${name}' does not support bash jobs in readonly mode`);\n }\n return worker;\n}\nfunction _submitWorkerJob(client, captainId, input) {\n return client.submitJob(captainId, {\n worker: input.worker,\n argv: input.argv,\n ...(input.timeoutSec === undefined ? {} : { timeoutSec: input.timeoutSec }),\n });\n}\nasync function _showJob(client, captainId, argv, io, format) {\n if (argv.length !== 1 || !argv[0])\n throw new Error(\"worker job requires exactly one job id\");\n const result = await client.getJobStatus(captainId, argv[0]);\n if (format === \"json\") {\n writeOutput(io.stdout, result, format);\n if (result.exit_code !== null)\n io.setExitCode(_localExitStatus(result.exit_code));\n return;\n }\n if (result.status === \"queued\" || result.status === \"running\") {\n io.stdout.write(`${result.id}\\t${result.status}\\n`);\n return;\n }\n _writeResult(result, io, format);\n}\nfunction _parseRunArgs(argv) {\n const separator = argv.indexOf(\"--\");\n if (separator < 0)\n throw new Error(\"worker run requires '--' before argv\");\n const remoteArgv = argv.slice(separator + 1);\n if (remoteArgv.length === 0 || !remoteArgv[0]?.trim())\n throw new Error(\"worker run requires a command after '--'\");\n const { worker, timeoutSec, detach } = _parseRunFlags(argv.slice(0, separator));\n if (!worker)\n throw new Error(\"--worker is required\");\n return { worker, argv: remoteArgv, detach, ...(timeoutSec === undefined ? {} : { timeoutSec }) };\n}\nfunction _parseRunFlags(flags) {\n let worker = \"\";\n let timeoutSec;\n let detach = false;\n for (let index = 0; index < flags.length; index += 1) {\n const flag = flags[index];\n if (flag === \"--detach\") {\n detach = true;\n continue;\n }\n const value = flags[index + 1];\n if (!value)\n throw new Error(`${flag} requires a value`);\n if (flag === \"--worker\")\n worker = value.trim();\n else if (flag === \"--timeout\")\n timeoutSec = _parseTimeout(value);\n else\n throw new Error(`unexpected argument: ${flag}`);\n index += 1;\n }\n return { worker, detach, ...(timeoutSec === undefined ? {} : { timeoutSec }) };\n}\nfunction _parseTimeout(value) {\n if (!/^(?:0|[1-9]\\d*)(?:\\.\\d+)?$/u.test(value)) {\n throw new Error(`timeout must be a number from 1 to ${MAX_JOB_TIMEOUT_SECONDS} seconds`);\n }\n const timeout = Number(value);\n if (!Number.isFinite(timeout) || timeout < 1 || timeout > MAX_JOB_TIMEOUT_SECONDS) {\n throw new Error(`timeout must be a number from 1 to ${MAX_JOB_TIMEOUT_SECONDS} seconds`);\n }\n return timeout;\n}\nfunction _writeWarning(warning, worker, io) {\n if (warning) {\n io.stderr.write(`Warning: ${warning}\\n`);\n return;\n }\n if (!worker.online)\n io.stderr.write(`Warning: worker '${worker.name}' is registered but offline.\\n`);\n}\nfunction _writeResult(response, io, format) {\n if (!response.result || response.exit_code === null) {\n throw new Error(`job ${response.id} did not finish before the timeout (status=${response.status})`);\n }\n const localStatus = _localExitStatus(response.exit_code);\n if (format === \"json\") {\n writeOutput(io.stdout, response, format);\n io.setExitCode(localStatus);\n return;\n }\n io.stdout.write(response.result.stdout);\n io.stderr.write(response.result.stderr);\n if (response.exit_code < 0)\n _writeSignalStatus(response.exit_code, localStatus, response.result.stderr, io);\n io.setExitCode(localStatus);\n}\nfunction _localExitStatus(remoteCode) {\n return remoteCode < 0 ? 128 + Math.abs(remoteCode) : remoteCode;\n}\nfunction _writeSignalStatus(remoteCode, localStatus, remoteStderr, io) {\n if (remoteStderr && !remoteStderr.endsWith(\"\\n\"))\n io.stderr.write(\"\\n\");\n io.stderr.write(`Remote exit code ${remoteCode}; local exit status ${localStatus}.\\n`);\n}\n//# sourceMappingURL=worker-command.js.map",
|
|
84
86
|
"import { defaultHostCredentialsPath, loadHostCredential } from \"./auth/index.js\";\nimport { createPair, createWorker } from \"./product/index.js\";\nimport { loadRelayConfig, RelayClient, } from \"./relay/index.js\";\nimport { writeOutput } from \"./output-format.js\";\n// Unified host-side creation commands (owner 2026-07-21, design §A3): every\n// creation the console can do has a CLI twin so a host operator can build teams,\n// dev pairs, single planners/testers, and workers by text after `login`. These\n// reuse the SAME backend the console calls through the console API, so there is\n// no bypass API.\n//\n// Identity split (enforced by the relay, not chosen here):\n// - pair/worker: the paired host's own credential authorizes the console API,\n// which performs the privileged relay work server-side. Self-contained after login.\n// - team/planner/tester: the captain access token authorizes the privileged\n// console workflow; the paired host credential is used only to discover\n// hosts/workspaces. The backend assigns every immutable identity.\nconst CREATE_ENGINES = new Set([\"claude\", \"codex\"]);\nconst DEFAULT_ENGINE = \"claude\";\nconst WORKSPACE_PLAIN_LIMIT = 20;\nexport const CREATE_SUBCOMMANDS = new Set([\"team\", \"pair\", \"planner\", \"tester\", \"worker\"]);\nexport async function runCreateFromCli(argv, io, deps = {}) {\n const sub = argv[0];\n if (!sub || sub.startsWith(\"--\"))\n throw new Error(`create requires a subcommand: ${[...CREATE_SUBCOMMANDS].join(\", \")}`);\n if (!CREATE_SUBCOMMANDS.has(sub))\n throw new Error(`unknown create command: ${sub}; expected ${[...CREATE_SUBCOMMANDS].join(\", \")}`);\n const flags = _parseCreateFlags(argv.slice(1));\n if (sub === \"team\")\n return await _createTeam(flags, io, deps);\n if (sub === \"pair\")\n return await _createPair(flags, io, deps);\n if (sub === \"planner\" || sub === \"tester\")\n return await _createMember(sub, flags, io, deps);\n return await _createWorker(flags, io, deps);\n}\n// ---- team (host identity, same console API chain as the web wizard) ----\nasync function _createTeam(flags, io, deps) {\n if (flags.session !== undefined)\n throw new Error(\"create team does not accept --session; the team id is assigned by SailorBridge\");\n const displayName = _required(flags.name, \"--name\");\n const template = _required(flags.template, \"--template\");\n const engine = _engine(flags.engine);\n const ctx = await _teamConsoleContext(\"team\", flags, deps);\n const host = await _resolveOnlineHost(ctx.relay, ctx.captainId, flags.host);\n const workspace = await _resolveHostWorkspace(ctx.relay, ctx.captainId, host.host_id, flags.workspace);\n const { team, slots } = await _createAndApplyTeam(deps, ctx, displayName, template);\n const requests = await _startTeamSlots(deps, ctx, team, host.host_id, workspace.path, engine, slots);\n const result = { team, host: host.host_id, engine, requests };\n writeOutput(io.stdout, result, io.format, () => _teamPlain(result));\n}\nasync function _createAndApplyTeam(deps, ctx, displayName, template) {\n const created = await _postConsoleJson(deps, ctx, \"/api/console/teams\", { display_name: displayName });\n const team = _responseString(created, \"team\");\n const applied = await _postConsoleJson(deps, ctx, `/api/console/teams/${encodeURIComponent(team)}/team-builder/apply-template`, { template_id: template, confirm_task_fixed: true });\n return { team, slots: _responseSlots(applied) };\n}\nasync function _startTeamSlots(deps, ctx, team, hostId, workspaceRoot, engine, slots) {\n const requests = [];\n for (const slot of slots) {\n if (slot.status === \"materialized\")\n continue;\n const response = await _postConsoleJson(deps, ctx, `/api/console/teams/${encodeURIComponent(team)}/agent-start-requests`, {\n host_id: hostId,\n slot_id: slot.slot_id,\n spec: { role: slot.role ?? slot.role_name, engine, workspace: { mode: \"worktree\", root: workspaceRoot } },\n });\n requests.push(_responseStartRequest(response));\n }\n return requests;\n}\nasync function _postConsoleJson(deps, ctx, path, body) {\n const fetchImpl = deps.fetchImpl ?? fetch;\n const response = await fetchImpl(`${ctx.apiUrl.replace(/\\/$/, \"\")}${path}`, {\n method: \"POST\",\n headers: { Authorization: `Bearer ${ctx.token}`, \"Content-Type\": \"application/json\" },\n body: JSON.stringify(body),\n });\n const text = await response.text();\n if (!response.ok)\n throw new Error(`SailorBridge API ${response.status}: ${text}`);\n const parsed = JSON.parse(text);\n if (!parsed || typeof parsed !== \"object\" || Array.isArray(parsed))\n throw new Error(\"SailorBridge API returned a malformed object\");\n return parsed;\n}\nasync function _getConsoleJson(deps, ctx, path) {\n const fetchImpl = deps.fetchImpl ?? fetch;\n const response = await fetchImpl(`${ctx.apiUrl.replace(/\\/$/, \"\")}${path}`, {\n headers: { Authorization: `Bearer ${ctx.token}` },\n });\n const text = await response.text();\n if (!response.ok)\n throw new Error(`SailorBridge API ${response.status}: ${text}`);\n const parsed = JSON.parse(text);\n if (!parsed || typeof parsed !== \"object\" || Array.isArray(parsed))\n throw new Error(\"SailorBridge API returned a malformed object\");\n return parsed;\n}\nfunction _responseString(body, field) {\n const value = body[field];\n if (typeof value !== \"string\" || !value)\n throw new Error(`SailorBridge API response is missing ${field}`);\n return value;\n}\nfunction _responseSlots(body) {\n if (!Array.isArray(body.agent_slots))\n throw new Error(\"SailorBridge API response is missing agent_slots\");\n return body.agent_slots;\n}\nfunction _responseStartRequest(body) {\n if (!body.request || typeof body.request !== \"object\" || Array.isArray(body.request)) {\n throw new Error(\"SailorBridge API response is missing request\");\n }\n const request = body.request;\n return {\n id: _responseString(request, \"id\"),\n status: _responseString(request, \"status\"),\n host_id: _responseString(request, \"host_id\"),\n agent_name: _responseString(request, \"agent_name\"),\n };\n}\n// ---- pair (host-credential identity, console API) ----\nasync function _createPair(flags, io, deps) {\n // Validate pure flags before any credential load or network call (fail fast).\n const engine = _engine(flags.engine);\n const session = _requiredSession(flags.session, _envSession(deps));\n const ctx = await _consoleContext(flags, deps);\n const host = await _resolveOnlineHost(ctx.relay, ctx.captainId, flags.host);\n const workspace = await _resolveGitWorkspace(ctx.relay, ctx.captainId, host.host_id, flags.workspace);\n const result = await createPair({\n apiUrl: ctx.apiUrl,\n accessToken: ctx.token,\n teamId: session,\n hostId: host.host_id,\n captainId: ctx.captainId,\n ...(flags.name ? { name: flags.name } : {}),\n // The host builds a detached worktree of this local repo — no clone. The\n // git-origin pre-check above fails fast when the path is not a git checkout.\n spec: { engine, workspace: { mode: \"worktree\", root: workspace.path } },\n ...(deps.fetchImpl ? { fetchImpl: deps.fetchImpl } : {}),\n });\n writeOutput(io.stdout, result, io.format, () => _pairPlain(host.host_id, workspace, engine, result));\n}\nasync function _createMember(role, flags, io, deps) {\n _rejectMemberFlags(role, flags);\n const engine = _engine(flags.engine);\n const session = _requiredSession(flags.session, _envSession(deps));\n const ctx = await _teamConsoleContext(role, flags, deps);\n const host = await _resolveOnlineHost(ctx.relay, ctx.captainId, flags.host);\n const workspace = await _resolveHostWorkspace(ctx.relay, ctx.captainId, host.host_id, flags.workspace);\n const slot = await _memberSlotForCreate(deps, ctx, session, role);\n const request = await _startMember(deps, ctx, session, host.host_id, workspace.path, engine, role, slot);\n const result = { role, host: host.host_id, workspace: workspace.path, engine, slot, request };\n writeOutput(io.stdout, result, io.format, () => _memberPlain(result));\n}\nfunction _rejectMemberFlags(role, flags) {\n const unsupported = [\n [\"--name\", flags.name],\n [\"--template\", flags.template],\n [\"--concurrency\", flags.concurrency],\n ];\n const found = unsupported.find(([, value]) => value !== undefined);\n if (found)\n throw new Error(`create ${role} does not accept ${found[0]}`);\n}\nasync function _memberSlotForCreate(deps, ctx, session, role) {\n const path = `/api/console/teams/${encodeURIComponent(session)}/agent-slots`;\n const slots = _responseMemberSlots(await _getConsoleJson(deps, ctx, path));\n const retryable = slots.find((slot) => _isRetryableMemberSlot(slot, role));\n if (retryable)\n return retryable;\n if (role === \"planner\" && slots.some((slot) => slot.role === role)) {\n throw new Error(\"duplicate-singleton-role: team already has a planner slot\");\n }\n const created = _responseMemberSlot(await _postConsoleJson(deps, ctx, path, { role }));\n if (created.role !== role)\n throw new Error(\"SailorBridge API returned a member slot with the wrong role\");\n return created;\n}\nfunction _isRetryableMemberSlot(slot, role) {\n return slot.role === role\n && slot.status === \"planned\"\n && slot.template_origin === \"single-add\";\n}\nasync function _startMember(deps, ctx, session, hostId, workspaceRoot, engine, role, slot) {\n const response = await _postConsoleJson(deps, ctx, `/api/console/teams/${encodeURIComponent(session)}/agent-start-requests`, { host_id: hostId, slot_id: slot.slot_id, spec: { engine, role, workspace: { mode: \"worktree\", root: workspaceRoot } } });\n const request = _responseStartRequest(response);\n if (request.host_id !== hostId || request.agent_name !== slot.agent_name) {\n throw new Error(\"SailorBridge API returned a start request with mismatched identity\");\n }\n return request;\n}\nfunction _responseMemberSlots(body) {\n if (!Array.isArray(body.agent_slots))\n throw new Error(\"SailorBridge API response is missing agent_slots\");\n return body.agent_slots.map(_responseMemberSlotValue);\n}\nfunction _responseMemberSlot(body) {\n if (!body.agent_slot || typeof body.agent_slot !== \"object\" || Array.isArray(body.agent_slot)) {\n throw new Error(\"SailorBridge API response is missing agent_slot\");\n }\n return _responseMemberSlotValue(body.agent_slot);\n}\nfunction _responseMemberSlotValue(raw) {\n if (!raw || typeof raw !== \"object\" || Array.isArray(raw)) {\n throw new Error(\"SailorBridge API returned a malformed agent slot\");\n }\n const slot = raw;\n return {\n slot_id: _responseString(slot, \"slot_id\"),\n agent_name: _responseString(slot, \"agent_name\"),\n role: _responseString(slot, \"role\"),\n status: _responseString(slot, \"status\"),\n template_origin: _responseString(slot, \"template_origin\"),\n };\n}\n// ---- worker (host-credential identity, console API) ----\nasync function _createWorker(flags, io, deps) {\n // Validate pure flags before any credential load or network call (fail fast).\n const workerName = _required(flags.name, \"--name\");\n const maxConcurrency = _concurrency(flags.concurrency);\n const session = _requiredSession(flags.session, _envSession(deps));\n const ctx = await _consoleContext(flags, deps);\n const host = await _resolveOnlineHost(ctx.relay, ctx.captainId, flags.host);\n const workspace = await _resolveHostWorkspace(ctx.relay, ctx.captainId, host.host_id, flags.workspace);\n const result = await createWorker({\n apiUrl: ctx.apiUrl,\n accessToken: ctx.token,\n teamId: session,\n hostId: host.host_id,\n workerName,\n workdir: workspace.path,\n maxConcurrency,\n captainId: ctx.captainId,\n ...(deps.fetchImpl ? { fetchImpl: deps.fetchImpl } : {}),\n });\n writeOutput(io.stdout, result, io.format, () => _workerPlain(host.host_id, workspace.path, result));\n}\nfunction _envSession(deps) {\n return (deps.env ?? process.env).SAILORBRIDGE_SESSION?.trim() || undefined;\n}\nasync function _consoleContext(flags, deps) {\n const env = deps.env ?? process.env;\n const credentialsPath = flags.credentialsPath ?? env.SAILORBRIDGE_CREDENTIALS_FILE ?? defaultHostCredentialsPath();\n const credential = await (deps.loadHostCredential ?? loadHostCredential)(credentialsPath);\n const relayUrl = credential.relay_url ?? _relayUrlFromConfig(deps, env);\n const relay = _relayClient(deps, { relayUrl, bearerToken: credential.token });\n return {\n relay,\n captainId: String(credential.captain_id),\n apiUrl: flags.apiUrl ?? env.SAILORBRIDGE_API_URL ?? credential.api_url,\n token: credential.token,\n };\n}\nasync function _teamConsoleContext(command, flags, deps) {\n const env = deps.env ?? process.env;\n const accessToken = env.SAILORBRIDGE_CAPTAIN_ACCESS_TOKEN?.trim();\n if (!accessToken) {\n throw new Error(`create ${command} requires SAILORBRIDGE_CAPTAIN_ACCESS_TOKEN for captain-authorized console operations`);\n }\n return { ...await _consoleContext(flags, deps), token: accessToken };\n}\nfunction _relayUrlFromConfig(deps, env) {\n const relayUrl = (deps.loadRelayConfig ?? loadRelayConfig)(env).relayUrl;\n if (!relayUrl)\n throw new Error(\"host credential has no relay_url and SAILORBRIDGE_RELAY_URL is unset\");\n return relayUrl;\n}\nfunction _relayClient(deps, config) {\n if (deps.makeRelayClient)\n return deps.makeRelayClient(config);\n return new RelayClient(deps.fetchImpl ? { ...config, fetchImpl: deps.fetchImpl } : config);\n}\nasync function _resolveOnlineHost(relay, captainId, requested) {\n const { hosts } = await relay.listClientHosts(captainId);\n if (requested) {\n const match = hosts.find((host) => host.host_id === requested);\n if (!match)\n throw new Error(`host ${requested} is not paired with this captain; paired hosts: ${_hostList(hosts)}`);\n if (!match.online)\n throw new Error(`host ${requested} is offline; start its SailorBridge service before creating here`);\n return match;\n }\n const online = hosts.filter((host) => host.online);\n if (online.length === 1)\n return online[0];\n if (!online.length)\n throw new Error(\"no online paired host; run 'sailorbridge login' on a host first\");\n throw new Error(`multiple online hosts; pass --host <id> (online: ${_hostList(online)})`);\n}\nasync function _resolveHostWorkspace(relay, captainId, hostId, requested) {\n const { workspaces } = await relay.listClientHostWorkspaces(captainId, hostId);\n if (!workspaces.length)\n throw new Error(`host ${hostId} reported no workspaces; run 'sailorbridge login' in a project or 'host workspace add' there`);\n if (requested) {\n const match = workspaces.find((workspace) => workspace.path === requested || workspace.git_origin === requested);\n if (!match)\n throw new Error(`no workspace on ${hostId} matches ${requested}; reported: ${_workspaceList(workspaces)}`);\n return match;\n }\n if (workspaces.length === 1)\n return workspaces[0];\n throw new Error(`host ${hostId} has multiple workspaces; pass --workspace <path> (available: ${_workspaceList(workspaces)})`);\n}\nasync function _resolveGitWorkspace(relay, captainId, hostId, requested) {\n const workspace = await _resolveHostWorkspace(relay, captainId, hostId, requested);\n if (!workspace.git_origin?.trim()) {\n throw new Error(`workspace ${workspace.path} on ${hostId} has no git origin; a dev pair requires a git workspace`);\n }\n return workspace;\n}\nconst FLAG_KEYS = {\n \"--host\": \"host\",\n \"--session\": \"session\",\n \"--workspace\": \"workspace\",\n \"--engine\": \"engine\",\n \"--name\": \"name\",\n \"--template\": \"template\",\n \"--concurrency\": \"concurrency\",\n \"--api-url\": \"apiUrl\",\n \"--credentials-path\": \"credentialsPath\",\n};\nfunction _parseCreateFlags(tokens) {\n const flags = {};\n for (let index = 0; index < tokens.length; index += 1) {\n const token = tokens[index];\n const key = FLAG_KEYS[token];\n if (!key)\n throw new Error(`unexpected create argument: ${token}`);\n const value = tokens[index + 1];\n if (!value || value.startsWith(\"--\"))\n throw new Error(`${token} requires a value`);\n if (flags[key] !== undefined)\n throw new Error(`${token} may only be provided once`);\n flags[key] = value;\n index += 1;\n }\n return flags;\n}\nfunction _requiredSession(flag, fallback) {\n const session = (flag ?? fallback)?.trim();\n if (!session)\n throw new Error(\"--session is required (or set SAILORBRIDGE_SESSION)\");\n return session;\n}\nfunction _engine(value) {\n const engine = value?.trim() || DEFAULT_ENGINE;\n if (!CREATE_ENGINES.has(engine))\n throw new Error(`--engine must be one of ${[...CREATE_ENGINES].join(\", \")}, got: ${engine}`);\n return engine;\n}\nfunction _concurrency(value) {\n const raw = _required(value, \"--concurrency\");\n if (!/^\\d+$/.test(raw))\n throw new Error(\"--concurrency must be a positive integer\");\n const parsed = Number(raw);\n if (!Number.isSafeInteger(parsed) || parsed < 1)\n throw new Error(\"--concurrency must be a positive integer\");\n return parsed;\n}\nfunction _required(value, label) {\n const trimmed = value?.trim();\n if (!trimmed)\n throw new Error(`${label} is required`);\n return trimmed;\n}\n// ---- plain projections (fields the next step needs) ----\nfunction _hostList(hosts) {\n return hosts.length ? hosts.map((host) => `${host.host_id}${host.online ? \"\" : \" (offline)\"}`).join(\", \") : \"none\";\n}\nfunction _workspaceList(workspaces) {\n const shown = workspaces.slice(0, WORKSPACE_PLAIN_LIMIT).map((workspace) => workspace.path);\n const omitted = workspaces.length - shown.length;\n return `${shown.join(\", \")}${omitted > 0 ? `, +${omitted} more` : \"\"}`;\n}\nfunction _teamPlain(result) {\n const rows = result.requests.map((request) => ` ${request.agent_name} request=${request.id} status=${request.status}`);\n return [`team: ${result.team}`, `host: ${result.host}`, `engine: ${result.engine}`, \"requests:\", ...rows].join(\"\\n\");\n}\nfunction _pairPlain(hostId, workspace, engine, result) {\n return [\n `pair: ${result.pair.name}`,\n `host: ${hostId}`,\n `workspace: ${workspace.path}`,\n `engine: ${engine}`,\n `state: ${result.pair.state}`,\n `writer: ${result.writer.agent.name} request=${result.writer.request.id} status=${result.writer.request.status}`,\n `reviewer: ${result.reviewer.agent.name} request=${result.reviewer.request.id} status=${result.reviewer.request.status}`,\n ].join(\"\\n\");\n}\nfunction _memberPlain(result) {\n return [\n `${result.role}: ${result.slot.agent_name}`,\n `slot: ${result.slot.slot_id}`,\n `host: ${result.host}`,\n `workspace: ${result.workspace}`,\n `engine: ${result.engine}`,\n `request: ${result.request.id}`,\n `status: ${result.request.status}`,\n ].join(\"\\n\");\n}\nfunction _workerPlain(hostId, workdir, result) {\n return [\n `worker: ${result.worker.name}`,\n `host: ${hostId}`,\n `workdir: ${workdir}`,\n `request: ${result.request.id}`,\n `status: ${result.request.status}`,\n ].join(\"\\n\");\n}\n//# sourceMappingURL=create.js.map"
|
|
85
87
|
],
|
|
86
|
-
"mappings": "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A;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAC5B,IAAM,mBAAmB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;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",
|
|
87
|
-
"debugId": "
|
|
88
|
+
"mappings": "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AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAC5B,IAAM,mBAAmB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA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",
|
|
89
|
+
"debugId": "F9747B92FC45FFDB64756E2164756E21",
|
|
88
90
|
"names": []
|
|
89
91
|
}
|