@autonav/core 1.5.0 → 1.7.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.
Files changed (238) hide show
  1. package/README.md +2 -2
  2. package/dist/adapter/index.d.ts +3 -3
  3. package/dist/adapter/index.d.ts.map +1 -1
  4. package/dist/adapter/index.js +3 -3
  5. package/dist/adapter/index.js.map +1 -1
  6. package/dist/adapter/navigator-adapter.d.ts +196 -0
  7. package/dist/adapter/navigator-adapter.d.ts.map +1 -0
  8. package/dist/adapter/navigator-adapter.js +579 -0
  9. package/dist/adapter/navigator-adapter.js.map +1 -0
  10. package/dist/cli/autonav.d.ts +2 -5
  11. package/dist/cli/autonav.d.ts.map +1 -1
  12. package/dist/cli/autonav.js +35 -49
  13. package/dist/cli/autonav.js.map +1 -1
  14. package/dist/cli/nav-chat.d.ts +2 -1
  15. package/dist/cli/nav-chat.d.ts.map +1 -1
  16. package/dist/cli/nav-chat.js +32 -3
  17. package/dist/cli/nav-chat.js.map +1 -1
  18. package/dist/cli/nav-init.d.ts +2 -1
  19. package/dist/cli/nav-init.d.ts.map +1 -1
  20. package/dist/cli/nav-init.js +12 -4
  21. package/dist/cli/nav-init.js.map +1 -1
  22. package/dist/cli/nav-install.d.ts +2 -1
  23. package/dist/cli/nav-install.d.ts.map +1 -1
  24. package/dist/cli/nav-install.js +4 -2
  25. package/dist/cli/nav-install.js.map +1 -1
  26. package/dist/cli/nav-memento.d.ts +21 -0
  27. package/dist/cli/nav-memento.d.ts.map +1 -0
  28. package/dist/cli/nav-memento.js +185 -0
  29. package/dist/cli/nav-memento.js.map +1 -0
  30. package/dist/cli/nav-mend.d.ts +2 -1
  31. package/dist/cli/nav-mend.d.ts.map +1 -1
  32. package/dist/cli/nav-mend.js +4 -1
  33. package/dist/cli/nav-mend.js.map +1 -1
  34. package/dist/cli/nav-migrate.d.ts +2 -1
  35. package/dist/cli/nav-migrate.d.ts.map +1 -1
  36. package/dist/cli/nav-migrate.js +2 -6
  37. package/dist/cli/nav-migrate.js.map +1 -1
  38. package/dist/cli/nav-query.d.ts +2 -1
  39. package/dist/cli/nav-query.d.ts.map +1 -1
  40. package/dist/cli/nav-query.js +12 -6
  41. package/dist/cli/nav-query.js.map +1 -1
  42. package/dist/cli/nav-standup.d.ts +18 -0
  43. package/dist/cli/nav-standup.d.ts.map +1 -0
  44. package/dist/cli/nav-standup.js +151 -0
  45. package/dist/cli/nav-standup.js.map +1 -0
  46. package/dist/cli/nav-uninstall.d.ts +2 -1
  47. package/dist/cli/nav-uninstall.d.ts.map +1 -1
  48. package/dist/cli/nav-uninstall.js +4 -2
  49. package/dist/cli/nav-uninstall.js.map +1 -1
  50. package/dist/cli/nav-update.d.ts +2 -1
  51. package/dist/cli/nav-update.d.ts.map +1 -1
  52. package/dist/cli/nav-update.js +11 -6
  53. package/dist/cli/nav-update.js.map +1 -1
  54. package/dist/conversation/App.d.ts +9 -2
  55. package/dist/conversation/App.d.ts.map +1 -1
  56. package/dist/conversation/App.js +304 -111
  57. package/dist/conversation/App.js.map +1 -1
  58. package/dist/conversation/index.d.ts +5 -0
  59. package/dist/conversation/index.d.ts.map +1 -1
  60. package/dist/conversation/index.js +17 -2
  61. package/dist/conversation/index.js.map +1 -1
  62. package/dist/harness/chibi-harness.d.ts +36 -0
  63. package/dist/harness/chibi-harness.d.ts.map +1 -0
  64. package/dist/harness/chibi-harness.js +383 -0
  65. package/dist/harness/chibi-harness.js.map +1 -0
  66. package/dist/harness/chibi-plugins/get_plugin_config +64 -0
  67. package/dist/harness/chibi-plugins/query_navigator +114 -0
  68. package/dist/harness/chibi-plugins/submit_answer +38 -0
  69. package/dist/harness/chibi-plugins/update_plugin_config +91 -0
  70. package/dist/harness/claude-code-harness.d.ts +24 -0
  71. package/dist/harness/claude-code-harness.d.ts.map +1 -0
  72. package/dist/harness/claude-code-harness.js +242 -0
  73. package/dist/harness/claude-code-harness.js.map +1 -0
  74. package/dist/harness/ephemeral-home.d.ts +34 -0
  75. package/dist/harness/ephemeral-home.d.ts.map +1 -0
  76. package/dist/harness/ephemeral-home.js +56 -0
  77. package/dist/harness/ephemeral-home.js.map +1 -0
  78. package/dist/harness/factory.d.ts +47 -0
  79. package/dist/harness/factory.d.ts.map +1 -0
  80. package/dist/harness/factory.js +84 -0
  81. package/dist/harness/factory.js.map +1 -0
  82. package/dist/harness/helpers.d.ts +58 -0
  83. package/dist/harness/helpers.d.ts.map +1 -0
  84. package/dist/harness/helpers.js +78 -0
  85. package/dist/harness/helpers.js.map +1 -0
  86. package/dist/harness/index.d.ts +14 -0
  87. package/dist/harness/index.d.ts.map +1 -0
  88. package/dist/harness/index.js +13 -0
  89. package/dist/harness/index.js.map +1 -0
  90. package/dist/harness/opencode-harness.d.ts +79 -0
  91. package/dist/harness/opencode-harness.d.ts.map +1 -0
  92. package/dist/harness/opencode-harness.js +537 -0
  93. package/dist/harness/opencode-harness.js.map +1 -0
  94. package/dist/harness/opencode-tools/get_plugin_config.ts +72 -0
  95. package/dist/harness/opencode-tools/query_navigator.ts +126 -0
  96. package/dist/harness/opencode-tools/submit_answer.ts +40 -0
  97. package/dist/harness/opencode-tools/update_plugin_config.ts +105 -0
  98. package/dist/harness/sandbox.d.ts +59 -0
  99. package/dist/harness/sandbox.d.ts.map +1 -0
  100. package/dist/harness/sandbox.js +152 -0
  101. package/dist/harness/sandbox.js.map +1 -0
  102. package/dist/harness/tool-server.d.ts +50 -0
  103. package/dist/harness/tool-server.d.ts.map +1 -0
  104. package/dist/harness/tool-server.js +27 -0
  105. package/dist/harness/tool-server.js.map +1 -0
  106. package/dist/harness/types.d.ts +168 -0
  107. package/dist/harness/types.d.ts.map +1 -0
  108. package/dist/harness/types.js +12 -0
  109. package/dist/harness/types.js.map +1 -0
  110. package/dist/index.d.ts +3 -2
  111. package/dist/index.d.ts.map +1 -1
  112. package/dist/index.js +4 -2
  113. package/dist/index.js.map +1 -1
  114. package/dist/interview/App.d.ts +4 -2
  115. package/dist/interview/App.d.ts.map +1 -1
  116. package/dist/interview/App.js +36 -56
  117. package/dist/interview/App.js.map +1 -1
  118. package/dist/interview/index.d.ts +3 -0
  119. package/dist/interview/index.d.ts.map +1 -1
  120. package/dist/interview/index.js +1 -0
  121. package/dist/interview/index.js.map +1 -1
  122. package/dist/interview/prompts.d.ts +3 -1
  123. package/dist/interview/prompts.d.ts.map +1 -1
  124. package/dist/interview/prompts.js +5 -1
  125. package/dist/interview/prompts.js.map +1 -1
  126. package/dist/interview/ui/ChatBanner.d.ts +17 -0
  127. package/dist/interview/ui/ChatBanner.d.ts.map +1 -0
  128. package/dist/interview/ui/ChatBanner.js +30 -0
  129. package/dist/interview/ui/ChatBanner.js.map +1 -0
  130. package/dist/interview/ui/ChatInput.d.ts +36 -0
  131. package/dist/interview/ui/ChatInput.d.ts.map +1 -0
  132. package/dist/interview/ui/ChatInput.js +304 -0
  133. package/dist/interview/ui/ChatInput.js.map +1 -0
  134. package/dist/interview/ui/MarkdownText.d.ts +13 -0
  135. package/dist/interview/ui/MarkdownText.d.ts.map +1 -0
  136. package/dist/interview/ui/MarkdownText.js +107 -0
  137. package/dist/interview/ui/MarkdownText.js.map +1 -0
  138. package/dist/interview/ui/index.d.ts +3 -0
  139. package/dist/interview/ui/index.d.ts.map +1 -1
  140. package/dist/interview/ui/index.js +3 -0
  141. package/dist/interview/ui/index.js.map +1 -1
  142. package/dist/memento/git-operations.d.ts +95 -0
  143. package/dist/memento/git-operations.d.ts.map +1 -0
  144. package/dist/memento/git-operations.js +256 -0
  145. package/dist/memento/git-operations.js.map +1 -0
  146. package/dist/memento/implementer-agent.d.ts +31 -0
  147. package/dist/memento/implementer-agent.d.ts.map +1 -0
  148. package/dist/memento/implementer-agent.js +95 -0
  149. package/dist/memento/implementer-agent.js.map +1 -0
  150. package/dist/memento/index.d.ts +32 -0
  151. package/dist/memento/index.d.ts.map +1 -0
  152. package/dist/memento/index.js +40 -0
  153. package/dist/memento/index.js.map +1 -0
  154. package/dist/memento/loop.d.ts +34 -0
  155. package/dist/memento/loop.d.ts.map +1 -0
  156. package/dist/memento/loop.js +1227 -0
  157. package/dist/memento/loop.js.map +1 -0
  158. package/dist/memento/matrix-animation.d.ts +103 -0
  159. package/dist/memento/matrix-animation.d.ts.map +1 -0
  160. package/dist/memento/matrix-animation.js +303 -0
  161. package/dist/memento/matrix-animation.js.map +1 -0
  162. package/dist/memento/nav-protocol.d.ts +30 -0
  163. package/dist/memento/nav-protocol.d.ts.map +1 -0
  164. package/dist/memento/nav-protocol.js +75 -0
  165. package/dist/memento/nav-protocol.js.map +1 -0
  166. package/dist/memento/prompts.d.ts +57 -0
  167. package/dist/memento/prompts.d.ts.map +1 -0
  168. package/dist/memento/prompts.js +208 -0
  169. package/dist/memento/prompts.js.map +1 -0
  170. package/dist/memento/rate-limit.d.ts +85 -0
  171. package/dist/memento/rate-limit.d.ts.map +1 -0
  172. package/dist/memento/rate-limit.js +221 -0
  173. package/dist/memento/rate-limit.js.map +1 -0
  174. package/dist/memento/types.d.ts +123 -0
  175. package/dist/memento/types.d.ts.map +1 -0
  176. package/dist/memento/types.js +30 -0
  177. package/dist/memento/types.js.map +1 -0
  178. package/dist/memento/worker-agent.d.ts +33 -0
  179. package/dist/memento/worker-agent.d.ts.map +1 -0
  180. package/dist/memento/worker-agent.js +93 -0
  181. package/dist/memento/worker-agent.js.map +1 -0
  182. package/dist/registry.d.ts +35 -0
  183. package/dist/registry.d.ts.map +1 -0
  184. package/dist/registry.js +87 -0
  185. package/dist/registry.js.map +1 -0
  186. package/dist/repo-analyzer/index.d.ts +2 -1
  187. package/dist/repo-analyzer/index.d.ts.map +1 -1
  188. package/dist/repo-analyzer/index.js +6 -17
  189. package/dist/repo-analyzer/index.js.map +1 -1
  190. package/dist/standup/config.d.ts +19 -0
  191. package/dist/standup/config.d.ts.map +1 -0
  192. package/dist/standup/config.js +42 -0
  193. package/dist/standup/config.js.map +1 -0
  194. package/dist/standup/index.d.ts +24 -0
  195. package/dist/standup/index.d.ts.map +1 -0
  196. package/dist/standup/index.js +29 -0
  197. package/dist/standup/index.js.map +1 -0
  198. package/dist/standup/loop.d.ts +36 -0
  199. package/dist/standup/loop.d.ts.map +1 -0
  200. package/dist/standup/loop.js +508 -0
  201. package/dist/standup/loop.js.map +1 -0
  202. package/dist/standup/prompts.d.ts +62 -0
  203. package/dist/standup/prompts.d.ts.map +1 -0
  204. package/dist/standup/prompts.js +211 -0
  205. package/dist/standup/prompts.js.map +1 -0
  206. package/dist/standup/standup-protocol.d.ts +33 -0
  207. package/dist/standup/standup-protocol.d.ts.map +1 -0
  208. package/dist/standup/standup-protocol.js +189 -0
  209. package/dist/standup/standup-protocol.js.map +1 -0
  210. package/dist/standup/types.d.ts +185 -0
  211. package/dist/standup/types.d.ts.map +1 -0
  212. package/dist/standup/types.js +67 -0
  213. package/dist/standup/types.js.map +1 -0
  214. package/dist/tools/cross-nav.d.ts +21 -0
  215. package/dist/tools/cross-nav.d.ts.map +1 -0
  216. package/dist/tools/cross-nav.js +93 -0
  217. package/dist/tools/cross-nav.js.map +1 -0
  218. package/dist/tools/index.d.ts +1 -0
  219. package/dist/tools/index.d.ts.map +1 -1
  220. package/dist/tools/index.js +1 -0
  221. package/dist/tools/index.js.map +1 -1
  222. package/dist/tools/related-navs-config.d.ts +15 -0
  223. package/dist/tools/related-navs-config.d.ts.map +1 -0
  224. package/dist/tools/related-navs-config.js +132 -0
  225. package/dist/tools/related-navs-config.js.map +1 -0
  226. package/dist/tools/related-navs.d.ts +23 -0
  227. package/dist/tools/related-navs.d.ts.map +1 -0
  228. package/dist/tools/related-navs.js +107 -0
  229. package/dist/tools/related-navs.js.map +1 -0
  230. package/dist/tools/response.d.ts +3 -2
  231. package/dist/tools/response.d.ts.map +1 -1
  232. package/dist/tools/response.js +7 -11
  233. package/dist/tools/response.js.map +1 -1
  234. package/dist/tools/self-config.d.ts +2 -1
  235. package/dist/tools/self-config.d.ts.map +1 -1
  236. package/dist/tools/self-config.js +5 -9
  237. package/dist/tools/self-config.js.map +1 -1
  238. package/package.json +4 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../src/harness/factory.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAGvD;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,CAAC,EAAE,MAAM,EACjB,eAAe,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,GAChD,WAAW,CAmBb;AAeD;;;;;GAKG;AACH,wBAAsB,aAAa,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAmBvE;AAED;;;;;;;;GAQG;AACH,wBAAsB,uBAAuB,CAC3C,QAAQ,CAAC,EAAE,MAAM,EACjB,eAAe,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,GAChD,OAAO,CAAC,OAAO,CAAC,CAGlB"}
