@parlor/agent-host 0.1.0 → 0.3.0

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.
Files changed (88) hide show
  1. package/dist/acp.d.ts +21 -0
  2. package/dist/acp.d.ts.map +1 -1
  3. package/dist/acp.js +138 -12
  4. package/dist/acp.js.map +1 -1
  5. package/dist/adapter-launch.js.map +1 -1
  6. package/dist/agent-options.d.ts +17 -0
  7. package/dist/agent-options.d.ts.map +1 -0
  8. package/dist/agent-options.js +73 -0
  9. package/dist/agent-options.js.map +1 -0
  10. package/dist/agent-tools.d.ts +30 -0
  11. package/dist/agent-tools.d.ts.map +1 -0
  12. package/dist/agent-tools.js +71 -0
  13. package/dist/agent-tools.js.map +1 -0
  14. package/dist/agents.js.map +1 -1
  15. package/dist/assertion.js.map +1 -1
  16. package/dist/control.d.ts +15 -0
  17. package/dist/control.d.ts.map +1 -1
  18. package/dist/control.js.map +1 -1
  19. package/dist/daemon.d.ts +10 -2
  20. package/dist/daemon.d.ts.map +1 -1
  21. package/dist/daemon.js +149 -14
  22. package/dist/daemon.js.map +1 -1
  23. package/dist/dev-host.js.map +1 -1
  24. package/dist/device-list.js.map +1 -1
  25. package/dist/embedded.js.map +1 -1
  26. package/dist/fold.d.ts.map +1 -1
  27. package/dist/fold.js +2 -0
  28. package/dist/fold.js.map +1 -1
  29. package/dist/grants.d.ts +9 -0
  30. package/dist/grants.d.ts.map +1 -1
  31. package/dist/grants.js.map +1 -1
  32. package/dist/index.js.map +1 -1
  33. package/dist/json-file.js.map +1 -1
  34. package/dist/learned.d.ts +23 -0
  35. package/dist/learned.d.ts.map +1 -0
  36. package/dist/learned.js +36 -0
  37. package/dist/learned.js.map +1 -0
  38. package/dist/lines.js.map +1 -1
  39. package/dist/link-device.js.map +1 -1
  40. package/dist/link.js.map +1 -1
  41. package/dist/lock.js.map +1 -1
  42. package/dist/log.js.map +1 -1
  43. package/dist/main.js +105 -9
  44. package/dist/main.js.map +1 -1
  45. package/dist/mcp-proxy.d.ts +26 -3
  46. package/dist/mcp-proxy.d.ts.map +1 -1
  47. package/dist/mcp-proxy.js +180 -9
  48. package/dist/mcp-proxy.js.map +1 -1
  49. package/dist/naming.js.map +1 -1
  50. package/dist/pairing.d.ts +2 -0
  51. package/dist/pairing.d.ts.map +1 -1
  52. package/dist/pairing.js +25 -3
  53. package/dist/pairing.js.map +1 -1
  54. package/dist/paths.d.ts +2 -0
  55. package/dist/paths.d.ts.map +1 -1
  56. package/dist/paths.js +1 -0
  57. package/dist/paths.js.map +1 -1
  58. package/dist/policy.d.ts +12 -2
  59. package/dist/policy.d.ts.map +1 -1
  60. package/dist/policy.js +13 -3
  61. package/dist/policy.js.map +1 -1
  62. package/dist/pool.js.map +1 -1
  63. package/dist/prompter.d.ts +5 -0
  64. package/dist/prompter.d.ts.map +1 -1
  65. package/dist/prompter.js +15 -0
  66. package/dist/prompter.js.map +1 -1
  67. package/dist/release-main.js.map +1 -1
  68. package/dist/release.js.map +1 -1
  69. package/dist/revoke.js.map +1 -1
  70. package/dist/self.js.map +1 -1
  71. package/dist/service.js.map +1 -1
  72. package/dist/shell-path.js.map +1 -1
  73. package/dist/skeleton-kit.js.map +1 -1
  74. package/dist/spec-kit.d.ts +2 -1
  75. package/dist/spec-kit.d.ts.map +1 -1
  76. package/dist/spec-kit.js +6 -1
  77. package/dist/spec-kit.js.map +1 -1
  78. package/dist/testing/fake-agent.d.ts +12 -0
  79. package/dist/testing/fake-agent.d.ts.map +1 -1
  80. package/dist/testing/fake-agent.js +11 -1
  81. package/dist/testing/fake-agent.js.map +1 -1
  82. package/dist/trust.js.map +1 -1
  83. package/dist/turn.d.ts +7 -1
  84. package/dist/turn.d.ts.map +1 -1
  85. package/dist/turn.js +16 -3
  86. package/dist/turn.js.map +1 -1
  87. package/dist/version.js.map +1 -1
  88. package/package.json +9 -9
