@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,56 @@
1
+ // Casella dei messaggi che l'utente scrive MENTRE l'agente sta lavorando.
2
+ //
3
+ // Il turno dell'agente non e' istantaneo: legge file, lancia comandi, itera. Se
4
+ // l'utente ha una correzione da dare ("no, l'altro file", "fermati sul test")
5
+ // farla aspettare la fine della risposta significa lasciar proseguire il lavoro
6
+ // sbagliato. Qui i messaggi si accumulano e il loop li preleva al primo confine
7
+ // sicuro -- subito dopo gli esiti dei tool, prima di interrogare di nuovo il
8
+ // modello -- cosi' entrano nel contesto senza spezzare l'accoppiamento fra
9
+ // tool_use e tool_result, che l'API impone.
10
+ //
11
+ // La casella non decide nulla: e' un punto di rendez-vous fra chi scrive
12
+ // (host: chat, TUI, RPC) e chi consuma (il loop dell'agente). Ogni messaggio
13
+ // porta un id, cosi' l'host puo' dire all'utente quando e' stato davvero letto.
14
+ export function createUserInbox(now = Date.now) {
15
+ let queue = [];
16
+ let sequence = 0;
17
+ return {
18
+ push(input, id) {
19
+ const parts = typeof input === "string"
20
+ ? [{ type: "text", text: input }]
21
+ : input;
22
+ const messageId = id ?? `inbox-${now().toString(36)}-${(++sequence).toString(36)}`;
23
+ queue = [...queue, { id: messageId, parts, queuedAt: now() }];
24
+ return messageId;
25
+ },
26
+ promote(id) {
27
+ const target = String(id || "");
28
+ const index = queue.findIndex((message) => message.id === target);
29
+ if (index < 0)
30
+ return false;
31
+ if (index === 0)
32
+ return true;
33
+ const selected = queue[index];
34
+ queue = [selected, ...queue.slice(0, index), ...queue.slice(index + 1)];
35
+ return true;
36
+ },
37
+ get pending() {
38
+ return queue.length;
39
+ },
40
+ drain() {
41
+ if (!queue.length)
42
+ return [];
43
+ const out = queue;
44
+ queue = [];
45
+ return out;
46
+ },
47
+ };
48
+ }
49
+ // Testo leggibile di un messaggio in coda: serve agli host per l'eco in UI e
50
+ // agli hook che ricevono l'input.
51
+ export function pendingText(message) {
52
+ return message.parts
53
+ .filter((part) => part.type === "text")
54
+ .map((part) => part.text)
55
+ .join("\n");
56
+ }
@@ -0,0 +1,10 @@
1
+ import type { ToolContext } from "./types.js";
2
+ type Ask = NonNullable<ToolContext["ask"]>;
3
+ export type UserAnswer = {
4
+ readonly status: "answered";
5
+ readonly answer: string;
6
+ } | {
7
+ readonly status: "unavailable" | "unanswered" | "cancelled" | "failed";
8
+ };
9
+ export declare function requestAnswer(ask: Ask, question: string, options: readonly string[] | undefined, signal: AbortSignal): Promise<UserAnswer>;
10
+ export {};
@@ -0,0 +1,35 @@
1
+ // One host callback owns one question surface, shared by the main agent and team.
2
+ // Keep an active prompt in the queue even if its caller aborts: the host must
3
+ // close that prompt before another collaborator can open one on the same UI.
4
+ const questionQueues = new WeakMap();
5
+ export async function requestAnswer(ask, question, options, signal) {
6
+ if (signal.aborted)
7
+ return { status: "cancelled" };
8
+ const previous = questionQueues.get(ask) ?? Promise.resolve();
9
+ const pending = previous.then(async () => {
10
+ if (signal.aborted)
11
+ return { status: "cancelled" };
12
+ try {
13
+ const answer = await ask(question, options);
14
+ if (signal.aborted)
15
+ return { status: "cancelled" };
16
+ return typeof answer === "string" && answer.trim()
17
+ ? { status: "answered", answer }
18
+ : { status: "unanswered" };
19
+ }
20
+ catch {
21
+ return { status: "failed" };
22
+ }
23
+ });
24
+ const settled = pending.then(() => { });
25
+ questionQueues.set(ask, settled);
26
+ void settled.then(() => { if (questionQueues.get(ask) === settled)
27
+ questionQueues.delete(ask); });
28
+ return new Promise((resolve) => {
29
+ const abort = () => { signal.removeEventListener("abort", abort); resolve({ status: "cancelled" }); };
30
+ signal.addEventListener("abort", abort, { once: true });
31
+ void pending.then((answer) => { signal.removeEventListener("abort", abort); resolve(answer); });
32
+ if (signal.aborted)
33
+ abort();
34
+ });
35
+ }
@@ -0,0 +1 @@
1
+ export declare const TALOS_VERSION: string;
@@ -0,0 +1,10 @@
1
+ import { readFileSync } from "node:fs";
2
+ export const TALOS_VERSION = (() => {
3
+ try {
4
+ const value = JSON.parse(readFileSync(new URL("../../package.json", import.meta.url), "utf8")).version;
5
+ return typeof value === "string" ? value : "dev";
6
+ }
7
+ catch {
8
+ return "dev";
9
+ }
10
+ })();
@@ -0,0 +1,38 @@
1
+ import type { BudgetPolicy } from "../vascend/budget-allocator.js";
2
+ import type { ScoreWeights, TierThresholds } from "../vascend/context-scorer.js";
3
+ export declare const VIBE_MODE_IDS: readonly ["classic", "flow", "architect", "debug", "refactor", "test", "review", "ui", "ship", "migrate", "incident", "research", "security", "performance", "swarm", "ultracheck"];
4
+ export type VibeModeId = (typeof VIBE_MODE_IDS)[number];
5
+ export type VibeModeSelection = VibeModeId | "auto";
6
+ export interface VibeModeContextRecipe {
7
+ readonly totalTokens: number;
8
+ readonly policy: BudgetPolicy;
9
+ readonly weights: ScoreWeights;
10
+ readonly thresholds: TierThresholds;
11
+ readonly focusTerms: readonly string[];
12
+ readonly proofChains: boolean;
13
+ }
14
+ export interface VibeModeSpec {
15
+ readonly id: VibeModeId;
16
+ readonly label: string;
17
+ readonly summary: string;
18
+ readonly firstMove: string;
19
+ readonly operatingRules: readonly string[];
20
+ readonly completionGates: readonly string[];
21
+ readonly signals: ReadonlyArray<{
22
+ readonly phrase: string;
23
+ readonly weight: number;
24
+ }>;
25
+ readonly context: VibeModeContextRecipe;
26
+ }
27
+ export interface VibeModeRoute {
28
+ readonly requested: VibeModeSelection;
29
+ readonly resolved: VibeModeId;
30
+ readonly confidence: number;
31
+ readonly reasons: readonly string[];
32
+ }
33
+ export declare function parseVibeMode(value: unknown): VibeModeSelection | undefined;
34
+ export declare function vibeModeSpec(id: VibeModeId): VibeModeSpec;
35
+ export declare function listVibeModes(): readonly VibeModeSpec[];
36
+ export declare function isContinuationText(value: string): boolean;
37
+ export declare function routeVibeMode(requested: VibeModeSelection, _userText: string, _previous?: VibeModeId): VibeModeRoute;
38
+ export declare function renderVibeModeBlock(route: VibeModeRoute): string;
@@ -0,0 +1,383 @@
1
+ // Le modalita' di vibecoding non sono semplici prompt cosmetici: ogni profilo
2
+ // cambia il processo operativo, i gate di completamento e la lente con cui il
3
+ // Context Fabric spende il budget della context window.
4
+ export const VIBE_MODE_IDS = [
5
+ "classic",
6
+ "flow",
7
+ "architect",
8
+ "debug",
9
+ "refactor",
10
+ "test",
11
+ "review",
12
+ "ui",
13
+ "ship",
14
+ "migrate",
15
+ "incident",
16
+ "research",
17
+ "security",
18
+ "performance",
19
+ "swarm",
20
+ "ultracheck",
21
+ ];
22
+ const BALANCED_POLICY = {
23
+ system: 0.06,
24
+ mission: 0.09,
25
+ vision: 0.1,
26
+ memory: 0.16,
27
+ evidence: 0.3,
28
+ recall: 0.12,
29
+ tool: 0.13,
30
+ tail: 0.04,
31
+ };
32
+ const EVIDENCE_POLICY = {
33
+ system: 0.05,
34
+ mission: 0.08,
35
+ vision: 0.06,
36
+ memory: 0.12,
37
+ evidence: 0.4,
38
+ recall: 0.15,
39
+ tool: 0.1,
40
+ tail: 0.04,
41
+ };
42
+ const DESIGN_POLICY = {
43
+ system: 0.06,
44
+ mission: 0.12,
45
+ vision: 0.16,
46
+ memory: 0.18,
47
+ evidence: 0.24,
48
+ recall: 0.14,
49
+ tool: 0.06,
50
+ tail: 0.04,
51
+ };
52
+ const EXECUTION_POLICY = {
53
+ system: 0.05,
54
+ mission: 0.08,
55
+ vision: 0.07,
56
+ memory: 0.12,
57
+ evidence: 0.28,
58
+ recall: 0.08,
59
+ tool: 0.28,
60
+ tail: 0.04,
61
+ };
62
+ const BASE_WEIGHTS = {
63
+ relevance: 1,
64
+ dependency: 0.8,
65
+ trust: 0.65,
66
+ freshness: 0.55,
67
+ novelty: 0.4,
68
+ conflictRisk: 1,
69
+ tokenCost: 0.3,
70
+ };
71
+ const EVIDENCE_WEIGHTS = {
72
+ relevance: 1.2,
73
+ dependency: 0.9,
74
+ trust: 0.95,
75
+ freshness: 0.75,
76
+ novelty: 0.35,
77
+ conflictRisk: 1.25,
78
+ tokenCost: 0.2,
79
+ };
80
+ const ARCHITECTURE_WEIGHTS = {
81
+ relevance: 1.05,
82
+ dependency: 1.15,
83
+ trust: 0.9,
84
+ freshness: 0.45,
85
+ novelty: 0.55,
86
+ conflictRisk: 1.15,
87
+ tokenCost: 0.25,
88
+ };
89
+ const FRESH_WEIGHTS = {
90
+ relevance: 1.1,
91
+ dependency: 0.75,
92
+ trust: 0.7,
93
+ freshness: 1.1,
94
+ novelty: 0.35,
95
+ conflictRisk: 1,
96
+ tokenCost: 0.22,
97
+ };
98
+ const DEFAULT_THRESHOLDS = { high: 1.2, mid: 0.5 };
99
+ const STRICT_THRESHOLDS = { high: 1.35, mid: 0.65 };
100
+ function recipe(totalTokens, policy, weights, focusTerms, proofChains = false, thresholds = DEFAULT_THRESHOLDS) {
101
+ return { totalTokens, policy, weights, thresholds, focusTerms, proofChains };
102
+ }
103
+ const MODES = {
104
+ classic: {
105
+ id: "classic",
106
+ label: "Classic",
107
+ summary: "Comportamento Talos essenziale, senza una procedura specializzata.",
108
+ firstMove: "Comprendi la richiesta e scegli la prossima azione minima utile.",
109
+ operatingRules: ["Usa le primitive del repository", "Mantieni il cambiamento proporzionato alla richiesta"],
110
+ completionGates: ["Risultato richiesto consegnato", "Verifica proporzionata al rischio"],
111
+ signals: [],
112
+ context: recipe(3_000, BALANCED_POLICY, BASE_WEIGHTS, []),
113
+ },
114
+ flow: {
115
+ id: "flow",
116
+ label: "Flow",
117
+ summary: "Vertical slice rapido con feedback frequente e poco overhead.",
118
+ firstMove: "Trova il percorso end-to-end piu' corto che produce valore osservabile.",
119
+ operatingRules: ["Costruisci una slice funzionante prima di rifinire", "Mantieni cicli edit-test brevi", "Evita astrazioni premature"],
120
+ completionGates: ["Percorso principale eseguibile", "Test mirati verdi", "Nessuna regressione evidente"],
121
+ signals: [
122
+ { phrase: "prototype", weight: 3 }, { phrase: "prototipo", weight: 3 },
123
+ { phrase: "mvp", weight: 3 }, { phrase: "scaffold", weight: 2 },
124
+ { phrase: "velocemente", weight: 1.5 }, { phrase: "quick", weight: 1.5 },
125
+ ],
126
+ context: recipe(2_800, EXECUTION_POLICY, FRESH_WEIGHTS, ["vertical slice", "feedback", "main path", "targeted test"]),
127
+ },
128
+ architect: {
129
+ id: "architect",
130
+ label: "Architect",
131
+ summary: "Contratti e confini prima del codice, con alternative e conseguenze esplicite.",
132
+ firstMove: "Mappa componenti, invarianti, flussi e punti di estensione prima di scegliere la forma.",
133
+ operatingRules: ["Rendi espliciti invarianti e trade-off", "Preferisci interfacce piccole e reversibili", "Confronta almeno due opzioni quando la scelta e' strutturale"],
134
+ completionGates: ["Contratti coerenti", "Rischi e migrazione considerati", "Decisione verificabile nel codice"],
135
+ signals: [
136
+ { phrase: "architettura", weight: 3 }, { phrase: "architecture", weight: 3 },
137
+ { phrase: "paradigma", weight: 4 }, { phrase: "design system", weight: 2 },
138
+ { phrase: "context management", weight: 3 }, { phrase: "gestione del context", weight: 3 },
139
+ { phrase: "api design", weight: 2 }, { phrase: "contratto", weight: 1.5 },
140
+ ],
141
+ context: recipe(4_200, DESIGN_POLICY, ARCHITECTURE_WEIGHTS, ["invariant", "contract", "boundary", "trade-off", "decision", "dependency"], true),
142
+ },
143
+ debug: {
144
+ id: "debug",
145
+ label: "Debug Lab",
146
+ summary: "Riproduzione, ipotesi falsificabili, root cause e regression test.",
147
+ firstMove: "Riproduci il difetto e raccogli l'evidenza che separa sintomo e causa.",
148
+ operatingRules: ["Non correggere prima di avere una riproduzione", "Cambia una variabile alla volta", "Preferisci la causa minima al workaround"],
149
+ completionGates: ["Root cause dimostrata", "Regression test rosso poi verde", "Fix minimo senza mascherare errori"],
150
+ signals: [
151
+ { phrase: "bug", weight: 3 }, { phrase: "errore", weight: 2.5 },
152
+ { phrase: "error", weight: 2.5 }, { phrase: "debug", weight: 4 },
153
+ { phrase: "root cause", weight: 4 }, { phrase: "non funziona", weight: 3 },
154
+ { phrase: "failing", weight: 2 }, { phrase: "stack trace", weight: 3 },
155
+ ],
156
+ context: recipe(4_000, EVIDENCE_POLICY, EVIDENCE_WEIGHTS, ["failure", "reproduction", "root cause", "stacktrace", "regression", "last known good"], true),
157
+ },
158
+ refactor: {
159
+ id: "refactor",
160
+ label: "Refactor",
161
+ summary: "Trasformazione incrementale a comportamento invariato.",
162
+ firstMove: "Blocca il comportamento corrente con test di caratterizzazione e identifica il seam piu' sicuro.",
163
+ operatingRules: ["Separa ristrutturazione e cambio funzionale", "Procedi per passi compilabili", "Riduci accoppiamento senza ampliare lo scope"],
164
+ completionGates: ["Comportamento preservato", "Test caratterizzazione verdi", "Diff leggibile e reversibile"],
165
+ signals: [
166
+ { phrase: "refactor", weight: 4 }, { phrase: "ristruttur*", weight: 3 },
167
+ { phrase: "cleanup", weight: 2 }, { phrase: "debt", weight: 2 },
168
+ { phrase: "duplicazione", weight: 2 }, { phrase: "coupling", weight: 2 },
169
+ ],
170
+ context: recipe(3_500, EXECUTION_POLICY, ARCHITECTURE_WEIGHTS, ["public behavior", "characterization", "callsite", "seam", "contract", "dependency"]),
171
+ },
172
+ test: {
173
+ id: "test",
174
+ label: "Test Lock",
175
+ summary: "Fault model e prove deterministiche prima della dichiarazione di successo.",
176
+ firstMove: "Definisci il fault model e il test che fallirebbe se il requisito fosse violato.",
177
+ operatingRules: ["Testa comportamento, non dettagli accidentali", "Copri confini ed error path", "Elimina flakiness e dipendenze globali"],
178
+ completionGates: ["Test nuovo significativo", "Suite pertinente verde", "Fallimento osservabile prima del fix quando applicabile"],
179
+ signals: [
180
+ { phrase: "aggiungi test", weight: 4 }, { phrase: "test suite", weight: 3 },
181
+ { phrase: "coverage", weight: 3 }, { phrase: "flaky", weight: 4 },
182
+ { phrase: "regression test", weight: 4 }, { phrase: "property test", weight: 3 },
183
+ ],
184
+ context: recipe(3_600, EVIDENCE_POLICY, EVIDENCE_WEIGHTS, ["assertion", "fixture", "edge case", "failure", "coverage", "deterministic"]),
185
+ },
186
+ review: {
187
+ id: "review",
188
+ label: "Review",
189
+ summary: "Revisione evidence-first orientata a difetti azionabili e rischio reale.",
190
+ firstMove: "Leggi il diff e ricostruisci i contratti toccati prima di formulare findings.",
191
+ operatingRules: ["Dai priorita' a correttezza e data loss", "Ogni finding deve avere evidenza e impatto", "Evita preferenze stilistiche non bloccanti"],
192
+ completionGates: ["Findings ordinati per severita'", "Linee e scenario di riproduzione", "Copertura dei percorsi critici"],
193
+ signals: [
194
+ { phrase: "review", weight: 4 }, { phrase: "code review", weight: 4 },
195
+ { phrase: "audit", weight: 3 }, { phrase: "trova bug", weight: 3 },
196
+ { phrase: "pull request", weight: 2 }, { phrase: "diff", weight: 1.5 },
197
+ ],
198
+ context: recipe(4_000, EVIDENCE_POLICY, EVIDENCE_WEIGHTS, ["diff", "contract", "regression", "data loss", "security", "callsite"], true, STRICT_THRESHOLDS),
199
+ },
200
+ ui: {
201
+ id: "ui",
202
+ label: "UI Studio",
203
+ summary: "Interfacce complete di stati, responsive, accessibilita' e visual QA.",
204
+ firstMove: "Inventaria design system, layout, stati e superfici gia' esistenti prima di modificare la vista.",
205
+ operatingRules: ["Progetta loading, empty, error e success", "Verifica tastiera e responsive", "Riusa token e componenti esistenti"],
206
+ completionGates: ["Stati principali visibili", "Accessibilita' e tastiera verificate", "Visual QA alle larghezze critiche"],
207
+ signals: [
208
+ { phrase: "ui", weight: 2.5 }, { phrase: "interfaccia", weight: 3 },
209
+ { phrase: "frontend", weight: 2 }, { phrase: "layout", weight: 2 },
210
+ { phrase: "responsive", weight: 3 }, { phrase: "accessibil*", weight: 3 },
211
+ { phrase: "tui", weight: 3 }, { phrase: "desktop", weight: 1.5 },
212
+ ],
213
+ context: recipe(3_600, EXECUTION_POLICY, FRESH_WEIGHTS, ["design token", "component", "state", "keyboard", "responsive", "accessibility", "visual qa"]),
214
+ },
215
+ ship: {
216
+ id: "ship",
217
+ label: "Release Guard",
218
+ summary: "Hardening di rilascio con build, compatibilita', sicurezza e rollback.",
219
+ firstMove: "Definisci artefatto, ambienti, gate CI e strategia di rollback.",
220
+ operatingRules: ["Non confondere build riuscita con release sicura", "Controlla config e migrazioni", "Mantieni un rollback praticabile"],
221
+ completionGates: ["Build e suite richieste verdi", "Migrazione/rollback verificati", "Note operative aggiornate"],
222
+ signals: [
223
+ { phrase: "release", weight: 4 }, { phrase: "ship", weight: 3 },
224
+ { phrase: "deploy", weight: 3 }, { phrase: "production", weight: 3 },
225
+ { phrase: "pubblic*", weight: 2 }, { phrase: "ci/cd", weight: 3 },
226
+ ],
227
+ context: recipe(4_000, EVIDENCE_POLICY, EVIDENCE_WEIGHTS, ["build", "release", "compatibility", "migration", "rollback", "security", "ci"]),
228
+ },
229
+ migrate: {
230
+ id: "migrate",
231
+ label: "Migration Wave",
232
+ summary: "Migrazione a ondate con compatibilita' esplicita e rollback.",
233
+ firstMove: "Mappa produttori, consumatori, dati e contratti prima di definire le ondate.",
234
+ operatingRules: ["Mantieni compatibilita' durante la transizione", "Separa schema, backfill e cutover", "Ogni onda deve essere osservabile e reversibile"],
235
+ completionGates: ["Callsite inventariati", "Backfill/cutover verificati", "Rollback e rimozione legacy pianificati"],
236
+ signals: [
237
+ { phrase: "migrazione", weight: 4 }, { phrase: "migration", weight: 4 },
238
+ { phrase: "upgrade", weight: 3 }, { phrase: "backfill", weight: 4 },
239
+ { phrase: "legacy", weight: 2 }, { phrase: "deprecat*", weight: 2 },
240
+ ],
241
+ context: recipe(4_300, DESIGN_POLICY, ARCHITECTURE_WEIGHTS, ["compatibility", "schema", "consumer", "producer", "backfill", "cutover", "rollback"], true),
242
+ },
243
+ incident: {
244
+ id: "incident",
245
+ label: "Incident Glassbox",
246
+ summary: "Contenimento e ripristino evidence-first, senza refactor opportunistici.",
247
+ firstMove: "Stabilisci impatto, timeline e misura di contenimento piu' reversibile.",
248
+ operatingRules: ["Contieni prima di ottimizzare", "Preserva evidenza e timeline", "Evita cambiamenti non necessari durante il recupero"],
249
+ completionGates: ["Impatto contenuto", "Servizio verificato", "Root cause e azioni preventive registrate"],
250
+ signals: [
251
+ { phrase: "incident", weight: 5 }, { phrase: "outage", weight: 5 },
252
+ { phrase: "down", weight: 2 }, { phrase: "produzione rotta", weight: 5 },
253
+ { phrase: "emergenza", weight: 4 }, { phrase: "sev1", weight: 5 },
254
+ ],
255
+ context: recipe(4_500, EVIDENCE_POLICY, EVIDENCE_WEIGHTS, ["impact", "timeline", "containment", "last known good", "rollback", "root cause"], true, STRICT_THRESHOLDS),
256
+ },
257
+ research: {
258
+ id: "research",
259
+ label: "Research",
260
+ summary: "Ricerca verificabile con fonti primarie, esperimenti e decision matrix.",
261
+ firstMove: "Formula le domande decisionali e raccogli evidenza primaria per ciascuna.",
262
+ operatingRules: ["Distingui fatti, inferenze e ipotesi", "Preferisci fonti primarie", "Riduci l'incertezza con piccoli esperimenti"],
263
+ completionGates: ["Fonti/evidenze tracciabili", "Alternative confrontate", "Raccomandazione e incertezze esplicite"],
264
+ signals: [
265
+ { phrase: "ricerca", weight: 3 }, { phrase: "research", weight: 3 },
266
+ { phrase: "confront*", weight: 2 }, { phrase: "benchmark", weight: 2 },
267
+ { phrase: "documentazione", weight: 2 }, { phrase: "documentation", weight: 2 },
268
+ { phrase: "best practice", weight: 2 },
269
+ ],
270
+ context: recipe(4_200, DESIGN_POLICY, EVIDENCE_WEIGHTS, ["source", "evidence", "hypothesis", "experiment", "alternative", "uncertainty"], true),
271
+ },
272
+ security: {
273
+ id: "security",
274
+ label: "Security",
275
+ summary: "Threat model, confini di fiducia e prove negative prima del fix.",
276
+ firstMove: "Mappa asset, attori, trust boundary e percorso di abuso.",
277
+ operatingRules: ["Assumi input ostile ai confini", "Non esporre segreti nei log", "Preferisci deny-by-default e least privilege"],
278
+ completionGates: ["Abuse case riprodotto o escluso", "Fix sul trust boundary", "Test negativo e regressione"],
279
+ signals: [
280
+ { phrase: "security", weight: 4 }, { phrase: "sicurezza", weight: 4 },
281
+ { phrase: "vulnerab*", weight: 4 }, { phrase: "auth", weight: 2 },
282
+ { phrase: "permission", weight: 2 }, { phrase: "segreto", weight: 2 },
283
+ { phrase: "injection", weight: 4 },
284
+ ],
285
+ context: recipe(4_300, EVIDENCE_POLICY, EVIDENCE_WEIGHTS, ["asset", "attacker", "trust boundary", "permission", "secret", "abuse case", "negative test"], true, STRICT_THRESHOLDS),
286
+ },
287
+ performance: {
288
+ id: "performance",
289
+ label: "Performance",
290
+ summary: "Ottimizzazione guidata da baseline, profilo e confronto ripetibile.",
291
+ firstMove: "Misura una baseline rappresentativa e localizza il collo di bottiglia.",
292
+ operatingRules: ["Non ottimizzare senza misura", "Cambia un fattore alla volta", "Controlla memoria, latenza e correttezza insieme"],
293
+ completionGates: ["Baseline e benchmark ripetibili", "Miglioramento misurato", "Correttezza invariata"],
294
+ signals: [
295
+ { phrase: "performance", weight: 4 }, { phrase: "prestazioni", weight: 4 },
296
+ { phrase: "ottimizz*", weight: 3 }, { phrase: "latency", weight: 3 },
297
+ { phrase: "memory leak", weight: 4 }, { phrase: "profil*", weight: 3 },
298
+ ],
299
+ context: recipe(3_800, EVIDENCE_POLICY, FRESH_WEIGHTS, ["baseline", "profile", "hot path", "latency", "allocation", "benchmark", "regression"]),
300
+ },
301
+ swarm: {
302
+ id: "swarm",
303
+ label: "Swarm",
304
+ summary: "Decomposizione parallela con contratti, isolamento e gate di integrazione.",
305
+ firstMove: "Separa workstream indipendenti e definisci contratti di integrazione prima di avviare i collaboratori.",
306
+ operatingRules: ["Parallelizza solo lavoro realmente indipendente", "Assegna ownership di file e contratti", "Conserva ogni ramo finche' merge e verifica non riescono"],
307
+ completionGates: ["Report di ogni workstream", "Merge senza perdita dati", "Verifica integrata finale"],
308
+ signals: [
309
+ { phrase: "parallel", weight: 3 }, { phrase: "parallelo", weight: 3 },
310
+ { phrase: "sub-agent", weight: 3 }, { phrase: "subagent", weight: 3 },
311
+ { phrase: "kingdom", weight: 4 }, { phrase: "swarm", weight: 4 },
312
+ { phrase: "vassall*", weight: 4 },
313
+ ],
314
+ context: recipe(4_500, DESIGN_POLICY, ARCHITECTURE_WEIGHTS, ["workstream", "ownership", "dependency", "contract", "branch", "merge", "integration"], true),
315
+ },
316
+ ultracheck: {
317
+ id: "ultracheck",
318
+ label: "Ultracheck",
319
+ summary: "Modalita' avversariale completa: requisiti, prove, parallelismo sicuro e doppio gate.",
320
+ firstMove: "Costruisci una mappa dei requisiti e dei rischi, poi separa audit e implementazione.",
321
+ operatingRules: ["Cerca controesempi prima di accettare il risultato", "Usa parallelismo solo con isolamento verificato", "Promuovi ogni conclusione importante a prova richiamabile"],
322
+ completionGates: ["Tutti i MUST verificati", "Test e typecheck pertinenti verdi", "Review avversariale senza finding bloccanti", "Nessun ramo o dato perso"],
323
+ signals: [{ phrase: "ultracheck", weight: 100 }],
324
+ context: recipe(5_500, EVIDENCE_POLICY, EVIDENCE_WEIGHTS, ["requirement", "counterexample", "evidence", "risk", "regression", "integration", "completion"], true, STRICT_THRESHOLDS),
325
+ },
326
+ };
327
+ export function parseVibeMode(value) {
328
+ if (typeof value !== "string")
329
+ return undefined;
330
+ const normalized = value.trim().toLowerCase();
331
+ if (normalized === "auto")
332
+ return "auto";
333
+ return VIBE_MODE_IDS.includes(normalized)
334
+ ? normalized
335
+ : undefined;
336
+ }
337
+ export function vibeModeSpec(id) {
338
+ return MODES[id];
339
+ }
340
+ export function listVibeModes() {
341
+ return VIBE_MODE_IDS.map((id) => MODES[id]);
342
+ }
343
+ export function isContinuationText(value) {
344
+ const text = value.trim().toLowerCase().replace(/[.!?]+$/g, "");
345
+ if (!text)
346
+ return false;
347
+ if (text.split(/\s+/).length > 12)
348
+ return false;
349
+ return /^(continua|continuate|riprendi|riprendiamo|prosegui|procedi|vai avanti|fallo|fai pure|ok|okay|si|sì|yes|go on|continue|resume|keep going|do it)(\b|$)/i.test(text);
350
+ }
351
+ export function routeVibeMode(requested, _userText, _previous) {
352
+ if (requested !== "auto") {
353
+ return { requested, resolved: requested, confidence: 1, reasons: [`modalita' selezionata: ${requested}`] };
354
+ }
355
+ return {
356
+ requested,
357
+ resolved: "classic",
358
+ confidence: 1,
359
+ reasons: ["modalita' auto: profilo classic deterministico"],
360
+ };
361
+ }
362
+ export function renderVibeModeBlock(route) {
363
+ const spec = MODES[route.resolved];
364
+ const rules = spec.operatingRules.map((rule, index) => `@regola[${index + 1}]: "${escapeValue(rule)}"`);
365
+ const gates = spec.completionGates.map((gate, index) => `@gate[${index + 1}]: "${escapeValue(gate)}"`);
366
+ return `[VIBE_MODE]
367
+ INDICE
368
+ 1 = profilo
369
+ 2 = processo
370
+ 3 = gate
371
+
372
+ DEFINIZIONI
373
+ @profilo[attivo]: id=${spec.id}, nome="${escapeValue(spec.label)}", confidence=${route.confidence.toFixed(2)}
374
+ @profilo[scopo]: "${escapeValue(spec.summary)}"
375
+ @azione[prima]: "${escapeValue(spec.firstMove)}"
376
+ ${rules.join("\n")}
377
+ ${gates.join("\n")}
378
+
379
+ OUTPUT: applica davvero processo e gate del profilo; non limitarti a citarne il nome.`;
380
+ }
381
+ function escapeValue(value) {
382
+ return value.replace(/\s+/g, " ").trim().replace(/"/g, "'");
383
+ }
@@ -0,0 +1,13 @@
1
+ export declare class WorkspaceRootError extends Error {
2
+ constructor(message: string);
3
+ }
4
+ /**
5
+ * Normalizza le root aggiuntive del workspace. La root primaria resta `cwd`;
6
+ * il risultato contiene soltanto le directory extra, canoniche e deduplicate.
7
+ */
8
+ export declare function resolveWorkspaceRoots(opts: {
9
+ readonly cwd: string;
10
+ readonly explicit?: readonly string[];
11
+ readonly env?: NodeJS.ProcessEnv;
12
+ }): readonly string[];
13
+ export declare function workspaceSystemBlock(cwd: string, roots: readonly string[]): string;
@@ -0,0 +1,91 @@
1
+ import { realpathSync, statSync } from "node:fs";
2
+ import { resolve } from "node:path";
3
+ const MAX_WORKSPACE_ROOTS = 32;
4
+ export class WorkspaceRootError extends Error {
5
+ constructor(message) {
6
+ super(message);
7
+ this.name = "WorkspaceRootError";
8
+ }
9
+ }
10
+ function envRoots(raw) {
11
+ const value = String(raw ?? "").trim();
12
+ if (!value)
13
+ return [];
14
+ try {
15
+ const parsed = JSON.parse(value);
16
+ if (!Array.isArray(parsed) || parsed.some((item) => typeof item !== "string")) {
17
+ throw new WorkspaceRootError("TALOS_WORKSPACE_ROOTS deve essere un array JSON di percorsi");
18
+ }
19
+ return parsed;
20
+ }
21
+ catch (err) {
22
+ if (err instanceof WorkspaceRootError)
23
+ throw err;
24
+ throw new WorkspaceRootError("TALOS_WORKSPACE_ROOTS contiene JSON non valido");
25
+ }
26
+ }
27
+ function legacyRoots(raw) {
28
+ return String(raw ?? "")
29
+ .split(/[;,]/)
30
+ .map((item) => item.trim())
31
+ .filter(Boolean);
32
+ }
33
+ function canonicalDirectory(raw, cwd) {
34
+ const target = resolve(cwd, raw);
35
+ try {
36
+ const canonical = realpathSync.native(target);
37
+ if (!statSync(canonical).isDirectory()) {
38
+ throw new WorkspaceRootError(`la root workspace non e' una cartella: ${raw}`);
39
+ }
40
+ return canonical;
41
+ }
42
+ catch (err) {
43
+ if (err instanceof WorkspaceRootError)
44
+ throw err;
45
+ throw new WorkspaceRootError(`root workspace non disponibile: ${raw}`);
46
+ }
47
+ }
48
+ function pathKey(value) {
49
+ return process.platform === "win32" ? value.toLowerCase() : value;
50
+ }
51
+ /**
52
+ * Normalizza le root aggiuntive del workspace. La root primaria resta `cwd`;
53
+ * il risultato contiene soltanto le directory extra, canoniche e deduplicate.
54
+ */
55
+ export function resolveWorkspaceRoots(opts) {
56
+ const cwd = canonicalDirectory(opts.cwd, process.cwd());
57
+ const env = opts.env ?? process.env;
58
+ const candidates = [
59
+ ...envRoots(env["TALOS_WORKSPACE_ROOTS"]),
60
+ ...legacyRoots(env["TALOS_EXTRA_ROOTS"]),
61
+ ...(opts.explicit ?? []),
62
+ ];
63
+ if (candidates.length > MAX_WORKSPACE_ROOTS) {
64
+ throw new WorkspaceRootError(`troppe root workspace: massimo ${MAX_WORKSPACE_ROOTS}`);
65
+ }
66
+ const seen = new Set([pathKey(cwd)]);
67
+ const roots = [];
68
+ for (const raw of candidates) {
69
+ const value = String(raw ?? "").trim();
70
+ if (!value)
71
+ continue;
72
+ const canonical = canonicalDirectory(value, cwd);
73
+ const key = pathKey(canonical);
74
+ if (seen.has(key))
75
+ continue;
76
+ seen.add(key);
77
+ roots.push(canonical);
78
+ }
79
+ return Object.freeze(roots);
80
+ }
81
+ export function workspaceSystemBlock(cwd, roots) {
82
+ if (!roots.length)
83
+ return "";
84
+ return [
85
+ "# Workspace multi-root",
86
+ `La cartella primaria e': ${cwd}`,
87
+ "Le seguenti cartelle fanno parte dello stesso progetto e sono accessibili nello stesso turno:",
88
+ ...roots.map((root) => `- ${root}`),
89
+ "Trattale come un unico workspace; non cercare copie del progetto fuori da queste root.",
90
+ ].join("\n");
91
+ }