@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,396 @@
1
+ // ---------------------------------------------------------------------------
2
+ // Flag d'ambiente (parita' con completeness.ts/council.ts/objective-revision.ts).
3
+ // ---------------------------------------------------------------------------
4
+ // L'auto-miglioramento e' OPT-IN (default OFF): e' un layer orientato alla
5
+ // Vision di lungo periodo, non al goal immediato. Si attiva con
6
+ // TALOS_SELF_IMPROVE=1/on/true/yes.
7
+ export function selfImproveEnabled(env) {
8
+ const v = (env["TALOS_SELF_IMPROVE"] ?? "").trim().toLowerCase();
9
+ return v === "1" || v === "on" || v === "true" || v === "yes";
10
+ }
11
+ // Quante iterazioni di miglioramento al massimo (anti-loop, default 2).
12
+ export function selfImproveRounds(env) {
13
+ const n = Number(env["TALOS_SELF_IMPROVE_ROUNDS"]);
14
+ return Number.isInteger(n) && n >= 0 ? n : 2;
15
+ }
16
+ // Soglia di allineamento 0..100 per considerare lo stato "alla Vision" quando
17
+ // non ci sono proposte must (default 85: la Vision e' esigente).
18
+ export function selfImproveThreshold(env) {
19
+ const n = Number(env["TALOS_SELF_IMPROVE_THRESHOLD"]);
20
+ return Number.isFinite(n) && n >= 0 && n <= 100 ? Math.round(n) : 85;
21
+ }
22
+ // Quante proposte al massimo riportare (anti-rumore, default 8).
23
+ export function selfImproveMaxProposals(env) {
24
+ const n = Number(env["TALOS_SELF_IMPROVE_MAX"]);
25
+ return Number.isInteger(n) && n > 0 && n <= 32 ? n : 8;
26
+ }
27
+ export function selfImproveOptions(env) {
28
+ return {
29
+ enabled: selfImproveEnabled(env),
30
+ rounds: selfImproveRounds(env),
31
+ threshold: selfImproveThreshold(env),
32
+ maxProposals: selfImproveMaxProposals(env),
33
+ };
34
+ }
35
+ // ---------------------------------------------------------------------------
36
+ // Normalizzazioni difensive (parita' con objective-revision.ts).
37
+ // ---------------------------------------------------------------------------
38
+ function clamp100(n) {
39
+ if (!Number.isFinite(n))
40
+ return 0;
41
+ return Math.max(0, Math.min(100, Math.round(n)));
42
+ }
43
+ function normPriority(p) {
44
+ const v = (p ?? "").trim().toLowerCase();
45
+ if (v === "must" || v === "should" || v === "could")
46
+ return v;
47
+ // Sinonimi comuni dei modelli.
48
+ if (v === "high" || v === "critical" || v === "p0" || v === "p1")
49
+ return "must";
50
+ if (v === "medium" || v === "p2")
51
+ return "should";
52
+ if (v === "low" || v === "minor" || v === "nice-to-have" || v === "p3")
53
+ return "could";
54
+ return "should"; // default prudente: ne' bloccante ne' trascurabile
55
+ }
56
+ const CATEGORIES = new Set([
57
+ "feature",
58
+ "quality",
59
+ "ux",
60
+ "robustness",
61
+ "performance",
62
+ "alignment",
63
+ ]);
64
+ function normCategory(c) {
65
+ const v = (c ?? "").trim().toLowerCase();
66
+ if (CATEGORIES.has(v))
67
+ return v;
68
+ // Sinonimi.
69
+ if (v === "functionality" || v === "feat")
70
+ return "feature";
71
+ if (v === "test" || v === "tests" || v === "maintainability" || v === "refactor")
72
+ return "quality";
73
+ if (v === "ui" || v === "usability" || v === "design")
74
+ return "ux";
75
+ if (v === "error" || v === "errors" || v === "resilience" || v === "edge" || v === "security")
76
+ return "robustness";
77
+ if (v === "perf" || v === "speed" || v === "efficiency")
78
+ return "performance";
79
+ if (v === "scope" || v === "drift" || v === "vision")
80
+ return "alignment";
81
+ return "feature"; // default: il caso piu' frequente verso la Vision
82
+ }
83
+ function normEffort(e) {
84
+ const v = (e ?? "").trim().toLowerCase();
85
+ if (v === "small" || v === "s" || v === "low")
86
+ return "small";
87
+ if (v === "medium" || v === "m" || v === "mid")
88
+ return "medium";
89
+ if (v === "large" || v === "l" || v === "high" || v === "big")
90
+ return "large";
91
+ return undefined;
92
+ }
93
+ function oneLine(value) {
94
+ return value.replace(/\s+/g, " ").trim();
95
+ }
96
+ const PRIORITY_RANK = { must: 0, should: 1, could: 2 };
97
+ // Ordina le proposte: priorita' (must>should>could) poi impatto decrescente.
98
+ function sortProposals(list) {
99
+ return [...list].sort((a, b) => {
100
+ const pr = PRIORITY_RANK[a.priority] - PRIORITY_RANK[b.priority];
101
+ if (pr !== 0)
102
+ return pr;
103
+ return b.impact - a.impact;
104
+ });
105
+ }
106
+ // Deduplica le proposte per testo normalizzato (case-insensitive), tenendo la
107
+ // prima occorrenza (che, dopo sort, e' quella a priorita'/impatto maggiore).
108
+ function dedupeProposals(list) {
109
+ const seen = new Set();
110
+ const out = [];
111
+ for (const p of list) {
112
+ const key = p.text.toLowerCase();
113
+ if (!key || seen.has(key))
114
+ continue;
115
+ seen.add(key);
116
+ out.push(p);
117
+ }
118
+ return out;
119
+ }
120
+ // ---------------------------------------------------------------------------
121
+ // Aggregazione deterministica: dato un grezzo elenco di proposte (gia' parse) e
122
+ // un allineamento grezzo, costruisce il SelfImproveReport finale applicando
123
+ // normalizzazione, dedup, ordinamento, taglio a maxProposals e gating soglia.
124
+ // PURO: nessun side-effect, nessun provider. Testabile in isolamento.
125
+ // ---------------------------------------------------------------------------
126
+ export function aggregateProposals(opts) {
127
+ const threshold = clamp100(opts.threshold ?? 85);
128
+ const maxProposals = opts.maxProposals && opts.maxProposals > 0 ? opts.maxProposals : 8;
129
+ const ordered = dedupeProposals(sortProposals(opts.proposals)).slice(0, maxProposals);
130
+ const mustCount = ordered.filter((p) => p.priority === "must").length;
131
+ // Allineamento: usa quello dichiarato dal modello se valido; altrimenti
132
+ // derivalo in modo prudente dall'impatto residuo delle proposte (piu' e piu'
133
+ // pesanti sono le proposte, piu' basso l'allineamento).
134
+ const alignment = typeof opts.alignment === "number" && Number.isFinite(opts.alignment)
135
+ ? clamp100(opts.alignment)
136
+ : deriveAlignment(ordered);
137
+ // "Alla Vision" se NON ci sono proposte essenziali (must) E l'allineamento
138
+ // raggiunge la soglia. Le proposte should/could non bloccano.
139
+ const atVision = mustCount === 0 && alignment >= threshold;
140
+ const summary = atVision
141
+ ? `auto-miglioramento: ALLINEATO alla Vision (${alignment}/100, ${ordered.length} proposte minori)`
142
+ : `auto-miglioramento: ${ordered.length} proposte (${mustCount} must) · allineamento ${alignment}/100, soglia ${threshold}`;
143
+ return {
144
+ alignment,
145
+ atVision,
146
+ proposals: ordered,
147
+ summary,
148
+ fallback: opts.fallback === true,
149
+ };
150
+ }
151
+ // Deriva un allineamento prudente quando il modello non lo dichiara: parte da
152
+ // 100 e sottrae in base alla gravita' delle proposte (must pesano piu' di
153
+ // should/could). Mai sotto 0.
154
+ function deriveAlignment(proposals) {
155
+ if (!proposals.length)
156
+ return 100;
157
+ let penalty = 0;
158
+ for (const p of proposals) {
159
+ const base = p.priority === "must" ? 18 : p.priority === "should" ? 8 : 3;
160
+ // Scala col peso d'impatto dichiarato (impact alto = piu' lontano dalla Vision).
161
+ penalty += base * (0.5 + (clamp100(p.impact) / 100) * 0.5);
162
+ }
163
+ return clamp100(100 - penalty);
164
+ }
165
+ // ---------------------------------------------------------------------------
166
+ // Vision -> testo: ricompone una descrizione testuale della Vision dai campi
167
+ // duck-typed, usata come contesto per il modello. Se la Vision porta gia' un
168
+ // summary, lo preferisce (vision-schema: visionSummary).
169
+ // ---------------------------------------------------------------------------
170
+ export function visionToText(vision) {
171
+ if (!vision)
172
+ return "";
173
+ if (typeof vision === "string")
174
+ return oneLine(vision);
175
+ if (vision.summary && vision.summary.trim())
176
+ return vision.summary.trim();
177
+ const parts = [];
178
+ if (vision.title)
179
+ parts.push(`TITOLO: ${oneLine(vision.title)}`);
180
+ if (vision.finalGoal)
181
+ parts.push(`OBIETTIVO FINALE: ${oneLine(vision.finalGoal)}`);
182
+ const value = vision.value;
183
+ if (typeof value === "string" && value.trim()) {
184
+ parts.push(`VALORE: ${oneLine(value)}`);
185
+ }
186
+ else if (value && typeof value === "object") {
187
+ const stmt = value.statement ?? value.text;
188
+ if (stmt)
189
+ parts.push(`VALORE: ${oneLine(stmt)}`);
190
+ if (value.metrics?.length)
191
+ parts.push(`METRICHE: ${value.metrics.map((m) => oneLine(m)).join("; ")}`);
192
+ }
193
+ const feats = (vision.features ?? [])
194
+ .map((f) => {
195
+ const name = f.title ?? f.name ?? "";
196
+ if (!name)
197
+ return "";
198
+ const pr = f.priority ? `[${normPriority(f.priority)}] ` : "";
199
+ const done = f.done ? " (fatto)" : "";
200
+ const desc = f.description ? ` — ${oneLine(f.description)}` : "";
201
+ return `- ${pr}${oneLine(name)}${desc}${done}`;
202
+ })
203
+ .filter(Boolean);
204
+ if (feats.length)
205
+ parts.push(`FUNZIONALITA' ATTESE:\n${feats.join("\n")}`);
206
+ const crits = (vision.readinessCriteria ?? [])
207
+ .map((c) => {
208
+ const text = c.text ?? c.description ?? "";
209
+ if (!text)
210
+ return "";
211
+ return `- ${oneLine(text)}${c.met ? " (soddisfatto)" : ""}`;
212
+ })
213
+ .filter(Boolean);
214
+ if (crits.length)
215
+ parts.push(`CRITERI DI PRONTO:\n${crits.join("\n")}`);
216
+ return parts.join("\n");
217
+ }
218
+ // ---------------------------------------------------------------------------
219
+ // System prompt del motore (notazione Danilov): confronta STATO vs VISION e
220
+ // produce proposte di miglioramento. SOLO JSON in output.
221
+ // ---------------------------------------------------------------------------
222
+ const ENGINE_SYSTEM = `# Motore di auto-miglioramento — confronto STATO vs VISION
223
+ INDICE
224
+ 1 = vision
225
+ 2 = stato
226
+ 3 = gap
227
+ 4 = proposta
228
+
229
+ DEFINIZIONI
230
+ @vision[finale]: lo stato IDEALE desiderato dall'utente (obiettivo finale, valore, funzionalita' attese, criteri di pronto)
231
+ @stato[corrente]: cio' che e' stato effettivamente realizzato finora (operato, attivita, output)
232
+ @gap[misura]: distanza stato->vision; alignment 0..100 (100=vision gia' realizzata, 0=lontanissimo)
233
+ @proposta[regola]: ogni proposta AVVICINA lo stato alla Vision; concreta, azionabile, frase imperativa breve
234
+ @proposta[campi]: category(feature|quality|ux|robustness|performance|alignment), priority(must|should|could), impact 0..100, effort(small|medium|large), visionRef(feature/criterio di riferimento se noto), rationale
235
+ @priorita[criterio]: must=essenziale per la Vision, should=migliora molto, could=rifinitura
236
+ @bilancia[no_rumore]: proponi SOLO miglioramenti reali verso la Vision; niente perfezionismo, niente proposte generiche
237
+
238
+ RELAZIONI
239
+ @R1: @vision[finale] -> @gap[misura] [ misura quanto manca alla Vision ]
240
+ @R2: @gap[misura] -> @proposta[regola] [ ogni gap diventa una proposta azionabile ]
241
+ @R3: @proposta[regola] -> @priorita[criterio] [ ordina per impatto sulla Vision ]
242
+
243
+ OUTPUT: SOLO JSON {"alignment": 0-100, "proposals": [{"text","category","priority","impact","effort","visionRef","rationale"}]}. Niente prosa fuori dal JSON, niente markdown.`;
244
+ // Normalizza un singolo oggetto grezzo in ImprovementProposal, o null se vuoto.
245
+ export function normalizeProposal(raw) {
246
+ const text = oneLine(String(raw.text ?? ""));
247
+ if (!text)
248
+ return null;
249
+ const impactRaw = Number(raw.impact);
250
+ // Impatto: se assente/non valido, derivalo dalla priorita'.
251
+ const priority = normPriority(typeof raw.priority === "string" ? raw.priority : undefined);
252
+ const impact = Number.isFinite(impactRaw)
253
+ ? clamp100(impactRaw)
254
+ : priority === "must" ? 90 : priority === "should" ? 60 : 30;
255
+ const effort = normEffort(typeof raw.effort === "string" ? raw.effort : undefined);
256
+ const visionRef = raw.visionRef ? oneLine(String(raw.visionRef)) : "";
257
+ const rationale = raw.rationale ? oneLine(String(raw.rationale)).slice(0, 400) : "";
258
+ return {
259
+ text: text.slice(0, 300),
260
+ category: normCategory(typeof raw.category === "string" ? raw.category : undefined),
261
+ priority,
262
+ impact,
263
+ ...(effort ? { effort } : {}),
264
+ ...(visionRef ? { visionRef: visionRef.slice(0, 120) } : {}),
265
+ ...(rationale ? { rationale } : {}),
266
+ };
267
+ }
268
+ // Estrae solo l'elenco di proposte da un testo JSON (utile nei test).
269
+ export function parseProposals(text) {
270
+ const m = /\{[\s\S]*\}/.exec(text);
271
+ if (!m)
272
+ return [];
273
+ try {
274
+ const raw = JSON.parse(m[0]);
275
+ const list = Array.isArray(raw.proposals) ? raw.proposals : [];
276
+ return list
277
+ .map((p) => normalizeProposal((p ?? {})))
278
+ .filter((x) => x !== null);
279
+ }
280
+ catch {
281
+ return [];
282
+ }
283
+ }
284
+ // Estrae alignment + proposte e aggrega nel report finale.
285
+ export function parseReport(text, opts) {
286
+ const m = /\{[\s\S]*\}/.exec(text);
287
+ if (!m) {
288
+ // Parsing fallito: fallback prudente che NON blocca.
289
+ return aggregateProposals({ proposals: [], alignment: 100, fallback: true, ...opts });
290
+ }
291
+ try {
292
+ const raw = JSON.parse(m[0]);
293
+ const list = Array.isArray(raw.proposals) ? raw.proposals : [];
294
+ const proposals = list
295
+ .map((p) => normalizeProposal((p ?? {})))
296
+ .filter((x) => x !== null);
297
+ const alignment = Number.isFinite(Number(raw.alignment)) ? clamp100(Number(raw.alignment)) : undefined;
298
+ return aggregateProposals({ proposals, ...(alignment !== undefined ? { alignment } : {}), ...opts });
299
+ }
300
+ catch {
301
+ return aggregateProposals({ proposals: [], alignment: 100, fallback: true, ...opts });
302
+ }
303
+ }
304
+ export async function runSelfImprove(input) {
305
+ const { harness, evidence, signal } = input;
306
+ const threshold = clamp100(input.threshold ?? 85);
307
+ const maxProposals = input.maxProposals && input.maxProposals > 0 ? input.maxProposals : 8;
308
+ const opts = { threshold, maxProposals };
309
+ const visionText = visionToText(input.vision);
310
+ // Senza una Vision sostanziale non c'e' nulla con cui confrontare: allineato
311
+ // per definizione (il motore e' orientato alla Vision, non al goal immediato).
312
+ if (!visionText.trim()) {
313
+ return aggregateProposals({ proposals: [], alignment: 100, fallback: true, ...opts });
314
+ }
315
+ const resolved = harness.providers.resolve(harness.config.model);
316
+ if (!resolved) {
317
+ return aggregateProposals({ proposals: [], alignment: 100, fallback: true, ...opts });
318
+ }
319
+ const goalBlock = input.goal ? `GOAL IMMEDIATO DEL TASK:\n${input.goal}\n\n` : "";
320
+ const user = `VISION FINALE (stato ideale desiderato):\n${visionText}\n\n` +
321
+ goalBlock +
322
+ `STATO CORRENTE (operato + attivita + output realizzati finora):\n${evidence.slice(0, 8000)}\n\n` +
323
+ `Confronta lo STATO CORRENTE con la VISION. Stima l'allineamento (0..100) e ` +
324
+ `genera proposte di miglioramento CONCRETE e prioritizzate che avvicinano lo ` +
325
+ `stato alla Vision. Rispondi SOLO JSON {"alignment", "proposals":[...]}.`;
326
+ try {
327
+ const res = await resolved.provider.complete({
328
+ system: ENGINE_SYSTEM,
329
+ messages: [{ role: "user", content: [{ type: "text", text: user }] }],
330
+ tools: [],
331
+ model: resolved.modelId,
332
+ maxTokens: harness.config.maxTokens,
333
+ signal,
334
+ sessionId: `self-improve-${harness.session.id}`,
335
+ });
336
+ return parseReport(res.text, opts);
337
+ }
338
+ catch {
339
+ // Fail-open: in dubbio non bloccare.
340
+ return aggregateProposals({ proposals: [], alignment: 100, fallback: true, ...opts });
341
+ }
342
+ }
343
+ // ---------------------------------------------------------------------------
344
+ // Steer in notazione Danilov: se lo stato NON e' ancora alla Vision, fa
345
+ // continuare l'agente sulle proposte di miglioramento (must prima), riportando
346
+ // l'allineamento. Parita' con buildCompletenessSteer/buildCouncilSteer/
347
+ // buildReopenSteer.
348
+ // ---------------------------------------------------------------------------
349
+ export function buildSelfImproveSteer(goal, report) {
350
+ const g = goal.replace(/"/g, "'").slice(0, 200);
351
+ const rows = report.proposals
352
+ .map((p, i) => `(${i + 1}) [${p.priority}/${p.category}] ${p.text}${p.visionRef ? ` <${p.visionRef}>` : ""} (impatto ${p.impact})`)
353
+ .join(" ; ");
354
+ const mustCount = report.proposals.filter((p) => p.priority === "must").length;
355
+ return `[VASCEND_AUTO_MIGLIORAMENTO]
356
+ INDICE
357
+ 1 = goal
358
+ 2 = vision
359
+ 3 = proposta
360
+ 4 = azione
361
+
362
+ DEFINIZIONI
363
+ @goal[reale]: "${g}"
364
+ @vision[allineamento]: stato_corrente=${report.alignment}/100 verso la Vision finale (must residui=${mustCount})
365
+ @proposta[miglioramenti]: ${rows || "nessuna proposta esplicita: rifinisci verso la Vision"}
366
+ @azione[migliora]: NON ti fermi allo stato attuale; avvicina il lavoro alla VISION finale realizzando le proposte (must prima)
367
+
368
+ RELAZIONI
369
+ @R1: @vision[allineamento] -> @proposta[miglioramenti] [ il gap verso la Vision diventa proposte ]
370
+ @R2: @proposta[miglioramenti] -> @azione[migliora] [ realizza prima le proposte must, poi should ]
371
+ @R3: @azione[migliora] -> @goal[reale] [ finche' lo stato non e' allineato alla Vision ]
372
+
373
+ OUTPUT: realizza le proposte di miglioramento elencate (priorita' must prima) col lavoro reale e completa le attivita con vascend_mark. Punta ad allineare lo stato alla Vision: il motore rivaluta.`;
374
+ }
375
+ // Sintesi compatta del report (per log/TUI), in una riga.
376
+ export function selfImproveSummary(report) {
377
+ return report.summary;
378
+ }
379
+ // Vista human-readable del report (per la TUI): allineamento + proposte.
380
+ export function formatSelfImproveReport(report) {
381
+ const head = report.atVision
382
+ ? `Allineato alla Vision (${report.alignment}/100)`
383
+ : `Allineamento ${report.alignment}/100 — ${report.proposals.length} proposte`;
384
+ const rows = report.proposals
385
+ .map((p) => ` - [${p.priority}/${p.category}] ${p.text}${p.effort ? ` (sforzo ${p.effort})` : ""}${p.rationale ? ` — ${p.rationale}` : ""}`)
386
+ .join("\n");
387
+ return rows ? `${head}\n${rows}` : head;
388
+ }
389
+ export function fromVision(vision, summary) {
390
+ // Una Vision reale e' strutturalmente compatibile con VisionLike: la passiamo
391
+ // cosi' com'e', aggiungendo un summary se fornito dal chiamante.
392
+ if (summary && summary.trim()) {
393
+ return { ...vision, summary: summary.trim() };
394
+ }
395
+ return vision;
396
+ }
@@ -0,0 +1,52 @@
1
+ export interface SessionIndexEntry {
2
+ readonly id: string;
3
+ readonly file: string;
4
+ readonly mtimeMs: number;
5
+ readonly size: number;
6
+ readonly startedAt: number;
7
+ readonly endedAt: number;
8
+ readonly turns: number;
9
+ readonly objective: string;
10
+ readonly name: string;
11
+ readonly terms: Readonly<Record<string, number>>;
12
+ }
13
+ export interface SessionIndex {
14
+ readonly version: number;
15
+ readonly entries: readonly SessionIndexEntry[];
16
+ }
17
+ export interface SessionHit {
18
+ readonly id: string;
19
+ readonly objective: string;
20
+ readonly name: string;
21
+ readonly endedAt: number;
22
+ readonly turns: number;
23
+ readonly score: number;
24
+ readonly snippets: readonly string[];
25
+ }
26
+ export declare function normalizeTerms(text: string): readonly string[];
27
+ export declare function pickObjective(userTexts: readonly string[]): string;
28
+ /**
29
+ * Aggiorna l'indice: rilegge soltanto le sessioni nuove o cambiate (mtime+size).
30
+ * `skipId` esclude la sessione corrente, che e' gia' nel contesto.
31
+ */
32
+ export declare function refreshSessionIndex(sessionDir: string, opts?: {
33
+ readonly skipId?: string;
34
+ }): SessionIndex;
35
+ /**
36
+ * Cartelle in cui cercare. Un host puo' dare a ogni run il suo workspace
37
+ * effimero (Horizon: `.../run-<id>/.talos/sessions`): in quel caso la cartella
38
+ * corrente contiene UNA sola conversazione e cercare solo la' non troverebbe
39
+ * mai niente. Si includono allora le cartelle sorelle degli altri run.
40
+ */
41
+ export declare function sessionDirsFor(sessionDir: string, limit?: number): readonly string[];
42
+ /**
43
+ * Cerca nelle sessioni passate. Il punteggio pesa quanti termini della query
44
+ * compaiono e con che frequenza; a pari merito vince la sessione piu' recente.
45
+ */
46
+ export declare function searchSessions(sessionDir: string, query: string, opts?: {
47
+ readonly limit?: number;
48
+ readonly skipId?: string;
49
+ readonly withSnippets?: boolean;
50
+ }): readonly SessionHit[];
51
+ export declare function describeWhen(ts: number, now?: number): string;
52
+ export declare function formatSessionHits(hits: readonly SessionHit[], now?: number): string;