@sailorbridge/client 0.1.1 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +30 -7
- package/dist/src/cli.js +904 -839
- package/dist/src/cli.js.map +18 -19
- 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/1784860966076-1188772/src/cli.js", ".dist-releases/1784860966076-1188772/src/auth/host-pairing.js", ".dist-releases/1784860966076-1188772/src/host/repo-tip-reporter.js", ".dist-releases/1784860966076-1188772/src/host/request-consumer.js", ".dist-releases/1784860966076-1188772/src/driver/secrets.js", ".dist-releases/1784860966076-1188772/src/version.js", ".dist-releases/1784860966076-1188772/src/product/start-request.js", ".dist-releases/1784860966076-1188772/src/product/pair.js", ".dist-releases/1784860966076-1188772/src/product/worker.js", ".dist-releases/1784860966076-1188772/src/driver/events.js", ".dist-releases/1784860966076-1188772/src/driver/async-queue.js", ".dist-releases/1784860966076-1188772/src/driver/types.js", ".dist-releases/1784860966076-1188772/src/driver/sdk-loader.js", ".dist-releases/1784860966076-1188772/src/driver/claude/driver.js", ".dist-releases/1784860966076-1188772/src/driver/codex/driver.js", ".dist-releases/1784860966076-1188772/src/driver/liveness-heuristics.js", ".dist-releases/1784860966076-1188772/src/driver/pty/loader.js", ".dist-releases/1784860966076-1188772/src/driver/pty/driver.js", ".dist-releases/1784860966076-1188772/src/driver/tmux/driver.js", ".dist-releases/1784860966076-1188772/src/driver/tmux/launch.js", ".dist-releases/1784860966076-1188772/src/driver/tmux/paste.js", ".dist-releases/1784860966076-1188772/src/driver/tmux/liveness.js", ".dist-releases/1784860966076-1188772/src/driver/tmux/runner.js", ".dist-releases/1784860966076-1188772/src/relay/client.js", ".dist-releases/1784860966076-1188772/src/relay/errors.js", ".dist-releases/1784860966076-1188772/src/worker/protocol.js", ".dist-releases/1784860966076-1188772/src/relay/config.js", ".dist-releases/1784860966076-1188772/src/supervisor/retirement.js", ".dist-releases/1784860966076-1188772/src/supervisor/wait.js", ".dist-releases/1784860966076-1188772/src/supervisor/mailbox.js", ".dist-releases/1784860966076-1188772/src/supervisor/runtime.js", ".dist-releases/1784860966076-1188772/src/host/managed-materialization.js", ".dist-releases/1784860966076-1188772/src/host/memory-stub.js", ".dist-releases/1784860966076-1188772/src/host/credential-guardian.js", ".dist-releases/1784860966076-1188772/src/supervisor/resolve.js", ".dist-releases/1784860966076-1188772/src/supervisor/transcript-backfill.js", ".dist-releases/1784860966076-1188772/src/supervisor/usage-collector.js", ".dist-releases/1784860966076-1188772/src/supervisor/transport.js", ".dist-releases/1784860966076-1188772/src/supervisor/cli-options.js", ".dist-releases/1784860966076-1188772/src/supervisor/tmux-availability.js", ".dist-releases/1784860966076-1188772/src/output-format.js", ".dist-releases/1784860966076-1188772/src/plain-output-fields.js", ".dist-releases/1784860966076-1188772/src/host/cli.js", ".dist-releases/1784860966076-1188772/src/host/service.js", ".dist-releases/1784860966076-1188772/src/host/git-remote.js", ".dist-releases/1784860966076-1188772/src/host/start-spec.js", ".dist-releases/1784860966076-1188772/src/host/workspace.js", ".dist-releases/1784860966076-1188772/src/host/workspace-inventory.js", ".dist-releases/1784860966076-1188772/src/host/host-config.js", ".dist-releases/1784860966076-1188772/src/host/host-workspace-cli.js", ".dist-releases/1784860966076-1188772/src/host/agent-env.js", ".dist-releases/1784860966076-1188772/src/host/runtime-env.js", ".dist-releases/1784860966076-1188772/src/host/agent-defaults.js", ".dist-releases/1784860966076-1188772/src/host/claude-settings.js", ".dist-releases/1784860966076-1188772/src/host/engine-auth.js", ".dist-releases/1784860966076-1188772/src/host/context-statusline.js", ".dist-releases/1784860966076-1188772/src/host/scratch-sweeper.js", ".dist-releases/1784860966076-1188772/src/host/launcher.js", ".dist-releases/1784860966076-1188772/src/worker/capability.js", ".dist-releases/1784860966076-1188772/src/host/worker-start-spec.js", ".dist-releases/1784860966076-1188772/src/host/worker-launcher.js", ".dist-releases/1784860966076-1188772/src/worker/client.js", ".dist-releases/1784860966076-1188772/src/worker/errors.js", ".dist-releases/1784860966076-1188772/src/worker/executor.js", ".dist-releases/1784860966076-1188772/src/worker/async-queue.js", ".dist-releases/1784860966076-1188772/src/worker/http.js", ".dist-releases/1784860966076-1188772/src/worker/stream-upload.js", ".dist-releases/1784860966076-1188772/src/host/daemon.js", ".dist-releases/1784860966076-1188772/src/host/enrollment-redeem.js", ".dist-releases/1784860966076-1188772/src/host/tutorial.js", ".dist-releases/1784860966076-1188772/src/events.js", ".dist-releases/1784860966076-1188772/src/text-input.js", ".dist-releases/1784860966076-1188772/src/ask.js", ".dist-releases/1784860966076-1188772/src/task.js", ".dist-releases/1784860966076-1188772/src/team.js", ".dist-releases/1784860966076-1188772/src/memory.js", ".dist-releases/1784860966076-1188772/src/mailbox-send.js", ".dist-releases/1784860966076-1188772/src/reply.js", ".dist-releases/1784860966076-1188772/src/worker-command.js", ".dist-releases/1784860966076-1188772/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, 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 { runRagFromCli } from \"./rag.js\";\nimport { sendMailboxFromCli } from \"./mailbox-send.js\";\nimport { sendReplyFromCli } from \"./reply.js\";\nimport { runWorkerFromCli } from \"./worker/index.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\", \"rag\", \"reply\", \"task\", \"team\", \"tutorial\",\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 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\") {\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 === \"rag\") {\n writeOutput(process.stdout, await runRagFromCli(client, argv.slice(1), config, process.stdin, output.format), output.format); // intentional — inject the CLI stream into text-input-aware RAG handling\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\", \"rag\", \"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 rag: 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\", \"repo\"]),\n worker: new Set([\"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 === \"rag\" && (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 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 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 sailorbridge team repo set GIT_URL [--wait] [--timeout-sec 1..300] [--session S]\n sailorbridge team repo status [--session S]\n sail rag set KEY (--stdin | --file PATH) --source SOURCE\n sail rag search [QUERY]\n sail rag current KEY\n sail rag pin KEY (moderator/captain only)\n sail rag unpin KEY (moderator/captain only)\n sail rag 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 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 / SAILORBRIDGE_SESSION / SAILORBRIDGE_CAPTAIN_ID\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, 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",
|
|
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
|
-
"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 SHA_RE = /^[0-9a-f]{40}(?:[0-9a-f]{24})?$/;\nexport function defaultRepoMirrorRoot() {\n return path.join(homedir(), \".sailorbridge\", \"repo-mirrors\");\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
|
|
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
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",
|
|
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.
|
|
10
|
+
"export const CLIENT_VERSION = \"0.2.1\";\nexport const CLIENT_GIT_SHA = \"89604f060de5-dirty\";\nexport const CLIENT_BUILD_DIRTY = true;\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,16 +25,16 @@
|
|
|
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\";\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 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 getTeamRepository(captainId, session) {\n const path = `/api/v1/captains/${segment(captainId)}/sessions`;\n const response = await this.requestJson(\"GET\", path);\n if (!Array.isArray(response.sessions))\n throw new RelayProtocolError(\"GET\", path, \"sessions must be an array\");\n const rows = response.sessions.map((row) => _parseTeamRepository(row, \"GET\", path));\n const repository = rows.find((row) => row.team_id === session);\n if (!repository)\n throw new RelayProtocolError(\"GET\", path, `team ${session} is missing`);\n return repository;\n }\n async setTeamRepositoryState(captainId, session, body) {\n const path = `${_captainSessionPath(captainId, session)}/repo-verification-state`;\n const response = await this.requestJson(\"PATCH\", path, body);\n return _parseTeamRepository(response.session, \"PATCH\", path);\n }\n async createRepoVerificationRequest(captainId, session, hostId, gitRepoUrl) {\n const path = `${_captainSessionPath(captainId, session)}/repo-verification-requests`;\n const response = await this.requestJson(\"POST\", path, { host_id: hostId, git_repo_url: gitRepoUrl });\n const request = parseAgentStartRequest(response.request, \"POST\", path);\n _requireRepoVerificationRequest(request, \"POST\", path, session, hostId);\n return request;\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 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 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 };\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 _parseTeamRepository(value, method, path) {\n if (!value || typeof value !== \"object\" || Array.isArray(value))\n throw new RelayProtocolError(method, path, \"session must be an object\");\n const session = value;\n if (typeof session.id !== \"string\" || !session.id)\n throw new RelayProtocolError(method, path, \"session.id must be a non-empty string\");\n if (session.git_repo_url !== null && typeof session.git_repo_url !== \"string\")\n throw new RelayProtocolError(method, path, \"session.git_repo_url must be a string or null\");\n if (!_isTeamRepositoryStatus(session.git_repo_verification_status))\n throw new RelayProtocolError(method, path, \"session.git_repo_verification_status is invalid\");\n if (session.git_repo_verification_reason !== null && typeof session.git_repo_verification_reason !== \"string\")\n throw new RelayProtocolError(method, path, \"session.git_repo_verification_reason must be a string or null\");\n return {\n team_id: session.id,\n git_repo_url: session.git_repo_url,\n git_repo_verification_status: session.git_repo_verification_status,\n git_repo_verification_reason: session.git_repo_verification_reason,\n };\n}\nfunction _isTeamRepositoryStatus(value) {\n return value === \"unverified\" || value === \"pending\" || value === \"verified\" || value === \"failed\";\n}\nfunction _requireRepoVerificationRequest(request, method, path, session, hostId) {\n if (request.request_kind !== \"repo_verification\")\n throw new RelayProtocolError(method, path, \"request_kind must be repo_verification\");\n if (request.session !== session || request.host_id !== hostId)\n throw new RelayProtocolError(method, path, \"request identity does not match repository verification target\");\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 !== \"repo_verification\" && 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 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 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",
|
|
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
|
+
"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",
|
|
30
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 { 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 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",
|
|
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
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",
|
|
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
|
-
"import { mkdir, writeFile } from \"node:fs/promises\"
|
|
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
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",
|
|
@@ -42,26 +42,24 @@
|
|
|
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",
|
|
44
44
|
"import { spawn } from \"node:child_process\";\nimport { createInterface } from \"node:readline\";\n// Probe tmux once with `tmux -V`. exit 0 = available; ENOENT/non-zero = not.\n// No version-floor check, no retry (owner 2026-06-16: keep it minimal).\nexport function isTmuxAvailable(spawnFn = spawn) {\n return new Promise((resolve) => {\n const child = spawnFn(\"tmux\", [\"-V\"], { stdio: \"ignore\" });\n child.on(\"error\", () => resolve(false));\n child.on(\"close\", (code) => resolve(code === 0));\n });\n}\n// Build a stdin/stderr-backed prompt. Output goes to stderr so prompts never\n// pollute stdout; each question opens and closes its own readline interface.\n// Interactivity is gauged on the channels actually used (stdin + stderr), not\n// stdout — so a run with stdout redirected to a file can still prompt.\nexport function createStdioPrompt() {\n return {\n isTTY: Boolean(process.stdin.isTTY && process.stderr.isTTY), // intentional — detect whether the local transport prompt can be interactive\n write: (line) => process.stderr.write(line.endsWith(\"\\n\") ? line : `${line}\\n`),\n question: (query) => new Promise((resolve) => {\n const rl = createInterface({ input: process.stdin, output: process.stderr }); // intentional — read the local transport confirmation prompt, not a CLI text parameter\n rl.question(query, (answer) => {\n rl.close();\n resolve(answer);\n });\n }),\n };\n}\nfunction _binaryExists(bin, spawnFn) {\n return new Promise((resolve) => {\n const child = spawnFn(bin, [\"--version\"], { stdio: \"ignore\" });\n child.on(\"error\", () => resolve(false));\n child.on(\"close\", () => resolve(true));\n });\n}\n// Resolve the package-manager install command for the platform. macOS uses\n// Homebrew; Linux probes apt-get/dnf/pacman in order. Anything else (or no\n// package manager) returns null — the caller fails unless tmux is installed.\nexport async function resolveInstallCommand(platform, hasBinary) {\n if (platform === \"darwin\") {\n return { display: \"brew install tmux\", cmd: \"brew\", args: [\"install\", \"tmux\"] };\n }\n if (platform === \"linux\") {\n const candidates = [\n [\"apt-get\", [\"apt-get\", \"install\", \"-y\", \"tmux\"]],\n [\"dnf\", [\"dnf\", \"install\", \"-y\", \"tmux\"]],\n [\"pacman\", [\"pacman\", \"-S\", \"--noconfirm\", \"tmux\"]],\n ];\n for (const [bin, install] of candidates) {\n if (await hasBinary(bin)) {\n return { display: `sudo ${install.join(\" \")}`, cmd: \"sudo\", args: install };\n }\n }\n }\n return null;\n}\n// Consent-gated tmux install. Echoes the exact command (including sudo), then\n// requires an explicit y/N (default N) BEFORE spawning anything. Re-probes tmux\n// after a successful run. Returns whether tmux is available afterwards.\nexport async function installTmux(deps) {\n const spawnFn = deps.spawnFn ?? spawn;\n const hasBinary = deps.hasBinary ?? ((bin) => _binaryExists(bin, spawnFn));\n const run = deps.run ?? ((cmd, args) => _runInherit(cmd, args, spawnFn));\n const recheck = deps.recheck ?? (() => isTmuxAvailable(spawnFn));\n const plan = await resolveInstallCommand(deps.platform, hasBinary);\n if (!plan) {\n deps.io.write(\"No supported package manager was found to install tmux automatically.\");\n return false;\n }\n deps.io.write(`This will run: ${plan.display}`);\n const answer = (await deps.io.question(\"Install tmux now? [y/N] \")).trim().toLowerCase();\n if (answer !== \"y\" && answer !== \"yes\") {\n deps.io.write(\"tmux install cancelled.\");\n return false;\n }\n deps.log(\"tmux_install_started\", { command: plan.display });\n const ok = await run(plan.cmd, plan.args);\n if (!ok) {\n deps.io.write(\"tmux install command failed.\");\n deps.log(\"tmux_install_failed\", { command: plan.display });\n return false;\n }\n const available = await recheck();\n deps.log(available ? \"tmux_install_succeeded\" : \"tmux_install_unverified\", { command: plan.display });\n return available;\n}\nfunction _runInherit(cmd, args, spawnFn) {\n return new Promise((resolve) => {\n const child = spawnFn(cmd, args, { stdio: \"inherit\" });\n child.on(\"error\", () => resolve(false));\n child.on(\"close\", (code) => resolve(code === 0));\n });\n}\n// Decide the effective transport when the resolved transport is tmux. Phase 1\n// returns only \"tmux\"; missing tmux is an explicit failure unless the user\n// consents to installation and the install succeeds.\nexport async function ensureTmuxTransport(opts) {\n const isAvailable = opts.isAvailable ?? (() => isTmuxAvailable());\n if (await isAvailable())\n return \"tmux\";\n if (!opts.explicit) {\n throw new Error(_tmuxMissingMessage(opts.platform));\n }\n if (!opts.io.isTTY) {\n // Non-interactive (e.g. CI): never silently install or downgrade.\n throw new Error(_tmuxMissingMessage(opts.platform));\n }\n return await _promptExplicitChoice(opts);\n}\nasync function _promptExplicitChoice(opts) {\n const installable = opts.platform === \"darwin\" || opts.platform === \"linux\";\n opts.io.write(\"tmux is required for --transport tmux but was not found. Choose how to continue:\");\n if (installable)\n opts.io.write(\" [1] Install tmux now (asks before running the install command)\");\n opts.io.write(\" [2] Cancel\");\n const answer = (await opts.io.question(\"Choose [1/2]: \")).trim();\n if (installable && answer === \"1\") {\n const install = opts.install\n ?? (() => installTmux({ platform: opts.platform, io: opts.io, log: opts.log }));\n if (await install())\n return \"tmux\";\n throw new Error(_tmuxMissingMessage(opts.platform));\n }\n if (answer !== \"2\")\n opts.io.write(`Unrecognized choice ${JSON.stringify(answer)}; cancelling.`);\n throw new Error(\"tmux transport cancelled.\");\n}\nfunction _tmuxMissingMessage(platform) {\n const how = platform === \"darwin\"\n ? \"brew install tmux\"\n : platform === \"linux\"\n ? \"install tmux via your package manager (e.g. sudo apt-get install -y tmux)\"\n : \"install tmux\";\n return `tmux is required in this release but was not found. Install tmux (${how}) and re-run.`;\n}\n//# sourceMappingURL=tmux-availability.js.map",
|
|
45
|
-
"export function parseOutputArgs(argv) {\n const cleaned = [];\n let format = \"plain\";\n let seen = false;\n for (let index = 0; index <
|
|
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
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",
|
|
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}\
|
|
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
53
|
"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 = { kind: HOST_CONFIG_KIND, 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 = { kind: HOST_CONFIG_KIND, 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 return { kind: HOST_CONFIG_KIND, workspaces };\n}\n//# sourceMappingURL=host-config.js.map",
|
|
54
54
|
"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
55
|
"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
|
-
"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 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",
|
|
56
|
+
"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",
|
|
57
57
|
"import { chmod, mkdir, readFile, stat, writeFile } from \"node:fs/promises\"; // intentional — defaults manage internal agent-home configuration, not CLI text parameters\nimport { homedir } from \"node:os\";\nimport path from \"node:path\";\nimport { readHostClaudeSettings } from \"./claude-settings.js\";\nimport { agentSandboxHome } from \"./memory-stub.js\";\nconst CODEX_BLOCK_BEGIN = \"# sailorbridge-terse-defaults:begin\";\nconst CODEX_BLOCK_END = \"# sailorbridge-terse-defaults:end\";\nconst CODEX_MODEL_BLOCK_BEGIN = \"# sailorbridge-host-model-settings:begin\";\nconst CODEX_MODEL_BLOCK_END = \"# sailorbridge-host-model-settings:end\";\nconst CODEX_TRUST_BLOCK_BEGIN = \"# sailorbridge-workspace-trust:begin\";\nconst CODEX_TRUST_BLOCK_END = \"# sailorbridge-workspace-trust:end\";\n// Byte-identical to engine install_context.py's codex renderer so the pane shows\n// `Context N% used` (context_telemetry.py DEFAULT_CONTEXT_PERCENT_PATTERNS[\"codex\"]).\nconst CODEX_CONTEXT_STATUS_LINE = 'status_line = [\"context-used\", \"used-tokens\", \"context-window-size\"]';\n// Basenames of statusLine commands SailorBridge owns and may replace with the\n// current context renderer; a user's own command is never one of these.\nconst SAIL_CLAUDE_STATUSLINE_BASENAMES = new Set([\"sail-claude-statusline\", \"sail-claude-context-statusline\"]);\n// This client's own statusLine renderer: `<binary> host statusline`. The leading\n// whitespace boundary avoids matching a user command that merely ends in the\n// letters \"host statusline\" (e.g. `/opt/myhost statusline`).\nconst CLAUDE_STATUSLINE_SUBCOMMAND_RE = /(?:^|\\s)host statusline$/u;\nconst CLAUDE_OUTPUT_STYLE = \"SailorBridge Terse\";\nconst MANAGED_MARKER = \"sailorbridge-managed-agent-default\";\nconst LEGACY_CLAUDE_HOOK_COMMANDS = new Set([\n 'python3 \"$CLAUDE_PROJECT_DIR/.claude/hooks/tool-output-hygiene.py\"',\n 'python3 \"$CLAUDE_PROJECT_DIR/.claude/hooks/stale-refs-guard.py\"',\n]);\nconst MANAGED_CLAUDE_HOOK_BASENAMES = new Set([\n \"tool-output-hygiene.py\",\n \"stale-refs-guard.py\",\n]);\nconst CODEX_DEFAULTS = {\n model_verbosity: \"\\\"low\\\"\",\n model_reasoning_summary: \"\\\"none\\\"\",\n hide_agent_reasoning: \"true\",\n // A supervised member can never answer the interactive \"Update available!\"\n // menu; with the check on, the composer never paints and the recovery cue\n // lands on the menu instead. This is Codex's canonical config-reference key;\n // the old `check_updates` spelling was ignored (tw incident, 2026-07-23).\n check_for_update_on_startup: \"false\",\n};\nconst CODEX_UPDATE_CHECK_KEYS = new Set([\"check_for_update_on_startup\", \"check_updates\"]);\nconst CLAUDE_TERSE_STYLE = [\n \"---\",\n `name: ${CLAUDE_OUTPUT_STYLE}`,\n \"description: Keep routine coding replies terse while preserving engineering judgment\",\n \"keep-coding-instructions: true\",\n \"---\",\n `<!-- ${MANAGED_MARKER} -->`,\n \"\",\n \"Prefer concise, direct answers. Keep progress notes and tool-result summaries short.\",\n \"Do not reduce reasoning quality, verification rigor, or safety checks.\",\n \"\",\n].join(\"\\n\");\nconst TOOL_OUTPUT_HYGIENE = \"#!/usr/bin/env python3\\n# sailorbridge-managed-agent-default\\n\\\"\\\"\\\"PreToolUse(Bash) gate: tool-output hygiene (owner 2026-07-06 token-economy ruling).\\n\\nBlock two high-risk large-output patterns and enforce selective reads or file + subagent summaries:\\n A. Bare `cat` of large files (combined size >100KB) without a pipe or redirection\\n B. Recursive grep/rg over directories without pipe-based limiting or -l/-c/-m limits\\n\\nThis is a guidance gate, not a security boundary: allow complex commands that cannot be parsed\\n(intentional fail-open — blocking normal work is worse than missing a case). Append `#full-output`\\nwhen full output is explicitly required. Precedents: block-unstamped-abagent.sh and the GLM pixel-gate deny-list.\\n\\\"\\\"\\\"\\nimport json\\nimport os\\nimport re\\nimport shlex\\nimport sys\\n\\nCAT_SIZE_LIMIT = 100_000 # bytes\\n\\nGREP_LIMIT_FLAGS = {\\n \\\"-l\\\", \\\"--files-with-matches\\\", \\\"-c\\\", \\\"--count\\\", \\\"-m\\\", \\\"--max-count\\\",\\n \\\"--files\\\", \\\"-L\\\", \\\"--files-without-match\\\",\\n}\\nGREP_PATTERN_FLAGS = {\\\"-e\\\", \\\"-f\\\"} # value IS the pattern — consuming one satisfies seen_pattern\\nGREP_VALUE_FLAGS = {\\\"--include\\\", \\\"--exclude\\\", \\\"--exclude-dir\\\", \\\"-m\\\", \\\"--max-count\\\", \\\"-A\\\", \\\"-B\\\", \\\"-C\\\"}\\n\\n\\ndef _split_outside_quotes(cmd: str):\\n \\\"\\\"\\\"Split only on && / || / ; / newlines outside quotes so command examples in\\n commit messages, echo payloads, or quoted heredocs are not treated as real commands.\\n Return [(segment, has_bare_pipe_or_redirect)].\\\"\\\"\\\"\\n segs, buf, quote, bare_pipe = [], [], None, False\\n i, n = 0, len(cmd)\\n while i < n:\\n ch = cmd[i]\\n if quote:\\n # Bash semantics: backslash escapes in double quotes; it is literal in single quotes.\\n if quote == '\\\"' and ch == \\\"\\\\\\\\\\\" and i + 1 < n:\\n buf.append(cmd[i : i + 2])\\n i += 2\\n continue\\n if ch == quote:\\n quote = None\\n buf.append(ch)\\n elif ch in \\\"'\\\\\\\"\\\":\\n quote = ch\\n buf.append(ch)\\n elif ch == \\\"\\\\\\\\\\\" and i + 1 < n:\\n buf.append(cmd[i : i + 2])\\n i += 2\\n continue\\n elif cmd[i : i + 2] in (\\\"&&\\\", \\\"||\\\"):\\n segs.append((\\\"\\\".join(buf), bare_pipe))\\n buf, bare_pipe = [], False\\n i += 2\\n continue\\n elif ch in \\\";\\\\n\\\":\\n segs.append((\\\"\\\".join(buf), bare_pipe))\\n buf, bare_pipe = [], False\\n else:\\n if ch in \\\"|>\\\":\\n bare_pipe = True\\n buf.append(ch)\\n i += 1\\n segs.append((\\\"\\\".join(buf), bare_pipe))\\n return segs\\n\\n\\nWRAPPER_TOKENS = {\\\"command\\\", \\\"env\\\", \\\"nohup\\\", \\\"time\\\", \\\"nice\\\", \\\"stdbuf\\\", \\\"sudo\\\"}\\nCONTROL_TOKENS = {\\\"if\\\", \\\"then\\\", \\\"else\\\", \\\"elif\\\", \\\"while\\\", \\\"until\\\", \\\"do\\\", \\\"!\\\", \\\"{\\\", \\\"(\\\"}\\nASSIGN_RE = re.compile(r\\\"^[A-Za-z_][A-Za-z0-9_]*=\\\")\\nSUBST_RE = re.compile(r\\\"\\\\$\\\\(([^()]*)\\\\)|`([^`]*)`\\\")\\n\\n\\nHEREDOC_RE = re.compile(r\\\"<<-?\\\\s*(['\\\\\\\"])([A-Za-z_][A-Za-z0-9_]*)\\\\1\\\")\\n\\n\\ndef _mask_quoted_heredocs(cmd):\\n \\\"\\\"\\\"Mask bodies of quote-delimited <<'X' / <<\\\"X\\\" heredocs. Bash performs no command\\n substitution or expansion there, so command examples in prose payloads are not commands\\n (v5 dogfood false positive: an ancestry flag in a heredoc body). Keep unclosed bodies unchanged.\\\"\\\"\\\"\\n parts, pos = [], 0\\n for m in HEREDOC_RE.finditer(cmd):\\n if m.start() < pos:\\n continue\\n nl = cmd.find(\\\"\\\\n\\\", m.end())\\n if nl == -1:\\n break\\n delim = m.group(2)\\n end = cmd.find(\\\"\\\\n\\\" + delim, nl)\\n while end != -1:\\n after = end + 1 + len(delim)\\n if after >= len(cmd) or cmd[after] == \\\"\\\\n\\\":\\n break\\n end = cmd.find(\\\"\\\\n\\\" + delim, end + 1)\\n if end == -1:\\n break\\n body_start = nl + 1\\n parts.append(cmd[pos:body_start])\\n parts.append(\\\" \\\" * (end + 1 - body_start))\\n pos = end + 1\\n parts.append(cmd[pos:])\\n return \\\"\\\".join(parts)\\n\\n\\ndef _command_tokens(tokens):\\n \\\"\\\"\\\"Skip leading env assignments, wrappers (command/env/…), control keywords (if/then/…),\\n and wrapper flags, then return tokens from the real command. Checking argv[0] alone is\\n bypassed by ordinary wrappers such as `command cat` or `if … cat` (v4 review P1).\\\"\\\"\\\"\\n i = 0\\n while i < len(tokens):\\n t = tokens[i]\\n if t in CONTROL_TOKENS or t in WRAPPER_TOKENS or ASSIGN_RE.match(t) or t.startswith(\\\"-\\\"):\\n i += 1\\n continue\\n break\\n return tokens[i:]\\n\\n\\ndef _mask_single_quotes(cmd):\\n \\\"\\\"\\\"Replace single-quoted spans with equal-length spaces; Bash does no substitution inside them.\\\"\\\"\\\"\\n out, i, n = list(cmd), 0, len(cmd)\\n quote = None\\n while i < n:\\n ch = cmd[i]\\n if quote == '\\\"':\\n if ch == \\\"\\\\\\\\\\\" and i + 1 < n:\\n i += 2\\n continue\\n if ch == '\\\"':\\n quote = None\\n elif quote == \\\"'\\\":\\n out[i] = \\\" \\\"\\n if ch == \\\"'\\\":\\n quote = None\\n elif ch in \\\"'\\\\\\\"\\\":\\n quote = ch\\n if ch == \\\"'\\\":\\n out[i] = \\\" \\\"\\n i += 1\\n return \\\"\\\".join(out)\\n\\n\\ndef _mask_balanced_quotes(text):\\n \\\"\\\"\\\"Replace balanced single- or double-quoted spans with spaces while retaining an unclosed tail.\\n Use before the ValueError backstop so mentions of cat/grep inside quotes do not trigger it.\\\"\\\"\\\"\\n out, i, n = list(text), 0, len(text)\\n quote_start, quote = None, None\\n while i < n:\\n ch = text[i]\\n if quote:\\n if quote == '\\\"' and ch == \\\"\\\\\\\\\\\" and i + 1 < n:\\n i += 2\\n continue\\n if ch == quote:\\n for j in range(quote_start, i + 1):\\n out[j] = \\\" \\\"\\n quote, quote_start = None, None\\n elif ch in \\\"'\\\\\\\"\\\":\\n quote, quote_start = ch, i\\n i += 1\\n return \\\"\\\".join(out)\\n\\n\\ndef _with_substitutions(cmd):\\n \\\"\\\"\\\"Add command text from $(…)/`…` substitutions (quote-aware: ignore single quotes;\\n iterate to approximate one level of nesting). In `echo $(cat big)`, cat runs without a pipe.\\\"\\\"\\\"\\n texts, queue = [cmd], [cmd]\\n while queue:\\n c = queue.pop()\\n for m in SUBST_RE.finditer(_mask_single_quotes(c)):\\n inner = (m.group(1) or m.group(2) or \\\"\\\").strip()\\n if inner:\\n texts.append(inner)\\n queue.append(inner)\\n return texts\\n\\n\\ndef _check_cat(tokens):\\n total = 0\\n for tok in tokens[1:]:\\n if tok.startswith(\\\"-\\\"):\\n continue\\n path = os.path.expanduser(tok)\\n try:\\n if os.path.isfile(path):\\n total += os.path.getsize(path)\\n except OSError:\\n continue\\n if total > CAT_SIZE_LIMIT:\\n return (\\n f\\\"BLOCKED(token-economy): bare cat would load {total // 1000}KB into context and retransmit it on every later turn. \\\"\\n \\\"Use head/tail/sed -n for the needed range, Read with offset/limit, or a subagent that returns only conclusions. \\\"\\n \\\"If full output is required, append #full-output.\\\"\\n )\\n return None\\n\\n\\ndef _expand_flags(tokens):\\n \\\"\\\"\\\"Expand combined short options: -rln -> -r,-l,-n; normalize long options before =.\\\"\\\"\\\"\\n flags = set()\\n for t in tokens:\\n if t.startswith(\\\"--\\\"):\\n flags.add(t.split(\\\"=\\\")[0])\\n elif t.startswith(\\\"-\\\") and len(t) > 1:\\n flags.update(f\\\"-{ch}\\\" for ch in t[1:])\\n return flags\\n\\n\\ndef _check_grep(tokens, is_rg):\\n flags = _expand_flags(tokens[1:])\\n if flags & GREP_LIMIT_FLAGS:\\n return None\\n if not is_rg and not ({\\\"-r\\\", \\\"-R\\\", \\\"--recursive\\\"} & flags):\\n return None # Non-recursive grep over one file is bounded.\\n # Collect path args, skipping flags and values; -e/-f values are patterns, and -- ends flags.\\n paths, skip_next, seen_pattern, flags_done = [], False, False, False\\n for tok in tokens[1:]:\\n if skip_next:\\n skip_next = False\\n continue\\n if not flags_done and tok == \\\"--\\\":\\n flags_done = True\\n continue\\n if not flags_done and tok.startswith(\\\"-\\\"):\\n if tok in GREP_PATTERN_FLAGS:\\n skip_next = True\\n seen_pattern = True\\n elif tok in GREP_VALUE_FLAGS:\\n skip_next = True\\n continue\\n if not seen_pattern:\\n seen_pattern = True\\n continue\\n paths.append(os.path.expanduser(tok))\\n if paths and all(os.path.isfile(p) for p in paths):\\n return None # An explicit list of regular files has bounded output.\\n tool = \\\"rg\\\" if is_rg else \\\"grep -r\\\"\\n return (\\n f\\\"BLOCKED(token-economy): unbounded recursive {tool} may dump excessive matches into context. \\\"\\n \\\"Use -l to locate files first, | head -50 to cap output, or -m N to limit each file. \\\"\\n \\\"If full output is required, append #full-output.\\\"\\n )\\n\\n\\ndef main():\\n try:\\n data = json.load(sys.stdin)\\n except Exception:\\n return 0\\n if data.get(\\\"tool_name\\\") != \\\"Bash\\\":\\n return 0\\n cmd = (data.get(\\\"tool_input\\\") or {}).get(\\\"command\\\", \\\"\\\")\\n if not cmd or \\\"#full-output\\\" in cmd:\\n return 0\\n cwd = data.get(\\\"cwd\\\")\\n if isinstance(cwd, str) and os.path.isdir(cwd):\\n try:\\n os.chdir(cwd)\\n except OSError:\\n pass # intentional fail-open\\n for text in _with_substitutions(_mask_quoted_heredocs(cmd)):\\n for seg, piped in _split_outside_quotes(text):\\n if piped:\\n continue # An external pipe/redirection is assumed to limit or capture output.\\n try:\\n tokens = _command_tokens(shlex.split(seg.strip()))\\n except ValueError:\\n # Fail closed when an unparseable segment visibly contains a scan command. ANSI-C\\n # quotes or continued lines can confuse quote state and let bare cat/grep escape\\n # (v3 review P2). Mask balanced quotes first to avoid v4 false positives.\\n if re.search(r\\\"\\\\b(cat|grep|egrep|fgrep|rg)\\\\b\\\", _mask_balanced_quotes(seg)):\\n print(\\n \\\"BLOCKED(token-economy): command quoting is invalid and the segment contains cat/grep/rg; \\\"\\n \\\"output limiting cannot be verified. Simplify quoting, or append #full-output to run it unchanged.\\\",\\n file=sys.stderr,\\n )\\n return 2\\n continue # intentional fail-open — an unparseable non-scan command is not blocked\\n if not tokens:\\n continue\\n base = os.path.basename(tokens[0])\\n msg = None\\n if base == \\\"cat\\\":\\n msg = _check_cat(tokens)\\n elif base in (\\\"grep\\\", \\\"egrep\\\", \\\"fgrep\\\"):\\n msg = _check_grep(tokens, is_rg=False)\\n elif base == \\\"rg\\\":\\n msg = _check_grep(tokens, is_rg=True)\\n if msg:\\n print(msg, file=sys.stderr)\\n return 2\\n return 0\\n\\n\\nif __name__ == \\\"__main__\\\":\\n sys.exit(main())\\n\";\nconst STALE_REFS_GUARD = \"#!/usr/bin/env python3\\n# sailorbridge-managed-agent-default\\n\\\"\\\"\\\"PreToolUse(Bash) gate: require fresh refs before ancestry or containment verdicts (2026-07-06).\\n\\nRoot cause (incidents 4 and 5 that day, ccr3 false rejections c4f413cb/59d48c5a): after\\nthe initial pull, only task branches were fetched, leaving origin/main stale. `branch --contains`\\nand `merge-base` then fabricated \\\"delivery not on main / branch smuggling\\\" NEEDS-CHANGES results.\\n\\nParse by quote-aware splitting, shlex tokenization, and exact argv tokens; never use substring\\nregexes over raw command text (v3 review lesson: quoted commit prose caused false positives).\\nAllow commands that include a git fetch which refreshes origin/main (full fetch, main refspec,\\nor wildcard). A targeted fetch of another branch does not count. `#stale-ok` bypasses the guard;\\nparsing failures intentionally fail open because this is guidance, not a security boundary.\\n\\\"\\\"\\\"\\nimport json\\nimport os\\nimport re\\nimport shlex\\nimport subprocess\\nimport sys\\n\\nMAX_REF_AGE_SEC = 600\\nANCESTRY_SUBCOMMANDS = {\\\"merge-base\\\"}\\nANCESTRY_FLAG_PREFIXES = (\\\"--contains\\\", \\\"--is-ancestor\\\")\\nMAIN_REFSPEC_RE = re.compile(r\\\"(^|[/:+])main(?=$|[:/])\\\")\\n\\n\\ndef _split_outside_quotes(cmd):\\n \\\"\\\"\\\"Split on && / || / ; / | / newlines outside quotes; honor backslash escapes in double\\n quotes and literal backslashes in single quotes. This mirrors tool-output-hygiene.py, with\\n additional pipe splitting to isolate each command.\\\"\\\"\\\"\\n segs, buf, quote = [], [], None\\n i, n = 0, len(cmd)\\n while i < n:\\n ch = cmd[i]\\n if quote:\\n if quote == '\\\"' and ch == \\\"\\\\\\\\\\\" and i + 1 < n:\\n buf.append(cmd[i : i + 2])\\n i += 2\\n continue\\n if ch == quote:\\n quote = None\\n buf.append(ch)\\n elif ch in \\\"'\\\\\\\"\\\":\\n quote = ch\\n buf.append(ch)\\n elif ch == \\\"\\\\\\\\\\\" and i + 1 < n:\\n buf.append(cmd[i : i + 2])\\n i += 2\\n continue\\n elif cmd[i : i + 2] in (\\\"&&\\\", \\\"||\\\"):\\n segs.append(\\\"\\\".join(buf))\\n buf = []\\n i += 2\\n continue\\n elif ch in \\\";\\\\n|\\\":\\n segs.append(\\\"\\\".join(buf))\\n buf = []\\n else:\\n buf.append(ch)\\n i += 1\\n segs.append(\\\"\\\".join(buf))\\n return segs\\n\\n\\nWRAPPER_TOKENS = {\\\"command\\\", \\\"env\\\", \\\"nohup\\\", \\\"time\\\", \\\"nice\\\", \\\"stdbuf\\\", \\\"sudo\\\"}\\nCONTROL_TOKENS = {\\\"if\\\", \\\"then\\\", \\\"else\\\", \\\"elif\\\", \\\"while\\\", \\\"until\\\", \\\"do\\\", \\\"!\\\", \\\"{\\\", \\\"(\\\"}\\nASSIGN_RE = re.compile(r\\\"^[A-Za-z_][A-Za-z0-9_]*=\\\")\\nSUBST_RE = re.compile(r\\\"\\\\$\\\\(([^()]*)\\\\)|`([^`]*)`\\\")\\n\\n\\nHEREDOC_RE = re.compile(r\\\"<<-?\\\\s*(['\\\\\\\"])([A-Za-z_][A-Za-z0-9_]*)\\\\1\\\")\\n\\n\\ndef _mask_quoted_heredocs(cmd):\\n \\\"\\\"\\\"Mask bodies of quote-delimited <<'X' / <<\\\"X\\\" heredocs. Bash performs no command\\n substitution or expansion there, so command examples in prose payloads are not commands\\n (v5 dogfood false positive: an ancestry flag in a heredoc body). Keep unclosed bodies unchanged.\\\"\\\"\\\"\\n parts, pos = [], 0\\n for m in HEREDOC_RE.finditer(cmd):\\n if m.start() < pos:\\n continue\\n nl = cmd.find(\\\"\\\\n\\\", m.end())\\n if nl == -1:\\n break\\n delim = m.group(2)\\n end = cmd.find(\\\"\\\\n\\\" + delim, nl)\\n while end != -1:\\n after = end + 1 + len(delim)\\n if after >= len(cmd) or cmd[after] == \\\"\\\\n\\\":\\n break\\n end = cmd.find(\\\"\\\\n\\\" + delim, end + 1)\\n if end == -1:\\n break\\n body_start = nl + 1\\n parts.append(cmd[pos:body_start])\\n parts.append(\\\" \\\" * (end + 1 - body_start))\\n pos = end + 1\\n parts.append(cmd[pos:])\\n return \\\"\\\".join(parts)\\n\\n\\ndef _command_tokens(tokens):\\n \\\"\\\"\\\"Skip leading env assignments, wrappers (command/env/…), control keywords (if/then/…),\\n and wrapper flags, then return tokens from the real command. Checking argv[0] alone is\\n bypassed by ordinary wrappers such as `if git merge-base …` (v4 review P1 x2).\\\"\\\"\\\"\\n i = 0\\n while i < len(tokens):\\n t = tokens[i]\\n if t in CONTROL_TOKENS or t in WRAPPER_TOKENS or ASSIGN_RE.match(t) or t.startswith(\\\"-\\\"):\\n i += 1\\n continue\\n break\\n return tokens[i:]\\n\\n\\ndef _mask_single_quotes(cmd):\\n \\\"\\\"\\\"Replace single-quoted spans with equal-length spaces; Bash does no command substitution\\n inside them, so expanding $(…) there would cause false positives.\\\"\\\"\\\"\\n out, i, n = list(cmd), 0, len(cmd)\\n quote = None\\n while i < n:\\n ch = cmd[i]\\n if quote == '\\\"':\\n if ch == \\\"\\\\\\\\\\\" and i + 1 < n:\\n i += 2\\n continue\\n if ch == '\\\"':\\n quote = None\\n elif quote == \\\"'\\\":\\n out[i] = \\\" \\\"\\n if ch == \\\"'\\\":\\n out[i] = \\\" \\\"\\n quote = None\\n elif ch in \\\"'\\\\\\\"\\\":\\n quote = ch\\n if ch == \\\"'\\\":\\n out[i] = \\\" \\\"\\n i += 1\\n return \\\"\\\".join(out)\\n\\n\\ndef _with_substitutions(cmd):\\n \\\"\\\"\\\"Add command text from $(…)/`…` substitutions (quote-aware: ignore single quotes;\\n iterate to approximate one level of nesting).\\\"\\\"\\\"\\n texts, queue = [cmd], [cmd]\\n while queue:\\n c = queue.pop()\\n for m in SUBST_RE.finditer(_mask_single_quotes(c)):\\n inner = (m.group(1) or m.group(2) or \\\"\\\").strip()\\n if inner:\\n texts.append(inner)\\n queue.append(inner)\\n return texts\\n\\n\\ndef _git_argv_segments(cmd):\\n \\\"\\\"\\\"Return argv for every git invocation. shlex removes quotes so quoted prose stays one token\\n and cannot collide with exact subcommand/flag matching. Include substitutions and commands\\n wrapped by if/wrapper/env prefixes; skip unparseable segments (intentional fail-open).\\\"\\\"\\\"\\n out = []\\n for text in _with_substitutions(cmd):\\n for seg in _split_outside_quotes(text):\\n try:\\n tokens = _command_tokens(shlex.split(seg.strip()))\\n except ValueError:\\n continue\\n if tokens and os.path.basename(tokens[0]) == \\\"git\\\":\\n out.append(tokens)\\n return out\\n\\n\\ndef _is_ancestry(tokens):\\n return any(\\n t in ANCESTRY_SUBCOMMANDS\\n or t in ANCESTRY_FLAG_PREFIXES\\n or t.startswith(tuple(f + \\\"=\\\" for f in ANCESTRY_FLAG_PREFIXES))\\n for t in tokens[1:]\\n )\\n\\n\\ndef _fetch_refreshes_main(tokens):\\n \\\"\\\"\\\"Whether this git argv refreshes origin/main: a full fetch with no refspec (remote omitted,\\n origin, or --all), or a main/wildcard refspec. Targeted fetches of task branches do not count;\\n treating any fetch as a bypass is exactly the stale-refs bug this guard prevents.\\\"\\\"\\\"\\n if \\\"fetch\\\" not in tokens[1:]:\\n return False\\n args = [t for t in tokens[tokens.index(\\\"fetch\\\") + 1 :] if not t.startswith(\\\"-\\\")]\\n remote = args[0] if args else \\\"origin\\\"\\n if remote != \\\"origin\\\":\\n return False\\n refspecs = args[1:]\\n return not refspecs or any(\\n \\\"*\\\" in r or MAIN_REFSPEC_RE.search(r) for r in refspecs\\n )\\n\\n\\ndef _git_common_dir(cwd):\\n try:\\n out = subprocess.run(\\n [\\\"git\\\", \\\"-C\\\", cwd, \\\"rev-parse\\\", \\\"--git-common-dir\\\"],\\n capture_output=True, text=True, timeout=5,\\n )\\n if out.returncode != 0:\\n return None\\n path = out.stdout.strip()\\n return path if os.path.isabs(path) else os.path.join(cwd, path)\\n except Exception:\\n return None\\n\\n\\ndef _origin_url(cwd):\\n try:\\n out = subprocess.run(\\n [\\\"git\\\", \\\"-C\\\", cwd, \\\"config\\\", \\\"--get\\\", \\\"remote.origin.url\\\"],\\n capture_output=True, text=True, timeout=5,\\n )\\n return out.stdout.strip() if out.returncode == 0 else None\\n except Exception:\\n return None\\n\\n\\ndef _norm_url(url):\\n return url.rstrip(\\\"/\\\").removesuffix(\\\".git\\\") if url else None\\n\\n\\ndef _origin_main_age(git_dir, origin_url):\\n \\\"\\\"\\\"Freshness is the minimum age of the main ref update and the latest origin fetch covering main:\\n - loose ref mtime updates when main moves, but an unchanged ref is not rewritten during quiet\\n periods, so using it alone creates stale false positives (v3 dogfood evidence)\\n - packed-refs mtime is the lower bound when the loose ref has been packed\\n - FETCH_HEAD mtime counts only when its content has a branch 'main' line for the origin URL\\n (full fetch writes all branches; targeted fetch writes only its target; normalized URL\\n comparison prevents another remote such as `git fetch upstream main` from laundering freshness).\\\"\\\"\\\"\\n import time\\n now = time.time()\\n ages = []\\n loose = os.path.join(git_dir, \\\"refs/remotes/origin/main\\\")\\n try:\\n ages.append(now - os.path.getmtime(loose))\\n except OSError:\\n try:\\n ages.append(now - os.path.getmtime(os.path.join(git_dir, \\\"packed-refs\\\")))\\n except OSError:\\n pass\\n fetch_head = os.path.join(git_dir, \\\"FETCH_HEAD\\\")\\n try:\\n with open(fetch_head, encoding=\\\"utf-8\\\", errors=\\\"replace\\\") as f:\\n for line in f:\\n m = re.search(r\\\"branch 'main' of (.+?)\\\\s*$\\\", line)\\n if m and origin_url and _norm_url(m.group(1)) == _norm_url(origin_url):\\n ages.append(now - os.path.getmtime(fetch_head))\\n break\\n except OSError:\\n pass\\n return min(ages) if ages else None\\n\\n\\ndef main():\\n try:\\n data = json.load(sys.stdin)\\n except Exception:\\n return 0\\n if data.get(\\\"tool_name\\\") != \\\"Bash\\\":\\n return 0\\n cmd = (data.get(\\\"tool_input\\\") or {}).get(\\\"command\\\", \\\"\\\")\\n if not cmd or \\\"#stale-ok\\\" in cmd:\\n return 0\\n git_segs = _git_argv_segments(_mask_quoted_heredocs(cmd))\\n if not any(_is_ancestry(t) for t in git_segs):\\n return 0\\n if any(_fetch_refreshes_main(t) for t in git_segs):\\n return 0 # A compound command already refreshes origin/main before the verdict.\\n cwd = data.get(\\\"cwd\\\")\\n if not (isinstance(cwd, str) and os.path.isdir(cwd)):\\n cwd = os.getcwd()\\n git_dir = _git_common_dir(cwd)\\n if not git_dir:\\n return 0\\n age = _origin_main_age(git_dir, _origin_url(cwd))\\n if age is None or age <= MAX_REF_AGE_SEC:\\n return 0\\n print(\\n f\\\"BLOCKED(stale-refs): this repository's origin/main ref has not been updated for {int(age // 60)} minutes. \\\"\\n \\\"Running --contains/merge-base/--is-ancestor on stale refs can fabricate a \\\"\\n \\\"'delivery not on main / branch smuggling' verdict (two confirmed false rejections on 2026-07-06). \\\"\\n \\\"Rerun as `git fetch origin && <verdict-command>`; a targeted task-branch fetch does not count. \\\"\\n \\\"Append #stale-ok only when fresh refs are intentionally unnecessary.\\\",\\n file=sys.stderr,\\n )\\n return 2\\n\\n\\nif __name__ == \\\"__main__\\\":\\n sys.exit(main())\\n\";\nexport function agentRuntimeConfigHome(agentName, engine, env = process.env) {\n const runtimeEngine = _runtimeEngine(engine);\n return agentSandboxHome(agentName, runtimeEngine, env);\n}\nexport async function materializeAgentRuntimeDefaults(options) {\n const warn = options.warn ?? _warnStatusLine;\n if (options.engine === \"claude\") {\n await _materializeClaudeDefaults(options.homeDir, options.workspaceDir, options.statusLineCommand, warn, options.sourceHomeDir);\n return;\n }\n await _materializeCodexDefaults(options.homeDir, options.workspaceDir, options.sourceHomeDir, warn);\n}\nfunction _warnStatusLine(message) {\n process.stderr.write(`sail host: warning: ${message}\\n`);\n}\n// The shell command Claude's statusLine runs: this client re-invoking its own\n// `host statusline` subcommand. Mirrors the host-service installer's self-invoke\n// (service.ts resolveCommand) so it works whether the client is an installed\n// entry point or `node <entry>` under `npm i -g`. Fail-fast (no silent skip) when\n// the entry point is unknown — a missing statusline command is a context-telemetry\n// correctness gap, not something to swallow.\nexport function resolveClaudeStatusLineCommand(runtime = { execPath: process.execPath, argv1: process.argv[1] }) {\n const name = path.basename(runtime.execPath);\n const prefix = name === \"node\" || name === \"bun\"\n ? [path.resolve(runtime.execPath), _requireEntry(runtime.argv1)]\n : [path.resolve(runtime.execPath)];\n // Only the resolved paths are quoted (they may contain spaces); the literal\n // subcommand words stay bare.\n return [...prefix.map(_shellSingleQuote), \"host\", \"statusline\"].join(\" \");\n}\nfunction _requireEntry(argv1) {\n const entry = argv1?.trim();\n if (!entry)\n throw new Error(\"cannot resolve claude statusline command: client entry point is unknown\");\n return path.resolve(entry);\n}\nasync function _materializeClaudeDefaults(homeDir, workspaceDir, statusLineCommand, warn = _warnStatusLine, sourceHomeDir) {\n const settingsPath = path.join(homeDir, \"settings.json\");\n const stylePath = path.join(homeDir, \"output-styles\", \"sailorbridge-terse.md\");\n const hooksDir = path.join(homeDir, \"hooks\");\n const hygienePath = path.join(hooksDir, \"tool-output-hygiene.py\");\n const refsPath = path.join(hooksDir, \"stale-refs-guard.py\");\n await mkdir(path.dirname(stylePath), { recursive: true });\n await _writeManagedFile(stylePath, CLAUDE_TERSE_STYLE, false);\n await mkdir(hooksDir, { recursive: true });\n await _writeManagedFile(hygienePath, TOOL_OUTPUT_HYGIENE, true);\n await _writeManagedFile(refsPath, STALE_REFS_GUARD, true);\n const settings = await _readJsonObject(settingsPath);\n await _mergeHostClaudeEnv(settings, sourceHomeDir);\n if (settings.outputStyle === undefined)\n settings.outputStyle = CLAUDE_OUTPUT_STYLE;\n // Members launch with --dangerously-skip-permissions; without this settings\n // key claude blocks on the Bypass Permissions acceptance dialog every start.\n settings.skipDangerousModePermissionPrompt = true;\n settings.hooks = _mergeClaudeHooks(settings.hooks, [\n { matcher: \"Bash\", command: `python3 ${_shellSingleQuote(hygienePath)}` },\n { matcher: \"Bash\", command: `python3 ${_shellSingleQuote(refsPath)}` },\n ]);\n _ensureClaudeStatusLine(settings, statusLineCommand ?? resolveClaudeStatusLineCommand(), warn);\n await mkdir(path.dirname(settingsPath), { recursive: true });\n await writeFile(settingsPath, JSON.stringify(settings, null, 2) + \"\\n\", { mode: 0o600 });\n if (workspaceDir)\n await _trustClaudeWorkspace(homeDir, workspaceDir);\n}\n// Flows the host Claude settings.json `env` block (the user's own engine auth +\n// runtime env: ANTHROPIC_* routing/token, API_TIMEOUT_MS, ...) into the freshly\n// written sandbox settings.json. Claude reads env from the sandbox config dir, so\n// without this env-based auth never reaches the sandboxed engine. Host env wins on\n// key conflict — it is the user's deliberate engine setup, not a product default —\n// and re-running each launch idempotently picks up a rotated token. Runs before the\n// product's own keys (statusLine/hooks/outputStyle live under different keys and are\n// untouched). The token stays inside the 0600 settings file: never logged, never argv.\nasync function _mergeHostClaudeEnv(settings, sourceHomeDir) {\n if (!sourceHomeDir)\n return;\n const hostEnv = (await readHostClaudeSettings(sourceHomeDir)).env;\n if (Object.keys(hostEnv).length === 0)\n return;\n settings.env = { ..._jsonObject(settings.env, \"Claude settings env\"), ...hostEnv };\n}\nasync function _trustClaudeWorkspace(homeDir, workspaceDir) {\n const configPath = path.join(homeDir, \".claude.json\");\n const config = await _readJsonObject(configPath);\n const projects = _jsonObject(config.projects, \"Claude config projects\");\n const projectPath = path.resolve(_expandHome(workspaceDir));\n for (const trustedPath of await _claudeTrustRoots(projectPath)) {\n const project = _jsonObject(projects[trustedPath], `Claude config project ${trustedPath}`);\n project.hasTrustDialogAccepted = true;\n projects[trustedPath] = project;\n }\n config.projects = projects;\n // Credentials are provisioned by symlink; without this flag claude still runs\n // first-run onboarding and parks the supervised member at the OAuth screen.\n config.hasCompletedOnboarding = true;\n await mkdir(path.dirname(configPath), { recursive: true });\n await writeFile(configPath, JSON.stringify(config, null, 2) + \"\\n\", { mode: 0o600 });\n}\n// claude keys a linked git worktree's trust by the MAIN repository root, not the\n// worktree directory: with a repo-provided .claude/settings.json the untrusted\n// dialog becomes \"This folder pre-approves N tool permissions\" and a member\n// parks on it forever (classic3 all-dead, tw probes 2026-07-22 — trust keyed by\n// the worktree path leaves the gate up; keyed by the base root it never shows).\n// Trust both paths so every launch path (member/worker/supervise/relaunch) is\n// covered regardless of which key this claude version consults.\nasync function _claudeTrustRoots(projectPath) {\n const pointer = path.join(projectPath, \".git\");\n let stats;\n try {\n stats = await stat(pointer);\n }\n catch {\n return [projectPath]; // intentional — not a git checkout; nothing more to trust\n }\n if (!stats.isFile())\n return [projectPath]; // a .git DIRECTORY is the main repo itself\n const gitdir = /^gitdir:\\s*(.+)\\s*$/m.exec(await readFile(pointer, \"utf8\"))?.[1]; // intentional — git-written .git pointer file, not user text\n if (!gitdir) {\n throw new Error(`workspace ${projectPath} has an unreadable .git pointer — cannot pre-trust its main repository for claude`);\n }\n const resolved = path.resolve(projectPath, gitdir);\n const marker = `${path.sep}.git${path.sep}worktrees${path.sep}`;\n const markerIndex = resolved.indexOf(marker);\n if (markerIndex === -1)\n return [projectPath]; // intentional — submodule-style pointer, not a linked worktree\n return [projectPath, resolved.slice(0, markerIndex)];\n}\n// Enables Claude's context statusLine only when the user has no real setting of\n// their own — mirrors engine install_context.py _ensure_claude_renderer and the\n// owner's \"enable status line if user doesn't have such setting\" ruling: an\n// absent, blank, or SailorBridge-owned command is (re)pointed at the current\n// renderer; a genuine user command is left untouched.\nfunction _ensureClaudeStatusLine(settings, command, warn) {\n const existing = settings.statusLine;\n if (existing === undefined) {\n settings.statusLine = _claudeStatusLineConfig(command);\n return;\n }\n if (!existing || typeof existing !== \"object\" || Array.isArray(existing)) {\n throw new Error(\"Claude statusLine setting must be an object\");\n }\n const existingCommand = existing.command;\n if (_claudeStatusLineShouldBeReplaced(existingCommand)) {\n settings.statusLine = _claudeStatusLineConfig(command);\n return;\n }\n // Kept a user/hub statusLine (e.g. claude-hud). Its command is opaque, so —\n // unlike codex's readable status_line — this pre-launch step cannot confirm it\n // renders context usage; the engine listener's live pane verify\n // (_verify_pane_parse) is the real check. Surface a visible, non-silent notice\n // rather than either overriding the user's setting or failing quietly.\n warn(`kept existing Claude statusLine (${String(existingCommand)}); SailorBridge context autopilot needs it to display context usage`);\n}\nfunction _claudeStatusLineShouldBeReplaced(command) {\n if (typeof command !== \"string\" || !command.trim())\n return true;\n const trimmed = command.trim();\n if (CLAUDE_STATUSLINE_SUBCOMMAND_RE.test(trimmed))\n return true; // our own client renderer — refresh in place\n const first = trimmed.split(/\\s+/u)[0] ?? \"\";\n return SAIL_CLAUDE_STATUSLINE_BASENAMES.has(path.basename(first));\n}\nfunction _claudeStatusLineConfig(command) {\n return { type: \"command\", command, refreshInterval: 20 };\n}\nasync function _materializeCodexDefaults(homeDir, workspaceDir, sourceHomeDir, warn = _warnStatusLine) {\n const configPath = path.join(homeDir, \"config.toml\");\n let current = await _readTextIfExists(configPath);\n current = current.replace(new RegExp(`${_escapeRegExp(CODEX_BLOCK_BEGIN)}[\\\\s\\\\S]*?${_escapeRegExp(CODEX_BLOCK_END)}\\\\n?`, \"u\"), \"\");\n current = current.replace(new RegExp(`${_escapeRegExp(CODEX_TRUST_BLOCK_BEGIN)}[\\\\s\\\\S]*?${_escapeRegExp(CODEX_TRUST_BLOCK_END)}\\\\n?`, \"u\"), \"\");\n current = await _refreshCodexModelSettings(current, sourceHomeDir);\n // Product-managed members have no person at the TUI to answer an update menu.\n // Enforce this invariant even if a stale/explicit user key says otherwise.\n current = _removeTopLevelTomlKeys(current, CODEX_UPDATE_CHECK_KEYS);\n const trustedWorkspace = workspaceDir ? path.resolve(_expandHome(workspaceDir)) : undefined;\n const trust = trustedWorkspace ? _setExistingCodexProjectTrust(current, trustedWorkspace) : { text: current, found: false };\n current = trust.text;\n const missing = Object.entries(CODEX_DEFAULTS).filter(([key]) => !_hasTopLevelTomlKey(current, key));\n const defaultsBlock = _codexManagedBlock(missing);\n const trustBlock = trustedWorkspace && !trust.found ? _codexTrustBlock(trustedWorkspace) : \"\";\n const next = _ensureCodexStatusLine(_appendTomlBlock(_insertBeforeFirstTomlTable(current, defaultsBlock), trustBlock), warn);\n await mkdir(path.dirname(configPath), { recursive: true });\n await writeFile(configPath, next, { mode: 0o600 });\n}\n// Adds the context status_line to codex's [tui] table only when no status_line is\n// present — the owner's \"enable status line if user doesn't have such setting\"\n// ruling. This is deliberately more conservative than engine install_context.py,\n// which REPLACES an existing status_line that lacks \"context-used\"; here any\n// user status_line is left untouched. intentional — never clobber user config.\nfunction _ensureCodexStatusLine(text, warn) {\n const lines = text.split(/(?<=\\n)/u);\n const tableHeader = /^\\s*\\[\\[?[^\\]\\n]+\\]\\]?\\s*(?:#.*)?$/u;\n const tuiHeader = /^\\s*\\[\\s*tui\\s*\\]\\s*(?:#.*)?$/u;\n const statusAssign = /^\\s*status_line\\s*=/u;\n let state = { arrayDepth: 0 };\n let tuiHeaderLine = -1;\n let tuiEndLine = -1;\n let inTui = false;\n let hasStatusLine = false;\n for (let i = 0; i < lines.length; i += 1) {\n const line = lines[i] ?? \"\";\n if (!state.multilineQuote && state.arrayDepth === 0) {\n const trimmed = line.trimEnd();\n if (tableHeader.test(trimmed)) {\n if (inTui) {\n inTui = false;\n tuiEndLine = i;\n }\n if (tuiHeaderLine === -1 && tuiHeader.test(trimmed)) {\n tuiHeaderLine = i;\n inTui = true;\n }\n }\n else if (inTui && statusAssign.test(trimmed)) {\n hasStatusLine = true;\n }\n }\n state = _scanTomlLine(line, state);\n }\n if (tuiHeaderLine === -1) {\n // A new [tui] goes BEFORE the first existing table (not appended): if it\n // landed after a bare [projects.X] trust table, the workspace-aware second\n // materialize pass would insert trust_level ahead of [tui], stranding it\n // behind a blank line and breaking table adjacency. Keeping [tui] ahead of\n // [projects.X] leaves that table last so trust appends cleanly next to it.\n return _insertBeforeFirstTomlTable(text, `[tui]\\n${CODEX_CONTEXT_STATUS_LINE}`);\n }\n if (hasStatusLine) {\n // Never override a user status_line. Unlike Claude's opaque command, codex's\n // status_line is readable, so we can precisely check whether it will render a\n // parseable context percentage and warn (visibly, not silently) when it will\n // not, rather than forcing our value in.\n const tuiRegion = lines.slice(tuiHeaderLine, tuiEndLine === -1 ? lines.length : tuiEndLine).join(\"\");\n if (!tuiRegion.includes(\"context-used\")) {\n warn('kept existing codex [tui] status_line without \"context-used\"; SailorBridge context autopilot will not parse context usage from it');\n }\n return text;\n }\n lines.splice(tuiHeaderLine + 1, 0, `${CODEX_CONTEXT_STATUS_LINE}\\n`);\n return lines.join(\"\");\n}\nasync function _refreshCodexModelSettings(current, sourceHomeDir) {\n if (!sourceHomeDir)\n return current;\n const source = await _readTextIfExists(path.join(sourceHomeDir, \"config.toml\"));\n const entries = _codexModelEntries(source);\n const withoutManaged = current.replace(new RegExp(`${_escapeRegExp(CODEX_MODEL_BLOCK_BEGIN)}[\\\\s\\\\S]*?${_escapeRegExp(CODEX_MODEL_BLOCK_END)}\\\\n?`, \"u\"), \"\");\n const keys = new Set(entries.map(({ key }) => key));\n const cleaned = _removeTopLevelTomlKeys(withoutManaged, keys);\n return _insertBeforeFirstTomlTable(cleaned, _codexModelBlock(entries));\n}\nfunction _codexModelEntries(text) {\n const tableIndex = _firstTomlTableIndex(text);\n const root = tableIndex === -1 ? text : text.slice(0, tableIndex);\n const entries = [];\n let state = { arrayDepth: 0 };\n for (const line of root.split(/(?<=\\n)/u)) {\n const match = !state.multilineQuote && state.arrayDepth === 0\n ? /^\\s*(model(?:_[A-Za-z0-9_-]+)?)\\s*=/u.exec(line)\n : null;\n if (match?.[1])\n entries.push({ key: match[1], line: line.trimEnd() });\n state = _scanTomlLine(line, state);\n }\n return entries;\n}\nfunction _removeTopLevelTomlKeys(text, keys) {\n if (keys.size === 0)\n return text;\n const tableIndex = _firstTomlTableIndex(text);\n const root = tableIndex === -1 ? text : text.slice(0, tableIndex);\n const tables = tableIndex === -1 ? \"\" : text.slice(tableIndex);\n const kept = [];\n let state = { arrayDepth: 0 };\n for (const line of root.split(/(?<=\\n)/u)) {\n const match = !state.multilineQuote && state.arrayDepth === 0 ? /^\\s*([A-Za-z0-9_-]+)\\s*=/u.exec(line) : null;\n if (!match?.[1] || !keys.has(match[1]))\n kept.push(line);\n state = _scanTomlLine(line, state);\n }\n return kept.join(\"\") + tables;\n}\nfunction _codexModelBlock(entries) {\n if (entries.length === 0)\n return \"\";\n return [CODEX_MODEL_BLOCK_BEGIN, ...entries.map(({ line }) => line), CODEX_MODEL_BLOCK_END, \"\"].join(\"\\n\");\n}\nfunction _codexManagedBlock(entries) {\n const lines = entries.map(([key, value]) => `${key} = ${value}`);\n return lines.length ? `${CODEX_BLOCK_BEGIN}\\n${lines.join(\"\\n\")}\\n${CODEX_BLOCK_END}\\n` : \"\";\n}\nfunction _codexTrustBlock(trustedWorkspace) {\n return [\n CODEX_TRUST_BLOCK_BEGIN,\n `[projects.${_tomlBasicString(trustedWorkspace)}]`,\n 'trust_level = \"trusted\"',\n CODEX_TRUST_BLOCK_END,\n \"\",\n ].join(\"\\n\");\n}\nfunction _setExistingCodexProjectTrust(text, workspaceDir) {\n const header = `[projects.${_tomlBasicString(workspaceDir)}]`;\n const target = new RegExp(`^\\\\s*${_escapeRegExp(header)}\\\\s*(?:#.*)?$`, \"u\");\n const lines = text.split(/(?<=\\n)/u);\n let state = { arrayDepth: 0 };\n for (let index = 0; index < lines.length; index += 1) {\n const line = lines[index] ?? \"\";\n if (!state.multilineQuote && state.arrayDepth === 0 && target.test(line.trimEnd())) {\n return { text: _withCodexProjectTrustLine(lines, index), found: true };\n }\n state = _scanTomlLine(line, state);\n }\n return { text, found: false };\n}\nfunction _withCodexProjectTrustLine(lines, headerIndex) {\n let state = { arrayDepth: 0 };\n for (let index = headerIndex + 1; index < lines.length; index += 1) {\n const line = lines[index] ?? \"\";\n if (!state.multilineQuote && state.arrayDepth === 0 && /^\\s*\\[\\[?[^\\]\\n]+\\]\\]?\\s*(?:#.*)?$/u.test(line.trimEnd())) {\n lines.splice(index, 0, 'trust_level = \"trusted\"\\n');\n return lines.join(\"\");\n }\n if (!state.multilineQuote && state.arrayDepth === 0 && /^\\s*trust_level\\s*=/u.test(line.trimEnd())) {\n lines[index] = 'trust_level = \"trusted\"\\n';\n return lines.join(\"\");\n }\n state = _scanTomlLine(line, state);\n }\n if (lines[headerIndex] && !lines[headerIndex].endsWith(\"\\n\"))\n lines[headerIndex] += \"\\n\";\n lines.push('trust_level = \"trusted\"\\n');\n return lines.join(\"\");\n}\nfunction _tomlBasicString(value) {\n return JSON.stringify(value);\n}\nfunction _insertBeforeFirstTomlTable(current, block) {\n const trimmed = current.trimEnd();\n if (!block)\n return trimmed ? `${trimmed}\\n` : \"\";\n const tableIndex = _firstTomlTableIndex(current);\n if (tableIndex === -1)\n return [trimmed, block.trimEnd()].filter(Boolean).join(\"\\n\\n\") + \"\\n\";\n const before = current.slice(0, tableIndex).trimEnd();\n const after = current.slice(tableIndex).trimStart();\n return [before, block.trimEnd(), after.trimEnd()].filter(Boolean).join(\"\\n\\n\") + \"\\n\";\n}\nfunction _appendTomlBlock(current, block) {\n const trimmed = current.trimEnd();\n if (!block)\n return trimmed ? `${trimmed}\\n` : \"\";\n return [trimmed, block.trimEnd()].filter(Boolean).join(\"\\n\\n\") + \"\\n\";\n}\nfunction _hasTopLevelTomlKey(text, key) {\n const tableIndex = _firstTomlTableIndex(text);\n const topLevel = tableIndex === -1 ? text : text.slice(0, tableIndex);\n return _findTopLevelTomlLine(topLevel, new RegExp(`^\\\\s*${_escapeRegExp(key)}\\\\s*=`, \"u\")) !== -1;\n}\nfunction _firstTomlTableIndex(text) {\n return _findTopLevelTomlLine(text, /^\\s*\\[\\[?[^\\]\\n]+\\]\\]?\\s*(?:#.*)?$/u);\n}\nfunction _findTopLevelTomlLine(text, pattern) {\n let lineStart = 0;\n let state = { arrayDepth: 0 };\n for (const line of text.split(/(?<=\\n)/u)) {\n if (!state.multilineQuote && state.arrayDepth === 0 && pattern.test(line.trimEnd()))\n return lineStart;\n state = _scanTomlLine(line, state);\n lineStart += line.length;\n }\n return -1;\n}\nfunction _scanTomlLine(line, state) {\n let arrayDepth = state.arrayDepth;\n let multilineQuote = state.multilineQuote;\n let quote;\n for (let i = 0; i < line.length; i += 1) {\n const triple = line.slice(i, i + 3);\n if (multilineQuote) {\n if (multilineQuote === \"\\\"\\\"\\\"\" && line[i] === \"\\\\\") {\n i += 1;\n continue;\n }\n if (triple === multilineQuote) {\n multilineQuote = undefined;\n i += 2;\n }\n continue;\n }\n const ch = line[i];\n if (quote) {\n if (quote === \"\\\"\" && ch === \"\\\\\")\n i += 1;\n else if (ch === quote)\n quote = undefined;\n continue;\n }\n if (triple === \"\\\"\\\"\\\"\" || triple === \"'''\") {\n multilineQuote = triple;\n i += 2;\n continue;\n }\n if (ch === \"\\\"\" || ch === \"'\") {\n quote = ch;\n continue;\n }\n if (ch === \"#\")\n break;\n if (ch === \"[\")\n arrayDepth += 1;\n else if (ch === \"]\" && arrayDepth > 0)\n arrayDepth -= 1;\n }\n return { arrayDepth, multilineQuote };\n}\nfunction _mergeClaudeHooks(existing, hooks) {\n const root = existing === undefined ? {} : existing;\n if (!root || typeof root !== \"object\" || Array.isArray(root))\n throw new Error(\"Claude settings hooks must be an object\");\n const result = { ...root };\n const preToolUse = result.PreToolUse === undefined ? [] : result.PreToolUse;\n if (!Array.isArray(preToolUse))\n throw new Error(\"Claude settings hooks.PreToolUse must be an array\");\n const merged = _dropLegacyClaudeHookCommands(preToolUse);\n for (const hook of hooks) {\n if (_hasCommandHook(merged, hook.command))\n continue;\n merged.push({ matcher: hook.matcher, hooks: [{ type: \"command\", command: hook.command }] });\n }\n result.PreToolUse = merged;\n return result;\n}\nfunction _dropLegacyClaudeHookCommands(entries) {\n const out = [];\n for (const entry of entries) {\n if (!entry || typeof entry !== \"object\" || Array.isArray(entry)) {\n out.push(entry);\n continue;\n }\n const originalHooks = entry.hooks;\n if (!Array.isArray(originalHooks)) {\n out.push(entry);\n continue;\n }\n const hooks = originalHooks.filter((hook) => {\n return !(hook && typeof hook === \"object\" && _isManagedClaudeHookCommand(String(hook.command ?? \"\")));\n });\n if (hooks.length === 0)\n continue;\n out.push({ ...entry, hooks });\n }\n return out;\n}\nfunction _isManagedClaudeHookCommand(command) {\n if (LEGACY_CLAUDE_HOOK_COMMANDS.has(command))\n return true;\n return [...MANAGED_CLAUDE_HOOK_BASENAMES].some((basename) => {\n return new RegExp(`[/\\\\\\\\]${_escapeRegExp(basename)}['\\\"]?\\\\s*$`, \"u\").test(command);\n });\n}\nfunction _hasCommandHook(entries, command) {\n return entries.some((entry) => {\n if (!entry || typeof entry !== \"object\")\n return false;\n const hooks = entry.hooks;\n return Array.isArray(hooks) && hooks.some((hook) => {\n return !!hook && typeof hook === \"object\" && hook.command === command;\n });\n });\n}\nasync function _readJsonObject(filePath) {\n const text = await _readTextIfExists(filePath);\n if (!text.trim())\n return {};\n const parsed = JSON.parse(text);\n if (!parsed || typeof parsed !== \"object\" || Array.isArray(parsed))\n throw new Error(`${filePath} must contain a JSON object`);\n return parsed;\n}\nfunction _jsonObject(value, label) {\n if (value === undefined)\n return {};\n if (!value || typeof value !== \"object\" || Array.isArray(value))\n throw new Error(`${label} must be an object`);\n return value;\n}\nasync function _writeManagedFile(filePath, content, executable) {\n const existing = await _readTextIfExists(filePath);\n if (existing && existing !== content && !existing.includes(MANAGED_MARKER) && !_matchesMarkerlessManagedContent(existing, content)) {\n throw new Error(`refusing to overwrite unmanaged file: ${filePath}`);\n }\n await mkdir(path.dirname(filePath), { recursive: true });\n await writeFile(filePath, content, { mode: executable ? 0o755 : 0o600 });\n if (executable)\n await chmod(filePath, 0o755);\n}\nfunction _matchesMarkerlessManagedContent(existing, content) {\n return existing === content.replace(/^.*sailorbridge-managed-agent-default.*\\n?/mu, \"\");\n}\nasync function _readTextIfExists(filePath) {\n try {\n await stat(filePath);\n }\n catch (error) {\n if (error.code === \"ENOENT\")\n return \"\";\n throw error;\n }\n return readFile(filePath, \"utf8\"); // intentional — inspect managed agent-home configuration\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 _shellSingleQuote(value) {\n return `'${value.replaceAll(\"'\", \"'\\\\''\")}'`;\n}\nfunction _runtimeEngine(value) {\n if (value !== \"claude\" && value !== \"codex\")\n throw new Error(\"agent runtime defaults engine must be claude or codex\");\n return value;\n}\nfunction _escapeRegExp(value) {\n return value.replace(/[.*+?^${}()|[\\]\\\\]/gu, \"\\\\$&\");\n}\n//# sourceMappingURL=agent-defaults.js.map",
|
|
58
58
|
"import { readFile } from \"node:fs/promises\"; // intentional — reads the host's own engine settings.json to mirror its auth env, not CLI text\nimport path from \"node:path\";\n// Reads a host Claude config dir's settings.json. Used both to detect env-based\n// auth (GLM/bigmodel via ANTHROPIC_AUTH_TOKEN etc.) and to flow that env into the\n// sandbox settings.json. A missing, blank, or malformed file yields empty results\n// — a user's own settings.json must never crash agent provisioning; a real IO\n// error (permissions) still surfaces.\nexport async function readHostClaudeSettings(claudeConfigDir) {\n const settings = await _readSettingsObject(path.join(claudeConfigDir, \"settings.json\"));\n return { env: _stringValues(settings.env), apiKeyHelper: _nonEmptyString(settings.apiKeyHelper) };\n}\nasync function _readSettingsObject(filePath) {\n let text;\n try {\n text = await readFile(filePath, \"utf8\"); // intentional — read the host's own engine config to mirror its auth env\n }\n catch (error) {\n if (error.code === \"ENOENT\")\n return {};\n throw error;\n }\n if (!text.trim())\n return {};\n try {\n const parsed = JSON.parse(text);\n if (!parsed || typeof parsed !== \"object\" || Array.isArray(parsed))\n return {};\n return parsed;\n }\n catch {\n return {}; // intentional — a malformed user settings.json must not block agent start\n }\n}\nfunction _stringValues(value) {\n if (!value || typeof value !== \"object\" || Array.isArray(value))\n return {};\n const out = {};\n for (const [key, item] of Object.entries(value)) {\n if (typeof item === \"string\")\n out[key] = item;\n }\n return out;\n}\nfunction _nonEmptyString(value) {\n return typeof value === \"string\" && value.trim() ? value : null;\n}\n//# sourceMappingURL=claude-settings.js.map",
|
|
59
59
|
"import { lstat, mkdir, readlink, realpath, stat, symlink, unlink } from \"node:fs/promises\";\nimport { homedir } from \"node:os\";\nimport path from \"node:path\";\nimport { readHostClaudeSettings } from \"./claude-settings.js\";\nimport { healDetachedCredential } from \"./credential-guardian.js\";\nexport class EngineNotLoggedInError extends Error {\n constructor(engine, authPath) {\n // The `engine-auth-missing[<engine>]` token is a cross-side contract: the\n // console classifies per-slot start failures on it (wizardFailureDetail in\n // apps/web teamWizardModel) to show the \"log in on the host\" guidance.\n super(`engine-auth-missing[${engine}]: ${_notLoggedInMessage(engine, authPath)}`);\n this.name = \"EngineNotLoggedInError\";\n }\n}\n// Provisions an engine's auth into the sandbox home. Auth is accepted in any valid\n// form (owner ruling 2026-07-22 — GLM/bigmodel users log in via env, not a\n// credential file): a credential file is symlinked (and returned so the runtime\n// guardian can watch it); env-based auth (settings.json `env`/apiKeyHelper, or a\n// host process env token) has no file to link and returns null; neither form\n// present fails fast. The token itself never touches this function's return value,\n// logs, or argv — env-based auth flows to the sandbox via settings.json/process env.\nexport async function provisionEngineAuth(options) {\n const env = options.hostEnv ?? process.env;\n const source = engineAuthSourcePath(options.engine, env);\n if (!(await _isReadableAuthFile(source))) {\n if (await _hasEnvBasedAuth(options.engine, env))\n return null;\n throw new EngineNotLoggedInError(options.engine, source);\n }\n const target = path.join(options.homeDir, engineAuthFileName(options.engine));\n const sharedTargetPath = await realpath(source);\n await mkdir(path.dirname(target), { recursive: true });\n await _ensureSymlink(target, source, sharedTargetPath);\n return { linkPath: target, sharedTargetPath };\n}\n// True when the engine has a usable env-based credential and therefore needs no\n// login file. claude: an ANTHROPIC_AUTH_TOKEN/ANTHROPIC_API_KEY (or apiKeyHelper)\n// in host settings.json `env`, or a token in the host process env. codex: an\n// OPENAI_API_KEY in the host process env (codex reads it natively; there is no\n// codex settings.json env block to mirror — config.toml provider `env_key`s only\n// name an env var, they do not carry the secret).\nasync function _hasEnvBasedAuth(engine, env) {\n if (engine === \"codex\")\n return _nonEmpty(env.OPENAI_API_KEY);\n if (_nonEmpty(env.ANTHROPIC_AUTH_TOKEN) || _nonEmpty(env.ANTHROPIC_API_KEY))\n return true;\n const settings = await readHostClaudeSettings(path.dirname(engineAuthSourcePath(\"claude\", env)));\n return _nonEmpty(settings.env.ANTHROPIC_AUTH_TOKEN) || _nonEmpty(settings.env.ANTHROPIC_API_KEY) || settings.apiKeyHelper !== null;\n}\nfunction _nonEmpty(value) {\n return typeof value === \"string\" && value.trim().length > 0;\n}\nfunction _notLoggedInMessage(engine, authPath) {\n if (engine === \"codex\") {\n return `engine is not authenticated: codex has no usable credential source. Provide either (1) auth.json at ${authPath} via codex login, or (2) OPENAI_API_KEY in the process environment.`;\n }\n const settingsPath = path.join(path.dirname(authPath), \"settings.json\");\n return `engine is not authenticated: claude has no usable credential source. Provide one of: (1) ${authPath} via claude login; `\n + `(2) ANTHROPIC_AUTH_TOKEN/ANTHROPIC_API_KEY or apiKeyHelper in ${settingsPath}; `\n + `(3) ANTHROPIC_AUTH_TOKEN/ANTHROPIC_API_KEY in the process environment.`;\n}\nexport function engineAuthSourcePath(engine, env = process.env) {\n const spec = _engineAuthSpec(engine, env);\n return path.join(spec.sourceDir, spec.fileName);\n}\nexport function engineAuthFileName(engine) {\n return _engineAuthSpec(engine, {}).fileName;\n}\nfunction _engineAuthSpec(engine, env) {\n const home = env.HOME?.trim() || homedir();\n if (engine === \"codex\") {\n return { sourceDir: env.CODEX_HOME?.trim() || path.join(home, \".codex\"), fileName: \"auth.json\" };\n }\n return { sourceDir: env.CLAUDE_CONFIG_DIR?.trim() || path.join(home, \".claude\"), fileName: \".credentials.json\" };\n}\nasync function _isReadableAuthFile(filePath) {\n try {\n return (await stat(filePath)).isFile();\n }\n catch (error) {\n if (error.code === \"ENOENT\")\n return false;\n throw error;\n }\n}\nasync function _ensureSymlink(linkPath, targetPath, sharedTargetPath) {\n let existing;\n try {\n existing = await lstat(linkPath);\n }\n catch (error) {\n if (error.code === \"ENOENT\") {\n await symlink(targetPath, linkPath);\n return;\n }\n throw error;\n }\n if (!existing.isSymbolicLink()) {\n if (!existing.isFile())\n throw new Error(`engine auth in sandbox must be a symlink: ${linkPath}`);\n // A token refresh atomically replaced the link with a real file while no\n // supervisor was watching. Heal instead of failing the boot — same direction\n // as the runtime guardian: the fresh token flows back into the shared file.\n await healDetachedCredential({ linkPath, linkTarget: targetPath, writeTarget: sharedTargetPath, detached: existing });\n return;\n }\n const current = await readlink(linkPath);\n const resolved = path.resolve(path.dirname(linkPath), current);\n if (resolved === path.resolve(targetPath))\n return;\n await unlink(linkPath);\n await symlink(targetPath, linkPath);\n}\n//# sourceMappingURL=engine-auth.js.map",
|
|
60
60
|
"// Claude Code statusLine renderer for SailorBridge pane context telemetry.\n//\n// The context autopilot lives in the engine listener and reads the context\n// percentage straight out of the tmux pane text\n// (engine/sailorbridge/protocol/context_telemetry.py — the consumer). Claude has\n// no native context indicator, so the pane only shows a parseable percentage\n// when Claude's statusLine command prints one. The engine ships that renderer as\n// engine/bin/libexec/sail-claude-context-statusline, but the standalone TS client\n// does not bundle the engine (packages/client/README.md), so a client-paired host\n// cannot rely on that binary being present.\n//\n// This is the byte-identical TS port Claude points at instead (via the\n// `sailorbridge host statusline` subcommand). It MUST stay output-compatible with\n// context_telemetry.py's DEFAULT_CONTEXT_PERCENT_PATTERNS[\"claude\"]\n// (`Context\\s+[█░]+\\s*(\\d+)%`); the round-trip contract test in\n// tests/context-statusline.test.ts guards that supplier↔consumer alignment.\nexport function renderClaudeContextStatusLine(payload) {\n const percent = _usedPercentage(payload);\n if (percent === null)\n return \"\";\n const rounded = Math.min(100, Math.max(0, Math.trunc(percent + 0.5)));\n return `Context ${_bar(rounded)} ${rounded}%`;\n}\n// Reads Claude's statusLine JSON from stdin and prints one status line. Mirrors\n// the engine script: unparseable input prints an empty line (never throws), so a\n// transient bad payload blanks the statusline instead of wedging the pane.\nexport async function runClaudeContextStatusLine(input, write) {\n let raw = \"\";\n for await (const chunk of input)\n raw += typeof chunk === \"string\" ? chunk : Buffer.from(chunk).toString(\"utf8\");\n let payload;\n try {\n payload = JSON.parse(raw);\n }\n catch {\n write(\"\\n\");\n return;\n }\n write(`${renderClaudeContextStatusLine(payload)}\\n`);\n}\nfunction _usedPercentage(payload) {\n if (!payload || typeof payload !== \"object\")\n return null;\n const window = payload.context_window;\n if (!window || typeof window !== \"object\")\n return null;\n const value = window.used_percentage;\n // Booleans are typeof \"boolean\", so the number guard already excludes them.\n if (typeof value !== \"number\" || !Number.isFinite(value) || value < 0 || value > 100)\n return null;\n return value;\n}\nfunction _bar(percent) {\n const filled = Math.min(10, Math.max(0, Math.trunc(percent / 10)));\n return \"█\".repeat(filled) + \"░\".repeat(10 - filled);\n}\n//# sourceMappingURL=context-statusline.js.map",
|
|
61
|
-
"import { createHash } from \"node:crypto\";\nimport { readdir, readFile, stat, writeFile } from \"node:fs/promises\"; // intentional — sweeper reads agent-owned memory files, not CLI text parameters\nimport path from \"node:path\";\nimport { agentSandboxHome, memoryStubFileName, RAG_MEMORY_STUB_BEGIN, RAG_MEMORY_STUB_END, RAG_MEMORY_STUB_MARKED, } from \"./memory-stub.js\";\nexport function createMemorySweepState() {\n return { completedFingerprints: new Map() };\n}\nexport async function sweepAgentMemory(options) {\n const captainId = _captainId(options.captainId);\n const engine = _memoryEngine(options.engine);\n const sandbox = agentSandboxHome(options.agentName, engine, options.env ?? process.env);\n const candidates = await _memoryCandidates(sandbox, engine, options);\n let ingested = 0;\n let skipped = 0;\n for (const candidate of candidates) {\n const changed = await _sweepCandidate(candidate, { ...options, captainId, engine });\n if (changed)\n ingested += 1;\n else\n skipped += 1;\n }\n return { scanned: candidates.length, ingested, skipped };\n}\nasync function _sweepCandidate(candidate, options) {\n const content = await (options.readFile ?? readFile)(candidate.filePath, \"utf8\"); // intentional — ingest an agent-owned memory spill\n const spill = _spillContent(content);\n if (spill.malformedStub) {\n options.logger?.(\"host_memory_spill_malformed_marker\", {\n agent_name: options.agentName,\n engine: options.engine,\n mode: options.mode ?? \"runtime\",\n path: candidate.relativePath,\n });\n return false;\n }\n if (!spill.text.trim())\n return false;\n const fingerprint = _fingerprint(candidate.filePath, spill.text, await (options.stat ?? stat)(candidate.filePath));\n if (options.state?.completedFingerprints.get(candidate.filePath) === fingerprint)\n return false;\n const response = await options.relay.ingestRagDocument(options.captainId, options.teamId, _ingestBody(candidate, options, spill.text));\n await _verifyCards(options.relay, options.captainId, options.teamId, response);\n // intentional — best-effort sweeps must not overwrite facts appended during the network round trip.\n // A fully atomic close requires writer cooperation or advisory locking, which local memory writers do not provide.\n const latestContent = await (options.readFile ?? readFile)(candidate.filePath, \"utf8\"); // intentional — recheck the spill before atomic slimming\n if (latestContent !== content) {\n options.logger?.(\"host_memory_spill_changed_before_slim\", {\n agent_name: options.agentName,\n engine: options.engine,\n mode: options.mode ?? \"runtime\",\n path: candidate.relativePath,\n cards: response.cards,\n });\n return true;\n }\n await (options.writeFile ?? writeFile)(candidate.filePath, RAG_MEMORY_STUB_MARKED, { mode: 0o600 });\n options.state?.completedFingerprints.set(candidate.filePath, fingerprint);\n options.logger?.(\"host_memory_spill_ingested\", {\n agent_name: options.agentName,\n engine: options.engine,\n mode: options.mode ?? \"runtime\",\n path: candidate.relativePath,\n cards: response.cards,\n });\n return true;\n}\nasync function _memoryCandidates(sandbox, engine, deps) {\n const canonical = path.join(sandbox, memoryStubFileName(engine));\n const candidates = await _fileExists(canonical, deps) ? [_candidate(sandbox, canonical)] : [];\n const projectRoot = path.join(sandbox, \"projects\");\n for (const filePath of await _walkMemoryFiles(projectRoot, deps)) {\n if (filePath !== canonical)\n candidates.push(_candidate(sandbox, filePath));\n }\n return candidates;\n}\nasync function _walkMemoryFiles(root, deps) {\n if (!await _dirExists(root, deps))\n return [];\n const out = [];\n for (const entry of await (deps.readdir ?? readdir)(root, { withFileTypes: true })) {\n const filePath = path.join(root, entry.name);\n if (entry.isDirectory())\n out.push(...await _walkMemoryFiles(filePath, deps));\n if (entry.isFile() && path.basename(filePath) === \"MEMORY.md\" && path.basename(path.dirname(filePath)) === \"memory\") {\n out.push(filePath);\n }\n }\n return out;\n}\nfunction _spillContent(content) {\n const start = content.indexOf(RAG_MEMORY_STUB_BEGIN);\n const stop = content.indexOf(RAG_MEMORY_STUB_END);\n if (start < 0 && stop < 0)\n return { text: content, malformedStub: false };\n if (start < 0 || stop < start)\n return { text: \"\", malformedStub: true };\n return {\n text: _joinSpillParts(content.slice(0, start), content.slice(stop + RAG_MEMORY_STUB_END.length)),\n malformedStub: false,\n };\n}\nfunction _joinSpillParts(beforeStub, afterStub) {\n const before = beforeStub.trim();\n const after = afterStub.trim();\n if (!before)\n return after ? `${after}\\n` : \"\";\n if (!after)\n return `${before}\\n`;\n return `${before}\\n${after}\\n`;\n}\nfunction _ingestBody(candidate, options, text) {\n return {\n name: `agent-memory/${options.agentName}/${options.engine}/${candidate.relativePath}`,\n text,\n type: \"memory\",\n max_chars: 800,\n citation: { agent: options.agentName, engine: options.engine, file: candidate.relativePath },\n };\n}\nasync function _verifyCards(relay, captainId, teamId, response) {\n if (response.cards < 1)\n throw new Error(\"RAG ingest returned no cards for non-empty memory spill\");\n const cards = [];\n for (let index = 0; index < response.cards; index += 1) {\n cards.push(await relay.getRagCurrentCard(captainId, teamId, `${response.doc_id}#${String(index).padStart(2, \"0\")}`));\n }\n return cards;\n}\nfunction _candidate(sandbox, filePath) {\n return { filePath, relativePath: path.relative(sandbox, filePath).split(path.sep).join(\"/\") };\n}\nfunction _fingerprint(filePath, content, stats) {\n const digest = createHash(\"sha256\").update(content).digest(\"hex\");\n return `${filePath}:${stats.size}:${stats.mtimeMs}:${digest}`;\n}\nasync function _fileExists(filePath, deps) {\n try {\n return (await (deps.stat ?? stat)(filePath)).isFile();\n }\n catch (error) {\n if (_notFound(error))\n return false;\n throw error;\n }\n}\nasync function _dirExists(filePath, deps) {\n try {\n return (await (deps.stat ?? stat)(filePath)).isDirectory();\n }\n catch (error) {\n if (_notFound(error))\n return false;\n throw error;\n }\n}\nfunction _captainId(value) {\n if (value?.trim())\n return value.trim();\n throw new Error(\"memory sweep requires descriptor captain_id\");\n}\nfunction _memoryEngine(value) {\n if (value === \"claude\" || value === \"codex\")\n return value;\n throw new Error(\"memory sweep engine must be claude or codex\");\n}\nfunction _notFound(error) {\n return Boolean(error && typeof error === \"object\" && \"code\" in error && error.code === \"ENOENT\");\n}\n//# sourceMappingURL=memory-sweeper.js.map",
|
|
62
61
|
"import { execFile } from \"node:child_process\";\nimport { lstat, readdir, realpath, unlink } from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { promisify } from \"node:util\";\nconst execFileAsync = promisify(execFile);\n// Periodic scratch reaper for a managed workspace's `<root>/.agent/tmp/` (repo-gitignored).\n// Mirrors the engine mailbox `gc_consumed` two-dimension policy: drop files older than\n// maxAge, then evict oldest-first until the directory total is under the byte cap. Only\n// git-untracked, in-bounds, non-followed entries are eligible — every escape is skipped\n// and logged, never silently deleted.\n// Posix pathspec/subpath — the product client runs on Linux/macOS only.\nexport const SCRATCH_SUBDIR = \".agent/tmp\";\nexport const SCRATCH_SWEEP_MAX_AGE_MS = 7 * 24 * 60 * 60 * 1000;\nexport const SCRATCH_SWEEP_MAX_BYTES = 512 * 1024 * 1024;\nconst EMPTY = { scanned: 0, removed: 0, bytes: 0 };\n// Default-on: only an explicit off value disables the sweep.\nexport function scratchSweepEnabled(env) {\n const raw = env.SAILORBRIDGE_SCRATCH_SWEEP_ENABLED?.trim().toLowerCase();\n if (!raw)\n return true;\n return raw !== \"0\" && raw !== \"false\" && raw !== \"no\" && raw !== \"off\";\n}\nexport async function sweepWorkspaceScratch(options) {\n const root = path.resolve(options.workspaceRoot);\n const tmpDir = path.join(root, SCRATCH_SUBDIR);\n const state = await _tmpDirState(root, tmpDir);\n if (state === \"missing\")\n return EMPTY;\n if (state === \"unsafe\") {\n options.logger?.(\"host_scratch_sweep_out_of_bounds\", { workspace: root, path: tmpDir });\n return EMPTY;\n }\n const tracked = await _trackedScratchFiles(root, options);\n if (tracked === null)\n return EMPTY; // git failure already logged; skip this workspace\n const candidates = await _collectScratchFiles(tmpDir, root, options.logger);\n const result = await _reap(candidates, tracked, options);\n if (result.removed > 0) {\n options.logger?.(\"host_scratch_sweep_reaped\", { workspace: root, removed: result.removed, bytes: result.bytes });\n }\n return result;\n}\n// \"missing\" = no-op; \"unsafe\" = symlinked/escaping tmp we must never follow; \"ready\" = real in-bounds dir.\nasync function _tmpDirState(root, tmpDir) {\n let info;\n try {\n info = await lstat(tmpDir);\n }\n catch (error) {\n if (_isEnoent(error))\n return \"missing\";\n throw error;\n }\n if (info.isSymbolicLink() || !info.isDirectory())\n return \"unsafe\";\n // Compare canonical paths so a symlinked parent (e.g. macOS /var -> /private/var) is not\n // mistaken for an escape, while a genuinely out-of-root target still fails containment.\n return _within(await realpath(root), await realpath(tmpDir)) ? \"ready\" : \"unsafe\";\n}\nasync function _trackedScratchFiles(root, options) {\n const git = options.git ?? _runGit;\n try {\n const stdout = await git(root, [\"ls-files\", \"-z\", \"--\", SCRATCH_SUBDIR]);\n const tracked = new Set();\n for (const rel of stdout.split(\"\\0\"))\n if (rel)\n tracked.add(path.join(root, rel));\n return tracked;\n }\n catch (error) {\n options.logger?.(\"host_scratch_sweep_git_failed\", { workspace: root, error: _errno(error) });\n return null;\n }\n}\nasync function _collectScratchFiles(dir, root, logger) {\n const out = [];\n for (const entry of await readdir(dir, { withFileTypes: true })) {\n const abs = path.join(dir, entry.name);\n if (!_within(root, abs)) {\n logger?.(\"host_scratch_sweep_out_of_bounds\", { workspace: root, path: abs });\n continue;\n }\n // isDirectory() is false for symlinked dirs (withFileTypes reports the link) — so we\n // recurse only into real dirs and treat any symlink as a deletable leaf (unlink drops\n // the link, never the target).\n if (entry.isDirectory())\n out.push(...await _collectScratchFiles(abs, root, logger));\n else if (entry.isFile() || entry.isSymbolicLink())\n out.push(await _leaf(abs));\n }\n return out;\n}\nasync function _leaf(abs) {\n const info = await lstat(abs);\n return { path: abs, mtimeMs: info.mtimeMs, size: info.size };\n}\nasync function _reap(candidates, tracked, options) {\n const cutoff = (options.now ?? Date.now)() - (options.maxAgeMs ?? SCRATCH_SWEEP_MAX_AGE_MS);\n const sweepable = candidates.filter((file) => !tracked.has(file.path));\n const aged = await _removeAll(sweepable.filter((file) => file.mtimeMs < cutoff), options.logger);\n const evicted = await _evictOverCap(sweepable.filter((file) => file.mtimeMs >= cutoff), options);\n return { scanned: candidates.length, removed: aged.removed + evicted.removed, bytes: aged.bytes + evicted.bytes };\n}\nasync function _removeAll(files, logger) {\n let removed = 0;\n let bytes = 0;\n for (const file of files) {\n if (await _remove(file, logger)) {\n removed += 1;\n bytes += file.size;\n }\n }\n return { removed, bytes };\n}\nasync function _evictOverCap(survivors, options) {\n const maxBytes = options.maxBytes ?? SCRATCH_SWEEP_MAX_BYTES;\n let total = survivors.reduce((sum, file) => sum + file.size, 0);\n let removed = 0;\n let bytes = 0;\n for (const file of [...survivors].sort((a, b) => a.mtimeMs - b.mtimeMs)) {\n if (total <= maxBytes)\n break;\n if (await _remove(file, options.logger)) {\n removed += 1;\n bytes += file.size;\n total -= file.size;\n }\n }\n return { removed, bytes };\n}\nasync function _remove(file, logger) {\n try {\n await unlink(file.path);\n return true;\n }\n catch (error) {\n if (_isEnoent(error))\n return false; // already gone — idempotent, leave uncounted\n logger?.(\"host_scratch_sweep_unlink_failed\", { path: file.path, errno: _errno(error) });\n return false; // keep for next round, never swallow\n }\n}\nasync function _runGit(root, args) {\n const { stdout } = await execFileAsync(\"git\", [\"-C\", root, ...args], { encoding: \"utf8\", maxBuffer: 64 * 1024 * 1024 });\n return String(stdout);\n}\nfunction _within(root, target) {\n const rel = path.relative(root, target);\n return rel === \"\" || (!rel.startsWith(\"..\") && !path.isAbsolute(rel));\n}\nfunction _isEnoent(error) {\n return Boolean(error && typeof error === \"object\" && \"code\" in error && error.code === \"ENOENT\");\n}\nfunction _errno(error) {\n if (error && typeof error === \"object\" && \"code\" in error)\n return String(error.code);\n return error instanceof Error ? error.message : String(error);\n}\n//# sourceMappingURL=scratch-sweeper.js.map",
|
|
63
|
-
"import { TmuxClient } from \"../driver/index.js\";\nimport { RelayClient } from \"../relay/index.js\";\nimport { AgentSupervisorRuntime, createStdioPrompt, deriveTmuxSession, ensureTmuxTransport, resolveTransport, } from \"../supervisor/index.js\";\nimport { materializeAgentRuntimeEnv } from \"./runtime-env.js\";\nimport { materializeAgentRuntimeDefaults } from \"./agent-defaults.js\";\nimport { parseAgentStartSpec } from \"./start-spec.js\";\nimport { defaultWorkspaceRoot, prepareWorkspace } from \"./workspace.js\";\nimport { CLIENT_BUILD_DIRTY, CLIENT_GIT_SHA, CLIENT_VERSION } from \"../version.js\";\nconst MAX_TMUX_SESSION_SUFFIX = 100;\nexport async function launchSupervisedAgent(input, deps = {}) {\n const spec = parseAgentStartSpec(input.spec);\n const logger = input.logger ?? (() => { });\n const { env, credentialGuard } = await materializeAgentRuntimeEnv({\n agentName: input.descriptor.agent_name,\n engine: spec.engine,\n hostEnv: input.hostEnv ?? process.env,\n descriptor: input.descriptor,\n specEnv: spec.env,\n });\n const cwd = await (deps.prepareWorkspaceFn ?? prepareWorkspace)({\n workspace: spec.workspace,\n captainId: input.captainId,\n agentName: input.descriptor.agent_name,\n root: input.workspaceRoot ?? defaultWorkspaceRoot(input.hostEnv ?? process.env),\n spawnFn: deps.spawnFn,\n logger,\n });\n await _trustPreparedWorkspace(input.descriptor.agent_name, spec.engine, env, cwd);\n const resolved = await _resolveTransport(spec, input.descriptor, cwd, logger, deps.ensureTmuxTransportFn, deps.tmuxSessionExistsFn, input.recoveryTmuxSession);\n
|
|
64
|
-
"import { mkdtempSync, rmSync } from \"node:fs\";\nimport { tmpdir } from \"node:os\";\nimport path from \"node:path\";\nimport { spawn } from \"node:child_process\";\nimport { gitRemoteRequiresGitHubAuth, isAcceptedTeamGitRemote } from \"./git-remote.js\";\nconst COMMAND_TIMEOUT_MS = 30_000;\nexport async function verifyTeamRepository(gitRepoUrl, hostId, deps = {}) {\n const command = deps.runCommand ?? runCommand;\n const commandOutput = deps.runCommandOutput ?? runCommandOutput;\n const trimmed = gitRepoUrl.trim();\n if (!isAcceptedTeamGitRemote(trimmed))\n throw new Error(\"git repository URL is not accepted by SailorBridge hardening rules\");\n if (gitRemoteRequiresGitHubAuth(trimmed)) {\n await command([\"gh\", \"auth\", \"status\"], process.cwd(), \"gh auth status failed; install and authenticate GitHub CLI on the Moderator host\");\n }\n const readProbe = await commandOutput([\"git\", \"ls-remote\", \"--symref\", trimmed, \"HEAD\"], process.cwd(), \"git read probe failed\");\n const mainRef = _defaultBranchFromSymrefProbe(readProbe);\n const temp = mkdtempSync(path.join(tmpdir(), \"sailorbridge-repo-verify-\"));\n try {\n await command([\"git\", \"init\"], temp, \"git init failed for write probe\");\n await command([\"git\", \"config\", \"user.email\", \"sailorbridge-verify@example.invalid\"], temp, \"git config failed for write probe\");\n await command([\"git\", \"config\", \"user.name\", \"SailorBridge Verify\"], temp, \"git config failed for write probe\");\n await command([\"git\", \"commit\", \"--allow-empty\", \"-m\", \"sailorbridge verify\"], temp, \"git commit failed for write probe\");\n await command([\"git\", \"push\", \"--dry-run\", trimmed, \"HEAD:refs/heads/sailorbridge-verify\"], temp, \"git write probe failed\");\n }\n finally {\n rmSync(temp, { recursive: true, force: true });\n }\n return {\n verified: true,\n reason: \"git read and dry-run write probes succeeded\",\n verified_at: (deps.now ?? (() => new Date()))().toISOString(),\n verification_host_id: hostId,\n ...(mainRef ? { main_ref: mainRef } : {}),\n };\n}\n// `ls-remote --symref <url> HEAD` answers `ref: refs/heads/<branch>\\tHEAD` when\n// the remote advertises a default branch; an empty/unborn HEAD yields no line.\nfunction _defaultBranchFromSymrefProbe(output) {\n const match = /^ref:\\s+refs\\/heads\\/(\\S+)\\s+HEAD$/mu.exec(output);\n return match ? match[1] : null;\n}\nasync function runCommand(argv, cwd, failurePrefix) {\n await runCommandOutput(argv, cwd, failurePrefix);\n}\nasync function runCommandOutput(argv, cwd, failurePrefix) {\n const result = await execArgv(argv, cwd);\n if (result.exitCode === 0)\n return result.stdout;\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}\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-verification.js.map",
|
|
62
|
+
"import { TmuxClient } from \"../driver/index.js\";\nimport { RelayClient } from \"../relay/index.js\";\nimport { AgentSupervisorRuntime, createStdioPrompt, deriveTmuxSession, ensureTmuxTransport, resolveTransport, } from \"../supervisor/index.js\";\nimport { resolveTeamMemoryEntitlement } from \"./memory-stub.js\";\nimport { materializeAgentRuntimeEnv } from \"./runtime-env.js\";\nimport { materializeAgentRuntimeDefaults } from \"./agent-defaults.js\";\nimport { parseAgentStartSpec } from \"./start-spec.js\";\nimport { defaultWorkspaceRoot, prepareWorkspace } from \"./workspace.js\";\nimport { CLIENT_BUILD_DIRTY, CLIENT_GIT_SHA, CLIENT_VERSION } from \"../version.js\";\nconst MAX_TMUX_SESSION_SUFFIX = 100;\nexport async function launchSupervisedAgent(input, deps = {}) {\n const spec = parseAgentStartSpec(input.spec);\n const logger = input.logger ?? (() => { });\n // The supervisor speaks to the relay AS THE AGENT (mailbox routes are agent-bound),\n // so it gets a client built from the redeemed enrollment, never the host key.\n const relay = new RelayClient({\n relayUrl: input.descriptor.relay_url,\n bearerToken: input.descriptor.token,\n ...(deps.fetchImpl ? { fetchImpl: deps.fetchImpl } : {}),\n });\n const { env, credentialGuard } = await materializeAgentRuntimeEnv({\n agentName: input.descriptor.agent_name,\n engine: spec.engine,\n hostEnv: input.hostEnv ?? process.env,\n descriptor: input.descriptor,\n teamMemoryEntitled: await (deps.resolveTeamMemoryEntitlementFn ?? resolveTeamMemoryEntitlement)(relay, input.captainId, input.descriptor.session),\n specEnv: spec.env,\n });\n const cwd = await (deps.prepareWorkspaceFn ?? prepareWorkspace)({\n workspace: spec.workspace,\n captainId: input.captainId,\n agentName: input.descriptor.agent_name,\n root: input.workspaceRoot ?? defaultWorkspaceRoot(input.hostEnv ?? process.env),\n spawnFn: deps.spawnFn,\n logger,\n });\n await _trustPreparedWorkspace(input.descriptor.agent_name, spec.engine, env, cwd);\n const resolved = await _resolveTransport(spec, input.descriptor, cwd, logger, deps.ensureTmuxTransportFn, deps.tmuxSessionExistsFn, input.recoveryTmuxSession);\n const runtime = (deps.createRuntime ?? ((options) => new AgentSupervisorRuntime(options)))({\n agentName: input.descriptor.agent_name,\n displayName: input.descriptor.agent_name,\n cli: resolved.cli,\n transport: resolved.transport,\n tmuxSession: resolved.tmuxSession,\n session: input.descriptor.session,\n driver: resolved.createDriver(),\n relay,\n captainId: input.descriptor.captain_id,\n ...(credentialGuard ? { credentialGuard } : {}), // null for env-based auth — no credential file to guard\n model: _configuredModel(spec),\n startOptions: { agentId: input.descriptor.agent_name, cwd, env, command: resolved.command },\n restartCommand: spec.restartCommand,\n logger,\n ...(input.onRetired ? { onRetired: input.onRetired } : {}),\n });\n await runtime.start();\n logger(\"agent_supervise_started\", {\n agent: input.descriptor.agent_name,\n cwd,\n transport: resolved.transport,\n client_version: CLIENT_VERSION,\n client_git_sha: CLIENT_GIT_SHA,\n client_build_dirty: CLIENT_BUILD_DIRTY,\n });\n return runtime;\n}\nfunction _configuredModel(spec) {\n return spec.engine === \"claude\" ? spec.driverOptions?.claude?.model : spec.driverOptions?.codex?.model;\n}\nasync function _trustPreparedWorkspace(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}\nasync function _resolveTransport(spec, descriptor, cwd, logger, ensureTmuxTransportFn = ensureTmuxTransport, tmuxSessionExistsFn = _tmuxSessionExists, recoveryTmuxSession) {\n // restart_command is relay/listener metadata for later tmux relaunches. Host\n // start only executes spec.command[], so metadata is never promoted to argv.\n const tmuxSessionName = _tmuxSessionNameOptions(descriptor, spec);\n const options = {\n cli: spec.engine,\n cwd,\n transport: spec.transport,\n command: spec.command,\n agentName: descriptor.agent_name,\n tmuxSessionName,\n ...(recoveryTmuxSession ? { tmuxSession: recoveryTmuxSession } : {}),\n driverOptions: recoveryTmuxSession\n ? { ...spec.driverOptions, tmux: { ...spec.driverOptions?.tmux, rebuildExistingSession: true } }\n : spec.driverOptions,\n };\n const resolved = resolveTransport(options);\n if (resolved.transport !== \"tmux\")\n return resolved;\n await ensureTmuxTransportFn({\n explicit: spec.transport === \"tmux\",\n platform: process.platform,\n io: createStdioPrompt(),\n log: logger,\n });\n return recoveryTmuxSession ? resolved : await _resolveTmuxSessionCollision(options, resolved, tmuxSessionExistsFn, logger);\n}\nfunction _tmuxSessionNameOptions(descriptor, spec) {\n return {\n team: descriptor.session,\n role: descriptor.role || spec.role,\n captainNumber: descriptor.captain_id,\n agentName: descriptor.agent_name,\n };\n}\nasync function _resolveTmuxSessionCollision(options, resolved, tmuxSessionExistsFn, logger) {\n const defaultSession = deriveTmuxSession(options.tmuxSessionName ?? {});\n if (!defaultSession || resolved.tmuxSession !== defaultSession || !await _tmuxSessionExistsOrFail(defaultSession, tmuxSessionExistsFn, logger))\n return resolved;\n // Existing sessions are left running; only the new launch target is disambiguated.\n logger(\"tmux_session_collision\", { session: defaultSession, decision: \"captain\" });\n const captainResolved = resolveTransport({ ...options, tmuxSessionName: { ...options.tmuxSessionName, includeCaptainNumber: true } });\n if (captainResolved.tmuxSession && !await _tmuxSessionExistsOrFail(captainResolved.tmuxSession, tmuxSessionExistsFn, logger))\n return captainResolved;\n const agentResolved = resolveTransport({ ...options, tmuxSessionName: { ...options.tmuxSessionName, includeCaptainNumber: true, includeAgentName: true } });\n if (!agentResolved.tmuxSession)\n throw new Error(\"tmux session collision cannot be disambiguated without an agent name\");\n return await _resolveTmuxSessionSuffix(options, agentResolved, tmuxSessionExistsFn, logger);\n}\nasync function _resolveTmuxSessionSuffix(options, agentResolved, tmuxSessionExistsFn, logger) {\n const baseSession = agentResolved.tmuxSession;\n if (!await _tmuxSessionExistsOrFail(baseSession, tmuxSessionExistsFn, logger)) {\n logger(\"tmux_session_collision\", { session: baseSession, decision: \"agent\" });\n return agentResolved;\n }\n for (let suffix = 1; suffix <= MAX_TMUX_SESSION_SUFFIX; suffix += 1) {\n const session = `${baseSession}-${suffix}`;\n if (await _tmuxSessionExistsOrFail(session, tmuxSessionExistsFn, logger))\n continue;\n logger(\"tmux_session_collision\", { session, decision: \"suffix\", suffix });\n return resolveTransport({ ...options, tmuxSession: session });\n }\n logger(\"tmux_session_collision\", { session: baseSession, decision: \"suffix_exhausted\", maxSuffix: MAX_TMUX_SESSION_SUFFIX });\n throw new Error(`tmux session collision: ${baseSession}-1 through ${baseSession}-${MAX_TMUX_SESSION_SUFFIX} are occupied`);\n}\nasync function _tmuxSessionExistsOrFail(session, tmuxSessionExistsFn, logger) {\n try {\n return await tmuxSessionExistsFn(session);\n }\n catch (error) {\n logger(\"tmux_session_collision\", { session, decision: \"hard_fail\", error: error instanceof Error ? error.message : String(error) });\n throw error;\n }\n}\nasync function _tmuxSessionExists(session) {\n try {\n return await new TmuxClient().hasSession(session);\n }\n catch (error) {\n if (error instanceof Error && error.message.includes(\"tmux not found\"))\n return false;\n throw error;\n }\n}\n//# sourceMappingURL=launcher.js.map",
|
|
65
63
|
"import { accessSync, constants, mkdirSync, mkdtempSync, readFileSync, rmSync, writeFileSync } from \"node:fs\"; // intentional — capability probes read kernel and OS metadata, not CLI text parameters\nimport os from \"node:os\";\nimport path from \"node:path\";\nimport { spawnSync } from \"node:child_process\";\nimport { CLIENT_VERSION_LABEL } from \"../version.js\";\n// mirrors the Python worker's advertised tool tags. Containers use Podman only\n// (repo policy); the docker binary is never advertised.\nconst TOOLS = [\"podman\", \"git\", \"kubectl\", \"perf\", \"bpftrace\"];\nconst GPU_TAGS = new Set([\"intel-b60\", \"nvidia-h100\", \"none\"]);\nexport function probeCapabilities(workerName, workdir, maxConcurrency, extraTags) {\n const mode = (process.env.SAILORBRIDGE_MODE?.trim() || \"default\");\n const rootfsReadonly = !canWrite(\"/\");\n const workdirReadonly = isReadonly(workdir);\n const effectiveUid = process.geteuid?.() ?? 0;\n return {\n name: workerName,\n host: os.hostname(),\n capabilities: capabilityTags(mode, extraTags),\n max_concurrency: maxConcurrency ?? maxConcurrencyFromEnv(),\n version: packageVersion(),\n mode_requested: mode,\n mode_enforced: mode === \"readonly\" ? rootfsReadonly && workdirReadonly && effectiveUid !== 0 : true,\n rootfs_readonly: rootfsReadonly,\n workdir_readonly: workdirReadonly,\n effective_uid: effectiveUid,\n caps: [\"cap=stream\", \"cap=status\", ...linuxCapabilities()],\n };\n}\nfunction maxConcurrencyFromEnv() {\n return parsePositiveInteger(process.env.SAILORBRIDGE_MAX_CONCURRENCY ?? \"1\", \"SAILORBRIDGE_MAX_CONCURRENCY\");\n}\nexport function validateMaxConcurrency(value) {\n if (!Number.isInteger(value) || value < 1)\n throw new Error(\"max concurrency must be a positive integer\");\n return value;\n}\nexport function parsePositiveInteger(value, label) {\n const trimmed = value.trim();\n // intentional - reject signs, decimals, and coercions instead of accepting\n // JavaScript/Python numeric conveniences for a runtime concurrency setting.\n if (!/^[0-9]+$/u.test(trimmed))\n throw new Error(`${label} must be a positive integer`);\n const parsed = Number(trimmed);\n if (!Number.isSafeInteger(parsed) || parsed < 1)\n throw new Error(`${label} must be a positive integer`);\n return parsed;\n}\nfunction capabilityTags(mode, extraTags) {\n const tags = [`os=${osName()}`, `kernel=${os.release()}`, `arch=${os.machine()}`, `gpu=${gpuTag()}`, `mode=${mode}`];\n const role = process.env.SAILORBRIDGE_ROLE?.trim();\n if (role)\n tags.push(`role=${role}`);\n for (const tool of TOOLS)\n if (commandExists(tool))\n tags.push(`tool=${tool}`);\n tags.push(...(process.env.SAILORBRIDGE_TAGS ?? \"\").split(\",\").map((tag) => tag.trim()).filter(Boolean));\n // Per-worker tags supplied by the caller (host daemon path) — appended after\n // env/host tags so a console-created worker advertises exactly its tag set.\n if (extraTags)\n tags.push(...extraTags.map((tag) => tag.trim()).filter(Boolean));\n return tags;\n}\nexport function osName() {\n const values = osReleaseValues();\n const id = values.ID ?? os.platform();\n return values.VERSION_ID ? `${id}-${values.VERSION_ID}` : id;\n}\nfunction packageVersion() {\n // intentional - TS worker registration reports the exact stamped client build;\n // the legacy Python worker keeps its own independent pre-release version.\n return CLIENT_VERSION_LABEL;\n}\nfunction gpuTag() {\n const override = process.env.SAILORBRIDGE_GPU_TAG?.trim().toLowerCase() ?? \"\";\n if (GPU_TAGS.has(override))\n return override;\n if (commandStdout([\"nvidia-smi\", \"--query-gpu=name\", \"--format=csv,noheader\"]).toLowerCase().includes(\"h100\"))\n return \"nvidia-h100\";\n const lspci = commandStdout([\"lspci\"]).toLowerCase();\n return lspci.includes(\"intel\") && lspci.includes(\"b60\") ? \"intel-b60\" : \"none\";\n}\nfunction linuxCapabilities() {\n const caps = [];\n try {\n const line = readFileSync(\"/proc/self/status\", \"utf8\").split(/\\r?\\n/u).find((item) => item.startsWith(\"CapEff:\")); // intentional — inspect kernel capability telemetry\n if (line)\n caps.push(`cap_eff=${line.split(\":\", 2)[1].trim()}`);\n }\n catch { }\n const getcap = commandPath(\"getcap\");\n if (getcap) {\n const output = commandStdout([getcap, \"/proc/self/exe\"]).trim();\n if (output)\n caps.push(output);\n }\n return caps;\n}\nfunction osReleaseValues() {\n try {\n return Object.fromEntries(readFileSync(\"/etc/os-release\", \"utf8\").split(/\\r?\\n/u).flatMap(parseOsReleaseLine)); // intentional — inspect OS metadata for capability reporting\n }\n catch {\n return {};\n }\n}\nfunction parseOsReleaseLine(line) {\n const index = line.indexOf(\"=\");\n if (index < 0)\n return [];\n return [[line.slice(0, index), line.slice(index + 1).replace(/^\"|\"$/gu, \"\")]];\n}\nfunction isReadonly(dir) {\n try {\n const root = path.resolve(dir);\n mkdirSync(root, { recursive: true });\n const temp = mkdtempSync(path.join(root, \".sailorbridge-write-test-\"));\n writeFileSync(path.join(temp, \"probe\"), \"\");\n rmSync(temp, { recursive: true, force: true });\n return false;\n }\n catch {\n return true;\n }\n}\nfunction canWrite(target) {\n try {\n accessSync(target, constants.W_OK);\n return true;\n }\n catch {\n return false;\n }\n}\nfunction commandStdout(argv) {\n if (!commandExists(argv[0]))\n return \"\";\n const proc = spawnSync(argv[0], argv.slice(1), { encoding: \"utf8\", timeout: 2000 });\n return proc.stdout || \"\";\n}\nfunction commandExists(command) {\n return commandPath(command) !== null;\n}\nfunction commandPath(command) {\n if (command.includes(path.sep))\n return command;\n for (const entry of (process.env.PATH ?? \"\").split(path.delimiter)) {\n const candidate = path.join(entry, command);\n try {\n accessSync(candidate, constants.X_OK);\n return candidate;\n }\n catch { }\n }\n return null;\n}\n//# sourceMappingURL=capability.js.map",
|
|
66
64
|
"// Typed parser for a `worker_start` request's `spec` bag. The relay stores the\n// spec as free-form JSON (same table as agent_start_requests); the host consumer\n// validates it into a typed shape before it starts a worker, failing fast on\n// anything malformed rather than launching a half-specified worker. The wire\n// shape is snake_case to match relay/console JSON conventions. The worker's name\n// is NOT read from here — it is owned by the redeemed worker enrollment\n// descriptor (descriptor.agent_name), exactly as the agent path takes its name\n// from the descriptor, never from caller-supplied spec.\nimport { parsePositiveInteger, validateMaxConcurrency } from \"../worker/capability.js\";\nconst MAX_TAGS = 32;\nconst TAG_PATTERN = /^[a-z0-9][a-z0-9=._:/-]{0,63}$/iu;\n// Keys the worker probes itself (capability.ts). Console-supplied tags share the\n// same `capabilities` namespace the relay selector matches on, so a forged\n// `gpu=…`/`mode=…`/`role=…` could steer scheduling — reject these reserved keys.\nconst RESERVED_TAG_KEYS = new Set([\"os\", \"kernel\", \"arch\", \"gpu\", \"mode\", \"role\", \"tool\"]);\nexport function parseWorkerStartSpec(raw) {\n const spec = _asObject(raw, \"spec\");\n return {\n workdir: _workdir(spec.workdir),\n maxConcurrency: _maxConcurrency(spec.max_concurrency),\n tags: _tags(spec.tags),\n };\n}\nfunction _workdir(value) {\n const workdir = _trimmed(value, \"spec.workdir\");\n if (workdir.includes(\"\\0\"))\n throw new Error(\"spec.workdir must not contain a null byte\");\n return workdir;\n}\nfunction _maxConcurrency(value) {\n if (value === undefined || value === null)\n throw new Error(\"spec.max_concurrency is required\");\n if (typeof value === \"number\")\n return validateMaxConcurrency(value);\n if (typeof value === \"string\")\n return parsePositiveInteger(value, \"spec.max_concurrency\");\n throw new Error(\"spec.max_concurrency must be a positive integer\");\n}\nfunction _tags(value) {\n if (value === undefined || value === null)\n return [];\n if (!Array.isArray(value))\n throw new Error(\"spec.tags must be an array of strings\");\n if (value.length > MAX_TAGS)\n throw new Error(`spec.tags may not exceed ${MAX_TAGS} entries`);\n return value.map(_tag);\n}\nfunction _tag(value, index) {\n const tag = _trimmed(value, `spec.tags[${index}]`);\n if (!TAG_PATTERN.test(tag))\n throw new Error(`spec.tags[${index}] is not a valid tag: ${tag}`);\n const eq = tag.indexOf(\"=\");\n if (eq > 0 && RESERVED_TAG_KEYS.has(tag.slice(0, eq).toLowerCase())) {\n throw new Error(`spec.tags[${index}] uses a reserved capability key: ${tag.slice(0, eq)}`);\n }\n return tag;\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=worker-start-spec.js.map",
|
|
67
65
|
"import { statSync } from \"node:fs\"; // intentional — the workdir existence guard is a runtime fs check, not a CLI text parameter\nimport os from \"node:os\";\nimport path from \"node:path\";\nimport { runForever } from \"../worker/index.js\";\n// Bound on how long a worker_start waits for the worker's first registration.\n// Without it a relay that accepts the connection but never completes register\n// (or is unreachable and only fails after a long retry ladder) would hang the\n// daemon's single-threaded starter indefinitely, stalling every later request.\nconst DEFAULT_WORKER_READY_TIMEOUT_MS = 60_000;\n// No engine-home materialization here (deliberately, unlike launchSupervisedAgent):\n// a worker is the job pipeline, not a supervised tmux member. It runs each job's\n// argv with piped, non-TTY stdio (worker/executor.ts spawnProcess), so no engine\n// TUI launches — nothing prompts a workspace-trust dialog and no tmux pane renders\n// a context statusLine. Workers set no CLAUDE_CONFIG_DIR/CODEX_HOME and own no\n// per-agent engine home to configure, so the trust + statusLine ensures that\n// belong on the member launch path have no target on the worker path.\nexport async function launchSupervisedWorker(input, deps = {}) {\n const logger = input.logger ?? (() => { });\n const runForeverFn = deps.runForeverFn ?? runForever;\n const worker = _requireWorkerName(input.descriptor);\n const workdir = _assertWorkdir(_resolveWorkdir(input.spec.workdir, input.hostEnv?.HOME ?? os.homedir()));\n const controller = new AbortController();\n const gate = _readinessGate();\n const loop = runForeverFn({\n relayUrl: input.descriptor.relay_url,\n worker,\n workdir,\n token: input.descriptor.token,\n maxConcurrency: input.spec.maxConcurrency,\n tags: input.spec.tags,\n signal: controller.signal,\n onReady: gate.markReady,\n logger: (line) => logger(\"host_worker_log\", { worker, line }),\n }).then(() => { gate.markStoppedBeforeReady(worker); input.onExit?.(null); }, (error) => { gate.markFailed(error); input.onExit?.(error); });\n const readyTimeoutMs = input.readyTimeoutMs ?? DEFAULT_WORKER_READY_TIMEOUT_MS;\n let outcome;\n try {\n outcome = await _raceReady(gate.ready, readyTimeoutMs);\n }\n catch (error) {\n // Loop failed before it registered (fail-fast register error, protocol\n // mismatch, or stop-before-ready) — abort and surface the cause so the\n // starter marks the worker_start failed.\n controller.abort();\n await loop;\n throw error;\n }\n if (outcome === \"timeout\") {\n controller.abort();\n await loop; // runForever honours the abort signal and winds down its session\n throw new Error(`worker ${worker} did not register within ${readyTimeoutMs}ms`);\n }\n logger(\"host_worker_started\", { worker, workdir, max_concurrency: input.spec.maxConcurrency, tags: input.spec.tags });\n return {\n // Aborts the loop and waits for it to fully unwind. Any job still executing\n // is cancelled with it and is NOT reported back — its relay lease (set on\n // claim, renewed by the worker heartbeat) lapses once we stop heartbeating,\n // and relay maintenance (requeue_expired_leases) requeues it for another\n // worker (same outcome as a hard worker exit). This is at-least-once: the\n // requeued command MAY run twice, so job side effects must tolerate re-exec.\n async stop() {\n controller.abort();\n await loop;\n },\n };\n}\n// Resolves \"ready\" when the worker registers, \"timeout\" after timeoutMs, or\n// rejects if the readiness promise rejects (loop died before registering). The\n// timer is always cleared so a settled gate never leaves a dangling handle.\nfunction _raceReady(ready, timeoutMs) {\n let timer;\n const timeout = new Promise((resolve) => { timer = setTimeout(() => resolve(\"timeout\"), timeoutMs); });\n return Promise.race([ready.then(() => \"ready\"), timeout]).finally(() => clearTimeout(timer));\n}\nfunction _readinessGate() {\n let settled = false;\n let resolve;\n let reject;\n const ready = new Promise((res, rej) => { resolve = res; reject = rej; });\n const settle = (fn) => { if (!settled) {\n settled = true;\n fn();\n } };\n return {\n ready,\n markReady: () => settle(resolve),\n markFailed: (error) => settle(() => reject(error)),\n markStoppedBeforeReady: (worker) => settle(() => reject(new Error(`worker ${worker} stopped before it registered`))),\n };\n}\nfunction _requireWorkerName(descriptor) {\n const worker = descriptor.agent_name?.trim();\n if (!worker)\n throw new Error(\"worker enrollment descriptor is missing agent_name (worker name)\");\n return worker;\n}\nfunction _resolveWorkdir(workdir, homeDir) {\n return workdir === \"~\" || workdir.startsWith(\"~/\") ? path.join(homeDir, workdir.slice(2)) : workdir;\n}\nfunction _assertWorkdir(workdir) {\n let stat;\n try {\n stat = statSync(workdir);\n }\n catch {\n throw new Error(`worker workdir does not exist: ${workdir}`);\n }\n if (!stat.isDirectory())\n throw new Error(`worker workdir is not a directory: ${workdir}`);\n return workdir;\n}\n//# sourceMappingURL=worker-launcher.js.map",
|
|
@@ -71,20 +69,21 @@
|
|
|
71
69
|
"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",
|
|
72
70
|
"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",
|
|
73
71
|
"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",
|
|
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 { createMemorySweepState, sweepAgentMemory } from \"./memory-sweeper.js\";\nimport { scratchSweepEnabled, sweepWorkspaceScratch } from \"./scratch-sweeper.js\";\nimport { reportRepoTipsOnce } from \"./repo-tip-reporter.js\";\nimport { verifyTeamRepository } from \"./repo-verification.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 memorySweepTargets = 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 sweep = options.sweepAgentMemory ?? sweepAgentMemory;\n const materializeManaged = options.materializeManagedFiles ?? materializeManagedFiles;\n const now = options.now ?? (() => Date.now());\n const memorySweepIntervalMs = options.memorySweepIntervalMs ?? 6 * 60 * 60 * 1000;\n let lastRuntimeMemorySweepAt = 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 ?? reportRepoTipsOnce;\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 memoryTarget = memorySweepTarget(descriptor, spec.engine, options, agentRelay);\n const managedTarget = managedMaterializationTarget(descriptor, spec.engine, options, agentRelay);\n await runMemorySweep(sweep, memoryTarget, \"pre-start\", logger, true);\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 runMemorySweep(sweep, memoryTarget, \"runtime\", logger, false);\n await runManagedMaterialization(materializeManaged, managedTarget, \"runtime\", logger, false);\n runtimes.delete(request.agent_name);\n memorySweepTargets.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 memorySweepTargets.set(request.agent_name, memoryTarget);\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 === \"repo_verification\") {\n const gitRepoUrl = request.spec.git_repo_url;\n if (typeof gitRepoUrl !== \"string\" || !gitRepoUrl.trim()) {\n throw new Error(\"repo verification request requires spec.git_repo_url\");\n }\n const verifyRepository = options.verifyRepository ?? verifyTeamRepository;\n return { ...(await verifyRepository(gitRepoUrl, options.hostId)) };\n }\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 for (const recovery of await options.recoverRuntimes()) {\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 };\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() - lastRuntimeMemorySweepAt >= memorySweepIntervalMs) {\n lastRuntimeMemorySweepAt = now();\n await sweepRuntimeMemory(sweep, memorySweepTargets, logger);\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 sweepRuntimeMemory(sweep, memorySweepTargets, logger);\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 memorySweepTarget(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: createMemorySweepState(),\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}\nasync function sweepRuntimeMemory(sweep, targets, logger) {\n for (const target of targets.values()) {\n await runMemorySweep(sweep, target, \"runtime\", logger, false);\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 (same isolation as memory sweep).\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 runMemorySweep(sweep, target, mode, logger, failFast) {\n try {\n await sweep({ ...target, mode, logger });\n }\n catch (error) {\n logger(\"host_memory_sweep_failed\", { agent_name: target.agentName, mode, error: errorMessage(error) });\n if (failFast)\n throw error;\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",
|
|
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",
|
|
75
73
|
"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",
|
|
76
74
|
"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",
|
|
77
75
|
"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",
|
|
78
76
|
"import { readFile } from \"node:fs/promises\";\nconst _readUtf8File = async (file) => await readFile(file, \"utf8\");\nexport async function readTextInput(input) {\n let content = \"\";\n for await (const chunk of input)\n content += String(chunk);\n return content;\n}\nexport const UNUSED_TEXT_INPUT_PROBE_MS = 500;\nconst _PROBE_EXPIRED = Symbol(\"unused-text-input-probe-expired\");\nexport async function rejectUnusedTextInput(input, message) {\n if (input.isTTY)\n return;\n const iterator = input[Symbol.asyncIterator]();\n let timer;\n const expiry = new Promise((resolve) => {\n timer = setTimeout(() => resolve(_PROBE_EXPIRED), UNUSED_TEXT_INPUT_PROBE_MS);\n });\n try {\n for (;;) {\n const step = await Promise.race([iterator.next(), expiry]);\n // A silent-past-the-probe stdin (ssh without -n, harness pipes) carries no\n // discarded input to reject; blocking until EOF hung every such command.\n if (step === _PROBE_EXPIRED || step.done)\n return;\n if (String(step.value))\n throw new Error(message);\n }\n }\n finally {\n clearTimeout(timer);\n void iterator.return?.().catch(() => { });\n // The pending read keeps the event loop referenced even after the iterator\n // is closed; release the stream so the process can exit naturally.\n input.pause?.();\n input.unref?.();\n }\n}\nexport async function readTextFile(path, readUtf8File = _readUtf8File) {\n return await readUtf8File(path);\n}\nexport async function readTextFileOrStdin(path, input, unusedInputMessage, readUtf8File = _readUtf8File) {\n if (path === \"-\")\n return await readTextInput(input);\n await rejectUnusedTextInput(input, unusedInputMessage);\n return await readTextFile(path, readUtf8File);\n}\n//# sourceMappingURL=text-input.js.map",
|
|
79
77
|
"import { readTextFileOrStdin, readTextInput } from \"./text-input.js\";\nconst ASK_FLAGS = new Set([\"body-file\", \"option\", \"reason\", \"recommend\", \"session\", \"title\"]);\nexport async function runAskFromCli(client, argv, config, input) {\n const args = _parseAskArgs(argv);\n const captainId = _askCaptainId(config);\n const session = _askSession(args, config);\n if (args.command === \"list\") {\n if (args.positionals.length)\n throw new Error(\"ask list only accepts --session\");\n _assertOnlySession(args, \"ask list\");\n return await client.listDecisions(captainId, session);\n }\n if (args.command === \"get\")\n return await client.getDecision(captainId, session, _decisionId(args));\n return await client.createDecision(captainId, session, await _createDecisionRequest(args, input));\n}\nfunction _parseAskArgs(argv) {\n const subcommand = argv[0];\n const command = subcommand === \"list\" ? \"list\" : subcommand === \"get\" || subcommand === \"status\" ? \"get\" : \"create\";\n return _parseAskTokens(command, command === \"create\" ? argv : argv.slice(1));\n}\nfunction _parseAskTokens(command, tokens) {\n const positionals = [];\n const values = {};\n for (let index = 0; index < tokens.length; index += 1) {\n const token = tokens[index];\n if (!token.startsWith(\"--\"))\n positionals.push(token);\n else\n _addAskFlag(values, token, tokens[++index]);\n }\n return { command, positionals, values };\n}\nfunction _addAskFlag(values, token, value) {\n const flag = token.slice(2);\n if (!ASK_FLAGS.has(flag))\n throw new Error(`unknown ask flag: ${token}`);\n if (!value || value.startsWith(\"--\"))\n throw new Error(`${token} requires a value`);\n values[flag] = [...(values[flag] ?? []), value];\n}\nfunction _askCaptainId(config) {\n if (!config.captainId)\n throw new Error(\"ask requires SAILORBRIDGE_CAPTAIN_ID\");\n return config.captainId;\n}\nfunction _askSession(args, config) {\n const session = _singleAskValue(args.values, \"session\") ?? config.session;\n if (!session?.trim())\n throw new Error(\"ask requires --session or SAILORBRIDGE_SESSION\");\n return session;\n}\nfunction _decisionId(args) {\n _assertOnlySession(args, \"ask get\");\n if (args.positionals.length !== 1)\n throw new Error(\"ask get requires exactly one decision id\");\n return args.positionals[0];\n}\nfunction _assertOnlySession(args, command) {\n if (Object.keys(args.values).some((key) => key !== \"session\"))\n throw new Error(`${command} only accepts --session`);\n}\nasync function _createDecisionRequest(args, input) {\n if (args.positionals.length)\n throw new Error(\"ask does not accept positional arguments\");\n return {\n title: _requiredAskValue(args.values, \"title\"),\n context: await _questionContext(args.values, input),\n options: _decisionOptions(args.values.option ?? []),\n recommendation: _decisionRecommendation(args.values, args.values.option?.length ?? 0),\n };\n}\nfunction _decisionOptions(values) {\n if (values.length < 2 || values.length > 4)\n throw new Error(\"--option must appear 2 to 4 times as LABEL::DESCRIPTION\");\n return values.map(_decisionOption);\n}\nfunction _decisionOption(value) {\n const divider = value.indexOf(\"::\");\n const label = value.slice(0, divider).trim();\n const description = value.slice(divider + 2).trim();\n if (divider < 1 || !label || !description)\n throw new Error(\"--option must use LABEL::DESCRIPTION\");\n return { label, description };\n}\nfunction _decisionRecommendation(values, optionCount) {\n const option = _requiredAskValue(values, \"recommend\");\n const reasons = values.reason?.map((reason) => reason.trim()).filter(Boolean) ?? [];\n if (!/^[A-D]$/.test(option) || option.charCodeAt(0) - 64 > optionCount)\n throw new Error(\"--recommend must name one supplied option key (A-D)\");\n if (!reasons.length)\n throw new Error(\"--reason is required with --recommend\");\n return { option, reasons };\n}\nasync function _questionContext(values, input) {\n const bodyFile = _singleAskValue(values, \"body-file\");\n const source = bodyFile\n ? await readTextFileOrStdin(bodyFile, input, \"ask received stdin that --body-file does not consume; use --body-file -\")\n : await readTextInput(input);\n const context = source.trim();\n if (!context)\n throw new Error(\"question body is required from stdin or --body-file\");\n return context;\n}\nfunction _requiredAskValue(values, name) {\n const value = _singleAskValue(values, name)?.trim();\n if (!value)\n throw new Error(`--${name} is required`);\n return value;\n}\nfunction _singleAskValue(values, name) {\n const entries = values[name] ?? [];\n if (entries.length > 1)\n throw new Error(`--${name} may only be provided once`);\n return entries[0];\n}\n//# sourceMappingURL=ask.js.map",
|
|
80
78
|
"import { readFile } from \"node:fs/promises\"; // intentional — task images are binary artifacts, not user text parameters\nimport { basename } from \"node:path\";\nimport { bytesToBase64, RelayHttpError } from \"./relay/index.js\";\nimport { readTextFileOrStdin, readTextInput, rejectUnusedTextInput } from \"./text-input.js\";\nconst TASK_FLAGS = new Set([\"after\", \"all\", \"artifact-id\", \"before\", \"body-file\", \"commit\", \"depends\", \"description\", \"description-file\", \"draft\", \"findings\", \"image\", \"level\", \"limit\", \"owner-of-resume\", \"pair\", \"priority\", \"query\", \"reason\", \"resume-condition\", \"resume-dependency\", \"session\", \"status\", \"type\", \"version\"]);\nconst TASK_BOOLEAN_FLAGS = new Set([\"all\", \"draft\"]);\nconst TASK_TYPES = new Set([\"feature\", \"bug\", \"docs\", \"chore\"]);\nconst TASK_PRIORITIES = new Set([\"high\", \"normal\", \"low\"]);\nconst TASK_LEVELS = new Set([\"d1\", \"d2\", \"d3\", \"d4\"]);\nexport async function runTaskFromCli(client, argv, config, input, format) {\n const args = _parseTaskArgs(argv);\n const captainId = _taskCaptainId(config);\n const session = _taskSession(args, config);\n if (args.command === \"list\")\n return await _listTasks(client, captainId, session, args, format);\n if (args.command === \"get\")\n return await client.getSessionTask(captainId, session, _taskId(args));\n if (args.command === \"history\")\n return await _taskHistory(client, captainId, session, args, format);\n if (args.command === \"activate\" || args.command === \"pause\")\n return await _planningFlipTask(client, captainId, session, args);\n if (args.command === \"create\")\n return await _createTask(client, captainId, session, args, input);\n return await _transitionTask(client, captainId, session, args);\n}\nasync function _createTask(client, captainId, session, args, input) {\n const request = await _createTaskRequest(args, input);\n const imageArtifactIds = await _uploadTaskImages(client, captainId, session, _taskValues(args.values, \"image\"));\n if (imageArtifactIds.length)\n request.artifact_ids = [...(request.artifact_ids ?? []), ...imageArtifactIds];\n const result = await client.createSessionTask(captainId, session, request);\n if (request.status === \"draft\")\n return result;\n if (result.task.status === \"new\")\n return result;\n throw new Error(`task was created as ${result.task.status}: team setup is incomplete; dispatcher will not run. Complete the classic task-team setup, then create a new task.`);\n}\nfunction _parseTaskArgs(argv) {\n const command = argv[0];\n if (command !== \"create\" && command !== \"get\" && command !== \"list\" && command !== \"history\" && command !== \"activate\" && command !== \"pause\" && command !== \"merge-ready\" && command !== \"ready\" && command !== \"needs-changes\" && command !== \"park\" && command !== \"unpark\" && command !== \"close\") {\n throw new Error(\"task command must be create, list, get, history, activate, pause, merge-ready, ready, needs-changes, park, unpark, or close\");\n }\n return _parseTaskTokens(command, argv.slice(1));\n}\nfunction _parseTaskTokens(command, tokens) {\n const positionals = [];\n const values = {};\n for (let index = 0; index < tokens.length; index += 1) {\n const token = tokens[index];\n if (!token.startsWith(\"--\"))\n positionals.push(token);\n else {\n const flag = token.slice(2);\n _addTaskFlag(values, token, TASK_BOOLEAN_FLAGS.has(flag) ? undefined : tokens[++index]);\n }\n }\n return { command, positionals, values };\n}\nfunction _addTaskFlag(values, token, value) {\n const flag = token.slice(2);\n if (!TASK_FLAGS.has(flag))\n throw new Error(`unknown task flag: ${token}`);\n if (TASK_BOOLEAN_FLAGS.has(flag)) {\n values[flag] = [...(values[flag] ?? []), \"true\"];\n return;\n }\n if (!value || value.startsWith(\"--\"))\n throw new Error(`${token} requires a value`);\n values[flag] = [...(values[flag] ?? []), value];\n}\nfunction _taskCaptainId(config) {\n if (!config.captainId)\n throw new Error(\"task requires SAILORBRIDGE_CAPTAIN_ID\");\n return config.captainId;\n}\nfunction _taskSession(args, config) {\n const session = _singleTaskValue(args.values, \"session\") ?? config.session;\n if (!session?.trim())\n throw new Error(\"task requires --session or SAILORBRIDGE_SESSION\");\n return session;\n}\nasync function _listTasks(client, captainId, session, args, format) {\n if (args.positionals.length)\n throw new Error(\"task list only accepts flags\");\n _assertUnsupportedTaskFlags(args, \"task list\", [\"image\"]);\n _assertOnlyTaskFlags(args, \"task list\", [\"after\", \"all\", \"limit\", \"pair\", \"query\", \"session\", \"status\"]);\n const all = _hasTaskFlag(args.values, \"all\");\n const pair = _optionalTaskValue(args.values, \"pair\");\n if (all && pair)\n throw new Error(\"task list --all and --pair are mutually exclusive\");\n const result = await client.listSessionTasks(captainId, session, {\n status: _optionalTaskValue(args.values, \"status\") ?? \"active\",\n after: _optionalTaskValue(args.values, \"after\"),\n limit: _optionalTaskLimit(args.values),\n query: _optionalTaskValue(args.values, \"query\"),\n ...(all ? { scope: \"all\" } : pair ? { pair } : { scope: \"mine\" }),\n });\n if (format === \"json\")\n return result;\n return _taskTable(result.tasks, result.total, result.has_more, result.next_cursor);\n}\nconst TASK_HISTORY_PAGE_LIMIT = 200;\nconst TASK_HISTORY_ALL_MAX_EVENTS = 10_000;\nasync function _taskHistory(client, captainId, session, args, format) {\n _assertOnlyTaskFlags(args, \"task history\", [\"after\", \"all\", \"before\", \"limit\", \"session\"]);\n if (args.positionals.length !== 1)\n throw new Error(\"task history requires exactly one task id\");\n const id = args.positionals[0];\n const all = _hasTaskFlag(args.values, \"all\");\n const after = _optionalTaskValue(args.values, \"after\");\n const before = _optionalTaskValue(args.values, \"before\");\n if (after !== undefined && before !== undefined)\n throw new Error(\"task history --after and --before are mutually exclusive\");\n const limit = _optionalTaskHistoryLimit(args.values);\n if (all && (after !== undefined || before !== undefined || limit !== undefined)) {\n throw new Error(\"task history --all does not accept --after, --before, or --limit\");\n }\n const result = all\n ? await _allTaskEvents(client, captainId, session, id)\n : await client.listSessionTaskEvents(captainId, session, id, { limit, after, before });\n if (format === \"json\")\n return result;\n return _taskEventTable(result);\n}\nasync function _allTaskEvents(client, captainId, session, id) {\n const latest = await client.listSessionTaskEvents(captainId, session, id, { limit: TASK_HISTORY_PAGE_LIMIT });\n const chunks = [latest.events];\n let collected = latest.events.length;\n let page = latest;\n while (page.has_more) {\n if (page.previous_cursor === null)\n throw new Error(\"task history --all cannot continue: relay reported more events without a previous_cursor\");\n page = await client.listSessionTaskEvents(captainId, session, id, { limit: TASK_HISTORY_PAGE_LIMIT, before: page.previous_cursor });\n if (!page.events.length && page.has_more)\n throw new Error(\"task history --all cannot continue: relay returned an empty page while reporting more events\");\n chunks.push(page.events);\n collected += page.events.length;\n if (collected > TASK_HISTORY_ALL_MAX_EVENTS)\n throw new Error(`task history --all exceeded ${TASK_HISTORY_ALL_MAX_EVENTS} events; page explicitly with --before/--after instead`);\n }\n return {\n session: latest.session,\n task_id: latest.task_id,\n next_cursor: latest.next_cursor,\n previous_cursor: null,\n has_more: false,\n events: chunks.reverse().flat(),\n };\n}\nfunction _optionalTaskHistoryLimit(values) {\n const value = _optionalTaskValue(values, \"limit\");\n if (value === undefined)\n return undefined;\n const limit = Number(value);\n if (!Number.isSafeInteger(limit) || limit < 1 || limit > TASK_HISTORY_PAGE_LIMIT)\n throw new Error(`--limit must be an integer from 1 to ${TASK_HISTORY_PAGE_LIMIT}`);\n return limit;\n}\nfunction _taskEventTable(result) {\n if (!result.events.length)\n return `No events recorded for ${result.task_id}.`;\n const headers = [\"CREATED AT\", \"FROM\", \"TO\", \"VERSION\", \"ACTOR\", \"ROLE\", \"FAILURE\"];\n const shown = result.events.slice(-20);\n const rows = shown.map((event) => [\n event.created_at, event.from_status ?? \"-\", event.to_status, String(event.task_version),\n event.actor_agent_name ?? \"-\", event.actor_role ?? \"-\", event.failure_reason ?? \"-\",\n ]);\n const widths = headers.map((header, index) => Math.max(header.length, ...rows.map((row) => row[index].length)));\n const table = [headers, ...rows].map((row) => row.map((value, index) => value.padEnd(widths[index])).join(\" \").trimEnd()).join(\"\\n\");\n // previous_cursor is only set for latest-window/--before pages; its absence\n // with has_more means this was an --after page and newer events remain.\n const hint = !result.has_more\n ? \"\"\n : result.previous_cursor !== null\n ? `; older events available: rerun with --before ${result.previous_cursor} or --all`\n : `; newer events available: rerun with --after ${result.next_cursor}`;\n const omitted = result.events.length - shown.length;\n const localHint = omitted ? `; ${omitted} earlier event(s) omitted (use --format json)` : \"\";\n return `${table}\\nShown ${shown.length} of ${result.events.length}${localHint}${hint}`;\n}\nasync function _planningFlipTask(client, captainId, session, args) {\n const id = _taskId(args);\n try {\n if (args.command === \"pause\")\n return await client.pauseSessionTask(captainId, session, id);\n return await client.activateSessionTask(captainId, session, id);\n }\n catch (error) {\n throw _taskPlanningFlipError(error, id, args.command === \"pause\" ? \"pause\" : \"activate\");\n }\n}\nfunction _taskPlanningFlipError(error, id, command) {\n if (!(error instanceof RelayHttpError) || error.status !== 409)\n return error instanceof Error ? error : new Error(String(error));\n const task = _taskFromConflict(error.body);\n if (!task)\n return error;\n const required = command === \"activate\" ? \"draft\" : \"new\";\n return new Error(`${id} is currently ${task.status} at version ${task.version}; ${command} requires ${required}. Run sail task get ${id} and retry from the required lifecycle state.`);\n}\nfunction _taskId(args) {\n const allowed = args.command === \"get\" || args.command === \"activate\" || args.command === \"pause\"\n ? [\"session\"]\n : args.command === \"needs-changes\"\n ? [\"commit\", \"findings\", \"reason\", \"session\", \"version\"]\n : args.command === \"park\"\n ? [\"owner-of-resume\", \"resume-condition\", \"resume-dependency\", \"session\", \"version\"]\n : args.command === \"merge-ready\" || args.command === \"ready\"\n ? [\"commit\", \"findings\", \"session\", \"version\"]\n : args.command === \"close\"\n ? [\"findings\", \"session\", \"version\"]\n : [\"session\", \"version\"];\n _assertOnlyTaskFlags(args, `task ${args.command}`, allowed);\n if (args.positionals.length !== 1)\n throw new Error(`task ${args.command} requires exactly one task id`);\n return args.positionals[0];\n}\nfunction _assertOnlyTaskFlags(args, command, allowed) {\n if (Object.keys(args.values).some((key) => !allowed.includes(key)))\n throw new Error(`${command} only accepts ${allowed.map((flag) => `--${flag}`).join(\" and \")}`);\n}\nfunction _assertUnsupportedTaskFlags(args, command, unsupported) {\n for (const flag of unsupported)\n if (args.values[flag])\n throw new Error(`${command} --${flag} is not supported by the SailorBridge task API`);\n}\nasync function _createTaskRequest(args, input) {\n if (args.positionals.length)\n throw new Error(\"task create does not accept positional arguments\");\n _assertUnsupportedTaskFlags(args, \"task create\", [\"all\"]);\n _assertOnlyTaskFlags(args, \"task create\", [\"artifact-id\", \"body-file\", \"depends\", \"description\", \"description-file\", \"draft\", \"image\", \"level\", \"pair\", \"priority\", \"session\", \"status\", \"type\"]);\n return {\n description: await _taskDescription(args.values, input),\n pair: _optionalTaskValue(args.values, \"pair\"),\n status: _taskCreateStatus(args.values),\n type: _taskEnum(args.values, \"type\", \"feature\", TASK_TYPES),\n priority: _taskEnum(args.values, \"priority\", \"normal\", TASK_PRIORITIES),\n level: _optionalTaskEnum(args.values, \"level\", TASK_LEVELS),\n depends: _taskIds(args.values, \"depends\"),\n artifact_ids: _optionalTaskValues(args.values, \"artifact-id\"),\n };\n}\nasync function _uploadTaskImages(client, captainId, session, imagePaths) {\n const artifactIds = [];\n for (const imagePath of imagePaths) {\n const content = await readFile(imagePath); // intentional — upload the task image as binary artifact bytes\n const artifact = await client.uploadSessionArtifact(captainId, session, {\n name: basename(imagePath),\n content_bytes_base64: bytesToBase64(content),\n });\n artifactIds.push(artifact.id);\n }\n return artifactIds;\n}\nasync function _taskDescription(values, input) {\n const bodyFile = _singleTaskValue(values, \"body-file\");\n const descriptionFile = _singleTaskValue(values, \"description-file\");\n const inlineDescription = _singleTaskValue(values, \"description\");\n if ([bodyFile, descriptionFile, inlineDescription].filter((value) => value !== undefined).length > 1)\n throw new Error(\"only one of --description, --body-file, or --description-file may be provided\");\n const file = bodyFile ?? descriptionFile;\n if (inlineDescription === \"-\")\n return _validatedTaskDescription(await readTextInput(input));\n if (inlineDescription !== undefined) {\n await rejectUnusedTextInput(input, \"task create received stdin that --description does not consume; use --description - or --description-file -\");\n return _validatedTaskDescription(inlineDescription);\n }\n const source = file\n ? await readTextFileOrStdin(file, input, `task create received stdin that --${bodyFile ? \"body-file\" : \"description-file\"} does not consume; use --${bodyFile ? \"body-file\" : \"description-file\"} -`)\n : await readTextInput(input);\n return _validatedTaskDescription(source);\n}\nfunction _validatedTaskDescription(source) {\n const description = source.trim();\n if (!description)\n throw new Error(\"task description is required; pass --description TEXT or pipe content with --description-file -\");\n if (/^\\p{P}$/u.test(description))\n throw new Error(\"task description must include meaningful text, not a single punctuation mark; use --description TEXT or pipe content with --description-file -\");\n return description;\n}\nfunction _taskCreateStatus(values) {\n const explicit = _optionalTaskValue(values, \"status\");\n if (_hasTaskFlag(values, \"draft\") && explicit !== undefined)\n throw new Error(\"--draft and --status are mutually exclusive\");\n const status = explicit ?? (_hasTaskFlag(values, \"draft\") ? \"draft\" : \"new\");\n if (status !== \"draft\" && status !== \"new\")\n throw new Error(\"--status must be draft or new\");\n return status;\n}\nfunction _taskEnum(values, name, fallback, allowed) {\n const value = _singleTaskValue(values, name) ?? fallback;\n if (!allowed.has(value))\n throw new Error(`--${name} must be one of ${[...allowed].join(\", \")}`);\n return value;\n}\nfunction _optionalTaskEnum(values, name, allowed) {\n const value = _singleTaskValue(values, name);\n if (value === undefined)\n return undefined;\n if (!allowed.has(value))\n throw new Error(`--${name} must be one of ${[...allowed].join(\", \")}`);\n return value;\n}\nfunction _taskIds(values, name) {\n const ids = _taskValues(values, name).flatMap((value) => value.split(\",\").map((part) => part.trim()));\n if (!ids.length)\n return undefined;\n if (ids.some((id) => !id))\n throw new Error(`--${name} must contain task ids`);\n return ids;\n}\nfunction _taskValues(values, name) {\n return values[name] ?? [];\n}\nfunction _optionalTaskValues(values, name) {\n const entries = _taskValues(values, name);\n return entries.length ? entries : undefined;\n}\nfunction _optionalTaskValue(values, name) {\n const value = _singleTaskValue(values, name);\n if (value === undefined)\n return undefined;\n const trimmed = value.trim();\n if (!trimmed)\n throw new Error(`--${name} must not be blank`);\n return trimmed;\n}\nfunction _optionalTaskLimit(values) {\n const value = _optionalTaskValue(values, \"limit\");\n if (value === undefined)\n return undefined;\n const limit = Number(value);\n if (!Number.isSafeInteger(limit) || limit < 1 || limit > 100)\n throw new Error(\"--limit must be an integer from 1 to 100\");\n return limit;\n}\nasync function _transitionTask(client, captainId, session, args) {\n const command = args.command;\n if (command !== \"merge-ready\" && command !== \"ready\" && command !== \"needs-changes\" && command !== \"park\" && command !== \"unpark\" && command !== \"close\")\n throw new Error(\"task transition command is invalid\");\n const id = _taskId(args);\n const reason = command === \"needs-changes\" ? _requiredTaskValue(args.values, \"reason\") : undefined;\n const resumeCondition = command === \"park\" ? _requiredTaskValue(args.values, \"resume-condition\") : undefined;\n const findingsCounts = _taskFindingsCounts(args.values);\n const version = await _taskVersion(client, captainId, session, id, args.values);\n const commit = _optionalTaskValue(args.values, \"commit\");\n try {\n if (command === \"merge-ready\" || command === \"ready\")\n return await client.markSessionTaskReady(captainId, session, id, version, commit, findingsCounts);\n if (command === \"needs-changes\")\n return await client.markSessionTaskNeedsChanges(captainId, session, id, version, reason, commit, findingsCounts);\n if (command === \"park\")\n return await client.parkSessionTask(captainId, session, id, _taskParkBody(args.values, version, resumeCondition));\n if (command === \"unpark\")\n return await client.unparkSessionTask(captainId, session, id, version);\n return await client.closeSessionTask(captainId, session, id, version, findingsCounts);\n }\n catch (error) {\n throw _taskTransitionError(error, id, command, version);\n }\n}\nconst TASK_FINDINGS_KEYS = [\"P0\", \"P1\", \"P2\", \"P3\"];\nfunction _taskFindingsCounts(values) {\n const value = _optionalTaskValue(values, \"findings\");\n if (value === undefined)\n return undefined;\n const counts = {};\n for (const entry of value.split(\",\")) {\n const [key, raw, ...rest] = entry.trim().split(\"=\");\n if (!TASK_FINDINGS_KEYS.includes(key) || rest.length || key in counts) {\n throw new Error('--findings must be \"P0=n,P1=n,P2=n,P3=n\" with each severity exactly once');\n }\n if (!/^\\d+$/.test(raw ?? \"\"))\n throw new Error(`--findings ${key} must be a non-negative integer`);\n const count = Number(raw);\n if (!Number.isSafeInteger(count))\n throw new Error(`--findings ${key} must be a non-negative integer`);\n counts[key] = count;\n }\n if (Object.keys(counts).length !== TASK_FINDINGS_KEYS.length) {\n throw new Error('--findings must be \"P0=n,P1=n,P2=n,P3=n\" with each severity exactly once');\n }\n return counts;\n}\nfunction _taskParkBody(values, version, resumeCondition) {\n const dependency = _optionalTaskValue(values, \"resume-dependency\");\n const owner = _optionalTaskValue(values, \"owner-of-resume\");\n return {\n version,\n resume_condition: resumeCondition,\n ...(dependency ? { resume_dependency_task_id: dependency } : {}),\n ...(owner ? { owner_of_resume: owner } : {}),\n };\n}\nasync function _taskVersion(client, captainId, session, id, values) {\n const supplied = _singleTaskValue(values, \"version\");\n if (supplied === undefined)\n return (await client.getSessionTask(captainId, session, id)).task.version;\n const version = Number(supplied);\n if (!Number.isSafeInteger(version) || version < 1)\n throw new Error(\"--version must be a positive integer\");\n return version;\n}\nfunction _taskTransitionError(error, id, command, expectedVersion) {\n const forbiddenStatus = _needsChangesForbiddenStatus(error, command);\n if (forbiddenStatus) {\n return new Error(`${id} is currently ${forbiddenStatus}; needs-changes requires running or gating. Run sail task get ${id} and retry from the required lifecycle state.`);\n }\n if (!(error instanceof RelayHttpError) || error.status !== 409)\n return error instanceof Error ? error : new Error(String(error));\n const task = _taskFromConflict(error.body);\n if (!task)\n return error;\n if (task.version !== expectedVersion) {\n return new Error(`${id} is currently ${task.status} at version ${task.version}; version ${expectedVersion} is stale. Run sail task get ${id}, then retry with the current version.`);\n }\n if (command === \"close\" && task.status === \"gating\") {\n return new Error(`${id} remains gating at version ${task.version}; close requires an independent gate ACK from the bound gating pair's other member at this version. Wait for that ACK before retrying.`);\n }\n const expected = command === \"merge-ready\" || command === \"ready\"\n ? \"running\"\n : command === \"park\"\n ? \"new or running\"\n : command === \"unpark\"\n ? \"parked\"\n : command === \"close\"\n ? \"gating\"\n : \"running or gating\";\n return new Error(`${id} is currently ${task.status} at version ${task.version}; ${command} requires ${expected}. Run sail task get ${id} and retry from the required lifecycle state.`);\n}\nfunction _needsChangesForbiddenStatus(error, command) {\n if (!(error instanceof RelayHttpError) || error.status !== 403 || command !== \"needs-changes\")\n return null;\n return /^task status (\\S+) does not accept needs-changes$/.exec(error.body.trim())?.[1] ?? null;\n}\nfunction _taskFromConflict(body) {\n try {\n const parsed = JSON.parse(body);\n const task = parsed.task;\n if (!task || typeof task !== \"object\" || Array.isArray(task))\n return null;\n const value = task;\n if (typeof value.status !== \"string\" || !Number.isSafeInteger(value.version))\n return null;\n return { status: value.status, version: value.version };\n }\n catch {\n return null;\n }\n}\nfunction _requiredTaskValue(values, name) {\n const value = _singleTaskValue(values, name)?.trim();\n if (!value)\n throw new Error(`--${name} is required`);\n return value;\n}\nfunction _singleTaskValue(values, name) {\n const entries = values[name] ?? [];\n if (entries.length > 1)\n throw new Error(`--${name} may only be provided once`);\n return entries[0];\n}\nfunction _hasTaskFlag(values, name) {\n const entries = values[name] ?? [];\n if (entries.length > 1)\n throw new Error(`--${name} may only be provided once`);\n return entries.length === 1;\n}\nfunction _taskTable(tasks, total, hasMore, nextCursor) {\n const shown = tasks.slice(0, 20);\n if (shown.some((task) => task.status === \"parked\"))\n return _parkedTaskTable(shown, tasks.length, total, hasMore, nextCursor);\n const rows = shown.map((task) => [_taskDisplayId(task), task.status, task.priority, _taskOwner(task), _taskTitle(task)]);\n const headers = [\"ID\", \"STATUS\", \"PRIORITY\", \"OWNER\", \"TITLE\"];\n const widths = headers.map((header, index) => Math.max(header.length, ...rows.map((row) => row[index].length)));\n const table = [headers, ...rows].map((row) => row.map((value, index) => value.padEnd(widths[index])).join(\" \").trimEnd()).join(\"\\n\");\n return `${table}\\n${_taskListFooter(shown.length, tasks.length, total, hasMore, nextCursor)}`;\n}\nfunction _parkedTaskTable(tasks, returned, total, hasMore, nextCursor) {\n const headers = [\"ID\", \"STATUS\", \"PRIORITY\", \"OWNER\", \"TITLE\", \"RESUME CONDITION\", \"DEPENDENCY\", \"RESUME OWNER\", \"AGE\"];\n const rows = tasks.map((task) => [\n _taskDisplayId(task), task.status, task.priority, _taskOwner(task), _taskTitle(task), task.resume_condition ?? \"-\",\n task.resume_dependency_task_id ?? \"-\", task.owner_of_resume ?? \"-\",\n `${task.parked_over_24h ? \"!\" : \"\"}${task.parked_duration ?? \"-\"}`,\n ]);\n const widths = headers.map((header, index) => Math.max(header.length, ...rows.map((row) => row[index].length)));\n const table = [headers, ...rows].map((row) => row.map((value, index) => value.padEnd(widths[index])).join(\" \").trimEnd()).join(\"\\n\");\n return `${table}\\n${_taskListFooter(tasks.length, returned, total, hasMore, nextCursor)}`;\n}\nfunction _taskDisplayId(task) {\n return task.short_id ?? task.id;\n}\nfunction _taskOwner(task) {\n return task.assignee ?? task.assigned_pair ?? \"-\";\n}\nfunction _taskTitle(task) {\n return task.title ?? task.description?.split(/\\r?\\n/u, 1)[0] ?? \"-\";\n}\nfunction _taskListFooter(shown, returned, total, hasMore, cursor) {\n const omitted = returned - shown;\n const local = omitted ? `; ${omitted} returned task(s) omitted (use --format json)` : \"\";\n const next = hasMore && cursor ? `; Next: sail task list --after ${cursor}` : hasMore ? \"; more results available\" : \"\";\n return `Shown ${shown} of ${total}${local}${next}`;\n}\n//# sourceMappingURL=task.js.map",
|
|
81
|
-
"import { setTimeout as sleep } from \"node:timers/promises\";\nimport { isAcceptedTeamGitRemote } from \"./host/git-remote.js\";\nimport { RelayHttpError, } from \"./relay/index.js\";\nconst TEAM_BOOTSTRAP_ENGINES = new Set([\"claude\", \"codex\"]);\nconst SLOT_SPEC_RE = /^([^=\\s]+)=([^:@\\s]+):([^:@\\s]+)$/;\nconst REPO_WAIT_DEFAULT_SECONDS = 60;\nconst REPO_WAIT_MAX_SECONDS = 300;\nconst REPO_POLL_INTERVAL_MS = 250;\nconst TEAM_PLAIN_LIMIT = 20;\nexport class TeamBootstrapError extends Error {\n kind;\n constructor(kind, message) {\n super(message);\n this.name = \"TeamBootstrapError\";\n this.kind = kind;\n }\n}\nexport class TeamRepoError extends Error {\n kind;\n constructor(kind, message) {\n super(message);\n this.name = \"TeamRepoError\";\n this.kind = kind;\n }\n}\nexport async function runTeamFromCli(client, argv, config, format) {\n if (argv[0] === \"repo\")\n return await _runTeamRepoFromCli(client, argv.slice(1), config, format);\n if (argv[0] !== \"bootstrap\")\n throw new TeamBootstrapError(\"usage\", \"team command must be bootstrap or repo\");\n const captainId = config.captainId;\n if (!captainId)\n throw new TeamBootstrapError(\"usage\", \"team bootstrap requires SAILORBRIDGE_CAPTAIN_ID\");\n const args = _parseBootstrapArgs(argv.slice(1), config);\n const slots = await _appliedSlots(client, captainId, args);\n _requireKnownSlots(slots, args.assignments);\n _requireFullAssignment(slots, args.assignments);\n for (const slot of slots)\n await _materializeSlot(client, captainId, args.session, slot, args.assignments.get(slot.slot_id));\n const finalSlots = (await client.getTeamAgentSlots(captainId, args.session)).agent_slots;\n return format === \"json\" ? { agent_slots: finalSlots } : _auditFinalState(finalSlots);\n}\nasync function _runTeamRepoFromCli(client, argv, config, format) {\n const captainId = config.captainId;\n if (!captainId)\n throw new TeamRepoError(\"usage\", \"team repo requires SAILORBRIDGE_CAPTAIN_ID\");\n if (argv[0] === \"status\") {\n const repository = await client.getTeamRepository(captainId, _parseRepoStatusArgs(argv.slice(1), config));\n return format === \"json\" ? repository : _formatRepository(repository);\n }\n if (argv[0] !== \"set\")\n throw new TeamRepoError(\"usage\", \"team repo command must be set or status\");\n return await _setTeamRepository(client, captainId, _parseRepoSetArgs(argv.slice(1), config), format);\n}\nfunction _parseRepoStatusArgs(tokens, config) {\n if (!tokens.length)\n return _requiredRepoSession(undefined, config);\n if (tokens.length !== 2 || tokens[0] !== \"--session\")\n throw new TeamRepoError(\"usage\", \"team repo status accepts only --session TEAM\");\n return _requiredRepoSession(tokens[1], config);\n}\nfunction _parseRepoSetArgs(tokens, config) {\n const gitRepoUrl = tokens[0]?.trim();\n if (!gitRepoUrl || gitRepoUrl.startsWith(\"--\"))\n throw new TeamRepoError(\"usage\", \"team repo set requires GIT_URL\");\n if (!isAcceptedTeamGitRemote(gitRepoUrl))\n throw new TeamRepoError(\"usage\", \"GIT_URL must be an accepted git remote without embedded credentials\");\n const flags = _parseRepoSetFlags(tokens.slice(1));\n return {\n gitRepoUrl,\n session: _requiredRepoSession(flags.session, config),\n wait: flags.wait,\n timeoutSeconds: flags.timeoutSeconds,\n };\n}\nfunction _parseRepoSetFlags(tokens) {\n const flags = { wait: false, timeoutSet: false, timeoutSeconds: REPO_WAIT_DEFAULT_SECONDS };\n for (let index = 0; index < tokens.length; index += 1) {\n index += _applyRepoSetFlag(tokens, index, flags);\n }\n if (flags.timeoutSet && !flags.wait)\n throw new TeamRepoError(\"usage\", \"--timeout-sec requires --wait\");\n return flags;\n}\nfunction _applyRepoSetFlag(tokens, index, flags) {\n const token = tokens[index];\n if (token === \"--wait\") {\n if (flags.wait)\n throw new TeamRepoError(\"usage\", \"--wait may only be provided once\");\n flags.wait = true;\n return 0;\n }\n if (token === \"--session\") {\n flags.session = _singleRepoFlagValue(tokens, index + 1, token, flags.session);\n return 1;\n }\n if (token !== \"--timeout-sec\")\n throw new TeamRepoError(\"usage\", `unknown team repo set flag: ${token}`);\n if (flags.timeoutSet)\n throw new TeamRepoError(\"usage\", \"--timeout-sec may only be provided once\");\n flags.timeoutSet = true;\n flags.timeoutSeconds = _repoTimeoutSeconds(_singleRepoFlagValue(tokens, index + 1, token));\n return 1;\n}\nfunction _singleRepoFlagValue(tokens, index, flag, previous) {\n if (previous !== undefined)\n throw new TeamRepoError(\"usage\", `${flag} may only be provided once`);\n const value = tokens[index]?.trim();\n if (!value || value.startsWith(\"--\"))\n throw new TeamRepoError(\"usage\", `${flag} requires a value`);\n return value;\n}\nfunction _repoTimeoutSeconds(value) {\n const seconds = Number(value);\n if (!Number.isInteger(seconds) || seconds < 1 || seconds > REPO_WAIT_MAX_SECONDS) {\n throw new TeamRepoError(\"usage\", `--timeout-sec must be an integer from 1 to ${REPO_WAIT_MAX_SECONDS}`);\n }\n return seconds;\n}\nfunction _requiredRepoSession(value, config) {\n const session = (value ?? config.session)?.trim();\n if (!session)\n throw new TeamRepoError(\"usage\", \"team repo requires --session or SAILORBRIDGE_SESSION\");\n return session;\n}\nasync function _setTeamRepository(client, captainId, args, format) {\n const hostId = _moderatorHostId((await client.getTeamAgentSlots(captainId, args.session)).agent_slots);\n const pending = await client.setTeamRepositoryState(captainId, args.session, _repoState(args.gitRepoUrl, \"pending\", null));\n const request = await _queueRepoVerification(client, captainId, args, hostId);\n if (!args.wait) {\n if (format === \"json\")\n return { repository: pending, verification_request: request };\n return `${_formatRepository(pending)}\\nVerification request: ${request.id}`;\n }\n const terminal = await _waitForRepoVerification(client, captainId, args, request.id);\n const repository = await _persistRepoTerminal(client, captainId, args, terminal);\n return format === \"json\" ? { repository, verification_request: terminal } : _formatRepository(repository);\n}\nfunction _moderatorHostId(slots) {\n const moderator = slots.find((slot) => slot.slot_id === \"moderator\" && slot.status === \"materialized\");\n if (!moderator?.host_id) {\n throw new TeamRepoError(\"moderator-unavailable\", \"team repo verification requires a materialized Moderator slot with a host\");\n }\n return moderator.host_id;\n}\nasync function _queueRepoVerification(client, captainId, args, hostId) {\n try {\n return await client.createRepoVerificationRequest(captainId, args.session, hostId, args.gitRepoUrl);\n }\n catch (error) {\n await client.setTeamRepositoryState(captainId, args.session, _repoState(args.gitRepoUrl, \"failed\", \"Repository verification could not be queued on the Moderator host\"));\n throw error;\n }\n}\nasync function _waitForRepoVerification(client, captainId, args, requestId) {\n const deadline = Date.now() + args.timeoutSeconds * 1000;\n while (Date.now() < deadline) {\n let request;\n try {\n request = await client.getAgentStartRequest(captainId, args.session, requestId, Math.max(1, deadline - Date.now()));\n }\n catch (error) {\n if (Date.now() < deadline)\n throw error;\n break;\n }\n if (request.status !== \"queued\" && request.status !== \"claimed\")\n return request;\n await sleep(Math.min(REPO_POLL_INTERVAL_MS, Math.max(1, deadline - Date.now())));\n }\n throw new TeamRepoError(\"verification-timeout\", `repository verification timed out after ${args.timeoutSeconds} second${args.timeoutSeconds === 1 ? \"\" : \"s\"}`);\n}\nasync function _persistRepoTerminal(client, captainId, args, request) {\n if (request.status === \"started\") {\n try {\n const reason = _verifiedRepoReason(request);\n return await client.setTeamRepositoryState(captainId, args.session, _repoState(args.gitRepoUrl, \"verified\", reason));\n }\n catch (error) {\n const reason = error instanceof Error ? error.message : \"Moderator host returned an invalid repository verification result\";\n await client.setTeamRepositoryState(captainId, args.session, _repoState(args.gitRepoUrl, \"failed\", reason));\n throw error;\n }\n }\n const reason = request.error?.trim() || `Repository verification request ended as ${request.status}`;\n await client.setTeamRepositoryState(captainId, args.session, _repoState(args.gitRepoUrl, \"failed\", reason));\n throw new TeamRepoError(\"verification-failed\", reason);\n}\nfunction _verifiedRepoReason(request) {\n const result = request.result;\n if (result?.verified !== true || typeof result.reason !== \"string\" || !result.reason.trim()) {\n throw new TeamRepoError(\"verification-failed\", \"Moderator host returned an invalid repository verification result\");\n }\n if (typeof result.verified_at !== \"string\" || !result.verified_at || typeof result.verification_host_id !== \"string\" || !result.verification_host_id) {\n throw new TeamRepoError(\"verification-failed\", \"Moderator host returned an incomplete repository verification result\");\n }\n if (!Number.isFinite(Date.parse(result.verified_at)) || result.verification_host_id !== request.host_id) {\n throw new TeamRepoError(\"verification-failed\", \"Moderator host returned an inconsistent repository verification result\");\n }\n return result.reason.trim();\n}\nfunction _repoState(gitRepoUrl, status, reason) {\n return { git_repo_url: gitRepoUrl, git_repo_verification_status: status, git_repo_verification_reason: reason };\n}\nfunction _formatRepository(repository) {\n const url = repository.git_repo_url ?? \"not configured\";\n const reason = repository.git_repo_verification_reason ?? \"-\";\n return `Repository: ${url}\\nStatus: ${repository.git_repo_verification_status}\\nReason: ${reason}`;\n}\nfunction _parseBootstrapArgs(tokens, config) {\n const values = {};\n for (let index = 0; index < tokens.length; index += 1) {\n const token = tokens[index];\n if (!token.startsWith(\"--\"))\n throw new TeamBootstrapError(\"usage\", `unexpected argument: ${token}`);\n const flag = token.slice(2);\n if (flag !== \"template\" && flag !== \"slot\" && flag !== \"session\")\n throw new TeamBootstrapError(\"usage\", `unknown team bootstrap flag: ${token}`);\n const value = tokens[++index];\n if (!value || value.startsWith(\"--\"))\n throw new TeamBootstrapError(\"usage\", `${token} requires a value`);\n values[flag] = [...(values[flag] ?? []), value];\n }\n return {\n templateId: _singleValue(values, \"template\"),\n session: _bootstrapSession(values, config),\n assignments: _parseSlotAssignments(values.slot ?? []),\n };\n}\nfunction _singleValue(values, name) {\n const entries = values[name] ?? [];\n if (entries.length !== 1 || !entries[0].trim())\n throw new TeamBootstrapError(\"usage\", `--${name} is required exactly once`);\n return entries[0].trim();\n}\nfunction _bootstrapSession(values, config) {\n const entries = values.session ?? [];\n if (entries.length > 1)\n throw new TeamBootstrapError(\"usage\", \"--session may only be provided once\");\n const session = (entries[0] ?? config.session)?.trim();\n if (!session)\n throw new TeamBootstrapError(\"usage\", \"team bootstrap requires --session or SAILORBRIDGE_SESSION\");\n return session;\n}\nfunction _parseSlotAssignments(specs) {\n if (!specs.length)\n throw new TeamBootstrapError(\"usage\", \"at least one --slot <slot-name>=<host-id>:<engine> is required\");\n const assignments = new Map();\n for (const spec of specs) {\n const match = SLOT_SPEC_RE.exec(spec);\n if (!match)\n throw new TeamBootstrapError(\"usage\", `--slot must be <slot-name>=<host-id>:<engine>, got: ${spec}`);\n const [, slotId, hostId, engine] = match;\n if (!TEAM_BOOTSTRAP_ENGINES.has(engine))\n throw new TeamBootstrapError(\"usage\", `--slot engine must be one of ${[...TEAM_BOOTSTRAP_ENGINES].join(\", \")}, got: ${engine}`);\n if (assignments.has(slotId))\n throw new TeamBootstrapError(\"usage\", `--slot ${slotId} may only be assigned once`);\n assignments.set(slotId, { slotId, hostId, engine });\n }\n return assignments;\n}\nasync function _appliedSlots(client, captainId, args) {\n const existing = (await client.getTeamAgentSlots(captainId, args.session)).agent_slots;\n if (!existing.length)\n return (await client.applyBuiltinTeamTemplate(captainId, args.session, args.templateId)).agent_slots;\n const foreign = existing.filter((slot) => slot.template_id !== args.templateId);\n if (foreign.length) {\n throw new TeamBootstrapError(\"template-conflict\", `session already has slots from another template (${foreign.map((slot) => `${slot.slot_id}:${slot.template_id ?? \"none\"}`).join(\", \")}); refusing to overwrite with ${args.templateId}`);\n }\n return existing;\n}\nfunction _requireKnownSlots(slots, assignments) {\n const known = new Set(slots.map((slot) => slot.slot_id));\n const unknown = [...assignments.keys()].filter((slotId) => !known.has(slotId));\n if (unknown.length) {\n throw new TeamBootstrapError(\"unknown-slot\", `unknown slot name(s): ${unknown.join(\", \")}; template slots are ${[...known].join(\", \")}`);\n }\n}\nfunction _requireFullAssignment(slots, assignments) {\n const missing = slots.filter((slot) => slot.status !== \"materialized\" && !assignments.has(slot.slot_id));\n if (missing.length) {\n throw new TeamBootstrapError(\"unassigned-slot\", `slot(s) not materialized and not assigned: ${missing.map((slot) => slot.slot_id).join(\", \")}; pass --slot for each`);\n }\n}\nasync function _materializeSlot(client, captainId, session, slot, assignment) {\n if (!assignment)\n return;\n if (slot.status === \"materialized\") {\n _requireMatchingMaterializedSlot(slot, assignment);\n return;\n }\n try {\n await client.materializeTeamAgentSlot(captainId, session, {\n host_id: assignment.hostId,\n slot_id: slot.slot_id,\n spec: { role: slot.role ?? slot.role_name, engine: assignment.engine },\n });\n }\n catch (error) {\n if (error instanceof RelayHttpError && error.status === 409) {\n throw new TeamBootstrapError(\"slot-conflict\", `slot ${slot.slot_id} conflicts with existing state; not overwriting: ${error.body}`);\n }\n throw error;\n }\n}\nfunction _requireMatchingMaterializedSlot(slot, assignment) {\n const matches = slot.host_id === assignment.hostId && slot.engine === assignment.engine;\n if (matches)\n return;\n throw new TeamBootstrapError(\"slot-conflict\", `slot ${slot.slot_id} is already materialized as ${slot.agent_name}@${slot.host_id}:${slot.engine}; refusing to overwrite its host/engine with ${assignment.hostId}:${assignment.engine}`);\n}\nfunction _auditFinalState(slots) {\n const table = _slotTable(slots);\n const pending = slots.filter((slot) => slot.status !== \"materialized\");\n if (pending.length) {\n throw new TeamBootstrapError(\"not-materialized\", `${table}\\n${_pendingSlotSummary(pending)}`);\n }\n return table;\n}\nfunction _pendingSlotSummary(slots) {\n const shown = slots.slice(0, TEAM_PLAIN_LIMIT).map((slot) => slot.slot_id);\n const omitted = slots.length - shown.length;\n return `${slots.length} slot(s) not materialized: ${shown.join(\", \")}${omitted ? `; ${omitted} omitted` : \"\"}`;\n}\nfunction _slotTable(slots) {\n const headers = [\"SLOT\", \"ROLE\", \"AGENT\", \"HOST\", \"ENGINE\", \"STATUS\"];\n const shown = slots.slice(0, TEAM_PLAIN_LIMIT);\n const rows = shown.map((slot) => [slot.slot_id, slot.role_name, slot.agent_name ?? \"-\", slot.host_id ?? \"-\", slot.engine ?? \"-\", slot.status]);\n const widths = headers.map((header, index) => Math.max(header.length, ...rows.map((row) => row[index].length)));\n const table = [headers, ...rows].map((row) => row.map((value, index) => value.padEnd(widths[index])).join(\" \").trimEnd()).join(\"\\n\");\n const omitted = slots.length - shown.length;\n return `${table}\\nShown ${shown.length} of ${slots.length}${omitted ? `; ${omitted} omitted (use --format json)` : \"\"}`;\n}\n//# sourceMappingURL=team.js.map",
|
|
82
|
-
"import { readTextFile, readTextInput, rejectUnusedTextInput } from \"./text-input.js\";\nconst VALUE_FLAGS = new Set([\"file\", \"source\"]);\nconst
|
|
79
|
+
"import { RelayHttpError, } from \"./relay/index.js\";\nconst TEAM_BOOTSTRAP_ENGINES = new Set([\"claude\", \"codex\"]);\nconst SLOT_SPEC_RE = /^([^=\\s]+)=([^:@\\s]+):([^:@\\s]+)$/;\nconst TEAM_PLAIN_LIMIT = 20;\nexport class TeamBootstrapError extends Error {\n kind;\n constructor(kind, message) {\n super(message);\n this.name = \"TeamBootstrapError\";\n this.kind = kind;\n }\n}\nexport async function runTeamFromCli(client, argv, config, format) {\n if (argv[0] !== \"bootstrap\")\n throw new TeamBootstrapError(\"usage\", \"team command must be bootstrap\");\n const captainId = config.captainId;\n if (!captainId)\n throw new TeamBootstrapError(\"usage\", \"team bootstrap requires SAILORBRIDGE_CAPTAIN_ID\");\n const args = _parseBootstrapArgs(argv.slice(1), config);\n const slots = await _appliedSlots(client, captainId, args);\n _requireKnownSlots(slots, args.assignments);\n _requireFullAssignment(slots, args.assignments);\n for (const slot of slots)\n await _materializeSlot(client, captainId, args.session, slot, args.assignments.get(slot.slot_id));\n const finalSlots = (await client.getTeamAgentSlots(captainId, args.session)).agent_slots;\n return format === \"json\" ? { agent_slots: finalSlots } : _auditFinalState(finalSlots);\n}\nfunction _parseBootstrapArgs(tokens, config) {\n const values = {};\n for (let index = 0; index < tokens.length; index += 1) {\n const token = tokens[index];\n if (!token.startsWith(\"--\"))\n throw new TeamBootstrapError(\"usage\", `unexpected argument: ${token}`);\n const flag = token.slice(2);\n if (flag !== \"template\" && flag !== \"slot\" && flag !== \"session\")\n throw new TeamBootstrapError(\"usage\", `unknown team bootstrap flag: ${token}`);\n const value = tokens[++index];\n if (!value || value.startsWith(\"--\"))\n throw new TeamBootstrapError(\"usage\", `${token} requires a value`);\n values[flag] = [...(values[flag] ?? []), value];\n }\n return {\n templateId: _singleValue(values, \"template\"),\n session: _bootstrapSession(values, config),\n assignments: _parseSlotAssignments(values.slot ?? []),\n };\n}\nfunction _singleValue(values, name) {\n const entries = values[name] ?? [];\n if (entries.length !== 1 || !entries[0].trim())\n throw new TeamBootstrapError(\"usage\", `--${name} is required exactly once`);\n return entries[0].trim();\n}\nfunction _bootstrapSession(values, config) {\n const entries = values.session ?? [];\n if (entries.length > 1)\n throw new TeamBootstrapError(\"usage\", \"--session may only be provided once\");\n const session = (entries[0] ?? config.session)?.trim();\n if (!session)\n throw new TeamBootstrapError(\"usage\", \"team bootstrap requires --session or SAILORBRIDGE_SESSION\");\n return session;\n}\nfunction _parseSlotAssignments(specs) {\n if (!specs.length)\n throw new TeamBootstrapError(\"usage\", \"at least one --slot <slot-name>=<host-id>:<engine> is required\");\n const assignments = new Map();\n for (const spec of specs) {\n const match = SLOT_SPEC_RE.exec(spec);\n if (!match)\n throw new TeamBootstrapError(\"usage\", `--slot must be <slot-name>=<host-id>:<engine>, got: ${spec}`);\n const [, slotId, hostId, engine] = match;\n if (!TEAM_BOOTSTRAP_ENGINES.has(engine))\n throw new TeamBootstrapError(\"usage\", `--slot engine must be one of ${[...TEAM_BOOTSTRAP_ENGINES].join(\", \")}, got: ${engine}`);\n if (assignments.has(slotId))\n throw new TeamBootstrapError(\"usage\", `--slot ${slotId} may only be assigned once`);\n assignments.set(slotId, { slotId, hostId, engine });\n }\n return assignments;\n}\nasync function _appliedSlots(client, captainId, args) {\n const existing = (await client.getTeamAgentSlots(captainId, args.session)).agent_slots;\n if (!existing.length)\n return (await client.applyBuiltinTeamTemplate(captainId, args.session, args.templateId)).agent_slots;\n const foreign = existing.filter((slot) => slot.template_id !== args.templateId);\n if (foreign.length) {\n throw new TeamBootstrapError(\"template-conflict\", `session already has slots from another template (${foreign.map((slot) => `${slot.slot_id}:${slot.template_id ?? \"none\"}`).join(\", \")}); refusing to overwrite with ${args.templateId}`);\n }\n return existing;\n}\nfunction _requireKnownSlots(slots, assignments) {\n const known = new Set(slots.map((slot) => slot.slot_id));\n const unknown = [...assignments.keys()].filter((slotId) => !known.has(slotId));\n if (unknown.length) {\n throw new TeamBootstrapError(\"unknown-slot\", `unknown slot name(s): ${unknown.join(\", \")}; template slots are ${[...known].join(\", \")}`);\n }\n}\nfunction _requireFullAssignment(slots, assignments) {\n const missing = slots.filter((slot) => slot.status !== \"materialized\" && !assignments.has(slot.slot_id));\n if (missing.length) {\n throw new TeamBootstrapError(\"unassigned-slot\", `slot(s) not materialized and not assigned: ${missing.map((slot) => slot.slot_id).join(\", \")}; pass --slot for each`);\n }\n}\nasync function _materializeSlot(client, captainId, session, slot, assignment) {\n if (!assignment)\n return;\n if (slot.status === \"materialized\") {\n _requireMatchingMaterializedSlot(slot, assignment);\n return;\n }\n try {\n await client.materializeTeamAgentSlot(captainId, session, {\n host_id: assignment.hostId,\n slot_id: slot.slot_id,\n spec: { role: slot.role ?? slot.role_name, engine: assignment.engine },\n });\n }\n catch (error) {\n if (error instanceof RelayHttpError && error.status === 409) {\n throw new TeamBootstrapError(\"slot-conflict\", `slot ${slot.slot_id} conflicts with existing state; not overwriting: ${error.body}`);\n }\n throw error;\n }\n}\nfunction _requireMatchingMaterializedSlot(slot, assignment) {\n const matches = slot.host_id === assignment.hostId && slot.engine === assignment.engine;\n if (matches)\n return;\n throw new TeamBootstrapError(\"slot-conflict\", `slot ${slot.slot_id} is already materialized as ${slot.agent_name}@${slot.host_id}:${slot.engine}; refusing to overwrite its host/engine with ${assignment.hostId}:${assignment.engine}`);\n}\nfunction _auditFinalState(slots) {\n const table = _slotTable(slots);\n const pending = slots.filter((slot) => slot.status !== \"materialized\");\n if (pending.length) {\n throw new TeamBootstrapError(\"not-materialized\", `${table}\\n${_pendingSlotSummary(pending)}`);\n }\n return table;\n}\nfunction _pendingSlotSummary(slots) {\n const shown = slots.slice(0, TEAM_PLAIN_LIMIT).map((slot) => slot.slot_id);\n const omitted = slots.length - shown.length;\n return `${slots.length} slot(s) not materialized: ${shown.join(\", \")}${omitted ? `; ${omitted} omitted` : \"\"}`;\n}\nfunction _slotTable(slots) {\n const headers = [\"SLOT\", \"ROLE\", \"AGENT\", \"HOST\", \"ENGINE\", \"STATUS\"];\n const shown = slots.slice(0, TEAM_PLAIN_LIMIT);\n const rows = shown.map((slot) => [slot.slot_id, slot.role_name, slot.agent_name ?? \"-\", slot.host_id ?? \"-\", slot.engine ?? \"-\", slot.status]);\n const widths = headers.map((header, index) => Math.max(header.length, ...rows.map((row) => row[index].length)));\n const table = [headers, ...rows].map((row) => row.map((value, index) => value.padEnd(widths[index])).join(\" \").trimEnd()).join(\"\\n\");\n const omitted = slots.length - shown.length;\n return `${table}\\nShown ${shown.length} of ${slots.length}${omitted ? `; ${omitted} omitted (use --format json)` : \"\"}`;\n}\n//# sourceMappingURL=team.js.map",
|
|
80
|
+
"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",
|
|
83
81
|
"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",
|
|
84
82
|
"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",
|
|
85
|
-
"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, and workers by text after `login`. These reuse the SAME backend the\n// console calls through the console API, so there is 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: the captain access token authorizes the privileged console workflow;\n// the paired host credential is used only to discover hosts/workspaces. The\n// backend assigns the immutable t<N> id and every agent 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\", \"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 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(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}\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}\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(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 team 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 _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"
|
|
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 const command = argv[0];\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 _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
|
+
"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"
|
|
86
85
|
],
|
|
87
|
-
"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;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;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;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAClB,SAAS,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",
|
|
88
|
-
"debugId": "
|
|
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": "9889EE8093CEB27064756E2164756E21",
|
|
89
88
|
"names": []
|
|
90
89
|
}
|