@vascend/talos 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (620) hide show
  1. package/README.md +202 -0
  2. package/dist/backend/asset-events.d.ts +31 -0
  3. package/dist/backend/asset-events.js +149 -0
  4. package/dist/backend/assets.d.ts +31 -0
  5. package/dist/backend/assets.js +210 -0
  6. package/dist/backend/auth.d.ts +18 -0
  7. package/dist/backend/auth.js +59 -0
  8. package/dist/backend/config.d.ts +14 -0
  9. package/dist/backend/config.js +41 -0
  10. package/dist/backend/conversations.d.ts +21 -0
  11. package/dist/backend/conversations.js +141 -0
  12. package/dist/backend/crypto.d.ts +9 -0
  13. package/dist/backend/crypto.js +68 -0
  14. package/dist/backend/engine.d.ts +13 -0
  15. package/dist/backend/engine.js +78 -0
  16. package/dist/backend/http.d.ts +25 -0
  17. package/dist/backend/http.js +112 -0
  18. package/dist/backend/index.d.ts +1 -0
  19. package/dist/backend/index.js +24 -0
  20. package/dist/backend/routes.d.ts +14 -0
  21. package/dist/backend/routes.js +169 -0
  22. package/dist/backend/sdk.d.ts +12 -0
  23. package/dist/backend/sdk.js +11 -0
  24. package/dist/backend/server.d.ts +12 -0
  25. package/dist/backend/server.js +91 -0
  26. package/dist/backend/temp-image-store.d.ts +46 -0
  27. package/dist/backend/temp-image-store.js +197 -0
  28. package/dist/backend/types.d.ts +103 -0
  29. package/dist/backend/types.js +29 -0
  30. package/dist/backend/users.d.ts +13 -0
  31. package/dist/backend/users.js +76 -0
  32. package/dist/backend/ws-handler.d.ts +14 -0
  33. package/dist/backend/ws-handler.js +72 -0
  34. package/dist/backend/ws.d.ts +19 -0
  35. package/dist/backend/ws.js +146 -0
  36. package/dist/core/agent.d.ts +56 -0
  37. package/dist/core/agent.js +1783 -0
  38. package/dist/core/background.d.ts +45 -0
  39. package/dist/core/background.js +140 -0
  40. package/dist/core/bootstrap.d.ts +45 -0
  41. package/dist/core/bootstrap.js +294 -0
  42. package/dist/core/cli-args.d.ts +41 -0
  43. package/dist/core/cli-args.js +282 -0
  44. package/dist/core/collapsible-output.d.ts +38 -0
  45. package/dist/core/collapsible-output.js +143 -0
  46. package/dist/core/compaction-checkpoint.d.ts +9 -0
  47. package/dist/core/compaction-checkpoint.js +58 -0
  48. package/dist/core/compaction.d.ts +42 -0
  49. package/dist/core/compaction.js +270 -0
  50. package/dist/core/config.d.ts +49 -0
  51. package/dist/core/config.js +417 -0
  52. package/dist/core/context-ledger.d.ts +99 -0
  53. package/dist/core/context-ledger.js +222 -0
  54. package/dist/core/context-policy.d.ts +17 -0
  55. package/dist/core/context-policy.js +81 -0
  56. package/dist/core/continuation-review.d.ts +23 -0
  57. package/dist/core/continuation-review.js +64 -0
  58. package/dist/core/crash-report.d.ts +3 -0
  59. package/dist/core/crash-report.js +27 -0
  60. package/dist/core/credentials.d.ts +11 -0
  61. package/dist/core/credentials.js +183 -0
  62. package/dist/core/doctor.d.ts +24 -0
  63. package/dist/core/doctor.js +125 -0
  64. package/dist/core/effort.d.ts +5 -0
  65. package/dist/core/effort.js +42 -0
  66. package/dist/core/env-paths.d.ts +3 -0
  67. package/dist/core/env-paths.js +38 -0
  68. package/dist/core/execution-guidance.d.ts +9 -0
  69. package/dist/core/execution-guidance.js +73 -0
  70. package/dist/core/execution-target.d.ts +41 -0
  71. package/dist/core/execution-target.js +69 -0
  72. package/dist/core/file-coordination.d.ts +66 -0
  73. package/dist/core/file-coordination.js +176 -0
  74. package/dist/core/file-lease-store.d.ts +14 -0
  75. package/dist/core/file-lease-store.js +89 -0
  76. package/dist/core/image-limits.d.ts +26 -0
  77. package/dist/core/image-limits.js +205 -0
  78. package/dist/core/interruptible-completion.d.ts +3 -0
  79. package/dist/core/interruptible-completion.js +42 -0
  80. package/dist/core/kingdoms-mode-state.d.ts +24 -0
  81. package/dist/core/kingdoms-mode-state.js +139 -0
  82. package/dist/core/licenza.d.ts +38 -0
  83. package/dist/core/licenza.js +125 -0
  84. package/dist/core/model-limits.d.ts +2 -0
  85. package/dist/core/model-limits.js +36 -0
  86. package/dist/core/output-lifecycle.d.ts +44 -0
  87. package/dist/core/output-lifecycle.js +190 -0
  88. package/dist/core/package-update.d.ts +15 -0
  89. package/dist/core/package-update.js +121 -0
  90. package/dist/core/permission-queue.d.ts +2 -0
  91. package/dist/core/permission-queue.js +20 -0
  92. package/dist/core/prompt-attachment.d.ts +21 -0
  93. package/dist/core/prompt-attachment.js +123 -0
  94. package/dist/core/request-plan.d.ts +16 -0
  95. package/dist/core/request-plan.js +36 -0
  96. package/dist/core/run-timing.d.ts +17 -0
  97. package/dist/core/run-timing.js +123 -0
  98. package/dist/core/self-update.d.ts +17 -0
  99. package/dist/core/self-update.js +54 -0
  100. package/dist/core/session-refs.d.ts +27 -0
  101. package/dist/core/session-refs.js +126 -0
  102. package/dist/core/session-storage.d.ts +4 -0
  103. package/dist/core/session-storage.js +48 -0
  104. package/dist/core/session-title.d.ts +1 -0
  105. package/dist/core/session-title.js +21 -0
  106. package/dist/core/session-usage.d.ts +17 -0
  107. package/dist/core/session-usage.js +74 -0
  108. package/dist/core/session.d.ts +58 -0
  109. package/dist/core/session.js +296 -0
  110. package/dist/core/settings.d.ts +17 -0
  111. package/dist/core/settings.js +107 -0
  112. package/dist/core/storage-retention.d.ts +21 -0
  113. package/dist/core/storage-retention.js +227 -0
  114. package/dist/core/text-sanitize.d.ts +1 -0
  115. package/dist/core/text-sanitize.js +35 -0
  116. package/dist/core/tool-artifacts.d.ts +6 -0
  117. package/dist/core/tool-artifacts.js +51 -0
  118. package/dist/core/tool-compress.d.ts +8 -0
  119. package/dist/core/tool-compress.js +111 -0
  120. package/dist/core/tool-executor.d.ts +16 -0
  121. package/dist/core/tool-executor.js +97 -0
  122. package/dist/core/tool-result-index.d.ts +52 -0
  123. package/dist/core/tool-result-index.js +327 -0
  124. package/dist/core/tool-result-store.d.ts +38 -0
  125. package/dist/core/tool-result-store.js +190 -0
  126. package/dist/core/tool-scheduler.d.ts +16 -0
  127. package/dist/core/tool-scheduler.js +35 -0
  128. package/dist/core/trust.d.ts +21 -0
  129. package/dist/core/trust.js +95 -0
  130. package/dist/core/types.d.ts +402 -0
  131. package/dist/core/types.js +1 -0
  132. package/dist/core/update-check.d.ts +26 -0
  133. package/dist/core/update-check.js +89 -0
  134. package/dist/core/update-process.d.ts +10 -0
  135. package/dist/core/update-process.js +31 -0
  136. package/dist/core/user-inbox.d.ts +23 -0
  137. package/dist/core/user-inbox.js +56 -0
  138. package/dist/core/user-input.d.ts +10 -0
  139. package/dist/core/user-input.js +35 -0
  140. package/dist/core/version.d.ts +1 -0
  141. package/dist/core/version.js +10 -0
  142. package/dist/core/vibe-modes.d.ts +38 -0
  143. package/dist/core/vibe-modes.js +383 -0
  144. package/dist/core/workspace-roots.d.ts +13 -0
  145. package/dist/core/workspace-roots.js +91 -0
  146. package/dist/core/workspace-sessions.d.ts +51 -0
  147. package/dist/core/workspace-sessions.js +243 -0
  148. package/dist/cowork/client.d.ts +29 -0
  149. package/dist/cowork/client.js +49 -0
  150. package/dist/cowork/engine-bridge.d.ts +22 -0
  151. package/dist/cowork/engine-bridge.js +98 -0
  152. package/dist/cowork/index.d.ts +11 -0
  153. package/dist/cowork/index.js +16 -0
  154. package/dist/cowork/ipc.d.ts +97 -0
  155. package/dist/cowork/ipc.js +96 -0
  156. package/dist/cowork/manager.d.ts +66 -0
  157. package/dist/cowork/manager.js +325 -0
  158. package/dist/cowork/store.d.ts +23 -0
  159. package/dist/cowork/store.js +182 -0
  160. package/dist/cowork/sync.d.ts +20 -0
  161. package/dist/cowork/sync.js +164 -0
  162. package/dist/cowork/types.d.ts +78 -0
  163. package/dist/cowork/types.js +21 -0
  164. package/dist/extensions/ext-tools.d.ts +3 -0
  165. package/dist/extensions/ext-tools.js +73 -0
  166. package/dist/extensions/loader.d.ts +91 -0
  167. package/dist/extensions/loader.js +474 -0
  168. package/dist/extensions/settings.d.ts +20 -0
  169. package/dist/extensions/settings.js +86 -0
  170. package/dist/extensions/types.d.ts +219 -0
  171. package/dist/extensions/types.js +1 -0
  172. package/dist/horizon/async-queue.d.ts +9 -0
  173. package/dist/horizon/async-queue.js +46 -0
  174. package/dist/horizon/engine.d.ts +85 -0
  175. package/dist/horizon/engine.js +603 -0
  176. package/dist/horizon/index.d.ts +4 -0
  177. package/dist/horizon/index.js +2 -0
  178. package/dist/horizon/main-team.d.ts +163 -0
  179. package/dist/horizon/main-team.js +774 -0
  180. package/dist/horizon/types.d.ts +233 -0
  181. package/dist/horizon/types.js +1 -0
  182. package/dist/index.d.ts +2 -0
  183. package/dist/index.js +233 -0
  184. package/dist/mcp/protocol.d.ts +81 -0
  185. package/dist/mcp/protocol.js +122 -0
  186. package/dist/package.json +1 -0
  187. package/dist/packages/packages.d.ts +12 -0
  188. package/dist/packages/packages.js +323 -0
  189. package/dist/prompts/templates.d.ts +13 -0
  190. package/dist/prompts/templates.js +139 -0
  191. package/dist/providers/anthropic-oauth.d.ts +13 -0
  192. package/dist/providers/anthropic-oauth.js +124 -0
  193. package/dist/providers/anthropic.d.ts +27 -0
  194. package/dist/providers/anthropic.js +526 -0
  195. package/dist/providers/catalog.d.ts +15 -0
  196. package/dist/providers/catalog.js +166 -0
  197. package/dist/providers/effort.d.ts +12 -0
  198. package/dist/providers/effort.js +102 -0
  199. package/dist/providers/model-catalog.d.ts +43 -0
  200. package/dist/providers/model-catalog.js +70 -0
  201. package/dist/providers/model-effort.d.ts +5 -0
  202. package/dist/providers/model-effort.js +43 -0
  203. package/dist/providers/model-registry.d.ts +39 -0
  204. package/dist/providers/model-registry.js +142 -0
  205. package/dist/providers/models-dev.d.ts +9 -0
  206. package/dist/providers/models-dev.js +97 -0
  207. package/dist/providers/oauth-callback-server.d.ts +28 -0
  208. package/dist/providers/oauth-callback-server.js +184 -0
  209. package/dist/providers/oauth-orchestrator.d.ts +58 -0
  210. package/dist/providers/oauth-orchestrator.js +159 -0
  211. package/dist/providers/oauth-store.d.ts +12 -0
  212. package/dist/providers/oauth-store.js +139 -0
  213. package/dist/providers/open-browser.d.ts +20 -0
  214. package/dist/providers/open-browser.js +92 -0
  215. package/dist/providers/openai-compat.d.ts +14 -0
  216. package/dist/providers/openai-compat.js +523 -0
  217. package/dist/providers/openai-oauth.d.ts +15 -0
  218. package/dist/providers/openai-oauth.js +382 -0
  219. package/dist/providers/openrouter-auth.d.ts +73 -0
  220. package/dist/providers/openrouter-auth.js +321 -0
  221. package/dist/providers/openrouter-manual-fallback.d.ts +25 -0
  222. package/dist/providers/openrouter-manual-fallback.js +161 -0
  223. package/dist/providers/openrouter.d.ts +15 -0
  224. package/dist/providers/openrouter.js +107 -0
  225. package/dist/providers/plan-limits.d.ts +6 -0
  226. package/dist/providers/plan-limits.js +175 -0
  227. package/dist/providers/provider-reset.d.ts +4 -0
  228. package/dist/providers/provider-reset.js +83 -0
  229. package/dist/providers/quota-limits.d.ts +4 -0
  230. package/dist/providers/quota-limits.js +33 -0
  231. package/dist/providers/registry.d.ts +33 -0
  232. package/dist/providers/registry.js +213 -0
  233. package/dist/providers/retry.d.ts +37 -0
  234. package/dist/providers/retry.js +347 -0
  235. package/dist/rpc/server.d.ts +23 -0
  236. package/dist/rpc/server.js +222 -0
  237. package/dist/sdk.d.ts +67 -0
  238. package/dist/sdk.js +64 -0
  239. package/dist/skills/skills.d.ts +17 -0
  240. package/dist/skills/skills.js +155 -0
  241. package/dist/text-sanitize.js +28 -0
  242. package/dist/tools/ask-user.d.ts +2 -0
  243. package/dist/tools/ask-user.js +60 -0
  244. package/dist/tools/builtin.d.ts +48 -0
  245. package/dist/tools/builtin.js +2494 -0
  246. package/dist/tools/capabilities.d.ts +5 -0
  247. package/dist/tools/capabilities.js +55 -0
  248. package/dist/tools/computer-capture.d.ts +2 -0
  249. package/dist/tools/computer-capture.js +91 -0
  250. package/dist/tools/computer-posix.d.ts +5 -0
  251. package/dist/tools/computer-posix.js +136 -0
  252. package/dist/tools/computer-use.d.ts +14 -0
  253. package/dist/tools/computer-use.js +108 -0
  254. package/dist/tools/discovery.d.ts +12 -0
  255. package/dist/tools/discovery.js +205 -0
  256. package/dist/tools/execute.d.ts +2 -0
  257. package/dist/tools/execute.js +73 -0
  258. package/dist/tools/normalize-input.d.ts +17 -0
  259. package/dist/tools/normalize-input.js +174 -0
  260. package/dist/tools/output-artifact.d.ts +3 -0
  261. package/dist/tools/output-artifact.js +80 -0
  262. package/dist/tools/pagination.d.ts +15 -0
  263. package/dist/tools/pagination.js +93 -0
  264. package/dist/tools/plan-status.d.ts +2 -0
  265. package/dist/tools/plan-status.js +109 -0
  266. package/dist/tools/program-input.d.ts +3 -0
  267. package/dist/tools/program-input.js +19 -0
  268. package/dist/tools/program.d.ts +3 -0
  269. package/dist/tools/program.js +567 -0
  270. package/dist/tools/protocol-catalog.d.ts +12 -0
  271. package/dist/tools/protocol-catalog.js +46 -0
  272. package/dist/tools/ramification-tools.d.ts +12 -0
  273. package/dist/tools/ramification-tools.js +528 -0
  274. package/dist/tools/regex-compat.d.ts +9 -0
  275. package/dist/tools/regex-compat.js +96 -0
  276. package/dist/tools/registry.d.ts +51 -0
  277. package/dist/tools/registry.js +185 -0
  278. package/dist/tools/resolve.d.ts +2 -0
  279. package/dist/tools/resolve.js +107 -0
  280. package/dist/tools/shell-env.d.ts +2 -0
  281. package/dist/tools/shell-env.js +7 -0
  282. package/dist/tools/team-input.d.ts +3 -0
  283. package/dist/tools/team-input.js +129 -0
  284. package/dist/tools/team-tools.d.ts +7 -0
  285. package/dist/tools/team-tools.js +348 -0
  286. package/dist/tools/workspace-sessions.d.ts +2 -0
  287. package/dist/tools/workspace-sessions.js +35 -0
  288. package/dist/tui/account-entry.d.ts +1 -0
  289. package/dist/tui/account-entry.js +93 -0
  290. package/dist/tui/attachment-highlight.d.ts +1 -0
  291. package/dist/tui/attachment-highlight.js +24 -0
  292. package/dist/tui/attachment-refs.d.ts +2 -0
  293. package/dist/tui/attachment-refs.js +3 -0
  294. package/dist/tui/bottom-input.d.ts +219 -0
  295. package/dist/tui/bottom-input.js +1958 -0
  296. package/dist/tui/branding.d.ts +107 -0
  297. package/dist/tui/branding.js +750 -0
  298. package/dist/tui/clipboard-image.d.ts +10 -0
  299. package/dist/tui/clipboard-image.js +163 -0
  300. package/dist/tui/clipboard-text.d.ts +9 -0
  301. package/dist/tui/clipboard-text.js +51 -0
  302. package/dist/tui/clipboard-windows.d.ts +8 -0
  303. package/dist/tui/clipboard-windows.js +84 -0
  304. package/dist/tui/collapsible-command.d.ts +15 -0
  305. package/dist/tui/collapsible-command.js +48 -0
  306. package/dist/tui/command-feedback.d.ts +10 -0
  307. package/dist/tui/command-feedback.js +46 -0
  308. package/dist/tui/command-output-registry.d.ts +28 -0
  309. package/dist/tui/command-output-registry.js +103 -0
  310. package/dist/tui/command-transcript.d.ts +12 -0
  311. package/dist/tui/command-transcript.js +90 -0
  312. package/dist/tui/commands.d.ts +20 -0
  313. package/dist/tui/commands.js +131 -0
  314. package/dist/tui/context-bar.d.ts +4 -0
  315. package/dist/tui/context-bar.js +74 -0
  316. package/dist/tui/context-meter.d.ts +25 -0
  317. package/dist/tui/context-meter.js +81 -0
  318. package/dist/tui/cost-binding.d.ts +8 -0
  319. package/dist/tui/cost-binding.js +43 -0
  320. package/dist/tui/cost-tracker.d.ts +49 -0
  321. package/dist/tui/cost-tracker.js +122 -0
  322. package/dist/tui/diff.d.ts +9 -0
  323. package/dist/tui/diff.js +119 -0
  324. package/dist/tui/i18n-catalog.d.ts +5 -0
  325. package/dist/tui/i18n-catalog.js +184 -0
  326. package/dist/tui/i18n.d.ts +6 -0
  327. package/dist/tui/i18n.js +10 -0
  328. package/dist/tui/image-attachments.d.ts +46 -0
  329. package/dist/tui/image-attachments.js +167 -0
  330. package/dist/tui/images.d.ts +12 -0
  331. package/dist/tui/images.js +87 -0
  332. package/dist/tui/intro.d.ts +13 -0
  333. package/dist/tui/intro.js +109 -0
  334. package/dist/tui/language-preference.d.ts +6 -0
  335. package/dist/tui/language-preference.js +24 -0
  336. package/dist/tui/live-output.d.ts +2 -0
  337. package/dist/tui/live-output.js +18 -0
  338. package/dist/tui/locales.d.ts +19 -0
  339. package/dist/tui/locales.js +22 -0
  340. package/dist/tui/login-menu.d.ts +17 -0
  341. package/dist/tui/login-menu.js +58 -0
  342. package/dist/tui/logo.d.ts +8 -0
  343. package/dist/tui/logo.js +305 -0
  344. package/dist/tui/markdown-inline.d.ts +3 -0
  345. package/dist/tui/markdown-inline.js +99 -0
  346. package/dist/tui/markdown-table.d.ts +4 -0
  347. package/dist/tui/markdown-table.js +63 -0
  348. package/dist/tui/markdown.d.ts +11 -0
  349. package/dist/tui/markdown.js +257 -0
  350. package/dist/tui/mcp-transcript.d.ts +7 -0
  351. package/dist/tui/mcp-transcript.js +40 -0
  352. package/dist/tui/model-details.d.ts +2 -0
  353. package/dist/tui/model-details.js +21 -0
  354. package/dist/tui/model-selection.d.ts +7 -0
  355. package/dist/tui/model-selection.js +41 -0
  356. package/dist/tui/native-scrollback.d.ts +27 -0
  357. package/dist/tui/native-scrollback.js +134 -0
  358. package/dist/tui/onboarding.d.ts +72 -0
  359. package/dist/tui/onboarding.js +207 -0
  360. package/dist/tui/paste-collapse.d.ts +39 -0
  361. package/dist/tui/paste-collapse.js +117 -0
  362. package/dist/tui/perm-mode.d.ts +8 -0
  363. package/dist/tui/perm-mode.js +41 -0
  364. package/dist/tui/prompt-queue-store.d.ts +26 -0
  365. package/dist/tui/prompt-queue-store.js +87 -0
  366. package/dist/tui/prompt-queue.d.ts +47 -0
  367. package/dist/tui/prompt-queue.js +187 -0
  368. package/dist/tui/provider-menu.d.ts +33 -0
  369. package/dist/tui/provider-menu.js +175 -0
  370. package/dist/tui/question.d.ts +24 -0
  371. package/dist/tui/question.js +32 -0
  372. package/dist/tui/queue-screen.d.ts +25 -0
  373. package/dist/tui/queue-screen.js +152 -0
  374. package/dist/tui/queue-team.d.ts +3 -0
  375. package/dist/tui/queue-team.js +28 -0
  376. package/dist/tui/queued-questions.d.ts +20 -0
  377. package/dist/tui/queued-questions.js +163 -0
  378. package/dist/tui/quick-help.d.ts +1 -0
  379. package/dist/tui/quick-help.js +53 -0
  380. package/dist/tui/repl.d.ts +78 -0
  381. package/dist/tui/repl.js +4130 -0
  382. package/dist/tui/restore-queued-input.d.ts +3 -0
  383. package/dist/tui/restore-queued-input.js +20 -0
  384. package/dist/tui/review-detail.d.ts +6 -0
  385. package/dist/tui/review-detail.js +56 -0
  386. package/dist/tui/review-files.d.ts +3 -0
  387. package/dist/tui/review-files.js +22 -0
  388. package/dist/tui/review-render.d.ts +22 -0
  389. package/dist/tui/review-render.js +98 -0
  390. package/dist/tui/review-screen.d.ts +38 -0
  391. package/dist/tui/review-screen.js +358 -0
  392. package/dist/tui/review-store.d.ts +60 -0
  393. package/dist/tui/review-store.js +270 -0
  394. package/dist/tui/review-team.d.ts +2 -0
  395. package/dist/tui/review-team.js +27 -0
  396. package/dist/tui/selector-mouse.d.ts +26 -0
  397. package/dist/tui/selector-mouse.js +65 -0
  398. package/dist/tui/selector.d.ts +51 -0
  399. package/dist/tui/selector.js +299 -0
  400. package/dist/tui/session-replay.d.ts +10 -0
  401. package/dist/tui/session-replay.js +78 -0
  402. package/dist/tui/session-usage.d.ts +22 -0
  403. package/dist/tui/session-usage.js +55 -0
  404. package/dist/tui/skill-transcript.d.ts +5 -0
  405. package/dist/tui/skill-transcript.js +31 -0
  406. package/dist/tui/startup.d.ts +5 -0
  407. package/dist/tui/startup.js +61 -0
  408. package/dist/tui/status-line-loader.d.ts +8 -0
  409. package/dist/tui/status-line-loader.js +33 -0
  410. package/dist/tui/status-line.d.ts +38 -0
  411. package/dist/tui/status-line.js +213 -0
  412. package/dist/tui/system-language.d.ts +8 -0
  413. package/dist/tui/system-language.js +41 -0
  414. package/dist/tui/task-labels.d.ts +2 -0
  415. package/dist/tui/task-labels.js +7 -0
  416. package/dist/tui/term-bg.d.ts +4 -0
  417. package/dist/tui/term-bg.js +67 -0
  418. package/dist/tui/terminal-screen.d.ts +12 -0
  419. package/dist/tui/terminal-screen.js +1 -0
  420. package/dist/tui/terminal-text.d.ts +7 -0
  421. package/dist/tui/terminal-text.js +123 -0
  422. package/dist/tui/theme.d.ts +25 -0
  423. package/dist/tui/theme.js +383 -0
  424. package/dist/tui/tool-style.d.ts +7 -0
  425. package/dist/tui/tool-style.js +119 -0
  426. package/dist/tui/update-prompt.d.ts +14 -0
  427. package/dist/tui/update-prompt.js +104 -0
  428. package/dist/tui/usage-footer.d.ts +9 -0
  429. package/dist/tui/usage-footer.js +123 -0
  430. package/dist/tui/vascend-login.d.ts +68 -0
  431. package/dist/tui/vascend-login.js +355 -0
  432. package/dist/tui/web-login.d.ts +28 -0
  433. package/dist/tui/web-login.js +115 -0
  434. package/dist/vascend/activity-status.d.ts +12 -0
  435. package/dist/vascend/activity-status.js +68 -0
  436. package/dist/vascend/architecture-map.d.ts +73 -0
  437. package/dist/vascend/architecture-map.js +424 -0
  438. package/dist/vascend/attention-layout.d.ts +19 -0
  439. package/dist/vascend/attention-layout.js +141 -0
  440. package/dist/vascend/budget-allocator.d.ts +31 -0
  441. package/dist/vascend/budget-allocator.js +79 -0
  442. package/dist/vascend/candidate-collector.d.ts +20 -0
  443. package/dist/vascend/candidate-collector.js +220 -0
  444. package/dist/vascend/code-events.d.ts +24 -0
  445. package/dist/vascend/code-events.js +304 -0
  446. package/dist/vascend/code-graph-memory.d.ts +38 -0
  447. package/dist/vascend/code-graph-memory.js +334 -0
  448. package/dist/vascend/code-graph-runtime.d.ts +19 -0
  449. package/dist/vascend/code-graph-runtime.js +190 -0
  450. package/dist/vascend/code-graph-types.d.ts +58 -0
  451. package/dist/vascend/code-graph-types.js +50 -0
  452. package/dist/vascend/code-parser.d.ts +4 -0
  453. package/dist/vascend/code-parser.js +257 -0
  454. package/dist/vascend/competitor-knowledge.d.ts +53 -0
  455. package/dist/vascend/competitor-knowledge.js +262 -0
  456. package/dist/vascend/completeness.d.ts +16 -0
  457. package/dist/vascend/completeness.js +90 -0
  458. package/dist/vascend/context-autotuner.d.ts +45 -0
  459. package/dist/vascend/context-autotuner.js +231 -0
  460. package/dist/vascend/context-candidate.d.ts +45 -0
  461. package/dist/vascend/context-candidate.js +150 -0
  462. package/dist/vascend/context-capsule.d.ts +51 -0
  463. package/dist/vascend/context-capsule.js +133 -0
  464. package/dist/vascend/context-fabric.d.ts +108 -0
  465. package/dist/vascend/context-fabric.js +480 -0
  466. package/dist/vascend/context-feedback-loop.d.ts +56 -0
  467. package/dist/vascend/context-feedback-loop.js +204 -0
  468. package/dist/vascend/context-learning-identity.d.ts +4 -0
  469. package/dist/vascend/context-learning-identity.js +8 -0
  470. package/dist/vascend/context-links.d.ts +14 -0
  471. package/dist/vascend/context-links.js +83 -0
  472. package/dist/vascend/context-lint.d.ts +22 -0
  473. package/dist/vascend/context-lint.js +91 -0
  474. package/dist/vascend/context-market-selection.d.ts +17 -0
  475. package/dist/vascend/context-market-selection.js +50 -0
  476. package/dist/vascend/context-metrics.d.ts +25 -0
  477. package/dist/vascend/context-metrics.js +57 -0
  478. package/dist/vascend/context-pack-render.d.ts +16 -0
  479. package/dist/vascend/context-pack-render.js +52 -0
  480. package/dist/vascend/context-pareto.d.ts +33 -0
  481. package/dist/vascend/context-pareto.js +165 -0
  482. package/dist/vascend/context-pattern-explorer.d.ts +41 -0
  483. package/dist/vascend/context-pattern-explorer.js +276 -0
  484. package/dist/vascend/context-regret.d.ts +32 -0
  485. package/dist/vascend/context-regret.js +93 -0
  486. package/dist/vascend/context-retriever.d.ts +22 -0
  487. package/dist/vascend/context-retriever.js +243 -0
  488. package/dist/vascend/context-scope-index.d.ts +5 -0
  489. package/dist/vascend/context-scope-index.js +96 -0
  490. package/dist/vascend/context-scorer.d.ts +35 -0
  491. package/dist/vascend/context-scorer.js +162 -0
  492. package/dist/vascend/context-search-index.d.ts +12 -0
  493. package/dist/vascend/context-search-index.js +25 -0
  494. package/dist/vascend/context-snapshot.d.ts +22 -0
  495. package/dist/vascend/context-snapshot.js +135 -0
  496. package/dist/vascend/context-window-compiler.d.ts +42 -0
  497. package/dist/vascend/context-window-compiler.js +237 -0
  498. package/dist/vascend/contract-memory.d.ts +61 -0
  499. package/dist/vascend/contract-memory.js +435 -0
  500. package/dist/vascend/council.d.ts +58 -0
  501. package/dist/vascend/council.js +337 -0
  502. package/dist/vascend/decision-promotion.d.ts +48 -0
  503. package/dist/vascend/decision-promotion.js +410 -0
  504. package/dist/vascend/delta-context.d.ts +12 -0
  505. package/dist/vascend/delta-context.js +36 -0
  506. package/dist/vascend/dev-context-compiler.d.ts +27 -0
  507. package/dist/vascend/dev-context-compiler.js +133 -0
  508. package/dist/vascend/dev-context-layout.d.ts +30 -0
  509. package/dist/vascend/dev-context-layout.js +262 -0
  510. package/dist/vascend/evidence-slots.d.ts +14 -0
  511. package/dist/vascend/evidence-slots.js +55 -0
  512. package/dist/vascend/expansion-levels.d.ts +15 -0
  513. package/dist/vascend/expansion-levels.js +178 -0
  514. package/dist/vascend/file-lock.d.ts +7 -0
  515. package/dist/vascend/file-lock.js +95 -0
  516. package/dist/vascend/granular-kingdom.d.ts +25 -0
  517. package/dist/vascend/granular-kingdom.js +259 -0
  518. package/dist/vascend/granular-launcher.d.ts +48 -0
  519. package/dist/vascend/granular-launcher.js +202 -0
  520. package/dist/vascend/kingdom-bus.d.ts +25 -0
  521. package/dist/vascend/kingdom-bus.js +54 -0
  522. package/dist/vascend/kingdom-channel.d.ts +22 -0
  523. package/dist/vascend/kingdom-channel.js +180 -0
  524. package/dist/vascend/kingdom-kpi.d.ts +48 -0
  525. package/dist/vascend/kingdom-kpi.js +172 -0
  526. package/dist/vascend/kingdom-live.d.ts +28 -0
  527. package/dist/vascend/kingdom-live.js +61 -0
  528. package/dist/vascend/kingdom-run.d.ts +18 -0
  529. package/dist/vascend/kingdom-run.js +506 -0
  530. package/dist/vascend/kingdom-scribe.d.ts +20 -0
  531. package/dist/vascend/kingdom-scribe.js +52 -0
  532. package/dist/vascend/kingdom.d.ts +79 -0
  533. package/dist/vascend/kingdom.js +870 -0
  534. package/dist/vascend/lexical-index.d.ts +10 -0
  535. package/dist/vascend/lexical-index.js +99 -0
  536. package/dist/vascend/lexical-search.d.ts +29 -0
  537. package/dist/vascend/lexical-search.js +262 -0
  538. package/dist/vascend/long-term-context.d.ts +51 -0
  539. package/dist/vascend/long-term-context.js +194 -0
  540. package/dist/vascend/mandate.d.ts +33 -0
  541. package/dist/vascend/mandate.js +107 -0
  542. package/dist/vascend/memory-packet.d.ts +13 -0
  543. package/dist/vascend/memory-packet.js +155 -0
  544. package/dist/vascend/memory-status.d.ts +22 -0
  545. package/dist/vascend/memory-status.js +73 -0
  546. package/dist/vascend/memory-store.d.ts +62 -0
  547. package/dist/vascend/memory-store.js +273 -0
  548. package/dist/vascend/objective-revision.d.ts +69 -0
  549. package/dist/vascend/objective-revision.js +319 -0
  550. package/dist/vascend/patch-plan-store.d.ts +33 -0
  551. package/dist/vascend/patch-plan-store.js +240 -0
  552. package/dist/vascend/patch-plan.d.ts +97 -0
  553. package/dist/vascend/patch-plan.js +345 -0
  554. package/dist/vascend/plan-progress.d.ts +11 -0
  555. package/dist/vascend/plan-progress.js +68 -0
  556. package/dist/vascend/plan-store.d.ts +64 -0
  557. package/dist/vascend/plan-store.js +460 -0
  558. package/dist/vascend/proof-chains.d.ts +19 -0
  559. package/dist/vascend/proof-chains.js +120 -0
  560. package/dist/vascend/ramification-store.d.ts +25 -0
  561. package/dist/vascend/ramification-store.js +94 -0
  562. package/dist/vascend/ramification.d.ts +193 -0
  563. package/dist/vascend/ramification.js +583 -0
  564. package/dist/vascend/recall-planner.d.ts +17 -0
  565. package/dist/vascend/recall-planner.js +109 -0
  566. package/dist/vascend/requirements.d.ts +31 -0
  567. package/dist/vascend/requirements.js +151 -0
  568. package/dist/vascend/reviewer.d.ts +9 -0
  569. package/dist/vascend/reviewer.js +93 -0
  570. package/dist/vascend/room-graph.d.ts +29 -0
  571. package/dist/vascend/room-graph.js +242 -0
  572. package/dist/vascend/room-memory.d.ts +57 -0
  573. package/dist/vascend/room-memory.js +631 -0
  574. package/dist/vascend/runtime.d.ts +84 -0
  575. package/dist/vascend/runtime.js +286 -0
  576. package/dist/vascend/self-improve.d.ts +104 -0
  577. package/dist/vascend/self-improve.js +396 -0
  578. package/dist/vascend/session-search.d.ts +52 -0
  579. package/dist/vascend/session-search.js +349 -0
  580. package/dist/vascend/supersession-graph.d.ts +14 -0
  581. package/dist/vascend/supersession-graph.js +70 -0
  582. package/dist/vascend/team-areas.d.ts +9 -0
  583. package/dist/vascend/team-areas.js +28 -0
  584. package/dist/vascend/team-handoff.d.ts +24 -0
  585. package/dist/vascend/team-handoff.js +37 -0
  586. package/dist/vascend/team-scheduler.d.ts +13 -0
  587. package/dist/vascend/team-scheduler.js +74 -0
  588. package/dist/vascend/team-session.d.ts +42 -0
  589. package/dist/vascend/team-session.js +142 -0
  590. package/dist/vascend/test-failure-memory.d.ts +76 -0
  591. package/dist/vascend/test-failure-memory.js +354 -0
  592. package/dist/vascend/token-market.d.ts +42 -0
  593. package/dist/vascend/token-market.js +144 -0
  594. package/dist/vascend/tuner-baseline-store.d.ts +52 -0
  595. package/dist/vascend/tuner-baseline-store.js +446 -0
  596. package/dist/vascend/user-profile.d.ts +44 -0
  597. package/dist/vascend/user-profile.js +131 -0
  598. package/dist/vascend/vision.d.ts +94 -0
  599. package/dist/vascend/vision.js +375 -0
  600. package/dist/vascend/work-agent.d.ts +12 -0
  601. package/dist/vascend/work-agent.js +83 -0
  602. package/dist/vascend/work-queue.d.ts +62 -0
  603. package/dist/vascend/work-queue.js +255 -0
  604. package/dist/vascend/work-runner.d.ts +64 -0
  605. package/dist/vascend/work-runner.js +137 -0
  606. package/dist/vascend/worktree.d.ts +38 -0
  607. package/dist/vascend/worktree.js +206 -0
  608. package/dist/vendor/computer-use/README.md +7 -0
  609. package/dist/vendor/computer-use/computer-desktop.js +211 -0
  610. package/dist/vendor/computer-use/computer-observe.js +315 -0
  611. package/dist/vendor/computer-use/computer-scripts.js +1230 -0
  612. package/dist/vendor/computer-use/computer-tools.js +2136 -0
  613. package/dist/vendor/computer-use/package.json +1 -0
  614. package/dist/vendor/computer-use/rac/atomic-input.js +91 -0
  615. package/dist/vendor/computer-use/rac/grammatica.js +101 -0
  616. package/dist/vendor/computer-use/rac/parser.js +185 -0
  617. package/dist/vendor/computer-use/rac/protocol.js +136 -0
  618. package/install.ps1 +30 -0
  619. package/install.sh +50 -0
  620. package/package.json +56 -0
