@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,33 @@
1
+ import type { CastlePlan, PlanTaskStatus, VascendPlanStore } from "./plan-store.js";
2
+ export interface MandateRoom {
3
+ readonly ref: string;
4
+ readonly title: string;
5
+ readonly status: PlanTaskStatus;
6
+ readonly weight?: number;
7
+ readonly files?: readonly string[];
8
+ readonly skills?: readonly string[];
9
+ }
10
+ export interface CastleMandate {
11
+ readonly castle: string;
12
+ readonly title: string;
13
+ readonly rooms: readonly MandateRoom[];
14
+ readonly closed: readonly string[];
15
+ readonly after?: string;
16
+ readonly partial: boolean;
17
+ readonly skills?: readonly string[];
18
+ }
19
+ /** Mandato ricavato da un castello del piano. Null se non resta nulla da fare. */
20
+ export declare function mandateFromCastle(castle: CastlePlan, refs?: readonly string[]): CastleMandate | null;
21
+ /** Mandato per slug, letto dal piano della sessione. Null se il castello non c'e'. */
22
+ export declare function mandateFor(store: VascendPlanStore, slug: string, refs?: readonly string[]): CastleMandate | null;
23
+ /**
24
+ * Obiettivo derivato dal piano, per quando il collaboratore viene assegnato a un
25
+ * castello senza che nessuno riscriva a mano cosa deve fare.
26
+ */
27
+ export declare function mandateGoal(mandate: CastleMandate): string;
28
+ /**
29
+ * Blocco Danilov del mandato. Va PRIMA del marcatore OBIETTIVO_CASTELLO, cosi'
30
+ * chi legge il titolo della stanza continua a trovare il task vero dopo il
31
+ * marcatore e non questo preambolo.
32
+ */
33
+ export declare function formatMandate(mandate: CastleMandate, canDelegate: boolean): string;
@@ -0,0 +1,107 @@
1
+ const OPEN_STATES = ["pending", "running", "failed"];
2
+ function toRoom(task) {
3
+ return {
4
+ ref: task.id,
5
+ title: task.title,
6
+ status: task.status,
7
+ ...(task.weight ? { weight: task.weight } : {}),
8
+ ...(task.files?.length ? { files: [...task.files] } : {}),
9
+ ...(task.skills?.length ? { skills: [...task.skills] } : {}),
10
+ };
11
+ }
12
+ // Accetta il ref ("T01", case-insensitive) o il numero di bit ("0"), come i tool
13
+ // del piano: il modello non deve indovinare quale delle due forme usare.
14
+ function selects(refs, task) {
15
+ const wanted = refs.map((r) => r.trim().toLowerCase()).filter(Boolean);
16
+ return wanted.includes(task.id.toLowerCase()) || wanted.includes(String(task.bit));
17
+ }
18
+ /** Mandato ricavato da un castello del piano. Null se non resta nulla da fare. */
19
+ export function mandateFromCastle(castle, refs) {
20
+ const wanted = (refs ?? []).map((r) => String(r).trim()).filter(Boolean);
21
+ const chosen = wanted.length ? castle.tasks.filter((t) => selects(wanted, t)) : castle.tasks;
22
+ const rooms = chosen.filter((t) => OPEN_STATES.includes(t.status)).map(toRoom);
23
+ if (!rooms.length)
24
+ return null;
25
+ const closed = chosen.filter((t) => t.status === "completed").map((t) => t.id);
26
+ return {
27
+ castle: castle.slug,
28
+ title: castle.title,
29
+ rooms,
30
+ closed,
31
+ ...(castle.after ? { after: castle.after } : {}),
32
+ partial: wanted.length > 0 && chosen.length < castle.tasks.length,
33
+ ...(castle.skills?.length ? { skills: [...castle.skills] } : {}),
34
+ };
35
+ }
36
+ /** Mandato per slug, letto dal piano della sessione. Null se il castello non c'e'. */
37
+ export function mandateFor(store, slug, refs) {
38
+ const castle = store.castle(slug);
39
+ return castle ? mandateFromCastle(castle, refs) : null;
40
+ }
41
+ /**
42
+ * Obiettivo derivato dal piano, per quando il collaboratore viene assegnato a un
43
+ * castello senza che nessuno riscriva a mano cosa deve fare.
44
+ */
45
+ export function mandateGoal(mandate) {
46
+ const rooms = mandate.rooms.map((r) => `${r.ref} ${r.title}`).join("; ");
47
+ return `Porta a termine il gruppo "${mandate.title}" del piano: ${rooms}.`;
48
+ }
49
+ function roomLine(room) {
50
+ const parts = [` ${room.ref}`];
51
+ if (room.weight)
52
+ parts.push(`[w${room.weight}]`);
53
+ parts.push(room.title);
54
+ if (room.status === "running")
55
+ parts.push("· gia' aperta");
56
+ if (room.status === "failed")
57
+ parts.push("· fallita, da riprendere");
58
+ if (room.files?.length)
59
+ parts.push(`· file: ${room.files.join(", ")}`);
60
+ if (room.skills?.length)
61
+ parts.push(`· skill: ${room.skills.join(", ")}`);
62
+ return parts.join(" ");
63
+ }
64
+ /**
65
+ * Blocco Danilov del mandato. Va PRIMA del marcatore OBIETTIVO_CASTELLO, cosi'
66
+ * chi legge il titolo della stanza continua a trovare il task vero dopo il
67
+ * marcatore e non questo preambolo.
68
+ */
69
+ export function formatMandate(mandate, canDelegate) {
70
+ const total = mandate.rooms.length;
71
+ const closed = mandate.closed.length
72
+ ? `@attivita[chiuse]: ${mandate.closed.join(", ")} (NON rifarle)`
73
+ : `@attivita[chiuse]: nessuna`;
74
+ const scope = mandate.partial
75
+ ? `@confine[attivita]: hai SOLO i ref elencati; le altre attivita del gruppo sono di qualcun altro`
76
+ : `@confine[attivita]: tutto il gruppo e' tuo`;
77
+ // Delegare e' possibile solo al primo livello: un'unita' di secondo livello
78
+ // che potesse spawnare ancora aprirebbe una ricorsione senza fondo.
79
+ const growth = canDelegate
80
+ ? `@crescita[scomposizione]: se una attivita si rivela grande, o vascend_addtasks(group="${mandate.castle}") per spezzarla in sotto-attivita, o team_engage per affidare le attivita a un tuo team (una voce per ref: slug="T01", goal=cosa fare); NON lavorare fuori dal piano`
81
+ : `@crescita[scomposizione]: nessuna ulteriore delega da qui; se la attivita e' troppo grande chiudi cio' che e' verificabile e dillo nel report`;
82
+ const growthRel = canDelegate
83
+ ? `@R3: @attivita[mie] -> @crescita[scomposizione] [ scomponi o delega, non sforare ]`
84
+ : `@R3: @attivita[mie] -> @crescita[scomposizione] [ niente delega: riporta il limite ]`;
85
+ return `MANDATO
86
+ INDICE
87
+ 1 = gruppo
88
+ 2 = attivita
89
+ 3 = avanzamento
90
+ 4 = crescita
91
+
92
+ DEFINIZIONI
93
+ @gruppo[assegnato]: ${mandate.castle} "${mandate.title}"${mandate.after ? ` · dopo ${mandate.after}` : ""}
94
+ @attivita[mie]: ${total} da chiudere
95
+ ${mandate.rooms.map(roomLine).join("\n")}
96
+ ${closed}
97
+ ${scope}
98
+ @avanzamento[marcatura]: appena APRI una attivita vascend_mark(group="${mandate.castle}", task="<ref>", status="running"), appena la CHIUDI status="completed" con evidence concreta (file + test/comando + risultato), oppure "failed" col motivo in vascend_note. E' l'unico modo in cui l'utente ti vede avanzare
99
+ ${growth}${mandate.skills?.length ? `\n@skill[gruppo]: ${mandate.skills.join(", ")} (richiamale quando servono, non tutte subito)` : ""}
100
+
101
+ RELAZIONI
102
+ @R1: @gruppo[assegnato] -> @attivita[mie] [ il piano e' il mandato: non re-inventarlo ]
103
+ @R2: @attivita[mie] -> @avanzamento[marcatura] [ una marcatura per attivita, in tempo reale ]
104
+ ${growthRel}
105
+
106
+ OUTPUT: chiudi le tue attivita una per una marcandole; nel report finale elenca i ref chiusi, quelli falliti e i file toccati.`;
107
+ }
@@ -0,0 +1,13 @@
1
+ export interface MemoryPacketInput {
2
+ readonly sessionDir: string;
3
+ readonly scopeId: string;
4
+ readonly planScopeId?: string;
5
+ readonly maxChars?: number;
6
+ readonly recentLimit?: number;
7
+ readonly projectScopeLimit?: number;
8
+ readonly projectKey?: string;
9
+ /** Preselected dependencies supplied by a coherent snapshot. */
10
+ readonly projectScopes?: readonly string[];
11
+ }
12
+ export declare function buildMemoryPacket(input: MemoryPacketInput): string;
13
+ export declare function clampMemoryPacket(value: string, max: number): string;
@@ -0,0 +1,155 @@
1
+ import { sanitizeText } from "../core/text-sanitize.js";
2
+ import { listMemoryScopes, MemoryStore } from "./memory-store.js";
3
+ import { VascendPlanStore } from "./plan-store.js";
4
+ import { RoomMemory } from "./room-memory.js";
5
+ import { VascendVisionStore, visionCompleteness } from "./vision.js";
6
+ import { listContextMemoryScopes } from "./context-fabric.js";
7
+ export function buildMemoryPacket(input) {
8
+ const maxChars = input.maxChars && input.maxChars > 0 ? input.maxChars : 12_000;
9
+ const recentLimit = input.recentLimit && input.recentLimit > 0 ? input.recentLimit : 10;
10
+ const projectScopeLimit = input.projectScopeLimit && input.projectScopeLimit > 0 ? input.projectScopeLimit : 6;
11
+ const rooms = safe(() => RoomMemory.open(input.sessionDir, input.scopeId).frontier(), []);
12
+ const castles = safe(() => VascendPlanStore.open(input.sessionDir, input.planScopeId ?? input.scopeId).castles(), []);
13
+ const visions = safe(() => VascendVisionStore.open(input.sessionDir, input.scopeId).all(), []);
14
+ const events = safe(() => recentEvents(MemoryStore.open(input.sessionDir, input.scopeId).all(), recentLimit).map((event) => ({ scopeId: input.scopeId, value: event })), []);
15
+ const allowedScopes = !input.projectScopes && input.projectKey
16
+ ? new Set(listContextMemoryScopes(input.sessionDir, input.projectKey))
17
+ : null;
18
+ const projectScopes = input.projectScopes ?? listMemoryScopes(input.sessionDir, {
19
+ excludeScope: input.scopeId,
20
+ limit: allowedScopes ? 10_000 : projectScopeLimit,
21
+ }).filter((scope) => !allowedScopes || allowedScopes.has(scope)).slice(0, projectScopeLimit);
22
+ const projectRooms = loadProjectFrontiers(input.sessionDir, projectScopes, 8);
23
+ const projectCastles = loadProjectCastles(input.sessionDir, projectScopes, 8);
24
+ const projectVisions = loadProjectVisions(input.sessionDir, projectScopes, 5);
25
+ const projectEvents = loadProjectEvents(input.sessionDir, projectScopes, recentLimit);
26
+ const hasProject = Boolean(projectRooms.length || projectCastles.length || projectVisions.length || projectEvents.length);
27
+ if (!rooms.length && !castles.length && !visions.length && !events.length && !hasProject)
28
+ return "";
29
+ const lines = [
30
+ "[TALOS_MEMORY_PACKET]",
31
+ "INDICE",
32
+ "1 = frontiera",
33
+ "2 = piano",
34
+ "3 = vision",
35
+ "4 = eventi",
36
+ "5 = working_set_progetto",
37
+ "",
38
+ "DEFINIZIONI",
39
+ ...frontierRows(rooms),
40
+ ...planRows(castles),
41
+ ...visionRows(visions),
42
+ ...projectRows(projectRooms, projectCastles, projectVisions),
43
+ ...eventRows([...events, ...projectEvents]),
44
+ "",
45
+ "RELAZIONI",
46
+ "@R-memory: @frontiera -> recall [ dettaglio recuperabile via tool recall ]",
47
+ "@R-plan: @piano -> azione [ usa lo stato del piano per non duplicare lavoro ]",
48
+ "@R-vision: @vision -> decisioni [ ogni scelta deve restare allineata alla stella polare ]",
49
+ "@R-project: @working_set_progetto -> continuita [ recupera il contesto operativo dalle sessioni recenti ]",
50
+ "",
51
+ "OUTPUT: contesto memoria unificato; usa recall per dettaglio e aggiorna piano/note/vision quando cambia lo stato.",
52
+ ];
53
+ return clampMemoryPacket(lines.filter(Boolean).join("\n"), maxChars);
54
+ }
55
+ function frontierRows(rooms) {
56
+ if (!rooms.length)
57
+ return ["@frontiera[vuota]: nessuna attivita indicizzata"];
58
+ // La frontiera e' ordinata vecchio->recente. Conserva un indice per livello
59
+ // ma dedica la maggior parte degli slot allo stato piu' recente: slice(0,10)
60
+ // nascondeva proprio le ultime stanze nei run lunghi.
61
+ const byLevel = new Map();
62
+ for (const room of rooms)
63
+ if (!byLevel.has(room.level))
64
+ byLevel.set(room.level, room);
65
+ const picked = [...byLevel.values(), ...rooms.slice(-8)];
66
+ const unique = [...new Map(picked.map((room) => [room.room, room])).values()].slice(-10);
67
+ return unique.map((r) => `@frontiera[${r.room}]: level=${r.level}, title="${q(r.title)}", termini=${r.terms.slice(0, 6).join(",")}`);
68
+ }
69
+ function planRows(castles) {
70
+ if (!castles.length)
71
+ return ["@piano[vuoto]: nessun gruppo attivo"];
72
+ const ordered = [...castles].sort((a, b) => Number(b.tasks.some((task) => task.status !== "completed")) - Number(a.tasks.some((task) => task.status !== "completed")));
73
+ return ordered.flatMap((castle) => {
74
+ const tasks = [...castle.tasks]
75
+ .sort((a, b) => Number(a.status === "completed") - Number(b.status === "completed") || a.bit - b.bit)
76
+ .slice(0, 8)
77
+ .map((t) => `@task[${castle.slug}/${t.id}]: status=${t.status}, title="${q(t.title)}"`);
78
+ return [`@plan[${castle.slug}]: title="${q(castle.title)}", target=${castle.maskTarget}, attivita=${castle.tasks.length}`, ...tasks];
79
+ }).slice(0, 32);
80
+ }
81
+ function visionRows(visions) {
82
+ if (!visions.length)
83
+ return ["@vision[vuota]: nessuna Vision persistita"];
84
+ return visions.slice(0, 5).map((v) => {
85
+ const c = visionCompleteness(v);
86
+ return `@vision[${v.taskId}]: goal="${q(v.goal)}", ready=${c.productionReady}, core=${c.coreBuilt}/${c.coreTotal}, readiness=${c.readinessMet}/${c.readinessTotal}`;
87
+ });
88
+ }
89
+ function projectRows(rooms, castles, visions) {
90
+ if (!rooms.length && !castles.length && !visions.length)
91
+ return ["@working_set_progetto[vuoto]: nessun contesto recente da altre sessioni"];
92
+ return [
93
+ "[WORKING_SET_PROGETTO]",
94
+ ...rooms.map((r) => `@project_frontiera[${r.scopeId}/${r.value.room}]: level=${r.value.level}, title="${q(r.value.title)}"`),
95
+ ...castles.flatMap((c) => [
96
+ `@project_plan[${c.scopeId}/${c.value.slug}]: title="${q(c.value.title)}", target=${c.value.maskTarget}, attivita=${c.value.tasks.length}`,
97
+ ...c.value.tasks.slice(0, 4).map((t) => `@project_task[${c.scopeId}/${c.value.slug}/${t.id}]: status=${t.status}, title="${q(t.title)}"`),
98
+ ]),
99
+ ...visions.map((v) => `@project_vision[${v.scopeId}/${v.value.taskId}]: goal="${q(v.value.goal)}"`),
100
+ ].slice(0, 48);
101
+ }
102
+ function eventRows(events) {
103
+ if (!events.length)
104
+ return ["@eventi[vuoti]: nessun evento recente"];
105
+ return events.map(({ scopeId, value: e }) => `@evento[${scopeId}/${e.id}]: type=${e.type}, domain=${e.domain}, subject=${q(e.subject, 80)}, summary="${q(e.summary, 160)}"`);
106
+ }
107
+ function recentEvents(events, limit) {
108
+ return [...events]
109
+ .filter((e) => !isSuperseded(e))
110
+ .sort((a, b) => b.createdAt - a.createdAt || b.id.localeCompare(a.id))
111
+ .slice(0, limit);
112
+ }
113
+ // Vero se l'evento e' stato superato/archiviato (grafo di supersessione): non
114
+ // deve sporcare il contesto con memoria obsoleta.
115
+ function isSuperseded(event) {
116
+ const status = typeof event.payload?.["status"] === "string" ? event.payload["status"] : "active";
117
+ return status === "superseded" || status === "archived" || typeof event.payload?.["supersededBy"] === "string";
118
+ }
119
+ function loadProjectFrontiers(sessionDir, scopes, limit) {
120
+ return scopes.flatMap((scopeId) => safe(() => RoomMemory.open(sessionDir, scopeId).frontier().slice(-2).map((value) => ({ scopeId, value })), [])).slice(0, limit);
121
+ }
122
+ function loadProjectCastles(sessionDir, scopes, limit) {
123
+ return scopes.flatMap((scopeId) => safe(() => VascendPlanStore.open(sessionDir, scopeId).castles().slice(0, 2).map((value) => ({ scopeId, value })), [])).slice(0, limit);
124
+ }
125
+ function loadProjectVisions(sessionDir, scopes, limit) {
126
+ return scopes.flatMap((scopeId) => safe(() => VascendVisionStore.open(sessionDir, scopeId).all().slice(0, 2).map((value) => ({ scopeId, value })), [])).slice(0, limit);
127
+ }
128
+ function loadProjectEvents(sessionDir, scopes, limit) {
129
+ const events = scopes.flatMap((scopeId) => safe(() => MemoryStore.open(sessionDir, scopeId).all().map((value) => ({ scopeId, value })), []));
130
+ return events
131
+ .filter((e) => !isSuperseded(e.value))
132
+ .sort((a, b) => b.value.createdAt - a.value.createdAt || b.value.id.localeCompare(a.value.id))
133
+ .slice(0, limit);
134
+ }
135
+ function safe(fn, fallback) {
136
+ try {
137
+ return fn();
138
+ }
139
+ catch {
140
+ return fallback;
141
+ }
142
+ }
143
+ function q(value, max = 120) {
144
+ const oneLine = sanitizeText(value).replace(/\s+/g, " ").trim().replace(/"/g, "'");
145
+ return oneLine.length > max ? oneLine.slice(0, max - 1).trimEnd() + "..." : oneLine;
146
+ }
147
+ export function clampMemoryPacket(value, max) {
148
+ if (value.length <= max)
149
+ return value;
150
+ const marker = "\n...[memory-packet-troncato]";
151
+ const target = Math.max(0, max - marker.length);
152
+ const prefix = value.slice(0, target);
153
+ const boundary = prefix.lastIndexOf("\n");
154
+ return `${boundary > target * 0.7 ? prefix.slice(0, boundary) : prefix}${marker}`;
155
+ }
@@ -0,0 +1,22 @@
1
+ export interface MemoryFrontierNode {
2
+ readonly id: string;
3
+ readonly level: number;
4
+ readonly label: string;
5
+ readonly terms: readonly string[];
6
+ readonly rooms: number;
7
+ readonly recent: boolean;
8
+ }
9
+ export interface MemoryStatus {
10
+ readonly rooms: number;
11
+ readonly nodes: number;
12
+ readonly frontier: readonly MemoryFrontierNode[];
13
+ readonly indexTokens: number;
14
+ readonly graph: {
15
+ readonly files: number;
16
+ readonly edges: number;
17
+ };
18
+ }
19
+ export declare function memoryStatus(sessionDir: string, scopeId: string, opts?: {
20
+ readonly limit?: number;
21
+ readonly fanout?: number;
22
+ }): MemoryStatus | null;
@@ -0,0 +1,73 @@
1
+ // Stato leggibile della memoria, per gli host che vogliono MOSTRARLO.
2
+ //
3
+ // L'agente naviga la memoria col tool recall; una interfaccia umana ha bisogno
4
+ // di un'altra cosa: sapere a colpo d'occhio cosa c'e' in frontiera, quanto
5
+ // costa l'indice vivo, quanto e' fitto il grafo. Questo modulo produce quella
6
+ // vista, senza esporre gli store interni.
7
+ //
8
+ // Legge solo `<scope>.rooms.jsonl` (piccolo e gia' indicizzato): non tocca il
9
+ // file di sessione, che su conversazioni lunghe pesa megabyte. Lo stato della
10
+ // compattazione arriva invece all'host per evento, mentre accade.
11
+ import { RoomMemory } from "./room-memory.js";
12
+ import { filesOf } from "./room-graph.js";
13
+ const DEFAULT_LIMIT = 6;
14
+ // Stato della memoria di uno scope. Ritorna null se non c'e' nulla di
15
+ // archiviato: l'host non deve mostrare una sezione vuota.
16
+ export function memoryStatus(sessionDir, scopeId, opts = {}) {
17
+ let mem;
18
+ try {
19
+ mem = opts.fanout ? RoomMemory.open(sessionDir, scopeId, opts.fanout) : RoomMemory.open(sessionDir, scopeId);
20
+ }
21
+ catch {
22
+ return null;
23
+ }
24
+ if (!mem.count())
25
+ return null;
26
+ const all = mem.all();
27
+ const byId = new Map(all.map((r) => [r.room, r]));
28
+ const frontier = mem.frontier();
29
+ const limit = Math.max(1, opts.limit ?? DEFAULT_LIMIT);
30
+ // Si mostrano gli ULTIMI: la coda e' il lavoro recente, la testa e' storia
31
+ // gia' compattata in nodi di livello superiore.
32
+ const shown = frontier.slice(-limit);
33
+ const last = frontier[frontier.length - 1];
34
+ const files = new Set();
35
+ let edges = 0;
36
+ for (const record of all) {
37
+ if (record.level !== 0)
38
+ continue;
39
+ for (const file of filesOf(record)) {
40
+ files.add(file);
41
+ edges += 1;
42
+ }
43
+ }
44
+ return {
45
+ rooms: all.filter((r) => r.level === 0).length,
46
+ nodes: all.length,
47
+ frontier: shown.map((record) => ({
48
+ id: record.room,
49
+ level: record.level,
50
+ label: record.title,
51
+ terms: record.terms.slice(0, 6),
52
+ rooms: countRooms(record, byId),
53
+ recent: record.room === last?.room,
54
+ })),
55
+ indexTokens: Math.ceil(mem.indexBlock().length / 4),
56
+ graph: { files: files.size, edges },
57
+ };
58
+ }
59
+ // Stanze contenute da un nodo, scendendo la gerarchia. Un ciclo nei figli
60
+ // (store corrotto) non deve mandare in ricorsione infinita.
61
+ function countRooms(record, byId, seen = new Set()) {
62
+ if (record.level === 0)
63
+ return 1;
64
+ if (seen.has(record.room))
65
+ return 0;
66
+ seen.add(record.room);
67
+ let total = 0;
68
+ for (const childId of record.children) {
69
+ const child = byId.get(childId);
70
+ total += child ? countRooms(child, byId, seen) : 1;
71
+ }
72
+ return total;
73
+ }
@@ -0,0 +1,62 @@
1
+ export type MemoryDomain = "rooms" | "plan" | "vision" | "notes" | "skills" | "assets" | "decisions" | "kingdom" | "system" | "files" | "code" | string;
2
+ export interface MemoryLink {
3
+ readonly rel: string;
4
+ readonly target: string;
5
+ readonly domain?: MemoryDomain;
6
+ }
7
+ export interface MemoryEvent {
8
+ readonly id: string;
9
+ readonly type: string;
10
+ readonly domain: MemoryDomain;
11
+ readonly subject: string;
12
+ readonly summary: string;
13
+ readonly body: string;
14
+ readonly terms: readonly string[];
15
+ readonly links: readonly MemoryLink[];
16
+ readonly payload: Readonly<Record<string, unknown>>;
17
+ readonly createdAt: number;
18
+ }
19
+ export type MemoryEventInput = Partial<Pick<MemoryEvent, "id" | "body" | "terms" | "links" | "payload" | "createdAt">> & Pick<MemoryEvent, "type" | "domain" | "subject" | "summary">;
20
+ export interface MemoryQuery {
21
+ readonly domain?: MemoryDomain;
22
+ readonly type?: string;
23
+ readonly subject?: string;
24
+ readonly limit?: number;
25
+ }
26
+ export interface MemorySearchOptions {
27
+ readonly domain?: MemoryDomain;
28
+ readonly type?: string;
29
+ readonly limit?: number;
30
+ }
31
+ export interface MemorySearchHit {
32
+ readonly event: MemoryEvent;
33
+ readonly score: number;
34
+ }
35
+ export interface ListMemoryScopesOptions {
36
+ readonly excludeScope?: string;
37
+ readonly limit?: number;
38
+ }
39
+ export declare function listMemoryScopes(sessionDir: string, opts?: ListMemoryScopesOptions): readonly string[];
40
+ export declare class MemoryStore {
41
+ private readonly file;
42
+ private events;
43
+ private readonly ids;
44
+ private maxNumericId;
45
+ private loadedBytes;
46
+ private partialLine;
47
+ private docTokens;
48
+ private readonly globalDf;
49
+ private constructor();
50
+ static open(sessionDir: string, scopeId: string): MemoryStore;
51
+ count(): number;
52
+ all(): readonly MemoryEvent[];
53
+ append(input: MemoryEventInput): MemoryEvent;
54
+ query(q?: MemoryQuery): readonly MemoryEvent[];
55
+ byIds(ids: readonly string[]): readonly MemoryEvent[];
56
+ search(query: string, opts?: MemorySearchOptions): readonly MemorySearchHit[];
57
+ private nextId;
58
+ private reloadFromDisk;
59
+ private reloadTailFromDisk;
60
+ private resetIndexes;
61
+ private addEvent;
62
+ }