package/dist/main.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"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","sourcesContent":["#!/usr/bin/env node\nimport { spawn } from \"node:child_process\";\nimport { mkdtemp, rm } from \"node:fs/promises\";\nimport { tmpdir } from \"node:os\";\nimport { join } from \"node:path\";\n\nimport { defineCommand, runMain } from \"citty\";\n\nimport type { AppGrant, GrantStore } from \"./grants.js\";\nimport type { RemotePolicy } from \"./policy.js\";\nimport { printable } from \"./prompter.js\";\nimport { HOST_VERSION as version } from \"./version.js\";\n\nconst KEYCHAIN_SERVICE = \"dev.parlor.host\";\n\nfunction shutdownSignal(): AbortSignal {\n const controller = new AbortController();\n const stop = () => {\n process.off(\"SIGINT\", stop);\n process.off(\"SIGTERM\", stop);\n controller.abort();\n };\n process.on(\"SIGINT\", stop);\n process.on(\"SIGTERM\", stop);\n return controller.signal;\n}\n\nconst untilAborted = (signal: AbortSignal) =>\n new Promise<void>((resolve) => {\n if (signal.aborted) resolve();\n else signal.addEventListener(\"abort\", () => resolve(), { once: true });\n });\n\nconst errorText = (error: unknown) =>\n error instanceof Error ? error.message : String(error);\n\nfunction fail(message: string): void {\n process.stderr.write(`${printable(message)}\\n`);\n process.exitCode = 1;\n}\n\nasync function host() {\n const [\n { acpLauncher },\n { HOST_PROTOCOL },\n { CONTROL_PROTOCOL, connectControl },\n { createHostDaemon, HostAlreadyRunning },\n { fileGrantStore, keychainHostKeys },\n { LOCK_TOKEN_ENV },\n { createMcpProxy },\n { hostPaths },\n { changePolicy, DEFAULT_POLICY, loadPolicy },\n { createSessionPool },\n { macDialogPrompter, terminalPrompter },\n { revokeGrant },\n { fileTrustStore },\n { ensureService },\n { unregisterAgentTools, agentNames },\n { detectAgents, loadProfiles },\n { agentEnvironment },\n ] = await Promise.all([\n import(\"./acp.js\"),\n import(\"@parlor/chat\"),\n import(\"./control.js\"),\n import(\"./daemon.js\"),\n import(\"./grants.js\"),\n import(\"./lock.js\"),\n import(\"./mcp-proxy.js\"),\n import(\"./paths.js\"),\n import(\"./policy.js\"),\n import(\"./pool.js\"),\n import(\"./prompter.js\"),\n import(\"./revoke.js\"),\n import(\"./trust.js\"),\n import(\"./service.js\"),\n import(\"./agent-tools.js\"),\n import(\"./agents.js\"),\n import(\"./shell-path.js\"),\n ]);\n type Paths = ReturnType<typeof hostPaths>;\n type Grants = ReturnType<typeof fileGrantStore>;\n type Prompter = ReturnType<typeof terminalPrompter>;\n const release = {\n version,\n protocols: { min: 1, max: HOST_PROTOCOL },\n control: CONTROL_PROTOCOL,\n };\n const daemonFor = (paths: Paths, grants: Grants, prompter: Prompter) =>\n createHostDaemon({\n release,\n paths,\n grants,\n keys: keychainHostKeys(KEYCHAIN_SERVICE),\n trust: fileTrustStore(paths.trust),\n pool: createSessionPool(paths.sessions),\n proxy: createMcpProxy(\"parlor-host\"),\n launcher: acpLauncher(),\n prompter,\n policy: DEFAULT_POLICY,\n lockToken: process.env[LOCK_TOKEN_ENV],\n });\n const disconnectFrom = async (origin: string) => {\n const paths = hostPaths();\n const client = await connectControl(paths.control);\n if (client) {\n const reply = await client.send({ op: \"disconnect\", appOrigin: origin });\n client.close();\n if (!reply.ok) throw new Error(reply.error);\n return reply.agentTools;\n }\n const grants = fileGrantStore(paths.grants);\n const grant = await grants.get(origin);\n if (!grant) throw new Error(`This computer is not connected to ${origin}.`);\n const tools = grant.agentTools;\n let removed: { readonly name: string; readonly agents: string } | undefined;\n if (tools?.name && tools.agents?.length) {\n const profiles = await loadProfiles(paths.agents);\n const installed = await detectAgents(profiles);\n const listed = { name: tools.name, agents: tools.agents };\n await unregisterAgentTools(\n {\n profiles: profiles.filter((profile) =>\n installed.some((a) => a.id === profile.id),\n ),\n hostCommand: join(paths.root, \"bin\", \"parlor-host\"),\n env: agentEnvironment,\n },\n listed,\n );\n removed = { name: tools.name, agents: agentNames(profiles, listed) };\n }\n const keys = keychainHostKeys(KEYCHAIN_SERVICE);\n await revokeGrant({\n appOrigin: origin,\n appName: grant.appName,\n assert: (request) => keys.assert(origin, request),\n });\n await grants.remove(origin);\n await keys.remove(origin);\n await fileTrustStore(paths.trust).forget(origin);\n return removed;\n };\n return {\n changePolicy,\n connectControl,\n DEFAULT_POLICY,\n daemonFor,\n disconnectFrom,\n ensureService,\n fileGrantStore,\n HostAlreadyRunning,\n fileTrustStore,\n hostPaths,\n keychainHostKeys,\n loadPolicy,\n macDialogPrompter,\n release,\n terminalPrompter,\n };\n}\n\nconst link = defineCommand({\n meta: {\n name: \"link\",\n description: \"Link a device showing a link code to this computer's agents\",\n },\n args: {\n url: { type: \"positional\", required: true, description: \"The app's URL\" },\n code: {\n type: \"positional\",\n required: true,\n description: \"The code the device shows\",\n },\n },\n async run({ args }) {\n const { unsupportedHostPlatform } = await import(\"./naming.js\");\n const unsupported = unsupportedHostPlatform();\n if (unsupported) {\n fail(unsupported);\n return;\n }\n const [kit, { linkDevice }, { askYesNo }, { computerName }] = await Promise.all([\n host(),\n import(\"./link-device.js\"),\n import(\"./prompter.js\"),\n import(\"./naming.js\"),\n ]);\n const origin = new URL(args.url).origin;\n const paths = kit.hostPaths();\n const grant = await kit.fileGrantStore(paths.grants).get(origin);\n if (!grant || grant.declined) {\n fail(\n `This computer is not connected to ${origin}. Run \\`npx @parlor/agent-host connect ${origin}\\` first.`,\n );\n return;\n }\n const keys = kit.keychainHostKeys(KEYCHAIN_SERVICE);\n let outcome: Awaited<ReturnType<typeof linkDevice>>;\n try {\n outcome = await linkDevice({\n appOrigin: origin,\n code: args.code,\n assert: (request) => keys.assert(origin, request),\n trust: kit.fileTrustStore(paths.trust),\n confirm: (device) =>\n askYesNo(\n `Link ${device.name} to your agents on ${computerName()} for ${grant.appName} as ${grant.account.email ?? grant.account.name}?`,\n ),\n });\n } catch (error) {\n fail(errorText(error));\n return;\n }\n if (!outcome.linked) {\n fail(\"Not linked.\");\n return;\n }\n const client = await kit.connectControl(paths.control);\n if (client) {\n await client.send({ op: \"connect\", appOrigin: origin });\n client.close();\n }\n process.stdout.write(\n `Linked ${printable(outcome.device.name)}. It can use your agents now.\\n`,\n );\n },\n});\n\nconst devices = defineCommand({\n meta: {\n name: \"devices\",\n description: \"List the devices that can use this computer's agents, or remove one\",\n },\n args: {\n url: { type: \"positional\", required: true, description: \"The app's URL\" },\n remove: { type: \"string\", description: \"The id of a device to remove\" },\n },\n async run({ args }) {\n const [kit, { describeDevices, removeDevice }] = await Promise.all([\n host(),\n import(\"./device-list.js\"),\n ]);\n const origin = new URL(args.url).origin;\n const paths = kit.hostPaths();\n const grant = await kit.fileGrantStore(paths.grants).get(origin);\n if (!grant || grant.declined) {\n fail(`This computer is not connected to ${origin}.`);\n return;\n }\n const trust = kit.fileTrustStore(paths.trust);\n if (!args.remove) {\n process.stdout.write(describeDevices(grant.appName, await trust.list(origin)));\n return;\n }\n let removed: Awaited<ReturnType<typeof removeDevice>>;\n try {\n removed = await removeDevice(trust, origin, args.remove);\n } catch (error) {\n fail(errorText(error));\n return;\n }\n const client = await kit.connectControl(paths.control);\n if (client) {\n await client.send({ op: \"connect\", appOrigin: origin });\n client.close();\n }\n process.stdout.write(\n `Removed ${printable(removed.name)}. It must be linked again to use your agents here.\\n`,\n );\n },\n});\n\nconst connect = defineCommand({\n meta: { name: \"connect\", description: \"Connect this computer to a Parlor app\" },\n args: { url: { type: \"positional\", required: true, description: \"The app's URL\" } },\n async run({ args }) {\n const [\n kit,\n { pair, UnrevokedGrant },\n { computerName, platformName, unsupportedHostPlatform },\n ] = await Promise.all([host(), import(\"./pairing.js\"), import(\"./naming.js\")]);\n const unsupported = unsupportedHostPlatform();\n if (unsupported) {\n fail(unsupported);\n return;\n }\n const origin = new URL(args.url).origin;\n const paths = kit.hostPaths();\n const grants = kit.fileGrantStore(paths.grants);\n let grant = await grants.get(origin);\n const alreadyConnected = grant !== undefined && !grant.declined;\n if (grant?.declined) {\n try {\n await kit.disconnectFrom(origin);\n } catch (error) {\n fail(errorText(error));\n return;\n }\n grant = undefined;\n }\n if (!grant) {\n let outcome: Awaited<ReturnType<typeof pair>>;\n try {\n outcome = await pair({\n appOrigin: origin,\n hostName: computerName(),\n platform: platformName(),\n keys: kit.keychainHostKeys(KEYCHAIN_SERVICE),\n workspaceRoot: paths.workspaces,\n offerAgentTools: true,\n channel: {\n kind: \"browser\",\n open: async (url) => {\n process.stdout.write(\n `Approve the connection in your browser. If it did not open, visit:\\n${url}\\n`,\n );\n spawn(\"open\", [url], { stdio: \"ignore\", detached: true })\n .on(\"error\", () => undefined)\n .unref();\n },\n },\n });\n } catch (error) {\n if (!(error instanceof UnrevokedGrant)) throw error;\n await grants.save(error.grant);\n fail(`${error.message} Run \\`parlor-host disconnect ${origin}\\` to try again.`);\n return;\n }\n if (!outcome.paired) {\n const why = {\n declined_locally: \"You did not confirm the connection.\",\n declined_in_app: \"The connection was cancelled in the browser.\",\n timeout: \"The connection was not approved within 10 minutes.\",\n }[outcome.reason];\n fail(`Not connected. ${why}`);\n return;\n }\n grant = outcome.grant;\n await grants.save(grant);\n }\n const adopted = await kit.ensureService(paths, {\n kind: \"cli\",\n release: kit.release,\n });\n if (adopted.kind === \"refused\") {\n fail(\n \"An older Parlor Host is already running on this computer; stop it, then connect again.\",\n );\n return;\n }\n const client = await kit.connectControl(paths.control);\n if (!client) {\n fail(\"Parlor Host stopped answering.\");\n return;\n }\n const reply = await client.send({ op: \"connect\", appOrigin: origin });\n client.close();\n if (!reply.ok) {\n fail(reply.error);\n return;\n }\n const app = printable(grant.appName);\n process.stdout.write(\n `Connected to ${app} as ${printable(grant.account.email ?? grant.account.name)}.\\n${usage(app, reply.agentTools)}Not you? Run \\`npx @parlor/agent-host disconnect ${origin}\\`.\\n`,\n );\n if (alreadyConnected) {\n process.stdout.write(\n \"This computer was already connected. To use your agents from another browser or device, open the Agent sidebar there and link it.\\n\",\n );\n if (grant.agentTools === undefined) {\n process.stdout.write(\n `To use ${app} from Claude Code and Codex here too, run \\`npx @parlor/agent-host tools ${origin}\\`.\\n`,\n );\n }\n }\n },\n});\n\n/** The two ways to use the app from this computer, for the lines after \"Connected\". */\nfunction usage(\n app: string,\n tools: { readonly name: string; readonly agents: string } | undefined,\n): string {\n const sidebar = ` - In ${app}'s agent sidebar.\\n`;\n if (!tools) return `Use your agents in ${app}'s agent sidebar.\\n`;\n return `Use it two ways:\\n${sidebar} - In ${tools.agents} on this computer: ask them to \"use ${tools.name} to ...\". They ask you before their first change in each conversation.\\n`;\n}\n\nconst tools = defineCommand({\n meta: {\n name: \"tools\",\n description:\n \"Let the coding agents on this computer use an app outside its sidebar, or stop them\",\n },\n args: {\n url: { type: \"positional\", required: true, description: \"The app's URL\" },\n off: { type: \"boolean\", description: \"Stop them; the sidebar keeps working\" },\n },\n async run({ args }) {\n const kit = await host();\n const origin = new URL(args.url).origin;\n const client = await kit.connectControl(kit.hostPaths().control);\n if (!client) {\n fail(\n `Parlor Host is not running. Run \\`npx @parlor/agent-host connect ${origin}\\` first.`,\n );\n return;\n }\n const reply = await client.send({\n op: \"agent_tools\",\n appOrigin: origin,\n on: !args.off,\n });\n client.close();\n if (!reply.ok) {\n fail(reply.error);\n return;\n }\n process.stdout.write(\n args.off\n ? `The coding agents on this computer no longer use ${origin}. Its sidebar still works.\\n`\n : reply.agentTools\n ? `${reply.agentTools.agents} can use ${origin}: ask them to \"use ${reply.agentTools.name} to ...\".\\n`\n : \"No coding agent here can take it: install Claude Code or Codex, then run this again.\\n\",\n );\n },\n});\n\nconst disconnect = defineCommand({\n meta: { name: \"disconnect\", description: \"Disconnect this computer from a Parlor app\" },\n args: { url: { type: \"positional\", required: true, description: \"The app's URL\" } },\n async run({ args }) {\n const kit = await host();\n const origin = new URL(args.url).origin;\n let removed: Awaited<ReturnType<typeof kit.disconnectFrom>>;\n try {\n removed = await kit.disconnectFrom(origin);\n } catch (error) {\n fail(errorText(error));\n return;\n }\n process.stdout.write(\n `Disconnected this computer from ${origin}: its sidebar can no longer reach your agents here.\\n${\n removed\n ? `Removed ${removed.name} from ${removed.agents}, so they cannot change it either.\\n`\n : \"\"\n }`,\n );\n },\n});\n\nconst status = defineCommand({\n meta: { name: \"status\", description: \"Show the apps this computer serves\" },\n args: { json: { type: \"boolean\", description: \"Print one JSON line\" } },\n async run({ args }) {\n const kit = await host();\n const client = await kit.connectControl(kit.hostPaths().control);\n const reply = client ? await client.send({ op: \"status\" }) : undefined;\n client?.close();\n const current = reply?.ok\n ? { ...reply.status, grants: reply.grants }\n : ({ state: \"stopped\" } as const);\n if (args.json) {\n process.stdout.write(`${JSON.stringify(current)}\\n`);\n } else if (current.state === \"stopped\") {\n process.stdout.write(\"Parlor Host is not running.\\n\");\n } else {\n const apps = current.apps.map((app) => ` ${app}`).join(\"\\n\");\n process.stdout.write(\n `Parlor Host ${current.version} is serving:\\n${apps || \" no app yet\"}\\n`,\n );\n }\n },\n});\n\nconst daemon = defineCommand({\n meta: {\n name: \"daemon\",\n description: \"Run the background host for every connected app\",\n },\n args: {\n ensure: {\n type: \"boolean\",\n description:\n \"Adopt, install or upgrade the per-user service, print one JSON line, exit\",\n },\n app: { type: \"string\", description: \"With --ensure: the app's bundle id\" },\n binary: { type: \"string\", description: \"With --ensure: the bundled parlor-host\" },\n signature: { type: \"string\", description: \"With --ensure: its parlor-host.sig\" },\n },\n async run({ args }) {\n const kit = await host();\n const paths = kit.hostPaths();\n if (args.ensure) {\n if (!args.app || !args.binary || !args.signature) {\n fail(\"--ensure needs --app, --binary and --signature.\");\n return;\n }\n const started = performance.now();\n const outcome = await kit.ensureService(paths, {\n kind: \"desktop-sidecar\",\n app: args.app,\n release: kit.release,\n binary: args.binary,\n signature: args.signature,\n });\n process.stdout.write(\n `${JSON.stringify({\n event: \"ensure\",\n outcome: outcome.kind,\n ms: Math.round(performance.now() - started),\n ...(outcome.kind === \"refused\" ? { reason: outcome.reason } : {}),\n })}\\n`,\n );\n return;\n }\n const shutdown = shutdownSignal();\n const running = kit.daemonFor(\n paths,\n kit.fileGrantStore(paths.grants),\n process.platform === \"darwin\" ? kit.macDialogPrompter() : kit.terminalPrompter(),\n );\n try {\n await running.start();\n } catch (error) {\n if (error instanceof kit.HostAlreadyRunning) process.exit(0);\n throw error;\n }\n const handedOver = running.drained.then(() => true);\n if (await Promise.race([handedOver, untilAborted(shutdown).then(() => false)])) {\n process.exit(0);\n }\n await running.stop();\n process.exit(0);\n },\n});\n\nconst config = defineCommand({\n meta: {\n name: \"config\",\n description: \"Show or set what this computer enforces on remote turns\",\n },\n args: {\n answers: {\n type: \"string\",\n description:\n \"Where an agent's permission prompts are answered: presence or computer\",\n },\n \"prompt-presence\": {\n type: \"string\",\n description:\n \"Hours a linked device sends before it confirms with Face ID or Touch ID again, or off\",\n },\n \"agent-mode\": {\n type: \"string\",\n description:\n \"auto: the agent's own safety review decides and asks only for what it flags; ask: it asks before every action\",\n },\n },\n async run({ args }) {\n const kit = await host();\n const { policy } = kit.hostPaths();\n let change: Partial<RemotePolicy> = {};\n const { answers } = args;\n if (answers !== undefined) {\n if (answers !== \"presence\" && answers !== \"computer\") {\n fail(\"--answers takes presence or computer.\");\n return;\n }\n change = { ...change, answers };\n }\n const hours = args[\"prompt-presence\"];\n if (hours !== undefined) {\n const maxAgeHours = Number(hours);\n if (hours !== \"off\" && !(Number.isFinite(maxAgeHours) && maxAgeHours > 0)) {\n fail(\"--prompt-presence takes a number of hours or off.\");\n return;\n }\n change = { ...change, promptPresence: hours === \"off\" ? \"off\" : { maxAgeHours } };\n }\n const agentMode = args[\"agent-mode\"];\n if (agentMode !== undefined) {\n if (agentMode !== \"auto\" && agentMode !== \"ask\") {\n fail(\"--agent-mode takes auto or ask.\");\n return;\n }\n change = { ...change, agentMode };\n }\n const current =\n Object.keys(change).length === 0\n ? await kit.loadPolicy(policy, kit.DEFAULT_POLICY)\n : await kit.changePolicy(policy, kit.DEFAULT_POLICY, change);\n process.stdout.write(`${JSON.stringify(current)}\\n`);\n },\n});\n\nconst dev = defineCommand({\n meta: { name: \"dev\", description: \"Serve a local `parlor dev` server\" },\n args: {\n app: { type: \"string\", required: true, description: \"http://localhost:<port>\" },\n },\n async run({ args }) {\n const [kit, { NoDevAuth, requestDevHostToken }] = await Promise.all([\n host(),\n import(\"./dev-host.js\"),\n ]);\n const origin = new URL(args.app).origin;\n const shutdown = shutdownSignal();\n const stopped = untilAborted(shutdown);\n let hostToken: string;\n try {\n hostToken = await requestDevHostToken(origin, shutdown);\n } catch (error) {\n if (shutdown.aborted) process.exit();\n if (!(error instanceof NoDevAuth)) throw error;\n process.stdout.write(\n \"Parlor Host: this app signs people in itself; connect this computer from its sidebar.\\n\",\n );\n return;\n }\n const home = kit.hostPaths();\n const shared = await kit.connectControl(home.control);\n if (shared) {\n const reply = await shared.send({ op: \"dev_attach\", appOrigin: origin, hostToken });\n if (!reply.ok) fail(reply.error);\n await stopped;\n await shared.send({ op: \"dev_detach\", appOrigin: origin });\n shared.close();\n process.exit();\n }\n const root = await mkdtemp(join(tmpdir(), \"parlor-host-dev-\"));\n const paths = {\n ...kit.hostPaths(root),\n agents: home.agents,\n workspaces: home.workspaces,\n };\n const own = kit.daemonFor(paths, memoryGrants(), kit.terminalPrompter());\n await own.start();\n const client = await kit.connectControl(paths.control);\n const reply = await client!.send({ op: \"dev_attach\", appOrigin: origin, hostToken });\n client!.close();\n if (!reply.ok) fail(reply.error);\n await stopped;\n await own.stop();\n await rm(root, { recursive: true, force: true });\n process.exit();\n },\n});\n\nfunction memoryGrants(): GrantStore {\n const grants = new Map<string, AppGrant>();\n return {\n list: async () => [...grants.values()],\n get: async (appOrigin) => grants.get(appOrigin),\n save: async (grant) => void grants.set(grant.appOrigin, grant),\n remove: async (appOrigin) => void grants.delete(appOrigin),\n };\n}\n\nconst mcpProxy = defineCommand({\n meta: { name: \"mcp-proxy\", description: \"Internal: an agent's stdio MCP server\" },\n args: {\n app: {\n type: \"string\",\n description: \"Serve this app to a coding agent outside the sidebar\",\n },\n },\n async run({ args }) {\n const [{ runMcpProxyProcess }, { hostPaths }] = await Promise.all([\n import(\"./mcp-proxy.js\"),\n import(\"./paths.js\"),\n ]);\n await runMcpProxyProcess(\n process.env,\n args.app\n ? { appOrigin: new URL(args.app).origin, socketPath: hostPaths().proxy }\n : undefined,\n );\n },\n});\n\nvoid runMain(\n defineCommand({\n meta: {\n name: \"parlor-host\",\n version,\n description: \"Run your own agents for your Parlor apps\",\n },\n subCommands: {\n connect,\n link,\n devices,\n disconnect,\n status,\n daemon,\n config,\n dev,\n \"mcp-proxy\": mcpProxy,\n tools,\n },\n }),\n);\n"]}
@@ -9,6 +9,11 @@ import type { StdioMcpServer } from "./acp.js";
9
9
  export interface McpProxy {
10
10
  listen(socketPath: string): Promise<void>;
11
11
  open(appServer: string, appOrigin: string): ProxySession;
12
+ /**
13
+ * Serves `parlor-host mcp-proxy --app <origin>`: a coding agent on this computer outside
14
+ * any turn, such as Claude Code in a terminal. `undefined` refuses the app.
15
+ */
16
+ serveOutside(resolve: (appOrigin: string) => OutsideApp | undefined): void;
12
17
  stopListening(): Promise<void>;
13
18
  close(): Promise<void>;
14
19
  }
