@autonav/core 1.6.0 → 1.8.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 (247) 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/{claude-adapter.d.ts → navigator-adapter.d.ts} +18 -11
  7. package/dist/adapter/navigator-adapter.d.ts.map +1 -0
  8. package/dist/adapter/{claude-adapter.js → navigator-adapter.js} +165 -127
  9. package/dist/adapter/navigator-adapter.js.map +1 -0
  10. package/dist/cli/autonav.d.ts +2 -6
  11. package/dist/cli/autonav.d.ts.map +1 -1
  12. package/dist/cli/autonav.js +32 -53
  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 +35 -4
  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 +3 -2
  27. package/dist/cli/nav-memento.d.ts.map +1 -1
  28. package/dist/cli/nav-memento.js +12 -6
  29. package/dist/cli/nav-memento.js.map +1 -1
  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 +11 -2
  55. package/dist/conversation/App.d.ts.map +1 -1
  56. package/dist/conversation/App.js +305 -112
  57. package/dist/conversation/App.js.map +1 -1
  58. package/dist/conversation/index.d.ts +7 -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/conversation/prompts.d.ts +1 -1
  63. package/dist/conversation/prompts.d.ts.map +1 -1
  64. package/dist/conversation/prompts.js +42 -1
  65. package/dist/conversation/prompts.js.map +1 -1
  66. package/dist/harness/chibi-harness.d.ts +36 -0
  67. package/dist/harness/chibi-harness.d.ts.map +1 -0
  68. package/dist/harness/chibi-harness.js +383 -0
  69. package/dist/harness/chibi-harness.js.map +1 -0
  70. package/dist/harness/chibi-plugins/get_plugin_config +64 -0
  71. package/dist/harness/chibi-plugins/query_navigator +114 -0
  72. package/dist/harness/chibi-plugins/submit_answer +38 -0
  73. package/dist/harness/chibi-plugins/update_plugin_config +91 -0
  74. package/dist/harness/claude-code-harness.d.ts +24 -0
  75. package/dist/harness/claude-code-harness.d.ts.map +1 -0
  76. package/dist/harness/claude-code-harness.js +242 -0
  77. package/dist/harness/claude-code-harness.js.map +1 -0
  78. package/dist/harness/ephemeral-home.d.ts +34 -0
  79. package/dist/harness/ephemeral-home.d.ts.map +1 -0
  80. package/dist/harness/ephemeral-home.js +56 -0
  81. package/dist/harness/ephemeral-home.js.map +1 -0
  82. package/dist/harness/factory.d.ts +47 -0
  83. package/dist/harness/factory.d.ts.map +1 -0
  84. package/dist/harness/factory.js +84 -0
  85. package/dist/harness/factory.js.map +1 -0
  86. package/dist/harness/helpers.d.ts +58 -0
  87. package/dist/harness/helpers.d.ts.map +1 -0
  88. package/dist/harness/helpers.js +78 -0
  89. package/dist/harness/helpers.js.map +1 -0
  90. package/dist/harness/index.d.ts +14 -0
  91. package/dist/harness/index.d.ts.map +1 -0
  92. package/dist/harness/index.js +13 -0
  93. package/dist/harness/index.js.map +1 -0
  94. package/dist/harness/opencode-harness.d.ts +79 -0
  95. package/dist/harness/opencode-harness.d.ts.map +1 -0
  96. package/dist/harness/opencode-harness.js +537 -0
  97. package/dist/harness/opencode-harness.js.map +1 -0
  98. package/dist/harness/opencode-tools/get_plugin_config.ts +72 -0
  99. package/dist/harness/opencode-tools/query_navigator.ts +126 -0
  100. package/dist/harness/opencode-tools/submit_answer.ts +40 -0
  101. package/dist/harness/opencode-tools/update_plugin_config.ts +105 -0
  102. package/dist/harness/sandbox.d.ts +59 -0
  103. package/dist/harness/sandbox.d.ts.map +1 -0
  104. package/dist/harness/sandbox.js +152 -0
  105. package/dist/harness/sandbox.js.map +1 -0
  106. package/dist/harness/tool-server.d.ts +50 -0
  107. package/dist/harness/tool-server.d.ts.map +1 -0
  108. package/dist/harness/tool-server.js +27 -0
  109. package/dist/harness/tool-server.js.map +1 -0
  110. package/dist/harness/types.d.ts +168 -0
  111. package/dist/harness/types.d.ts.map +1 -0
  112. package/dist/harness/types.js +12 -0
  113. package/dist/harness/types.js.map +1 -0
  114. package/dist/index.d.ts +3 -2
  115. package/dist/index.d.ts.map +1 -1
  116. package/dist/index.js +4 -2
  117. package/dist/index.js.map +1 -1
  118. package/dist/interview/App.d.ts +4 -2
  119. package/dist/interview/App.d.ts.map +1 -1
  120. package/dist/interview/App.js +36 -56
  121. package/dist/interview/App.js.map +1 -1
  122. package/dist/interview/index.d.ts +3 -0
  123. package/dist/interview/index.d.ts.map +1 -1
  124. package/dist/interview/index.js +1 -0
  125. package/dist/interview/index.js.map +1 -1
  126. package/dist/interview/prompts.d.ts +3 -1
  127. package/dist/interview/prompts.d.ts.map +1 -1
  128. package/dist/interview/prompts.js +14 -1
  129. package/dist/interview/prompts.js.map +1 -1
  130. package/dist/interview/ui/ChatBanner.d.ts +17 -0
  131. package/dist/interview/ui/ChatBanner.d.ts.map +1 -0
  132. package/dist/interview/ui/ChatBanner.js +30 -0
  133. package/dist/interview/ui/ChatBanner.js.map +1 -0
  134. package/dist/interview/ui/ChatInput.d.ts +36 -0
  135. package/dist/interview/ui/ChatInput.d.ts.map +1 -0
  136. package/dist/interview/ui/ChatInput.js +304 -0
  137. package/dist/interview/ui/ChatInput.js.map +1 -0
  138. package/dist/interview/ui/MarkdownText.d.ts +13 -0
  139. package/dist/interview/ui/MarkdownText.d.ts.map +1 -0
  140. package/dist/interview/ui/MarkdownText.js +107 -0
  141. package/dist/interview/ui/MarkdownText.js.map +1 -0
  142. package/dist/interview/ui/index.d.ts +3 -0
  143. package/dist/interview/ui/index.d.ts.map +1 -1
  144. package/dist/interview/ui/index.js +3 -0
  145. package/dist/interview/ui/index.js.map +1 -1
  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 +6 -5
  151. package/dist/memento/index.d.ts.map +1 -1
  152. package/dist/memento/index.js +7 -5
  153. package/dist/memento/index.js.map +1 -1
  154. package/dist/memento/loop.d.ts +6 -5
  155. package/dist/memento/loop.d.ts.map +1 -1
  156. package/dist/memento/loop.js +872 -180
  157. package/dist/memento/loop.js.map +1 -1
  158. package/dist/memento/matrix-animation.d.ts +26 -0
  159. package/dist/memento/matrix-animation.d.ts.map +1 -1
  160. package/dist/memento/matrix-animation.js +93 -18
  161. package/dist/memento/matrix-animation.js.map +1 -1
  162. package/dist/memento/nav-protocol.d.ts +2 -2
  163. package/dist/memento/nav-protocol.d.ts.map +1 -1
  164. package/dist/memento/nav-protocol.js +39 -43
  165. package/dist/memento/nav-protocol.js.map +1 -1
  166. package/dist/memento/prompts.d.ts +21 -8
  167. package/dist/memento/prompts.d.ts.map +1 -1
  168. package/dist/memento/prompts.js +79 -39
  169. package/dist/memento/prompts.js.map +1 -1
  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 +6 -6
  175. package/dist/memento/types.d.ts.map +1 -1
  176. package/dist/memento/types.js +3 -3
  177. package/dist/registry.d.ts +35 -0
  178. package/dist/registry.d.ts.map +1 -0
  179. package/dist/registry.js +87 -0
  180. package/dist/registry.js.map +1 -0
  181. package/dist/repo-analyzer/index.d.ts +2 -1
  182. package/dist/repo-analyzer/index.d.ts.map +1 -1
  183. package/dist/repo-analyzer/index.js +6 -17
  184. package/dist/repo-analyzer/index.js.map +1 -1
  185. package/dist/standup/config.d.ts +19 -0
  186. package/dist/standup/config.d.ts.map +1 -0
  187. package/dist/standup/config.js +42 -0
  188. package/dist/standup/config.js.map +1 -0
  189. package/dist/standup/index.d.ts +24 -0
  190. package/dist/standup/index.d.ts.map +1 -0
  191. package/dist/standup/index.js +29 -0
  192. package/dist/standup/index.js.map +1 -0
  193. package/dist/standup/loop.d.ts +36 -0
  194. package/dist/standup/loop.d.ts.map +1 -0
  195. package/dist/standup/loop.js +508 -0
  196. package/dist/standup/loop.js.map +1 -0
  197. package/dist/standup/prompts.d.ts +62 -0
  198. package/dist/standup/prompts.d.ts.map +1 -0
  199. package/dist/standup/prompts.js +211 -0
  200. package/dist/standup/prompts.js.map +1 -0
  201. package/dist/standup/standup-protocol.d.ts +33 -0
  202. package/dist/standup/standup-protocol.d.ts.map +1 -0
  203. package/dist/standup/standup-protocol.js +189 -0
  204. package/dist/standup/standup-protocol.js.map +1 -0
  205. package/dist/standup/types.d.ts +185 -0
  206. package/dist/standup/types.d.ts.map +1 -0
  207. package/dist/standup/types.js +67 -0
  208. package/dist/standup/types.js.map +1 -0
  209. package/dist/tools/cross-nav.d.ts +21 -0
  210. package/dist/tools/cross-nav.d.ts.map +1 -0
  211. package/dist/tools/cross-nav.js +93 -0
  212. package/dist/tools/cross-nav.js.map +1 -0
  213. package/dist/tools/index.d.ts +1 -0
  214. package/dist/tools/index.d.ts.map +1 -1
  215. package/dist/tools/index.js +1 -0
  216. package/dist/tools/index.js.map +1 -1
  217. package/dist/tools/related-navs-config.d.ts +15 -0
  218. package/dist/tools/related-navs-config.d.ts.map +1 -0
  219. package/dist/tools/related-navs-config.js +132 -0
  220. package/dist/tools/related-navs-config.js.map +1 -0
  221. package/dist/tools/related-navs.d.ts +23 -0
  222. package/dist/tools/related-navs.d.ts.map +1 -0
  223. package/dist/tools/related-navs.js +107 -0
  224. package/dist/tools/related-navs.js.map +1 -0
  225. package/dist/tools/response.d.ts +3 -2
  226. package/dist/tools/response.d.ts.map +1 -1
  227. package/dist/tools/response.js +7 -11
  228. package/dist/tools/response.js.map +1 -1
  229. package/dist/tools/self-config.d.ts +2 -1
  230. package/dist/tools/self-config.d.ts.map +1 -1
  231. package/dist/tools/self-config.js +5 -9
  232. package/dist/tools/self-config.js.map +1 -1
  233. package/package.json +7 -4
  234. package/dist/adapter/claude-adapter.d.ts.map +0 -1
  235. package/dist/adapter/claude-adapter.js.map +0 -1
  236. package/dist/memento/state.d.ts +0 -56
  237. package/dist/memento/state.d.ts.map +0 -1
  238. package/dist/memento/state.js +0 -156
  239. package/dist/memento/state.js.map +0 -1
  240. package/dist/memento/worker-agent.d.ts +0 -30
  241. package/dist/memento/worker-agent.d.ts.map +0 -1
  242. package/dist/memento/worker-agent.js +0 -109
  243. package/dist/memento/worker-agent.js.map +0 -1
  244. package/dist/migrations/versions/v1.4.0-rfc2119-skills.d.ts +0 -18
  245. package/dist/migrations/versions/v1.4.0-rfc2119-skills.d.ts.map +0 -1
  246. package/dist/migrations/versions/v1.4.0-rfc2119-skills.js +0 -207
  247. package/dist/migrations/versions/v1.4.0-rfc2119-skills.js.map +0 -1