@@ -0,0 +1,84 @@
1
+ /**
2
+ * Harness Factory
3
+ *
4
+ * Resolves and creates the appropriate harness based on configuration.
5
+ *
6
+ * Resolution priority:
7
+ * 1. Explicit type parameter
8
+ * 2. CLI flag: --harness chibi
9
+ * 3. Env var: AUTONAV_HARNESS=chibi
10
+ * 4. Navigator config.json: harness.type
11
+ * 5. Default: claude-code
12
+ */
13
+ import { ClaudeCodeHarness } from "./claude-code-harness.js";
14
+ /**
15
+ * Resolve harness type from available sources.
16
+ *
17
+ * @param explicit - Explicit type (from CLI flag or direct call)
18
+ * @param navigatorConfig - Navigator config object (may have harness.type)
19
+ * @returns Resolved harness type
20
+ */
21
+ export function resolveHarnessType(explicit, navigatorConfig) {
22
+ // 1. Explicit parameter (from CLI --harness flag)
23
+ if (explicit) {
24
+ return validateHarnessType(explicit);
25
+ }
26
+ // 2. Environment variable
27
+ const envType = process.env.AUTONAV_HARNESS;
28
+ if (envType) {
29
+ return validateHarnessType(envType);
30
+ }
31
+ // 3. Navigator config
32
+ if (navigatorConfig?.harness?.type) {
33
+ return validateHarnessType(navigatorConfig.harness.type);
34
+ }
35
+ // 4. Default
36
+ return "claude-code";
37
+ }
38
+ /**
39
+ * Validate a string is a valid HarnessType
40
+ */
41
+ function validateHarnessType(value) {
42
+ const valid = ["claude-code", "chibi", "opencode"];
43
+ if (!valid.includes(value)) {
44
+ throw new Error(`Invalid harness type: "${value}". Valid types: ${valid.join(", ")}`);
45
+ }
46
+ return value;
47
+ }
48
+ /**
49
+ * Create a harness instance for the given type.
50
+ *
51
+ * @param type - Harness type to create
52
+ * @returns Harness instance
53
+ */
54
+ export async function createHarness(type) {
55
+ switch (type) {
56
+ case "claude-code":
57
+ return new ClaudeCodeHarness();
58
+ case "chibi": {
59
+ // Dynamic import to avoid loading chibi dependencies when not needed
60
+ const { ChibiHarness } = await import("./chibi-harness.js");
61
+ return new ChibiHarness();
62
+ }
63
+ case "opencode": {
64
+ const { OpenCodeHarness } = await import("./opencode-harness.js");
65
+ return new OpenCodeHarness();
66
+ }
67
+ default:
68
+ throw new Error(`Unknown harness type: ${type}`);
69
+ }
70
+ }
71
+ /**
72
+ * Resolve harness type and create instance in one call.
73
+ *
74
+ * This is the main entry point for harness creation.
75
+ *
76
+ * @param explicit - Explicit type (from CLI --harness flag)
77
+ * @param navigatorConfig - Navigator config object
78
+ * @returns Ready-to-use Harness instance
79
+ */
80
+ export async function resolveAndCreateHarness(explicit, navigatorConfig) {
81
+ const type = resolveHarnessType(explicit, navigatorConfig);
82
+ return createHarness(type);
83
+ }
84
+ //# sourceMappingURL=factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"factory.js","sourceRoot":"","sources":["../../src/harness/factory.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAE7D;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAChC,QAAiB,EACjB,eAAiD;IAEjD,kDAAkD;IAClD,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IACvC,CAAC;IAED,0BAA0B;IAC1B,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;IAC5C,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,mBAAmB,CAAC,OAAO,CAAC,CAAC;IACtC,CAAC;IAED,sBAAsB;IACtB,IAAI,eAAe,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QACnC,OAAO,mBAAmB,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3D,CAAC;IAED,aAAa;IACb,OAAO,aAAa,CAAC;AACvB,CAAC;AAED;;GAEG;AACH,SAAS,mBAAmB,CAAC,KAAa;IACxC,MAAM,KAAK,GAAkB,CAAC,aAAa,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;IAClE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAoB,CAAC,EAAE,CAAC;QAC1C,MAAM,IAAI,KAAK,CACb,0BAA0B,KAAK,mBAAmB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACrE,CAAC;IACJ,CAAC;IACD,OAAO,KAAoB,CAAC;AAC9B,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAAiB;IACnD,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,aAAa;YAChB,OAAO,IAAI,iBAAiB,EAAE,CAAC;QAEjC,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,qEAAqE;YACrE,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;YAC5D,OAAO,IAAI,YAAY,EAAE,CAAC;QAC5B,CAAC;QAED,KAAK,UAAU,CAAC,CAAC,CAAC;YAChB,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,uBAAuB,CAAC,CAAC;YAClE,OAAO,IAAI,eAAe,EAAE,CAAC;QAC/B,CAAC;QAED;YACE,MAAM,IAAI,KAAK,CAAC,yBAAyB,IAAI,EAAE,CAAC,CAAC;IACrD,CAAC;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,QAAiB,EACjB,eAAiD;IAEjD,MAAM,IAAI,GAAG,kBAAkB,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;IAC3D,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC;AAC7B,CAAC"}
@@ -0,0 +1,58 @@
1
+ /**
2
+ * Harness Helpers
3
+ *
4
+ * Utility functions for consuming AgentEvent streams.
5
+ * These are the most common patterns across all harness consumers.
6
+ */
7
+ import type { AgentEvent } from "./types.js";
8
+ /**
9
+ * Collect all text from an agent event stream into a single string.
10
+ *
11
+ * Useful for simple queries where you just need the final answer text.
12
+ */
13
+ export declare function collectText(events: AsyncIterable<AgentEvent>): Promise<string>;
14
+ /**
15
+ * Result from collecting a complete agent run.
16
+ */
17
+ export interface CollectedResult {
18
+ /** Whether the run succeeded */
19
+ success: boolean;
20
+ /** Final text output */
21
+ text: string;
22
+ /** Token usage */
23
+ usage?: {
24
+ inputTokens: number;
25
+ outputTokens: number;
26
+ };
27
+ /** Cost in USD */
28
+ costUsd?: number;
29
+ /** Duration in ms */
30
+ durationMs?: number;
31
+ /** All text events (in order) */
32
+ textEvents: string[];
33
+ /** All tool use events */
34
+ toolUseEvents: Array<{
35
+ name: string;
36
+ id: string;
37
+ input: Record<string, unknown>;
38
+ }>;
39
+ /** All tool result events */
40
+ toolResultEvents: Array<{
41
+ toolUseId: string;
42
+ content: string;
43
+ isError?: boolean;
44
+ }>;
45
+ /** All error events */
46
+ errorEvents: Array<{
47
+ message: string;
48
+ retryable?: boolean;
49
+ }>;
50
+ }
51
+ /**
52
+ * Collect the full result from an agent event stream.
53
+ *
54
+ * Accumulates all events into a structured result. Useful when you need
55
+ * to inspect tool usage, track errors, or access usage metrics.
56
+ */
57
+ export declare function collectResult(events: AsyncIterable<AgentEvent>): Promise<CollectedResult>;
58
+ //# sourceMappingURL=helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/harness/helpers.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C;;;;GAIG;AACH,wBAAsB,WAAW,CAAC,MAAM,EAAE,aAAa,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAUpF;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,gCAAgC;IAChC,OAAO,EAAE,OAAO,CAAC;IAEjB,wBAAwB;IACxB,IAAI,EAAE,MAAM,CAAC;IAEb,kBAAkB;IAClB,KAAK,CAAC,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,CAAC;IAEtD,kBAAkB;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,qBAAqB;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,iCAAiC;IACjC,UAAU,EAAE,MAAM,EAAE,CAAC;IAErB,0BAA0B;IAC1B,aAAa,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,CAAC,CAAC;IAEnF,6BAA6B;IAC7B,gBAAgB,EAAE,KAAK,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IAEnF,uBAAuB;IACvB,WAAW,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;CAC9D;AAED;;;;;GAKG;AACH,wBAAsB,aAAa,CAAC,MAAM,EAAE,aAAa,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,eAAe,CAAC,CAiD/F"}
@@ -0,0 +1,78 @@
1
+ /**
2
+ * Harness Helpers
3
+ *
4
+ * Utility functions for consuming AgentEvent streams.
5
+ * These are the most common patterns across all harness consumers.
6
+ */
7
+ /**
8
+ * Collect all text from an agent event stream into a single string.
9
+ *
10
+ * Useful for simple queries where you just need the final answer text.
11
+ */
12
+ export async function collectText(events) {
13
+ let text = "";
14
+ for await (const event of events) {
15
+ if (event.type === "text") {
16
+ text = event.text; // Use last text (not concatenate — each text event is a full block)
17
+ }
18
+ else if (event.type === "result" && event.text && !text) {
19
+ text = event.text;
20
+ }
21
+ }
22
+ return text;
23
+ }
24
+ /**
25
+ * Collect the full result from an agent event stream.
26
+ *
27
+ * Accumulates all events into a structured result. Useful when you need
28
+ * to inspect tool usage, track errors, or access usage metrics.
29
+ */
30
+ export async function collectResult(events) {
31
+ const result = {
32
+ success: false,
33
+ text: "",
34
+ textEvents: [],
35
+ toolUseEvents: [],
36
+ toolResultEvents: [],
37
+ errorEvents: [],
38
+ };
39
+ for await (const event of events) {
40
+ switch (event.type) {
41
+ case "text":
42
+ result.textEvents.push(event.text);
43
+ result.text = event.text; // Last text block
44
+ break;
45
+ case "tool_use":
46
+ result.toolUseEvents.push({
47
+ name: event.name,
48
+ id: event.id,
49
+ input: event.input,
50
+ });
51
+ break;
52
+ case "tool_result":
53
+ result.toolResultEvents.push({
54
+ toolUseId: event.toolUseId,
55
+ content: event.content,
56
+ isError: event.isError,
57
+ });
58
+ break;
59
+ case "error":
60
+ result.errorEvents.push({
61
+ message: event.message,
62
+ retryable: event.retryable,
63
+ });
64
+ break;
65
+ case "result":
66
+ result.success = event.success;
67
+ if (event.text && !result.text) {
68
+ result.text = event.text;
69
+ }
70
+ result.usage = event.usage;
71
+ result.costUsd = event.costUsd;
72
+ result.durationMs = event.durationMs;
73
+ break;
74
+ }
75
+ }
76
+ return result;
77
+ }
78
+ //# sourceMappingURL=helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/harness/helpers.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,MAAiC;IACjE,IAAI,IAAI,GAAG,EAAE,CAAC;IACd,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QACjC,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC1B,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,oEAAoE;QACzF,CAAC;aAAM,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YAC1D,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;QACpB,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAkCD;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,MAAiC;IACnE,MAAM,MAAM,GAAoB;QAC9B,OAAO,EAAE,KAAK;QACd,IAAI,EAAE,EAAE;QACR,UAAU,EAAE,EAAE;QACd,aAAa,EAAE,EAAE;QACjB,gBAAgB,EAAE,EAAE;QACpB,WAAW,EAAE,EAAE;KAChB,CAAC;IAEF,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QACjC,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;YACnB,KAAK,MAAM;gBACT,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACnC,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,kBAAkB;gBAC5C,MAAM;YACR,KAAK,UAAU;gBACb,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC;oBACxB,IAAI,EAAE,KAAK,CAAC,IAAI;oBAChB,EAAE,EAAE,KAAK,CAAC,EAAE;oBACZ,KAAK,EAAE,KAAK,CAAC,KAAK;iBACnB,CAAC,CAAC;gBACH,MAAM;YACR,KAAK,aAAa;gBAChB,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC;oBAC3B,SAAS,EAAE,KAAK,CAAC,SAAS;oBAC1B,OAAO,EAAE,KAAK,CAAC,OAAO;oBACtB,OAAO,EAAE,KAAK,CAAC,OAAO;iBACvB,CAAC,CAAC;gBACH,MAAM;YACR,KAAK,OAAO;gBACV,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC;oBACtB,OAAO,EAAE,KAAK,CAAC,OAAO;oBACtB,SAAS,EAAE,KAAK,CAAC,SAAS;iBAC3B,CAAC,CAAC;gBACH,MAAM;YACR,KAAK,QAAQ;gBACX,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;gBAC/B,IAAI,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;oBAC/B,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;gBAC3B,CAAC;gBACD,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;gBAC3B,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;gBAC/B,MAAM,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;gBACrC,MAAM;QACV,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Harness Module
3
+ *
4
+ * Universal agent runtime adapter. Everything goes through the harness:
5
+ * query, update, chat, memento, standup, and agent-to-agent communication.
6
+ */
7
+ export type { Harness, HarnessSession, AgentConfig, AgentEvent, HarnessType, SandboxConfig, } from "./types.js";
8
+ export { ClaudeCodeHarness } from "./claude-code-harness.js";
9
+ export { resolveHarnessType, createHarness, resolveAndCreateHarness, } from "./factory.js";
10
+ export { collectText, collectResult, type CollectedResult, } from "./helpers.js";
11
+ export { defineTool, type ToolDefinition, type ToolResult, } from "./tool-server.js";
12
+ export { createEphemeralHome, type EphemeralHome, type EphemeralHomeOptions, } from "./ephemeral-home.js";
13
+ export { isSandboxEnabled, wrapCommand, } from "./sandbox.js";
14
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/harness/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,YAAY,EACV,OAAO,EACP,cAAc,EACd,WAAW,EACX,UAAU,EACV,WAAW,EACX,aAAa,GACd,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAE7D,OAAO,EACL,kBAAkB,EAClB,aAAa,EACb,uBAAuB,GACxB,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,WAAW,EACX,aAAa,EACb,KAAK,eAAe,GACrB,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,UAAU,EACV,KAAK,cAAc,EACnB,KAAK,UAAU,GAChB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,mBAAmB,EACnB,KAAK,aAAa,EAClB,KAAK,oBAAoB,GAC1B,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,gBAAgB,EAChB,WAAW,GACZ,MAAM,cAAc,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Harness Module
3
+ *
4
+ * Universal agent runtime adapter. Everything goes through the harness:
5
+ * query, update, chat, memento, standup, and agent-to-agent communication.
6
+ */
7
+ export { ClaudeCodeHarness } from "./claude-code-harness.js";
8
+ export { resolveHarnessType, createHarness, resolveAndCreateHarness, } from "./factory.js";
9
+ export { collectText, collectResult, } from "./helpers.js";
10
+ export { defineTool, } from "./tool-server.js";
11
+ export { createEphemeralHome, } from "./ephemeral-home.js";
12
+ export { isSandboxEnabled, wrapCommand, } from "./sandbox.js";
13
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/harness/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAWH,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAE7D,OAAO,EACL,kBAAkB,EAClB,aAAa,EACb,uBAAuB,GACxB,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,WAAW,EACX,aAAa,GAEd,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,UAAU,GAGX,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,mBAAmB,GAGpB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,gBAAgB,EAChB,WAAW,GACZ,MAAM,cAAc,CAAC"}
@@ -0,0 +1,79 @@
1
+ /**
2
+ * OpenCode Harness
3
+ *
4
+ * Adapts OpenCode (https://opencode.ai/) into the universal Harness interface
5
+ * via its TypeScript SDK (@opencode-ai/sdk).
6
+ *
7
+ * Architecture:
8
+ * - A shared opencode server process is started lazily on first run()
9
+ * - Each run() creates an SDK session + ephemeral project dir with custom tools
10
+ * - Events stream via SSE (event.subscribe) and translate to AgentEvent
11
+ * - Custom tools live in .opencode/tools/ as TypeScript files (loaded by OpenCode)
12
+ *
13
+ * The server persists across sessions within a single harness instance.
14
+ * Calling close() on the harness kills the server process.
15
+ */
16
+ import type { Harness, HarnessSession, AgentConfig, AgentEvent } from "./types.js";
17
+ import type { ToolDefinition } from "./tool-server.js";
18
+ /**
19
+ * OpenCode harness session.
20
+ *
21
+ * Uses promptAsync + event.subscribe for streaming. Each prompt fires
22
+ * asynchronously and events are consumed from the SSE stream filtered
23
+ * by session ID.
24
+ */
25
+ declare class OpenCodeSession implements HarnessSession {
26
+ private config;
27
+ private sessionId;
28
+ private client;
29
+ private cleanupFn;
30
+ private closed;
31
+ private directory;
32
+ private abortController;
33
+ private currentIterator;
34
+ constructor(config: AgentConfig, sessionId: string, client: any, cleanupFn: (() => void) | null, directory: string);
35
+ /**
36
+ * Send the initial or follow-up prompt and stream events.
37
+ */
38
+ private streamPrompt;
39
+ [Symbol.asyncIterator](): AsyncIterator<AgentEvent>;
40
+ /**
41
+ * Start streaming for the initial prompt.
42
+ */
43
+ startInitialPrompt(prompt: string): void;
44
+ send(prompt: string): AsyncIterable<AgentEvent>;
45
+ updateConfig(config: Partial<AgentConfig>): void;
46
+ close(): Promise<void>;
47
+ }
48
+ /**
49
+ * OpenCode Harness
50
+ *
51
+ * Manages a shared opencode server and creates sessions that delegate
52
+ * to the OpenCode SDK. Custom tools are injected via .opencode/tools/
53
+ * in ephemeral project directories.
54
+ */
55
+ export declare class OpenCodeHarness implements Harness {
56
+ readonly displayName = "opencode";
57
+ private server;
58
+ private client;
59
+ private initPromise;
60
+ /**
61
+ * Lazily start the shared opencode server.
62
+ */
63
+ private ensureServer;
64
+ run(config: AgentConfig, prompt: string): HarnessSession;
65
+ /**
66
+ * Internal: Create a fully-initialized OpenCodeSession.
67
+ * Called from LazyOpenCodeSession on first iteration.
68
+ */
69
+ createSession(config: AgentConfig, prompt: string): Promise<OpenCodeSession>;
70
+ createToolServer(name: string, tools: ToolDefinition[]): {
71
+ server: unknown;
72
+ };
73
+ /**
74
+ * Stop the shared server and clean up all resources.
75
+ */
76
+ close(): Promise<void>;
77
+ }
78
+ export {};
79
+ //# sourceMappingURL=opencode-harness.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"opencode-harness.d.ts","sourceRoot":"","sources":["../../src/harness/opencode-harness.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAKH,OAAO,KAAK,EACV,OAAO,EACP,cAAc,EACd,WAAW,EACX,UAAU,EACX,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AA2CvD;;;;;;GAMG;AACH,cAAM,eAAgB,YAAW,cAAc;IAC7C,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,MAAM,CAAM;IACpB,OAAO,CAAC,SAAS,CAAsB;IACvC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,eAAe,CAA2C;gBAGhE,MAAM,EAAE,WAAW,EACnB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,GAAG,EACX,SAAS,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,EAC9B,SAAS,EAAE,MAAM;IAUnB;;OAEG;YACY,YAAY;IAiNpB,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,aAAa,CAAC,UAAU,CAAC;IAS1D;;OAEG;IACH,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAIxC,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa,CAAC,UAAU,CAAC;IAa/C,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,IAAI;IAI1C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAkB7B;AAED;;;;;;GAMG;AACH,qBAAa,eAAgB,YAAW,OAAO;IAC7C,QAAQ,CAAC,WAAW,cAAc;IAElC,OAAO,CAAC,MAAM,CAA4B;IAC1C,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,WAAW,CAA8B;IAEjD;;OAEG;YACW,YAAY;IA+D1B,GAAG,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,GAAG,cAAc;IAQxD;;;OAGG;IACG,aAAa,CACjB,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,eAAe,CAAC;IAkG3B,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,GAAG;QAAE,MAAM,EAAE,OAAO,CAAA;KAAE;IAa5E;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAQ7B"}