@parlor/agent-host 0.0.0-stage → 0.2.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.
- package/LICENSE +21 -0
- package/README.md +16 -2
- package/dist/acp.d.ts +165 -0
- package/dist/acp.d.ts.map +1 -0
- package/dist/acp.js +626 -0
- package/dist/acp.js.map +1 -0
- package/dist/adapter-launch.d.ts +7 -0
- package/dist/adapter-launch.d.ts.map +1 -0
- package/dist/adapter-launch.js +35 -0
- package/dist/adapter-launch.js.map +1 -0
- package/dist/agents.d.ts +32 -0
- package/dist/agents.d.ts.map +1 -0
- package/dist/agents.js +132 -0
- package/dist/agents.js.map +1 -0
- package/dist/assertion.d.ts +9 -0
- package/dist/assertion.d.ts.map +1 -0
- package/dist/assertion.js +22 -0
- package/dist/assertion.js.map +1 -0
- package/dist/control.d.ts +106 -0
- package/dist/control.d.ts.map +1 -0
- package/dist/control.js +32 -0
- package/dist/control.js.map +1 -0
- package/dist/daemon.d.ts +50 -0
- package/dist/daemon.d.ts.map +1 -0
- package/dist/daemon.js +543 -0
- package/dist/daemon.js.map +1 -0
- package/dist/dev-host.d.ts +5 -0
- package/dist/dev-host.d.ts.map +1 -0
- package/dist/dev-host.js +29 -0
- package/dist/dev-host.js.map +1 -0
- package/dist/device-list.d.ts +6 -0
- package/dist/device-list.d.ts.map +1 -0
- package/dist/device-list.js +30 -0
- package/dist/device-list.js.map +1 -0
- package/dist/embedded.d.ts +6 -0
- package/dist/embedded.d.ts.map +1 -0
- package/dist/embedded.js +3 -0
- package/dist/embedded.js.map +1 -0
- package/dist/fold.d.ts +38 -0
- package/dist/fold.d.ts.map +1 -0
- package/dist/fold.js +165 -0
- package/dist/fold.js.map +1 -0
- package/dist/grants.d.ts +54 -0
- package/dist/grants.d.ts.map +1 -0
- package/dist/grants.js +157 -0
- package/dist/grants.js.map +1 -0
- package/dist/index.d.ts +17 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +17 -0
- package/dist/index.js.map +1 -0
- package/dist/json-file.d.ts +6 -0
- package/dist/json-file.d.ts.map +1 -0
- package/dist/json-file.js +35 -0
- package/dist/json-file.js.map +1 -0
- package/dist/lines.d.ts +5 -0
- package/dist/lines.d.ts.map +1 -0
- package/dist/lines.js +9 -0
- package/dist/lines.js.map +1 -0
- package/dist/link-device.d.ts +28 -0
- package/dist/link-device.d.ts.map +1 -0
- package/dist/link-device.js +40 -0
- package/dist/link-device.js.map +1 -0
- package/dist/link.d.ts +52 -0
- package/dist/link.d.ts.map +1 -0
- package/dist/link.js +277 -0
- package/dist/link.js.map +1 -0
- package/dist/lock.d.ts +7 -0
- package/dist/lock.d.ts.map +1 -0
- package/dist/lock.js +105 -0
- package/dist/lock.js.map +1 -0
- package/dist/log.d.ts +3 -0
- package/dist/log.d.ts.map +1 -0
- package/dist/log.js +18 -0
- package/dist/log.js.map +1 -0
- package/dist/main.d.ts +3 -0
- package/dist/main.d.ts.map +1 -0
- package/dist/main.js +520 -0
- package/dist/main.js.map +1 -0
- package/dist/mcp-proxy.d.ts +33 -0
- package/dist/mcp-proxy.d.ts.map +1 -0
- package/dist/mcp-proxy.js +317 -0
- package/dist/mcp-proxy.js.map +1 -0
- package/dist/naming.d.ts +7 -0
- package/dist/naming.d.ts.map +1 -0
- package/dist/naming.js +42 -0
- package/dist/naming.js.map +1 -0
- package/dist/pairing.d.ts +68 -0
- package/dist/pairing.d.ts.map +1 -0
- package/dist/pairing.js +312 -0
- package/dist/pairing.js.map +1 -0
- package/dist/paths.d.ts +19 -0
- package/dist/paths.d.ts.map +1 -0
- package/dist/paths.js +23 -0
- package/dist/paths.js.map +1 -0
- package/dist/policy.d.ts +37 -0
- package/dist/policy.d.ts.map +1 -0
- package/dist/policy.js +60 -0
- package/dist/policy.js.map +1 -0
- package/dist/pool.d.ts +34 -0
- package/dist/pool.d.ts.map +1 -0
- package/dist/pool.js +112 -0
- package/dist/pool.js.map +1 -0
- package/dist/prompter.d.ts +33 -0
- package/dist/prompter.d.ts.map +1 -0
- package/dist/prompter.js +98 -0
- package/dist/prompter.js.map +1 -0
- package/dist/release-main.d.ts +2 -0
- package/dist/release-main.d.ts.map +1 -0
- package/dist/release-main.js +50 -0
- package/dist/release-main.js.map +1 -0
- package/dist/release.d.ts +22 -0
- package/dist/release.d.ts.map +1 -0
- package/dist/release.js +81 -0
- package/dist/release.js.map +1 -0
- package/dist/revoke.d.ts +10 -0
- package/dist/revoke.d.ts.map +1 -0
- package/dist/revoke.js +23 -0
- package/dist/revoke.js.map +1 -0
- package/dist/self.d.ts +7 -0
- package/dist/self.d.ts.map +1 -0
- package/dist/self.js +10 -0
- package/dist/self.js.map +1 -0
- package/dist/service.d.ts +97 -0
- package/dist/service.d.ts.map +1 -0
- package/dist/service.js +205 -0
- package/dist/service.js.map +1 -0
- package/dist/shell-path.d.ts +10 -0
- package/dist/shell-path.d.ts.map +1 -0
- package/dist/shell-path.js +64 -0
- package/dist/shell-path.js.map +1 -0
- package/dist/skeleton-kit.d.ts +8 -0
- package/dist/skeleton-kit.d.ts.map +1 -0
- package/dist/skeleton-kit.js +143 -0
- package/dist/skeleton-kit.js.map +1 -0
- package/dist/spec-kit.d.ts +102 -0
- package/dist/spec-kit.d.ts.map +1 -0
- package/dist/spec-kit.js +372 -0
- package/dist/spec-kit.js.map +1 -0
- package/dist/testing/fake-agent.d.ts +65 -0
- package/dist/testing/fake-agent.d.ts.map +1 -0
- package/dist/testing/fake-agent.js +238 -0
- package/dist/testing/fake-agent.js.map +1 -0
- package/dist/trust.d.ts +20 -0
- package/dist/trust.d.ts.map +1 -0
- package/dist/trust.js +27 -0
- package/dist/trust.js.map +1 -0
- package/dist/turn.d.ts +32 -0
- package/dist/turn.d.ts.map +1 -0
- package/dist/turn.js +650 -0
- package/dist/turn.js.map +1 -0
- package/dist/version.d.ts +2 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +6 -0
- package/dist/version.js.map +1 -0
- package/package.json +57 -3
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 cychien
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -1,3 +1,17 @@
|
|
|
1
|
-
#
|
|
1
|
+
# @parlor/agent-host
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Parlor Host, the `parlor-host` command: it connects the coding agents on a computer, such as Claude Code and Codex, to a Parlor app's sidebar. `parlor dev` runs it for you; with sign-in, a user connects their computer with `npx @parlor/agent-host connect <app url>`. Installed by `@parlor/cli`; you do not depend on it directly.
|
|
4
|
+
|
|
5
|
+
```sh
|
|
6
|
+
npx @parlor/agent-host connect https://todos.example.com
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
Tests can script an agent with the fake agent:
|
|
10
|
+
|
|
11
|
+
```ts
|
|
12
|
+
import type { FakeAgentScript } from "@parlor/agent-host/testing";
|
|
13
|
+
|
|
14
|
+
export const script: FakeAgentScript = { steps: {}, fallback: "echo" };
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
Docs: https://cychien.github.io/parlor/guides/agent-sidebar/
|
package/dist/acp.d.ts
ADDED
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
import type { AgentProfile } from "./agents.js";
|
|
2
|
+
/**
|
|
3
|
+
* The only file that knows ACP. The v1 adapter speaks ndjson over stdio through
|
|
4
|
+
* `@agentclientprotocol/sdk`; an ACP v2 or HTTP-transport agent implements the same
|
|
5
|
+
* port. No ACP type crosses this file.
|
|
6
|
+
*/
|
|
7
|
+
export interface AgentLauncher {
|
|
8
|
+
/** Spawns the profile (never through a shell), runs `initialize`, reports problems. */
|
|
9
|
+
launch(profile: AgentProfile, options: LaunchOptions): Promise<AgentConnection>;
|
|
10
|
+
}
|
|
11
|
+
export interface LaunchOptions {
|
|
12
|
+
readonly cwd: string;
|
|
13
|
+
readonly env: Readonly<Record<string, string>>;
|
|
14
|
+
readonly signal: AbortSignal;
|
|
15
|
+
}
|
|
16
|
+
export interface AgentConnection {
|
|
17
|
+
readonly capabilities: AgentCapabilities;
|
|
18
|
+
openSession(input: OpenSessionInput): Promise<AgentSession>;
|
|
19
|
+
readonly exited: Promise<AgentExit>;
|
|
20
|
+
/** Kills the whole process group. */
|
|
21
|
+
kill(): Promise<void>;
|
|
22
|
+
}
|
|
23
|
+
/** `openSession` would not run the session; `leftOpen` when the agent still holds it. */
|
|
24
|
+
export declare class SessionRefused extends Error {
|
|
25
|
+
readonly leftOpen: boolean;
|
|
26
|
+
readonly name = "SessionRefused";
|
|
27
|
+
constructor(message: string, leftOpen: boolean, options?: ErrorOptions);
|
|
28
|
+
}
|
|
29
|
+
export interface AgentCapabilities {
|
|
30
|
+
readonly resume: boolean;
|
|
31
|
+
readonly close: boolean;
|
|
32
|
+
readonly mcpHttp: boolean;
|
|
33
|
+
/** False until the user logs the agent in on a terminal; `problem` says how. */
|
|
34
|
+
readonly ready: boolean;
|
|
35
|
+
readonly problem?: string | undefined;
|
|
36
|
+
}
|
|
37
|
+
export interface OpenSessionInput {
|
|
38
|
+
readonly cwd: string;
|
|
39
|
+
readonly mcpServers: readonly StdioMcpServer[];
|
|
40
|
+
readonly resume?: string | undefined;
|
|
41
|
+
/** A remote turn never runs in a bypass mode. */
|
|
42
|
+
readonly pinAskMode: boolean;
|
|
43
|
+
readonly strictAsk?: boolean | undefined;
|
|
44
|
+
}
|
|
45
|
+
export interface StdioMcpServer {
|
|
46
|
+
readonly name: string;
|
|
47
|
+
readonly command: string;
|
|
48
|
+
readonly args: readonly string[];
|
|
49
|
+
readonly env: Readonly<Record<string, string>>;
|
|
50
|
+
}
|
|
51
|
+
export interface AgentSession {
|
|
52
|
+
readonly id: string;
|
|
53
|
+
readonly resumed: boolean;
|
|
54
|
+
/**
|
|
55
|
+
* Every update reaches `handlers.update` synchronously and in wire order, and the
|
|
56
|
+
* promise settles only after the last one: the stop is queued behind its chunks.
|
|
57
|
+
*/
|
|
58
|
+
prompt(blocks: readonly PromptBlock[], handlers: TurnHandlers): Promise<StopReason>;
|
|
59
|
+
cancel(): Promise<void>;
|
|
60
|
+
close(): Promise<void>;
|
|
61
|
+
}
|
|
62
|
+
export type PromptBlock = {
|
|
63
|
+
readonly kind: "text";
|
|
64
|
+
readonly text: string;
|
|
65
|
+
};
|
|
66
|
+
export type StopReason = "end_turn" | "max_tokens" | "max_turn_requests" | "refusal" | "cancelled";
|
|
67
|
+
export interface TurnHandlers {
|
|
68
|
+
update(update: AgentUpdate): void;
|
|
69
|
+
ask(ask: AgentAsk): Promise<AgentAskAnswer>;
|
|
70
|
+
}
|
|
71
|
+
export type ToolKind = "read" | "edit" | "delete" | "move" | "search" | "execute" | "think" | "fetch" | "switch_mode" | "other";
|
|
72
|
+
export interface McpToolRef {
|
|
73
|
+
readonly server: string;
|
|
74
|
+
readonly tool: string;
|
|
75
|
+
}
|
|
76
|
+
export type AgentUpdate = {
|
|
77
|
+
readonly kind: "text";
|
|
78
|
+
readonly text: string;
|
|
79
|
+
} | {
|
|
80
|
+
readonly kind: "thought";
|
|
81
|
+
readonly text: string;
|
|
82
|
+
} | {
|
|
83
|
+
readonly kind: "tool_start";
|
|
84
|
+
readonly toolCallId: string;
|
|
85
|
+
readonly title: string;
|
|
86
|
+
readonly toolKind: ToolKind;
|
|
87
|
+
readonly mcp?: McpToolRef | undefined;
|
|
88
|
+
} | {
|
|
89
|
+
readonly kind: "tool_update";
|
|
90
|
+
readonly toolCallId: string;
|
|
91
|
+
readonly title?: string | undefined;
|
|
92
|
+
readonly status?: "pending" | "in_progress" | "completed" | "failed" | undefined;
|
|
93
|
+
readonly detail?: string | undefined;
|
|
94
|
+
} | {
|
|
95
|
+
readonly kind: "plan";
|
|
96
|
+
readonly entries: readonly {
|
|
97
|
+
readonly content: string;
|
|
98
|
+
readonly status: "pending" | "in_progress" | "completed";
|
|
99
|
+
}[];
|
|
100
|
+
} | {
|
|
101
|
+
readonly kind: "mode";
|
|
102
|
+
readonly modeId: string;
|
|
103
|
+
};
|
|
104
|
+
export type AskEffect = "allow_once" | "allow_always" | "reject_once" | "reject_always";
|
|
105
|
+
export type AgentAsk = {
|
|
106
|
+
readonly kind: "permission";
|
|
107
|
+
readonly toolCallId: string;
|
|
108
|
+
readonly title: string;
|
|
109
|
+
readonly toolKind: ToolKind;
|
|
110
|
+
readonly mcp?: McpToolRef | undefined;
|
|
111
|
+
readonly options: readonly {
|
|
112
|
+
readonly id: string;
|
|
113
|
+
readonly label: string;
|
|
114
|
+
readonly effect: AskEffect;
|
|
115
|
+
}[];
|
|
116
|
+
} | {
|
|
117
|
+
readonly kind: "question";
|
|
118
|
+
readonly message: string;
|
|
119
|
+
readonly schema: Readonly<Record<string, unknown>>;
|
|
120
|
+
};
|
|
121
|
+
export type AgentAskAnswer = {
|
|
122
|
+
readonly kind: "selected";
|
|
123
|
+
readonly optionId: string;
|
|
124
|
+
} | {
|
|
125
|
+
readonly kind: "values";
|
|
126
|
+
readonly values: Readonly<Record<string, string | number | boolean>>;
|
|
127
|
+
} | {
|
|
128
|
+
readonly kind: "declined";
|
|
129
|
+
} | {
|
|
130
|
+
readonly kind: "cancelled";
|
|
131
|
+
};
|
|
132
|
+
export type AgentExit = {
|
|
133
|
+
readonly kind: "killed";
|
|
134
|
+
} | {
|
|
135
|
+
readonly kind: "exited";
|
|
136
|
+
readonly code: number | null;
|
|
137
|
+
readonly stderrTail: string;
|
|
138
|
+
};
|
|
139
|
+
/** The bytes an ACP peer reads and writes: a child's stdio, or a test's pipe. */
|
|
140
|
+
export interface AcpStdio {
|
|
141
|
+
readonly input: ReadableStream<Uint8Array>;
|
|
142
|
+
readonly output: WritableStream<Uint8Array>;
|
|
143
|
+
}
|
|
144
|
+
export interface AgentModes {
|
|
145
|
+
readonly current: string;
|
|
146
|
+
readonly available: readonly string[];
|
|
147
|
+
}
|
|
148
|
+
/** The agent side of ACP in this file's own terms, for the fake agent. */
|
|
149
|
+
export interface AcpAgentHandlers {
|
|
150
|
+
readonly capabilities: Pick<AgentCapabilities, "resume" | "close" | "mcpHttp">;
|
|
151
|
+
newSession(input: OpenSessionInput): Promise<{
|
|
152
|
+
readonly id: string;
|
|
153
|
+
readonly modes?: AgentModes | undefined;
|
|
154
|
+
}>;
|
|
155
|
+
prompt(sessionId: string, blocks: readonly PromptBlock[], peer: {
|
|
156
|
+
update(update: AgentUpdate): Promise<void>;
|
|
157
|
+
ask(ask: AgentAsk): Promise<AgentAskAnswer>;
|
|
158
|
+
readonly cancelled: AbortSignal;
|
|
159
|
+
}): Promise<StopReason>;
|
|
160
|
+
}
|
|
161
|
+
/** ACP v1 over stdio. */
|
|
162
|
+
export declare function acpLauncher(): AgentLauncher;
|
|
163
|
+
/** Serves `handlers` as an ACP agent on `io`, until the other side hangs up. */
|
|
164
|
+
export declare function serveAcpAgent(handlers: AcpAgentHandlers, io: AcpStdio): Promise<void>;
|
|
165
|
+
//# sourceMappingURL=acp.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acp.d.ts","sourceRoot":"","sources":["../src/acp.ts"],"names":[],"mappings":"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"}
|