package/README.md CHANGED
@@ -54,9 +54,9 @@ A knowledge pack must contain:
54
54
  ## Programmatic use
55
55
 
56
56
  ```typescript
57
- import { ClaudeAdapter } from "@autonav/core";
57
+ import { NavigatorAdapter } from "@autonav/core";
58
58
 
59
- const adapter = new ClaudeAdapter();
59
+ const adapter = new NavigatorAdapter();
60
60
  const nav = await adapter.loadNavigator("./my-docs");
61
61
  const response = await adapter.query(nav, "How do I deploy?");
62
62
 
@@ -1,7 +1,7 @@
1
1
  /**
2
- * Claude SDK Adapter
2
+ * Navigator Adapter
3
3
  *
4
- * Execution engine that bridges Claude API to Communication Layer protocol
4
+ * Execution engine that bridges agent harnesses to Communication Layer protocol
5
5
  */
6
- export { ClaudeAdapter, type ClaudeAdapterOptions, type LoadedNavigator, type QueryOptions, } from "./claude-adapter.js";
6
+ export { NavigatorAdapter, type NavigatorAdapterOptions, type LoadedNavigator, type QueryOptions, } from "./navigator-adapter.js";
7
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/adapter/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,aAAa,EACb,KAAK,oBAAoB,EACzB,KAAK,eAAe,EACpB,KAAK,YAAY,GAClB,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/adapter/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,gBAAgB,EAChB,KAAK,uBAAuB,EAC5B,KAAK,eAAe,EACpB,KAAK,YAAY,GAClB,MAAM,wBAAwB,CAAC"}
@@ -1,7 +1,7 @@
1
1
  /**
2
- * Claude SDK Adapter
2
+ * Navigator Adapter
3
3
  *
4
- * Execution engine that bridges Claude API to Communication Layer protocol
4
+ * Execution engine that bridges agent harnesses to Communication Layer protocol
5
5
  */
6
- export { ClaudeAdapter, } from "./claude-adapter.js";
6
+ export { NavigatorAdapter, } from "./navigator-adapter.js";
7
7
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/adapter/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,aAAa,GAId,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/adapter/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,gBAAgB,GAIjB,MAAM,wBAAwB,CAAC"}
@@ -1,9 +1,10 @@
1
1
  import { NavigatorConfig, NavigatorResponse, type ValidationResult } from "@autonav/communication-layer";
2
2
  import { PluginManager } from "../plugins/index.js";
3
+ import { type Harness } from "../harness/index.js";
3
4
  /**
4
- * Configuration options for Claude Adapter
5
+ * Configuration options for Navigator Adapter
5
6
  */
6
- export interface ClaudeAdapterOptions {
7
+ export interface NavigatorAdapterOptions {
7
8
  /**
8
9
  * Claude model to use (defaults to claude-sonnet-4-5)
9
10
  */
@@ -24,6 +25,11 @@ export interface ClaudeAdapterOptions {
24
25
  * @default 50
25
26
  */
26
27
  maxTurns?: number;
28
+ /**
29
+ * Pre-created harness instance. If provided, this harness is used directly.
30
+ * If omitted, defaults to ClaudeCodeHarness.
31
+ */
32
+ harness?: Harness;
27
33
  }
28
34
  /**
29
35
  * Loaded navigator with all necessary context
@@ -62,14 +68,14 @@ export interface QueryOptions {
62
68
  maxTurns?: number;
63
69
  }
64
70
  /**
65
- * Claude Agent SDK Adapter
71
+ * Navigator Adapter
66
72
  *
67
73
  * Bridges Claude Agent SDK to the Communication Layer protocol.
68
74
  * Loads navigators, executes queries, and validates responses.
69
75
  *
70
76
  * @example
71
77
  * ```typescript
