@project-ava-supernova/core 0.2.71

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 (1497) hide show
  1. package/dist/agent/agent.d.ts +623 -0
  2. package/dist/agent/agent.d.ts.map +1 -0
  3. package/dist/agent/agent.js +3558 -0
  4. package/dist/agent/agent.js.map +1 -0
  5. package/dist/agent/claims-auditor.d.ts +54 -0
  6. package/dist/agent/claims-auditor.d.ts.map +1 -0
  7. package/dist/agent/claims-auditor.js +125 -0
  8. package/dist/agent/claims-auditor.js.map +1 -0
  9. package/dist/agent/context-continuity.d.ts +125 -0
  10. package/dist/agent/context-continuity.d.ts.map +1 -0
  11. package/dist/agent/context-continuity.js +231 -0
  12. package/dist/agent/context-continuity.js.map +1 -0
  13. package/dist/agent/conversation.d.ts +26 -0
  14. package/dist/agent/conversation.d.ts.map +1 -0
  15. package/dist/agent/conversation.js +86 -0
  16. package/dist/agent/conversation.js.map +1 -0
  17. package/dist/agent/design-reinjection.d.ts +93 -0
  18. package/dist/agent/design-reinjection.d.ts.map +1 -0
  19. package/dist/agent/design-reinjection.js +235 -0
  20. package/dist/agent/design-reinjection.js.map +1 -0
  21. package/dist/agent/error-loop-detector.d.ts +59 -0
  22. package/dist/agent/error-loop-detector.d.ts.map +1 -0
  23. package/dist/agent/error-loop-detector.js +124 -0
  24. package/dist/agent/error-loop-detector.js.map +1 -0
  25. package/dist/agent/fresh-eyes.d.ts +52 -0
  26. package/dist/agent/fresh-eyes.d.ts.map +1 -0
  27. package/dist/agent/fresh-eyes.js +118 -0
  28. package/dist/agent/fresh-eyes.js.map +1 -0
  29. package/dist/agent/intent-classifier.d.ts +51 -0
  30. package/dist/agent/intent-classifier.d.ts.map +1 -0
  31. package/dist/agent/intent-classifier.js +125 -0
  32. package/dist/agent/intent-classifier.js.map +1 -0
  33. package/dist/agent/post-edit-verify.d.ts +79 -0
  34. package/dist/agent/post-edit-verify.d.ts.map +1 -0
  35. package/dist/agent/post-edit-verify.js +143 -0
  36. package/dist/agent/post-edit-verify.js.map +1 -0
  37. package/dist/agent/recover-written-calls.d.ts +90 -0
  38. package/dist/agent/recover-written-calls.d.ts.map +1 -0
  39. package/dist/agent/recover-written-calls.js +257 -0
  40. package/dist/agent/recover-written-calls.js.map +1 -0
  41. package/dist/agent/social-craft.d.ts +76 -0
  42. package/dist/agent/social-craft.d.ts.map +1 -0
  43. package/dist/agent/social-craft.js +210 -0
  44. package/dist/agent/social-craft.js.map +1 -0
  45. package/dist/agent/stop-command.d.ts +23 -0
  46. package/dist/agent/stop-command.d.ts.map +1 -0
  47. package/dist/agent/stop-command.js +59 -0
  48. package/dist/agent/stop-command.js.map +1 -0
  49. package/dist/agent/system-prompt.d.ts +125 -0
  50. package/dist/agent/system-prompt.d.ts.map +1 -0
  51. package/dist/agent/system-prompt.js +1334 -0
  52. package/dist/agent/system-prompt.js.map +1 -0
  53. package/dist/agent/task-classifier.d.ts +50 -0
  54. package/dist/agent/task-classifier.d.ts.map +1 -0
  55. package/dist/agent/task-classifier.js +187 -0
  56. package/dist/agent/task-classifier.js.map +1 -0
  57. package/dist/agent/text-tool-parser.d.ts +34 -0
  58. package/dist/agent/text-tool-parser.d.ts.map +1 -0
  59. package/dist/agent/text-tool-parser.js +96 -0
  60. package/dist/agent/text-tool-parser.js.map +1 -0
  61. package/dist/agent/vision-bridge.d.ts +29 -0
  62. package/dist/agent/vision-bridge.d.ts.map +1 -0
  63. package/dist/agent/vision-bridge.js +143 -0
  64. package/dist/agent/vision-bridge.js.map +1 -0
  65. package/dist/audit/cost.d.ts +18 -0
  66. package/dist/audit/cost.d.ts.map +1 -0
  67. package/dist/audit/cost.js +170 -0
  68. package/dist/audit/cost.js.map +1 -0
  69. package/dist/audit/export.d.ts +30 -0
  70. package/dist/audit/export.d.ts.map +1 -0
  71. package/dist/audit/export.js +155 -0
  72. package/dist/audit/export.js.map +1 -0
  73. package/dist/audit/index.d.ts +11 -0
  74. package/dist/audit/index.d.ts.map +1 -0
  75. package/dist/audit/index.js +9 -0
  76. package/dist/audit/index.js.map +1 -0
  77. package/dist/audit/integrity.d.ts +7 -0
  78. package/dist/audit/integrity.d.ts.map +1 -0
  79. package/dist/audit/integrity.js +78 -0
  80. package/dist/audit/integrity.js.map +1 -0
  81. package/dist/audit/logger.d.ts +18 -0
  82. package/dist/audit/logger.d.ts.map +1 -0
  83. package/dist/audit/logger.js +113 -0
  84. package/dist/audit/logger.js.map +1 -0
  85. package/dist/audit/patterns.d.ts +34 -0
  86. package/dist/audit/patterns.d.ts.map +1 -0
  87. package/dist/audit/patterns.js +104 -0
  88. package/dist/audit/patterns.js.map +1 -0
  89. package/dist/audit/security.d.ts +8 -0
  90. package/dist/audit/security.d.ts.map +1 -0
  91. package/dist/audit/security.js +56 -0
  92. package/dist/audit/security.js.map +1 -0
  93. package/dist/audit/summary.d.ts +22 -0
  94. package/dist/audit/summary.d.ts.map +1 -0
  95. package/dist/audit/summary.js +51 -0
  96. package/dist/audit/summary.js.map +1 -0
  97. package/dist/audit/types.d.ts +104 -0
  98. package/dist/audit/types.d.ts.map +1 -0
  99. package/dist/audit/types.js +11 -0
  100. package/dist/audit/types.js.map +1 -0
  101. package/dist/auto/aurora-router.d.ts +71 -0
  102. package/dist/auto/aurora-router.d.ts.map +1 -0
  103. package/dist/auto/aurora-router.js +138 -0
  104. package/dist/auto/aurora-router.js.map +1 -0
  105. package/dist/auto/auto-coordinator.d.ts +232 -0
  106. package/dist/auto/auto-coordinator.d.ts.map +1 -0
  107. package/dist/auto/auto-coordinator.js +1260 -0
  108. package/dist/auto/auto-coordinator.js.map +1 -0
  109. package/dist/auto/brief-generator.d.ts +10 -0
  110. package/dist/auto/brief-generator.d.ts.map +1 -0
  111. package/dist/auto/brief-generator.js +67 -0
  112. package/dist/auto/brief-generator.js.map +1 -0
  113. package/dist/auto/changes-summary.d.ts +19 -0
  114. package/dist/auto/changes-summary.d.ts.map +1 -0
  115. package/dist/auto/changes-summary.js +45 -0
  116. package/dist/auto/changes-summary.js.map +1 -0
  117. package/dist/auto/context-tracker.d.ts +27 -0
  118. package/dist/auto/context-tracker.d.ts.map +1 -0
  119. package/dist/auto/context-tracker.js +56 -0
  120. package/dist/auto/context-tracker.js.map +1 -0
  121. package/dist/auto/coordinator-model.d.ts +31 -0
  122. package/dist/auto/coordinator-model.d.ts.map +1 -0
  123. package/dist/auto/coordinator-model.js +68 -0
  124. package/dist/auto/coordinator-model.js.map +1 -0
  125. package/dist/auto/index.d.ts +12 -0
  126. package/dist/auto/index.d.ts.map +1 -0
  127. package/dist/auto/index.js +11 -0
  128. package/dist/auto/index.js.map +1 -0
  129. package/dist/auto/intent-gate.d.ts +85 -0
  130. package/dist/auto/intent-gate.d.ts.map +1 -0
  131. package/dist/auto/intent-gate.js +247 -0
  132. package/dist/auto/intent-gate.js.map +1 -0
  133. package/dist/auto/longxiang-router.d.ts +123 -0
  134. package/dist/auto/longxiang-router.d.ts.map +1 -0
  135. package/dist/auto/longxiang-router.js +184 -0
  136. package/dist/auto/longxiang-router.js.map +1 -0
  137. package/dist/auto/model-router.d.ts +42 -0
  138. package/dist/auto/model-router.d.ts.map +1 -0
  139. package/dist/auto/model-router.js +208 -0
  140. package/dist/auto/model-router.js.map +1 -0
  141. package/dist/auto/routing-modes.d.ts +33 -0
  142. package/dist/auto/routing-modes.d.ts.map +1 -0
  143. package/dist/auto/routing-modes.js +34 -0
  144. package/dist/auto/routing-modes.js.map +1 -0
  145. package/dist/auto/supernova-router.d.ts +50 -0
  146. package/dist/auto/supernova-router.d.ts.map +1 -0
  147. package/dist/auto/supernova-router.js +116 -0
  148. package/dist/auto/supernova-router.js.map +1 -0
  149. package/dist/auto/task-classifier.d.ts +10 -0
  150. package/dist/auto/task-classifier.d.ts.map +1 -0
  151. package/dist/auto/task-classifier.js +116 -0
  152. package/dist/auto/task-classifier.js.map +1 -0
  153. package/dist/auto/task-executor.d.ts +86 -0
  154. package/dist/auto/task-executor.d.ts.map +1 -0
  155. package/dist/auto/task-executor.js +271 -0
  156. package/dist/auto/task-executor.js.map +1 -0
  157. package/dist/auto/types.d.ts +57 -0
  158. package/dist/auto/types.d.ts.map +1 -0
  159. package/dist/auto/types.js +2 -0
  160. package/dist/auto/types.js.map +1 -0
  161. package/dist/awareness/tick-engine.d.ts +73 -0
  162. package/dist/awareness/tick-engine.d.ts.map +1 -0
  163. package/dist/awareness/tick-engine.js +156 -0
  164. package/dist/awareness/tick-engine.js.map +1 -0
  165. package/dist/billing/credits.d.ts +213 -0
  166. package/dist/billing/credits.d.ts.map +1 -0
  167. package/dist/billing/credits.js +535 -0
  168. package/dist/billing/credits.js.map +1 -0
  169. package/dist/billing/meter.d.ts +43 -0
  170. package/dist/billing/meter.d.ts.map +1 -0
  171. package/dist/billing/meter.js +67 -0
  172. package/dist/billing/meter.js.map +1 -0
  173. package/dist/billing/plans.d.ts +34 -0
  174. package/dist/billing/plans.d.ts.map +1 -0
  175. package/dist/billing/plans.js +108 -0
  176. package/dist/billing/plans.js.map +1 -0
  177. package/dist/briefing/briefing-engine.d.ts +51 -0
  178. package/dist/briefing/briefing-engine.d.ts.map +1 -0
  179. package/dist/briefing/briefing-engine.js +289 -0
  180. package/dist/briefing/briefing-engine.js.map +1 -0
  181. package/dist/briefing/index.d.ts +3 -0
  182. package/dist/briefing/index.d.ts.map +1 -0
  183. package/dist/briefing/index.js +2 -0
  184. package/dist/briefing/index.js.map +1 -0
  185. package/dist/briefing/types.d.ts +49 -0
  186. package/dist/briefing/types.d.ts.map +1 -0
  187. package/dist/briefing/types.js +8 -0
  188. package/dist/briefing/types.js.map +1 -0
  189. package/dist/checkpoint/checkpoint-manager.d.ts +33 -0
  190. package/dist/checkpoint/checkpoint-manager.d.ts.map +1 -0
  191. package/dist/checkpoint/checkpoint-manager.js +144 -0
  192. package/dist/checkpoint/checkpoint-manager.js.map +1 -0
  193. package/dist/config/config.d.ts +10 -0
  194. package/dist/config/config.d.ts.map +1 -0
  195. package/dist/config/config.js +169 -0
  196. package/dist/config/config.js.map +1 -0
  197. package/dist/config/personality.d.ts +32 -0
  198. package/dist/config/personality.d.ts.map +1 -0
  199. package/dist/config/personality.js +96 -0
  200. package/dist/config/personality.js.map +1 -0
  201. package/dist/config/project-config.d.ts +17 -0
  202. package/dist/config/project-config.d.ts.map +1 -0
  203. package/dist/config/project-config.js +38 -0
  204. package/dist/config/project-config.js.map +1 -0
  205. package/dist/config/project.d.ts +155 -0
  206. package/dist/config/project.d.ts.map +1 -0
  207. package/dist/config/project.js +746 -0
  208. package/dist/config/project.js.map +1 -0
  209. package/dist/config/schema.d.ts +61 -0
  210. package/dist/config/schema.d.ts.map +1 -0
  211. package/dist/config/schema.js +11 -0
  212. package/dist/config/schema.js.map +1 -0
  213. package/dist/core/constants.d.ts +13 -0
  214. package/dist/core/constants.d.ts.map +1 -0
  215. package/dist/core/constants.js +15 -0
  216. package/dist/core/constants.js.map +1 -0
  217. package/dist/core/dates.d.ts +35 -0
  218. package/dist/core/dates.d.ts.map +1 -0
  219. package/dist/core/dates.js +45 -0
  220. package/dist/core/dates.js.map +1 -0
  221. package/dist/core/errors.d.ts +27 -0
  222. package/dist/core/errors.d.ts.map +1 -0
  223. package/dist/core/errors.js +172 -0
  224. package/dist/core/errors.js.map +1 -0
  225. package/dist/core/file-lock.d.ts +22 -0
  226. package/dist/core/file-lock.d.ts.map +1 -0
  227. package/dist/core/file-lock.js +120 -0
  228. package/dist/core/file-lock.js.map +1 -0
  229. package/dist/core/logger.d.ts +9 -0
  230. package/dist/core/logger.d.ts.map +1 -0
  231. package/dist/core/logger.js +32 -0
  232. package/dist/core/logger.js.map +1 -0
  233. package/dist/core/types.d.ts +157 -0
  234. package/dist/core/types.d.ts.map +1 -0
  235. package/dist/core/types.js +13 -0
  236. package/dist/core/types.js.map +1 -0
  237. package/dist/creative/index.d.ts +50 -0
  238. package/dist/creative/index.d.ts.map +1 -0
  239. package/dist/creative/index.js +178 -0
  240. package/dist/creative/index.js.map +1 -0
  241. package/dist/dataset/capture.d.ts +15 -0
  242. package/dist/dataset/capture.d.ts.map +1 -0
  243. package/dist/dataset/capture.js +203 -0
  244. package/dist/dataset/capture.js.map +1 -0
  245. package/dist/dataset/config.d.ts +33 -0
  246. package/dist/dataset/config.d.ts.map +1 -0
  247. package/dist/dataset/config.js +60 -0
  248. package/dist/dataset/config.js.map +1 -0
  249. package/dist/dataset/consumer.d.ts +33 -0
  250. package/dist/dataset/consumer.d.ts.map +1 -0
  251. package/dist/dataset/consumer.js +97 -0
  252. package/dist/dataset/consumer.js.map +1 -0
  253. package/dist/dataset/emitter.d.ts +153 -0
  254. package/dist/dataset/emitter.d.ts.map +1 -0
  255. package/dist/dataset/emitter.js +157 -0
  256. package/dist/dataset/emitter.js.map +1 -0
  257. package/dist/dataset/events.d.ts +360 -0
  258. package/dist/dataset/events.d.ts.map +1 -0
  259. package/dist/dataset/events.js +30 -0
  260. package/dist/dataset/events.js.map +1 -0
  261. package/dist/dataset/generation-emit.d.ts +72 -0
  262. package/dist/dataset/generation-emit.d.ts.map +1 -0
  263. package/dist/dataset/generation-emit.js +94 -0
  264. package/dist/dataset/generation-emit.js.map +1 -0
  265. package/dist/dataset/redactor.d.ts +22 -0
  266. package/dist/dataset/redactor.d.ts.map +1 -0
  267. package/dist/dataset/redactor.js +68 -0
  268. package/dist/dataset/redactor.js.map +1 -0
  269. package/dist/dataset/routing.d.ts +17 -0
  270. package/dist/dataset/routing.d.ts.map +1 -0
  271. package/dist/dataset/routing.js +77 -0
  272. package/dist/dataset/routing.js.map +1 -0
  273. package/dist/dataset/summarizers.d.ts +47 -0
  274. package/dist/dataset/summarizers.d.ts.map +1 -0
  275. package/dist/dataset/summarizers.js +98 -0
  276. package/dist/dataset/summarizers.js.map +1 -0
  277. package/dist/dataset/verification.d.ts +29 -0
  278. package/dist/dataset/verification.d.ts.map +1 -0
  279. package/dist/dataset/verification.js +70 -0
  280. package/dist/dataset/verification.js.map +1 -0
  281. package/dist/desktop/budget.d.ts +66 -0
  282. package/dist/desktop/budget.d.ts.map +1 -0
  283. package/dist/desktop/budget.js +159 -0
  284. package/dist/desktop/budget.js.map +1 -0
  285. package/dist/desktop/capability.d.ts +28 -0
  286. package/dist/desktop/capability.d.ts.map +1 -0
  287. package/dist/desktop/capability.js +39 -0
  288. package/dist/desktop/capability.js.map +1 -0
  289. package/dist/desktop/conductor.d.ts +104 -0
  290. package/dist/desktop/conductor.d.ts.map +1 -0
  291. package/dist/desktop/conductor.js +876 -0
  292. package/dist/desktop/conductor.js.map +1 -0
  293. package/dist/desktop/fork-points.d.ts +56 -0
  294. package/dist/desktop/fork-points.d.ts.map +1 -0
  295. package/dist/desktop/fork-points.js +138 -0
  296. package/dist/desktop/fork-points.js.map +1 -0
  297. package/dist/desktop/index.d.ts +22 -0
  298. package/dist/desktop/index.d.ts.map +1 -0
  299. package/dist/desktop/index.js +21 -0
  300. package/dist/desktop/index.js.map +1 -0
  301. package/dist/desktop/perception.d.ts +24 -0
  302. package/dist/desktop/perception.d.ts.map +1 -0
  303. package/dist/desktop/perception.js +106 -0
  304. package/dist/desktop/perception.js.map +1 -0
  305. package/dist/desktop/personas.d.ts +30 -0
  306. package/dist/desktop/personas.d.ts.map +1 -0
  307. package/dist/desktop/personas.js +206 -0
  308. package/dist/desktop/personas.js.map +1 -0
  309. package/dist/desktop/safety.d.ts +86 -0
  310. package/dist/desktop/safety.d.ts.map +1 -0
  311. package/dist/desktop/safety.js +272 -0
  312. package/dist/desktop/safety.js.map +1 -0
  313. package/dist/desktop/screen-key.d.ts +54 -0
  314. package/dist/desktop/screen-key.d.ts.map +1 -0
  315. package/dist/desktop/screen-key.js +187 -0
  316. package/dist/desktop/screen-key.js.map +1 -0
  317. package/dist/desktop/types.d.ts +141 -0
  318. package/dist/desktop/types.d.ts.map +1 -0
  319. package/dist/desktop/types.js +8 -0
  320. package/dist/desktop/types.js.map +1 -0
  321. package/dist/docs/adapter.d.ts +71 -0
  322. package/dist/docs/adapter.d.ts.map +1 -0
  323. package/dist/docs/adapter.js +75 -0
  324. package/dist/docs/adapter.js.map +1 -0
  325. package/dist/docs/content/concepts.d.ts +3 -0
  326. package/dist/docs/content/concepts.d.ts.map +1 -0
  327. package/dist/docs/content/concepts.js +304 -0
  328. package/dist/docs/content/concepts.js.map +1 -0
  329. package/dist/docs/content/features.d.ts +3 -0
  330. package/dist/docs/content/features.d.ts.map +1 -0
  331. package/dist/docs/content/features.js +275 -0
  332. package/dist/docs/content/features.js.map +1 -0
  333. package/dist/docs/content/index.d.ts +3 -0
  334. package/dist/docs/content/index.d.ts.map +1 -0
  335. package/dist/docs/content/index.js +15 -0
  336. package/dist/docs/content/index.js.map +1 -0
  337. package/dist/docs/content/reference.d.ts +3 -0
  338. package/dist/docs/content/reference.d.ts.map +1 -0
  339. package/dist/docs/content/reference.js +220 -0
  340. package/dist/docs/content/reference.js.map +1 -0
  341. package/dist/docs/content/start.d.ts +3 -0
  342. package/dist/docs/content/start.d.ts.map +1 -0
  343. package/dist/docs/content/start.js +203 -0
  344. package/dist/docs/content/start.js.map +1 -0
  345. package/dist/docs/content/troubleshooting.d.ts +3 -0
  346. package/dist/docs/content/troubleshooting.d.ts.map +1 -0
  347. package/dist/docs/content/troubleshooting.js +98 -0
  348. package/dist/docs/content/troubleshooting.js.map +1 -0
  349. package/dist/docs/corpus.d.ts +7 -0
  350. package/dist/docs/corpus.d.ts.map +1 -0
  351. package/dist/docs/corpus.js +18 -0
  352. package/dist/docs/corpus.js.map +1 -0
  353. package/dist/docs/data/capabilities.d.ts +24 -0
  354. package/dist/docs/data/capabilities.d.ts.map +1 -0
  355. package/dist/docs/data/capabilities.js +63 -0
  356. package/dist/docs/data/capabilities.js.map +1 -0
  357. package/dist/docs/data/modes.d.ts +11 -0
  358. package/dist/docs/data/modes.d.ts.map +1 -0
  359. package/dist/docs/data/modes.js +60 -0
  360. package/dist/docs/data/modes.js.map +1 -0
  361. package/dist/docs/data/permissions.d.ts +12 -0
  362. package/dist/docs/data/permissions.d.ts.map +1 -0
  363. package/dist/docs/data/permissions.js +62 -0
  364. package/dist/docs/data/permissions.js.map +1 -0
  365. package/dist/docs/data/personas.d.ts +13 -0
  366. package/dist/docs/data/personas.d.ts.map +1 -0
  367. package/dist/docs/data/personas.js +42 -0
  368. package/dist/docs/data/personas.js.map +1 -0
  369. package/dist/docs/data/providers.d.ts +21 -0
  370. package/dist/docs/data/providers.d.ts.map +1 -0
  371. package/dist/docs/data/providers.js +210 -0
  372. package/dist/docs/data/providers.js.map +1 -0
  373. package/dist/docs/data/shortcuts.d.ts +9 -0
  374. package/dist/docs/data/shortcuts.d.ts.map +1 -0
  375. package/dist/docs/data/shortcuts.js +18 -0
  376. package/dist/docs/data/shortcuts.js.map +1 -0
  377. package/dist/docs/data/tasks.d.ts +17 -0
  378. package/dist/docs/data/tasks.d.ts.map +1 -0
  379. package/dist/docs/data/tasks.js +64 -0
  380. package/dist/docs/data/tasks.js.map +1 -0
  381. package/dist/docs/data/tools.d.ts +12 -0
  382. package/dist/docs/data/tools.d.ts.map +1 -0
  383. package/dist/docs/data/tools.js +100 -0
  384. package/dist/docs/data/tools.js.map +1 -0
  385. package/dist/docs/filter.d.ts +35 -0
  386. package/dist/docs/filter.d.ts.map +1 -0
  387. package/dist/docs/filter.js +68 -0
  388. package/dist/docs/filter.js.map +1 -0
  389. package/dist/docs/i18n/translations.d.ts +2 -0
  390. package/dist/docs/i18n/translations.d.ts.map +1 -0
  391. package/dist/docs/i18n/translations.js +4 -0
  392. package/dist/docs/i18n/translations.js.map +1 -0
  393. package/dist/docs/i18n.d.ts +15 -0
  394. package/dist/docs/i18n.d.ts.map +1 -0
  395. package/dist/docs/i18n.js +88 -0
  396. package/dist/docs/i18n.js.map +1 -0
  397. package/dist/docs/index.d.ts +16 -0
  398. package/dist/docs/index.d.ts.map +1 -0
  399. package/dist/docs/index.js +15 -0
  400. package/dist/docs/index.js.map +1 -0
  401. package/dist/docs/product-knowledge.d.ts +45 -0
  402. package/dist/docs/product-knowledge.d.ts.map +1 -0
  403. package/dist/docs/product-knowledge.js +147 -0
  404. package/dist/docs/product-knowledge.js.map +1 -0
  405. package/dist/docs/types.d.ts +138 -0
  406. package/dist/docs/types.d.ts.map +1 -0
  407. package/dist/docs/types.js +14 -0
  408. package/dist/docs/types.js.map +1 -0
  409. package/dist/events/event-detector.d.ts +39 -0
  410. package/dist/events/event-detector.d.ts.map +1 -0
  411. package/dist/events/event-detector.js +223 -0
  412. package/dist/events/event-detector.js.map +1 -0
  413. package/dist/events/index.d.ts +3 -0
  414. package/dist/events/index.d.ts.map +1 -0
  415. package/dist/events/index.js +2 -0
  416. package/dist/events/index.js.map +1 -0
  417. package/dist/events/types.d.ts +35 -0
  418. package/dist/events/types.d.ts.map +1 -0
  419. package/dist/events/types.js +8 -0
  420. package/dist/events/types.js.map +1 -0
  421. package/dist/exercises/index.d.ts +249 -0
  422. package/dist/exercises/index.d.ts.map +1 -0
  423. package/dist/exercises/index.js +181 -0
  424. package/dist/exercises/index.js.map +1 -0
  425. package/dist/health/aisles.d.ts +33 -0
  426. package/dist/health/aisles.d.ts.map +1 -0
  427. package/dist/health/aisles.js +417 -0
  428. package/dist/health/aisles.js.map +1 -0
  429. package/dist/health/cooking.d.ts +13 -0
  430. package/dist/health/cooking.d.ts.map +1 -0
  431. package/dist/health/cooking.js +19 -0
  432. package/dist/health/cooking.js.map +1 -0
  433. package/dist/health/duplicate.d.ts +47 -0
  434. package/dist/health/duplicate.d.ts.map +1 -0
  435. package/dist/health/duplicate.js +136 -0
  436. package/dist/health/duplicate.js.map +1 -0
  437. package/dist/health/index.d.ts +7 -0
  438. package/dist/health/index.d.ts.map +1 -0
  439. package/dist/health/index.js +10 -0
  440. package/dist/health/index.js.map +1 -0
  441. package/dist/health/node-store.d.ts +30 -0
  442. package/dist/health/node-store.d.ts.map +1 -0
  443. package/dist/health/node-store.js +250 -0
  444. package/dist/health/node-store.js.map +1 -0
  445. package/dist/health/prep.d.ts +86 -0
  446. package/dist/health/prep.d.ts.map +1 -0
  447. package/dist/health/prep.js +152 -0
  448. package/dist/health/prep.js.map +1 -0
  449. package/dist/health/profile-fields.d.ts +46 -0
  450. package/dist/health/profile-fields.d.ts.map +1 -0
  451. package/dist/health/profile-fields.js +194 -0
  452. package/dist/health/profile-fields.js.map +1 -0
  453. package/dist/health/session-store.d.ts +30 -0
  454. package/dist/health/session-store.d.ts.map +1 -0
  455. package/dist/health/session-store.js +20 -0
  456. package/dist/health/session-store.js.map +1 -0
  457. package/dist/health/session-summary.d.ts +10 -0
  458. package/dist/health/session-summary.d.ts.map +1 -0
  459. package/dist/health/session-summary.js +106 -0
  460. package/dist/health/session-summary.js.map +1 -0
  461. package/dist/health/session-types.d.ts +74 -0
  462. package/dist/health/session-types.d.ts.map +1 -0
  463. package/dist/health/session-types.js +53 -0
  464. package/dist/health/session-types.js.map +1 -0
  465. package/dist/health/shopping-list.d.ts +226 -0
  466. package/dist/health/shopping-list.d.ts.map +1 -0
  467. package/dist/health/shopping-list.js +432 -0
  468. package/dist/health/shopping-list.js.map +1 -0
  469. package/dist/health/starters.d.ts +155 -0
  470. package/dist/health/starters.d.ts.map +1 -0
  471. package/dist/health/starters.js +270 -0
  472. package/dist/health/starters.js.map +1 -0
  473. package/dist/health/store.d.ts +59 -0
  474. package/dist/health/store.d.ts.map +1 -0
  475. package/dist/health/store.js +17 -0
  476. package/dist/health/store.js.map +1 -0
  477. package/dist/health/types.d.ts +213 -0
  478. package/dist/health/types.d.ts.map +1 -0
  479. package/dist/health/types.js +11 -0
  480. package/dist/health/types.js.map +1 -0
  481. package/dist/history/conversation-title.d.ts +67 -0
  482. package/dist/history/conversation-title.d.ts.map +1 -0
  483. package/dist/history/conversation-title.js +184 -0
  484. package/dist/history/conversation-title.js.map +1 -0
  485. package/dist/history/history-manager.d.ts +50 -0
  486. package/dist/history/history-manager.d.ts.map +1 -0
  487. package/dist/history/history-manager.js +168 -0
  488. package/dist/history/history-manager.js.map +1 -0
  489. package/dist/history/storage.d.ts +41 -0
  490. package/dist/history/storage.d.ts.map +1 -0
  491. package/dist/history/storage.js +133 -0
  492. package/dist/history/storage.js.map +1 -0
  493. package/dist/i18n/index.d.ts +41 -0
  494. package/dist/i18n/index.d.ts.map +1 -0
  495. package/dist/i18n/index.js +188 -0
  496. package/dist/i18n/index.js.map +1 -0
  497. package/dist/i18n/keep-english.d.ts +12 -0
  498. package/dist/i18n/keep-english.d.ts.map +1 -0
  499. package/dist/i18n/keep-english.js +351 -0
  500. package/dist/i18n/keep-english.js.map +1 -0
  501. package/dist/i18n/locales/ar.d.ts +4 -0
  502. package/dist/i18n/locales/ar.d.ts.map +1 -0
  503. package/dist/i18n/locales/ar.js +4143 -0
  504. package/dist/i18n/locales/ar.js.map +1 -0
  505. package/dist/i18n/locales/de.d.ts +4 -0
  506. package/dist/i18n/locales/de.d.ts.map +1 -0
  507. package/dist/i18n/locales/de.js +4133 -0
  508. package/dist/i18n/locales/de.js.map +1 -0
  509. package/dist/i18n/locales/en.d.ts +4068 -0
  510. package/dist/i18n/locales/en.d.ts.map +1 -0
  511. package/dist/i18n/locales/en.js +4347 -0
  512. package/dist/i18n/locales/en.js.map +1 -0
  513. package/dist/i18n/locales/es.d.ts +4 -0
  514. package/dist/i18n/locales/es.d.ts.map +1 -0
  515. package/dist/i18n/locales/es.js +4128 -0
  516. package/dist/i18n/locales/es.js.map +1 -0
  517. package/dist/i18n/locales/fr.d.ts +4 -0
  518. package/dist/i18n/locales/fr.d.ts.map +1 -0
  519. package/dist/i18n/locales/fr.js +4140 -0
  520. package/dist/i18n/locales/fr.js.map +1 -0
  521. package/dist/i18n/locales/hi.d.ts +4 -0
  522. package/dist/i18n/locales/hi.d.ts.map +1 -0
  523. package/dist/i18n/locales/hi.js +4143 -0
  524. package/dist/i18n/locales/hi.js.map +1 -0
  525. package/dist/i18n/locales/id.d.ts +4 -0
  526. package/dist/i18n/locales/id.d.ts.map +1 -0
  527. package/dist/i18n/locales/id.js +4142 -0
  528. package/dist/i18n/locales/id.js.map +1 -0
  529. package/dist/i18n/locales/it.d.ts +4 -0
  530. package/dist/i18n/locales/it.d.ts.map +1 -0
  531. package/dist/i18n/locales/it.js +4143 -0
  532. package/dist/i18n/locales/it.js.map +1 -0
  533. package/dist/i18n/locales/ja.d.ts +4 -0
  534. package/dist/i18n/locales/ja.d.ts.map +1 -0
  535. package/dist/i18n/locales/ja.js +4144 -0
  536. package/dist/i18n/locales/ja.js.map +1 -0
  537. package/dist/i18n/locales/ko.d.ts +4 -0
  538. package/dist/i18n/locales/ko.d.ts.map +1 -0
  539. package/dist/i18n/locales/ko.js +4143 -0
  540. package/dist/i18n/locales/ko.js.map +1 -0
  541. package/dist/i18n/locales/nl.d.ts +4 -0
  542. package/dist/i18n/locales/nl.d.ts.map +1 -0
  543. package/dist/i18n/locales/nl.js +4143 -0
  544. package/dist/i18n/locales/nl.js.map +1 -0
  545. package/dist/i18n/locales/pl.d.ts +4 -0
  546. package/dist/i18n/locales/pl.d.ts.map +1 -0
  547. package/dist/i18n/locales/pl.js +4133 -0
  548. package/dist/i18n/locales/pl.js.map +1 -0
  549. package/dist/i18n/locales/pt.d.ts +4 -0
  550. package/dist/i18n/locales/pt.d.ts.map +1 -0
  551. package/dist/i18n/locales/pt.js +4141 -0
  552. package/dist/i18n/locales/pt.js.map +1 -0
  553. package/dist/i18n/locales/ru.d.ts +4 -0
  554. package/dist/i18n/locales/ru.d.ts.map +1 -0
  555. package/dist/i18n/locales/ru.js +4143 -0
  556. package/dist/i18n/locales/ru.js.map +1 -0
  557. package/dist/i18n/locales/th.d.ts +4 -0
  558. package/dist/i18n/locales/th.d.ts.map +1 -0
  559. package/dist/i18n/locales/th.js +4143 -0
  560. package/dist/i18n/locales/th.js.map +1 -0
  561. package/dist/i18n/locales/tr.d.ts +4 -0
  562. package/dist/i18n/locales/tr.d.ts.map +1 -0
  563. package/dist/i18n/locales/tr.js +4143 -0
  564. package/dist/i18n/locales/tr.js.map +1 -0
  565. package/dist/i18n/locales/uk.d.ts +4 -0
  566. package/dist/i18n/locales/uk.d.ts.map +1 -0
  567. package/dist/i18n/locales/uk.js +4133 -0
  568. package/dist/i18n/locales/uk.js.map +1 -0
  569. package/dist/i18n/locales/vi.d.ts +4 -0
  570. package/dist/i18n/locales/vi.d.ts.map +1 -0
  571. package/dist/i18n/locales/vi.js +4143 -0
  572. package/dist/i18n/locales/vi.js.map +1 -0
  573. package/dist/i18n/locales/zh-CN.d.ts +4 -0
  574. package/dist/i18n/locales/zh-CN.d.ts.map +1 -0
  575. package/dist/i18n/locales/zh-CN.js +4133 -0
  576. package/dist/i18n/locales/zh-CN.js.map +1 -0
  577. package/dist/i18n/locales/zh-TW.d.ts +4 -0
  578. package/dist/i18n/locales/zh-TW.d.ts.map +1 -0
  579. package/dist/i18n/locales/zh-TW.js +4143 -0
  580. package/dist/i18n/locales/zh-TW.js.map +1 -0
  581. package/dist/i18n/types.d.ts +5 -0
  582. package/dist/i18n/types.d.ts.map +1 -0
  583. package/dist/i18n/types.js +46 -0
  584. package/dist/i18n/types.js.map +1 -0
  585. package/dist/index.d.ts +142 -0
  586. package/dist/index.d.ts.map +1 -0
  587. package/dist/index.js +159 -0
  588. package/dist/index.js.map +1 -0
  589. package/dist/indexer/project-indexer.d.ts +66 -0
  590. package/dist/indexer/project-indexer.d.ts.map +1 -0
  591. package/dist/indexer/project-indexer.js +574 -0
  592. package/dist/indexer/project-indexer.js.map +1 -0
  593. package/dist/indexer/symbol-indexer.d.ts +56 -0
  594. package/dist/indexer/symbol-indexer.d.ts.map +1 -0
  595. package/dist/indexer/symbol-indexer.js +579 -0
  596. package/dist/indexer/symbol-indexer.js.map +1 -0
  597. package/dist/journal/journal-manager.d.ts +143 -0
  598. package/dist/journal/journal-manager.d.ts.map +1 -0
  599. package/dist/journal/journal-manager.js +472 -0
  600. package/dist/journal/journal-manager.js.map +1 -0
  601. package/dist/journal/platform-sync.d.ts +17 -0
  602. package/dist/journal/platform-sync.d.ts.map +1 -0
  603. package/dist/journal/platform-sync.js +21 -0
  604. package/dist/journal/platform-sync.js.map +1 -0
  605. package/dist/journal/types.d.ts +78 -0
  606. package/dist/journal/types.d.ts.map +1 -0
  607. package/dist/journal/types.js +74 -0
  608. package/dist/journal/types.js.map +1 -0
  609. package/dist/knowledge/index.d.ts +2 -0
  610. package/dist/knowledge/index.d.ts.map +1 -0
  611. package/dist/knowledge/index.js +2 -0
  612. package/dist/knowledge/index.js.map +1 -0
  613. package/dist/learning/index.d.ts +6 -0
  614. package/dist/learning/index.d.ts.map +1 -0
  615. package/dist/learning/index.js +9 -0
  616. package/dist/learning/index.js.map +1 -0
  617. package/dist/learning/learner-context.d.ts +11 -0
  618. package/dist/learning/learner-context.d.ts.map +1 -0
  619. package/dist/learning/learner-context.js +57 -0
  620. package/dist/learning/learner-context.js.map +1 -0
  621. package/dist/learning/library-fork.d.ts +33 -0
  622. package/dist/learning/library-fork.d.ts.map +1 -0
  623. package/dist/learning/library-fork.js +92 -0
  624. package/dist/learning/library-fork.js.map +1 -0
  625. package/dist/learning/progression-export.d.ts +4 -0
  626. package/dist/learning/progression-export.d.ts.map +1 -0
  627. package/dist/learning/progression-export.js +21 -0
  628. package/dist/learning/progression-export.js.map +1 -0
  629. package/dist/learning/progression-markdown.d.ts +14 -0
  630. package/dist/learning/progression-markdown.d.ts.map +1 -0
  631. package/dist/learning/progression-markdown.js +73 -0
  632. package/dist/learning/progression-markdown.js.map +1 -0
  633. package/dist/learning/progression.d.ts +65 -0
  634. package/dist/learning/progression.d.ts.map +1 -0
  635. package/dist/learning/progression.js +186 -0
  636. package/dist/learning/progression.js.map +1 -0
  637. package/dist/memory/ambient-capture.d.ts +26 -0
  638. package/dist/memory/ambient-capture.d.ts.map +1 -0
  639. package/dist/memory/ambient-capture.js +174 -0
  640. package/dist/memory/ambient-capture.js.map +1 -0
  641. package/dist/memory/auto-extract.d.ts +54 -0
  642. package/dist/memory/auto-extract.d.ts.map +1 -0
  643. package/dist/memory/auto-extract.js +499 -0
  644. package/dist/memory/auto-extract.js.map +1 -0
  645. package/dist/memory/config.d.ts +47 -0
  646. package/dist/memory/config.d.ts.map +1 -0
  647. package/dist/memory/config.js +52 -0
  648. package/dist/memory/config.js.map +1 -0
  649. package/dist/memory/consolidation.d.ts +60 -0
  650. package/dist/memory/consolidation.d.ts.map +1 -0
  651. package/dist/memory/consolidation.js +311 -0
  652. package/dist/memory/consolidation.js.map +1 -0
  653. package/dist/memory/embedding-service.d.ts +50 -0
  654. package/dist/memory/embedding-service.d.ts.map +1 -0
  655. package/dist/memory/embedding-service.js +86 -0
  656. package/dist/memory/embedding-service.js.map +1 -0
  657. package/dist/memory/embedding-store.d.ts +31 -0
  658. package/dist/memory/embedding-store.d.ts.map +1 -0
  659. package/dist/memory/embedding-store.js +109 -0
  660. package/dist/memory/embedding-store.js.map +1 -0
  661. package/dist/memory/graph-engine.d.ts +145 -0
  662. package/dist/memory/graph-engine.d.ts.map +1 -0
  663. package/dist/memory/graph-engine.js +628 -0
  664. package/dist/memory/graph-engine.js.map +1 -0
  665. package/dist/memory/insights.d.ts +39 -0
  666. package/dist/memory/insights.d.ts.map +1 -0
  667. package/dist/memory/insights.js +138 -0
  668. package/dist/memory/insights.js.map +1 -0
  669. package/dist/memory/memory-agent.d.ts +93 -0
  670. package/dist/memory/memory-agent.d.ts.map +1 -0
  671. package/dist/memory/memory-agent.js +475 -0
  672. package/dist/memory/memory-agent.js.map +1 -0
  673. package/dist/memory/memory-manager.d.ts +232 -0
  674. package/dist/memory/memory-manager.d.ts.map +1 -0
  675. package/dist/memory/memory-manager.js +1633 -0
  676. package/dist/memory/memory-manager.js.map +1 -0
  677. package/dist/memory/migration-v3.d.ts +22 -0
  678. package/dist/memory/migration-v3.d.ts.map +1 -0
  679. package/dist/memory/migration-v3.js +193 -0
  680. package/dist/memory/migration-v3.js.map +1 -0
  681. package/dist/memory/mode-recall.d.ts +20 -0
  682. package/dist/memory/mode-recall.d.ts.map +1 -0
  683. package/dist/memory/mode-recall.js +104 -0
  684. package/dist/memory/mode-recall.js.map +1 -0
  685. package/dist/memory/patterns.d.ts +92 -0
  686. package/dist/memory/patterns.d.ts.map +1 -0
  687. package/dist/memory/patterns.js +389 -0
  688. package/dist/memory/patterns.js.map +1 -0
  689. package/dist/memory/platform-sync.d.ts +54 -0
  690. package/dist/memory/platform-sync.d.ts.map +1 -0
  691. package/dist/memory/platform-sync.js +176 -0
  692. package/dist/memory/platform-sync.js.map +1 -0
  693. package/dist/memory/procedural.d.ts +47 -0
  694. package/dist/memory/procedural.d.ts.map +1 -0
  695. package/dist/memory/procedural.js +182 -0
  696. package/dist/memory/procedural.js.map +1 -0
  697. package/dist/memory/project-brain.d.ts +27 -0
  698. package/dist/memory/project-brain.d.ts.map +1 -0
  699. package/dist/memory/project-brain.js +158 -0
  700. package/dist/memory/project-brain.js.map +1 -0
  701. package/dist/memory/self-improvement.d.ts +45 -0
  702. package/dist/memory/self-improvement.d.ts.map +1 -0
  703. package/dist/memory/self-improvement.js +178 -0
  704. package/dist/memory/self-improvement.js.map +1 -0
  705. package/dist/memory/tfidf.d.ts +71 -0
  706. package/dist/memory/tfidf.d.ts.map +1 -0
  707. package/dist/memory/tfidf.js +223 -0
  708. package/dist/memory/tfidf.js.map +1 -0
  709. package/dist/memory/training-export.d.ts +51 -0
  710. package/dist/memory/training-export.d.ts.map +1 -0
  711. package/dist/memory/training-export.js +122 -0
  712. package/dist/memory/training-export.js.map +1 -0
  713. package/dist/memory/types.d.ts +380 -0
  714. package/dist/memory/types.d.ts.map +1 -0
  715. package/dist/memory/types.js +99 -0
  716. package/dist/memory/types.js.map +1 -0
  717. package/dist/news/index.d.ts +163 -0
  718. package/dist/news/index.d.ts.map +1 -0
  719. package/dist/news/index.js +184 -0
  720. package/dist/news/index.js.map +1 -0
  721. package/dist/papers/arxiv-client.d.ts +21 -0
  722. package/dist/papers/arxiv-client.d.ts.map +1 -0
  723. package/dist/papers/arxiv-client.js +130 -0
  724. package/dist/papers/arxiv-client.js.map +1 -0
  725. package/dist/papers/crossref-client.d.ts +3 -0
  726. package/dist/papers/crossref-client.d.ts.map +1 -0
  727. package/dist/papers/crossref-client.js +96 -0
  728. package/dist/papers/crossref-client.js.map +1 -0
  729. package/dist/papers/discipline.d.ts +19 -0
  730. package/dist/papers/discipline.d.ts.map +1 -0
  731. package/dist/papers/discipline.js +96 -0
  732. package/dist/papers/discipline.js.map +1 -0
  733. package/dist/papers/index.d.ts +10 -0
  734. package/dist/papers/index.d.ts.map +1 -0
  735. package/dist/papers/index.js +7 -0
  736. package/dist/papers/index.js.map +1 -0
  737. package/dist/papers/openalex-client.d.ts +13 -0
  738. package/dist/papers/openalex-client.d.ts.map +1 -0
  739. package/dist/papers/openalex-client.js +206 -0
  740. package/dist/papers/openalex-client.js.map +1 -0
  741. package/dist/papers/paper-fetcher.d.ts +37 -0
  742. package/dist/papers/paper-fetcher.d.ts.map +1 -0
  743. package/dist/papers/paper-fetcher.js +75 -0
  744. package/dist/papers/paper-fetcher.js.map +1 -0
  745. package/dist/papers/types.d.ts +80 -0
  746. package/dist/papers/types.d.ts.map +1 -0
  747. package/dist/papers/types.js +25 -0
  748. package/dist/papers/types.js.map +1 -0
  749. package/dist/personas/conductor.d.ts +184 -0
  750. package/dist/personas/conductor.d.ts.map +1 -0
  751. package/dist/personas/conductor.js +871 -0
  752. package/dist/personas/conductor.js.map +1 -0
  753. package/dist/personas/definitions.d.ts +48 -0
  754. package/dist/personas/definitions.d.ts.map +1 -0
  755. package/dist/personas/definitions.js +828 -0
  756. package/dist/personas/definitions.js.map +1 -0
  757. package/dist/personas/index.d.ts +4 -0
  758. package/dist/personas/index.d.ts.map +1 -0
  759. package/dist/personas/index.js +3 -0
  760. package/dist/personas/index.js.map +1 -0
  761. package/dist/personas/types.d.ts +148 -0
  762. package/dist/personas/types.d.ts.map +1 -0
  763. package/dist/personas/types.js +5 -0
  764. package/dist/personas/types.js.map +1 -0
  765. package/dist/personas/verification-matrix.d.ts +44 -0
  766. package/dist/personas/verification-matrix.d.ts.map +1 -0
  767. package/dist/personas/verification-matrix.js +232 -0
  768. package/dist/personas/verification-matrix.js.map +1 -0
  769. package/dist/portability/bundle.d.ts +80 -0
  770. package/dist/portability/bundle.d.ts.map +1 -0
  771. package/dist/portability/bundle.js +155 -0
  772. package/dist/portability/bundle.js.map +1 -0
  773. package/dist/portability/crypto.d.ts +42 -0
  774. package/dist/portability/crypto.d.ts.map +1 -0
  775. package/dist/portability/crypto.js +89 -0
  776. package/dist/portability/crypto.js.map +1 -0
  777. package/dist/portability/data-types.d.ts +54 -0
  778. package/dist/portability/data-types.d.ts.map +1 -0
  779. package/dist/portability/data-types.js +281 -0
  780. package/dist/portability/data-types.js.map +1 -0
  781. package/dist/portability/index.d.ts +35 -0
  782. package/dist/portability/index.d.ts.map +1 -0
  783. package/dist/portability/index.js +41 -0
  784. package/dist/portability/index.js.map +1 -0
  785. package/dist/providers/base-provider.d.ts +65 -0
  786. package/dist/providers/base-provider.d.ts.map +1 -0
  787. package/dist/providers/base-provider.js +305 -0
  788. package/dist/providers/base-provider.js.map +1 -0
  789. package/dist/providers/catalog.d.ts +25 -0
  790. package/dist/providers/catalog.d.ts.map +1 -0
  791. package/dist/providers/catalog.js +53 -0
  792. package/dist/providers/catalog.js.map +1 -0
  793. package/dist/providers/deepseek/index.d.ts +9 -0
  794. package/dist/providers/deepseek/index.d.ts.map +1 -0
  795. package/dist/providers/deepseek/index.js +19 -0
  796. package/dist/providers/deepseek/index.js.map +1 -0
  797. package/dist/providers/deepseek/models.d.ts +3 -0
  798. package/dist/providers/deepseek/models.d.ts.map +1 -0
  799. package/dist/providers/deepseek/models.js +56 -0
  800. package/dist/providers/deepseek/models.js.map +1 -0
  801. package/dist/providers/generic/index.d.ts +25 -0
  802. package/dist/providers/generic/index.d.ts.map +1 -0
  803. package/dist/providers/generic/index.js +51 -0
  804. package/dist/providers/generic/index.js.map +1 -0
  805. package/dist/providers/generic/models.d.ts +3 -0
  806. package/dist/providers/generic/models.d.ts.map +1 -0
  807. package/dist/providers/generic/models.js +13 -0
  808. package/dist/providers/generic/models.js.map +1 -0
  809. package/dist/providers/health-tracker.d.ts +44 -0
  810. package/dist/providers/health-tracker.d.ts.map +1 -0
  811. package/dist/providers/health-tracker.js +110 -0
  812. package/dist/providers/health-tracker.js.map +1 -0
  813. package/dist/providers/kimi/index.d.ts +9 -0
  814. package/dist/providers/kimi/index.d.ts.map +1 -0
  815. package/dist/providers/kimi/index.js +13 -0
  816. package/dist/providers/kimi/index.js.map +1 -0
  817. package/dist/providers/kimi/models.d.ts +3 -0
  818. package/dist/providers/kimi/models.d.ts.map +1 -0
  819. package/dist/providers/kimi/models.js +60 -0
  820. package/dist/providers/kimi/models.js.map +1 -0
  821. package/dist/providers/minimax/index.d.ts +9 -0
  822. package/dist/providers/minimax/index.d.ts.map +1 -0
  823. package/dist/providers/minimax/index.js +13 -0
  824. package/dist/providers/minimax/index.js.map +1 -0
  825. package/dist/providers/minimax/models.d.ts +3 -0
  826. package/dist/providers/minimax/models.d.ts.map +1 -0
  827. package/dist/providers/minimax/models.js +65 -0
  828. package/dist/providers/minimax/models.js.map +1 -0
  829. package/dist/providers/mistral/index.d.ts +11 -0
  830. package/dist/providers/mistral/index.d.ts.map +1 -0
  831. package/dist/providers/mistral/index.js +24 -0
  832. package/dist/providers/mistral/index.js.map +1 -0
  833. package/dist/providers/mistral/models.d.ts +3 -0
  834. package/dist/providers/mistral/models.d.ts.map +1 -0
  835. package/dist/providers/mistral/models.js +65 -0
  836. package/dist/providers/mistral/models.js.map +1 -0
  837. package/dist/providers/nvidia/index.d.ts +16 -0
  838. package/dist/providers/nvidia/index.d.ts.map +1 -0
  839. package/dist/providers/nvidia/index.js +20 -0
  840. package/dist/providers/nvidia/index.js.map +1 -0
  841. package/dist/providers/nvidia/models.d.ts +3 -0
  842. package/dist/providers/nvidia/models.d.ts.map +1 -0
  843. package/dist/providers/nvidia/models.js +56 -0
  844. package/dist/providers/nvidia/models.js.map +1 -0
  845. package/dist/providers/platform/index.d.ts +10 -0
  846. package/dist/providers/platform/index.d.ts.map +1 -0
  847. package/dist/providers/platform/index.js +16 -0
  848. package/dist/providers/platform/index.js.map +1 -0
  849. package/dist/providers/platform/models.d.ts +3 -0
  850. package/dist/providers/platform/models.d.ts.map +1 -0
  851. package/dist/providers/platform/models.js +233 -0
  852. package/dist/providers/platform/models.js.map +1 -0
  853. package/dist/providers/provider-registry.d.ts +44 -0
  854. package/dist/providers/provider-registry.d.ts.map +1 -0
  855. package/dist/providers/provider-registry.js +197 -0
  856. package/dist/providers/provider-registry.js.map +1 -0
  857. package/dist/providers/qwen/index.d.ts +9 -0
  858. package/dist/providers/qwen/index.d.ts.map +1 -0
  859. package/dist/providers/qwen/index.js +13 -0
  860. package/dist/providers/qwen/index.js.map +1 -0
  861. package/dist/providers/qwen/models.d.ts +3 -0
  862. package/dist/providers/qwen/models.d.ts.map +1 -0
  863. package/dist/providers/qwen/models.js +164 -0
  864. package/dist/providers/qwen/models.js.map +1 -0
  865. package/dist/providers/request-shaping/index.d.ts +29 -0
  866. package/dist/providers/request-shaping/index.d.ts.map +1 -0
  867. package/dist/providers/request-shaping/index.js +31 -0
  868. package/dist/providers/request-shaping/index.js.map +1 -0
  869. package/dist/providers/request-shaping/messages.d.ts +61 -0
  870. package/dist/providers/request-shaping/messages.d.ts.map +1 -0
  871. package/dist/providers/request-shaping/messages.js +114 -0
  872. package/dist/providers/request-shaping/messages.js.map +1 -0
  873. package/dist/providers/request-shaping/model-ids.d.ts +44 -0
  874. package/dist/providers/request-shaping/model-ids.d.ts.map +1 -0
  875. package/dist/providers/request-shaping/model-ids.js +96 -0
  876. package/dist/providers/request-shaping/model-ids.js.map +1 -0
  877. package/dist/providers/request-shaping/params.d.ts +38 -0
  878. package/dist/providers/request-shaping/params.d.ts.map +1 -0
  879. package/dist/providers/request-shaping/params.js +79 -0
  880. package/dist/providers/request-shaping/params.js.map +1 -0
  881. package/dist/providers/resilient-provider.d.ts +44 -0
  882. package/dist/providers/resilient-provider.d.ts.map +1 -0
  883. package/dist/providers/resilient-provider.js +141 -0
  884. package/dist/providers/resilient-provider.js.map +1 -0
  885. package/dist/providers/tencent/index.d.ts +19 -0
  886. package/dist/providers/tencent/index.d.ts.map +1 -0
  887. package/dist/providers/tencent/index.js +50 -0
  888. package/dist/providers/tencent/index.js.map +1 -0
  889. package/dist/providers/tencent/models.d.ts +3 -0
  890. package/dist/providers/tencent/models.d.ts.map +1 -0
  891. package/dist/providers/tencent/models.js +29 -0
  892. package/dist/providers/tencent/models.js.map +1 -0
  893. package/dist/providers/types.d.ts +98 -0
  894. package/dist/providers/types.d.ts.map +1 -0
  895. package/dist/providers/types.js +2 -0
  896. package/dist/providers/types.js.map +1 -0
  897. package/dist/providers/xiaomi/index.d.ts +9 -0
  898. package/dist/providers/xiaomi/index.d.ts.map +1 -0
  899. package/dist/providers/xiaomi/index.js +16 -0
  900. package/dist/providers/xiaomi/index.js.map +1 -0
  901. package/dist/providers/xiaomi/models.d.ts +3 -0
  902. package/dist/providers/xiaomi/models.d.ts.map +1 -0
  903. package/dist/providers/xiaomi/models.js +37 -0
  904. package/dist/providers/xiaomi/models.js.map +1 -0
  905. package/dist/providers/zhipu/index.d.ts +11 -0
  906. package/dist/providers/zhipu/index.d.ts.map +1 -0
  907. package/dist/providers/zhipu/index.js +44 -0
  908. package/dist/providers/zhipu/index.js.map +1 -0
  909. package/dist/providers/zhipu/models.d.ts +3 -0
  910. package/dist/providers/zhipu/models.d.ts.map +1 -0
  911. package/dist/providers/zhipu/models.js +37 -0
  912. package/dist/providers/zhipu/models.js.map +1 -0
  913. package/dist/recipes/index.d.ts +215 -0
  914. package/dist/recipes/index.d.ts.map +1 -0
  915. package/dist/recipes/index.js +232 -0
  916. package/dist/recipes/index.js.map +1 -0
  917. package/dist/remote/client.d.ts +67 -0
  918. package/dist/remote/client.d.ts.map +1 -0
  919. package/dist/remote/client.js +202 -0
  920. package/dist/remote/client.js.map +1 -0
  921. package/dist/remote/index.d.ts +9 -0
  922. package/dist/remote/index.d.ts.map +1 -0
  923. package/dist/remote/index.js +7 -0
  924. package/dist/remote/index.js.map +1 -0
  925. package/dist/remote/schema.d.ts +152 -0
  926. package/dist/remote/schema.d.ts.map +1 -0
  927. package/dist/remote/schema.js +26 -0
  928. package/dist/remote/schema.js.map +1 -0
  929. package/dist/security/index.d.ts +6 -0
  930. package/dist/security/index.d.ts.map +1 -0
  931. package/dist/security/index.js +5 -0
  932. package/dist/security/index.js.map +1 -0
  933. package/dist/security/scanner.d.ts +67 -0
  934. package/dist/security/scanner.d.ts.map +1 -0
  935. package/dist/security/scanner.js +422 -0
  936. package/dist/security/scanner.js.map +1 -0
  937. package/dist/social/day-plan.d.ts +38 -0
  938. package/dist/social/day-plan.d.ts.map +1 -0
  939. package/dist/social/day-plan.js +16 -0
  940. package/dist/social/day-plan.js.map +1 -0
  941. package/dist/social/index.d.ts +290 -0
  942. package/dist/social/index.d.ts.map +1 -0
  943. package/dist/social/index.js +96 -0
  944. package/dist/social/index.js.map +1 -0
  945. package/dist/tasks/platform-sync.d.ts +22 -0
  946. package/dist/tasks/platform-sync.d.ts.map +1 -0
  947. package/dist/tasks/platform-sync.js +132 -0
  948. package/dist/tasks/platform-sync.js.map +1 -0
  949. package/dist/tasks/task-manager.d.ts +164 -0
  950. package/dist/tasks/task-manager.d.ts.map +1 -0
  951. package/dist/tasks/task-manager.js +643 -0
  952. package/dist/tasks/task-manager.js.map +1 -0
  953. package/dist/tasks/types.d.ts +105 -0
  954. package/dist/tasks/types.d.ts.map +1 -0
  955. package/dist/tasks/types.js +23 -0
  956. package/dist/tasks/types.js.map +1 -0
  957. package/dist/tools/analyze-architecture.d.ts +17 -0
  958. package/dist/tools/analyze-architecture.d.ts.map +1 -0
  959. package/dist/tools/analyze-architecture.js +316 -0
  960. package/dist/tools/analyze-architecture.js.map +1 -0
  961. package/dist/tools/apply-plan.d.ts +12 -0
  962. package/dist/tools/apply-plan.d.ts.map +1 -0
  963. package/dist/tools/apply-plan.js +119 -0
  964. package/dist/tools/apply-plan.js.map +1 -0
  965. package/dist/tools/ask-user.d.ts +11 -0
  966. package/dist/tools/ask-user.d.ts.map +1 -0
  967. package/dist/tools/ask-user.js +32 -0
  968. package/dist/tools/ask-user.js.map +1 -0
  969. package/dist/tools/audit-dependencies.d.ts +13 -0
  970. package/dist/tools/audit-dependencies.d.ts.map +1 -0
  971. package/dist/tools/audit-dependencies.js +156 -0
  972. package/dist/tools/audit-dependencies.js.map +1 -0
  973. package/dist/tools/authoring/doc-model.d.ts +128 -0
  974. package/dist/tools/authoring/doc-model.d.ts.map +1 -0
  975. package/dist/tools/authoring/doc-model.js +82 -0
  976. package/dist/tools/authoring/doc-model.js.map +1 -0
  977. package/dist/tools/authoring/frontmatter.d.ts +51 -0
  978. package/dist/tools/authoring/frontmatter.d.ts.map +1 -0
  979. package/dist/tools/authoring/frontmatter.js +203 -0
  980. package/dist/tools/authoring/frontmatter.js.map +1 -0
  981. package/dist/tools/authoring/image-size.d.ts +17 -0
  982. package/dist/tools/authoring/image-size.d.ts.map +1 -0
  983. package/dist/tools/authoring/image-size.js +47 -0
  984. package/dist/tools/authoring/image-size.js.map +1 -0
  985. package/dist/tools/authoring/index.d.ts +34 -0
  986. package/dist/tools/authoring/index.d.ts.map +1 -0
  987. package/dist/tools/authoring/index.js +44 -0
  988. package/dist/tools/authoring/index.js.map +1 -0
  989. package/dist/tools/authoring/md-parse.d.ts +18 -0
  990. package/dist/tools/authoring/md-parse.d.ts.map +1 -0
  991. package/dist/tools/authoring/md-parse.js +262 -0
  992. package/dist/tools/authoring/md-parse.js.map +1 -0
  993. package/dist/tools/authoring/render-docx.d.ts +18 -0
  994. package/dist/tools/authoring/render-docx.d.ts.map +1 -0
  995. package/dist/tools/authoring/render-docx.js +272 -0
  996. package/dist/tools/authoring/render-docx.js.map +1 -0
  997. package/dist/tools/authoring/render-md.d.ts +13 -0
  998. package/dist/tools/authoring/render-md.d.ts.map +1 -0
  999. package/dist/tools/authoring/render-md.js +139 -0
  1000. package/dist/tools/authoring/render-md.js.map +1 -0
  1001. package/dist/tools/authoring/render-pdf.d.ts +16 -0
  1002. package/dist/tools/authoring/render-pdf.d.ts.map +1 -0
  1003. package/dist/tools/authoring/render-pdf.js +298 -0
  1004. package/dist/tools/authoring/render-pdf.js.map +1 -0
  1005. package/dist/tools/authoring/sections.d.ts +35 -0
  1006. package/dist/tools/authoring/sections.d.ts.map +1 -0
  1007. package/dist/tools/authoring/sections.js +81 -0
  1008. package/dist/tools/authoring/sections.js.map +1 -0
  1009. package/dist/tools/authoring/templates/builtins.d.ts +11 -0
  1010. package/dist/tools/authoring/templates/builtins.d.ts.map +1 -0
  1011. package/dist/tools/authoring/templates/builtins.js +478 -0
  1012. package/dist/tools/authoring/templates/builtins.js.map +1 -0
  1013. package/dist/tools/authoring/templates/index.d.ts +15 -0
  1014. package/dist/tools/authoring/templates/index.d.ts.map +1 -0
  1015. package/dist/tools/authoring/templates/index.js +25 -0
  1016. package/dist/tools/authoring/templates/index.js.map +1 -0
  1017. package/dist/tools/authoring/templates/store.d.ts +15 -0
  1018. package/dist/tools/authoring/templates/store.d.ts.map +1 -0
  1019. package/dist/tools/authoring/templates/store.js +63 -0
  1020. package/dist/tools/authoring/templates/store.js.map +1 -0
  1021. package/dist/tools/authoring/templates/template-model.d.ts +44 -0
  1022. package/dist/tools/authoring/templates/template-model.d.ts.map +1 -0
  1023. package/dist/tools/authoring/templates/template-model.js +39 -0
  1024. package/dist/tools/authoring/templates/template-model.js.map +1 -0
  1025. package/dist/tools/bash.d.ts +34 -0
  1026. package/dist/tools/bash.d.ts.map +1 -0
  1027. package/dist/tools/bash.js +353 -0
  1028. package/dist/tools/bash.js.map +1 -0
  1029. package/dist/tools/benchmark.d.ts +12 -0
  1030. package/dist/tools/benchmark.d.ts.map +1 -0
  1031. package/dist/tools/benchmark.js +147 -0
  1032. package/dist/tools/benchmark.js.map +1 -0
  1033. package/dist/tools/browse-library.d.ts +12 -0
  1034. package/dist/tools/browse-library.d.ts.map +1 -0
  1035. package/dist/tools/browse-library.js +188 -0
  1036. package/dist/tools/browse-library.js.map +1 -0
  1037. package/dist/tools/browser-click.d.ts +12 -0
  1038. package/dist/tools/browser-click.d.ts.map +1 -0
  1039. package/dist/tools/browser-click.js +58 -0
  1040. package/dist/tools/browser-click.js.map +1 -0
  1041. package/dist/tools/browser-close.d.ts +11 -0
  1042. package/dist/tools/browser-close.d.ts.map +1 -0
  1043. package/dist/tools/browser-close.js +27 -0
  1044. package/dist/tools/browser-close.js.map +1 -0
  1045. package/dist/tools/browser-navigate.d.ts +12 -0
  1046. package/dist/tools/browser-navigate.d.ts.map +1 -0
  1047. package/dist/tools/browser-navigate.js +66 -0
  1048. package/dist/tools/browser-navigate.js.map +1 -0
  1049. package/dist/tools/browser-snapshot.d.ts +11 -0
  1050. package/dist/tools/browser-snapshot.d.ts.map +1 -0
  1051. package/dist/tools/browser-snapshot.js +56 -0
  1052. package/dist/tools/browser-snapshot.js.map +1 -0
  1053. package/dist/tools/browser-type.d.ts +12 -0
  1054. package/dist/tools/browser-type.d.ts.map +1 -0
  1055. package/dist/tools/browser-type.js +68 -0
  1056. package/dist/tools/browser-type.js.map +1 -0
  1057. package/dist/tools/browser.d.ts +29 -0
  1058. package/dist/tools/browser.d.ts.map +1 -0
  1059. package/dist/tools/browser.js +307 -0
  1060. package/dist/tools/browser.js.map +1 -0
  1061. package/dist/tools/conversation-recall.d.ts +43 -0
  1062. package/dist/tools/conversation-recall.d.ts.map +1 -0
  1063. package/dist/tools/conversation-recall.js +177 -0
  1064. package/dist/tools/conversation-recall.js.map +1 -0
  1065. package/dist/tools/creative-asset-sync.d.ts +33 -0
  1066. package/dist/tools/creative-asset-sync.d.ts.map +1 -0
  1067. package/dist/tools/creative-asset-sync.js +39 -0
  1068. package/dist/tools/creative-asset-sync.js.map +1 -0
  1069. package/dist/tools/curator.d.ts +34 -0
  1070. package/dist/tools/curator.d.ts.map +1 -0
  1071. package/dist/tools/curator.js +191 -0
  1072. package/dist/tools/curator.js.map +1 -0
  1073. package/dist/tools/database-query.d.ts +11 -0
  1074. package/dist/tools/database-query.d.ts.map +1 -0
  1075. package/dist/tools/database-query.js +228 -0
  1076. package/dist/tools/database-query.js.map +1 -0
  1077. package/dist/tools/day-plan.d.ts +27 -0
  1078. package/dist/tools/day-plan.d.ts.map +1 -0
  1079. package/dist/tools/day-plan.js +207 -0
  1080. package/dist/tools/day-plan.js.map +1 -0
  1081. package/dist/tools/debug-logs.d.ts +13 -0
  1082. package/dist/tools/debug-logs.d.ts.map +1 -0
  1083. package/dist/tools/debug-logs.js +141 -0
  1084. package/dist/tools/debug-logs.js.map +1 -0
  1085. package/dist/tools/deploy-manifest.d.ts +37 -0
  1086. package/dist/tools/deploy-manifest.d.ts.map +1 -0
  1087. package/dist/tools/deploy-manifest.js +71 -0
  1088. package/dist/tools/deploy-manifest.js.map +1 -0
  1089. package/dist/tools/design-studio-tools.d.ts +83 -0
  1090. package/dist/tools/design-studio-tools.d.ts.map +1 -0
  1091. package/dist/tools/design-studio-tools.js +761 -0
  1092. package/dist/tools/design-studio-tools.js.map +1 -0
  1093. package/dist/tools/desktop-click-by-name.d.ts +12 -0
  1094. package/dist/tools/desktop-click-by-name.d.ts.map +1 -0
  1095. package/dist/tools/desktop-click-by-name.js +64 -0
  1096. package/dist/tools/desktop-click-by-name.js.map +1 -0
  1097. package/dist/tools/desktop-focus-window.d.ts +12 -0
  1098. package/dist/tools/desktop-focus-window.d.ts.map +1 -0
  1099. package/dist/tools/desktop-focus-window.js +59 -0
  1100. package/dist/tools/desktop-focus-window.js.map +1 -0
  1101. package/dist/tools/desktop-key-press.d.ts +12 -0
  1102. package/dist/tools/desktop-key-press.d.ts.map +1 -0
  1103. package/dist/tools/desktop-key-press.js +73 -0
  1104. package/dist/tools/desktop-key-press.js.map +1 -0
  1105. package/dist/tools/desktop-launch-app.d.ts +12 -0
  1106. package/dist/tools/desktop-launch-app.d.ts.map +1 -0
  1107. package/dist/tools/desktop-launch-app.js +58 -0
  1108. package/dist/tools/desktop-launch-app.js.map +1 -0
  1109. package/dist/tools/desktop-list-elements.d.ts +11 -0
  1110. package/dist/tools/desktop-list-elements.d.ts.map +1 -0
  1111. package/dist/tools/desktop-list-elements.js +65 -0
  1112. package/dist/tools/desktop-list-elements.js.map +1 -0
  1113. package/dist/tools/desktop-plan-approve.d.ts +30 -0
  1114. package/dist/tools/desktop-plan-approve.d.ts.map +1 -0
  1115. package/dist/tools/desktop-plan-approve.js +135 -0
  1116. package/dist/tools/desktop-plan-approve.js.map +1 -0
  1117. package/dist/tools/desktop-providers.d.ts +144 -0
  1118. package/dist/tools/desktop-providers.d.ts.map +1 -0
  1119. package/dist/tools/desktop-providers.js +12 -0
  1120. package/dist/tools/desktop-providers.js.map +1 -0
  1121. package/dist/tools/desktop-safety-gate.d.ts +84 -0
  1122. package/dist/tools/desktop-safety-gate.d.ts.map +1 -0
  1123. package/dist/tools/desktop-safety-gate.js +171 -0
  1124. package/dist/tools/desktop-safety-gate.js.map +1 -0
  1125. package/dist/tools/desktop-tools.d.ts +22 -0
  1126. package/dist/tools/desktop-tools.d.ts.map +1 -0
  1127. package/dist/tools/desktop-tools.js +71 -0
  1128. package/dist/tools/desktop-tools.js.map +1 -0
  1129. package/dist/tools/desktop-type.d.ts +12 -0
  1130. package/dist/tools/desktop-type.d.ts.map +1 -0
  1131. package/dist/tools/desktop-type.js +63 -0
  1132. package/dist/tools/desktop-type.js.map +1 -0
  1133. package/dist/tools/detect-language.d.ts +11 -0
  1134. package/dist/tools/detect-language.d.ts.map +1 -0
  1135. package/dist/tools/detect-language.js +235 -0
  1136. package/dist/tools/detect-language.js.map +1 -0
  1137. package/dist/tools/discover-news.d.ts +11 -0
  1138. package/dist/tools/discover-news.d.ts.map +1 -0
  1139. package/dist/tools/discover-news.js +261 -0
  1140. package/dist/tools/discover-news.js.map +1 -0
  1141. package/dist/tools/doc-generate.d.ts +17 -0
  1142. package/dist/tools/doc-generate.d.ts.map +1 -0
  1143. package/dist/tools/doc-generate.js +222 -0
  1144. package/dist/tools/doc-generate.js.map +1 -0
  1145. package/dist/tools/docs-lookup.d.ts +38 -0
  1146. package/dist/tools/docs-lookup.d.ts.map +1 -0
  1147. package/dist/tools/docs-lookup.js +174 -0
  1148. package/dist/tools/docs-lookup.js.map +1 -0
  1149. package/dist/tools/document-author.d.ts +40 -0
  1150. package/dist/tools/document-author.d.ts.map +1 -0
  1151. package/dist/tools/document-author.js +465 -0
  1152. package/dist/tools/document-author.js.map +1 -0
  1153. package/dist/tools/document-manage.d.ts +43 -0
  1154. package/dist/tools/document-manage.d.ts.map +1 -0
  1155. package/dist/tools/document-manage.js +665 -0
  1156. package/dist/tools/document-manage.js.map +1 -0
  1157. package/dist/tools/document-styling.d.ts +132 -0
  1158. package/dist/tools/document-styling.d.ts.map +1 -0
  1159. package/dist/tools/document-styling.js +360 -0
  1160. package/dist/tools/document-styling.js.map +1 -0
  1161. package/dist/tools/document-templates.d.ts +32 -0
  1162. package/dist/tools/document-templates.d.ts.map +1 -0
  1163. package/dist/tools/document-templates.js +95 -0
  1164. package/dist/tools/document-templates.js.map +1 -0
  1165. package/dist/tools/email-draft.d.ts +20 -0
  1166. package/dist/tools/email-draft.d.ts.map +1 -0
  1167. package/dist/tools/email-draft.js +191 -0
  1168. package/dist/tools/email-draft.js.map +1 -0
  1169. package/dist/tools/env-write.d.ts +32 -0
  1170. package/dist/tools/env-write.d.ts.map +1 -0
  1171. package/dist/tools/env-write.js +145 -0
  1172. package/dist/tools/env-write.js.map +1 -0
  1173. package/dist/tools/error-guidance.d.ts +38 -0
  1174. package/dist/tools/error-guidance.d.ts.map +1 -0
  1175. package/dist/tools/error-guidance.js +261 -0
  1176. package/dist/tools/error-guidance.js.map +1 -0
  1177. package/dist/tools/exercise-repair.d.ts +89 -0
  1178. package/dist/tools/exercise-repair.d.ts.map +1 -0
  1179. package/dist/tools/exercise-repair.js +350 -0
  1180. package/dist/tools/exercise-repair.js.map +1 -0
  1181. package/dist/tools/fact-check.d.ts +24 -0
  1182. package/dist/tools/fact-check.d.ts.map +1 -0
  1183. package/dist/tools/fact-check.js +78 -0
  1184. package/dist/tools/fact-check.js.map +1 -0
  1185. package/dist/tools/file-edit.d.ts +11 -0
  1186. package/dist/tools/file-edit.d.ts.map +1 -0
  1187. package/dist/tools/file-edit.js +166 -0
  1188. package/dist/tools/file-edit.js.map +1 -0
  1189. package/dist/tools/file-read.d.ts +12 -0
  1190. package/dist/tools/file-read.d.ts.map +1 -0
  1191. package/dist/tools/file-read.js +98 -0
  1192. package/dist/tools/file-read.js.map +1 -0
  1193. package/dist/tools/file-write.d.ts +13 -0
  1194. package/dist/tools/file-write.d.ts.map +1 -0
  1195. package/dist/tools/file-write.js +163 -0
  1196. package/dist/tools/file-write.js.map +1 -0
  1197. package/dist/tools/find-symbol.d.ts +13 -0
  1198. package/dist/tools/find-symbol.d.ts.map +1 -0
  1199. package/dist/tools/find-symbol.js +144 -0
  1200. package/dist/tools/find-symbol.js.map +1 -0
  1201. package/dist/tools/generate-image.d.ts +19 -0
  1202. package/dist/tools/generate-image.d.ts.map +1 -0
  1203. package/dist/tools/generate-image.js +438 -0
  1204. package/dist/tools/generate-image.js.map +1 -0
  1205. package/dist/tools/generate-video.d.ts +21 -0
  1206. package/dist/tools/generate-video.d.ts.map +1 -0
  1207. package/dist/tools/generate-video.js +197 -0
  1208. package/dist/tools/generate-video.js.map +1 -0
  1209. package/dist/tools/generate-voice.d.ts +13 -0
  1210. package/dist/tools/generate-voice.d.ts.map +1 -0
  1211. package/dist/tools/generate-voice.js +156 -0
  1212. package/dist/tools/generate-voice.js.map +1 -0
  1213. package/dist/tools/generation-manager.d.ts +75 -0
  1214. package/dist/tools/generation-manager.d.ts.map +1 -0
  1215. package/dist/tools/generation-manager.js +150 -0
  1216. package/dist/tools/generation-manager.js.map +1 -0
  1217. package/dist/tools/get-datetime.d.ts +11 -0
  1218. package/dist/tools/get-datetime.d.ts.map +1 -0
  1219. package/dist/tools/get-datetime.js +59 -0
  1220. package/dist/tools/get-datetime.js.map +1 -0
  1221. package/dist/tools/git-commit.d.ts +13 -0
  1222. package/dist/tools/git-commit.d.ts.map +1 -0
  1223. package/dist/tools/git-commit.js +136 -0
  1224. package/dist/tools/git-commit.js.map +1 -0
  1225. package/dist/tools/git-create-pr.d.ts +13 -0
  1226. package/dist/tools/git-create-pr.d.ts.map +1 -0
  1227. package/dist/tools/git-create-pr.js +134 -0
  1228. package/dist/tools/git-create-pr.js.map +1 -0
  1229. package/dist/tools/git-diff.d.ts +12 -0
  1230. package/dist/tools/git-diff.d.ts.map +1 -0
  1231. package/dist/tools/git-diff.js +134 -0
  1232. package/dist/tools/git-diff.js.map +1 -0
  1233. package/dist/tools/git.d.ts +11 -0
  1234. package/dist/tools/git.d.ts.map +1 -0
  1235. package/dist/tools/git.js +89 -0
  1236. package/dist/tools/git.js.map +1 -0
  1237. package/dist/tools/glob.d.ts +11 -0
  1238. package/dist/tools/glob.d.ts.map +1 -0
  1239. package/dist/tools/glob.js +64 -0
  1240. package/dist/tools/glob.js.map +1 -0
  1241. package/dist/tools/grep.d.ts +11 -0
  1242. package/dist/tools/grep.d.ts.map +1 -0
  1243. package/dist/tools/grep.js +131 -0
  1244. package/dist/tools/grep.js.map +1 -0
  1245. package/dist/tools/health-catalogue-search.d.ts +11 -0
  1246. package/dist/tools/health-catalogue-search.d.ts.map +1 -0
  1247. package/dist/tools/health-catalogue-search.js +179 -0
  1248. package/dist/tools/health-catalogue-search.js.map +1 -0
  1249. package/dist/tools/health-plan-create.d.ts +24 -0
  1250. package/dist/tools/health-plan-create.d.ts.map +1 -0
  1251. package/dist/tools/health-plan-create.js +325 -0
  1252. package/dist/tools/health-plan-create.js.map +1 -0
  1253. package/dist/tools/health-plan-delete.d.ts +11 -0
  1254. package/dist/tools/health-plan-delete.d.ts.map +1 -0
  1255. package/dist/tools/health-plan-delete.js +97 -0
  1256. package/dist/tools/health-plan-delete.js.map +1 -0
  1257. package/dist/tools/health-plan-list.d.ts +11 -0
  1258. package/dist/tools/health-plan-list.d.ts.map +1 -0
  1259. package/dist/tools/health-plan-list.js +123 -0
  1260. package/dist/tools/health-plan-list.js.map +1 -0
  1261. package/dist/tools/health-plan-update-day.d.ts +18 -0
  1262. package/dist/tools/health-plan-update-day.d.ts.map +1 -0
  1263. package/dist/tools/health-plan-update-day.js +134 -0
  1264. package/dist/tools/health-plan-update-day.js.map +1 -0
  1265. package/dist/tools/health-plan-update.d.ts +11 -0
  1266. package/dist/tools/health-plan-update.d.ts.map +1 -0
  1267. package/dist/tools/health-plan-update.js +103 -0
  1268. package/dist/tools/health-plan-update.js.map +1 -0
  1269. package/dist/tools/health-profile-ask.d.ts +21 -0
  1270. package/dist/tools/health-profile-ask.d.ts.map +1 -0
  1271. package/dist/tools/health-profile-ask.js +50 -0
  1272. package/dist/tools/health-profile-ask.js.map +1 -0
  1273. package/dist/tools/http-request.d.ts +12 -0
  1274. package/dist/tools/http-request.d.ts.map +1 -0
  1275. package/dist/tools/http-request.js +329 -0
  1276. package/dist/tools/http-request.js.map +1 -0
  1277. package/dist/tools/journal.d.ts +17 -0
  1278. package/dist/tools/journal.d.ts.map +1 -0
  1279. package/dist/tools/journal.js +159 -0
  1280. package/dist/tools/journal.js.map +1 -0
  1281. package/dist/tools/learning.d.ts +154 -0
  1282. package/dist/tools/learning.d.ts.map +1 -0
  1283. package/dist/tools/learning.js +1344 -0
  1284. package/dist/tools/learning.js.map +1 -0
  1285. package/dist/tools/list-directory.d.ts +11 -0
  1286. package/dist/tools/list-directory.d.ts.map +1 -0
  1287. package/dist/tools/list-directory.js +95 -0
  1288. package/dist/tools/list-directory.js.map +1 -0
  1289. package/dist/tools/memory-delete.d.ts +11 -0
  1290. package/dist/tools/memory-delete.d.ts.map +1 -0
  1291. package/dist/tools/memory-delete.js +54 -0
  1292. package/dist/tools/memory-delete.js.map +1 -0
  1293. package/dist/tools/memory-recall.d.ts +11 -0
  1294. package/dist/tools/memory-recall.d.ts.map +1 -0
  1295. package/dist/tools/memory-recall.js +101 -0
  1296. package/dist/tools/memory-recall.js.map +1 -0
  1297. package/dist/tools/memory-save.d.ts +11 -0
  1298. package/dist/tools/memory-save.d.ts.map +1 -0
  1299. package/dist/tools/memory-save.js +110 -0
  1300. package/dist/tools/memory-save.js.map +1 -0
  1301. package/dist/tools/memory-update.d.ts +11 -0
  1302. package/dist/tools/memory-update.d.ts.map +1 -0
  1303. package/dist/tools/memory-update.js +88 -0
  1304. package/dist/tools/memory-update.js.map +1 -0
  1305. package/dist/tools/news.d.ts +11 -0
  1306. package/dist/tools/news.d.ts.map +1 -0
  1307. package/dist/tools/news.js +137 -0
  1308. package/dist/tools/news.js.map +1 -0
  1309. package/dist/tools/open-design-studio.d.ts +20 -0
  1310. package/dist/tools/open-design-studio.d.ts.map +1 -0
  1311. package/dist/tools/open-design-studio.js +45 -0
  1312. package/dist/tools/open-design-studio.js.map +1 -0
  1313. package/dist/tools/open-health-room.d.ts +19 -0
  1314. package/dist/tools/open-health-room.d.ts.map +1 -0
  1315. package/dist/tools/open-health-room.js +44 -0
  1316. package/dist/tools/open-health-room.js.map +1 -0
  1317. package/dist/tools/open-learning-room.d.ts +20 -0
  1318. package/dist/tools/open-learning-room.d.ts.map +1 -0
  1319. package/dist/tools/open-learning-room.js +44 -0
  1320. package/dist/tools/open-learning-room.js.map +1 -0
  1321. package/dist/tools/paper-fetch.d.ts +11 -0
  1322. package/dist/tools/paper-fetch.d.ts.map +1 -0
  1323. package/dist/tools/paper-fetch.js +236 -0
  1324. package/dist/tools/paper-fetch.js.map +1 -0
  1325. package/dist/tools/post-performance.d.ts +17 -0
  1326. package/dist/tools/post-performance.d.ts.map +1 -0
  1327. package/dist/tools/post-performance.js +58 -0
  1328. package/dist/tools/post-performance.js.map +1 -0
  1329. package/dist/tools/present-plan.d.ts +34 -0
  1330. package/dist/tools/present-plan.d.ts.map +1 -0
  1331. package/dist/tools/present-plan.js +117 -0
  1332. package/dist/tools/present-plan.js.map +1 -0
  1333. package/dist/tools/project-index.d.ts +11 -0
  1334. package/dist/tools/project-index.d.ts.map +1 -0
  1335. package/dist/tools/project-index.js +88 -0
  1336. package/dist/tools/project-index.js.map +1 -0
  1337. package/dist/tools/propose-hooks.d.ts +17 -0
  1338. package/dist/tools/propose-hooks.d.ts.map +1 -0
  1339. package/dist/tools/propose-hooks.js +71 -0
  1340. package/dist/tools/propose-hooks.js.map +1 -0
  1341. package/dist/tools/propose-tool.d.ts +11 -0
  1342. package/dist/tools/propose-tool.d.ts.map +1 -0
  1343. package/dist/tools/propose-tool.js +155 -0
  1344. package/dist/tools/propose-tool.js.map +1 -0
  1345. package/dist/tools/recipe-repair.d.ts +116 -0
  1346. package/dist/tools/recipe-repair.d.ts.map +1 -0
  1347. package/dist/tools/recipe-repair.js +404 -0
  1348. package/dist/tools/recipe-repair.js.map +1 -0
  1349. package/dist/tools/record-machine-rule.d.ts +24 -0
  1350. package/dist/tools/record-machine-rule.d.ts.map +1 -0
  1351. package/dist/tools/record-machine-rule.js +60 -0
  1352. package/dist/tools/record-machine-rule.js.map +1 -0
  1353. package/dist/tools/release-notes.d.ts +11 -0
  1354. package/dist/tools/release-notes.d.ts.map +1 -0
  1355. package/dist/tools/release-notes.js +59 -0
  1356. package/dist/tools/release-notes.js.map +1 -0
  1357. package/dist/tools/remove-background.d.ts +15 -0
  1358. package/dist/tools/remove-background.d.ts.map +1 -0
  1359. package/dist/tools/remove-background.js +117 -0
  1360. package/dist/tools/remove-background.js.map +1 -0
  1361. package/dist/tools/report-generate.d.ts +30 -0
  1362. package/dist/tools/report-generate.d.ts.map +1 -0
  1363. package/dist/tools/report-generate.js +325 -0
  1364. package/dist/tools/report-generate.js.map +1 -0
  1365. package/dist/tools/research-post.d.ts +20 -0
  1366. package/dist/tools/research-post.d.ts.map +1 -0
  1367. package/dist/tools/research-post.js +87 -0
  1368. package/dist/tools/research-post.js.map +1 -0
  1369. package/dist/tools/research-story.d.ts +29 -0
  1370. package/dist/tools/research-story.d.ts.map +1 -0
  1371. package/dist/tools/research-story.js +78 -0
  1372. package/dist/tools/research-story.js.map +1 -0
  1373. package/dist/tools/rollback.d.ts +11 -0
  1374. package/dist/tools/rollback.d.ts.map +1 -0
  1375. package/dist/tools/rollback.js +81 -0
  1376. package/dist/tools/rollback.js.map +1 -0
  1377. package/dist/tools/scan-industry.d.ts +19 -0
  1378. package/dist/tools/scan-industry.d.ts.map +1 -0
  1379. package/dist/tools/scan-industry.js +82 -0
  1380. package/dist/tools/scan-industry.js.map +1 -0
  1381. package/dist/tools/screenshot.d.ts +11 -0
  1382. package/dist/tools/screenshot.d.ts.map +1 -0
  1383. package/dist/tools/screenshot.js +82 -0
  1384. package/dist/tools/screenshot.js.map +1 -0
  1385. package/dist/tools/secret-request.d.ts +24 -0
  1386. package/dist/tools/secret-request.d.ts.map +1 -0
  1387. package/dist/tools/secret-request.js +75 -0
  1388. package/dist/tools/secret-request.js.map +1 -0
  1389. package/dist/tools/security.d.ts +26 -0
  1390. package/dist/tools/security.d.ts.map +1 -0
  1391. package/dist/tools/security.js +78 -0
  1392. package/dist/tools/security.js.map +1 -0
  1393. package/dist/tools/self-inspect.d.ts +34 -0
  1394. package/dist/tools/self-inspect.d.ts.map +1 -0
  1395. package/dist/tools/self-inspect.js +427 -0
  1396. package/dist/tools/self-inspect.js.map +1 -0
  1397. package/dist/tools/suggest-beats.d.ts +17 -0
  1398. package/dist/tools/suggest-beats.d.ts.map +1 -0
  1399. package/dist/tools/suggest-beats.js +71 -0
  1400. package/dist/tools/suggest-beats.js.map +1 -0
  1401. package/dist/tools/suggest-stories.d.ts +26 -0
  1402. package/dist/tools/suggest-stories.d.ts.map +1 -0
  1403. package/dist/tools/suggest-stories.js +102 -0
  1404. package/dist/tools/suggest-stories.js.map +1 -0
  1405. package/dist/tools/support-request.d.ts +11 -0
  1406. package/dist/tools/support-request.d.ts.map +1 -0
  1407. package/dist/tools/support-request.js +110 -0
  1408. package/dist/tools/support-request.js.map +1 -0
  1409. package/dist/tools/switch-mode.d.ts +21 -0
  1410. package/dist/tools/switch-mode.d.ts.map +1 -0
  1411. package/dist/tools/switch-mode.js +57 -0
  1412. package/dist/tools/switch-mode.js.map +1 -0
  1413. package/dist/tools/task-manage.d.ts +16 -0
  1414. package/dist/tools/task-manage.d.ts.map +1 -0
  1415. package/dist/tools/task-manage.js +256 -0
  1416. package/dist/tools/task-manage.js.map +1 -0
  1417. package/dist/tools/task-suggest.d.ts +27 -0
  1418. package/dist/tools/task-suggest.d.ts.map +1 -0
  1419. package/dist/tools/task-suggest.js +70 -0
  1420. package/dist/tools/task-suggest.js.map +1 -0
  1421. package/dist/tools/test-generate.d.ts +20 -0
  1422. package/dist/tools/test-generate.d.ts.map +1 -0
  1423. package/dist/tools/test-generate.js +259 -0
  1424. package/dist/tools/test-generate.js.map +1 -0
  1425. package/dist/tools/test-run.d.ts +13 -0
  1426. package/dist/tools/test-run.d.ts.map +1 -0
  1427. package/dist/tools/test-run.js +177 -0
  1428. package/dist/tools/test-run.js.map +1 -0
  1429. package/dist/tools/todo-write.d.ts +11 -0
  1430. package/dist/tools/todo-write.d.ts.map +1 -0
  1431. package/dist/tools/todo-write.js +70 -0
  1432. package/dist/tools/todo-write.js.map +1 -0
  1433. package/dist/tools/tool-registry.d.ts +84 -0
  1434. package/dist/tools/tool-registry.d.ts.map +1 -0
  1435. package/dist/tools/tool-registry.js +728 -0
  1436. package/dist/tools/tool-registry.js.map +1 -0
  1437. package/dist/tools/types.d.ts +128 -0
  1438. package/dist/tools/types.d.ts.map +1 -0
  1439. package/dist/tools/types.js +2 -0
  1440. package/dist/tools/types.js.map +1 -0
  1441. package/dist/tools/verification-trust.d.ts +39 -0
  1442. package/dist/tools/verification-trust.d.ts.map +1 -0
  1443. package/dist/tools/verification-trust.js +135 -0
  1444. package/dist/tools/verification-trust.js.map +1 -0
  1445. package/dist/tools/verify-change.d.ts +11 -0
  1446. package/dist/tools/verify-change.d.ts.map +1 -0
  1447. package/dist/tools/verify-change.js +775 -0
  1448. package/dist/tools/verify-change.js.map +1 -0
  1449. package/dist/tools/weather.d.ts +11 -0
  1450. package/dist/tools/weather.d.ts.map +1 -0
  1451. package/dist/tools/weather.js +96 -0
  1452. package/dist/tools/weather.js.map +1 -0
  1453. package/dist/tools/web-search.d.ts +12 -0
  1454. package/dist/tools/web-search.d.ts.map +1 -0
  1455. package/dist/tools/web-search.js +137 -0
  1456. package/dist/tools/web-search.js.map +1 -0
  1457. package/dist/tools/write-article.d.ts +33 -0
  1458. package/dist/tools/write-article.d.ts.map +1 -0
  1459. package/dist/tools/write-article.js +206 -0
  1460. package/dist/tools/write-article.js.map +1 -0
  1461. package/dist/tools/write-exercise.d.ts +31 -0
  1462. package/dist/tools/write-exercise.d.ts.map +1 -0
  1463. package/dist/tools/write-exercise.js +278 -0
  1464. package/dist/tools/write-exercise.js.map +1 -0
  1465. package/dist/tools/write-post-image.d.ts +31 -0
  1466. package/dist/tools/write-post-image.d.ts.map +1 -0
  1467. package/dist/tools/write-post-image.js +102 -0
  1468. package/dist/tools/write-post-image.js.map +1 -0
  1469. package/dist/tools/write-post.d.ts +20 -0
  1470. package/dist/tools/write-post.d.ts.map +1 -0
  1471. package/dist/tools/write-post.js +113 -0
  1472. package/dist/tools/write-post.js.map +1 -0
  1473. package/dist/tools/write-recipe.d.ts +29 -0
  1474. package/dist/tools/write-recipe.d.ts.map +1 -0
  1475. package/dist/tools/write-recipe.js +262 -0
  1476. package/dist/tools/write-recipe.js.map +1 -0
  1477. package/dist/tools/write-video-post.d.ts +25 -0
  1478. package/dist/tools/write-video-post.d.ts.map +1 -0
  1479. package/dist/tools/write-video-post.js +238 -0
  1480. package/dist/tools/write-video-post.js.map +1 -0
  1481. package/dist/tools/write-voiceover.d.ts +29 -0
  1482. package/dist/tools/write-voiceover.d.ts.map +1 -0
  1483. package/dist/tools/write-voiceover.js +98 -0
  1484. package/dist/tools/write-voiceover.js.map +1 -0
  1485. package/dist/workflows/index.d.ts +4 -0
  1486. package/dist/workflows/index.d.ts.map +1 -0
  1487. package/dist/workflows/index.js +2 -0
  1488. package/dist/workflows/index.js.map +1 -0
  1489. package/dist/workflows/types.d.ts +112 -0
  1490. package/dist/workflows/types.d.ts.map +1 -0
  1491. package/dist/workflows/types.js +10 -0
  1492. package/dist/workflows/types.js.map +1 -0
  1493. package/dist/workflows/workflow-manager.d.ts +54 -0
  1494. package/dist/workflows/workflow-manager.d.ts.map +1 -0
  1495. package/dist/workflows/workflow-manager.js +277 -0
  1496. package/dist/workflows/workflow-manager.js.map +1 -0
  1497. package/package.json +223 -0
