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.
Files changed (77) hide show
  1. package/README.md +3 -5
  2. package/bin/thinkwell +130 -174
  3. package/dist/agent.d.ts +82 -56
  4. package/dist/agent.d.ts.map +1 -1
  5. package/dist/agent.js +178 -174
  6. package/dist/agent.js.map +1 -1
  7. package/dist/cli/build.d.ts +15 -43
  8. package/dist/cli/build.d.ts.map +1 -1
  9. package/dist/cli/build.js +199 -1231
  10. package/dist/cli/build.js.map +1 -1
  11. package/dist/cli/bundle.d.ts +61 -0
  12. package/dist/cli/bundle.d.ts.map +1 -0
  13. package/dist/cli/bundle.js +1299 -0
  14. package/dist/cli/bundle.js.map +1 -0
  15. package/dist/cli/check.d.ts +19 -0
  16. package/dist/cli/check.d.ts.map +1 -0
  17. package/dist/cli/check.js +248 -0
  18. package/dist/cli/check.js.map +1 -0
  19. package/dist/cli/commands.d.ts +30 -0
  20. package/dist/cli/commands.d.ts.map +1 -0
  21. package/dist/cli/commands.js +64 -0
  22. package/dist/cli/commands.js.map +1 -0
  23. package/dist/cli/compiler-host.d.ts +109 -0
  24. package/dist/cli/compiler-host.d.ts.map +1 -0
  25. package/dist/cli/compiler-host.js +173 -0
  26. package/dist/cli/compiler-host.js.map +1 -0
  27. package/dist/cli/fmt.d.ts +13 -0
  28. package/dist/cli/fmt.d.ts.map +1 -0
  29. package/dist/cli/fmt.js +14 -0
  30. package/dist/cli/fmt.js.map +1 -0
  31. package/dist/cli/init-command.js +12 -12
  32. package/dist/cli/init-command.js.map +1 -1
  33. package/dist/cli/loader.d.ts +0 -21
  34. package/dist/cli/loader.d.ts.map +1 -1
  35. package/dist/cli/loader.js +1 -50
  36. package/dist/cli/loader.js.map +1 -1
  37. package/dist/cli/schema.d.ts +2 -0
  38. package/dist/cli/schema.d.ts.map +1 -1
  39. package/dist/cli/schema.js +11 -4
  40. package/dist/cli/schema.js.map +1 -1
  41. package/dist/cli/workspace.d.ts +82 -0
  42. package/dist/cli/workspace.d.ts.map +1 -0
  43. package/dist/cli/workspace.js +248 -0
  44. package/dist/cli/workspace.js.map +1 -0
  45. package/dist/index.d.ts +6 -3
  46. package/dist/index.d.ts.map +1 -1
  47. package/dist/index.js +3 -3
  48. package/dist/index.js.map +1 -1
  49. package/dist/think-builder.d.ts +50 -2
  50. package/dist/think-builder.d.ts.map +1 -1
  51. package/dist/think-builder.js +137 -14
  52. package/dist/think-builder.js.map +1 -1
  53. package/dist/thought-event.d.ts +80 -0
  54. package/dist/thought-event.d.ts.map +1 -0
  55. package/dist/thought-event.js +2 -0
  56. package/dist/thought-event.js.map +1 -0
  57. package/dist/thought-stream.d.ts +45 -0
  58. package/dist/thought-stream.d.ts.map +1 -0
  59. package/dist/thought-stream.js +99 -0
  60. package/dist/thought-stream.js.map +1 -0
  61. package/dist-pkg/acp.cjs +37 -11
  62. package/dist-pkg/thinkwell.cjs +49 -18
  63. package/package.json +4 -9
  64. package/dist/cli/index.d.ts +0 -11
  65. package/dist/cli/index.d.ts.map +0 -1
  66. package/dist/cli/index.js +0 -11
  67. package/dist/cli/index.js.map +0 -1
  68. package/dist/cli/main-pkg.d.ts +0 -18
  69. package/dist/cli/main-pkg.d.ts.map +0 -1
  70. package/dist/cli/main.d.ts +0 -14
  71. package/dist/cli/main.d.ts.map +0 -1
  72. package/dist/cli/main.js +0 -256
  73. package/dist/cli/main.js.map +0 -1
  74. package/dist/cli/types-command.d.ts +0 -8
  75. package/dist/cli/types-command.d.ts.map +0 -1
  76. package/dist/cli/types-command.js +0 -110
  77. package/dist/cli/types-command.js.map +0 -1
@@ -1,4 +1,7 @@
1
- import { mcpServer, } from "@thinkwell/acp";
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.pushUpdate({ type: "stop", reason: response.stopReason });
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 new Promise((resolve, reject) => {
190
- this._executeRun(resolve, reject).catch(reject);
191
- });
280
+ return this.stream().result;
192
281
  }
193
- async _executeRun(resolve, reject) {
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
- // Build the prompt
203
- let prompt = this._promptParts.join("");
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
- // Register the MCP server
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 until we get a result or the session ends
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
- reject(new Error("Session ended without calling return_result"));
392
+ stream.rejectResult(new Error("Session ended without calling return_result"));
275
393
  }
276
394
  break;
277
395
  }
278
- // Tool calls are handled by the MCP server
396
+ // Forward the event to stream consumers
397
+ stream.pushEvent(update);
279
398
  }
280
399
  if (resultReceived && result !== undefined) {
281
- resolve(result);
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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=thought-event.js.map
@@ -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
- const timeout = setTimeout(() => {
147
- this.process.kill("SIGKILL");
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
- }, 5e3);
150
- this.process.once("exit", () => {
151
- clearTimeout(timeout);
152
- resolve();
153
- });
154
- this.process.kill("SIGTERM");
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(() => resolve());
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
  }