thinkwell 0.4.5 → 0.5.0-alpha.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -5
- package/bin/thinkwell +130 -174
- package/dist/agent.d.ts +82 -56
- package/dist/agent.d.ts.map +1 -1
- package/dist/agent.js +178 -174
- package/dist/agent.js.map +1 -1
- package/dist/cli/build.d.ts +15 -43
- package/dist/cli/build.d.ts.map +1 -1
- package/dist/cli/build.js +199 -1231
- package/dist/cli/build.js.map +1 -1
- package/dist/cli/bundle.d.ts +61 -0
- package/dist/cli/bundle.d.ts.map +1 -0
- package/dist/cli/bundle.js +1299 -0
- package/dist/cli/bundle.js.map +1 -0
- package/dist/cli/check.d.ts +19 -0
- package/dist/cli/check.d.ts.map +1 -0
- package/dist/cli/check.js +248 -0
- package/dist/cli/check.js.map +1 -0
- package/dist/cli/commands.d.ts +30 -0
- package/dist/cli/commands.d.ts.map +1 -0
- package/dist/cli/commands.js +64 -0
- package/dist/cli/commands.js.map +1 -0
- package/dist/cli/compiler-host.d.ts +109 -0
- package/dist/cli/compiler-host.d.ts.map +1 -0
- package/dist/cli/compiler-host.js +173 -0
- package/dist/cli/compiler-host.js.map +1 -0
- package/dist/cli/fmt.d.ts +13 -0
- package/dist/cli/fmt.d.ts.map +1 -0
- package/dist/cli/fmt.js +14 -0
- package/dist/cli/fmt.js.map +1 -0
- package/dist/cli/init-command.js +12 -12
- package/dist/cli/init-command.js.map +1 -1
- package/dist/cli/loader.d.ts +0 -21
- package/dist/cli/loader.d.ts.map +1 -1
- package/dist/cli/loader.js +1 -50
- package/dist/cli/loader.js.map +1 -1
- package/dist/cli/schema.d.ts +2 -0
- package/dist/cli/schema.d.ts.map +1 -1
- package/dist/cli/schema.js +11 -4
- package/dist/cli/schema.js.map +1 -1
- package/dist/cli/workspace.d.ts +82 -0
- package/dist/cli/workspace.d.ts.map +1 -0
- package/dist/cli/workspace.js +248 -0
- package/dist/cli/workspace.js.map +1 -0
- package/dist/index.d.ts +6 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/think-builder.d.ts +50 -2
- package/dist/think-builder.d.ts.map +1 -1
- package/dist/think-builder.js +137 -14
- package/dist/think-builder.js.map +1 -1
- package/dist/thought-event.d.ts +80 -0
- package/dist/thought-event.d.ts.map +1 -0
- package/dist/thought-event.js +2 -0
- package/dist/thought-event.js.map +1 -0
- package/dist/thought-stream.d.ts +45 -0
- package/dist/thought-stream.d.ts.map +1 -0
- package/dist/thought-stream.js +99 -0
- package/dist/thought-stream.js.map +1 -0
- package/dist-pkg/acp.cjs +37 -11
- package/dist-pkg/thinkwell.cjs +49 -18
- package/package.json +4 -9
- package/dist/cli/index.d.ts +0 -11
- package/dist/cli/index.d.ts.map +0 -1
- package/dist/cli/index.js +0 -11
- package/dist/cli/index.js.map +0 -1
- package/dist/cli/main-pkg.d.ts +0 -18
- package/dist/cli/main-pkg.d.ts.map +0 -1
- package/dist/cli/main.d.ts +0 -14
- package/dist/cli/main.d.ts.map +0 -1
- package/dist/cli/main.js +0 -256
- package/dist/cli/main.js.map +0 -1
- package/dist/cli/types-command.d.ts +0 -8
- package/dist/cli/types-command.d.ts.map +0 -1
- package/dist/cli/types-command.js +0 -110
- package/dist/cli/types-command.js.map +0 -1
package/dist/think-builder.js
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { readFile } from "node:fs/promises";
|
|
2
|
+
import { dirname } from "node:path";
|
|
3
|
+
import { mcpServer, createSkillServer, parseSkillMd, validateSkillName, validateSkillDescription, } from "@thinkwell/acp";
|
|
4
|
+
import { ThoughtStream } from "./thought-stream.js";
|
|
2
5
|
/**
|
|
3
6
|
* Internal session handler for ThinkBuilder
|
|
4
7
|
*/
|
|
@@ -18,10 +21,13 @@ class ThinkSession {
|
|
|
18
21
|
prompt: [{ type: "text", text: content }],
|
|
19
22
|
});
|
|
20
23
|
if (response.stopReason) {
|
|
21
|
-
this.
|
|
24
|
+
this._pushInternal({ type: "stop", reason: response.stopReason });
|
|
22
25
|
}
|
|
23
26
|
}
|
|
24
27
|
pushUpdate(update) {
|
|
28
|
+
this._pushInternal(update);
|
|
29
|
+
}
|
|
30
|
+
_pushInternal(update) {
|
|
25
31
|
if (this._updateResolvers.length > 0) {
|
|
26
32
|
const resolver = this._updateResolvers.shift();
|
|
27
33
|
resolver(update);
|
|
@@ -62,6 +68,7 @@ export class ThinkBuilder {
|
|
|
62
68
|
_conn;
|
|
63
69
|
_promptParts = [];
|
|
64
70
|
_tools = new Map();
|
|
71
|
+
_skills = [];
|
|
65
72
|
_schemaProvider;
|
|
66
73
|
_cwd;
|
|
67
74
|
_existingSessionId;
|
|
@@ -167,6 +174,37 @@ export class ThinkBuilder {
|
|
|
167
174
|
});
|
|
168
175
|
return this;
|
|
169
176
|
}
|
|
177
|
+
/**
|
|
178
|
+
* Attach a skill to this prompt.
|
|
179
|
+
*
|
|
180
|
+
* When called with a string, it is treated as a path to a SKILL.md file
|
|
181
|
+
* that will be parsed at run() time (deferred stored skill).
|
|
182
|
+
*
|
|
183
|
+
* When called with an object, it is treated as a virtual skill definition
|
|
184
|
+
* and validated eagerly.
|
|
185
|
+
*
|
|
186
|
+
* @param pathOrDef - Path to a SKILL.md file, or a virtual skill definition
|
|
187
|
+
*/
|
|
188
|
+
skill(pathOrDef) {
|
|
189
|
+
if (typeof pathOrDef === "string") {
|
|
190
|
+
this._skills.push({ type: "stored", path: pathOrDef });
|
|
191
|
+
}
|
|
192
|
+
else {
|
|
193
|
+
// Validate eagerly for virtual skills
|
|
194
|
+
validateSkillName(pathOrDef.name);
|
|
195
|
+
validateSkillDescription(pathOrDef.description);
|
|
196
|
+
this._skills.push({
|
|
197
|
+
type: "virtual",
|
|
198
|
+
skill: {
|
|
199
|
+
name: pathOrDef.name,
|
|
200
|
+
description: pathOrDef.description,
|
|
201
|
+
body: pathOrDef.body,
|
|
202
|
+
tools: pathOrDef.tools,
|
|
203
|
+
},
|
|
204
|
+
});
|
|
205
|
+
}
|
|
206
|
+
return this;
|
|
207
|
+
}
|
|
170
208
|
/**
|
|
171
209
|
* Set the working directory for the session
|
|
172
210
|
*/
|
|
@@ -174,6 +212,59 @@ export class ThinkBuilder {
|
|
|
174
212
|
this._cwd = path;
|
|
175
213
|
return this;
|
|
176
214
|
}
|
|
215
|
+
/**
|
|
216
|
+
* Resolve all deferred skills into ResolvedSkill instances.
|
|
217
|
+
*
|
|
218
|
+
* - Virtual skills are passed through as-is.
|
|
219
|
+
* - Stored skills are loaded from disk: SKILL.md is parsed and basePath is
|
|
220
|
+
* set to the directory containing the file.
|
|
221
|
+
*
|
|
222
|
+
* Skills are returned in attachment order.
|
|
223
|
+
*/
|
|
224
|
+
async _resolveSkills() {
|
|
225
|
+
const resolved = [];
|
|
226
|
+
for (const deferred of this._skills) {
|
|
227
|
+
if (deferred.type === "virtual") {
|
|
228
|
+
resolved.push(deferred.skill);
|
|
229
|
+
}
|
|
230
|
+
else {
|
|
231
|
+
const content = await readFile(deferred.path, "utf-8");
|
|
232
|
+
const parsed = parseSkillMd(content);
|
|
233
|
+
const stored = {
|
|
234
|
+
name: parsed.name,
|
|
235
|
+
description: parsed.description,
|
|
236
|
+
body: parsed.body,
|
|
237
|
+
basePath: dirname(deferred.path),
|
|
238
|
+
};
|
|
239
|
+
resolved.push(stored);
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
return resolved;
|
|
243
|
+
}
|
|
244
|
+
/**
|
|
245
|
+
* Build the `<available_skills>` XML block and infrastructure instructions.
|
|
246
|
+
*
|
|
247
|
+
* Returns the string to prepend before the user's prompt parts, or an
|
|
248
|
+
* empty string when no skills are attached.
|
|
249
|
+
*/
|
|
250
|
+
_buildSkillsPrompt(skills) {
|
|
251
|
+
if (skills.length === 0)
|
|
252
|
+
return "";
|
|
253
|
+
let xml = "<available_skills>\n";
|
|
254
|
+
for (const skill of skills) {
|
|
255
|
+
xml += ` <skill>\n`;
|
|
256
|
+
xml += ` <name>${skill.name}</name>\n`;
|
|
257
|
+
xml += ` <description>${skill.description}</description>\n`;
|
|
258
|
+
xml += ` </skill>\n`;
|
|
259
|
+
}
|
|
260
|
+
xml += "</available_skills>\n";
|
|
261
|
+
xml += "\n";
|
|
262
|
+
xml += "The above skills are available to you. When a task matches a skill's description,\n";
|
|
263
|
+
xml += "call the `activate_skill` tool with the skill name to load its full instructions.\n";
|
|
264
|
+
xml += "If the skill provides tools, use `call_skill_tool` to invoke them.\n";
|
|
265
|
+
xml += "If the skill references files, use `read_skill_file` to access them.\n";
|
|
266
|
+
return xml + "\n";
|
|
267
|
+
}
|
|
177
268
|
/**
|
|
178
269
|
* Execute the prompt and return the result.
|
|
179
270
|
*
|
|
@@ -186,11 +277,21 @@ export class ThinkBuilder {
|
|
|
186
277
|
* 6. Returns the typed result
|
|
187
278
|
*/
|
|
188
279
|
async run() {
|
|
189
|
-
return
|
|
190
|
-
this._executeRun(resolve, reject).catch(reject);
|
|
191
|
-
});
|
|
280
|
+
return this.stream().result;
|
|
192
281
|
}
|
|
193
|
-
|
|
282
|
+
/**
|
|
283
|
+
* Start executing the prompt, returning a stream handle that provides
|
|
284
|
+
* both an async iterable of intermediate `ThoughtEvent`s and a `.result`
|
|
285
|
+
* promise for the final typed output.
|
|
286
|
+
*
|
|
287
|
+
* Execution begins eagerly — the returned stream is already "hot".
|
|
288
|
+
*/
|
|
289
|
+
stream() {
|
|
290
|
+
const stream = new ThoughtStream();
|
|
291
|
+
this._executeStream(stream).catch((err) => stream.rejectResult(err));
|
|
292
|
+
return stream;
|
|
293
|
+
}
|
|
294
|
+
async _executeStream(stream) {
|
|
194
295
|
// Ensure initialized
|
|
195
296
|
if (!this._conn.initialized) {
|
|
196
297
|
await this._conn.connection.initialize({
|
|
@@ -199,8 +300,10 @@ export class ThinkBuilder {
|
|
|
199
300
|
});
|
|
200
301
|
this._conn.initialized = true;
|
|
201
302
|
}
|
|
202
|
-
//
|
|
203
|
-
|
|
303
|
+
// Resolve deferred skills
|
|
304
|
+
const resolvedSkills = await this._resolveSkills();
|
|
305
|
+
// Build the prompt: skills block first, then user prompt parts
|
|
306
|
+
let prompt = this._buildSkillsPrompt(resolvedSkills) + this._promptParts.join("");
|
|
204
307
|
// Add tool references to the prompt
|
|
205
308
|
const toolsWithPrompt = Array.from(this._tools.values()).filter((t) => t.includeInPrompt);
|
|
206
309
|
if (toolsWithPrompt.length > 0) {
|
|
@@ -231,8 +334,15 @@ export class ThinkBuilder {
|
|
|
231
334
|
});
|
|
232
335
|
}
|
|
233
336
|
const server = serverBuilder.build();
|
|
234
|
-
//
|
|
337
|
+
// Build skill MCP server if skills are present
|
|
338
|
+
const skillServer = resolvedSkills.length > 0
|
|
339
|
+
? createSkillServer(resolvedSkills)
|
|
340
|
+
: undefined;
|
|
341
|
+
// Register the MCP server(s)
|
|
235
342
|
this._conn.mcpHandler.register(server);
|
|
343
|
+
if (skillServer) {
|
|
344
|
+
this._conn.mcpHandler.register(skillServer);
|
|
345
|
+
}
|
|
236
346
|
this._conn.mcpHandler.setSessionId(this._existingSessionId ?? "pending");
|
|
237
347
|
try {
|
|
238
348
|
// Create or reuse session
|
|
@@ -249,6 +359,14 @@ export class ThinkBuilder {
|
|
|
249
359
|
url: server.acpUrl,
|
|
250
360
|
headers: [],
|
|
251
361
|
}];
|
|
362
|
+
if (skillServer) {
|
|
363
|
+
mcpServers.push({
|
|
364
|
+
type: "http",
|
|
365
|
+
name: skillServer.name,
|
|
366
|
+
url: skillServer.acpUrl,
|
|
367
|
+
headers: [],
|
|
368
|
+
});
|
|
369
|
+
}
|
|
252
370
|
const request = {
|
|
253
371
|
cwd: this._cwd ?? process.cwd(),
|
|
254
372
|
mcpServers,
|
|
@@ -266,29 +384,34 @@ export class ThinkBuilder {
|
|
|
266
384
|
try {
|
|
267
385
|
// Send the prompt
|
|
268
386
|
await session.sendPrompt(prompt);
|
|
269
|
-
// Read updates
|
|
387
|
+
// Read updates, forwarding events to the stream and watching for result
|
|
270
388
|
while (!resultReceived) {
|
|
271
389
|
const update = await session.readUpdate();
|
|
272
390
|
if (update.type === "stop") {
|
|
273
391
|
if (!resultReceived) {
|
|
274
|
-
|
|
392
|
+
stream.rejectResult(new Error("Session ended without calling return_result"));
|
|
275
393
|
}
|
|
276
394
|
break;
|
|
277
395
|
}
|
|
278
|
-
//
|
|
396
|
+
// Forward the event to stream consumers
|
|
397
|
+
stream.pushEvent(update);
|
|
279
398
|
}
|
|
280
399
|
if (resultReceived && result !== undefined) {
|
|
281
|
-
|
|
400
|
+
stream.resolveResult(result);
|
|
282
401
|
}
|
|
283
402
|
}
|
|
284
403
|
finally {
|
|
404
|
+
stream.close();
|
|
285
405
|
session.close();
|
|
286
406
|
this._conn.sessionHandlers.delete(sessionId);
|
|
287
407
|
}
|
|
288
408
|
}
|
|
289
409
|
finally {
|
|
290
|
-
// Unregister MCP server
|
|
410
|
+
// Unregister MCP server(s)
|
|
291
411
|
this._conn.mcpHandler.unregister(server);
|
|
412
|
+
if (skillServer) {
|
|
413
|
+
this._conn.mcpHandler.unregister(skillServer);
|
|
414
|
+
}
|
|
292
415
|
}
|
|
293
416
|
}
|
|
294
417
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"think-builder.js","sourceRoot":"","sources":["../src/think-builder.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"think-builder.js","sourceRoot":"","sources":["../src/think-builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Categories of tools that can be invoked.
|
|
3
|
+
* Mirrors ACP's ToolKind but kept as a Thinkwell-level type for decoupling.
|
|
4
|
+
*/
|
|
5
|
+
export type ToolKind = "read" | "edit" | "delete" | "move" | "search" | "execute" | "think" | "fetch" | "switch_mode" | "other";
|
|
6
|
+
/**
|
|
7
|
+
* A standard content block (text, image, etc.).
|
|
8
|
+
* Simplified from ACP's ContentBlock to expose only user-facing fields.
|
|
9
|
+
*/
|
|
10
|
+
export type ContentBlock = {
|
|
11
|
+
type: "text";
|
|
12
|
+
text: string;
|
|
13
|
+
} | {
|
|
14
|
+
type: "image";
|
|
15
|
+
data: string;
|
|
16
|
+
mimeType: string;
|
|
17
|
+
} | {
|
|
18
|
+
type: "resource_link";
|
|
19
|
+
uri: string;
|
|
20
|
+
name?: string;
|
|
21
|
+
};
|
|
22
|
+
/**
|
|
23
|
+
* Parsed from ACP's ToolCallContent discriminated union.
|
|
24
|
+
* Exposed as typed variants so users get structured access to
|
|
25
|
+
* file diffs, terminal output, etc. without raw ACP types.
|
|
26
|
+
*/
|
|
27
|
+
export type ToolContent = {
|
|
28
|
+
type: "content";
|
|
29
|
+
content: ContentBlock;
|
|
30
|
+
} | {
|
|
31
|
+
type: "diff";
|
|
32
|
+
path: string;
|
|
33
|
+
oldText: string;
|
|
34
|
+
newText: string;
|
|
35
|
+
} | {
|
|
36
|
+
type: "terminal";
|
|
37
|
+
terminalId: string;
|
|
38
|
+
};
|
|
39
|
+
/**
|
|
40
|
+
* A single entry in the agent's execution plan.
|
|
41
|
+
*/
|
|
42
|
+
export interface PlanEntry {
|
|
43
|
+
content: string;
|
|
44
|
+
status: "pending" | "in_progress" | "completed";
|
|
45
|
+
priority: "high" | "medium" | "low";
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Thinkwell-level discriminated union of streaming events.
|
|
49
|
+
*
|
|
50
|
+
* These are protocol-independent — not raw ACP types — giving us
|
|
51
|
+
* freedom to evolve the event vocabulary independently of the protocol.
|
|
52
|
+
*
|
|
53
|
+
* Events do not carry timestamps. ACP content chunks have no standard
|
|
54
|
+
* timestamp field, so any timestamp would be client-side receipt time.
|
|
55
|
+
*/
|
|
56
|
+
export type ThoughtEvent = {
|
|
57
|
+
type: "thought";
|
|
58
|
+
text: string;
|
|
59
|
+
} | {
|
|
60
|
+
type: "message";
|
|
61
|
+
text: string;
|
|
62
|
+
} | {
|
|
63
|
+
type: "tool_start";
|
|
64
|
+
id: string;
|
|
65
|
+
title: string;
|
|
66
|
+
kind?: ToolKind;
|
|
67
|
+
} | {
|
|
68
|
+
type: "tool_update";
|
|
69
|
+
id: string;
|
|
70
|
+
status: string;
|
|
71
|
+
content?: ToolContent[];
|
|
72
|
+
} | {
|
|
73
|
+
type: "tool_done";
|
|
74
|
+
id: string;
|
|
75
|
+
status: "completed" | "failed";
|
|
76
|
+
} | {
|
|
77
|
+
type: "plan";
|
|
78
|
+
entries: PlanEntry[];
|
|
79
|
+
};
|
|
80
|
+
//# sourceMappingURL=thought-event.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"thought-event.d.ts","sourceRoot":"","sources":["../src/thought-event.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,MAAM,QAAQ,GAChB,MAAM,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,GACnC,QAAQ,GAAG,SAAS,GAAG,OAAO,GAAG,OAAO,GACxC,aAAa,GAAG,OAAO,CAAC;AAE5B;;;GAGG;AACH,MAAM,MAAM,YAAY,GACpB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC9B;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GACjD;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAE1D;;;;GAIG;AACH,MAAM,MAAM,WAAW,GACnB;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,YAAY,CAAA;CAAE,GAC1C;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAChE;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC;AAE7C;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,SAAS,GAAG,aAAa,GAAG,WAAW,CAAC;IAChD,QAAQ,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;CACrC;AAED;;;;;;;;GAQG;AACH,MAAM,MAAM,YAAY,GACpB;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACjC;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACjC;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,QAAQ,CAAA;CAAE,GAClE;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,WAAW,EAAE,CAAA;CAAE,GAC5E;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,WAAW,GAAG,QAAQ,CAAA;CAAE,GACjE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,SAAS,EAAE,CAAA;CAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"thought-event.js","sourceRoot":"","sources":["../src/thought-event.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { ThoughtEvent } from "./thought-event.js";
|
|
2
|
+
/**
|
|
3
|
+
* A lightweight handle providing both the final typed result (as a promise)
|
|
4
|
+
* and an async iterable of intermediate progress events.
|
|
5
|
+
*
|
|
6
|
+
* Execution starts eagerly when `stream()` is called. The async iterator
|
|
7
|
+
* and the result promise have independent lifecycles:
|
|
8
|
+
*
|
|
9
|
+
* - Iterate without awaiting `.result` (it resolves in the background)
|
|
10
|
+
* - Await `.result` without iterating (events buffer internally)
|
|
11
|
+
* - Do both concurrently
|
|
12
|
+
* - Break out of iteration and still await `.result`
|
|
13
|
+
*/
|
|
14
|
+
export declare class ThoughtStream<Output> implements AsyncIterable<ThoughtEvent> {
|
|
15
|
+
/** Resolves with the final typed result. */
|
|
16
|
+
readonly result: Promise<Output>;
|
|
17
|
+
private _resolveResult;
|
|
18
|
+
private _rejectResult;
|
|
19
|
+
private _pendingEvents;
|
|
20
|
+
private _eventResolvers;
|
|
21
|
+
private _done;
|
|
22
|
+
constructor();
|
|
23
|
+
/**
|
|
24
|
+
* Push an event into the stream for consumers to iterate over.
|
|
25
|
+
* @internal
|
|
26
|
+
*/
|
|
27
|
+
pushEvent(event: ThoughtEvent): void;
|
|
28
|
+
/**
|
|
29
|
+
* Signal that no more events will arrive. Flushes waiting consumers.
|
|
30
|
+
* @internal
|
|
31
|
+
*/
|
|
32
|
+
close(): void;
|
|
33
|
+
/**
|
|
34
|
+
* Resolve the result promise.
|
|
35
|
+
* @internal
|
|
36
|
+
*/
|
|
37
|
+
resolveResult(value: Output): void;
|
|
38
|
+
/**
|
|
39
|
+
* Reject the result promise.
|
|
40
|
+
* @internal
|
|
41
|
+
*/
|
|
42
|
+
rejectResult(error: Error): void;
|
|
43
|
+
[Symbol.asyncIterator](): AsyncIterator<ThoughtEvent>;
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=thought-stream.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"thought-stream.d.ts","sourceRoot":"","sources":["../src/thought-stream.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD;;;;;;;;;;;GAWG;AACH,qBAAa,aAAa,CAAC,MAAM,CAAE,YAAW,aAAa,CAAC,YAAY,CAAC;IACvE,4CAA4C;IAC5C,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAEjC,OAAO,CAAC,cAAc,CAA2B;IACjD,OAAO,CAAC,aAAa,CAA0B;IAE/C,OAAO,CAAC,cAAc,CAAsB;IAC5C,OAAO,CAAC,eAAe,CAA4D;IACnF,OAAO,CAAC,KAAK,CAAkB;;IAS/B;;;OAGG;IACH,SAAS,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI;IAWpC;;;OAGG;IACH,KAAK,IAAI,IAAI;IAUb;;;OAGG;IACH,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAIlC;;;OAGG;IACH,YAAY,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAIhC,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,aAAa,CAAC,YAAY,CAAC;CAgCtD"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A lightweight handle providing both the final typed result (as a promise)
|
|
3
|
+
* and an async iterable of intermediate progress events.
|
|
4
|
+
*
|
|
5
|
+
* Execution starts eagerly when `stream()` is called. The async iterator
|
|
6
|
+
* and the result promise have independent lifecycles:
|
|
7
|
+
*
|
|
8
|
+
* - Iterate without awaiting `.result` (it resolves in the background)
|
|
9
|
+
* - Await `.result` without iterating (events buffer internally)
|
|
10
|
+
* - Do both concurrently
|
|
11
|
+
* - Break out of iteration and still await `.result`
|
|
12
|
+
*/
|
|
13
|
+
export class ThoughtStream {
|
|
14
|
+
/** Resolves with the final typed result. */
|
|
15
|
+
result;
|
|
16
|
+
_resolveResult;
|
|
17
|
+
_rejectResult;
|
|
18
|
+
_pendingEvents = [];
|
|
19
|
+
_eventResolvers = [];
|
|
20
|
+
_done = false;
|
|
21
|
+
constructor() {
|
|
22
|
+
this.result = new Promise((resolve, reject) => {
|
|
23
|
+
this._resolveResult = resolve;
|
|
24
|
+
this._rejectResult = reject;
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Push an event into the stream for consumers to iterate over.
|
|
29
|
+
* @internal
|
|
30
|
+
*/
|
|
31
|
+
pushEvent(event) {
|
|
32
|
+
if (this._done)
|
|
33
|
+
return;
|
|
34
|
+
if (this._eventResolvers.length > 0) {
|
|
35
|
+
const resolver = this._eventResolvers.shift();
|
|
36
|
+
resolver({ value: event, done: false });
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
this._pendingEvents.push(event);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Signal that no more events will arrive. Flushes waiting consumers.
|
|
44
|
+
* @internal
|
|
45
|
+
*/
|
|
46
|
+
close() {
|
|
47
|
+
if (this._done)
|
|
48
|
+
return;
|
|
49
|
+
this._done = true;
|
|
50
|
+
for (const resolver of this._eventResolvers) {
|
|
51
|
+
resolver({ value: undefined, done: true });
|
|
52
|
+
}
|
|
53
|
+
this._eventResolvers = [];
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Resolve the result promise.
|
|
57
|
+
* @internal
|
|
58
|
+
*/
|
|
59
|
+
resolveResult(value) {
|
|
60
|
+
this._resolveResult(value);
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Reject the result promise.
|
|
64
|
+
* @internal
|
|
65
|
+
*/
|
|
66
|
+
rejectResult(error) {
|
|
67
|
+
this._rejectResult(error);
|
|
68
|
+
}
|
|
69
|
+
[Symbol.asyncIterator]() {
|
|
70
|
+
return {
|
|
71
|
+
next: () => {
|
|
72
|
+
if (this._pendingEvents.length > 0) {
|
|
73
|
+
return Promise.resolve({
|
|
74
|
+
value: this._pendingEvents.shift(),
|
|
75
|
+
done: false,
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
if (this._done) {
|
|
79
|
+
return Promise.resolve({ value: undefined, done: true });
|
|
80
|
+
}
|
|
81
|
+
return new Promise((resolve) => {
|
|
82
|
+
this._eventResolvers.push(resolve);
|
|
83
|
+
});
|
|
84
|
+
},
|
|
85
|
+
return: () => {
|
|
86
|
+
// Early termination — stop yielding events but don't kill the operation.
|
|
87
|
+
// The result promise can still resolve independently.
|
|
88
|
+
this._done = true;
|
|
89
|
+
this._pendingEvents = [];
|
|
90
|
+
for (const resolver of this._eventResolvers) {
|
|
91
|
+
resolver({ value: undefined, done: true });
|
|
92
|
+
}
|
|
93
|
+
this._eventResolvers = [];
|
|
94
|
+
return Promise.resolve({ value: undefined, done: true });
|
|
95
|
+
},
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
//# sourceMappingURL=thought-stream.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"thought-stream.js","sourceRoot":"","sources":["../src/thought-stream.ts"],"names":[],"mappings":"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"}
|
package/dist-pkg/acp.cjs
CHANGED
|
@@ -83,7 +83,7 @@ var init_stdio = __esm({
|
|
|
83
83
|
});
|
|
84
84
|
process2.on("exit", (code, signal) => {
|
|
85
85
|
this.closed = true;
|
|
86
|
-
if (code !== 0 && code !== null) {
|
|
86
|
+
if (code !== 0 && code !== null && !this.closingGracefully) {
|
|
87
87
|
console.error(`Process exited with code ${code}`);
|
|
88
88
|
}
|
|
89
89
|
if (signal && !this.closingGracefully) {
|
|
@@ -141,17 +141,26 @@ var init_stdio = __esm({
|
|
|
141
141
|
this.closed = true;
|
|
142
142
|
this.closingGracefully = true;
|
|
143
143
|
this.readline.close();
|
|
144
|
+
this.process.stdout?.destroy();
|
|
144
145
|
this.process.stdin?.end();
|
|
145
146
|
await new Promise((resolve) => {
|
|
146
|
-
|
|
147
|
-
|
|
147
|
+
let sigtermTimeout = null;
|
|
148
|
+
let sigkillTimeout = null;
|
|
149
|
+
const onExit = /* @__PURE__ */ __name(() => {
|
|
150
|
+
if (sigtermTimeout)
|
|
151
|
+
clearTimeout(sigtermTimeout);
|
|
152
|
+
if (sigkillTimeout)
|
|
153
|
+
clearTimeout(sigkillTimeout);
|
|
148
154
|
resolve();
|
|
149
|
-
},
|
|
150
|
-
this.process.once("exit",
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
+
}, "onExit");
|
|
156
|
+
this.process.once("exit", onExit);
|
|
157
|
+
sigtermTimeout = setTimeout(() => {
|
|
158
|
+
this.process.kill("SIGTERM");
|
|
159
|
+
sigkillTimeout = setTimeout(() => {
|
|
160
|
+
this.process.kill("SIGKILL");
|
|
161
|
+
resolve();
|
|
162
|
+
}, 500);
|
|
163
|
+
}, 250);
|
|
155
164
|
});
|
|
156
165
|
}
|
|
157
166
|
};
|
|
@@ -6129,6 +6138,7 @@ async function createHttpListener(options) {
|
|
|
6129
6138
|
const { acpUrl, onMessage } = options;
|
|
6130
6139
|
let sessionId = null;
|
|
6131
6140
|
const connections = /* @__PURE__ */ new Map();
|
|
6141
|
+
const sockets = /* @__PURE__ */ new Set();
|
|
6132
6142
|
let server = null;
|
|
6133
6143
|
server = (0, import_node_http.createServer)(async (req, res) => {
|
|
6134
6144
|
res.setHeader("Access-Control-Allow-Origin", "*");
|
|
@@ -6184,6 +6194,12 @@ async function createHttpListener(options) {
|
|
|
6184
6194
|
server.listen(0, "127.0.0.1", () => resolve());
|
|
6185
6195
|
server.on("error", reject);
|
|
6186
6196
|
});
|
|
6197
|
+
server.on("connection", (socket) => {
|
|
6198
|
+
sockets.add(socket);
|
|
6199
|
+
socket.on("close", () => {
|
|
6200
|
+
sockets.delete(socket);
|
|
6201
|
+
});
|
|
6202
|
+
});
|
|
6187
6203
|
const address = server.address();
|
|
6188
6204
|
if (!address || typeof address === "string") {
|
|
6189
6205
|
throw new Error("Failed to get server address");
|
|
@@ -6206,9 +6222,19 @@ async function createHttpListener(options) {
|
|
|
6206
6222
|
});
|
|
6207
6223
|
connections.delete(key);
|
|
6208
6224
|
}
|
|
6225
|
+
for (const socket of sockets) {
|
|
6226
|
+
socket.destroy();
|
|
6227
|
+
}
|
|
6228
|
+
sockets.clear();
|
|
6209
6229
|
if (server) {
|
|
6210
|
-
await new Promise((resolve) => {
|
|
6211
|
-
server.close(() =>
|
|
6230
|
+
await new Promise((resolve, reject) => {
|
|
6231
|
+
server.close((err) => {
|
|
6232
|
+
if (err) {
|
|
6233
|
+
reject(err);
|
|
6234
|
+
} else {
|
|
6235
|
+
resolve();
|
|
6236
|
+
}
|
|
6237
|
+
});
|
|
6212
6238
|
});
|
|
6213
6239
|
}
|
|
6214
6240
|
}
|