@agentex/agent 0.0.2 → 0.0.4

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 (190) hide show
  1. package/README.md +405 -87
  2. package/dist/index.d.ts +18 -1
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +11 -0
  5. package/dist/index.js.map +1 -1
  6. package/dist/providers/claude/execute.d.ts.map +1 -1
  7. package/dist/providers/claude/execute.js +51 -18
  8. package/dist/providers/claude/execute.js.map +1 -1
  9. package/dist/providers/claude/index.d.ts.map +1 -1
  10. package/dist/providers/claude/index.js +37 -8
  11. package/dist/providers/claude/index.js.map +1 -1
  12. package/dist/providers/claude/parse.d.ts.map +1 -1
  13. package/dist/providers/claude/parse.js +2 -1
  14. package/dist/providers/claude/parse.js.map +1 -1
  15. package/dist/providers/claude/session.d.ts +10 -0
  16. package/dist/providers/claude/session.d.ts.map +1 -0
  17. package/dist/providers/claude/session.js +549 -0
  18. package/dist/providers/claude/session.js.map +1 -0
  19. package/dist/providers/claude/test.d.ts.map +1 -1
  20. package/dist/providers/claude/test.js +38 -11
  21. package/dist/providers/claude/test.js.map +1 -1
  22. package/dist/providers/codex/execute.d.ts.map +1 -1
  23. package/dist/providers/codex/execute.js +122 -74
  24. package/dist/providers/codex/execute.js.map +1 -1
  25. package/dist/providers/codex/index.d.ts.map +1 -1
  26. package/dist/providers/codex/index.js +56 -2
  27. package/dist/providers/codex/index.js.map +1 -1
  28. package/dist/providers/codex/parse.d.ts.map +1 -1
  29. package/dist/providers/codex/parse.js +25 -3
  30. package/dist/providers/codex/parse.js.map +1 -1
  31. package/dist/providers/codex/session.d.ts +3 -0
  32. package/dist/providers/codex/session.d.ts.map +1 -0
  33. package/dist/providers/codex/session.js +553 -0
  34. package/dist/providers/codex/session.js.map +1 -0
  35. package/dist/providers/codex/test.d.ts.map +1 -1
  36. package/dist/providers/codex/test.js +28 -12
  37. package/dist/providers/codex/test.js.map +1 -1
  38. package/dist/providers/codex/usage-scanner.d.ts +18 -0
  39. package/dist/providers/codex/usage-scanner.d.ts.map +1 -0
  40. package/dist/providers/codex/usage-scanner.js +148 -0
  41. package/dist/providers/codex/usage-scanner.js.map +1 -0
  42. package/dist/providers/cursor/codec.d.ts +3 -0
  43. package/dist/providers/cursor/codec.d.ts.map +1 -0
  44. package/dist/providers/cursor/codec.js +43 -0
  45. package/dist/providers/cursor/codec.js.map +1 -0
  46. package/dist/providers/cursor/execute.d.ts +3 -0
  47. package/dist/providers/cursor/execute.d.ts.map +1 -0
  48. package/dist/providers/cursor/execute.js +248 -0
  49. package/dist/providers/cursor/execute.js.map +1 -0
  50. package/dist/providers/cursor/index.d.ts +3 -0
  51. package/dist/providers/cursor/index.d.ts.map +1 -0
  52. package/dist/providers/cursor/index.js +28 -0
  53. package/dist/providers/cursor/index.js.map +1 -0
  54. package/dist/providers/cursor/parse.d.ts +26 -0
  55. package/dist/providers/cursor/parse.d.ts.map +1 -0
  56. package/dist/providers/cursor/parse.js +224 -0
  57. package/dist/providers/cursor/parse.js.map +1 -0
  58. package/dist/providers/cursor/test.d.ts +3 -0
  59. package/dist/providers/cursor/test.d.ts.map +1 -0
  60. package/dist/providers/cursor/test.js +58 -0
  61. package/dist/providers/cursor/test.js.map +1 -0
  62. package/dist/providers/gemini/codec.d.ts +3 -0
  63. package/dist/providers/gemini/codec.d.ts.map +1 -0
  64. package/dist/providers/gemini/codec.js +47 -0
  65. package/dist/providers/gemini/codec.js.map +1 -0
  66. package/dist/providers/gemini/execute.d.ts +3 -0
  67. package/dist/providers/gemini/execute.d.ts.map +1 -0
  68. package/dist/providers/gemini/execute.js +236 -0
  69. package/dist/providers/gemini/execute.js.map +1 -0
  70. package/dist/providers/gemini/index.d.ts +3 -0
  71. package/dist/providers/gemini/index.d.ts.map +1 -0
  72. package/dist/providers/gemini/index.js +62 -0
  73. package/dist/providers/gemini/index.js.map +1 -0
  74. package/dist/providers/gemini/parse.d.ts +20 -0
  75. package/dist/providers/gemini/parse.d.ts.map +1 -0
  76. package/dist/providers/gemini/parse.js +207 -0
  77. package/dist/providers/gemini/parse.js.map +1 -0
  78. package/dist/providers/gemini/test.d.ts +3 -0
  79. package/dist/providers/gemini/test.d.ts.map +1 -0
  80. package/dist/providers/gemini/test.js +67 -0
  81. package/dist/providers/gemini/test.js.map +1 -0
  82. package/dist/providers/openclaw/execute.d.ts.map +1 -1
  83. package/dist/providers/openclaw/execute.js +10 -5
  84. package/dist/providers/openclaw/execute.js.map +1 -1
  85. package/dist/providers/openclaw/index.d.ts.map +1 -1
  86. package/dist/providers/openclaw/index.js +15 -2
  87. package/dist/providers/openclaw/index.js.map +1 -1
  88. package/dist/providers/openclaw/test.d.ts.map +1 -1
  89. package/dist/providers/openclaw/test.js +4 -0
  90. package/dist/providers/openclaw/test.js.map +1 -1
  91. package/dist/providers/opencode/codec.d.ts +3 -0
  92. package/dist/providers/opencode/codec.d.ts.map +1 -0
  93. package/dist/providers/opencode/codec.js +47 -0
  94. package/dist/providers/opencode/codec.js.map +1 -0
  95. package/dist/providers/opencode/execute.d.ts +3 -0
  96. package/dist/providers/opencode/execute.d.ts.map +1 -0
  97. package/dist/providers/opencode/execute.js +225 -0
  98. package/dist/providers/opencode/execute.js.map +1 -0
  99. package/dist/providers/opencode/index.d.ts +3 -0
  100. package/dist/providers/opencode/index.d.ts.map +1 -0
  101. package/dist/providers/opencode/index.js +62 -0
  102. package/dist/providers/opencode/index.js.map +1 -0
  103. package/dist/providers/opencode/parse.d.ts +19 -0
  104. package/dist/providers/opencode/parse.d.ts.map +1 -0
  105. package/dist/providers/opencode/parse.js +145 -0
  106. package/dist/providers/opencode/parse.js.map +1 -0
  107. package/dist/providers/opencode/test.d.ts +3 -0
  108. package/dist/providers/opencode/test.d.ts.map +1 -0
  109. package/dist/providers/opencode/test.js +60 -0
  110. package/dist/providers/opencode/test.js.map +1 -0
  111. package/dist/providers/pi/codec.d.ts +7 -0
  112. package/dist/providers/pi/codec.d.ts.map +1 -0
  113. package/dist/providers/pi/codec.js +45 -0
  114. package/dist/providers/pi/codec.js.map +1 -0
  115. package/dist/providers/pi/execute.d.ts +3 -0
  116. package/dist/providers/pi/execute.d.ts.map +1 -0
  117. package/dist/providers/pi/execute.js +300 -0
  118. package/dist/providers/pi/execute.js.map +1 -0
  119. package/dist/providers/pi/index.d.ts +3 -0
  120. package/dist/providers/pi/index.d.ts.map +1 -0
  121. package/dist/providers/pi/index.js +64 -0
  122. package/dist/providers/pi/index.js.map +1 -0
  123. package/dist/providers/pi/parse.d.ts +18 -0
  124. package/dist/providers/pi/parse.d.ts.map +1 -0
  125. package/dist/providers/pi/parse.js +182 -0
  126. package/dist/providers/pi/parse.js.map +1 -0
  127. package/dist/providers/pi/test.d.ts +3 -0
  128. package/dist/providers/pi/test.d.ts.map +1 -0
  129. package/dist/providers/pi/test.js +60 -0
  130. package/dist/providers/pi/test.js.map +1 -0
  131. package/dist/providers/process/execute.d.ts.map +1 -1
  132. package/dist/providers/process/execute.js +45 -7
  133. package/dist/providers/process/execute.js.map +1 -1
  134. package/dist/providers/process/index.d.ts.map +1 -1
  135. package/dist/providers/process/index.js +27 -30
  136. package/dist/providers/process/index.js.map +1 -1
  137. package/dist/registry.d.ts.map +1 -1
  138. package/dist/registry.js +8 -0
  139. package/dist/registry.js.map +1 -1
  140. package/dist/types.d.ts +379 -22
  141. package/dist/types.d.ts.map +1 -1
  142. package/dist/types.js +23 -1
  143. package/dist/types.js.map +1 -1
  144. package/dist/utils/ask-user-question.d.ts +50 -0
  145. package/dist/utils/ask-user-question.d.ts.map +1 -0
  146. package/dist/utils/ask-user-question.js +32 -0
  147. package/dist/utils/ask-user-question.js.map +1 -0
  148. package/dist/utils/auth.d.ts +22 -0
  149. package/dist/utils/auth.d.ts.map +1 -0
  150. package/dist/utils/auth.js +497 -0
  151. package/dist/utils/auth.js.map +1 -0
  152. package/dist/utils/binary.d.ts.map +1 -1
  153. package/dist/utils/binary.js +29 -6
  154. package/dist/utils/binary.js.map +1 -1
  155. package/dist/utils/env.d.ts.map +1 -1
  156. package/dist/utils/env.js +18 -0
  157. package/dist/utils/env.js.map +1 -1
  158. package/dist/utils/execute-all.d.ts +20 -0
  159. package/dist/utils/execute-all.d.ts.map +1 -0
  160. package/dist/utils/execute-all.js +46 -0
  161. package/dist/utils/execute-all.js.map +1 -0
  162. package/dist/utils/instructions.d.ts +7 -0
  163. package/dist/utils/instructions.d.ts.map +1 -0
  164. package/dist/utils/instructions.js +21 -0
  165. package/dist/utils/instructions.js.map +1 -0
  166. package/dist/utils/model-cache.d.ts +11 -0
  167. package/dist/utils/model-cache.d.ts.map +1 -0
  168. package/dist/utils/model-cache.js +17 -0
  169. package/dist/utils/model-cache.js.map +1 -0
  170. package/dist/utils/process.d.ts +4 -0
  171. package/dist/utils/process.d.ts.map +1 -1
  172. package/dist/utils/process.js +46 -5
  173. package/dist/utils/process.js.map +1 -1
  174. package/dist/utils/runtime-config.d.ts +34 -0
  175. package/dist/utils/runtime-config.d.ts.map +1 -0
  176. package/dist/utils/runtime-config.js +71 -0
  177. package/dist/utils/runtime-config.js.map +1 -0
  178. package/dist/utils/runtime-homes.d.ts +13 -0
  179. package/dist/utils/runtime-homes.d.ts.map +1 -0
  180. package/dist/utils/runtime-homes.js +41 -0
  181. package/dist/utils/runtime-homes.js.map +1 -0
  182. package/dist/utils/skills.d.ts +152 -1
  183. package/dist/utils/skills.d.ts.map +1 -1
  184. package/dist/utils/skills.js +352 -0
  185. package/dist/utils/skills.js.map +1 -1
  186. package/dist/utils/workspace.d.ts +55 -0
  187. package/dist/utils/workspace.d.ts.map +1 -0
  188. package/dist/utils/workspace.js +89 -0
  189. package/dist/utils/workspace.js.map +1 -0
  190. package/package.json +5 -2
