@autonome-research/thread-phase-agents 3.0.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 +207 -0
- package/dist/acp/adapter.d.ts +89 -0
- package/dist/acp/adapter.d.ts.map +1 -0
- package/dist/acp/adapter.js +461 -0
- package/dist/acp/adapter.js.map +1 -0
- package/dist/acp/index.d.ts +12 -0
- package/dist/acp/index.d.ts.map +1 -0
- package/dist/acp/index.js +10 -0
- package/dist/acp/index.js.map +1 -0
- package/dist/acp/transport.d.ts +82 -0
- package/dist/acp/transport.d.ts.map +1 -0
- package/dist/acp/transport.js +199 -0
- package/dist/acp/transport.js.map +1 -0
- package/dist/acp/types.d.ts +157 -0
- package/dist/acp/types.d.ts.map +1 -0
- package/dist/acp/types.js +34 -0
- package/dist/acp/types.js.map +1 -0
- package/dist/anthropic/adapter.d.ts +55 -0
- package/dist/anthropic/adapter.d.ts.map +1 -0
- package/dist/anthropic/adapter.js +259 -0
- package/dist/anthropic/adapter.js.map +1 -0
- package/dist/anthropic/index.d.ts +8 -0
- package/dist/anthropic/index.d.ts.map +1 -0
- package/dist/anthropic/index.js +8 -0
- package/dist/anthropic/index.js.map +1 -0
- package/dist/claude-code/adapter.d.ts +56 -0
- package/dist/claude-code/adapter.d.ts.map +1 -0
- package/dist/claude-code/adapter.js +319 -0
- package/dist/claude-code/adapter.js.map +1 -0
- package/dist/claude-code/index.d.ts +8 -0
- package/dist/claude-code/index.d.ts.map +1 -0
- package/dist/claude-code/index.js +8 -0
- package/dist/claude-code/index.js.map +1 -0
- package/dist/codex/adapter.d.ts +62 -0
- package/dist/codex/adapter.d.ts.map +1 -0
- package/dist/codex/adapter.js +258 -0
- package/dist/codex/adapter.js.map +1 -0
- package/dist/codex/index.d.ts +9 -0
- package/dist/codex/index.d.ts.map +1 -0
- package/dist/codex/index.js +9 -0
- package/dist/codex/index.js.map +1 -0
- package/dist/codex-cli/adapter.d.ts +70 -0
- package/dist/codex-cli/adapter.d.ts.map +1 -0
- package/dist/codex-cli/adapter.js +368 -0
- package/dist/codex-cli/adapter.js.map +1 -0
- package/dist/codex-cli/index.d.ts +10 -0
- package/dist/codex-cli/index.d.ts.map +1 -0
- package/dist/codex-cli/index.js +10 -0
- package/dist/codex-cli/index.js.map +1 -0
- package/dist/hermes/index.d.ts +50 -0
- package/dist/hermes/index.d.ts.map +1 -0
- package/dist/hermes/index.js +43 -0
- package/dist/hermes/index.js.map +1 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +14 -0
- package/dist/index.js.map +1 -0
- package/dist/injectors.d.ts +104 -0
- package/dist/injectors.d.ts.map +1 -0
- package/dist/injectors.js +219 -0
- package/dist/injectors.js.map +1 -0
- package/dist/openclaw/index.d.ts +54 -0
- package/dist/openclaw/index.d.ts.map +1 -0
- package/dist/openclaw/index.js +61 -0
- package/dist/openclaw/index.js.map +1 -0
- package/dist/pi/adapter.d.ts +79 -0
- package/dist/pi/adapter.d.ts.map +1 -0
- package/dist/pi/adapter.js +396 -0
- package/dist/pi/adapter.js.map +1 -0
- package/dist/pi/index.d.ts +14 -0
- package/dist/pi/index.d.ts.map +1 -0
- package/dist/pi/index.js +14 -0
- package/dist/pi/index.js.map +1 -0
- package/dist/thread-bridge.d.ts +83 -0
- package/dist/thread-bridge.d.ts.map +1 -0
- package/dist/thread-bridge.js +143 -0
- package/dist/thread-bridge.js.map +1 -0
- package/package.json +46 -0
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* NDJSON JSON-RPC 2.0 transport over a child-process stdio pair.
|
|
3
|
+
*
|
|
4
|
+
* ACP frames messages as newline-delimited JSON — one JSON-RPC envelope
|
|
5
|
+
* per line, no Content-Length headers. The transport owns the byte-level
|
|
6
|
+
* framing, request/response correlation, and notification dispatch. The
|
|
7
|
+
* adapter layer above translates ACP-specific messages into canonical
|
|
8
|
+
* `AgentEvent`s.
|
|
9
|
+
*
|
|
10
|
+
* Single-process scope: each transport instance binds to one subprocess.
|
|
11
|
+
* Disposing it ends the child's stdin and (optionally) signals the child.
|
|
12
|
+
*
|
|
13
|
+
* @internal
|
|
14
|
+
*/
|
|
15
|
+
/** @internal */
|
|
16
|
+
export class JsonRpcCallError extends Error {
|
|
17
|
+
method;
|
|
18
|
+
rpcError;
|
|
19
|
+
constructor(method, rpcError) {
|
|
20
|
+
super(`JSON-RPC error from ${method}: ${rpcError.message} (code ${rpcError.code})`);
|
|
21
|
+
this.method = method;
|
|
22
|
+
this.rpcError = rpcError;
|
|
23
|
+
this.name = 'JsonRpcCallError';
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Build a transport bound to the given child's stdio. The transport
|
|
28
|
+
* starts reading immediately. Call `dispose()` to release listeners and
|
|
29
|
+
* close stdin.
|
|
30
|
+
*
|
|
31
|
+
* @internal
|
|
32
|
+
*/
|
|
33
|
+
export function createAcpTransport(opts) {
|
|
34
|
+
const { child, onNotification, onRequest, onTransportError } = opts;
|
|
35
|
+
const pending = new Map();
|
|
36
|
+
let nextId = 1;
|
|
37
|
+
let buffer = '';
|
|
38
|
+
let disposed = false;
|
|
39
|
+
const writeMessage = (msg) => {
|
|
40
|
+
if (disposed)
|
|
41
|
+
return;
|
|
42
|
+
const line = JSON.stringify(msg) + '\n';
|
|
43
|
+
// child.stdin is Writable; back-pressure is the caller's problem
|
|
44
|
+
// (we don't await drain — ACP messages are small). Write callback
|
|
45
|
+
// catches EPIPE etc. when the subprocess has already exited — those
|
|
46
|
+
// are surfaced via onTransportError, not as uncaught exceptions.
|
|
47
|
+
try {
|
|
48
|
+
child.stdin.write(line, (err) => {
|
|
49
|
+
if (err && !disposed)
|
|
50
|
+
onTransportError?.(err);
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
catch (err) {
|
|
54
|
+
if (!disposed && err instanceof Error)
|
|
55
|
+
onTransportError?.(err);
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
const handleParsed = (msg) => {
|
|
59
|
+
if (!isJsonRpcMessage(msg)) {
|
|
60
|
+
onTransportError?.(new Error(`malformed JSON-RPC message: ${JSON.stringify(msg).slice(0, 200)}`));
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
if ('id' in msg && 'method' in msg) {
|
|
64
|
+
// Request from agent to client.
|
|
65
|
+
void handleAgentRequest(msg.id, msg.method, msg.params);
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
if ('id' in msg && ('result' in msg || 'error' in msg)) {
|
|
69
|
+
const entry = pending.get(msg.id);
|
|
70
|
+
if (!entry) {
|
|
71
|
+
// Late or unsolicited response — drop quietly. Logging would
|
|
72
|
+
// be the caller's concern if they want it.
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
pending.delete(msg.id);
|
|
76
|
+
if ('error' in msg) {
|
|
77
|
+
entry.reject(new JsonRpcCallError(entry.method, msg.error));
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
entry.resolve(msg.result);
|
|
81
|
+
}
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
if ('method' in msg) {
|
|
85
|
+
// Notification from agent.
|
|
86
|
+
onNotification?.(msg.method, msg.params);
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
onTransportError?.(new Error(`unknown JSON-RPC message shape: ${JSON.stringify(msg).slice(0, 200)}`));
|
|
90
|
+
};
|
|
91
|
+
const handleAgentRequest = async (id, method, params) => {
|
|
92
|
+
if (!onRequest) {
|
|
93
|
+
writeMessage({
|
|
94
|
+
jsonrpc: '2.0',
|
|
95
|
+
id,
|
|
96
|
+
error: { code: -32601, message: `Method not found: ${method}` },
|
|
97
|
+
});
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
try {
|
|
101
|
+
const result = await onRequest(method, params);
|
|
102
|
+
writeMessage({ jsonrpc: '2.0', id, result });
|
|
103
|
+
}
|
|
104
|
+
catch (err) {
|
|
105
|
+
writeMessage({
|
|
106
|
+
jsonrpc: '2.0',
|
|
107
|
+
id,
|
|
108
|
+
error: {
|
|
109
|
+
code: -32603,
|
|
110
|
+
message: err instanceof Error ? err.message : String(err),
|
|
111
|
+
},
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
};
|
|
115
|
+
const consumeBuffer = () => {
|
|
116
|
+
while (true) {
|
|
117
|
+
const newlineIdx = buffer.indexOf('\n');
|
|
118
|
+
if (newlineIdx === -1)
|
|
119
|
+
return;
|
|
120
|
+
const line = buffer.slice(0, newlineIdx);
|
|
121
|
+
buffer = buffer.slice(newlineIdx + 1);
|
|
122
|
+
if (line.trim().length === 0)
|
|
123
|
+
continue;
|
|
124
|
+
let parsed;
|
|
125
|
+
try {
|
|
126
|
+
parsed = JSON.parse(line);
|
|
127
|
+
}
|
|
128
|
+
catch (err) {
|
|
129
|
+
onTransportError?.(new Error(`JSON parse error on line: ${line.slice(0, 200)}`));
|
|
130
|
+
continue;
|
|
131
|
+
}
|
|
132
|
+
handleParsed(parsed);
|
|
133
|
+
}
|
|
134
|
+
};
|
|
135
|
+
const onStdoutData = (chunk) => {
|
|
136
|
+
buffer += typeof chunk === 'string' ? chunk : chunk.toString('utf8');
|
|
137
|
+
consumeBuffer();
|
|
138
|
+
};
|
|
139
|
+
const onStdoutEnd = () => {
|
|
140
|
+
if (buffer.trim().length > 0)
|
|
141
|
+
consumeBuffer();
|
|
142
|
+
// Reject any still-pending requests so callers don't hang.
|
|
143
|
+
for (const [id, entry] of pending) {
|
|
144
|
+
entry.reject(new Error(`subprocess stdout closed while waiting on ${entry.method}`));
|
|
145
|
+
pending.delete(id);
|
|
146
|
+
}
|
|
147
|
+
};
|
|
148
|
+
child.stdout.setEncoding('utf8');
|
|
149
|
+
child.stdout.on('data', onStdoutData);
|
|
150
|
+
child.stdout.on('end', onStdoutEnd);
|
|
151
|
+
child.stdout.on('error', (err) => onTransportError?.(err));
|
|
152
|
+
// EPIPE / EBADF on stdin after the child exits would otherwise bubble
|
|
153
|
+
// as an uncaught exception — route to onTransportError instead.
|
|
154
|
+
child.stdin.on('error', (err) => {
|
|
155
|
+
if (!disposed)
|
|
156
|
+
onTransportError?.(err);
|
|
157
|
+
});
|
|
158
|
+
return {
|
|
159
|
+
request(method, params) {
|
|
160
|
+
if (disposed) {
|
|
161
|
+
return Promise.reject(new Error('transport disposed'));
|
|
162
|
+
}
|
|
163
|
+
const id = nextId++;
|
|
164
|
+
const promise = new Promise((resolve, reject) => {
|
|
165
|
+
pending.set(id, { resolve, reject, method });
|
|
166
|
+
});
|
|
167
|
+
writeMessage({ jsonrpc: '2.0', id, method, params });
|
|
168
|
+
return promise;
|
|
169
|
+
},
|
|
170
|
+
notify(method, params) {
|
|
171
|
+
writeMessage({ jsonrpc: '2.0', method, params });
|
|
172
|
+
},
|
|
173
|
+
dispose() {
|
|
174
|
+
if (disposed)
|
|
175
|
+
return;
|
|
176
|
+
disposed = true;
|
|
177
|
+
child.stdout.removeListener('data', onStdoutData);
|
|
178
|
+
child.stdout.removeListener('end', onStdoutEnd);
|
|
179
|
+
try {
|
|
180
|
+
child.stdin.end();
|
|
181
|
+
}
|
|
182
|
+
catch {
|
|
183
|
+
// already closed
|
|
184
|
+
}
|
|
185
|
+
// Reject any remaining pending so callers unblock.
|
|
186
|
+
for (const [id, entry] of pending) {
|
|
187
|
+
entry.reject(new Error('transport disposed'));
|
|
188
|
+
pending.delete(id);
|
|
189
|
+
}
|
|
190
|
+
},
|
|
191
|
+
};
|
|
192
|
+
}
|
|
193
|
+
function isJsonRpcMessage(value) {
|
|
194
|
+
return (value !== null &&
|
|
195
|
+
typeof value === 'object' &&
|
|
196
|
+
'jsonrpc' in value &&
|
|
197
|
+
value.jsonrpc === '2.0');
|
|
198
|
+
}
|
|
199
|
+
//# sourceMappingURL=transport.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transport.js","sourceRoot":"","sources":["../../src/acp/transport.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent Client Protocol — TypeScript types for the subset this chassis
|
|
3
|
+
* implements. Faithful to the ACP spec at
|
|
4
|
+
* https://agentclientprotocol.com/protocol — field names are literal.
|
|
5
|
+
*
|
|
6
|
+
* We model only the messages the chassis sends or receives: initialize,
|
|
7
|
+
* session/new, session/prompt, session/update notifications, and
|
|
8
|
+
* session/cancel. Optional features (filesystem ops, terminals,
|
|
9
|
+
* session/request_permission, MCP transport configuration) are out of
|
|
10
|
+
* scope for v1 and surface as `native` events when encountered.
|
|
11
|
+
*
|
|
12
|
+
* @internal
|
|
13
|
+
*/
|
|
14
|
+
/** Negotiated at initialize time; the spec is currently at v1. */
|
|
15
|
+
export declare const ACP_PROTOCOL_VERSION = 1;
|
|
16
|
+
export type SessionId = string;
|
|
17
|
+
export interface Implementation {
|
|
18
|
+
name: string;
|
|
19
|
+
version: string;
|
|
20
|
+
}
|
|
21
|
+
export interface ClientCapabilities {
|
|
22
|
+
fs?: {
|
|
23
|
+
readTextFile?: boolean;
|
|
24
|
+
writeTextFile?: boolean;
|
|
25
|
+
};
|
|
26
|
+
terminal?: boolean;
|
|
27
|
+
}
|
|
28
|
+
export interface AgentCapabilities {
|
|
29
|
+
promptCapabilities?: {
|
|
30
|
+
image?: boolean;
|
|
31
|
+
audio?: boolean;
|
|
32
|
+
embeddedContext?: boolean;
|
|
33
|
+
};
|
|
34
|
+
loadSession?: boolean;
|
|
35
|
+
[key: string]: unknown;
|
|
36
|
+
}
|
|
37
|
+
export interface AuthMethod {
|
|
38
|
+
id: string;
|
|
39
|
+
name: string;
|
|
40
|
+
description?: string;
|
|
41
|
+
}
|
|
42
|
+
export interface InitializeRequest {
|
|
43
|
+
protocolVersion: number;
|
|
44
|
+
clientInfo?: Implementation;
|
|
45
|
+
clientCapabilities?: ClientCapabilities;
|
|
46
|
+
}
|
|
47
|
+
export interface InitializeResponse {
|
|
48
|
+
protocolVersion: number;
|
|
49
|
+
agentInfo?: Implementation;
|
|
50
|
+
agentCapabilities?: AgentCapabilities;
|
|
51
|
+
authMethods?: AuthMethod[];
|
|
52
|
+
}
|
|
53
|
+
export interface McpServer {
|
|
54
|
+
name?: string;
|
|
55
|
+
command?: string;
|
|
56
|
+
args?: string[];
|
|
57
|
+
env?: Record<string, string>;
|
|
58
|
+
}
|
|
59
|
+
export interface NewSessionRequest {
|
|
60
|
+
cwd: string;
|
|
61
|
+
mcpServers: McpServer[];
|
|
62
|
+
}
|
|
63
|
+
export interface NewSessionResponse {
|
|
64
|
+
sessionId: SessionId;
|
|
65
|
+
}
|
|
66
|
+
export interface LoadSessionRequest {
|
|
67
|
+
sessionId: SessionId;
|
|
68
|
+
cwd: string;
|
|
69
|
+
mcpServers: McpServer[];
|
|
70
|
+
}
|
|
71
|
+
export type ContentBlock = {
|
|
72
|
+
type: 'text';
|
|
73
|
+
text: string;
|
|
74
|
+
} | {
|
|
75
|
+
type: 'image';
|
|
76
|
+
data: string;
|
|
77
|
+
mimeType: string;
|
|
78
|
+
uri?: string;
|
|
79
|
+
} | {
|
|
80
|
+
type: 'audio';
|
|
81
|
+
data: string;
|
|
82
|
+
mimeType: string;
|
|
83
|
+
} | {
|
|
84
|
+
type: 'resource_link';
|
|
85
|
+
uri: string;
|
|
86
|
+
name: string;
|
|
87
|
+
mimeType?: string;
|
|
88
|
+
} | {
|
|
89
|
+
type: 'resource';
|
|
90
|
+
resource: unknown;
|
|
91
|
+
};
|
|
92
|
+
/** Extract plain text from a single content block (best-effort). */
|
|
93
|
+
export declare function contentBlockToText(block: ContentBlock): string;
|
|
94
|
+
export interface PromptRequest {
|
|
95
|
+
sessionId: SessionId;
|
|
96
|
+
prompt: ContentBlock[];
|
|
97
|
+
}
|
|
98
|
+
export type StopReason = 'end_turn' | 'max_tokens' | 'max_turn_requests' | 'refusal' | 'cancelled';
|
|
99
|
+
export interface PromptResponse {
|
|
100
|
+
stopReason: StopReason;
|
|
101
|
+
}
|
|
102
|
+
export type ToolCallStatus = 'pending' | 'in_progress' | 'completed' | 'failed' | 'cancelled';
|
|
103
|
+
/**
|
|
104
|
+
* Known session/update variants. Unknown variants (future versions, vendor
|
|
105
|
+
* extensions) are represented at runtime by the same shape with an
|
|
106
|
+
* unrecognized `sessionUpdate` string — the adapter routes those to
|
|
107
|
+
* `native` events without narrowing.
|
|
108
|
+
*/
|
|
109
|
+
export type SessionUpdate = {
|
|
110
|
+
sessionUpdate: 'agent_message_chunk';
|
|
111
|
+
content: ContentBlock;
|
|
112
|
+
} | {
|
|
113
|
+
sessionUpdate: 'agent_thought_chunk';
|
|
114
|
+
content: ContentBlock;
|
|
115
|
+
} | {
|
|
116
|
+
sessionUpdate: 'user_message_chunk';
|
|
117
|
+
content: ContentBlock;
|
|
118
|
+
} | {
|
|
119
|
+
sessionUpdate: 'tool_call';
|
|
120
|
+
toolCallId: string;
|
|
121
|
+
title?: string;
|
|
122
|
+
kind?: string;
|
|
123
|
+
status?: ToolCallStatus;
|
|
124
|
+
content?: ContentBlock[];
|
|
125
|
+
rawInput?: unknown;
|
|
126
|
+
} | {
|
|
127
|
+
sessionUpdate: 'tool_call_update';
|
|
128
|
+
toolCallId: string;
|
|
129
|
+
status?: ToolCallStatus;
|
|
130
|
+
content?: ContentBlock[];
|
|
131
|
+
title?: string;
|
|
132
|
+
rawInput?: unknown;
|
|
133
|
+
rawOutput?: unknown;
|
|
134
|
+
} | {
|
|
135
|
+
sessionUpdate: 'plan';
|
|
136
|
+
entries?: unknown[];
|
|
137
|
+
} | {
|
|
138
|
+
sessionUpdate: 'mode';
|
|
139
|
+
mode?: unknown;
|
|
140
|
+
};
|
|
141
|
+
export interface SessionNotificationParams {
|
|
142
|
+
sessionId: SessionId;
|
|
143
|
+
update: SessionUpdate;
|
|
144
|
+
}
|
|
145
|
+
export interface CancelNotificationParams {
|
|
146
|
+
sessionId: SessionId;
|
|
147
|
+
}
|
|
148
|
+
export declare const ACP_METHODS: {
|
|
149
|
+
readonly initialize: "initialize";
|
|
150
|
+
readonly newSession: "session/new";
|
|
151
|
+
readonly loadSession: "session/load";
|
|
152
|
+
readonly prompt: "session/prompt";
|
|
153
|
+
readonly cancel: "session/cancel";
|
|
154
|
+
readonly sessionUpdate: "session/update";
|
|
155
|
+
readonly requestPermission: "session/request_permission";
|
|
156
|
+
};
|
|
157
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/acp/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent Client Protocol — TypeScript types for the subset this chassis
|
|
3
|
+
* implements. Faithful to the ACP spec at
|
|
4
|
+
* https://agentclientprotocol.com/protocol — field names are literal.
|
|
5
|
+
*
|
|
6
|
+
* We model only the messages the chassis sends or receives: initialize,
|
|
7
|
+
* session/new, session/prompt, session/update notifications, and
|
|
8
|
+
* session/cancel. Optional features (filesystem ops, terminals,
|
|
9
|
+
* session/request_permission, MCP transport configuration) are out of
|
|
10
|
+
* scope for v1 and surface as `native` events when encountered.
|
|
11
|
+
*
|
|
12
|
+
* @internal
|
|
13
|
+
*/
|
|
14
|
+
/** Negotiated at initialize time; the spec is currently at v1. */
|
|
15
|
+
export const ACP_PROTOCOL_VERSION = 1;
|
|
16
|
+
/** Extract plain text from a single content block (best-effort). */
|
|
17
|
+
export function contentBlockToText(block) {
|
|
18
|
+
if (block.type === 'text')
|
|
19
|
+
return block.text;
|
|
20
|
+
if (block.type === 'resource_link')
|
|
21
|
+
return `[resource: ${block.name} (${block.uri})]`;
|
|
22
|
+
return `[${block.type}]`;
|
|
23
|
+
}
|
|
24
|
+
// --- ACP method names (string literals so call sites are uniform) ---
|
|
25
|
+
export const ACP_METHODS = {
|
|
26
|
+
initialize: 'initialize',
|
|
27
|
+
newSession: 'session/new',
|
|
28
|
+
loadSession: 'session/load',
|
|
29
|
+
prompt: 'session/prompt',
|
|
30
|
+
cancel: 'session/cancel',
|
|
31
|
+
sessionUpdate: 'session/update',
|
|
32
|
+
requestPermission: 'session/request_permission',
|
|
33
|
+
};
|
|
34
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/acp/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,kEAAkE;AAClE,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC;AA8EtC,oEAAoE;AACpE,MAAM,UAAU,kBAAkB,CAAC,KAAmB;IACpD,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM;QAAE,OAAO,KAAK,CAAC,IAAI,CAAC;IAC7C,IAAI,KAAK,CAAC,IAAI,KAAK,eAAe;QAAE,OAAO,cAAc,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,GAAG,IAAI,CAAC;IACtF,OAAO,IAAI,KAAK,CAAC,IAAI,GAAG,CAAC;AAC3B,CAAC;AAuED,uEAAuE;AAEvE,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,UAAU,EAAE,YAAY;IACxB,UAAU,EAAE,aAAa;IACzB,WAAW,EAAE,cAAc;IAC3B,MAAM,EAAE,gBAAgB;IACxB,MAAM,EAAE,gBAAgB;IACxB,aAAa,EAAE,gBAAgB;IAC/B,iBAAiB,EAAE,4BAA4B;CACvC,CAAC"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Anthropic adapter — in-process via `@anthropic-ai/sdk`.
|
|
3
|
+
*
|
|
4
|
+
* Single-turn. The adapter streams from `client.messages.stream(...)`,
|
|
5
|
+
* translates Anthropic's RawMessageStreamEvent union to canonical
|
|
6
|
+
* `AgentEvent`s, and returns when the stream ends. Tool-use loops are
|
|
7
|
+
* the caller's responsibility — the adapter surfaces `tool_call` events
|
|
8
|
+
* but does not execute tools; on subsequent calls the caller passes the
|
|
9
|
+
* tool result back in `messages` as a user `tool_result` block.
|
|
10
|
+
*
|
|
11
|
+
* Capabilities:
|
|
12
|
+
* streaming 'text'
|
|
13
|
+
* cancellation 'cooperative' (Anthropic SDK accepts an AbortSignal)
|
|
14
|
+
* resumption 'none' (no native session id; pass history)
|
|
15
|
+
* structuredOutput 'prompted' (uses thread-phase's <response> parser)
|
|
16
|
+
*
|
|
17
|
+
* Extended thinking surfaces as canonical `thinking` events. Vision /
|
|
18
|
+
* citations / cache-control blocks pass through transparently in
|
|
19
|
+
* config.messages; we don't intercept them.
|
|
20
|
+
*
|
|
21
|
+
* @internal
|
|
22
|
+
*/
|
|
23
|
+
import Anthropic from '@anthropic-ai/sdk';
|
|
24
|
+
import type { MessageParam, Tool as AnthropicTool, ToolChoice, ThinkingConfigParam } from '@anthropic-ai/sdk/resources/messages.js';
|
|
25
|
+
import { type AgentAdapterMeta, type StructuredOutputConfig } from '@autonome-research/thread-phase/agents';
|
|
26
|
+
/** @internal */
|
|
27
|
+
export interface AnthropicAgentConfig {
|
|
28
|
+
/** Model name, e.g. 'claude-opus-4-7' or 'claude-sonnet-4-6'. */
|
|
29
|
+
model: string;
|
|
30
|
+
/** Conversation messages. The adapter prepends/appends nothing. */
|
|
31
|
+
messages: MessageParam[];
|
|
32
|
+
/** System prompt. */
|
|
33
|
+
systemPrompt?: string;
|
|
34
|
+
/** Optional tools the model may call. The adapter emits tool_call events; the caller executes and feeds tool_result back on the next call. */
|
|
35
|
+
tools?: AnthropicTool[];
|
|
36
|
+
/** Tool-choice control. */
|
|
37
|
+
toolChoice?: ToolChoice;
|
|
38
|
+
/** max_tokens — default 4096. */
|
|
39
|
+
maxTokens?: number;
|
|
40
|
+
/** Temperature. */
|
|
41
|
+
temperature?: number;
|
|
42
|
+
/** Optional thinking config (extended thinking). */
|
|
43
|
+
thinking?: ThinkingConfigParam;
|
|
44
|
+
/** Optional pre-built client. Useful for DI in tests. */
|
|
45
|
+
client?: Anthropic;
|
|
46
|
+
/** API key. Defaults to ANTHROPIC_API_KEY env var. */
|
|
47
|
+
apiKey?: string;
|
|
48
|
+
/** Base URL override. */
|
|
49
|
+
baseURL?: string;
|
|
50
|
+
/** Optional structured-output spec (prompted path). */
|
|
51
|
+
outputSchema?: StructuredOutputConfig;
|
|
52
|
+
}
|
|
53
|
+
/** @internal */
|
|
54
|
+
export declare const anthropicAgent: AgentAdapterMeta<AnthropicAgentConfig>;
|
|
55
|
+
//# sourceMappingURL=adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../src/anthropic/adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,SAAS,MAAM,mBAAmB,CAAC;AAC1C,OAAO,KAAK,EACV,YAAY,EACZ,IAAI,IAAI,aAAa,EACrB,UAAU,EAEV,mBAAmB,EACpB,MAAM,yCAAyC,CAAC;AAEjD,OAAO,EASL,KAAK,gBAAgB,EAKrB,KAAK,sBAAsB,EAC5B,MAAM,wCAAwC,CAAC;AAKhD,gBAAgB;AAChB,MAAM,WAAW,oBAAoB;IACnC,iEAAiE;IACjE,KAAK,EAAE,MAAM,CAAC;IACd,mEAAmE;IACnE,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,qBAAqB;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,8IAA8I;IAC9I,KAAK,CAAC,EAAE,aAAa,EAAE,CAAC;IACxB,2BAA2B;IAC3B,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,iCAAiC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mBAAmB;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oDAAoD;IACpD,QAAQ,CAAC,EAAE,mBAAmB,CAAC;IAC/B,yDAAyD;IACzD,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,sDAAsD;IACtD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,yBAAyB;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,uDAAuD;IACvD,YAAY,CAAC,EAAE,sBAAsB,CAAC;CACvC;AAED,gBAAgB;AAChB,eAAO,MAAM,cAAc,EAAE,gBAAgB,CAAC,oBAAoB,CAShE,CAAC"}
|