@@ -0,0 +1,347 @@
1
+ import { cleanProviderText, providerResetAt } from "./provider-reset.js";
2
+ import { quotaLimitsFromError, quotaResetAt, rejectedQuotaWindows } from "./quota-limits.js";
3
+ export const DEFAULT_RETRY = {
4
+ maxRetries: 2,
5
+ baseDelayMs: 500,
6
+ timeoutMs: 0,
7
+ networkMaxRetries: 10,
8
+ networkRetryDelayMs: 2000,
9
+ overloadMaxAttempts: 10,
10
+ overloadBaseDelayMs: 3000,
11
+ overloadMaxDelayMs: 60000,
12
+ };
13
+ function intEnv(env, key) {
14
+ const n = Number(env[key]);
15
+ return Number.isFinite(n) && n >= 0 ? n : undefined;
16
+ }
17
+ export function retryConfigFromEnv(env) {
18
+ return {
19
+ maxRetries: intEnv(env, "TALOS_PROVIDER_MAX_RETRIES") ?? DEFAULT_RETRY.maxRetries,
20
+ baseDelayMs: intEnv(env, "TALOS_PROVIDER_RETRY_BASE_MS") ?? DEFAULT_RETRY.baseDelayMs,
21
+ timeoutMs: intEnv(env, "TALOS_PROVIDER_TIMEOUT_MS") ?? DEFAULT_RETRY.timeoutMs,
22
+ networkMaxRetries: intEnv(env, "TALOS_PROVIDER_NETWORK_MAX_RETRIES") ?? DEFAULT_RETRY.networkMaxRetries,
23
+ networkRetryDelayMs: intEnv(env, "TALOS_PROVIDER_NETWORK_RETRY_MS") ?? DEFAULT_RETRY.networkRetryDelayMs,
24
+ overloadMaxAttempts: intEnv(env, "TALOS_PROVIDER_OVERLOAD_MAX_ATTEMPTS") ?? DEFAULT_RETRY.overloadMaxAttempts,
25
+ overloadBaseDelayMs: intEnv(env, "TALOS_PROVIDER_OVERLOAD_BASE_MS") ?? DEFAULT_RETRY.overloadBaseDelayMs,
26
+ overloadMaxDelayMs: intEnv(env, "TALOS_PROVIDER_OVERLOAD_MAX_DELAY_MS") ?? DEFAULT_RETRY.overloadMaxDelayMs,
27
+ };
28
+ }
29
+ // Errore di sola RETE/connessione: timeout, reset, DNS, fetch fallita. Sono i
30
+ // casi in cui "la connessione scade" e ha senso ritentare molte volte.
31
+ export function isNetworkError(text) {
32
+ return /\b(timeout|timed out|econnreset|etimedout|enotfound|econnrefused|eai_again|epipe|socket hang up|fetch failed|network error|connection (?:reset|refused|closed|timed out))\b/i.test(text);
33
+ }
34
+ // Fallimento del modello a valle di un router (OpenRouter e simili): lo stream
35
+ // si chiude con finish_reason "error" e nessuno status HTTP, perche' la
36
+ // richiesta verso il router e' andata a buon fine — a fallire e' stato il
37
+ // modello che il router ha scelto. Senza questa riga il caso non verrebbe
38
+ // ritentato, ed e' invece quello in cui ritentare risolve piu' spesso: su una
39
+ // rotta che smista, il tentativo successivo finisce su un altro modello.
40
+ export function isUpstreamRouterError(text) {
41
+ return /errore upstream temporaneo|upstream (?:error|failure)|provider returned error/i.test(text);
42
+ }
43
+ // Errore transitorio (ritentabile): status 408/409/425/429/5xx, rete, oppure
44
+ // fallimento del modello a valle di un router.
45
+ export function isTransientError(text) {
46
+ if (/(?:\(|\bhttp\s+|["']?(?:status|statuscode|code)["']?\s*[:=]\s*)(408|409|425|429|5\d\d)\b/i.test(text))
47
+ return true;
48
+ if (isUpstreamRouterError(text))
49
+ return true;
50
+ return isNetworkError(text);
51
+ }
52
+ // Capacita' temporaneamente esaurita. La quota personale e il credito vengono
53
+ // esclusi prima di questa classe: non vanno mascherati con retry inutili.
54
+ export function isOverloadError(text) {
55
+ const t = text.toLowerCase();
56
+ if (/(?:\(|\bhttp\s+|["']?(?:status|statuscode|code)["']?\s*[:=]\s*)529\b/i.test(text))
57
+ return true;
58
+ return (/overload(?:ed|ing)?|overloaded_error/.test(t) ||
59
+ /model (?:is )?(?:busy|at capacity|unavailable)/.test(t) ||
60
+ /(?:server|provider|service) (?:is )?(?:busy|overloaded|at capacity)/.test(t) ||
61
+ /capacity (?:is )?(?:exhausted|unavailable|temporarily unavailable)/.test(t) ||
62
+ /high demand|temporarily unavailable/.test(t) ||
63
+ /(?:502|503|504).*(?:service unavailable|upstream|capacity|overload|busy)/.test(t));
64
+ }
65
+ // Rispetta l'eventuale indicazione del provider, per esempio `retry after 48s`
66
+ // o un campo JSON `retry_after_ms`.
67
+ export function retryAfterMs(text) {
68
+ const ms = text.match(/(?:retry[_\s-]*after[_\s-]*ms|retryafterms)["']?\s*[:=]\s*["']?(\d+(?:\.\d+)?)/i);
69
+ if (ms)
70
+ return Math.max(0, Math.round(Number(ms[1])));
71
+ const seconds = text.match(/(?:retry[_\s-]*after|try again in)\s*["']?\s*(\d+(?:\.\d+)?)\s*(?:s|sec|secondi?|seconds?)\b/i);
72
+ if (seconds)
73
+ return Math.max(0, Math.round(Number(seconds[1]) * 1000));
74
+ return undefined;
75
+ }
76
+ // Limite/quota dell'abbonamento o del credito: NON e' transitorio, ritentare e'
77
+ // inutile. Copre Claude Code (Pro/Max), ChatGPT/Codex (Plus/Pro), OpenRouter e
78
+ // le API key a consumo (Anthropic/OpenAI). Distinto dal rate-limit per-minuto:
79
+ // qui si tratta di quota/credito/piano esauriti, non di "rallenta".
80
+ export function isQuotaError(text) {
81
+ const t = cleanProviderText(text).toLowerCase();
82
+ // Payment Required: credito/piano esaurito (OpenRouter, gateway).
83
+ if (/\(402\)/.test(text))
84
+ return true;
85
+ return (/insufficient[_\s-]*quota/.test(t) ||
86
+ /insufficient[_\s-]*credits?/.test(t) ||
87
+ /credit balance is too low/.test(t) ||
88
+ /not enough credits|out of credits|no credits/.test(t) ||
89
+ /\bquota\b.*(exceed|reach|exhaust)|(?:exceed|reach|exhaust).*\bquota\b/.test(t) ||
90
+ /usage[_\s-]*limit/.test(t) ||
91
+ /\b(monthly|daily|weekly|session)[_\s-]*limit/.test(t) ||
92
+ (!/rate[_\s-]*limit|per[_\s-]*minute|requests per|tokens per/.test(t)
93
+ && /limit reached|reached your .*limit|you(?:'ve| have)? (?:reached|hit) .*limit/.test(t)) ||
94
+ /upgrade your plan|upgrade to (?:a )?paid|billing (?:hard|limit)|payment required/.test(t) ||
95
+ /plan[_\s-]*limit|subscription.*(?:limit|expired|inactive)/.test(t));
96
+ }
97
+ // Messaggio chiaro e azionabile per il limite abbonamento/quota, per provider.
98
+ export function quotaMessage(providerId, original, limits) {
99
+ const detail = cleanProviderText(original).replace(/\s+/g, " ").trim().slice(0, 400);
100
+ const head = "Limite raggiunto";
101
+ const resetAt = quotaResetAt(limits) ?? providerResetAt(original);
102
+ const reset = resetAt ? ` Reset: ${new Date(resetAt).toLocaleString("it-IT", { dateStyle: "short", timeStyle: "short" })} (${new Date(resetAt).toISOString()}).` : "";
103
+ const subscription = providerId === "anthropic" && limits?.windows.some(w => w.id === "5h" || w.id === "7d" || w.id === "unified");
104
+ const body = (() => {
105
+ switch (subscription ? "claude-code" : providerId) {
106
+ case "claude-code":
107
+ return "quota dell'abbonamento Claude (Pro/Max) esaurita. Attendi il reset della finestra, oppure passa a una API key con `/model anthropic/...` (ANTHROPIC_API_KEY) o a un altro modello con /models.";
108
+ case "anthropic":
109
+ return "quota o credito Anthropic esaurito. Controlla il credito su console.anthropic.com, oppure cambia provider/modello con /models.";
110
+ case "chatgpt":
111
+ return "quota dell'abbonamento ChatGPT (Plus/Pro) esaurita. Attendi il reset, oppure usa una API key con `/model openai/...` (OPENAI_API_KEY) o un altro modello con /models.";
112
+ case "openai":
113
+ return "quota OpenAI esaurita (insufficient_quota). Verifica il billing su platform.openai.com, oppure cambia provider/modello con /models.";
114
+ case "openrouter":
115
+ return "crediti OpenRouter insufficienti o limite raggiunto. Ricarica su openrouter.ai/credits, oppure scegli un altro modello con /models.";
116
+ default:
117
+ return `limite/quota del provider ${providerId} raggiunto. Attendi il reset oppure cambia modello con /models.`;
118
+ }
119
+ })();
120
+ return `${head}.${reset} ${body}\n(dettaglio provider: ${detail})`;
121
+ }
122
+ function isAbort(err) {
123
+ return err instanceof Error && (err.name === "AbortError" || /abort/i.test(err.message));
124
+ }
125
+ function isNetworkThrow(err) {
126
+ return err instanceof Error && isNetworkError(`${err.name} ${err.message}`);
127
+ }
128
+ // Combina il signal del chiamante con un timeout per tentativo. `timedOut()`
129
+ // distingue lo scadere del timeout (ritentabile) dall'abort dell'utente.
130
+ function withTimeout(outer, timeoutMs) {
131
+ if (!timeoutMs || timeoutMs <= 0)
132
+ return { signal: outer, timedOut: () => false, cleanup: () => { } };
133
+ const ac = new AbortController();
134
+ let fired = false;
135
+ const onAbort = () => ac.abort();
136
+ if (outer.aborted)
137
+ ac.abort();
138
+ else
139
+ outer.addEventListener("abort", onAbort, { once: true });
140
+ const timer = setTimeout(() => {
141
+ fired = true;
142
+ ac.abort();
143
+ }, timeoutMs);
144
+ return {
145
+ signal: ac.signal,
146
+ timedOut: () => fired,
147
+ cleanup: () => {
148
+ clearTimeout(timer);
149
+ outer.removeEventListener("abort", onAbort);
150
+ },
151
+ };
152
+ }
153
+ function delay(ms, signal) {
154
+ return new Promise((resolve) => {
155
+ if (signal.aborted)
156
+ return resolve();
157
+ const finish = () => {
158
+ clearTimeout(timer);
159
+ signal.removeEventListener("abort", finish);
160
+ resolve();
161
+ };
162
+ const timer = setTimeout(finish, ms);
163
+ signal.addEventListener("abort", finish, { once: true });
164
+ });
165
+ }
166
+ async function delayWithCountdown(ms, signal, onTick) {
167
+ const deadline = Date.now() + Math.max(0, ms);
168
+ let previous = -1;
169
+ while (!signal.aborted) {
170
+ const remainingMs = Math.max(0, deadline - Date.now());
171
+ if (remainingMs <= 0)
172
+ return;
173
+ const seconds = Math.max(1, Math.ceil(remainingMs / 1000));
174
+ if (seconds !== previous) {
175
+ previous = seconds;
176
+ onTick(seconds);
177
+ }
178
+ await delay(Math.min(1000, remainingMs), signal);
179
+ }
180
+ }
181
+ export class RetryProvider {
182
+ inner;
183
+ cfg;
184
+ constructor(inner, cfg) {
185
+ this.inner = inner;
186
+ this.cfg = cfg;
187
+ }
188
+ get id() {
189
+ return this.inner.id;
190
+ }
191
+ get label() {
192
+ return this.inner.label;
193
+ }
194
+ get models() {
195
+ return this.inner.models;
196
+ }
197
+ get supportsFastMode() { return this.inner.supportsFastMode === true; }
198
+ get netMax() {
199
+ return this.cfg.networkMaxRetries ?? 0;
200
+ }
201
+ get netDelay() {
202
+ return this.cfg.networkRetryDelayMs ?? DEFAULT_RETRY.networkRetryDelayMs ?? 2000;
203
+ }
204
+ get overloadMaxAttempts() {
205
+ return Math.max(1, this.cfg.overloadMaxAttempts ?? DEFAULT_RETRY.overloadMaxAttempts ?? 10);
206
+ }
207
+ overloadDelay(retryNumber, providerText) {
208
+ const requested = retryAfterMs(providerText);
209
+ if (requested !== undefined)
210
+ return requested;
211
+ const base = this.cfg.overloadBaseDelayMs ?? DEFAULT_RETRY.overloadBaseDelayMs ?? 3000;
212
+ const cap = this.cfg.overloadMaxDelayMs ?? DEFAULT_RETRY.overloadMaxDelayMs ?? 60000;
213
+ return Math.min(cap, base * 2 ** Math.max(0, retryNumber - 1));
214
+ }
215
+ async waitForOverload(req, nextAttempt, providerText) {
216
+ const waitMs = this.overloadDelay(nextAttempt - 1, providerText);
217
+ await delayWithCountdown(waitMs, req.signal, (seconds) => {
218
+ req.onActivity?.(`Modello sovraccarico · nuovo tentativo (${nextAttempt}/${this.overloadMaxAttempts}) · ${seconds}s`);
219
+ });
220
+ }
221
+ async complete(req) {
222
+ let netAttempt = 0;
223
+ let genAttempt = 0;
224
+ let attempt = 1;
225
+ let recoveringFromOverload = false;
226
+ for (;;) {
227
+ if (req.signal.aborted)
228
+ return { text: "Richiesta interrotta", toolCalls: [], stopReason: "error" };
229
+ const tm = withTimeout(req.signal, this.cfg.timeoutMs);
230
+ // I delta sono gia' osservabili dall'host; quelli dei tool possono aver
231
+ // avviato esecuzioni speculative. Non riprodurre un tentativo dopo aver
232
+ // consegnato output. Gli errori prima dello stream restano ritentabili.
233
+ let delivered = false;
234
+ let active = true;
235
+ try {
236
+ const result = await this.inner.complete({
237
+ ...req, signal: tm.signal,
238
+ ...(req.onDelta ? { onDelta: (chunk) => {
239
+ if (!active || tm.signal.aborted)
240
+ return;
241
+ if (chunk)
242
+ delivered = true;
243
+ req.onDelta(chunk);
244
+ } } : {}),
245
+ ...(req.onToolDelta ? { onToolDelta: (event) => {
246
+ if (!active || tm.signal.aborted)
247
+ return;
248
+ delivered = true;
249
+ req.onToolDelta(event);
250
+ } } : {}),
251
+ });
252
+ active = false;
253
+ tm.cleanup();
254
+ if (result.stopReason === "error") {
255
+ // 1. Limite/quota abbonamento: stop, messaggio chiaro (no retry).
256
+ if (isQuotaError(result.text) || rejectedQuotaWindows(result.limits).length > 0) {
257
+ const limits = quotaLimitsFromError(this.id, result.text, result.limits);
258
+ return { ...result, toolCalls: [], text: quotaMessage(this.id, result.text, limits), ...(limits ? { limits } : {}) };
259
+ }
260
+ if (delivered)
261
+ return result;
262
+ // 2. Modello saturo: retry dedicato, con countdown comunicato alla UI.
263
+ if (isOverloadError(result.text) && attempt < this.overloadMaxAttempts && !req.signal.aborted) {
264
+ const nextAttempt = attempt + 1;
265
+ recoveringFromOverload = true;
266
+ tm.cleanup();
267
+ await this.waitForOverload(req, nextAttempt, result.text);
268
+ attempt = nextAttempt;
269
+ continue;
270
+ }
271
+ // 3. Rete/connessione scaduta: retry esteso a delay fisso.
272
+ if (isNetworkError(result.text) && netAttempt < this.netMax && !req.signal.aborted) {
273
+ netAttempt += 1;
274
+ req.onActivity?.(`connessione fallita, riprovo (${netAttempt}/${this.netMax})…`);
275
+ await delay(this.netDelay, req.signal);
276
+ continue;
277
+ }
278
+ // 4. Altro transiente (429/5xx, fallimento upstream): backoff.
279
+ if (isTransientError(result.text) && genAttempt < this.cfg.maxRetries && !req.signal.aborted) {
280
+ genAttempt += 1;
281
+ // Dire che si sta ritentando: senza, l'attesa e' silenzio e sembra
282
+ // che l'agente si sia bloccato. Il fallimento upstream ha un testo
283
+ // suo perche' e' l'unico che si risolve cambiando modello, e chi usa
284
+ // una rotta che smista deve sapere che sta succedendo proprio quello.
285
+ req.onActivity?.(isUpstreamRouterError(result.text)
286
+ ? `il modello a monte ha fallito, riprovo (${genAttempt}/${this.cfg.maxRetries})…`
287
+ : `errore temporaneo, riprovo (${genAttempt}/${this.cfg.maxRetries})…`);
288
+ await delay(this.backoff(genAttempt), req.signal);
289
+ continue;
290
+ }
291
+ }
292
+ if (recoveringFromOverload && result.stopReason !== "error") {
293
+ req.onActivity?.("Modello disponibile · riprendo il lavoro");
294
+ }
295
+ return result;
296
+ }
297
+ catch (err) {
298
+ active = false;
299
+ tm.cleanup();
300
+ const userAbort = req.signal.aborted;
301
+ const thrownText = err instanceof Error ? `${err.name}: ${err.message}` : String(err);
302
+ if (!userAbort && isQuotaError(thrownText)) {
303
+ const limits = quotaLimitsFromError(this.id, thrownText);
304
+ return { text: quotaMessage(this.id, thrownText, limits), toolCalls: [], stopReason: "error", ...(limits ? { limits } : {}) };
305
+ }
306
+ if (delivered)
307
+ throw err;
308
+ if (!userAbort && !isQuotaError(thrownText) && isOverloadError(thrownText) && attempt < this.overloadMaxAttempts) {
309
+ const nextAttempt = attempt + 1;
310
+ recoveringFromOverload = true;
311
+ tm.cleanup();
312
+ await this.waitForOverload(req, nextAttempt, thrownText);
313
+ attempt = nextAttempt;
314
+ continue;
315
+ }
316
+ // Timeout per-tentativo o errore di rete lanciato: retry esteso.
317
+ if (!userAbort && (tm.timedOut() || isNetworkThrow(err)) && netAttempt < this.netMax) {
318
+ netAttempt += 1;
319
+ req.onActivity?.(`connessione fallita, riprovo (${netAttempt}/${this.netMax})…`);
320
+ await delay(this.netDelay, req.signal);
321
+ continue;
322
+ }
323
+ // Solo gli altri errori realmente transitori ricevono il backoff classico.
324
+ if (!userAbort && !isAbort(err) && isTransientError(thrownText) && genAttempt < this.cfg.maxRetries) {
325
+ genAttempt += 1;
326
+ await delay(this.backoff(genAttempt), req.signal);
327
+ continue;
328
+ }
329
+ throw err;
330
+ }
331
+ finally {
332
+ active = false;
333
+ tm.cleanup();
334
+ }
335
+ }
336
+ }
337
+ // Backoff esponenziale con jitter pieno.
338
+ backoff(attempt) {
339
+ const exp = this.cfg.baseDelayMs * 2 ** (attempt - 1);
340
+ return Math.round(exp * (0.5 + Math.random() * 0.5));
341
+ }
342
+ }
343
+ // La classificazione degli errori resta attiva anche con i retry disabilitati.
344
+ export function withRetry(provider, cfg) {
345
+ const disabled = cfg.maxRetries <= 0 && cfg.timeoutMs <= 0 && (cfg.networkMaxRetries ?? 0) <= 0;
346
+ return new RetryProvider(provider, disabled && cfg.overloadMaxAttempts === undefined ? { ...cfg, overloadMaxAttempts: 1 } : cfg);
347
+ }
@@ -0,0 +1,23 @@
1
+ import type { AgentDeps } from "../core/agent.js";
2
+ export interface RpcProtocolInfo {
3
+ readonly name: "vascend.talos-rpc";
4
+ readonly version: 2;
5
+ readonly requests: readonly string[];
6
+ readonly singleFlight: true;
7
+ }
8
+ export declare const RPC_PROTOCOL: RpcProtocolInfo;
9
+ export declare class RpcTurnQueue {
10
+ private readonly onQueued?;
11
+ private readonly queue;
12
+ private current;
13
+ private draining;
14
+ constructor(onQueued?: ((id: string, position: number) => void) | undefined);
15
+ get runningId(): string | null;
16
+ get depth(): number;
17
+ push(id: string, run: (signal: AbortSignal) => Promise<void>): void;
18
+ abort(target?: string): string | null;
19
+ private drain;
20
+ }
21
+ export declare function startRpc(agent: AgentDeps, opts: {
22
+ autoApprove: boolean;
23
+ }): void;
@@ -0,0 +1,222 @@
1
+ import * as readline from "node:readline";
2
+ import { stdin, stdout } from "node:process";
3
+ import { runTurn } from "../core/agent.js";
4
+ import { createUserInbox } from "../core/user-inbox.js";
5
+ import { HORIZON_CAPABILITIES } from "../horizon/engine.js";
6
+ import { listSessions } from "../core/session.js";
7
+ import { normalizeMcpToolResult, textFromMcpToolResult } from "../mcp/protocol.js";
8
+ export const RPC_PROTOCOL = Object.freeze({
9
+ name: "vascend.talos-rpc",
10
+ version: 2,
11
+ requests: Object.freeze(["prompt", "send", "bash", "abort", "ping", "capabilities", "sessions"]),
12
+ singleFlight: true,
13
+ });
14
+ // Coda single-flight delle richieste che toccano la sessione (prompt/bash).
15
+ // runTurn appende alla STESSA sessione: due turni concorrenti intreccerebbero
16
+ // cronologia ed eventi. La coda serializza; abort interrompe il corrente o
17
+ // rimuove un job non ancora partito.
18
+ export class RpcTurnQueue {
19
+ onQueued;
20
+ queue = [];
21
+ current = null;
22
+ draining = false;
23
+ constructor(onQueued) {
24
+ this.onQueued = onQueued;
25
+ }
26
+ get runningId() {
27
+ return this.current?.id ?? null;
28
+ }
29
+ get depth() {
30
+ return this.queue.length + (this.current ? 1 : 0);
31
+ }
32
+ push(id, run) {
33
+ const job = { id, run, cancelled: false };
34
+ this.queue.push(job);
35
+ if (this.current || this.queue.length > 1)
36
+ this.onQueued?.(id, this.depth - 1);
37
+ void this.drain();
38
+ }
39
+ // Interrompe: senza target il turno IN CORSO; con target il job in corso (se
40
+ // combacia) oppure lo rimuove dalla coda. Ritorna l'id interrotto o null.
41
+ abort(target) {
42
+ if (this.current && (target === undefined || this.current.id === target)) {
43
+ const id = this.current.id;
44
+ this.current.controller.abort();
45
+ return id;
46
+ }
47
+ if (target === undefined)
48
+ return null;
49
+ const job = this.queue.find((j) => j.id === target && !j.cancelled);
50
+ if (!job)
51
+ return null;
52
+ job.cancelled = true;
53
+ return job.id;
54
+ }
55
+ async drain() {
56
+ if (this.draining)
57
+ return;
58
+ this.draining = true;
59
+ try {
60
+ for (;;) {
61
+ const job = this.queue.shift();
62
+ if (!job)
63
+ return;
64
+ if (job.cancelled)
65
+ continue;
66
+ const controller = new AbortController();
67
+ this.current = { id: job.id, controller };
68
+ try {
69
+ await job.run(controller.signal);
70
+ }
71
+ catch {
72
+ // il job gestisce i propri errori; qui si garantisce solo il drain
73
+ }
74
+ finally {
75
+ this.current = null;
76
+ }
77
+ }
78
+ }
79
+ finally {
80
+ this.draining = false;
81
+ }
82
+ }
83
+ }
84
+ export function startRpc(agent, opts) {
85
+ const rl = readline.createInterface({ input: stdin });
86
+ const emit = (id, event) => {
87
+ stdout.write(JSON.stringify({ id, event }) + "\n");
88
+ };
89
+ const queue = new RpcTurnQueue((id, position) => emit(id, { type: "queued", position }));
90
+ const confirm = async () => opts.autoApprove;
91
+ // Casella del turno in volo: la richiesta "send" ci deposita i messaggi che
92
+ // l'utente scrive mentre l'agente lavora. Nulla in volo = nessuna casella.
93
+ let activeInbox = null;
94
+ rl.on("line", (raw) => {
95
+ if (!raw.trim())
96
+ return;
97
+ let req;
98
+ try {
99
+ req = JSON.parse(raw);
100
+ }
101
+ catch {
102
+ emit(null, { type: "error", message: "json non valido", code: "RPC_BAD_JSON" });
103
+ return;
104
+ }
105
+ const id = typeof req.id === "string" && req.id ? req.id : null;
106
+ if (!id) {
107
+ emit(null, { type: "error", message: "id richiesta mancante", code: "RPC_BAD_REQUEST" });
108
+ return;
109
+ }
110
+ switch (req.type) {
111
+ case "ping":
112
+ emit(id, { type: "pong" });
113
+ return;
114
+ case "capabilities":
115
+ emit(id, { type: "capabilities", capabilities: HORIZON_CAPABILITIES, protocol: RPC_PROTOCOL });
116
+ emit(id, { type: "done" });
117
+ return;
118
+ case "sessions": {
119
+ try {
120
+ emit(id, { type: "sessions", sessions: listSessions(agent.config.sessionDir) });
121
+ emit(id, { type: "done" });
122
+ }
123
+ catch (err) {
124
+ emit(id, { type: "error", message: err.message, code: "RPC_SESSIONS" });
125
+ }
126
+ return;
127
+ }
128
+ case "abort": {
129
+ const target = queue.abort(req.target);
130
+ if (target)
131
+ emit(id, { type: "aborted", target });
132
+ else
133
+ emit(id, { type: "error", message: "nessun turno da interrompere", code: "RPC_NOT_RUNNING" });
134
+ return;
135
+ }
136
+ case "bash": {
137
+ const request = req;
138
+ queue.push(id, (signal) => runBash(agent, request, confirm, signal, (e) => emit(id, e)));
139
+ return;
140
+ }
141
+ case "send": {
142
+ const text = String(request_text(req));
143
+ if (!text.trim()) {
144
+ emit(id, { type: "error", message: "messaggio vuoto", code: "RPC_BAD_REQUEST" });
145
+ return;
146
+ }
147
+ const target = queue.runningId;
148
+ if (!target || !activeInbox) {
149
+ // Niente turno in volo: sta al client mandarlo come prompt normale.
150
+ emit(id, { type: "error", message: "nessun turno in corso", code: "RPC_NOT_RUNNING" });
151
+ return;
152
+ }
153
+ const messageId = activeInbox.push(text, typeof req.messageId === "string" ? req.messageId : undefined);
154
+ emit(id, { type: "accepted", messageId, target });
155
+ emit(id, { type: "done" });
156
+ return;
157
+ }
158
+ case "prompt": {
159
+ const text = String(request_text(req));
160
+ if (!text.trim()) {
161
+ emit(id, { type: "error", message: "prompt vuoto", code: "RPC_BAD_REQUEST" });
162
+ return;
163
+ }
164
+ queue.push(id, async (signal) => {
165
+ if (signal.aborted) {
166
+ emit(id, { type: "error", message: "interrotto", code: "RPC_ABORTED" });
167
+ return;
168
+ }
169
+ let finished = false;
170
+ const inbox = createUserInbox();
171
+ activeInbox = inbox;
172
+ await runTurn({ ...agent, confirm, inbox }, text, (event) => {
173
+ if (event.type === "done" || event.type === "error")
174
+ finished = true;
175
+ emit(id, event);
176
+ }, signal).finally(() => {
177
+ if (activeInbox === inbox)
178
+ activeInbox = null;
179
+ });
180
+ // runTurn chiude sempre con done|error; questa e' una rete di
181
+ // sicurezza per garantire il contratto anche su regressioni future.
182
+ if (!finished)
183
+ emit(id, { type: "done" });
184
+ });
185
+ return;
186
+ }
187
+ default:
188
+ emit(id, { type: "error", message: `richiesta sconosciuta: ${String(req.type)}`, code: "RPC_UNKNOWN_TYPE" });
189
+ }
190
+ });
191
+ }
192
+ function request_text(req) {
193
+ return typeof req.text === "string" ? req.text : "";
194
+ }
195
+ // Esegue un comando bash fuori dal loop dell'agente. Con excludeFromContext
196
+ // (default true) l'esito non entra nella cronologia della sessione.
197
+ async function runBash(agent, req, confirm, signal, emit) {
198
+ const tool = agent.tools.get("bash");
199
+ if (!tool) {
200
+ emit({ type: "error", message: "strumento bash non disponibile", code: "RPC_NO_TOOL" });
201
+ return;
202
+ }
203
+ const call = { type: "tool_call", id: `bash-${Date.now().toString(36)}`, name: "bash", input: { command: req.command } };
204
+ emit({ type: "tool_call", call });
205
+ let output;
206
+ let isError = false;
207
+ try {
208
+ const handled = await tool.handler({ command: req.command }, { cwd: agent.config.cwd, signal, confirm });
209
+ output = textFromMcpToolResult(normalizeMcpToolResult(handled));
210
+ }
211
+ catch (err) {
212
+ output = `eccezione: ${err.message}`;
213
+ isError = true;
214
+ }
215
+ const result = { type: "tool_result", callId: call.id, output, isError };
216
+ emit({ type: "tool_result", result });
217
+ if (req.excludeFromContext === false) {
218
+ agent.session.append({ role: "user", content: [{ type: "text", text: `$ ${req.command}` }] });
219
+ agent.session.append({ role: "tool", content: [result] });
220
+ }
221
+ emit({ type: "done" });
222
+ }
package/dist/sdk.d.ts ADDED
@@ -0,0 +1,67 @@
1
+ export { bootstrap } from "./core/bootstrap.js";
2
+ export type { Harness } from "./core/bootstrap.js";
3
+ export { runTurn } from "./core/agent.js";
4
+ export type { AgentDeps } from "./core/agent.js";
5
+ export { FileCoordinationHub, fileActor, formatFileConflicts, withFileActor } from "./core/file-coordination.js";
6
+ export type { FileActivityMode, FileActor, FileActorKind, FileCoordinationContext, FileCoordinationEvent, FileLease, FileLeaseResult, FilePresence, } from "./core/file-coordination.js";
7
+ export { createUserInbox, pendingText } from "./core/user-inbox.js";
8
+ export { WorkspaceSession, workspaceSessionKey } from "./core/workspace-sessions.js";
9
+ export type { WorkspacePeer, WorkspaceMessage } from "./core/workspace-sessions.js";
10
+ export type { UserInbox, PendingUserMessage } from "./core/user-inbox.js";
11
+ export { Session } from "./core/session.js";
12
+ export type { SessionNode } from "./core/session.js";
13
+ export { ToolRegistry } from "./tools/registry.js";
14
+ export { registerComputerUse } from "./tools/computer-use.js";
15
+ export type { ComputerUseModule } from "./tools/computer-use.js";
16
+ export { executionPathKey, executionTargetKey, localExecutionTarget, normalizeExecutionTarget, workspaceUri, } from "./core/execution-target.js";
17
+ export type { ExecutionCapabilities, ExecutionPlatform, ExecutionTarget, ExecutionTargetKind, } from "./core/execution-target.js";
18
+ export { MCP_APP_MIME_TYPE, MCP_PROTOCOL_VERSION, MCP_UI_EXTENSION_ID, isToolVisibleToModel, mcpAppUiMeta, normalizeMcpToolResult, supportsMcpApps, textFromMcpToolResult, toolDefinitionForCapabilities, toolInputSchema, } from "./mcp/protocol.js";
19
+ export type { JsonSchema, McpAppUiMeta, McpCallToolResult, McpContentBlock, McpMeta, McpToolAnnotations, McpToolDefinition, } from "./mcp/protocol.js";
20
+ export { builtinTools } from "./tools/builtin.js";
21
+ export { resolveTool } from "./tools/resolve.js";
22
+ export { executeTool } from "./tools/execute.js";
23
+ export { ProviderRegistry, defaultRegistry } from "./providers/registry.js";
24
+ export { ModelRegistry, loadModelRegistry } from "./providers/model-registry.js";
25
+ export type { ModelInfo, CostEstimate } from "./providers/model-registry.js";
26
+ export { KnowledgeBase, knowledgeBase } from "./vascend/competitor-knowledge.js";
27
+ export type { Competitor, BestPractice, MarketStandard, ComparisonVerdict, Category, Importance, } from "./vascend/competitor-knowledge.js";
28
+ export { AnthropicProvider } from "./providers/anthropic.js";
29
+ export { PROVIDER_CATALOG } from "./providers/catalog.js";
30
+ export type { ProviderSpec } from "./providers/catalog.js";
31
+ export { buildConfig, BASE_SYSTEM } from "./core/config.js";
32
+ export type { PiConfig, TalosBanner, TalosColor, TalosUiConfig } from "./core/config.js";
33
+ export { VIBE_MODE_IDS, listVibeModes, parseVibeMode, routeVibeMode, vibeModeSpec, } from "./core/vibe-modes.js";
34
+ export type { VibeModeContextRecipe, VibeModeId, VibeModeRoute, VibeModeSelection, VibeModeSpec, } from "./core/vibe-modes.js";
35
+ export { buildContextFabric, contextFramePath, contextProjectKey, loadContextFrame, renderContextFrame, resetContextFrame, updateContextPins, } from "./vascend/context-fabric.js";
36
+ export type { ContextFabricCompileOptions, ContextFabricInput, ContextFabricResult, ContextFrame, ContextLease, ContextLeaseSource, ContextReceipt, } from "./vascend/context-fabric.js";
37
+ export { memoryStatus } from "./vascend/memory-status.js";
38
+ export type { MemoryFrontierNode, MemoryStatus } from "./vascend/memory-status.js";
39
+ export { buildContextLedger } from "./core/context-ledger.js";
40
+ export { applyMediaEviction, applyToolResultDemotion, mediaBudgetPolicy, planMediaEviction, planToolResultDemotion, slimMessageForSession, slimToolResultForSession, toolIndexPolicy, DEFAULT_MEDIA_BUDGET, DEFAULT_TOOL_INDEX, } from "./core/tool-result-index.js";
41
+ export type { DemotedRef, MediaBudgetPolicy, MediaEvictionPlan, ToolIndexPlan, ToolIndexPolicy, } from "./core/tool-result-index.js";
42
+ export { ToolOutputStore } from "./core/tool-result-store.js";
43
+ export type { StoredToolOutput } from "./core/tool-result-store.js";
44
+ export { claim, claimable, complete, counts, expire, fail, formatQueue, heartbeat, makeItem, WorkQueue, DEFAULT_LEASE_MS, DEFAULT_MAX_ATTEMPTS, } from "./vascend/work-queue.js";
45
+ export type { NewWorkItem, QueueCounts, WorkItem, WorkItemState } from "./vascend/work-queue.js";
46
+ export { runWorkLoop } from "./vascend/work-runner.js";
47
+ export type { GateOutcome, ItemOutcome, LoopEvent, LoopReport, StopReason, WorkLoopDeps, WorkLoopOptions, } from "./vascend/work-runner.js";
48
+ export { briefFor, createFreshAgentRunner, parseOutcome } from "./vascend/work-agent.js";
49
+ export type { FreshAgentOptions } from "./vascend/work-agent.js";
50
+ export type { ContextBlockInput, ContextHeavyItem, ContextHistoryStats, ContextLedger, ContextPackStats, ContextSlice, } from "./core/context-ledger.js";
51
+ export { buildArchitectureMap, renderArchitectureMap, scanArchitectureMap, } from "./vascend/architecture-map.js";
52
+ export type { ArchDependency, ArchEntryPoint, ArchExternal, ArchHotspot, ArchModuleStat, ArchSourceFile, ArchitectureMap, } from "./vascend/architecture-map.js";
53
+ export { doctorExitCode, renderDoctorReport, runDoctor } from "./core/doctor.js";
54
+ export type { DoctorCheck, DoctorReport, DoctorStatus } from "./core/doctor.js";
55
+ export { HORIZON_CAPABILITIES, HorizonContextUnavailableError, HorizonEngine, HorizonMainTeam, needsGuideArbitration, HorizonSessionNotFoundError, HorizonStateError, routeWorkerModels, } from "./horizon/index.js";
56
+ export type { HorizonCapabilityDescriptor, HorizonContextStatus, HorizonEngineOptions, HorizonEngineState, HorizonModelCatalog, HorizonModelDescriptor, HorizonModelInspectionOptions, HorizonProviderDescriptor, HorizonRuntime, HorizonSessionListItem, HorizonSessionSnapshot, HorizonTurn, HorizonTurnInput, HorizonTurnOptions, HorizonTurnResult, HorizonTurnStatus, HorizonVibeStatus, } from "./horizon/index.js";
57
+ export type { HorizonGuideCooperation, HorizonGuideDecision, HorizonGuideDecisionRecord, HorizonGuideDecisionRequest, HorizonGuidePlan, HorizonGuideTask, HorizonGuideVerdict, HorizonMainExchange, HorizonMainRef, HorizonMainTeamConfig, HorizonMainTeamEvent, HorizonMainTeamResult, HorizonMainTeamTurn, HorizonTeamRef, HorizonAgentPurpose, } from "./horizon/index.js";
58
+ export type { AgentEvent, EventSink, Message, ContentPart, Tool, ToolDef, ToolRegistrationDef, RegisteredTool, ToolHandler, ToolHandlerOutput, ToolContext, ImagePart, Provider, ModelTurn, CompletionRequest, } from "./core/types.js";
59
+ export type { Extension, ExtensionApi, SlashCommand, } from "./extensions/types.js";
60
+ export { CoworkManager, localIdentity, CoworkStore, CoworkSyncChannel, CoworkEngine, createCoworkIpc, createCoworkClient, } from "./cowork/index.js";
61
+ export type { CoworkIdentity, CoworkWorkspace, CoworkSession, CoworkMember, CoworkMessage, CoworkSyncEvent, CoworkPresence, CoworkIpcApi, CoworkClient, } from "./cowork/index.js";
62
+ export { kingdomLive, KingdomLive } from "./vascend/kingdom-live.js";
63
+ export type { LiveVassal, DeliveryOutcome } from "./vascend/kingdom-live.js";
64
+ export { loadModelsDev, cachedModelCatalog, modelCapabilities } from "./providers/models-dev.js";
65
+ export { ModelCatalog, parseModelCatalog } from "./providers/model-catalog.js";
66
+ export type { CatalogModel, ReasoningOption } from "./providers/model-catalog.js";
67
+ export { modelEfforts } from "./providers/model-effort.js";