@@ -0,0 +1,20 @@
1
+ import type { ExecutionContext, ExecutionResult, ProviderModule } from "../types.js";
2
+ export interface ExecuteAllOptions {
3
+ /** Abort all remaining executions if any one fails. Default: false. */
4
+ cancelOnFailure?: boolean;
5
+ /** External signal to cancel all executions. */
6
+ signal?: AbortSignal;
7
+ }
8
+ export interface ExecuteAllTask {
9
+ provider: string | ProviderModule;
10
+ ctx: ExecutionContext;
11
+ }
12
+ /**
13
+ * Run multiple agent executions concurrently with shared cancellation.
14
+ *
15
+ * Returns results in the same order as the input tasks. If `cancelOnFailure`
16
+ * is true, remaining tasks are aborted as soon as any task returns a
17
+ * non-completed status.
18
+ */
19
+ export declare function executeAll(tasks: ExecuteAllTask[], options?: ExecuteAllOptions): Promise<ExecutionResult[]>;
20
+ //# sourceMappingURL=execute-all.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execute-all.d.ts","sourceRoot":"","sources":["../../src/utils/execute-all.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAGrF,MAAM,WAAW,iBAAiB;IAChC,uEAAuE;IACvE,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,gDAAgD;IAChD,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,GAAG,cAAc,CAAC;IAClC,GAAG,EAAE,gBAAgB,CAAC;CACvB;AAED;;;;;;GAMG;AACH,wBAAsB,UAAU,CAC9B,KAAK,EAAE,cAAc,EAAE,EACvB,OAAO,CAAC,EAAE,iBAAiB,GAC1B,OAAO,CAAC,eAAe,EAAE,CAAC,CA0C5B"}
@@ -0,0 +1,46 @@
1
+ import { getProvider } from "../registry.js";
2
+ /**
3
+ * Run multiple agent executions concurrently with shared cancellation.
4
+ *
5
+ * Returns results in the same order as the input tasks. If `cancelOnFailure`
6
+ * is true, remaining tasks are aborted as soon as any task returns a
7
+ * non-completed status.
8
+ */
9
+ export async function executeAll(tasks, options) {
10
+ if (tasks.length === 0)
11
+ return [];
12
+ const controller = new AbortController();
13
+ // Chain external signal
14
+ if (options?.signal) {
15
+ if (options.signal.aborted) {
16
+ controller.abort(options.signal.reason);
17
+ }
18
+ else {
19
+ const onAbort = () => controller.abort(options.signal.reason);
20
+ options.signal.addEventListener("abort", onAbort, { once: true });
21
+ // Clean up listener when our controller aborts (avoid leak)
22
+ controller.signal.addEventListener("abort", () => {
23
+ options.signal.removeEventListener("abort", onAbort);
24
+ }, { once: true });
25
+ }
26
+ }
27
+ const promises = tasks.map(async (task) => {
28
+ const provider = typeof task.provider === "string"
29
+ ? getProvider(task.provider)
30
+ : task.provider;
31
+ // Merge signals: task's own signal + shared controller signal
32
+ const taskSignal = task.ctx.signal
33
+ ? AbortSignal.any([task.ctx.signal, controller.signal])
34
+ : controller.signal;
35
+ const result = await provider.execute({
36
+ ...task.ctx,
37
+ signal: taskSignal,
38
+ });
39
+ if (options?.cancelOnFailure && result.status !== "completed") {
40
+ controller.abort("cancelOnFailure");
41
+ }
42
+ return result;
43
+ });
44
+ return Promise.all(promises);
45
+ }
46
+ //# sourceMappingURL=execute-all.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execute-all.js","sourceRoot":"","sources":["../../src/utils/execute-all.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAc7C;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,KAAuB,EACvB,OAA2B;IAE3B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAElC,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IAEzC,wBAAwB;IACxB,IAAI,OAAO,EAAE,MAAM,EAAE,CAAC;QACpB,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YAC3B,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC1C,CAAC;aAAM,CAAC;YACN,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,MAAO,CAAC,MAAM,CAAC,CAAC;YAC/D,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YAClE,4DAA4D;YAC5D,UAAU,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE;gBAC/C,OAAO,CAAC,MAAO,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YACxD,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QACrB,CAAC;IACH,CAAC;IAED,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAA4B,EAAE;QAClE,MAAM,QAAQ,GAAG,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ;YAChD,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC;YAC5B,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;QAElB,8DAA8D;QAC9D,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM;YAChC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;YACvD,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC;QAEtB,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC;YACpC,GAAG,IAAI,CAAC,GAAG;YACX,MAAM,EAAE,UAAU;SACnB,CAAC,CAAC;QAEH,IAAI,OAAO,EAAE,eAAe,IAAI,MAAM,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;YAC9D,UAAU,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QACtC,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC/B,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Read an instructions file and return its content.
3
+ * Returns null if no path is provided.
4
+ * Throws a clear error if the file doesn't exist.
5
+ */
6
+ export declare function resolveInstructions(filePath?: string): Promise<string | null>;
7
+ //# sourceMappingURL=instructions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"instructions.d.ts","sourceRoot":"","sources":["../../src/utils/instructions.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,wBAAsB,mBAAmB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAWnF"}
@@ -0,0 +1,21 @@
1
+ import * as fs from "node:fs/promises";
2
+ /**
3
+ * Read an instructions file and return its content.
4
+ * Returns null if no path is provided.
5
+ * Throws a clear error if the file doesn't exist.
6
+ */
7
+ export async function resolveInstructions(filePath) {
8
+ if (!filePath)
9
+ return null;
10
+ try {
11
+ return await fs.readFile(filePath, "utf-8");
12
+ }
13
+ catch (err) {
14
+ const code = err.code;
15
+ if (code === "ENOENT") {
16
+ throw new Error(`Instructions file not found: ${filePath}`);
17
+ }
18
+ throw err;
19
+ }
20
+ }
21
+ //# sourceMappingURL=instructions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"instructions.js","sourceRoot":"","sources":["../../src/utils/instructions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAEvC;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,QAAiB;IACzD,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC3B,IAAI,CAAC;QACH,OAAO,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC9C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,GAAI,GAA6B,CAAC,IAAI,CAAC;QACjD,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,gCAAgC,QAAQ,EAAE,CAAC,CAAC;QAC9D,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type { ProviderModel } from "../types.js";
2
+ /**
3
+ * Simple in-memory TTL cache for model lists.
4
+ * Each provider creates its own instance.
5
+ */
6
+ export declare class ModelCache {
7
+ private cache;
8
+ private cachedAt;
9
+ get(ttlMs: number, fetcher: () => Promise<ProviderModel[]>): Promise<ProviderModel[]>;
10
+ }
11
+ //# sourceMappingURL=model-cache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-cache.d.ts","sourceRoot":"","sources":["../../src/utils/model-cache.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD;;;GAGG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,KAAK,CAAgC;IAC7C,OAAO,CAAC,QAAQ,CAAK;IAEf,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC,aAAa,EAAE,CAAC,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;CAQ5F"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Simple in-memory TTL cache for model lists.
3
+ * Each provider creates its own instance.
4
+ */
5
+ export class ModelCache {
6
+ cache = null;
7
+ cachedAt = 0;
8
+ async get(ttlMs, fetcher) {
9
+ if (ttlMs > 0 && this.cache && Date.now() - this.cachedAt < ttlMs) {
10
+ return this.cache;
11
+ }
12
+ this.cache = await fetcher();
13
+ this.cachedAt = Date.now();
14
+ return this.cache;
15
+ }
16
+ }
17
+ //# sourceMappingURL=model-cache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-cache.js","sourceRoot":"","sources":["../../src/utils/model-cache.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,OAAO,UAAU;IACb,KAAK,GAA2B,IAAI,CAAC;IACrC,QAAQ,GAAG,CAAC,CAAC;IAErB,KAAK,CAAC,GAAG,CAAC,KAAa,EAAE,OAAuC;QAC9D,IAAI,KAAK,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,GAAG,KAAK,EAAE,CAAC;YAClE,OAAO,IAAI,CAAC,KAAK,CAAC;QACpB,CAAC;QACD,IAAI,CAAC,KAAK,GAAG,MAAM,OAAO,EAAE,CAAC;QAC7B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC3B,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;CACF"}
@@ -9,11 +9,15 @@ export interface RunProcessOptions {
9
9
  graceSec?: number;
10
10
  maxCaptureBytes?: number;
11
11
  onOutput?: (stream: "stdout" | "stderr", chunk: string) => void | Promise<void>;
12
+ onStart?: (pid: number) => void;
13
+ /** AbortSignal to cancel the process. */
14
+ signal?: AbortSignal;
12
15
  }