@@ -22,12 +27,30 @@ export interface ProxySession {
22
27
  end(): void;
23
28
  dispose(): void;
24
29
  }
30
+ /** An app a coding agent on this computer may use outside its sidebar. */
31
+ export interface OutsideApp {
32
+ readonly appOrigin: string;
33
+ readonly appName: string;
34
+ /** The name the user asks the agent with, its MCP server name. */
35
+ readonly name: string;
36
+ /** Whose account the agent acts as: its email, or its name. */
37
+ readonly account: string;
38
+ /** A token for `agent`'s calls, fresh enough to use now. */
39
+ token(agent: string): Promise<string>;
40
+ /** Asks on this computer, for an agent that cannot ask the user itself. */
41
+ askHere(question: string): Promise<boolean>;
42
+ }
25
43
  export declare const NO_TURN_MESSAGE = "No turn is active: the user has not asked anything right now. Wait for their next message.";
26
44
  export declare const DISCONNECTED_MESSAGE = "This computer no longer serves the app: it was disconnected, or Parlor Host stopped.";
27
45
  export declare function createMcpProxy(hostBinary: string): McpProxy;
28
46
  /**
29
- * `parlor-host mcp-proxy`: stdio to the daemon socket and back. Once the daemon hangs up,
30
- * every request still unanswered, and every later one, is answered with an error here.
47
+ * `parlor-host mcp-proxy`: stdio to the daemon socket and back. Inside a turn the
48
+ * environment names the session; `--app` serves an agent outside any turn. Once the daemon
49
+ * hangs up, every request still unanswered, and every later one, is answered with an error
50
+ * here.
31
51
  */