72
- * const adapter = new ClaudeAdapter({
78
+ * const adapter = new NavigatorAdapter({
73
79
  * model: 'claude-sonnet-4-5'
74
80
  * });
75
81
  *
@@ -77,14 +83,15 @@ export interface QueryOptions {
77
83
  * const response = await adapter.query(navigator, 'How do I deploy?');
78
84
  * ```
79
85
  */
80
- export declare class ClaudeAdapter {
86
+ export declare class NavigatorAdapter {
81
87
  private readonly options;
88
+ private readonly harness;
82
89
  /**
83
- * Create a new Claude Adapter
90
+ * Create a new Navigator Adapter
84
91
  *
85
92
  * @param options - Configuration options
86
93
  */
87
- constructor(options?: ClaudeAdapterOptions);
94
+ constructor(options?: NavigatorAdapterOptions);
88
95
  /**
89
96
  * Load a navigator from a directory
90
97
  *
@@ -98,7 +105,7 @@ export declare class ClaudeAdapter {
98
105
  *
99
106
  * @example
100
107
  * ```typescript
101
- * const adapter = new ClaudeAdapter();
108
+ * const adapter = new NavigatorAdapter();
102
109
  * const navigator = await adapter.loadNavigator('./my-navigator');
103
110
  * console.log(`Loaded: ${navigator.config.name}`);
104
111
  * ```
@@ -143,7 +150,7 @@ export declare class ClaudeAdapter {
143
150
  * @param navigator - Loaded navigator to update
144
151
  * @param message - Update message or report
145
152
  * @param options - Query options (maxTurns)
146
- * @returns Text response from Claude describing what was updated
153
+ * @returns Text response from the agent describing what was updated
147
154
  * @throws {Error} If API call fails or update fails
148
155
  *
149
156
  * @example
@@ -162,7 +169,7 @@ export declare class ClaudeAdapter {
162
169
  * Extracts JSON from the response text (either from code blocks or raw JSON)
163
170
  * and validates it against the NavigatorResponseSchema.
164
171
  *
165
- * @param rawResponse - Raw text response from Claude
172
+ * @param rawResponse - Raw text response from the agent
166
173
  * @param query - Original query (used to populate missing query field)
167
174
  * @returns Parsed and validated NavigatorResponse
168
175
  * @throws {Error} If JSON cannot be extracted or schema validation fails
@@ -186,4 +193,4 @@ export declare class ClaudeAdapter {
186
193
  */
187
194
  validate(response: NavigatorResponse, knowledgeBasePath: string): ValidationResult;
188
195
  }
189
- //# sourceMappingURL=claude-adapter.d.ts.map
196
+ //# sourceMappingURL=navigator-adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"navigator-adapter.d.ts","sourceRoot":"","sources":["../../src/adapter/navigator-adapter.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,eAAe,EAEf,iBAAiB,EAMjB,KAAK,gBAAgB,EAEtB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAuB,aAAa,EAA0B,MAAM,qBAAqB,CAAC;AAKjG,OAAO,EAAE,KAAK,OAAO,EAAqB,MAAM,qBAAqB,CAAC;AA+CtE;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;;;;;;;;;;;;OAcG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,eAAe,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B;;OAEG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3B;;;;;;;;;;;;;;OAcG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAwC;IAChE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAU;IAElC;;;;OAIG;gBACS,OAAO,GAAE,uBAA4B;IAUjD;;;;;;;;;;;;;;;;;OAiBG;IACG,aAAa,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAmHpE;;;;;;;;;;;;;;;;;;;;OAoBG;IACG,KAAK,CACT,SAAS,EAAE,eAAe,EAC1B,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,YAAiB,GACzB,OAAO,CAAC,iBAAiB,CAAC;IAwB7B;;;;;OAKG;YACW,YAAY;IAmQ1B;;;;;;;;;;;;;;;;;;;;;OAqBG;IACG,MAAM,CACV,SAAS,EAAE,eAAe,EAC1B,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,YAAiB,GACzB,OAAO,CAAC,MAAM,CAAC;IA+ElB;;;;;;;;;;;;OAYG;IACH,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,iBAAiB;IAoCpE;;;;;;;;;;;;;OAaG;IACH,QAAQ,CACN,QAAQ,EAAE,iBAAiB,EAC3B,iBAAiB,EAAE,MAAM,GACxB,gBAAgB;CAGpB"}
@@ -1,10 +1,12 @@
1
- import { query } from "@anthropic-ai/claude-agent-sdk";
2
1
  import * as fs from "node:fs";
3
2
  import * as path from "node:path";
4
- import { NavigatorConfigSchema, NavigatorResponseSchema, createAnswerQuestionPrompt, validateResponse, SELF_CONFIG_RULES, } from "@autonav/communication-layer";
3
+ import { NavigatorConfigSchema, NavigatorResponseSchema, createAnswerQuestionPrompt, validateResponse, SELF_CONFIG_RULES, scoreToConfidence, } from "@autonav/communication-layer";
5
4
  import { createPluginManager, PluginConfigFileSchema } from "../plugins/index.js";
6
5
  import { sanitizeError } from "../plugins/utils/security.js";
7
- import { createSelfConfigMcpServer, createResponseMcpServer, SUBMIT_ANSWER_TOOL } from "../tools/index.js";
6
+ import { createSelfConfigMcpServer, createResponseMcpServer, createCrossNavMcpServer, SUBMIT_ANSWER_TOOL } from "../tools/index.js";
7
+ import { createRelatedNavsMcpServer } from "../tools/related-navs.js";
8
+ import { createRelatedNavsConfigServer } from "../tools/related-navs-config.js";
9
+ import { ClaudeCodeHarness } from "../harness/index.js";
8
10
  /**
9
11
  * Optional LangSmith integration for tracing Claude Agent SDK calls
10
12
  */
@@ -44,14 +46,14 @@ async function initializeLangSmith() {
44
46
  }
45
47
  }
46
48
  /**
47
- * Claude Agent SDK Adapter
49
+ * Navigator Adapter
48
50
  *
49
51
  * Bridges Claude Agent SDK to the Communication Layer protocol.
50
52
  * Loads navigators, executes queries, and validates responses.
51
53
  *
52
54
  * @example
53
55
  * ```typescript
54
- * const adapter = new ClaudeAdapter({
56
+ * const adapter = new NavigatorAdapter({
55
57
  * model: 'claude-sonnet-4-5'
56
58
  * });
57
59
  *
@@ -59,18 +61,22 @@ async function initializeLangSmith() {
59
61
  * const response = await adapter.query(navigator, 'How do I deploy?');
60
62
  * ```
61
63
  */
62
- export class ClaudeAdapter {
64
+ export class NavigatorAdapter {
63
65
  options;
66
+ harness;
64
67
  /**
65
- * Create a new Claude Adapter
68
+ * Create a new Navigator Adapter
66
69
  *
67
70
  * @param options - Configuration options
68
71
  */
69
72
  constructor(options = {}) {
70
73
  this.options = {
71
- model: options.model || "claude-sonnet-4-5",
74
+ // Only set model if explicitly provided — let the harness use its own default otherwise.
75
+ // ClaudeCodeHarness defaults to claude-sonnet-4-5; chibi defaults to free models.
76
+ model: options.model || (options.harness ? undefined : "claude-sonnet-4-5"),
72
77
  maxTurns: options.maxTurns ?? 50, // Default: 50 turns max (prevents runaway execution)
73
78
  };
79
+ this.harness = options.harness ?? new ClaudeCodeHarness();
74
80
  }
75
81
  /**
76
82
  * Load a navigator from a directory
@@ -85,7 +91,7 @@ export class ClaudeAdapter {
85
91
  *
86
92
  * @example
87
93
  * ```typescript
88
- * const adapter = new ClaudeAdapter();
94
+ * const adapter = new NavigatorAdapter();
89
95
  * const navigator = await adapter.loadNavigator('./my-navigator');
90
96
  * console.log(`Loaded: ${navigator.config.name}`);
91
97
  * ```
@@ -239,11 +245,24 @@ export class ClaudeAdapter {
239
245
  // Set up MCP servers
240
246
  const mcpServers = {};
241
247
  // Always add response tools for structured output
242
- mcpServers["autonav-response"] = createResponseMcpServer();
248
+ mcpServers["autonav-response"] = createResponseMcpServer(this.harness);
243
249
  // Add self-config tools if enabled
244
250
  if (enableSelfConfig && navigator.pluginsConfigPath) {
245
- mcpServers["autonav-self-config"] = createSelfConfigMcpServer(navigator.pluginManager, navigator.pluginsConfigPath);
251
+ mcpServers["autonav-self-config"] = createSelfConfigMcpServer(navigator.pluginManager, navigator.pluginsConfigPath, this.harness);
246
252
  }
253
+ // Add cross-nav query tool so this agent can ask other navigators
254
+ const crossNavMcp = createCrossNavMcpServer(this.harness);
255
+ mcpServers["autonav-cross-nav"] = crossNavMcp.server;
256
+ // Add per-navigator tools for related navigators (ask_<name>)
257
+ if (navigator.config.relatedNavigators && navigator.config.relatedNavigators.length > 0) {
258
+ const relatedNavsMcp = createRelatedNavsMcpServer(this.harness, navigator.config.relatedNavigators);
259
+ if (relatedNavsMcp) {
260
+ mcpServers["autonav-related-navs"] = relatedNavsMcp.server;
261
+ }
262
+ }
263
+ // Add self-config tools for managing related navigators
264
+ const relatedNavsConfigMcp = createRelatedNavsConfigServer(navigator.navigatorPath, this.harness);
265
+ mcpServers["autonav-related-navs-config"] = relatedNavsConfigMcp.server;
247
266
  // Debug logging
248
267
  const debug = process.env.AUTONAV_DEBUG === "1";
249
268
  if (debug) {
@@ -253,124 +272,143 @@ export class ClaudeAdapter {
253
272
  console.error(`[DEBUG] MCP servers registered: ${Object.keys(mcpServers).join(", ")}`);
254
273
  console.error(`[DEBUG] System prompt length: ${systemPrompt.length} chars`);
255
274
  }
256
- try {
257
- // Execute query using Claude Agent SDK
258
- // The SDK handles the agentic loop automatically
259
- const queryIterator = query({
260
- prompt,
261
- options: {
262
- model: this.options.model,
263
- maxTurns,
264
- systemPrompt,
265
- cwd: navigator.navigatorPath,
266
- mcpServers: Object.keys(mcpServers).length > 0 ? mcpServers : undefined,
267
- // Allow the SDK to handle permissions
268
- permissionMode: "bypassPermissions",
275
+ // Per-nav sandbox: query defaults to enabled unless explicitly disabled
276
+ const querySandboxEnabled = navigator.config.sandbox?.query?.enabled !== false;
277
+ const navAllowedTools = navigator.config.sandbox?.allowedTools;
278
+ // Query is read-only: block write tools. navAllowedTools can override
279
+ // (e.g., a navigator that explicitly needs Write access for queries).
280
+ const queryDisallowed = ["Write", "Edit", "NotebookEdit"].filter((t) => !navAllowedTools?.includes(t));
281
+ const session = this.harness.run({
282
+ model: this.options.model,
283
+ maxTurns,
284
+ systemPrompt,
285
+ cwd: navigator.navigatorPath,
286
+ mcpServers: Object.keys(mcpServers).length > 0 ? mcpServers : undefined,
287
+ permissionMode: "bypassPermissions",
288
+ stderr: debug ? (data) => process.stderr.write(`[harness] ${data}`) : undefined,
289
+ disallowedTools: queryDisallowed,
290
+ ...(querySandboxEnabled ? {
291
+ sandbox: {
292
+ readPaths: [navigator.navigatorPath],
269
293
  },
270
- });
271
- // Collect messages and find the result
272
- let resultMessage;
294
+ } : {}),
295
+ }, prompt);
296
+ try {
297
+ // Collect events and find the result
273
298
  let lastAssistantText = "";
274
299
  let submitAnswerInput;
275
- let turnNumber = 0;
276
- let submitAnswerTurn;
277
- for await (const message of queryIterator) {
278
- // Count turns (increment for each assistant message)
279
- if (message.type === "assistant") {
280
- turnNumber++;
300
+ let toolUseCount = 0;
301
+ let submitAnswerToolIndex;
302
+ let resultEvent;
303
+ for await (const event of session) {
304
+ if (event.type === "tool_use") {
305
+ toolUseCount++;
281
306
  if (debug) {
282
- console.error(`\n[DEBUG] Turn ${turnNumber}: Assistant message`);
307
+ console.error(`[DEBUG] Tool called: ${event.name}`);
283
308
  }
284
- }
285
- // Log tool usage for debugging
286
- if (message.type === "assistant") {
287
- const content = message.message.content;
288
- for (const block of content) {
289
- if (block.type === "tool_use") {
290
- if (debug) {
291
- console.error(`[DEBUG] Tool called: ${block.name}`);
292
- }
293
- // Check if this is the submit_answer tool
294
- // Note: MCP SDK prefixes tool names with server name: "mcp__autonav-response__submit_answer"
295
- if (block.name === SUBMIT_ANSWER_TOOL || block.name.endsWith(`__${SUBMIT_ANSWER_TOOL}`)) {
296
- // Extract the structured response from tool input
297
- submitAnswerInput = block.input;
298
- submitAnswerTurn = turnNumber; // Track which turn submit_answer was called
299
- if (debug) {
300
- console.error(`[DEBUG] submit_answer tool called successfully at turn ${turnNumber}!`);
301
- }
302
- }
303
- }
304
- else if (block.type === "text") {
305
- lastAssistantText = block.text;
306
- if (debug) {
307
- console.error(`[DEBUG] Text response: ${block.text.substring(0, 100)}...`);
308
- }
309
+ // Check if this is the submit_answer tool
310
+ // Note: MCP SDK prefixes tool names with server name: "mcp__autonav-response__submit_answer"
311
+ if (event.name === SUBMIT_ANSWER_TOOL || event.name.endsWith(`__${SUBMIT_ANSWER_TOOL}`)) {
312
+ submitAnswerInput = event.input;
313
+ submitAnswerToolIndex = toolUseCount;
314
+ if (debug) {
315
+ console.error(`[DEBUG] submit_answer tool called successfully!`);
309
316
  }
310
317
  }
311
318
  }
312
- // Capture the result message
313
- if (message.type === "result") {
314
- resultMessage = message;
319
+ else if (event.type === "error") {
320
+ if (debug) {
321
+ console.error(`[DEBUG] Error: ${event.message}`);
322
+ }
323
+ // Capture error message so it surfaces in the result
324
+ lastAssistantText = event.message;
325
+ }
326
+ else if (event.type === "text") {
327
+ lastAssistantText = event.text;
328
+ if (debug) {
329
+ console.error(`[DEBUG] Text response: ${event.text.substring(0, 100)}...`);
330
+ }
331
+ }
332
+ else if (event.type === "result") {
333
+ resultEvent = event;
315
334
  if (debug) {
316
- console.error(`\n[DEBUG] Result: ${resultMessage.subtype}`);
317
- console.error(`[DEBUG] Total turns: ${turnNumber}`);
335
+ console.error(`\n[DEBUG] Result: ${event.success ? "success" : "error"}`);
336
+ console.error(`[DEBUG] Total turns: ${event.numTurns ?? "unknown"}`);
318
337
  }
319
338
  }
320
339
  }
321
340
  // Log execution metrics (controlled by AUTONAV_METRICS or AUTONAV_DEBUG)
322
341
  const showMetrics = process.env.AUTONAV_METRICS === "1" || debug;
323
- if (showMetrics && resultMessage) {
342
+ if (showMetrics && resultEvent) {
343
+ const totalTurns = resultEvent.numTurns ?? toolUseCount;
324
344
  console.error(`\n[METRICS] Query completed`);
325
- console.error(`[METRICS] Total turns: ${turnNumber}`);
326
- // Track turns after submit_answer (diagnostic for termination behavior)
327
- if (submitAnswerTurn !== undefined) {
328
- const turnsAfterSubmit = turnNumber - submitAnswerTurn;
329
- console.error(`[METRICS] submit_answer called at turn: ${submitAnswerTurn}`);
330
- console.error(`[METRICS] Turns after submit_answer: ${turnsAfterSubmit}`);
331
- // Warn if Claude continued for many turns after submit_answer
332
- if (turnsAfterSubmit > 3) {
333
- console.error(`[METRICS] ⚠️ Claude continued for ${turnsAfterSubmit} turns after submit_answer`);
345
+ console.error(`[METRICS] Total turns: ${totalTurns}`);
346
+ // Track tool calls after submit_answer (diagnostic for termination behavior)
347
+ if (submitAnswerToolIndex !== undefined) {
348
+ const toolsAfterSubmit = toolUseCount - submitAnswerToolIndex;
349
+ console.error(`[METRICS] submit_answer called at tool call: ${submitAnswerToolIndex}`);
350
+ console.error(`[METRICS] Tool calls after submit_answer: ${toolsAfterSubmit}`);
351
+ if (toolsAfterSubmit > 3) {
352
+ console.error(`[METRICS] ⚠️ Claude continued for ${toolsAfterSubmit} tool calls after submit_answer`);
334
353
  }
335
354
  }
336
- if (resultMessage.duration_ms) {
337
- console.error(`[METRICS] Duration: ${resultMessage.duration_ms}ms`);
355
+ if (resultEvent.durationMs) {
356
+ console.error(`[METRICS] Duration: ${resultEvent.durationMs}ms`);
338
357
  }
339
- if (resultMessage.duration_api_ms) {
340
- console.error(`[METRICS] API duration: ${resultMessage.duration_api_ms}ms`);
358
+ if (resultEvent.durationApiMs) {
359
+ console.error(`[METRICS] API duration: ${resultEvent.durationApiMs}ms`);
341
360
  }
342
- if (resultMessage.total_cost_usd !== undefined) {
343
- console.error(`[METRICS] Cost: $${resultMessage.total_cost_usd.toFixed(4)}`);
361
+ if (resultEvent.costUsd !== undefined) {
362
+ console.error(`[METRICS] Cost: $${resultEvent.costUsd.toFixed(4)}`);
344
363
  }
345
364
  }
346
365
  // Check for errors
347
- if (!resultMessage) {
348
- throw new Error("No result message received from Claude Agent SDK");
366
+ if (!resultEvent) {
367
+ throw new Error("No result received from agent");
349
368
  }
350
- if (resultMessage.subtype !== "success") {
351
- const errorDetails = "errors" in resultMessage
352
- ? resultMessage.errors.join(", ")
353
- : "Unknown error";
354
- throw new Error(`Query failed: ${resultMessage.subtype} - ${errorDetails}`);
369
+ if (!resultEvent.success) {
370
+ throw new Error(`Query failed: ${resultEvent.text || "Unknown error"}`);
355
371
  }
356
372
  // Build the navigator response
357
373
  let navigatorResponse;
358
374
  if (submitAnswerInput) {
375
+ // Normalize confidence: accept enum strings ("high"), numeric strings ("0.9"), or numbers (0.9)
376
+ const rawConf = submitAnswerInput.confidence;
377
+ let confidence;
378
+ if (rawConf === "high" || rawConf === "medium" || rawConf === "low") {
379
+ confidence = rawConf;
380
+ }
381
+ else {
382
+ const n = Number(rawConf);
383
+ confidence = !isNaN(n) ? scoreToConfidence(n) : "medium";
384
+ }
385
+ // Normalize sources: some harnesses (e.g. OpenCode) pass sources
386
+ // as a JSON string rather than an array, since their tool APIs
387
+ // don't support complex types natively.
388
+ let sources = submitAnswerInput.sources;
389
+ if (typeof sources === "string") {
390
+ try {
391
+ sources = JSON.parse(sources);
392
+ }
393
+ catch {
394
+ sources = [];
395
+ }
396
+ }
359
397
  // Use structured output from tool call (preferred)
360
398
  navigatorResponse = NavigatorResponseSchema.parse({
361
399
  query: question,
362
400
  answer: submitAnswerInput.answer,
363
- sources: submitAnswerInput.sources,
364
- confidence: submitAnswerInput.confidence,
401
+ sources,
402
+ confidence,
365
403
  confidenceReason: submitAnswerInput.confidenceReason,
366
404
  outOfDomain: submitAnswerInput.outOfDomain,
367
405
  });
368
406
  }
369
407
  else {
370
408
  // Fall back to parsing text response (legacy path)
371
- const finalText = resultMessage.result || lastAssistantText;
409
+ const finalText = resultEvent.text || lastAssistantText;
372
410
  if (!finalText) {
373
- throw new Error("No response received from Claude. Expected submit_answer tool call or text response.");
411
+ throw new Error(`${this.harness.displayName} finished without answering no submit_answer call or text response.`);
374
412
  }
375
413
  // Parse the response from text
376
414
  navigatorResponse = this.parseResponse(finalText, question);
@@ -384,7 +422,10 @@ export class ClaudeAdapter {
384
422
  if (error instanceof Error) {
385
423
  throw error;
386
424
  }
387
- throw new Error(`Failed to query Claude: ${error instanceof Error ? error.message : String(error)}`);
425
+ throw new Error(`${this.harness.displayName} ran into trouble: ${error instanceof Error ? error.message : String(error)}`);
426
+ }
427
+ finally {
428
+ await session.close();
388
429
  }
389
430
  }
390
431
  /**
@@ -397,7 +438,7 @@ export class ClaudeAdapter {
397
438
  * @param navigator - Loaded navigator to update
398
439
  * @param message - Update message or report
399
440
  * @param options - Query options (maxTurns)
400
- * @returns Text response from Claude describing what was updated
441
+ * @returns Text response from the agent describing what was updated
401
442
  * @throws {Error} If API call fails or update fails
402
443
  *
403
444
  * @example
@@ -429,53 +470,50 @@ When updating documentation:
429
470
  - Cite which files you modified in your response
430
471
 
431
472
  Your task: ${message}`;
432
- try {
433
- // Execute update using Claude Agent SDK with write permissions
434
- const queryIterator = query({
435
- prompt: message,
436
- options: {
437
- model: this.options.model,
438
- maxTurns,
439
- systemPrompt,
440
- cwd: navigator.navigatorPath,
441
- // Allow file writes in the navigator directory
442
- permissionMode: "bypassPermissions",
473
+ // Per-nav sandbox: update defaults to enabled unless explicitly disabled
474
+ const updateSandboxEnabled = navigator.config.sandbox?.update?.enabled !== false;
475
+ const session = this.harness.run({
476
+ model: this.options.model,
477
+ maxTurns,
478
+ systemPrompt,
479
+ cwd: navigator.navigatorPath,
480
+ permissionMode: "bypassPermissions",
481
+ ...(updateSandboxEnabled ? {
482
+ sandbox: {
483
+ writePaths: [navigator.navigatorPath],
443
484
  },
444
- });
485
+ } : {}),
486
+ }, message);
487
+ try {
445
488
  // Collect the result
446
- let resultMessage;
447
489
  let lastAssistantText = "";
448
- for await (const message of queryIterator) {
449
- if (message.type === "assistant") {
450
- const content = message.message.content;
451
- for (const block of content) {
452
- if (block.type === "text") {
453
- lastAssistantText = block.text;
454
- }
455
- }
490
+ let resultEvent;
491
+ for await (const event of session) {
492
+ if (event.type === "text") {
493
+ lastAssistantText = event.text;
456
494
  }
457
- if (message.type === "result") {
458
- resultMessage = message;
495
+ if (event.type === "result") {
496
+ resultEvent = event;
459
497
  }
460
498
  }
461
499
  // Check for errors
462
- if (!resultMessage) {
463
- throw new Error("No result message received from Claude Agent SDK");
500
+ if (!resultEvent) {
501
+ throw new Error("No result received from agent");
464
502
  }
465
- if (resultMessage.subtype !== "success") {
466
- const errorDetails = "errors" in resultMessage
467
- ? resultMessage.errors.join(", ")
468
- : "Unknown error";
469
- throw new Error(`Update failed: ${resultMessage.subtype} - ${errorDetails}`);
503
+ if (!resultEvent.success) {
504
+ throw new Error(`Update failed: ${resultEvent.text || "Unknown error"}`);
470
505
  }
471
506
  // Return the final response text
472
- return resultMessage.result || lastAssistantText || "Update completed (no response text)";
507
+ return resultEvent.text || lastAssistantText || "Update completed (no response text)";
473
508
  }
474
509
  catch (error) {
475
510
  if (error instanceof Error) {
476
511
  throw error;
477
512
  }
478
- throw new Error(`Failed to update navigator: ${error instanceof Error ? error.message : String(error)}`);
513
+ throw new Error(`${this.harness.displayName} couldn't complete the update: ${error instanceof Error ? error.message : String(error)}`);
514
+ }
515
+ finally {
516
+ await session.close();
479
517
  }
480
518
  }
481
519
  /**
@@ -484,7 +522,7 @@ Your task: ${message}`;
484
522
  * Extracts JSON from the response text (either from code blocks or raw JSON)
485
523
  * and validates it against the NavigatorResponseSchema.
486
524
  *
487
- * @param rawResponse - Raw text response from Claude
525
+ * @param rawResponse - Raw text response from the agent
488
526
  * @param query - Original query (used to populate missing query field)
489
527
  * @returns Parsed and validated NavigatorResponse
490
528
  * @throws {Error} If JSON cannot be extracted or schema validation fails
@@ -538,4 +576,4 @@ Your task: ${message}`;
538
576
  return validateResponse(response, knowledgeBasePath);
539
577
  }
540
578
  }
541
- //# sourceMappingURL=claude-adapter.js.map
579
+ //# sourceMappingURL=navigator-adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"navigator-adapter.js","sourceRoot":"","sources":["../../src/adapter/navigator-adapter.ts"],"names":[],"mappings":"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"}
@@ -2,12 +2,8 @@
2
2
  /**
3
3
  * Main autonav CLI dispatcher
4
4
  *
5
- * Routes commands to appropriate handlers:
6
- * - autonav init -> nav-init.ts
7
- * - autonav query -> nav-query.ts
8
- * - autonav update -> nav-update.ts
9
- * - autonav chat -> nav-chat.ts
10
- * - autonav memento -> nav-memento.ts
5
+ * Routes commands to appropriate handlers via dynamic import (same process).
6
+ * Each command module exports a `run(args: string[])` function.
11
7
  */
12
8
  export {};
13
9
  //# sourceMappingURL=autonav.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"autonav.d.ts","sourceRoot":"","sources":["../../src/cli/autonav.ts"],"names":[],"mappings":";AAEA;;;;;;;;;GASG"}
1
+ {"version":3,"file":"autonav.d.ts","sourceRoot":"","sources":["../../src/cli/autonav.ts"],"names":[],"mappings":";AAEA;;;;;GAKG"}