@@ -0,0 +1,1260 @@
1
+ import { Agent, modeCanEditFiles, detectModeFromMessages } from '../agent/agent.js';
2
+ import { Conductor } from '../personas/conductor.js';
3
+ import { VerifyChangeTool } from '../tools/verify-change.js';
4
+ import { Conversation } from '../agent/conversation.js';
5
+ import { classifyTask } from './task-classifier.js';
6
+ import { ModelRouter } from './model-router.js';
7
+ import { generateBrief, formatBriefAsSystem } from './brief-generator.js';
8
+ import { ContextTracker } from './context-tracker.js';
9
+ import { resolveCoordinatorModel } from './coordinator-model.js';
10
+ import { classifyIntent, classifyTeachDepth, resolveIntentGateModel } from './intent-gate.js';
11
+ import { SUPERNOVA_COORDINATOR_ID, SUPERNOVA_BUILDER_ID, SUPERNOVA_VISION_ID } from './supernova-router.js';
12
+ import { AURORA_COORDINATOR_ID, AURORA_BUILDER_ID, AURORA_VISION_ID } from './aurora-router.js';
13
+ import { LONGXIANG_COORDINATOR_ID, LONGXIANG_BUILDER_ID, LONGXIANG_VISION_ID } from './longxiang-router.js';
14
+ import { buildSystemPrompt } from '../agent/system-prompt.js';
15
+ import { TaskExecutor } from './task-executor.js';
16
+ import { extractChangesSummary } from './changes-summary.js';
17
+ import { logger } from '../core/logger.js';
18
+ import { avaEvents, withTrajectory, withChildTrajectory, getTrajectory } from '../dataset/emitter.js';
19
+ import { chargeCredits, extractUsage } from '../billing/meter.js';
20
+ import { randomUUID } from 'node:crypto';
21
+ // Categories where Conductor orchestration may trigger on the spawned agent
22
+ const ORCHESTRATED_CATEGORIES = new Set(['planning', 'security', 'brainstorm', 'teach']);
23
+ // Categories the coordinator handles directly (no agent spawn)
24
+ const DIRECT_CATEGORIES = new Set(['chat', 'image_gen', 'vision']);
25
+ // Map task categories to mode names for conductor/system prompt
26
+ const CATEGORY_TO_MODE = {
27
+ coding: 'work',
28
+ vision: 'work',
29
+ image_gen: 'work',
30
+ planning: 'plan',
31
+ chat: 'chat',
32
+ long_context: 'work',
33
+ teach: 'teach',
34
+ security: 'security',
35
+ brainstorm: 'brainstorm',
36
+ };
37
+ /**
38
+ * Auto Mode coordinator.
39
+ *
40
+ * Sits on a persistent model (M2.7 for platform users) and routes tasks
41
+ * to the best available model by spawning fresh Agent instances.
42
+ * Simple tasks (chat, image gen) are handled directly without spawning.
43
+ */
44
+ export class AutoCoordinator {
45
+ coordinatorAgent;
46
+ coordinatorProvider;
47
+ coordinatorModel;
48
+ toolRegistry;
49
+ cwd;
50
+ sharedState;
51
+ router;
52
+ projectInstructions;
53
+ systemPromptOpts;
54
+ /**
55
+ * Cheap fast model (Qwen 3.5 Flash preferred) for upstream intent
56
+ * classification. If available, runs before the spawn decision to
57
+ * decide whether the coordinator can handle the prompt directly or
58
+ * whether to route to the specialist team. Null when no suitable
59
+ * model is reachable — the caller then falls back to the regex-based
60
+ * Conductor.needsOrchestration gate.
61
+ */
62
+ intentGate;
63
+ /**
64
+ * True when a platform key is present. On platform we split light-tier
65
+ * personas onto a cheap fast model (a cost optimisation — the platform
66
+ * holds every key). On BYOK (false) we DON'T: the whole persona team runs
67
+ * on the user's one coordinator model, so the full Ava orchestration runs
68
+ * on the model they actually chose, never silently handed to a model they
69
+ * may not even have a key for.
70
+ */
71
+ hasPlatform;
72
+ // The Agent currently executing inside run(). May be the planning task agent
73
+ // or a Builder spawned by TaskExecutor. inject() forwards to whichever is
74
+ // active so user mid-run messages reach the agent that's actually running.
75
+ activeAgent = null;
76
+ /** Agents for direct (no-team) turns, keyed `provider:model`. Built lazily
77
+ * by resolveDirectAgent and reused — a chat-heavy session would otherwise
78
+ * construct a fresh Agent on every turn. */
79
+ directAgents = new Map();
80
+ /** Surface and session for dataset trajectory attribution. */
81
+ surface;
82
+ sessionId;
83
+ /** Routing mode — 'auto' (default) or 'supernova' (polyglot). Threaded
84
+ * into the model router and consulted when spawning Builder so the
85
+ * per-task model picks honor whichever mode the operator selected. */
86
+ mode;
87
+ /** Provider+model the Builder agent (TaskExecutor spawn) runs on. In
88
+ * Auto mode this is the coordinator model — Builder inherits whatever
89
+ * the conductor brain runs on. In Supernova mode it's Qwen 3.7 Plus
90
+ * per the locked routing map (Terminal-Bench leader on real agent
91
+ * loops, vision-aware so screenshots don't need a re-route). */
92
+ builderProvider;
93
+ builderModel;
94
+ /** Provider+model for image/vision input. The coordinators are blind to
95
+ * images (DeepSeek V4 Pro, Mistral Large 3 — no vision via API), so the
96
+ * coordinator/task agents carry this as a vision bridge: an attached image
97
+ * is DESCRIBED by a vision-capable model (Supernova / Auto → Qwen 3.5 Omni
98
+ * Plus, Aurora → Mistral Medium 3.5) and injected as text, so the coordinator
99
+ * still does the work. Null when none is reachable — then the coordinator
100
+ * runs and honestly says it can't see the image (rather than hallucinate one). */
101
+ visionProvider;
102
+ visionModel;
103
+ constructor(opts) {
104
+ this.coordinatorProvider = opts.coordinatorProvider;
105
+ this.coordinatorModel = opts.coordinatorModel;
106
+ this.toolRegistry = opts.toolRegistry;
107
+ this.cwd = opts.cwd;
108
+ this.sharedState = opts.sharedState;
109
+ this.projectInstructions = opts.projectInstructions || '';
110
+ this.systemPromptOpts = opts.systemPromptOpts || {};
111
+ this.surface = opts.surface ?? 'cli';
112
+ this.sessionId = opts.sessionId ?? randomUUID();
113
+ this.mode = opts.mode ?? 'auto';
114
+ this.router = new ModelRouter(opts.providerRegistry, opts.availableProviders, opts.platformKey, opts.userPreferences, this.mode);
115
+ // Resolve the Builder model. Supernova spawns Qwen 3.7 Plus, Aurora
116
+ // spawns Mistral Medium 3.5 (the merged flagship — 128B dense,
117
+ // 256K context, vision encoder from scratch, 77.6% SWE-Bench Verified,
118
+ // modified-MIT open weights). Auto reuses the coordinator model for
119
+ // backward-compatibility with the existing tuning. If the override
120
+ // can't resolve (platform not enabled, model not registered) fall
121
+ // back to the coordinator model rather than block.
122
+ if (this.mode === 'supernova') {
123
+ const resolved = opts.providerRegistry.resolveModel(`platform:${SUPERNOVA_BUILDER_ID}`)
124
+ ?? opts.providerRegistry.resolveModel(SUPERNOVA_BUILDER_ID);
125
+ this.builderProvider = resolved?.provider ?? opts.coordinatorProvider;
126
+ this.builderModel = resolved?.model ?? opts.coordinatorModel;
127
+ }
128
+ else if (this.mode === 'aurora') {
129
+ // Aurora is Mistral-only — try platform-managed Mistral first
130
+ // (Ava's Mistral key, includes Aurora as a managed option), then
131
+ // BYOK Mistral, then fall back to coordinator if neither resolves.
132
+ const resolved = opts.providerRegistry.resolveModel(`platform:${AURORA_BUILDER_ID}`)
133
+ ?? opts.providerRegistry.resolveModel(`mistral:${AURORA_BUILDER_ID}`)
134
+ ?? opts.providerRegistry.resolveModel(AURORA_BUILDER_ID);
135
+ this.builderProvider = resolved?.provider ?? opts.coordinatorProvider;
136
+ this.builderModel = resolved?.model ?? opts.coordinatorModel;
137
+ }
138
+ else if (this.mode === 'longxiang') {
139
+ // K3 builds as well as coordinates. Platform-managed first, then the
140
+ // user's own Moonshot key — same ladder as the other fleets.
141
+ const resolved = opts.providerRegistry.resolveModel(`platform:${LONGXIANG_BUILDER_ID}-platform`)
142
+ ?? opts.providerRegistry.resolveModel(`platform:${LONGXIANG_BUILDER_ID}`)
143
+ ?? opts.providerRegistry.resolveModel(`kimi:${LONGXIANG_BUILDER_ID}`)
144
+ ?? opts.providerRegistry.resolveModel(LONGXIANG_BUILDER_ID);
145
+ this.builderProvider = resolved?.provider ?? opts.coordinatorProvider;
146
+ this.builderModel = resolved?.model ?? opts.coordinatorModel;
147
+ }
148
+ else {
149
+ this.builderProvider = opts.coordinatorProvider;
150
+ this.builderModel = opts.coordinatorModel;
151
+ }
152
+ // Resolve the vision model for image inputs (see field doc). Mirrors the
153
+ // builder resolution: platform-managed first, then BYOK, then null.
154
+ const visionId = this.mode === 'aurora'
155
+ ? AURORA_VISION_ID
156
+ : this.mode === 'longxiang'
157
+ ? LONGXIANG_VISION_ID
158
+ : SUPERNOVA_VISION_ID;
159
+ const visionResolved = opts.providerRegistry.resolveModel(`platform:${visionId}`)
160
+ ?? opts.providerRegistry.resolveModel(visionId)
161
+ ?? (this.mode === 'aurora' ? opts.providerRegistry.resolveModel(`mistral:${visionId}`) : null);
162
+ this.visionProvider = visionResolved?.provider ?? null;
163
+ this.visionModel = visionResolved?.model ?? null;
164
+ // Resolve a cheap fast model for the upstream intent gate.
165
+ // Prefers Qwen 3.5 Flash on platform; falls through to Haiku/DeepSeek
166
+ // on BYOK. Null if nothing viable is reachable — in that case the
167
+ // spawn decision falls back to the regex-based Conductor gate only.
168
+ this.hasPlatform = !!opts.platformKey || opts.availableProviders.has('platform');
169
+ this.intentGate = resolveIntentGateModel(opts.providerRegistry, opts.availableProviders, this.hasPlatform);
170
+ // The coordinator's own agent — handles direct tasks (chat, simple questions).
171
+ // Wired with the vision bridge so a text-only coordinator (DeepSeek V4 /
172
+ // Mistral) can still "see" attached images: the bridge runs the vision model
173
+ // (Qwen Omni) to describe them and injects that as text. This is what lets
174
+ // Supernova act on an image instead of handing the whole turn to Omni.
175
+ this.coordinatorAgent = new Agent({
176
+ provider: opts.coordinatorProvider,
177
+ model: opts.coordinatorModel,
178
+ visionProvider: this.visionProvider ?? undefined,
179
+ visionModel: this.visionModel ?? undefined,
180
+ toolRegistry: opts.toolRegistry,
181
+ cwd: opts.cwd,
182
+ sharedState: opts.sharedState,
183
+ });
184
+ }
185
+ /**
186
+ * Create an AutoCoordinator with the correct coordinator model.
187
+ * Platform users: Kimi K2.5. BYOK users: best available. Free: Qwen Flash.
188
+ * Returns null if no model is available.
189
+ */
190
+ static create(opts) {
191
+ // Supernova / Aurora mode pin specific coordinators — that's part of
192
+ // what makes each mode itself. Supernova → V4 Pro, Aurora → Mistral
193
+ // Large 3. Falls through to the default priority ladder if the
194
+ // operator already passed an explicit preference (rare; means they're
195
+ // admin-overriding the override).
196
+ const hasPlatform = !!opts.platformKey || opts.availableProviders.has('platform');
197
+ let coordinator = null;
198
+ if (opts.preferredCoordinatorId) {
199
+ // Explicit operator override wins for any mode.
200
+ coordinator = resolveCoordinatorModel(opts.providerRegistry, opts.availableProviders, hasPlatform, opts.preferredCoordinatorId);
201
+ }
202
+ else if (opts.mode === 'aurora') {
203
+ // Aurora is Mistral-only — never silently routes to a non-Mistral
204
+ // coordinator. Try Medium 3.5 platform-managed → BYOK → Large 3 reserve.
205
+ // Returns null if no Mistral model is reachable so the caller can surface
206
+ // a clear error rather than breaking the EU-stack guarantee with a Qwen
207
+ // fallback. The registry bridges the native/-platform id-suffix duality,
208
+ // so the native AURORA_* ids resolve on both managed and BYOK surfaces.
209
+ const tries = [
210
+ `platform:${AURORA_COORDINATOR_ID}`,
211
+ `mistral:${AURORA_COORDINATOR_ID}`,
212
+ AURORA_COORDINATOR_ID,
213
+ `platform:${AURORA_BUILDER_ID}`,
214
+ `mistral:${AURORA_BUILDER_ID}`,
215
+ AURORA_BUILDER_ID,
216
+ ];
217
+ for (const id of tries) {
218
+ const resolved = opts.providerRegistry.resolveModel(id);
219
+ if (resolved) {
220
+ coordinator = {
221
+ provider: resolved.provider,
222
+ model: resolved.model,
223
+ reason: `${resolved.model.name} — Aurora coordinator (Mistral-only routing)`,
224
+ };
225
+ break;
226
+ }
227
+ }
228
+ }
229
+ else if (opts.mode === 'longxiang') {
230
+ // Longxiang pins Kimi K3 in BOTH the coordinator and Builder seats —
231
+ // it's the strongest open coder we have and a strong tool-driver, so
232
+ // there's nothing to gain by splitting them.
233
+ //
234
+ // Resolves platform-managed first, then BYOK — the same ladder every
235
+ // other fleet uses. A plan runs Longxiang on credits; a BYOK user runs
236
+ // it on their own Moonshot key.
237
+ const tries = [
238
+ `platform:${LONGXIANG_COORDINATOR_ID}-platform`,
239
+ `platform:${LONGXIANG_COORDINATOR_ID}`,
240
+ `kimi:${LONGXIANG_COORDINATOR_ID}`,
241
+ LONGXIANG_COORDINATOR_ID,
242
+ ];
243
+ for (const id of tries) {
244
+ const resolved = opts.providerRegistry.resolveModel(id);
245
+ if (resolved) {
246
+ coordinator = {
247
+ provider: resolved.provider,
248
+ model: resolved.model,
249
+ reason: `${resolved.model.name} — Longxiang coordinator (Chinese-model routing)`,
250
+ };
251
+ break;
252
+ }
253
+ }
254
+ }
255
+ else if (opts.mode === 'supernova') {
256
+ // Supernova pins DeepSeek V4 Pro as coordinator — try platform-managed →
257
+ // BYOK deepseek → native. Unlike Aurora, Supernova is polyglot, so it
258
+ // falls through to the generic priority ladder if DeepSeek isn't
259
+ // reachable rather than erroring.
260
+ for (const id of [
261
+ `platform:${SUPERNOVA_COORDINATOR_ID}`,
262
+ `deepseek:${SUPERNOVA_COORDINATOR_ID}`,
263
+ SUPERNOVA_COORDINATOR_ID,
264
+ ]) {
265
+ const resolved = opts.providerRegistry.resolveModel(id);
266
+ if (resolved) {
267
+ coordinator = {
268
+ provider: resolved.provider,
269
+ model: resolved.model,
270
+ reason: `${resolved.model.name} — Supernova coordinator`,
271
+ };
272
+ break;
273
+ }
274
+ }
275
+ if (!coordinator) {
276
+ coordinator = resolveCoordinatorModel(opts.providerRegistry, opts.availableProviders, hasPlatform);
277
+ }
278
+ }
279
+ else {
280
+ // Auto / Maestro — generic priority ladder.
281
+ coordinator = resolveCoordinatorModel(opts.providerRegistry, opts.availableProviders, hasPlatform);
282
+ }
283
+ if (!coordinator)
284
+ return null;
285
+ return new AutoCoordinator({
286
+ coordinatorProvider: coordinator.provider,
287
+ coordinatorModel: coordinator.model,
288
+ ...opts,
289
+ });
290
+ }
291
+ /**
292
+ * Process a user message. Classifies the task, routes to the best model,
293
+ * spawns an agent if needed, and returns updated messages.
294
+ *
295
+ * After the planning agent returns, checks for newly created session tasks
296
+ * (added by present_plan + todo_write) and dispatches the TaskExecutor to
297
+ * run a fresh Builder for each one. This is the JARVIS hand-off — the
298
+ * conductor model plans, Builder agents execute.
299
+ *
300
+ * Drop-in replacement for Agent.run() — same signature.
301
+ */
302
+ async run(messages, onEvent, signal) {
303
+ // Open a dataset trajectory for the entire coordinator run. Inner
304
+ // Agent.run() calls (planning agent + Builder agents) inherit this
305
+ // as their parent_trajectory_id so the orchestration tree can be
306
+ // reconstructed at training time. Mode is detected from the
307
+ // incoming messages so events get attributed correctly.
308
+ const mode = (this.detectMode(messages) ?? 'work');
309
+ const openTrajectory = getTrajectory() ? withChildTrajectory : withTrajectory;
310
+ return openTrajectory({
311
+ session_id: this.sessionId,
312
+ surface: this.surface,
313
+ mode,
314
+ model_id: this.coordinatorModel.id,
315
+ }, () => this.runInner(messages, onEvent, signal));
316
+ }
317
+ async runInner(messages, onEvent, signal) {
318
+ // Snapshot pending session task IDs BEFORE the run so we can detect tasks
319
+ // newly created during this turn (vs leftovers from a previous run).
320
+ const taskMgr = this.getTaskManager();
321
+ const pendingBefore = taskMgr
322
+ ? new Set(taskMgr.getSessionTasks().filter(t => t.status === 'todo').map(t => t.id))
323
+ : new Set();
324
+ // ── Event interception ──────────────────────────────────────────────────
325
+ // Sub-agents (planning leg + each Builder task) each fire `done` and
326
+ // `stream_end` events when their own loops finish. If we forward those
327
+ // straight through, the webview thinks the whole run is over and flips
328
+ // the STOP button back to SEND mid-orchestration — even though the
329
+ // executor is about to spawn the next Builder. Suppress those terminal
330
+ // events from sub-agents and emit a single coordinated `done` at the
331
+ // very end of run() instead.
332
+ let lastFinalMessage = null;
333
+ const interceptedOnEvent = (event) => {
334
+ if (event.type === 'done') {
335
+ // Remember the last final message but don't forward it — we'll fire
336
+ // a single done at the end of the orchestrated run.
337
+ lastFinalMessage = event.finalMessage;
338
+ return;
339
+ }
340
+ onEvent(event);
341
+ };
342
+ // Run the planning leg — existing logic, just with the intercepted handler.
343
+ const planResult = await this.runPlanningLeg(messages, interceptedOnEvent, signal);
344
+ // Execution leg: if the planning agent created new session tasks via
345
+ // present_plan + todo_write, dispatch the Builder executor to run them.
346
+ if (taskMgr && !signal?.aborted) {
347
+ const newlyPending = taskMgr.getSessionTasks().filter(t => t.status === 'todo' && !pendingBefore.has(t.id));
348
+ // ── Orchestration gate ─────────────────────────────────────────────
349
+ // The planning agent may speculatively create session tasks in
350
+ // response to any substantive request. Previously, any newly-created
351
+ // task triggered the TaskExecutor dispatch. That's how "launch the
352
+ // dev app" turned into a 5-task redesign + fix + document + launch
353
+ // run — the planner created all five tasks speculatively, and the
354
+ // executor dutifully executed them without asking.
355
+ //
356
+ // The gate asks Qwen Flash one question: given the user's actual
357
+ // message and the tasks that were just proposed, does the user
358
+ // want these executed as a plan, or did they ask for something
359
+ // simpler? If the answer is "simpler", the speculative tasks are
360
+ // marked deferred (still visible to the user in the task list so
361
+ // they can kick them off manually if they wanted them) and the
362
+ // executor does not run.
363
+ let shouldDispatch = newlyPending.length > 0;
364
+ // ── Mode gate ──────────────────────────────────────────────────────
365
+ // Runs FIRST, and is not a judgement call. The intent gate below asks a
366
+ // model whether the user wanted orchestration; this asks whether the
367
+ // mode permits it at all, and no answer to the first question can
368
+ // override the second.
369
+ //
370
+ // Without it the hand-off had no idea what mode it was in. Seen live
371
+ // 2026-08-19: a Plan-mode turn presented a plan, wrote eleven todos and
372
+ // announced "Builder dispatched — executing 11 tasks", then started
373
+ // editing the project. Plan mode is read-only — the planner itself
374
+ // cannot open a file to write it — so the restriction held exactly until
375
+ // the orchestrator spawned Builders that were not bound by it.
376
+ //
377
+ // The tasks are kept, not discarded. A plan the user asked for is still
378
+ // a good plan; it just does not get to build itself. They stay in the
379
+ // list to be dispatched from Code mode.
380
+ const avaMode = this.detectMode(messages);
381
+ if (shouldDispatch && !modeCanEditFiles(avaMode)) {
382
+ logger.info(`[auto-coordinator] Mode gate: ${avaMode} mode cannot edit files — ` +
383
+ `${newlyPending.length} task(s) held for manual dispatch, Builder NOT run.`);
384
+ onEvent({
385
+ type: 'auto_routing',
386
+ category: 'coding',
387
+ model: this.coordinatorModel.id,
388
+ reason: `${avaMode.charAt(0).toUpperCase()}${avaMode.slice(1)} mode is read-only — ` +
389
+ `the plan is ready and its ${newlyPending.length} task(s) are on the list, ` +
390
+ 'but nothing was built. Switch to Code mode to run them.',
391
+ });
392
+ shouldDispatch = false;
393
+ }
394
+ if (shouldDispatch && !(await this.shouldOrchestrate(messages, newlyPending.map(t => t.title)))) {
395
+ logger.info(`[auto-coordinator] Orchestration gate: ${newlyPending.length} tasks created speculatively — user intent does not match. Deferring them.`);
396
+ for (const task of newlyPending) {
397
+ try {
398
+ taskMgr.updateTask(task.id, { status: 'deferred' });
399
+ }
400
+ catch { /* best-effort */ }
401
+ }
402
+ onEvent({
403
+ type: 'auto_routing',
404
+ category: 'coding',
405
+ model: this.coordinatorModel.id,
406
+ reason: `Speculative task breakdown skipped — user request did not warrant orchestration. ${newlyPending.length} tasks saved as deferred for manual dispatch.`,
407
+ });
408
+ shouldDispatch = false;
409
+ }
410
+ if (shouldDispatch) {
411
+ logger.debug(`[auto-coordinator] Dispatching TaskExecutor for ${newlyPending.length} new tasks (mode=${this.mode}, builder=${this.builderModel.name})`);
412
+ const executor = new TaskExecutor({
413
+ // Builder model — Auto reuses the coordinator, Supernova pins to
414
+ // Qwen 3.7 Plus per the polyglot routing map. See constructor.
415
+ provider: this.builderProvider,
416
+ model: this.builderModel,
417
+ toolRegistry: this.toolRegistry,
418
+ taskManager: taskMgr,
419
+ cwd: this.cwd,
420
+ sharedState: this.sharedState,
421
+ // Forward Builder lifecycle into our activeAgent slot so user
422
+ // injections during execution land in the running Builder, not
423
+ // the dead coordinator queue.
424
+ onActiveAgentChange: (agent) => this.setActiveAgent(agent),
425
+ // Full base-prompt opts so the Builder sub-agent inherits the same
426
+ // rules, trust boundary, code craft, verified-done discipline and
427
+ // completion contract the main agent runs on — instead of the thin
428
+ // standalone Builder prompt it used before. The Decisions-folder
429
+ // state rides along inside these opts and is rendered by
430
+ // buildSystemPrompt, so Builders pick up the convention too.
431
+ systemPromptOpts: this.systemPromptOpts,
432
+ });
433
+ const planContext = this.extractPlanContext(planResult);
434
+ try {
435
+ const execResult = await executor.executeAll(planContext, interceptedOnEvent, signal);
436
+ // ── Cross-task integration verification ──────────────────────────
437
+ // Each Builder verifies its OWN changes in isolation, but a clean
438
+ // run of N independent tasks can still leave the project broken at
439
+ // the seams — task 3 renames an export task 1 still imports, a
440
+ // migration lands without the route that reads it. Once execution
441
+ // finishes with nothing blocked, run a single verify pass over the
442
+ // UNION of every file the completed Builders touched, so typechecks
443
+ // and route/migration checks see the assembled whole. Reuses the
444
+ // existing runPostBuildVerification (with its built-in single retry
445
+ // semantics) — here we surface a failure rather than auto-fixing,
446
+ // since the fix could span multiple tasks and is the user's call.
447
+ let integrationBlock = null;
448
+ if (execResult.blocked === 0 && execResult.changedFiles.length > 0 && !signal?.aborted) {
449
+ try {
450
+ const integrationResult = await this.runPostBuildVerification(execResult.changedFiles, interceptedOnEvent, signal);
451
+ if (integrationResult) {
452
+ integrationBlock = integrationResult.block;
453
+ }
454
+ }
455
+ catch (err) {
456
+ logger.debug(`[auto-coordinator] Integration verification failed to run: ${err instanceof Error ? err.message : String(err)}`);
457
+ }
458
+ }
459
+ // Append the execution summary as the final assistant message so
460
+ // the user sees a clear "what got built" recap in the chat — with
461
+ // the integration verification block composed in when present.
462
+ const composedSummary = execResult.summary
463
+ ? (integrationBlock ? `${execResult.summary}\n\n${integrationBlock}` : execResult.summary)
464
+ : integrationBlock;
465
+ if (composedSummary) {
466
+ const summaryMessage = { role: 'assistant', content: composedSummary };
467
+ planResult.push(summaryMessage);
468
+ lastFinalMessage = summaryMessage;
469
+ }
470
+ }
471
+ catch (err) {
472
+ logger.debug(`[auto-coordinator] TaskExecutor threw: ${err}`);
473
+ onEvent({
474
+ type: 'error',
475
+ error: err instanceof Error ? err : new Error(String(err)),
476
+ });
477
+ }
478
+ }
479
+ }
480
+ // Now that the entire orchestration is complete, fire a single `done`
481
+ // event so the webview can transition the STOP button back to SEND.
482
+ onEvent({
483
+ type: 'done',
484
+ finalMessage: lastFinalMessage ?? { role: 'assistant', content: '' },
485
+ });
486
+ return planResult;
487
+ }
488
+ /**
489
+ * The original planning logic — classify, route, spawn task agent.
490
+ * Extracted so the execution dispatch wrapper in run() can stay readable.
491
+ */
492
+ async runPlanningLeg(messages, onEvent, signal) {
493
+ // Extract user message text for classification
494
+ const userMsg = this.getLastUserMessage(messages);
495
+ if (!userMsg) {
496
+ // No user message — just forward to coordinator
497
+ return this.runWithActiveAgent(this.coordinatorAgent, messages, onEvent, signal);
498
+ }
499
+ // First feedback the moment the coordinator starts. The classification and
500
+ // the intent-gate model call below run silently — without this, the UI
501
+ // shows nothing for several seconds (worst in the orchestration modes).
502
+ onEvent({ type: 'progress', labelKey: 'thinking.reading' });
503
+ const mode = this.detectMode(messages);
504
+ const tokenCount = this.estimateTokenCount(messages);
505
+ // Classify the task
506
+ const classification = classifyTask(userMsg.content, mode, tokenCount);
507
+ // ── Dataset event: classification decision ─────────────────────────
508
+ // Captures input shape (length category) and the classifier's pick.
509
+ // input_signature is intent category not raw text.
510
+ const userText = typeof userMsg.content === 'string'
511
+ ? userMsg.content
512
+ : userMsg.content.map(p => (p.type === 'text' ? p.text : '')).join(' ');
513
+ const userWordCount = userText.trim().split(/\s+/).filter(Boolean).length;
514
+ const inputSignature = userWordCount <= 5 ? 'short'
515
+ : userWordCount <= 30 ? 'medium'
516
+ : 'long';
517
+ avaEvents.emit('task_classification', {
518
+ input_signature: inputSignature,
519
+ classified_as: classification.category,
520
+ classifier_model: 'task-classifier',
521
+ });
522
+ // Direct handling — no spawn needed.
523
+ //
524
+ // "Direct" means NO SPECIALIST TEAM. It does not mean "run on the
525
+ // coordinator". Those two were conflated, and it was expensive: a chat
526
+ // turn skipped the router entirely and ran on the fleet's most costly
527
+ // model, so every fleet's cheap chat tier was dead code and the credits
528
+ // page quoted prices we weren't charging. Aurora chat cost 7 credits
529
+ // against a quoted 2 (Medium 3.5 at 3.64x instead of Small 4 at 0.99x);
530
+ // Longxiang cost 15 against a quoted 1 (K3 at 7.28x instead of V4 Flash
531
+ // at 0.43x). Billing was accurate for the model that ran — the wrong
532
+ // model was running.
533
+ //
534
+ // Now the router picks the model and it runs DIRECTLY (still no spawn,
535
+ // still no persona team). Vision is deliberately excluded below.
536
+ if (DIRECT_CATEGORIES.has(classification.category) && !classification.modelOverride) {
537
+ // Image inputs: a text-only coordinator (Supernova's DeepSeek V4) is blind
538
+ // to images. Rather than hand the whole turn to the vision model (which
539
+ // loses the coordinator's agentic depth), the coordinatorAgent carries the
540
+ // vision bridge — it runs the vision model (Qwen Omni) to DESCRIBE the
541
+ // image, then acts on that description itself. So Supernova "sees" the
542
+ // image and still does the work. No-op when the coordinator already
543
+ // supports vision (a BYOK Qwen or GLM that can see images directly).
544
+ const directAgent = this.resolveDirectAgent(classification.category);
545
+ onEvent({ type: 'progress', labelKey: 'thinking.working', model: directAgent.modelName });
546
+ return this.runWithActiveAgent(directAgent.agent, messages, onEvent, signal);
547
+ }
548
+ // ── Upstream Flash intent gate ────────────────────────────────────
549
+ // Before we route + spawn, ask a cheap fast model (Qwen 3.5 Flash)
550
+ // whether the coordinator can handle this directly or whether the
551
+ // specialist team is genuinely warranted. Most prompts do NOT need
552
+ // the team — a ~200-token Flash call saves 10K–20K tokens of
553
+ // persona orchestration on those. Explicit model override bypasses
554
+ // the gate (the user asked for a specific model, respect it).
555
+ if (this.intentGate && !classification.modelOverride) {
556
+ const intent = await classifyIntent({
557
+ userMessage: userText,
558
+ mode,
559
+ provider: this.intentGate.provider,
560
+ model: this.intentGate.model,
561
+ signal,
562
+ });
563
+ if (intent && !intent.needsTeam) {
564
+ logger.info(`[auto-coordinator] Intent gate: direct (${intent.reasoning})`);
565
+ // An upstream Flash gate has already ruled that no specialist team
566
+ // is needed. If the coordinator speculatively creates session tasks
567
+ // during its run, the downstream orchestration gate (which asks the
568
+ // same Flash model the same question) would be pure redundancy.
569
+ // Flip the flag so shouldOrchestrate() short-circuits. Saves ~300
570
+ // tokens + ~2.5s on every direct route that happens to spawn tasks.
571
+ if (this.sharedState)
572
+ this.sharedState.conductorSynthesizedThisTurn = true;
573
+ // Same reasoning as DIRECT_CATEGORIES above: the gate has ruled out a
574
+ // specialist TEAM, not ruled in the coordinator. Use the category's
575
+ // routed model so a gate-passed turn isn't silently billed at
576
+ // coordinator rates.
577
+ const gatedAgent = this.resolveDirectAgent(classification.category);
578
+ onEvent({ type: 'progress', labelKey: 'thinking.working', model: gatedAgent.modelName });
579
+ return this.runWithActiveAgent(gatedAgent.agent, messages, onEvent, signal);
580
+ }
581
+ }
582
+ // For Teach mode, classify creation-vs-delivery depth upfront so the
583
+ // same Flash decision can influence both routing (creation gets the
584
+ // coordinator-tier model, delivery stays on the cheaper teach-tier)
585
+ // and the Conductor (full team vs Tutor-only). Falls back to undefined
586
+ // if Flash is unavailable — router and orchestrate both handle that.
587
+ let teachDepth;
588
+ if (mode === 'teach' && this.intentGate) {
589
+ const decision = await classifyTeachDepth({
590
+ userMessage: userText,
591
+ provider: this.intentGate.provider,
592
+ model: this.intentGate.model,
593
+ signal,
594
+ });
595
+ if (decision) {
596
+ teachDepth = decision.depth;
597
+ logger.info(`[auto-coordinator] Teach depth gate: ${decision.depth} (${decision.reasoning})`);
598
+ }
599
+ }
600
+ // Route to best model — depth-aware for Teach mode
601
+ const route = this.router.route(classification.category, classification.modelOverride, teachDepth);
602
+ if (!route) {
603
+ // No model available — fallback to coordinator
604
+ return this.runWithActiveAgent(this.coordinatorAgent, messages, onEvent, signal);
605
+ }
606
+ // Routing resolved — name the model taking it before the still-silent
607
+ // agent spin-up + first-token latency.
608
+ onEvent({ type: 'progress', labelKey: 'thinking.working', model: route.model.name });
609
+ // ── Dataset event: routing decision ────────────────────────────────
610
+ avaEvents.emit('routing_decision', {
611
+ classification: classification.category,
612
+ chosen_model: route.model.id,
613
+ reason: route.reason,
614
+ });
615
+ // If routed to the same model as coordinator, just run directly
616
+ if (route.model.id === this.coordinatorModel.id && route.provider.name === this.coordinatorProvider.name) {
617
+ return this.runWithActiveAgent(this.coordinatorAgent, messages, onEvent, signal);
618
+ }
619
+ // Emit routing event
620
+ this.emitAutoEvent(onEvent, {
621
+ type: 'auto_routing',
622
+ category: classification.category,
623
+ model: route.model.name,
624
+ reason: classification.reason + ' → ' + route.reason,
625
+ });
626
+ // Spawn task agent
627
+ try {
628
+ const result = await this.spawnTaskAgent(classification.category, route, messages, userMsg, onEvent, signal, teachDepth);
629
+ return result;
630
+ }
631
+ catch (err) {
632
+ // Fallback to coordinator on spawn failure
633
+ onEvent({ type: 'error', error: err instanceof Error ? err : new Error(String(err)) });
634
+ return this.runWithActiveAgent(this.coordinatorAgent, messages, onEvent, signal);
635
+ }
636
+ }
637
+ /**
638
+ * Pick the agent for a DIRECT turn — one that needs no specialist team.
639
+ *
640
+ * Asks the router for the category's model and builds a peer of the
641
+ * coordinator agent on it: same tools, cwd, shared state and vision
642
+ * bridge, only the model differs. That keeps a direct turn behaving
643
+ * exactly as before while running on the tier the fleet actually
644
+ * designed for the job.
645
+ *
646
+ * Falls back to the coordinator agent when:
647
+ * - the category is `vision` — the coordinator agent carries the vision
648
+ * bridge (it runs a vision model to DESCRIBE an image, then acts on
649
+ * that description itself). Routing vision away would hand the whole
650
+ * turn to the vision model and lose the coordinator's agentic depth,
651
+ * which is the opposite of what the bridge exists for.
652
+ * - the router returns nothing, or returns the coordinator's own model.
653
+ *
654
+ * Agents are cached per model id: a chat-heavy session would otherwise
655
+ * construct a fresh Agent every turn.
656
+ */
657
+ resolveDirectAgent(category) {
658
+ const coordinator = { agent: this.coordinatorAgent, modelName: this.coordinatorModel.name };
659
+ if (category === 'vision')
660
+ return coordinator;
661
+ const route = this.router.route(category);
662
+ if (!route)
663
+ return coordinator;
664
+ if (route.model.id === this.coordinatorModel.id &&
665
+ route.provider.name === this.coordinatorProvider.name) {
666
+ return coordinator;
667
+ }
668
+ const cacheKey = `${route.provider.name}:${route.model.id}`;
669
+ let agent = this.directAgents.get(cacheKey);
670
+ if (!agent) {
671
+ agent = new Agent({
672
+ provider: route.provider,
673
+ model: route.model,
674
+ visionProvider: this.visionProvider ?? undefined,
675
+ visionModel: this.visionModel ?? undefined,
676
+ toolRegistry: this.toolRegistry,
677
+ cwd: this.cwd,
678
+ sharedState: this.sharedState,
679
+ });
680
+ this.directAgents.set(cacheKey, agent);
681
+ }
682
+ return { agent, modelName: route.model.name };
683
+ }
684
+ /**
685
+ * Run an agent and register it as the active agent for the duration so
686
+ * inject() can route mid-run user messages to whichever agent is actually
687
+ * executing right now.
688
+ */
689
+ async runWithActiveAgent(agent, messages, onEvent, signal) {
690
+ this.activeAgent = agent;
691
+ try {
692
+ return await agent.run(messages, onEvent, signal);
693
+ }
694
+ finally {
695
+ this.activeAgent = null;
696
+ }
697
+ }
698
+ /**
699
+ * Public hook so TaskExecutor can register/unregister the Builder agent
700
+ * it's currently driving. Without this, mid-run injections during the
701
+ * execution leg would land in the wrong queue and never reach the model.
702
+ */
703
+ setActiveAgent(agent) {
704
+ this.activeAgent = agent;
705
+ }
706
+ /** Pull the TaskManager out of sharedState if the host wired it in. */
707
+ getTaskManager() {
708
+ const tm = this.sharedState.taskManager;
709
+ return tm && typeof tm.getSessionTasks === 'function' ? tm : undefined;
710
+ }
711
+ /**
712
+ * Orchestration gate — decides whether to dispatch the TaskExecutor
713
+ * for speculatively-created session tasks.
714
+ *
715
+ * Uses Qwen Flash (via sharedState.intentClassifier's provider/model)
716
+ * to judge whether the user's actual message requested the kind of
717
+ * multi-step plan the coordinator speculatively created. Returns true
718
+ * if the executor should run, false if the tasks should be deferred.
719
+ *
720
+ * Falls open (returns true) on any failure so we preserve existing
721
+ * behaviour when classification is unavailable — the gate is a
722
+ * guard-rail enhancement, not a hard block.
723
+ */
724
+ async shouldOrchestrate(messages, taskTitles) {
725
+ // Single task is always fine — it's not "speculative expansion" of
726
+ // a single request, it's just the one thing being tracked as a task.
727
+ if (taskTitles.length <= 1)
728
+ return true;
729
+ // Short-circuit: if the Conductor already ran this turn and produced
730
+ // a synthesis, the 5-persona team has already validated the user's
731
+ // intent — asking Flash "should we orchestrate?" on top of that is
732
+ // pure redundancy. Saves the Flash call (~300 tokens, ~2.5s).
733
+ if (this.sharedState?.conductorSynthesizedThisTurn) {
734
+ return true;
735
+ }
736
+ // Find the latest user message text.
737
+ let userMessage = '';
738
+ for (let i = messages.length - 1; i >= 0; i--) {
739
+ const m = messages[i];
740
+ if (m.role !== 'user')
741
+ continue;
742
+ const content = m.content;
743
+ const text = typeof content === 'string'
744
+ ? content
745
+ : Array.isArray(content)
746
+ ? content.filter(p => p.type === 'text').map(p => ('text' in p ? p.text : '')).join(' ')
747
+ : '';
748
+ if (text.trim() && !text.trimStart().startsWith('[')) {
749
+ userMessage = text.trim();
750
+ break;
751
+ }
752
+ }
753
+ if (!userMessage)
754
+ return true;
755
+ // Pull the Qwen Flash provider/model via the intentClassifier already
756
+ // wired into sharedState. Reusing it here avoids a second resolution.
757
+ const classifier = this.sharedState?.intentClassifier;
758
+ const provider = classifier?.provider;
759
+ const model = classifier?.model;
760
+ if (!provider || !model) {
761
+ // No Flash available — preserve existing behaviour (orchestrate).
762
+ return true;
763
+ }
764
+ const systemPrompt = `You are a gate for an AI coding agent. A user sent a message, and the agent speculatively created a multi-task plan. Your job: decide if the user actually wants all those tasks executed, or if they asked for something simpler.
765
+
766
+ Output exactly one word:
767
+ - yes — the user's message genuinely asked for a multi-step project or explicitly requested a plan/breakdown
768
+ - no — the user asked for one thing (a single action like "launch the dev", "run tests", "show me X", "explain Y"), and the agent over-expanded the scope
769
+
770
+ When in doubt, output "no". It's better to do the one thing the user asked and wait for follow-up than to execute a 5-task speculative plan they didn't request.`;
771
+ const userPrompt = `User's message:
772
+ """
773
+ ${userMessage.slice(0, 500)}
774
+ """
775
+
776
+ Tasks the agent speculatively created:
777
+ ${taskTitles.map((t, i) => `${i + 1}. ${t}`).join('\n')}
778
+
779
+ Should these tasks be executed as a plan? Output yes or no.`;
780
+ try {
781
+ const timeout = new Promise((_, reject) => setTimeout(() => reject(new Error('orchestration gate timeout')), 2500));
782
+ const callPromise = provider.createCompletion({
783
+ model: model.id,
784
+ messages: [
785
+ { role: 'system', content: systemPrompt },
786
+ { role: 'user', content: userPrompt },
787
+ ],
788
+ temperature: 0,
789
+ max_tokens: 8,
790
+ stream: false,
791
+ });
792
+ const response = await Promise.race([callPromise, timeout]);
793
+ // Meter the call — Flash-based gate, same cost bracket as intent gate.
794
+ chargeCredits('light_call', {
795
+ model: model.id,
796
+ rawTokens: extractUsage(response.usage),
797
+ });
798
+ const resp = response;
799
+ const content = resp.choices?.[0]?.message?.content ?? resp.message?.content ?? '';
800
+ const raw = (typeof content === 'string' ? content : '').trim().toLowerCase();
801
+ if (raw.startsWith('yes'))
802
+ return true;
803
+ if (raw.startsWith('no'))
804
+ return false;
805
+ logger.debug(`[auto-coordinator] Orchestration gate returned unrecognised output: "${raw.slice(0, 40)}", defaulting to orchestrate`);
806
+ return true;
807
+ }
808
+ catch (err) {
809
+ logger.debug(`[auto-coordinator] Orchestration gate failed, defaulting to orchestrate: ${err instanceof Error ? err.message : String(err)}`);
810
+ return true;
811
+ }
812
+ }
813
+ /**
814
+ * Pull a concise plan context from the conversation so the Builder sub-agents
815
+ * have something more grounded than just task titles. Looks for the most
816
+ * recent present_plan tool call and extracts title/goal/verification.
817
+ */
818
+ extractPlanContext(messages) {
819
+ for (let i = messages.length - 1; i >= 0; i--) {
820
+ const m = messages[i];
821
+ if (m.role !== 'assistant')
822
+ continue;
823
+ const tcs = m.tool_calls;
824
+ if (!tcs)
825
+ continue;
826
+ for (const tc of tcs) {
827
+ if (tc.function?.name !== 'present_plan')
828
+ continue;
829
+ try {
830
+ const args = JSON.parse(tc.function.arguments || '{}');
831
+ const parts = [];
832
+ if (args.title)
833
+ parts.push(`**${args.title}**`);
834
+ if (args.goal)
835
+ parts.push(args.goal);
836
+ if (args.verification)
837
+ parts.push(`Verification: ${args.verification}`);
838
+ if (parts.length > 0)
839
+ return parts.join('\n');
840
+ }
841
+ catch {
842
+ /* fall through to next */
843
+ }
844
+ }
845
+ }
846
+ // Fallback: the user's most recent message
847
+ for (let i = messages.length - 1; i >= 0; i--) {
848
+ if (messages[i].role === 'user') {
849
+ const c = messages[i].content;
850
+ return typeof c === 'string' ? c : '';
851
+ }
852
+ }
853
+ return '';
854
+ }
855
+ /**
856
+ * Inject a mid-run message. Forwards to whichever agent is currently
857
+ * executing — the planning task agent during the planning leg, the
858
+ * active Builder during execution, or the coordinator agent for direct
859
+ * categories. Falling back to the coordinator agent ensures injections
860
+ * still queue when no run is in flight.
861
+ */
862
+ inject(message) {
863
+ if (this.activeAgent) {
864
+ this.activeAgent.inject(message);
865
+ return;
866
+ }
867
+ this.coordinatorAgent.inject(message);
868
+ }
869
+ /** Manual context compression (delegates to coordinator agent) */
870
+ async manualCompress(messages, onEvent, signal) {
871
+ return this.coordinatorAgent.manualCompress(messages, onEvent, signal);
872
+ }
873
+ /** Compress context (delegates to coordinator agent) */
874
+ async compressContext(messages, onEvent, signal) {
875
+ return this.coordinatorAgent.compressContext(messages, onEvent, signal);
876
+ }
877
+ /** Update route preferences */
878
+ setPreferences(prefs) {
879
+ this.router.setPreferences(prefs);
880
+ }
881
+ // ─── Private ────────────────────────────────────────────────────────────────
882
+ async spawnTaskAgent(category, route, originalMessages, userMsg, onEvent, signal, teachDepth) {
883
+ // Emit agent start
884
+ this.emitAutoEvent(onEvent, { type: 'auto_agent_start', model: route.model.name, category });
885
+ // Build system prompt for the task agent. The brief (regex-generated
886
+ // conversation digest + file pointers) is appended *only* if Conductor
887
+ // doesn't end up producing a synthesis — synthesis and brief overlap
888
+ // in purpose, and stacking both costs ~500–800 tokens of redundancy
889
+ // per spawned task.
890
+ const mode = CATEGORY_TO_MODE[category] || 'work';
891
+ const systemPrompt = buildSystemPrompt({
892
+ ...this.systemPromptOpts,
893
+ mode,
894
+ });
895
+ // Extract the user's task text — same content brief.task would hold,
896
+ // but without paying for brief generation up-front.
897
+ const taskText = typeof userMsg.content === 'string'
898
+ ? userMsg.content
899
+ : userMsg.content.filter(p => p.type === 'text').map(p => p.text).join('\n');
900
+ // Create task conversation with L0 system prompt + user message.
901
+ // The system prompt is re-set with brief appended later if Conductor
902
+ // doesn't orchestrate.
903
+ const taskConversation = new Conversation();
904
+ taskConversation.setSystemPrompt(systemPrompt);
905
+ // Add the user's actual message
906
+ taskConversation.addUserMessage(userMsg.content);
907
+ // Set activeModelId to spawned agent's model for tool routing
908
+ const originalActiveModel = this.sharedState.activeModelId;
909
+ this.sharedState.activeModelId = route.model.id;
910
+ // Create the task agent. Wired with the vision bridge so a text-only
911
+ // routed model (e.g. a coding task that arrives with a screenshot) can
912
+ // still see the image via the vision model. No-op when route.model sees
913
+ // images itself.
914
+ const taskAgent = new Agent({
915
+ provider: route.provider,
916
+ model: route.model,
917
+ visionProvider: this.visionProvider ?? undefined,
918
+ visionModel: this.visionModel ?? undefined,
919
+ toolRegistry: this.toolRegistry,
920
+ cwd: this.cwd,
921
+ sharedState: this.sharedState,
922
+ });
923
+ // Context tracker — safe pause before hitting limits
924
+ const tracker = new ContextTracker(route.model.contextWindow);
925
+ tracker.onCritical = () => {
926
+ taskAgent.inject('[CONTEXT LIMIT] You are approaching your context limit. ' +
927
+ 'Wrap up your current work, save progress, and summarise what you have done so far.');
928
+ };
929
+ // Wrap onEvent to track context and proxy events
930
+ const wrappedOnEvent = (event) => {
931
+ // Track context usage
932
+ if (event.type === 'context_usage') {
933
+ tracker.update(event.context?.usedTokens || 0);
934
+ }
935
+ // Forward all events to the user
936
+ onEvent(event);
937
+ };
938
+ // Run Conductor orchestration if this category needs it. When Conductor
939
+ // produces a synthesis, it stands in for the regex brief — stacking
940
+ // both is ~500–800 tokens of duplicated context per spawned task.
941
+ let orchestrated = false;
942
+ if (ORCHESTRATED_CATEGORIES.has(category)) {
943
+ const taskConductor = new Conductor({
944
+ provider: route.provider,
945
+ model: route.model,
946
+ // PLATFORM: thread the intent-gate's cheap fast pair through so
947
+ // personas tagged modelTier:'light' (critics, summarisers, readers)
948
+ // run on it instead of the heavy route model — a cost optimisation
949
+ // the platform can afford because it holds every key.
950
+ // BYOK: pass nothing, so the Conductor runs EVERY persona on the
951
+ // user's coordinator model. The full persona team — the real Ava
952
+ // magic — runs on the exact model they chose, never split off to a
953
+ // cheaper model they might not have a key for.
954
+ lightProvider: this.hasPlatform ? this.intentGate?.provider : undefined,
955
+ lightModel: this.hasPlatform ? this.intentGate?.model : undefined,
956
+ // Vision bridge so text-only personas can see attached images.
957
+ visionProvider: this.visionProvider ?? undefined,
958
+ visionModel: this.visionModel ?? undefined,
959
+ toolRegistry: this.toolRegistry,
960
+ cwd: this.cwd,
961
+ sharedState: this.sharedState,
962
+ });
963
+ if (taskConductor.needsOrchestration(taskText, mode)) {
964
+ try {
965
+ const { synthesisPrompt } = await taskConductor.orchestrate(taskText, mode, taskConversation.getMessages(), (conductorEvent) => {
966
+ // Forward conductor events
967
+ onEvent(conductorEvent);
968
+ }, signal, {
969
+ // Break orchestration early if the user injects a message
970
+ // while the persona team is running — without this, a full
971
+ // team on planning/security/brainstorm blocks for 10–60s
972
+ // and silently drops anything the user sends during that
973
+ // window. The task agent's main loop picks up the
974
+ // interjection on its next iteration.
975
+ hasPendingInjection: () => taskAgent.hasPendingInterjections(),
976
+ // Flash-classified Teach depth wins over the conductor's
977
+ // regex fallback. Undefined leaves orchestrate to use its
978
+ // own detection (works for non-Teach modes and as the
979
+ // safety net when Flash is unavailable).
980
+ depth: teachDepth,
981
+ });
982
+ if (synthesisPrompt) {
983
+ const msgs = taskConversation.getMessages();
984
+ msgs.push({ role: 'user', content: `[Internal Planning]\n\n${synthesisPrompt}` });
985
+ taskConversation.setMessages(msgs);
986
+ orchestrated = true;
987
+ }
988
+ }
989
+ catch {
990
+ // Conductor failure is non-fatal — agent proceeds without orchestration
991
+ }
992
+ }
993
+ }
994
+ // Fallback: if Conductor didn't orchestrate (either category wasn't in
995
+ // ORCHESTRATED_CATEGORIES, needsOrchestration returned false, or it
996
+ // threw), append the regex brief so the agent still has conversation
997
+ // context + file pointers. Brief generation is regex-only — no LLM
998
+ // call — but ~500–800 tokens in the prompt, so we skip it when
999
+ // synthesis already grounds the agent.
1000
+ if (!orchestrated) {
1001
+ const memories = await this.recallMemories(userMsg.content);
1002
+ const brief = generateBrief(userMsg.content, originalMessages, memories, this.projectInstructions, route.model);
1003
+ taskConversation.setSystemPrompt(systemPrompt + '\n\n---\n\n' + formatBriefAsSystem(brief));
1004
+ }
1005
+ // Run the task agent — register it as the active agent so user
1006
+ // injections are routed here while it's running.
1007
+ this.activeAgent = taskAgent;
1008
+ let updatedTaskMessages;
1009
+ try {
1010
+ updatedTaskMessages = await taskAgent.run(taskConversation.getMessages(), wrappedOnEvent, signal);
1011
+ }
1012
+ finally {
1013
+ this.activeAgent = null;
1014
+ }
1015
+ // Restore activeModelId
1016
+ this.sharedState.activeModelId = originalActiveModel;
1017
+ // Extract the agent's final assistant message
1018
+ let agentResult = this.extractLastAssistantMessage(updatedTaskMessages);
1019
+ // ── Post-build verification (M2 — with one auto-retry on failure) ────
1020
+ // If the agent emitted a <changes-summary> block, run verify_change on
1021
+ // the declared files so typechecks / route curls / migration dry-runs
1022
+ // get automatically run on real state.
1023
+ //
1024
+ // On failure, AutoCoordinator injects the failure report as a user-role
1025
+ // context message and re-dispatches the task agent ONCE. The retry sees
1026
+ // exactly which checks broke and gets a chance to fix them without the
1027
+ // user having to intervene. Second failure surfaces to the user with
1028
+ // both attempts visible — no third retry (spiralling is worse than
1029
+ // surfacing).
1030
+ if (agentResult) {
1031
+ const declared = extractChangesSummary(agentResult);
1032
+ if (declared && declared.files.length > 0) {
1033
+ try {
1034
+ const verifyResult = await this.runPostBuildVerification(declared.files, onEvent, signal);
1035
+ // Auto-retry path — verification failed, attempt not aborted.
1036
+ if (verifyResult && !verifyResult.passed && !signal?.aborted) {
1037
+ onEvent({
1038
+ type: 'verification_retry_start',
1039
+ reason: verifyResult.report.slice(0, 400),
1040
+ });
1041
+ // Preserve the first attempt's output + failure block so the
1042
+ // user sees both attempts in the final transcript. Builder's
1043
+ // retry will be appended below a separator.
1044
+ const firstAttemptComposed = agentResult + '\n\n' + verifyResult.block;
1045
+ const retryContext = `[verification failed]\n\n${verifyResult.report}\n\n` +
1046
+ `The previous attempt did not pass verification. Fix the issue(s) above and re-emit an updated <changes-summary> block at the end of your response.`;
1047
+ // Build the retry input: the full history the task agent
1048
+ // saw on its first pass + the new messages it produced +
1049
+ // the failure-context user message. Post-Option-2 refactor,
1050
+ // `updatedTaskMessages` is only the NEW messages from the
1051
+ // first pass, so we prepend taskConversation's pre-run
1052
+ // messages to get the full history the retry agent needs.
1053
+ const retryInputMessages = [
1054
+ ...taskConversation.getMessages(),
1055
+ ...updatedTaskMessages,
1056
+ { role: 'user', content: retryContext },
1057
+ ];
1058
+ this.activeAgent = taskAgent;
1059
+ let retryMessages;
1060
+ try {
1061
+ retryMessages = await taskAgent.run(retryInputMessages, wrappedOnEvent, signal);
1062
+ }
1063
+ finally {
1064
+ this.activeAgent = null;
1065
+ }
1066
+ const retryResult = this.extractLastAssistantMessage(retryMessages);
1067
+ if (retryResult) {
1068
+ // Try to re-verify the retry attempt.
1069
+ const retryDeclared = extractChangesSummary(retryResult);
1070
+ let secondVerify = null;
1071
+ if (retryDeclared && retryDeclared.files.length > 0 && !signal?.aborted) {
1072
+ try {
1073
+ secondVerify = await this.runPostBuildVerification(retryDeclared.files, onEvent, signal);
1074
+ }
1075
+ catch (err) {
1076
+ logger.debug(`[auto-coordinator] Retry verification failed to run: ${err instanceof Error ? err.message : String(err)}`);
1077
+ }
1078
+ }
1079
+ // Compose: first attempt (with its fail block) → separator →
1080
+ // retry attempt → retry's verification block (or note that
1081
+ // the retry didn't emit a new summary).
1082
+ const parts = [
1083
+ firstAttemptComposed,
1084
+ '\n---\n\n[auto-retry]\n\n',
1085
+ retryResult,
1086
+ ];
1087
+ if (secondVerify) {
1088
+ parts.push('\n\n' + secondVerify.block);
1089
+ }
1090
+ else if (!retryDeclared || retryDeclared.files.length === 0) {
1091
+ parts.push('\n\n[verification · no changes-summary emitted on retry — re-verify skipped]');
1092
+ }
1093
+ agentResult = parts.join('');
1094
+ updatedTaskMessages = retryMessages;
1095
+ }
1096
+ else {
1097
+ // Retry produced no assistant output at all — keep first
1098
+ // attempt with its failure block so the user at least sees
1099
+ // what failed.
1100
+ agentResult = firstAttemptComposed;
1101
+ }
1102
+ }
1103
+ else if (verifyResult) {
1104
+ // Happy path: passed (or aborted — either way, just surface the block).
1105
+ agentResult = agentResult + '\n\n' + verifyResult.block;
1106
+ }
1107
+ // agentResult (the composed output string) is the single
1108
+ // source of truth for what the main conversation sees. The
1109
+ // return at the bottom of this method wraps it in a synthetic
1110
+ // assistant message — no need to patch updatedTaskMessages,
1111
+ // that array is internal-only and not passed to the caller.
1112
+ }
1113
+ catch (err) {
1114
+ logger.debug(`[auto-coordinator] Post-build verification failed to run: ${err instanceof Error ? err.message : String(err)}`);
1115
+ // Verification failing to RUN is different from a check failing;
1116
+ // it shouldn't block the task, just stay silent.
1117
+ }
1118
+ }
1119
+ }
1120
+ // Build summary for coordinator's context (keeps it lean)
1121
+ const summary = agentResult
1122
+ ? (agentResult.length > 3000 ? agentResult.slice(0, 500) + '...' : agentResult)
1123
+ : 'Task completed.';
1124
+ // Emit agent end
1125
+ this.emitAutoEvent(onEvent, { type: 'auto_agent_end', model: route.model.name, summary });
1126
+ // Return ONLY the new messages from this turn — the caller appends
1127
+ // to its conversation. AutoCoordinator produces a single synthesised
1128
+ // assistant message per turn representing the spawned task agent's
1129
+ // final output (with any verification blocks composed in). The
1130
+ // sub-agent's intermediate tool calls are NOT surfaced to the main
1131
+ // conversation — by design, they're execution detail the user sees
1132
+ // live in the stream but doesn't need persisted against the
1133
+ // coordinator's transcript.
1134
+ if (!agentResult)
1135
+ return [];
1136
+ return [{ role: 'assistant', content: agentResult }];
1137
+ }
1138
+ /**
1139
+ * Post-build verification hook. Invoked after the task agent returns when
1140
+ * the agent emitted a <changes-summary> block. Runs verify_change against
1141
+ * the declared files, emits verification_start / verification_end events,
1142
+ * and returns a structured result the caller uses to decide whether to
1143
+ * auto-retry. Returns null when there was nothing to verify.
1144
+ */
1145
+ async runPostBuildVerification(files, onEvent, signal) {
1146
+ onEvent({ type: 'verification_start', files });
1147
+ const tool = new VerifyChangeTool();
1148
+ const result = await tool.execute({ files }, { cwd: this.cwd, signal, sharedState: this.sharedState });
1149
+ const stats = (result.metadata ?? {});
1150
+ const passed = result.success;
1151
+ onEvent({
1152
+ type: 'verification_end',
1153
+ passed,
1154
+ report: result.output,
1155
+ stats: {
1156
+ total: stats.total ?? 0,
1157
+ passed: stats.passed ?? 0,
1158
+ failed: stats.failed ?? 0,
1159
+ skipped: stats.skipped ?? 0,
1160
+ },
1161
+ });
1162
+ // Only surface a block if there was something to verify.
1163
+ if ((stats.total ?? 0) === 0)
1164
+ return null;
1165
+ const header = passed
1166
+ ? `[verification ✓] ${stats.passed ?? 0} check(s) passed, ${stats.skipped ?? 0} skipped.`
1167
+ : `[verification ✗] ${stats.failed ?? 0} of ${stats.total ?? 0} check(s) failed — see details below.`;
1168
+ return {
1169
+ passed,
1170
+ block: `${header}\n\n${result.output}`,
1171
+ report: result.output,
1172
+ };
1173
+ }
1174
+ getLastUserMessage(messages) {
1175
+ for (let i = messages.length - 1; i >= 0; i--) {
1176
+ if (messages[i].role === 'user') {
1177
+ return { content: messages[i].content, index: i };
1178
+ }
1179
+ }
1180
+ return null;
1181
+ }
1182
+ extractLastAssistantMessage(messages) {
1183
+ for (let i = messages.length - 1; i >= 0; i--) {
1184
+ if (messages[i].role === 'assistant') {
1185
+ const msg = messages[i];
1186
+ return typeof msg.content === 'string' ? msg.content : null;
1187
+ }
1188
+ }
1189
+ return null;
1190
+ }
1191
+ /**
1192
+ * The mode this turn is in — the same answer core's tool filter gets.
1193
+ *
1194
+ * This used to search the SYSTEM prompt for `'Chat mode'`, `'Plan mode'` and
1195
+ * three more, plus five `'… mindset'` strings that appear nowhere in the
1196
+ * codebase. The real marker is `[Plan Mode]`, capital M, on the USER message.
1197
+ * Nothing ever matched, so it returned `'work'` for every mode on every turn,
1198
+ * and Write mode had no branch at all.
1199
+ *
1200
+ * Three callers were reading that: the dataset trajectory (every turn logged
1201
+ * as work), the task classifier (never once told the real mode), and the
1202
+ * Builder mode gate — which is what made a Plan-mode turn start writing code.
1203
+ *
1204
+ * Now it delegates. One detector, shared with the agent, covering all eleven
1205
+ * modes and the rooms.
1206
+ */
1207
+ detectMode(messages) {
1208
+ return detectModeFromMessages(messages) ?? 'work';
1209
+ }
1210
+ estimateTokenCount(messages) {
1211
+ let total = 0;
1212
+ for (const msg of messages) {
1213
+ if (typeof msg.content === 'string') {
1214
+ total += Math.ceil(msg.content.length / 4);
1215
+ }
1216
+ else if (Array.isArray(msg.content)) {
1217
+ for (const part of msg.content) {
1218
+ if (part.type === 'text')
1219
+ total += Math.ceil(part.text.length / 4);
1220
+ else
1221
+ total += 85; // image
1222
+ }
1223
+ }
1224
+ }
1225
+ return total;
1226
+ }
1227
+ async recallMemories(content) {
1228
+ const text = typeof content === 'string'
1229
+ ? content
1230
+ : content.filter(p => p.type === 'text').map(p => p.text).join(' ');
1231
+ // Try Memory Agent first (curated brief)
1232
+ const ma = this.sharedState.memoryAgent;
1233
+ if (ma?.generateBrief) {
1234
+ try {
1235
+ const brief = await ma.generateBrief(text);
1236
+ if (brief.summary)
1237
+ return brief.summary;
1238
+ }
1239
+ catch { /* fall through */ }
1240
+ }
1241
+ // Fallback: direct recall
1242
+ const mm = this.sharedState.memoryManager;
1243
+ if (!mm?.recall)
1244
+ return '';
1245
+ try {
1246
+ const entries = await mm.recall({ query: text, limit: 5, scope: 'all' });
1247
+ if (!entries || entries.length === 0)
1248
+ return '';
1249
+ return entries.map(e => `[${e.category}] ${e.content}`).join('\n');
1250
+ }
1251
+ catch {
1252
+ return '';
1253
+ }
1254
+ }
1255
+ emitAutoEvent(onEvent, event) {
1256
+ // Auto events are forwarded as AgentEvents with the same shape
1257
+ onEvent(event);
1258
+ }
1259
+ }
1260
+ //# sourceMappingURL=auto-coordinator.js.map