32
- export declare function runMcpProxyProcess(env: NodeJS.ProcessEnv): Promise<void>;
52
+ export declare function runMcpProxyProcess(env: NodeJS.ProcessEnv, outside?: {
53
+ readonly appOrigin: string;
54
+ readonly socketPath: string;
55
+ }): Promise<void>;
33
56
  //# sourceMappingURL=mcp-proxy.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-proxy.d.ts","sourceRoot":"","sources":["../src/mcp-proxy.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEjD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAI/C;;;;;GAKG;AACH,MAAM,WAAW,QAAQ;IACvB,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1C,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,YAAY,CAAC;IACzD,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,mCAAmC;IACnC,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAChC,+FAA+F;IAC/F,KAAK,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI,CAAC;IAC/B,KAAK,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI,CAAC;IAC/B,GAAG,IAAI,IAAI,CAAC;IACZ,OAAO,IAAI,IAAI,CAAC;CACjB;AAED,eAAO,MAAM,eAAe,+FACkE,CAAC;AAE/F,eAAO,MAAM,oBAAoB,yFACuD,CAAC;AA6LzF,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,QAAQ,CAiG3D;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAyC9E"}
1
+ {"version":3,"file":"mcp-proxy.d.ts","sourceRoot":"","sources":["../src/mcp-proxy.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEjD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAI/C;;;;;GAKG;AACH,MAAM,WAAW,QAAQ;IACvB,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1C,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,YAAY,CAAC;IACzD;;;OAGG;IACH,YAAY,CAAC,OAAO,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,UAAU,GAAG,SAAS,GAAG,IAAI,CAAC;IAC3E,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,mCAAmC;IACnC,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAChC,+FAA+F;IAC/F,KAAK,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI,CAAC;IAC/B,KAAK,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI,CAAC;IAC/B,GAAG,IAAI,IAAI,CAAC;IACZ,OAAO,IAAI,IAAI,CAAC;CACjB;AAED,0EAA0E;AAC1E,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,kEAAkE;IAClE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,+DAA+D;IAC/D,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,4DAA4D;IAC5D,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACtC,2EAA2E;IAC3E,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC7C;AAED,eAAO,MAAM,eAAe,+FACkE,CAAC;AAE/F,eAAO,MAAM,oBAAoB,yFACuD,CAAC;AA0VzF,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,QAAQ,CAsH3D;AAUD;;;;;GAKG;AACH,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,MAAM,CAAC,UAAU,EACtB,OAAO,CAAC,EAAE;IAAE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GACpE,OAAO,CAAC,IAAI,CAAC,CAmDf"}
package/dist/mcp-proxy.js CHANGED
@@ -7,6 +7,12 @@ import { onLines } from "./lines.js";
7
7
  import { logEvent } from "./log.js";
8
8
  export const NO_TURN_MESSAGE = "No turn is active: the user has not asked anything right now. Wait for their next message.";
9
9
  export const DISCONNECTED_MESSAGE = "This computer no longer serves the app: it was disconnected, or Parlor Host stopped.";
10
+ const OUTSIDE_PREFIX = "app ";
11
+ const AGENT_NAMES = {
12
+ "claude-code": "Claude Code",
13
+ "codex-mcp-client": "Codex",
14
+ codex: "Codex",
15
+ };
10
16
  const SOCKET_ENV = "PARLOR_HOST_PROXY_SOCKET";
11
17
  const NONCE_ENV = "PARLOR_HOST_PROXY_NONCE";
12
18
  const NO_TURN_CODE = -32000;
@@ -162,22 +168,166 @@ function handle(live, line, reply) {
162
168
  }
163
169
  void forward(live, token, line, message, reply);
164
170
  }