13
16
  export interface RunProcessResult {
14
17
  exitCode: number | null;
15
18
  signal: string | null;
16
19
  timedOut: boolean;
20
+ aborted: boolean;
17
21
  stdout: string;
18
22
  stderr: string;
19
23
  }
@@ -1 +1 @@
1
- {"version":3,"file":"process.d.ts","sourceRoot":"","sources":["../../src/utils/process.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,QAAQ,GAAG,QAAQ,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACjF;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAKD,wBAAgB,eAAe,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,GAAG,IAAI,CAIvE;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,GAAE,MAAM,CAAC,OAAmB,GAAG,IAAI,CAqBrF;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAsHlF"}
1
+ {"version":3,"file":"process.d.ts","sourceRoot":"","sources":["../../src/utils/process.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,QAAQ,GAAG,QAAQ,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChF,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,yCAAyC;IACzC,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAKD,wBAAgB,eAAe,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,GAAG,IAAI,CAKvE;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,GAAE,MAAM,CAAC,OAAmB,GAAG,IAAI,CAqBrF;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAiKlF"}
@@ -3,6 +3,8 @@ import process from "node:process";
3
3
  const DEFAULT_MAX_CAPTURE = 4 * 1024 * 1024; // 4MB
4
4
  const DEFAULT_GRACE_SEC = 5;
5
5
  export function deriveErrorCode(result) {
6
+ if (result.aborted)
7
+ return "aborted";
6
8
  if (result.timedOut)
7
9
  return "timeout";
8
10
  if (result.signal && !result.timedOut)
@@ -34,6 +36,17 @@ export function killProcessTree(pid, signal = "SIGTERM") {
34
36
  }
35
37
  }
36
38
  export function runChildProcess(opts) {
39
+ // If already aborted before spawn, return immediately
40
+ if (opts.signal?.aborted) {
41
+ return Promise.resolve({
42
+ exitCode: null,
43
+ signal: null,
44
+ timedOut: false,
45
+ aborted: true,
46
+ stdout: "",
47
+ stderr: "",
48
+ });
49
+ }
37
50
  return new Promise((resolve) => {
38
51
  const maxCapture = opts.maxCaptureBytes ?? DEFAULT_MAX_CAPTURE;
39
52
  const graceSec = opts.graceSec ?? DEFAULT_GRACE_SEC;
@@ -42,6 +55,7 @@ export function runChildProcess(opts) {
42
55
  let stdoutBytes = 0;
43
56
  let stderrBytes = 0;
44
57
  let timedOut = false;
58
+ let aborted = false;
45
59
  let timeoutHandle = null;
46
60
  let graceHandle = null;
47
61
  // Chained promise for ordered callback execution
@@ -53,6 +67,10 @@ export function runChildProcess(opts) {
53
67
  shell: false,
54
68
  detached: process.platform !== "win32", // Enable process group on Unix
55
69
  });
70
+ // Notify caller of the child PID
71
+ if (opts.onStart && child.pid != null) {
72
+ opts.onStart(child.pid);
73
+ }
56
74
  // Write stdin and close
57
75
  if (opts.stdin != null) {
58
76
  child.stdin.write(opts.stdin);
@@ -102,17 +120,41 @@ export function runChildProcess(opts) {
102
120
  }
103
121
  }, opts.timeoutSec * 1000);
104
122
  }
105
- child.on("close", (code, signal) => {
123
+ // AbortSignal handling
124
+ let abortGraceHandle = null;
125
+ const onAbort = () => {
126
+ aborted = true;
127
+ if (child.pid != null) {
128
+ killProcessTree(child.pid, "SIGTERM");
129
+ abortGraceHandle = setTimeout(() => {
130
+ if (child.pid != null) {
131
+ killProcessTree(child.pid, "SIGKILL");
132
+ }
133
+ }, graceSec * 1000);
134
+ }
135
+ };
136
+ if (opts.signal) {
137
+ opts.signal.addEventListener("abort", onAbort, { once: true });
138
+ }
139
+ const cleanup = () => {
106
140
  if (timeoutHandle)
107
141
  clearTimeout(timeoutHandle);
108
142
  if (graceHandle)
109
143
  clearTimeout(graceHandle);
144
+ if (abortGraceHandle)
145
+ clearTimeout(abortGraceHandle);
146
+ if (opts.signal)
147
+ opts.signal.removeEventListener("abort", onAbort);
148
+ };
149
+ child.on("close", (code, signal) => {
150
+ cleanup();
110
151
  // Wait for callbacks to complete before resolving
111
152
  callbackChain.then(() => {
112
153
  resolve({
113
154
  exitCode: code,
114
155
  signal: signal ?? null,
115
156
  timedOut,
157
+ aborted,
116
158
  stdout: stdoutBuf,
117
159
  stderr: stderrBuf,
118
160
  });
@@ -121,20 +163,19 @@ export function runChildProcess(opts) {
121
163
  exitCode: code,
122
164
  signal: signal ?? null,
123
165
  timedOut,
166
+ aborted,
124
167
  stdout: stdoutBuf,
125
168
  stderr: stderrBuf,
126
169
  });
127
170
  });
128
171
  });
129
172
  child.on("error", (err) => {
130
- if (timeoutHandle)
131
- clearTimeout(timeoutHandle);
132
- if (graceHandle)
133
- clearTimeout(graceHandle);
173
+ cleanup();
134
174
  resolve({
135
175
  exitCode: null,
136
176
  signal: null,
137
177
  timedOut: false,
178
+ aborted: false,
138
179
  stdout: stdoutBuf,
139
180
  stderr: err.message,
140
181
  });
@@ -1 +1 @@
1
- {"version":3,"file":"process.js","sourceRoot":"","sources":["../../src/utils/process.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"process.js","sourceRoot":"","sources":["../../src/utils/process.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ import type { SkillRuntime } from "./skills.js";
2
+ export interface TempConfigResult {
3
+ /** Environment variables to pass to the child process (includes the
4
+ * runtime home env var pointing at the temp config dir). */
5
+ env: Record<string, string>;
6
+ /** Path to the temporary config directory. */
7
+ configDir: string;
8
+ /** Remove the temporary config directory. */
9
+ cleanup(): Promise<void>;
10
+ }
11
+ export interface TempConfigOptions {
12
+ /** Which runtime CLI tool to configure. */
13
+ runtime: SkillRuntime;
14
+ /** Base environment to extend. */
15
+ env?: Record<string, string>;
16
+ /** If true, copy the contents of the default home into the temp dir
17
+ * before applying overrides. Defaults to false. */
18
+ seedFromDefault?: boolean;
19
+ /** Files to write into the temp config dir (relative paths → content). */
20
+ overrides?: Record<string, string>;
21
+ }
22
+ /**
23
+ * Create a temporary config directory for a CLI runtime, optionally seeded
24
+ * from the user's default home, with arbitrary file overrides applied.
25
+ *
26
+ * Returns an env object with the runtime home env var pointed at the temp dir,
27
+ * and a cleanup function to remove the temp dir when done.
28
+ *
29
+ * This is useful for running a CLI tool with custom configuration (e.g.
30
+ * injecting system prompts, custom settings) without modifying the user's
31
+ * real config directory.
32
+ */
33
+ export declare function withTempConfig(options: TempConfigOptions): Promise<TempConfigResult>;
34
+ //# sourceMappingURL=runtime-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-config.d.ts","sourceRoot":"","sources":["../../src/utils/runtime-config.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAIhD,MAAM,WAAW,gBAAgB;IAC/B;iEAC6D;IAC7D,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B,8CAA8C;IAC9C,SAAS,EAAE,MAAM,CAAC;IAClB,6CAA6C;IAC7C,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1B;AAED,MAAM,WAAW,iBAAiB;IAChC,2CAA2C;IAC3C,OAAO,EAAE,YAAY,CAAC;IACtB,kCAAkC;IAClC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B;wDACoD;IACpD,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,0EAA0E;IAC1E,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACpC;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,cAAc,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAyC1F"}
@@ -0,0 +1,71 @@
1
+ import * as fs from "node:fs/promises";
2
+ import * as path from "node:path";
3
+ import * as os from "node:os";
4
+ import { getRuntimeHomeEnvVar, getDefaultRuntimeHome } from "./runtime-homes.js";
5
+ import { uuidv7 } from "./uuid.js";
6
+ /**
7
+ * Create a temporary config directory for a CLI runtime, optionally seeded
8
+ * from the user's default home, with arbitrary file overrides applied.
9
+ *
10
+ * Returns an env object with the runtime home env var pointed at the temp dir,
11
+ * and a cleanup function to remove the temp dir when done.
12
+ *
13
+ * This is useful for running a CLI tool with custom configuration (e.g.
14
+ * injecting system prompts, custom settings) without modifying the user's
15
+ * real config directory.
16
+ */
17
+ export async function withTempConfig(options) {
18
+ const { runtime, seedFromDefault, overrides } = options;
19
+ const envVarName = getRuntimeHomeEnvVar(runtime);
20
+ const shortId = uuidv7().slice(0, 8);
21
+ const configDir = path.join(os.tmpdir(), `agentex-cfg-${runtime}-${shortId}`);
22
+ await fs.mkdir(configDir, { recursive: true });
23
+ // Seed from the user's default home if requested
24
+ if (seedFromDefault) {
25
+ const defaultHome = getDefaultRuntimeHome(runtime);
26
+ try {
27
+ await copyDir(defaultHome, configDir);
28
+ }
29
+ catch {
30
+ // Default home may not exist — non-fatal
31
+ }
32
+ }
33
+ // Apply overrides
34
+ if (overrides) {
35
+ for (const [relativePath, content] of Object.entries(overrides)) {
36
+ const target = path.join(configDir, relativePath);
37
+ await fs.mkdir(path.dirname(target), { recursive: true });
38
+ await fs.writeFile(target, content, "utf-8");
39
+ }
40
+ }
41
+ // Build env with the runtime home pointing to our temp dir
42
+ const env = { ...(options.env ?? {}) };
43
+ if (envVarName) {
44
+ env[envVarName] = configDir;
45
+ }
46
+ return {
47
+ env,
48
+ configDir,
49
+ async cleanup() {
50
+ await fs.rm(configDir, { recursive: true, force: true });
51
+ },
52
+ };
53
+ }
54
+ // ---------------------------------------------------------------------------
55
+ // Internal helpers
56
+ // ---------------------------------------------------------------------------
57
+ async function copyDir(src, dest) {
58
+ const entries = await fs.readdir(src, { withFileTypes: true });
59
+ for (const entry of entries) {
60
+ const srcPath = path.join(src, entry.name);
61
+ const destPath = path.join(dest, entry.name);
62
+ if (entry.isDirectory()) {
63
+ await fs.mkdir(destPath, { recursive: true });
64
+ await copyDir(srcPath, destPath);
65
+ }
66
+ else {
67
+ await fs.copyFile(srcPath, destPath);
68
+ }
69
+ }
70
+ }
71
+ //# sourceMappingURL=runtime-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-config.js","sourceRoot":"","sources":["../../src/utils/runtime-config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import type { SkillRuntime } from "./skills.js";
2
+ /**
3
+ * Returns the environment variable name that overrides the global home
4
+ * directory for the given runtime CLI tool.
5
+ *
6
+ * Returns null for runtimes that don't support home directory override.
7
+ */
8
+ export declare function getRuntimeHomeEnvVar(runtime: SkillRuntime): string | null;
9
+ /**
10
+ * Returns the default global home directory path for the given runtime.
11
+ */
12
+ export declare function getDefaultRuntimeHome(runtime: SkillRuntime): string;
13
+ //# sourceMappingURL=runtime-homes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-homes.d.ts","sourceRoot":"","sources":["../../src/utils/runtime-homes.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AA2BhD;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,YAAY,GAAG,MAAM,GAAG,IAAI,CAEzE;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,YAAY,GAAG,MAAM,CAEnE"}
@@ -0,0 +1,41 @@
1
+ import * as path from "node:path";
2
+ import * as os from "node:os";
3
+ /**
4
+ * Env var that overrides the global home directory for each runtime CLI.
5
+ * Returns null for runtimes that don't support home directory override.
6
+ */
7
+ const ENV_VAR_MAP = {
8
+ claude: "CLAUDE_CONFIG_DIR",
9
+ codex: "CODEX_HOME",
10
+ gemini: "GEMINI_CONFIG_DIR",
11
+ cursor: "CURSOR_CONFIG_DIR",
12
+ opencode: "XDG_CONFIG_HOME", // affects ~/.config/opencode/
13
+ pi: "PI_HOME",
14
+ };
15
+ /**
16
+ * Default global home directory path for each runtime.
17
+ */
18
+ const DEFAULT_HOME_MAP = {
19
+ claude: path.join(os.homedir(), ".claude"),
20
+ codex: path.join(os.homedir(), ".codex"),
21
+ gemini: path.join(os.homedir(), ".gemini"),
22
+ cursor: path.join(os.homedir(), ".cursor"),
23
+ opencode: path.join(os.homedir(), ".config", "opencode"),
24
+ pi: path.join(os.homedir(), ".pi"),
25
+ };
26
+ /**
27
+ * Returns the environment variable name that overrides the global home
28
+ * directory for the given runtime CLI tool.
29
+ *
30
+ * Returns null for runtimes that don't support home directory override.
31
+ */
32
+ export function getRuntimeHomeEnvVar(runtime) {
33
+ return ENV_VAR_MAP[runtime] ?? null;
34
+ }
35
+ /**
36
+ * Returns the default global home directory path for the given runtime.
37
+ */
38
+ export function getDefaultRuntimeHome(runtime) {
39
+ return DEFAULT_HOME_MAP[runtime] ?? path.join(os.homedir(), `.${runtime}`);
40
+ }
41
+ //# sourceMappingURL=runtime-homes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-homes.js","sourceRoot":"","sources":["../../src/utils/runtime-homes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAG9B;;;GAGG;AACH,MAAM,WAAW,GAAwC;IACvD,MAAM,EAAE,mBAAmB;IAC3B,KAAK,EAAE,YAAY;IACnB,MAAM,EAAE,mBAAmB;IAC3B,MAAM,EAAE,mBAAmB;IAC3B,QAAQ,EAAE,iBAAiB,EAAG,8BAA8B;IAC5D,EAAE,EAAE,SAAS;CACd,CAAC;AAEF;;GAEG;AACH,MAAM,gBAAgB,GAAiC;IACrD,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC;IAC1C,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC;IACxC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC;IAC1C,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC;IAC1C,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,UAAU,CAAC;IACxD,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,KAAK,CAAC;CACnC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAAqB;IACxD,OAAO,WAAW,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC;AACtC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB,CAAC,OAAqB;IACzD,OAAO,gBAAgB,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,IAAI,OAAO,EAAE,CAAC,CAAC;AAC7E,CAAC"}