171
+ /**
172
+ * One agent outside a turn, on one socket. Reads run as asked; the first change in the
173
+ * conversation waits for the user, through the agent's own elicitation where it has it.
174
+ */
175
+ function outsideSession(app, socket, reply) {
176
+ const live = {
177
+ appOrigin: app.appOrigin.replace(/\/+$/, ""),
178
+ token: undefined,
179
+ protocolVersion: undefined,
180
+ initialized: undefined,
181
+ tools: undefined,
182
+ inflight: new Set(),
183
+ sockets: new Set([socket]),
184
+ };
185
+ let agent = "A coding agent";
186
+ let elicits = false;
187
+ let changesAllowed;
188
+ let asked = 0;
189
+ const answers = new Map();
190
+ const send = async (line, message, onReply = reply) => {
191
+ let token;
192
+ try {
193
+ token = await app.token(agent);
194
+ }
195
+ catch (error) {
196
+ if (message.id !== undefined) {
197
+ onReply(failure(message.id, REFUSED_CODE, `${app.appName} refused: ${String(error)}`));
198
+ }
199
+ return;
200
+ }
201
+ await forward(live, token, line, message, onReply);
202
+ };
203
+ const readOnly = async (tool) => {
204
+ if (live.tools === undefined) {
205
+ const id = `parlor-tools-${++asked}`;
206
+ const list = { jsonrpc: "2.0", id, method: "tools/list", params: {} };
207
+ await send(JSON.stringify(list), list, () => undefined);
208
+ }
209
+ const tools = live.tools
210
+ ?.tools;
211
+ return (tools?.find((entry) => entry.name === tool)?.annotations?.readOnlyHint === true);
212
+ };
213
+ const askToChange = () => {
214
+ const question = `${agent} wants to change ${app.appName} (${app.appOrigin}) as ${app.account}. Allow changes from this conversation?`;
215
+ if (!elicits)
216
+ return app.askHere(question);
217
+ const id = `parlor-allow-${++asked}`;
218
+ const answered = new Promise((resolve) => answers.set(id, resolve));
219
+ reply(JSON.stringify({
220
+ jsonrpc: "2.0",
221
+ id,
222
+ method: "elicitation/create",
223
+ params: {
224
+ message: question,
225
+ requestedSchema: { type: "object", properties: {} },
226
+ },
227
+ }));
228
+ return answered;
229
+ };
230
+ return (line) => {
231
+ const message = parse(line);
232
+ if (!message)
233
+ return;
234
+ if (message.method === undefined && typeof message.id === "string") {
235
+ const answer = answers.get(message.id);
236
+ if (answer) {
237
+ answers.delete(message.id);
238
+ const action = message.result
239
+ ?.action;
240
+ answer(action === "accept");
241
+ return;
242
+ }
243
+ }
244
+ if (message.method === "initialize") {
245
+ const params = message.params;
246
+ const client = params?.clientInfo?.name;
247
+ if (typeof client === "string" && client !== "")
248
+ agent = AGENT_NAMES[client] ?? client;
249
+ elicits = params?.capabilities?.elicitation !== undefined;
250
+ logEvent("outside_agent", { appOrigin: app.appOrigin, agent, elicits });
251
+ void send(line, message, (answer) => reply(withGuidance(answer, app, agent)));
252
+ return;
253
+ }
254
+ if (message.method === "tools/call" && message.id !== undefined) {
255
+ const tool = message.params
256
+ ?.name;
257
+ void (async () => {
258
+ if (typeof tool === "string" && !(await readOnly(tool))) {
259
+ changesAllowed ??= askToChange().then((allowed) => {
260
+ if (!allowed)
261
+ changesAllowed = undefined;
262
+ return allowed;
263
+ });
264
+ if (!(await changesAllowed)) {
265
+ reply(result(message.id, {
266
+ content: [
267
+ {
268
+ type: "text",
269
+ text: `Nothing was changed: the user did not allow changes to ${app.appName} from this conversation, or could not be asked here. Tell them so. If they ask for the change again, they are asked again first; nothing in ${app.appName} itself turns this on.`,
270
+ },
271
+ ],
272
+ isError: true,
273
+ }));
274
+ return;
275
+ }
276
+ }
277
+ await send(line, message);
278
+ })();
279
+ return;
280
+ }
281
+ void send(line, message);
282
+ };
283
+ }
284
+ /** The app's own instructions, led by when to use it at all: only when the user names it. */
285
+ function withGuidance(line, app, agent) {
286
+ const answer = parse(line);
287
+ const initialized = answer?.result;
288
+ if (!initialized || typeof initialized !== "object")
289
+ return line;
290
+ const guidance = `Use these tools only when the user names ${app.appName} or "${app.name}" in their request: they act on the live app at ${app.appOrigin} as ${app.account}, and ${agent} runs outside the app here. Reading is free; before the first change in this conversation the user is asked to allow changes.`;
291
+ const own = typeof initialized.instructions === "string" ? initialized.instructions : "";
292
+ return JSON.stringify({
293
+ ...answer,
294
+ result: { ...initialized, instructions: own ? `${guidance}\n\n${own}` : guidance },
295
+ });
296
+ }
165
297
  export function createMcpProxy(hostBinary) {
166
298
  const sessions = new Map();
167
299
  let server;
168
300
  let socketPath;
301
+ let outside = () => undefined;
169
302
  const accept = (socket) => {
170
303
  let live;
304
+ let outsideLine;
171
305
  const reply = (line) => {
172
306
  if (!socket.destroyed)
173
307
  socket.write(`${line}\n`);
174
308
  };
175
309
  onLines(socket, (line) => {
310
+ if (outsideLine !== undefined) {
311
+ outsideLine(line);
312
+ return;
313
+ }
176
314
  if (live !== undefined) {
177
315
  handle(live, line, reply);
178
316
  return;
179
317
  }
180
- live = sessions.get(line.trim());
318
+ const first = line.trim();
319
+ if (first.startsWith(OUTSIDE_PREFIX)) {
320
+ const appOrigin = first.slice(OUTSIDE_PREFIX.length);
321
+ const app = outside(appOrigin);
322
+ if (!app) {
323
+ reply(JSON.stringify({ refused: notServedMessage(appOrigin) }));
324
+ socket.end();
325
+ return;
326
+ }
327
+ outsideLine = outsideSession(app, socket, reply);
328
+ return;
329
+ }
330
+ live = sessions.get(first);
181
331
  if (live)
182
332
  live.sockets.add(socket);
183
333
  else
@@ -199,6 +349,9 @@ export function createMcpProxy(hostBinary) {
199
349
  server = listening;
200
350
  socketPath = path;
201
351
  },
352
+ serveOutside(resolve) {
353
+ outside = resolve;
354
+ },
202
355
  open(appServer, appOrigin) {
203
356
  if (socketPath === undefined)
204
357
  throw new Error("The MCP proxy is not listening yet.");
@@ -269,29 +422,47 @@ export function createMcpProxy(hostBinary) {
269
422
  },
270
423
  };
271
424
  }
425
+ /** Why an agent outside a turn cannot use `appOrigin` here. */
426
+ function notServedMessage(appOrigin) {
427
+ return `This computer does not let coding agents use ${appOrigin}: it is not connected, or that was turned off. Connect it again with \`npx @parlor/agent-host connect ${appOrigin}\`.`;
428
+ }
429
+ const notRunningMessage = (appOrigin) => `Parlor Host is not running on this computer, so ${appOrigin} cannot be reached. Open the app's agent sidebar, or run \`npx @parlor/agent-host connect ${appOrigin}\`.`;
272
430
  /**
273
- * `parlor-host mcp-proxy`: stdio to the daemon socket and back. Once the daemon hangs up,
274
- * every request still unanswered, and every later one, is answered with an error here.
431
+ * `parlor-host mcp-proxy`: stdio to the daemon socket and back. Inside a turn the
432
+ * environment names the session; `--app` serves an agent outside any turn. Once the daemon
433
+ * hangs up, every request still unanswered, and every later one, is answered with an error
434
+ * here.
275
435
  */
276
- export async function runMcpProxyProcess(env) {
277
- const path = env[SOCKET_ENV];
436
+ export async function runMcpProxyProcess(env, outside) {
437
+ const path = outside?.socketPath ?? env[SOCKET_ENV];
278
438
  const nonce = env[NONCE_ENV];
279
- if (!path || !nonce)
280
- throw new Error(`${SOCKET_ENV} and ${NONCE_ENV} must be set.`);
439
+ if (!path || (!outside && !nonce)) {
440
+ throw new Error(`${SOCKET_ENV} and ${NONCE_ENV} must be set, or --app.`);
441
+ }
442
+ let why = outside ? notRunningMessage(outside.appOrigin) : DISCONNECTED_MESSAGE;
281
443
  const unanswered = new Set();
282
444
  const toAgent = (line) => void process.stdout.write(`${line}\n`);
283
- const refuse = (id) => toAgent(failure(id, REFUSED_CODE, DISCONNECTED_MESSAGE));
445
+ const refuse = (id) => toAgent(failure(id, REFUSED_CODE, why));
284
446
  process.stdout.on("error", () => undefined);
285
447
  const daemon = connect(path);
286
448
  daemon.on("error", () => daemon.destroy());
449
+ daemon.once("connect", () => {
450
+ if (outside)
451
+ why = DISCONNECTED_MESSAGE;
452
+ });
287
453
  const hungUp = new Promise((resolve) => daemon.once("close", () => {
288
454
  for (const id of unanswered)
289
455
  refuse(id);
290
456
  unanswered.clear();
291
457
  resolve();
292
458
  }));
293
- daemon.write(`${nonce}\n`);
459
+ daemon.write(outside ? `${OUTSIDE_PREFIX}${outside.appOrigin}\n` : `${nonce}\n`);
294
460
  onLines(daemon, (line) => {
461
+ const refused = parse(line)?.refused;
462
+ if (typeof refused === "string") {
463
+ why = refused;
464
+ return;
465
+ }
295
466
  const message = parse(line);
296
467
  if (message?.id !== undefined && message.method === undefined) {
297
468
  unanswered.delete(message.id);
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-proxy.js","sourceRoot":"","sources":["../src/mcp-proxy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mcp-proxy.js","sourceRoot":"","sources":["../src/mcp-proxy.ts"],"names":[],"mappings":"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","sourcesContent":["import { randomBytes } from \"node:crypto\";\nimport { once } from \"node:events\";\nimport { chmod, mkdir, rm } from \"node:fs/promises\";\nimport { connect, createServer, type Server, type Socket } from \"node:net\";\nimport { dirname } from \"node:path\";\n\nimport type { Delegation } from \"@parlor/server\";\n\nimport type { StdioMcpServer } from \"./acp.js\";\nimport { onLines } from \"./lines.js\";\nimport { logEvent } from \"./log.js\";\n\n/**\n * The agent's MCP server for an app is this host: a stdio server (`parlor-host\n * mcp-proxy`) that connects back to the daemon's 0600 socket and names its session by a\n * nonce. The daemon forwards each message to `<app>/_parlor/mcp` with the current turn's\n * token, so no app credential is ever in the agent's config, logs or environment.\n */\nexport interface McpProxy {\n listen(socketPath: string): Promise<void>;\n open(appServer: string, appOrigin: string): ProxySession;\n /**\n * Serves `parlor-host mcp-proxy --app <origin>`: a coding agent on this computer outside\n * any turn, such as Claude Code in a terminal. `undefined` refuses the app.\n */\n serveOutside(resolve: (appOrigin: string) => OutsideApp | undefined): void;\n stopListening(): Promise<void>;\n close(): Promise<void>;\n}\n\nexport interface ProxySession {\n readonly nonce: string;\n /** The entry for `session/new`. */\n readonly server: StdioMcpServer;\n /** Forward with this token until `end`; a `tools/call` outside a turn gets NO_TURN_MESSAGE. */\n begin(token: Delegation): void;\n renew(token: Delegation): void;\n end(): void;\n dispose(): void;\n}\n\n/** An app a coding agent on this computer may use outside its sidebar. */\nexport interface OutsideApp {\n readonly appOrigin: string;\n readonly appName: string;\n /** The name the user asks the agent with, its MCP server name. */\n readonly name: string;\n /** Whose account the agent acts as: its email, or its name. */\n readonly account: string;\n /** A token for `agent`'s calls, fresh enough to use now. */\n token(agent: string): Promise<string>;\n /** Asks on this computer, for an agent that cannot ask the user itself. */\n askHere(question: string): Promise<boolean>;\n}\n\nexport const NO_TURN_MESSAGE =\n \"No turn is active: the user has not asked anything right now. Wait for their next message.\";\n\nexport const DISCONNECTED_MESSAGE =\n \"This computer no longer serves the app: it was disconnected, or Parlor Host stopped.\";\n\nconst OUTSIDE_PREFIX = \"app \";\nconst AGENT_NAMES: Readonly<Record<string, string>> = {\n \"claude-code\": \"Claude Code\",\n \"codex-mcp-client\": \"Codex\",\n codex: \"Codex\",\n};\n\nconst SOCKET_ENV = \"PARLOR_HOST_PROXY_SOCKET\";\nconst NONCE_ENV = \"PARLOR_HOST_PROXY_NONCE\";\nconst NO_TURN_CODE = -32000;\nconst REFUSED_CODE = -32001;\n\ntype JsonRpcId = string | number | null;\n\ninterface Message {\n readonly jsonrpc?: unknown;\n readonly id?: JsonRpcId;\n readonly method?: unknown;\n readonly result?: unknown;\n}\n\ninterface Live {\n readonly appOrigin: string;\n token: string | undefined;\n protocolVersion: string | undefined;\n initialized: unknown;\n tools: unknown;\n readonly inflight: Set<AbortController>;\n readonly sockets: Set<Socket>;\n}\n\nfunction parse(text: string): Message | undefined {\n try {\n const value: unknown = JSON.parse(text);\n return typeof value === \"object\" && value !== null && !Array.isArray(value)\n ? (value as Message)\n : undefined;\n } catch {\n return undefined;\n }\n}\n\nconst result = (id: JsonRpcId, value: unknown) =>\n JSON.stringify({ jsonrpc: \"2.0\", id, result: value });\n\nconst failure = (id: JsonRpcId, code: number, message: string) =>\n JSON.stringify({ jsonrpc: \"2.0\", id, error: { code, message } });\n\n/** One line per message on the agent's stdio: only a body with a raw newline is compacted. */\nconst asLine = (text: string) =>\n text.includes(\"\\n\") ? JSON.stringify(JSON.parse(text)) : text;\n\nfunction betweenTurns(live: Live, message: Message): string | undefined {\n if (message.id === undefined || typeof message.method !== \"string\") return undefined;\n const { id } = message;\n switch (message.method) {\n case \"ping\":\n return result(id, {});\n case \"initialize\":\n return live.initialized === undefined\n ? failure(id, NO_TURN_CODE, NO_TURN_MESSAGE)\n : result(id, live.initialized);\n case \"tools/list\":\n return live.tools === undefined\n ? failure(id, NO_TURN_CODE, NO_TURN_MESSAGE)\n : result(id, live.tools);\n case \"tools/call\":\n return result(id, {\n content: [{ type: \"text\", text: NO_TURN_MESSAGE }],\n isError: true,\n });\n default:\n return failure(id, NO_TURN_CODE, NO_TURN_MESSAGE);\n }\n}\n\nasync function* serverSentData(body: ReadableStream<Uint8Array>): AsyncGenerator<string> {\n const decoder = new TextDecoder();\n let buffer = \"\";\n let data: string[] = [];\n for await (const chunk of body) {\n buffer += decoder.decode(chunk, { stream: true });\n let end = buffer.indexOf(\"\\n\");\n while (end !== -1) {\n const line = buffer.slice(0, end).replace(/\\r$/, \"\");\n buffer = buffer.slice(end + 1);\n if (line === \"\") {\n if (data.length > 0) yield data.join(\"\\n\");\n data = [];\n } else if (line.startsWith(\"data:\")) {\n data.push(line.slice(line.startsWith(\"data: \") ? 6 : 5));\n }\n end = buffer.indexOf(\"\\n\");\n }\n }\n if (data.length > 0) yield data.join(\"\\n\");\n}\n\nfunction refusal(status: number): string {\n return status === 401\n ? \"This computer can no longer act for the app: the turn ended or the computer was disconnected.\"\n : `The app answered HTTP ${status}.`;\n}\n\nasync function forward(\n live: Live,\n token: string,\n line: string,\n message: Message,\n reply: (line: string) => void,\n): Promise<void> {\n const method = typeof message.method === \"string\" ? message.method : \"response\";\n const controller = new AbortController();\n live.inflight.add(controller);\n let status = 0;\n try {\n const response = await fetch(`${live.appOrigin}/_parlor/mcp`, {\n method: \"POST\",\n headers: {\n authorization: `Bearer ${token}`,\n accept: \"application/json, text/event-stream\",\n \"content-type\": \"application/json\",\n ...(live.protocolVersion ? { \"mcp-protocol-version\": live.protocolVersion } : {}),\n },\n body: line,\n signal: controller.signal,\n });\n status = response.status;\n const bodies: string[] = [];\n if ((response.headers.get(\"content-type\") ?? \"\").includes(\"text/event-stream\")) {\n if (response.body)\n for await (const data of serverSentData(response.body)) bodies.push(data);\n } else {\n const text = await response.text();\n if (text.trim() !== \"\") bodies.push(text);\n }\n let answered = false;\n for (const text of bodies) {\n const answer = parse(text);\n if (answer?.jsonrpc !== \"2.0\") continue;\n if (answer.id === message.id) {\n answered = true;\n if (method === \"initialize\" && answer.result !== undefined) {\n live.initialized = answer.result;\n const version = (answer.result as { readonly protocolVersion?: unknown })\n .protocolVersion;\n if (typeof version === \"string\") live.protocolVersion = version;\n }\n if (method === \"tools/list\" && answer.result !== undefined)\n live.tools = answer.result;\n }\n reply(asLine(text));\n }\n if (message.id !== undefined && !answered) {\n reply(failure(message.id, REFUSED_CODE, refusal(status)));\n }\n } catch (error) {\n if (message.id !== undefined) {\n reply(\n controller.signal.aborted\n ? failure(message.id, NO_TURN_CODE, NO_TURN_MESSAGE)\n : failure(\n message.id,\n REFUSED_CODE,\n `The app could not be reached: ${String(error)}`,\n ),\n );\n }\n } finally {\n live.inflight.delete(controller);\n logEvent(\"proxy_forward\", { appOrigin: live.appOrigin, rpcMethod: method, status });\n }\n}\n\nfunction handle(live: Live, line: string, reply: (line: string) => void): void {\n const message = parse(line);\n if (!message) return;\n const token = live.token;\n if (token === undefined) {\n const answer = betweenTurns(live, message);\n if (answer) reply(answer);\n return;\n }\n if (\n message.method === \"tools/list\" &&\n live.tools !== undefined &&\n message.id !== undefined\n ) {\n reply(result(message.id, live.tools));\n return;\n }\n void forward(live, token, line, message, reply);\n}\n\n/**\n * One agent outside a turn, on one socket. Reads run as asked; the first change in the\n * conversation waits for the user, through the agent's own elicitation where it has it.\n */\nfunction outsideSession(\n app: OutsideApp,\n socket: Socket,\n reply: (line: string) => void,\n): (line: string) => void {\n const live: Live = {\n appOrigin: app.appOrigin.replace(/\\/+$/, \"\"),\n token: undefined,\n protocolVersion: undefined,\n initialized: undefined,\n tools: undefined,\n inflight: new Set(),\n sockets: new Set([socket]),\n };\n let agent = \"A coding agent\";\n let elicits = false;\n let changesAllowed: Promise<boolean> | undefined;\n let asked = 0;\n const answers = new Map<string, (allowed: boolean) => void>();\n\n const send = async (line: string, message: Message, onReply = reply) => {\n let token: string;\n try {\n token = await app.token(agent);\n } catch (error) {\n if (message.id !== undefined) {\n onReply(\n failure(message.id, REFUSED_CODE, `${app.appName} refused: ${String(error)}`),\n );\n }\n return;\n }\n await forward(live, token, line, message, onReply);\n };\n\n const readOnly = async (tool: string): Promise<boolean> => {\n if (live.tools === undefined) {\n const id = `parlor-tools-${++asked}`;\n const list = { jsonrpc: \"2.0\", id, method: \"tools/list\", params: {} };\n await send(JSON.stringify(list), list, () => undefined);\n }\n const tools = (live.tools as { readonly tools?: readonly ToolEntry[] } | undefined)\n ?.tools;\n return (\n tools?.find((entry) => entry.name === tool)?.annotations?.readOnlyHint === true\n );\n };\n\n const askToChange = (): Promise<boolean> => {\n const question = `${agent} wants to change ${app.appName} (${app.appOrigin}) as ${app.account}. Allow changes from this conversation?`;\n if (!elicits) return app.askHere(question);\n const id = `parlor-allow-${++asked}`;\n const answered = new Promise<boolean>((resolve) => answers.set(id, resolve));\n reply(\n JSON.stringify({\n jsonrpc: \"2.0\",\n id,\n method: \"elicitation/create\",\n params: {\n message: question,\n requestedSchema: { type: \"object\", properties: {} },\n },\n }),\n );\n return answered;\n };\n\n return (line) => {\n const message = parse(line);\n if (!message) return;\n if (message.method === undefined && typeof message.id === \"string\") {\n const answer = answers.get(message.id);\n if (answer) {\n answers.delete(message.id);\n const action = (message.result as { readonly action?: unknown } | undefined)\n ?.action;\n answer(action === \"accept\");\n return;\n }\n }\n if (message.method === \"initialize\") {\n const params = (message as { readonly params?: InitializeParams }).params;\n const client = params?.clientInfo?.name;\n if (typeof client === \"string\" && client !== \"\")\n agent = AGENT_NAMES[client] ?? client;\n elicits = params?.capabilities?.elicitation !== undefined;\n logEvent(\"outside_agent\", { appOrigin: app.appOrigin, agent, elicits });\n void send(line, message, (answer) => reply(withGuidance(answer, app, agent)));\n return;\n }\n if (message.method === \"tools/call\" && message.id !== undefined) {\n const tool = (message as { readonly params?: { readonly name?: unknown } }).params\n ?.name;\n void (async () => {\n if (typeof tool === \"string\" && !(await readOnly(tool))) {\n changesAllowed ??= askToChange().then((allowed) => {\n if (!allowed) changesAllowed = undefined;\n return allowed;\n });\n if (!(await changesAllowed)) {\n reply(\n result(message.id!, {\n content: [\n {\n type: \"text\",\n text: `Nothing was changed: the user did not allow changes to ${app.appName} from this conversation, or could not be asked here. Tell them so. If they ask for the change again, they are asked again first; nothing in ${app.appName} itself turns this on.`,\n },\n ],\n isError: true,\n }),\n );\n return;\n }\n }\n await send(line, message);\n })();\n return;\n }\n void send(line, message);\n };\n}\n\ninterface ToolEntry {\n readonly name?: string;\n readonly annotations?: { readonly readOnlyHint?: boolean };\n}\n\ninterface InitializeParams {\n readonly clientInfo?: { readonly name?: unknown };\n readonly capabilities?: { readonly elicitation?: unknown };\n}\n\n/** The app's own instructions, led by when to use it at all: only when the user names it. */\nfunction withGuidance(line: string, app: OutsideApp, agent: string): string {\n const answer = parse(line);\n const initialized = answer?.result as { readonly instructions?: unknown } | undefined;\n if (!initialized || typeof initialized !== \"object\") return line;\n const guidance = `Use these tools only when the user names ${app.appName} or \"${app.name}\" in their request: they act on the live app at ${app.appOrigin} as ${app.account}, and ${agent} runs outside the app here. Reading is free; before the first change in this conversation the user is asked to allow changes.`;\n const own =\n typeof initialized.instructions === \"string\" ? initialized.instructions : \"\";\n return JSON.stringify({\n ...answer,\n result: { ...initialized, instructions: own ? `${guidance}\\n\\n${own}` : guidance },\n });\n}\n\nexport function createMcpProxy(hostBinary: string): McpProxy {\n const sessions = new Map<string, Live>();\n let server: Server | undefined;\n let socketPath: string | undefined;\n let outside: (appOrigin: string) => OutsideApp | undefined = () => undefined;\n\n const accept = (socket: Socket) => {\n let live: Live | undefined;\n let outsideLine: ((line: string) => void) | undefined;\n const reply = (line: string) => {\n if (!socket.destroyed) socket.write(`${line}\\n`);\n };\n onLines(socket, (line) => {\n if (outsideLine !== undefined) {\n outsideLine(line);\n return;\n }\n if (live !== undefined) {\n handle(live, line, reply);\n return;\n }\n const first = line.trim();\n if (first.startsWith(OUTSIDE_PREFIX)) {\n const appOrigin = first.slice(OUTSIDE_PREFIX.length);\n const app = outside(appOrigin);\n if (!app) {\n reply(JSON.stringify({ refused: notServedMessage(appOrigin) }));\n socket.end();\n return;\n }\n outsideLine = outsideSession(app, socket, reply);\n return;\n }\n live = sessions.get(first);\n if (live) live.sockets.add(socket);\n else socket.destroy();\n });\n socket.on(\"close\", () => live?.sockets.delete(socket));\n socket.on(\"error\", () => socket.destroy());\n };\n\n return {\n async listen(path) {\n await mkdir(dirname(path), { recursive: true, mode: 0o700 });\n await rm(path, { force: true });\n const listening = createServer(accept);\n await new Promise<void>((resolve, reject) => {\n listening.once(\"error\", reject);\n listening.listen(path, () => resolve());\n });\n await chmod(path, 0o600);\n server = listening;\n socketPath = path;\n },\n serveOutside(resolve) {\n outside = resolve;\n },\n open(appServer, appOrigin) {\n if (socketPath === undefined)\n throw new Error(\"The MCP proxy is not listening yet.\");\n const nonce = randomBytes(24).toString(\"base64url\");\n const live: Live = {\n appOrigin: appOrigin.replace(/\\/+$/, \"\"),\n token: undefined,\n protocolVersion: undefined,\n initialized: undefined,\n tools: undefined,\n inflight: new Set(),\n sockets: new Set(),\n };\n sessions.set(nonce, live);\n const end = () => {\n live.token = undefined;\n for (const controller of live.inflight) controller.abort();\n };\n return {\n nonce,\n server: {\n name: appServer,\n command: hostBinary,\n args: [\"mcp-proxy\"],\n env: { [SOCKET_ENV]: socketPath, [NONCE_ENV]: nonce },\n },\n begin: (token) => {\n live.token = token.token;\n },\n renew: (token) => {\n if (live.token !== undefined) live.token = token.token;\n },\n end,\n dispose: () => {\n end();\n sessions.delete(nonce);\n for (const socket of live.sockets) socket.destroy();\n },\n };\n },\n async stopListening() {\n const closing = server;\n server = undefined;\n if (!closing) return;\n closing.close();\n if (socketPath) await rm(socketPath, { force: true });\n },\n async close() {\n for (const live of sessions.values()) {\n for (const controller of live.inflight) controller.abort();\n for (const socket of live.sockets) socket.destroy();\n }\n sessions.clear();\n const closing = server;\n server = undefined;\n if (closing) {\n await new Promise<void>((resolve) => closing.close(() => resolve()));\n if (socketPath) await rm(socketPath, { force: true });\n }\n },\n };\n}\n\n/** Why an agent outside a turn cannot use `appOrigin` here. */\nfunction notServedMessage(appOrigin: string): string {\n return `This computer does not let coding agents use ${appOrigin}: it is not connected, or that was turned off. Connect it again with \\`npx @parlor/agent-host connect ${appOrigin}\\`.`;\n}\n\nconst notRunningMessage = (appOrigin: string) =>\n `Parlor Host is not running on this computer, so ${appOrigin} cannot be reached. Open the app's agent sidebar, or run \\`npx @parlor/agent-host connect ${appOrigin}\\`.`;\n\n/**\n * `parlor-host mcp-proxy`: stdio to the daemon socket and back. Inside a turn the\n * environment names the session; `--app` serves an agent outside any turn. Once the daemon\n * hangs up, every request still unanswered, and every later one, is answered with an error\n * here.\n */\nexport async function runMcpProxyProcess(\n env: NodeJS.ProcessEnv,\n outside?: { readonly appOrigin: string; readonly socketPath: string },\n): Promise<void> {\n const path = outside?.socketPath ?? env[SOCKET_ENV];\n const nonce = env[NONCE_ENV];\n if (!path || (!outside && !nonce)) {\n throw new Error(`${SOCKET_ENV} and ${NONCE_ENV} must be set, or --app.`);\n }\n let why = outside ? notRunningMessage(outside.appOrigin) : DISCONNECTED_MESSAGE;\n const unanswered = new Set<JsonRpcId>();\n const toAgent = (line: string) => void process.stdout.write(`${line}\\n`);\n const refuse = (id: JsonRpcId) => toAgent(failure(id, REFUSED_CODE, why));\n process.stdout.on(\"error\", () => undefined);\n\n const daemon = connect(path);\n daemon.on(\"error\", () => daemon.destroy());\n daemon.once(\"connect\", () => {\n if (outside) why = DISCONNECTED_MESSAGE;\n });\n const hungUp = new Promise<void>((resolve) =>\n daemon.once(\"close\", () => {\n for (const id of unanswered) refuse(id);\n unanswered.clear();\n resolve();\n }),\n );\n daemon.write(outside ? `${OUTSIDE_PREFIX}${outside.appOrigin}\\n` : `${nonce}\\n`);\n onLines(daemon, (line) => {\n const refused = (parse(line) as { readonly refused?: unknown } | undefined)?.refused;\n if (typeof refused === \"string\") {\n why = refused;\n return;\n }\n const message = parse(line);\n if (message?.id !== undefined && message.method === undefined) {\n unanswered.delete(message.id);\n }\n toAgent(line);\n });\n\n const agent = onLines(process.stdin, (line) => {\n const message = parse(line);\n const id = typeof message?.method === \"string\" ? message.id : undefined;\n if (!daemon.destroyed) {\n if (id !== undefined) unanswered.add(id);\n daemon.write(`${line}\\n`);\n } else if (id !== undefined) {\n refuse(id);\n }\n });\n await once(agent, \"close\");\n daemon.end();\n await hungUp;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"naming.js","sourceRoot":"","sources":["../src/naming.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,MAAM,UAAU,WAAW,CAAC,aAAqB,EAAE,SAAiB;IAClE,OAAO,IAAI,CAAC,aAAa,EAAE,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;AAC3E,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,OAAe;IACzC,MAAM,IAAI,GAAG,OAAO;SACjB,WAAW,EAAE;SACb,OAAO,CAAC,eAAe,EAAE,GAAG,CAAC;SAC7B,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IAC3B,OAAO,IAAI,IAAI,KAAK,CAAC;AACvB,CAAC;AAED,MAAM,UAAU,YAAY;IAC1B,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAClC,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,YAAY,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,cAAc,CAAC,EAAE;gBAC7D,QAAQ,EAAE,MAAM;aACjB,CAAC,CAAC,IAAI,EAAE,CAAC;YACV,IAAI,IAAI;gBAAE,OAAO,IAAI,CAAC;QACxB,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;IACZ,CAAC;IACD,OAAO,QAAQ,EAAE,CAAC;AACpB,CAAC;AAED,MAAM,SAAS,GAAqC;IAClD,MAAM,EAAE,OAAO;IACf,KAAK,EAAE,SAAS;IAChB,KAAK,EAAE,OAAO;CACf,CAAC;AAEF,MAAM,UAAU,YAAY;IAC1B,OAAO,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC;AACzD,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,uBAAuB,CACrC,QAAQ,GAAoB,OAAO,CAAC,QAAQ;IAE5C,IAAI,QAAQ,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IAC5C,MAAM,IAAI,GACP,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAY,CAAC,QAAkB,CAAC,IAAI,QAAQ,CAAC;IAClF,OAAO,yDAAyD,IAAI,iHAAiH,CAAC;AACxL,CAAC"}
1
+ {"version":3,"file":"naming.js","sourceRoot":"","sources":["../src/naming.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,MAAM,UAAU,WAAW,CAAC,aAAqB,EAAE,SAAiB;IAClE,OAAO,IAAI,CAAC,aAAa,EAAE,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;AAC3E,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,OAAe;IACzC,MAAM,IAAI,GAAG,OAAO;SACjB,WAAW,EAAE;SACb,OAAO,CAAC,eAAe,EAAE,GAAG,CAAC;SAC7B,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IAC3B,OAAO,IAAI,IAAI,KAAK,CAAC;AACvB,CAAC;AAED,MAAM,UAAU,YAAY;IAC1B,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAClC,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,YAAY,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,cAAc,CAAC,EAAE;gBAC7D,QAAQ,EAAE,MAAM;aACjB,CAAC,CAAC,IAAI,EAAE,CAAC;YACV,IAAI,IAAI;gBAAE,OAAO,IAAI,CAAC;QACxB,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;IACZ,CAAC;IACD,OAAO,QAAQ,EAAE,CAAC;AACpB,CAAC;AAED,MAAM,SAAS,GAAqC;IAClD,MAAM,EAAE,OAAO;IACf,KAAK,EAAE,SAAS;IAChB,KAAK,EAAE,OAAO;CACf,CAAC;AAEF,MAAM,UAAU,YAAY;IAC1B,OAAO,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC;AACzD,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,uBAAuB,CACrC,QAAQ,GAAoB,OAAO,CAAC,QAAQ;IAE5C,IAAI,QAAQ,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IAC5C,MAAM,IAAI,GACP,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAY,CAAC,QAAkB,CAAC,IAAI,QAAQ,CAAC;IAClF,OAAO,yDAAyD,IAAI,iHAAiH,CAAC;AACxL,CAAC","sourcesContent":["import { execFileSync } from \"node:child_process\";\nimport { hostname } from \"node:os\";\nimport { join } from \"node:path\";\n\nexport function workspaceOf(workspaceRoot: string, appOrigin: string): string {\n return join(workspaceRoot, new URL(appOrigin).host.replaceAll(\":\", \"-\"));\n}\n\nexport function appServerOf(appName: string): string {\n const name = appName\n .toLowerCase()\n .replace(/[^a-z0-9_-]+/g, \"-\")\n .replace(/^-+|-+$/g, \"\");\n return name || \"app\";\n}\n\nexport function computerName(): string {\n if (process.platform === \"darwin\") {\n try {\n const name = execFileSync(\"scutil\", [\"--get\", \"ComputerName\"], {\n encoding: \"utf8\",\n }).trim();\n if (name) return name;\n } catch {}\n }\n return hostname();\n}\n\nconst PLATFORMS: Readonly<Record<string, string>> = {\n darwin: \"macos\",\n win32: \"windows\",\n linux: \"linux\",\n};\n\nexport function platformName(): string {\n return PLATFORMS[process.platform] ?? process.platform;\n}\n\n/** Why this computer cannot connect to an app yet; undefined on macOS. */\nexport function unsupportedHostPlatform(\n platform: NodeJS.Platform = process.platform,\n): string | undefined {\n if (platform === \"darwin\") return undefined;\n const name =\n ({ win32: \"Windows\", linux: \"Linux\" } as const)[platform as string] ?? platform;\n return `Parlor Host connects to apps from macOS only for now; ${name} is not supported yet, because it keeps its keys in the macOS Keychain. \\`parlor dev\\` works on every platform.`;\n}\n"]}
package/dist/pairing.d.ts CHANGED
@@ -29,6 +29,8 @@ export interface PairInput {
29
29
  readonly channel: PairingChannel;
30
30
  readonly keys: HostKeys;
31
31
  readonly workspaceRoot: string;
32
+ /** Offers, on the consent page, to let the coding agents here use the app outside its sidebar. */
33
+ readonly offerAgentTools?: boolean | undefined;
32
34
  }
33
35
  export type PairOutcome = {
34
36
  readonly paired: true;
@@ -1 +1 @@
1
- {"version":3,"file":"pairing.d.ts","sourceRoot":"","sources":["../src/pairing.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,KAAK,cAAc,EAEnB,KAAK,iBAAiB,EACvB,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAGvE,OAAO,KAAK,EAAE,QAAQ,EAAe,QAAQ,EAAE,MAAM,aAAa,CAAC;AAKnE,eAAO,MAAM,kBAAkB,QAAc,CAAC;AAE9C,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;IACjC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAED;;;;;GAKG;AACH,MAAM,MAAM,cAAc,GACtB;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,GAC9D;IACE,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IACrB,SAAS,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACjD,OAAO,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAClD,CAAC;AAEN,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;IACjC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;CAChC;AAED,MAAM,MAAM,WAAW,GACnB;IACE,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC;IACzB,QAAQ,CAAC,UAAU,EAAE,iBAAiB,CAAC,YAAY,CAAC,CAAC;CACtD,GACD;IACE,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,kBAAkB,GAAG,iBAAiB,GAAG,SAAS,CAAC;CACrE,CAAC;AAEN,qBAAa,cAAe,SAAQ,KAAK;IAGrC,QAAQ,CAAC,KAAK,EAAE,QAAQ;IAF1B,SAAkB,IAAI,oBAAoB;IAC1C,YACW,KAAK,EAAE,QAAQ,EACxB,KAAK,EAAE,KAAK,EAGb;CACF;AA6HD;;;GAGG;AACH,wBAAsB,IAAI,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC,CAoGjE;AAmBD,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAED;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;IACvC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAClD,OAAO,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;CACjD;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,GAAG,YAAY,CA+CjF;AAgCD,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,aAAa,GAAG,SAAS,CAmBzE"}
1
+ {"version":3,"file":"pairing.d.ts","sourceRoot":"","sources":["../src/pairing.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,KAAK,cAAc,EAEnB,KAAK,iBAAiB,EACvB,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAIvE,OAAO,KAAK,EAAE,QAAQ,EAAe,QAAQ,EAAE,MAAM,aAAa,CAAC;AAKnE,eAAO,MAAM,kBAAkB,QAAc,CAAC;AAE9C,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;IACjC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAED;;;;;GAKG;AACH,MAAM,MAAM,cAAc,GACtB;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,GAC9D;IACE,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IACrB,SAAS,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACjD,OAAO,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAClD,CAAC;AAEN,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;IACjC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,kGAAkG;IAClG,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CAChD;AAED,MAAM,MAAM,WAAW,GACnB;IACE,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC;IACzB,QAAQ,CAAC,UAAU,EAAE,iBAAiB,CAAC,YAAY,CAAC,CAAC;CACtD,GACD;IACE,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,kBAAkB,GAAG,iBAAiB,GAAG,SAAS,CAAC;CACrE,CAAC;AAEN,qBAAa,cAAe,SAAQ,KAAK;IAGrC,QAAQ,CAAC,KAAK,EAAE,QAAQ;IAF1B,SAAkB,IAAI,oBAAoB;IAC1C,YACW,KAAK,EAAE,QAAQ,EACxB,KAAK,EAAE,KAAK,EAGb;CACF;AA0ID;;;GAGG;AACH,wBAAsB,IAAI,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC,CA+GjE;AAmBD,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAED;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;IACvC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAClD,OAAO,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;CACjD;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,GAAG,YAAY,CA+CjF;AAgCD,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,aAAa,GAAG,SAAS,CAmBzE"}