@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,262 @@
1
+ // Dev Context Layout (metodo Danilov, Memory OS) -- layout specializzato per
2
+ // il lavoro di SVILUPPO del Context Window Compiler.
3
+ //
4
+ // Il layout canonico (attention-layout) e' generico. Quando l'agente opera su
5
+ // codice, l'attenzione va orchestrata diversamente: contano la missione
6
+ // TECNICA, i vincoli NON negoziabili, le decisioni ARCHITETTURALI attive, il
7
+ // CODE GRAPH caldo (simboli/file rilevanti), gli ERRORI e i TEST recenti, le
8
+ // prove citabili (evidence), il PATCH PLAN in corso, il turno utente e infine
9
+ // un tail anchor che ricorda la PROSSIMA AZIONE e i TEST OBBLIGATORI da far
10
+ // passare prima di considerare il lavoro finito.
11
+ //
12
+ // Ordine delle zone dev (testa -> coda), anti "lost-in-the-middle":
13
+ //
14
+ // 1. System invariants (testa, non comprimibile)
15
+ // 2. Dev Mission Anchor (missione tecnica + definizione di "done")
16
+ // 3. Vincoli non negoziabili (build/test/stile che non si possono violare)
17
+ // 4. Decisioni architetturali (scelte attive che vincolano il codice)
18
+ // 5. Code Graph caldo (simboli/file/moduli rilevanti al turno)
19
+ // 6. Errori e test recenti (failure, stacktrace, test rossi)
20
+ // 7. Evidence Slots (prove citabili, corpo)
21
+ // 8. Patch Plan (passi di modifica pianificati/in corso)
22
+ // 9. Recall Handles (handle richiamabili a richiesta)
23
+ // 10. Tool State (output recenti, file aperti)
24
+ // 11. User Turn (richiesta corrente)
25
+ // 12. Dev Tail Anchor (coda: prossima azione + test obbligatori)
26
+ //
27
+ // Modulo PURO: assembla stringhe gia' pronte / categorizza candidati gia'
28
+ // raccolti. Nessuna lettura degli store qui (vedi dev-context-compiler-side).
29
+ // Ordine canonico delle zone dev. Mission/constraints/decisions in testa
30
+ // (vincolano tutto), user/tail in coda (ripresi prima della generazione).
31
+ export const DEV_ZONE_ORDER = [
32
+ "system",
33
+ "mission",
34
+ "constraints",
35
+ "decisions",
36
+ "codegraph",
37
+ "failures",
38
+ "evidence",
39
+ "patchplan",
40
+ "recall",
41
+ "tool",
42
+ "user",
43
+ "tail",
44
+ ];
45
+ // Intestazioni Danilov per zona (commenti del pack dev).
46
+ const DEV_ZONE_HEADER = {
47
+ system: "[DEV:SYSTEM_INVARIANTS]",
48
+ mission: "[DEV:MISSION_TECNICA]",
49
+ constraints: "[DEV:VINCOLI_NON_NEGOZIABILI]",
50
+ decisions: "[DEV:DECISIONI_ARCHITETTURALI]",
51
+ codegraph: "[DEV:CODE_GRAPH_CALDO]",
52
+ failures: "[DEV:ERRORI_E_TEST]",
53
+ evidence: "[DEV:EVIDENCE_SLOTS]",
54
+ patchplan: "[DEV:PATCH_PLAN]",
55
+ recall: "[DEV:RECALL_HANDLES]",
56
+ tool: "[DEV:TOOL_STATE]",
57
+ user: "[DEV:USER_TURN]",
58
+ tail: "[DEV:TAIL_ANCHOR]",
59
+ };
60
+ export function buildDevMissionAnchor(input) {
61
+ const lines = ["INDICE", "1 = missione", "2 = stack", "3 = ambito", "4 = done", "", "DEFINIZIONI"];
62
+ lines.push(`@missione[tecnica]: "${esc(input.goal)}"`);
63
+ if (input.stack?.length) {
64
+ lines.push(`@stack[attivo]: ${input.stack.map((s) => esc(s)).join(", ")}`);
65
+ }
66
+ if (input.scope?.length) {
67
+ lines.push(`@ambito[moduli]: ${input.scope.map((s) => esc(s)).join(", ")}`);
68
+ }
69
+ if (input.done)
70
+ lines.push(`@done[definizione]: "${esc(input.done)}"`);
71
+ lines.push("", "OUTPUT: la missione tecnica e' la bussola; non uscire dall'ambito senza motivo.");
72
+ return lines.join("\n");
73
+ }
74
+ export function buildDevTailAnchor(input) {
75
+ const lines = [
76
+ "INDICE",
77
+ "1 = missione",
78
+ "2 = vincoli",
79
+ "3 = decisioni",
80
+ "4 = azione",
81
+ "5 = test_obbligatori",
82
+ "",
83
+ "DEFINIZIONI",
84
+ ];
85
+ lines.push(`@missione[ora]: "${esc(input.goal)}"`);
86
+ if (input.constraints?.length) {
87
+ lines.push(`@vincoli[ricorda]: ${input.constraints.map((c) => `"${esc(c)}"`).join(", ")}`);
88
+ }
89
+ if (input.activeDecisions?.length) {
90
+ lines.push(`@decisioni[attive]: ${input.activeDecisions.map((d) => `"${esc(d)}"`).join(", ")}`);
91
+ }
92
+ if (input.nextAction)
93
+ lines.push(`@azione[adesso]: "${esc(input.nextAction)}"`);
94
+ if (input.requiredTests?.length) {
95
+ lines.push(`@test[obbligatori]: ${input.requiredTests.map((t) => `"${esc(t)}"`).join(", ")}`);
96
+ }
97
+ if (input.recallPolicy) {
98
+ lines.push("@recall[regola]: se dipende dal passato e manca tra le prove, usa recall, NON indovinare");
99
+ }
100
+ lines.push("", "OUTPUT: esegui @azione restando dentro @vincoli e @decisioni; NON dichiarare finito finche' @test[obbligatori] non passano.");
101
+ return lines.join("\n");
102
+ }
103
+ // Termini-spia per ciascuna categoria (matching lessicale, case-insensitive).
104
+ const FAILURE_TERMS = ["test", "tests", "fail", "failure", "failed", "error", "errore", "stacktrace", "assert", "regression"];
105
+ const PATCH_TERMS = ["patch", "diff", "hunk", "changeset", "edit", "refactor", "migration"];
106
+ const CODEGRAPH_TERMS = ["symbol", "simbolo", "function", "funzione", "class", "classe", "module", "modulo", "import", "export", "graph", "grafo", "dependency", "dipendenza", "ref", "call"];
107
+ // Domini-spia per categoria (un peer puo' emettere su un dominio dedicato).
108
+ const FAILURE_DOMAINS = new Set(["tests", "test", "failures", "ci"]);
109
+ const PATCH_DOMAINS = new Set(["patch", "patches", "patchplan"]);
110
+ const CODEGRAPH_DOMAINS = new Set(["code", "codegraph", "graph", "symbols"]);
111
+ // Categorizza un singolo candidato. Priorita': decisioni architetturali >
112
+ // errori/test > patch plan > code graph > evidence generica. La priorita'
113
+ // previene che un candidato finisca in due zone (es. una decision con term
114
+ // "refactor" resta in decisions).
115
+ export function categorizeCandidate(c) {
116
+ if (c.kind === "decision" || c.domain === "decisions")
117
+ return "decisions";
118
+ const terms = new Set(c.terms.map((t) => t.toLowerCase()));
119
+ const hay = `${c.subject} ${c.summary}`.toLowerCase();
120
+ const has = (list) => list.some((t) => terms.has(t) || hay.includes(t));
121
+ if (FAILURE_DOMAINS.has(c.domain) || has(FAILURE_TERMS))
122
+ return "failures";
123
+ if (PATCH_DOMAINS.has(c.domain) || (c.domain === "plan" && has(PATCH_TERMS)) || has(PATCH_TERMS))
124
+ return "patchplan";
125
+ if (CODEGRAPH_DOMAINS.has(c.domain) || c.kind === "file" || has(CODEGRAPH_TERMS))
126
+ return "codegraph";
127
+ return "evidence";
128
+ }
129
+ // Raggruppa una lista di candidati per categoria dev, preservando l'ordine
130
+ // d'arrivo (gia' ordinati per score a monte). Deterministico.
131
+ export function categorizeCandidates(cands) {
132
+ const buckets = {
133
+ decisions: [],
134
+ codegraph: [],
135
+ failures: [],
136
+ patchplan: [],
137
+ evidence: [],
138
+ };
139
+ for (const c of cands)
140
+ buckets[categorizeCandidate(c)].push(c);
141
+ return buckets;
142
+ }
143
+ // --- render dei blocchi per zona dev ----------------------------------------
144
+ // Decisioni architetturali: linee compatte ad alta priorita' (vincolano).
145
+ export function renderDecisions(cands) {
146
+ if (!cands.length)
147
+ return "";
148
+ const lines = ["INDICE", "1 = decisioni_attive", "", "DEFINIZIONI"];
149
+ for (const c of cands)
150
+ lines.push(`@decisione[${c.id}]: "${oneLine(c.summary || c.subject, 140)}"`);
151
+ lines.push("", "OUTPUT: le decisioni architetturali attive vincolano ogni modifica.");
152
+ return lines.join("\n");
153
+ }
154
+ // Code graph caldo: simboli/file/moduli rilevanti come handle (id + soggetto).
155
+ export function renderCodeGraph(cands) {
156
+ if (!cands.length)
157
+ return "";
158
+ const lines = ["INDICE", "1 = simboli_e_file_caldi", "", "DEFINIZIONI"];
159
+ for (const c of cands) {
160
+ const detail = oneLine(c.summary || c.subject, 110);
161
+ lines.push(`@nodo[${c.id}]: ${kindLabel(c.kind)}, "${detail}"`);
162
+ }
163
+ lines.push("", "OUTPUT: questi sono i nodi del code graph piu' rilevanti al turno; espandi con recall <id>.");
164
+ return lines.join("\n");
165
+ }
166
+ // Errori e test recenti: failure citabili col corpo (stacktrace/assert).
167
+ export function renderFailures(cands) {
168
+ if (!cands.length)
169
+ return "";
170
+ const blocks = ["INDICE", "1 = errori_test_recenti", "", "DEFINIZIONI"];
171
+ for (const c of cands) {
172
+ const body = c.body ? `, dettaglio="${oneLine(c.body, 280)}"` : "";
173
+ blocks.push(`@failure[${c.id}]: "${oneLine(c.summary || c.subject, 140)}"${body}`);
174
+ }
175
+ blocks.push("", "OUTPUT: risolvi gli errori/test rossi prima di aggiungere nuovo codice.");
176
+ return blocks.join("\n");
177
+ }
178
+ // Patch plan: passi di modifica pianificati/in corso, in ordine.
179
+ export function renderPatchPlan(cands) {
180
+ if (!cands.length)
181
+ return "";
182
+ const lines = ["INDICE", "1 = passi_patch", "", "DEFINIZIONI"];
183
+ let i = 1;
184
+ for (const c of cands) {
185
+ lines.push(`@passo[${i}]: id=${c.id}, "${oneLine(c.summary || c.subject, 140)}"`);
186
+ i += 1;
187
+ }
188
+ lines.push("", "OUTPUT: applica i passi del patch plan in ordine; ogni passo deve lasciare il codice verde.");
189
+ return lines.join("\n");
190
+ }
191
+ // Evidence generica: prove citabili col corpo (formato compatibile evidence).
192
+ export function renderEvidence(cands) {
193
+ if (!cands.length)
194
+ return "";
195
+ const blocks = [];
196
+ for (const c of cands) {
197
+ blocks.push([
198
+ `[EVIDENCE:${c.id}]`,
199
+ `domain=${c.domain}`,
200
+ `kind=${c.kind}`,
201
+ `subject=${oneLine(c.subject, 100)}`,
202
+ `summary="${oneLine(c.summary, 160)}"`,
203
+ `confidence=${c.trust}`,
204
+ `supersededBy=${c.supersededBy ?? "null"}`,
205
+ c.body ? `body="${oneLine(c.body, 360)}"` : "",
206
+ ]
207
+ .filter(Boolean)
208
+ .join("\n"));
209
+ }
210
+ return blocks.join("\n\n");
211
+ }
212
+ // Recall handles: handle leggeri (id + summary), richiamabili a richiesta.
213
+ export function renderHandles(cands) {
214
+ if (!cands.length)
215
+ return "";
216
+ const lines = ["INDICE", "1 = handles_richiamabili", "", "DEFINIZIONI"];
217
+ for (const c of cands)
218
+ lines.push(`@handle[${c.id}]: kind=${c.kind}, "${oneLine(c.summary || c.subject, 90)}"`);
219
+ lines.push("", "OUTPUT: usa recall <id> per espandere un handle quando serve il dettaglio.");
220
+ return lines.join("\n");
221
+ }
222
+ // --- assemblaggio del layout dev --------------------------------------------
223
+ // Assembla il Dev Prompt Pack dalle zone non vuote, nell'ordine dev canonico,
224
+ // con intestazioni. Deterministico. Le zone vuote vengono saltate.
225
+ export function assembleDevLayout(content) {
226
+ const blocks = [];
227
+ for (const zone of DEV_ZONE_ORDER) {
228
+ const text = (content[zone] ?? "").trim();
229
+ if (!text)
230
+ continue;
231
+ blocks.push(`${DEV_ZONE_HEADER[zone]}\n${text}`);
232
+ }
233
+ return blocks.join("\n\n");
234
+ }
235
+ // --- helper -----------------------------------------------------------------
236
+ function kindLabel(kind) {
237
+ switch (kind) {
238
+ case "file":
239
+ return "file";
240
+ case "decision":
241
+ return "decisione";
242
+ case "task":
243
+ return "task";
244
+ case "room":
245
+ return "attivita";
246
+ case "note":
247
+ return "nota";
248
+ case "asset":
249
+ return "asset";
250
+ case "kingdom":
251
+ return "lista";
252
+ default:
253
+ return "nodo";
254
+ }
255
+ }
256
+ function oneLine(value, max) {
257
+ const s = value.replace(/\s+/g, " ").trim().replace(/"/g, "'");
258
+ return s.length > max ? s.slice(0, max - 1).trimEnd() + "…" : s;
259
+ }
260
+ function esc(value) {
261
+ return value.replace(/\s+/g, " ").trim().replace(/"/g, "'");
262
+ }
@@ -0,0 +1,14 @@
1
+ import type { ContextCandidate } from "./context-candidate.js";
2
+ export interface EvidenceSlot {
3
+ readonly id: string;
4
+ readonly domain: string;
5
+ readonly type: string;
6
+ readonly subject: string;
7
+ readonly summary: string;
8
+ readonly confidence: string;
9
+ readonly supersededBy: string | null;
10
+ readonly body: string;
11
+ }
12
+ export declare function toEvidenceSlot(c: ContextCandidate): EvidenceSlot;
13
+ export declare function renderEvidenceSlot(slot: EvidenceSlot): string;
14
+ export declare function renderEvidenceSlots(candidates: readonly ContextCandidate[]): string;
@@ -0,0 +1,55 @@
1
+ // Evidence Slots (metodo Danilov, Memory OS).
2
+ //
3
+ // Non tutto cio' che viene recuperato deve diventare "contesto" generico:
4
+ // alcune cose vanno marcate come PROVE. Cosi' il modello non "ricorda", ma
5
+ // LEGGE prove citabili e tracciabili (id, dominio, confidenza, supersededBy).
6
+ //
7
+ // Formato del documento talos-context:
8
+ // [EVIDENCE:E142]
9
+ // domain=decisions
10
+ // type=decision.made
11
+ // subject=crm/ui
12
+ // summary="..."
13
+ // confidence=high
14
+ // supersededBy=null
15
+ // source=assistant+user
16
+ //
17
+ // Modulo PURO: rende ContextCandidate in slot evidenza, deterministico.
18
+ // Costruisce uno slot evidenza da un candidato. Deterministico.
19
+ export function toEvidenceSlot(c) {
20
+ return {
21
+ id: c.id,
22
+ domain: String(c.domain),
23
+ type: c.kind,
24
+ subject: oneLine(c.subject, 100),
25
+ summary: oneLine(c.summary, 180),
26
+ confidence: c.trust,
27
+ supersededBy: c.supersededBy,
28
+ body: oneLine(c.body, 500),
29
+ };
30
+ }
31
+ // Rende un singolo slot nel formato testuale [EVIDENCE:id].
32
+ export function renderEvidenceSlot(slot) {
33
+ return [
34
+ `[EVIDENCE:${slot.id}]`,
35
+ `domain=${slot.domain}`,
36
+ `type=${slot.type}`,
37
+ `subject=${slot.subject}`,
38
+ `summary="${slot.summary}"`,
39
+ `confidence=${slot.confidence}`,
40
+ `supersededBy=${slot.supersededBy ?? "null"}`,
41
+ slot.body ? `body="${slot.body}"` : "",
42
+ ]
43
+ .filter(Boolean)
44
+ .join("\n");
45
+ }
46
+ // Rende un insieme di candidati come blocco Evidence Slots completo.
47
+ export function renderEvidenceSlots(candidates) {
48
+ if (!candidates.length)
49
+ return "";
50
+ return candidates.map((c) => renderEvidenceSlot(toEvidenceSlot(c))).join("\n\n");
51
+ }
52
+ function oneLine(value, max) {
53
+ const s = (value ?? "").replace(/\s+/g, " ").trim().replace(/"/g, "'");
54
+ return s.length > max ? s.slice(0, max - 1).trimEnd() + "…" : s;
55
+ }
@@ -0,0 +1,15 @@
1
+ import { type ContextCapsule, type ExpansionLevel } from "./context-capsule.js";
2
+ export declare function tokensAtLevel(capsule: ContextCapsule, level: ExpansionLevel): number;
3
+ export declare function utilityAtLevel(capsule: ContextCapsule, level: ExpansionLevel): number;
4
+ export interface BestExpansionOptions {
5
+ readonly tokenBudget?: number;
6
+ readonly costWeight?: number;
7
+ readonly staleWeight?: number;
8
+ readonly maxLevel?: ExpansionLevel;
9
+ }
10
+ export declare function staleRiskAtLevel(capsule: ContextCapsule, level: ExpansionLevel): number;
11
+ export declare function bestExpansion(capsule: ContextCapsule, opts?: BestExpansionOptions): ExpansionLevel;
12
+ export declare function expansionScore(capsule: ContextCapsule, level: ExpansionLevel, opts?: BestExpansionOptions): number;
13
+ export declare function renderCapsule(capsule: ContextCapsule, level: ExpansionLevel): string;
14
+ export declare function renderCapsules(capsules: readonly ContextCapsule[]): string;
15
+ export declare function explainExpansion(capsule: ContextCapsule, opts?: BestExpansionOptions): string;
@@ -0,0 +1,178 @@
1
+ // Expansion Levels R0-R4 (metodo Danilov, Memory OS) -- L2: Packet Algebra.
2
+ //
3
+ // Il salto sopra il tier HIGH/MID/LOW: non si sceglie piu' "corpo si'/handle/escluso",
4
+ // ma QUANTO espandere ogni capsula. Cinque livelli di rate-distortion semantica:
5
+ //
6
+ // R0 = handle (memoria fredda: id + come recuperarla)
7
+ // R1 = summary (utile ma non critica: 1 riga + metadata)
8
+ // R2 = summary + reason (decisioni: cosa + perche')
9
+ // R3 = evidence (risposta deve essere grounded: prova citabile)
10
+ // R4 = body completo (task rischioso o dettaglio necessario)
11
+ //
12
+ // La scelta del livello e' un'OTTIMIZZAZIONE: per ogni capsula
13
+ //
14
+ // bestExpansion(capsule) =
15
+ // argmax_level utility(level) - tokenCost(level) - staleRisk(level)
16
+ //
17
+ // Questo sostituisce il taglio grezzo clampToBudget con una compressione a
18
+ // livelli semantici (rate-distortion): comprimo finche' non perdo cio' che serve.
19
+ //
20
+ // Modulo PURO e DETERMINISTICO: nessun side-effect, nessuna rete, stima token
21
+ // ~4 char/token coerente col resto del Memory OS.
22
+ import { EXPANSION_LEVELS, EXPANSION_LABEL, isStale, } from "./context-capsule.js";
23
+ // Stima dei token che la capsula occupa AL LIVELLO indicato. Deterministica.
24
+ export function tokensAtLevel(capsule, level) {
25
+ const text = renderCapsule(capsule, level);
26
+ return Math.max(1, Math.ceil(text.length / 4));
27
+ }
28
+ // Frazione di utilita' "consegnata" a ciascun livello: piu' espando, piu'
29
+ // dell'utilita' della capsula arriva al modello, con rendimenti decrescenti.
30
+ // R0 da' poco (solo il puntatore), R3/R4 danno quasi tutto. Deterministico.
31
+ const UTILITY_FRACTION = {
32
+ 0: 0.2,
33
+ 1: 0.5,
34
+ 2: 0.7,
35
+ 3: 0.9,
36
+ 4: 1.0,
37
+ };
38
+ // Utilita' consegnata al livello: utilita' della capsula * frazione del livello.
39
+ // Per le capsule SENZA contenuto adatto a un livello (es. nessun reason per R2,
40
+ // nessuna proof per R3) il livello non aggiunge nulla oltre R1.
41
+ export function utilityAtLevel(capsule, level) {
42
+ let frac = UTILITY_FRACTION[level];
43
+ if (level >= 2 && !capsule.reason && !capsule.proof && !capsule.body)
44
+ frac = UTILITY_FRACTION[1];
45
+ if (level === 3 && !capsule.proof && !capsule.body)
46
+ frac = Math.min(frac, UTILITY_FRACTION[2]);
47
+ if (level === 4 && !capsule.body)
48
+ frac = Math.min(frac, UTILITY_FRACTION[3]);
49
+ return clamp01(capsule.metrics.utility * frac);
50
+ }
51
+ // Rischio stale al livello: una capsula obsoleta che entra come BODY (R4) e'
52
+ // pericolosa (puo' far credere al modello che sia attuale); come handle (R0)
53
+ // e' innocua. Cresce col livello solo se la capsula e' stale.
54
+ export function staleRiskAtLevel(capsule, level) {
55
+ if (!isStale(capsule))
56
+ return 0;
57
+ // 0 a R0, fino a ~1 a R4: piu' la esponi, piu' rischi.
58
+ return clamp01(level / 4);
59
+ }
60
+ // Sceglie il livello di espansione ottimale per una capsula:
61
+ // argmax_level utility(level) - costWeight*tokenCost(level)/budget - staleWeight*staleRisk(level)
62
+ // Deterministico: a parita' di capsula+opzioni, stesso livello (tie-break: il
63
+ // livello PIU' BASSO a parita' di score, per parsimonia di token).
64
+ export function bestExpansion(capsule, opts = {}) {
65
+ const budget = opts.tokenBudget && opts.tokenBudget > 0 ? opts.tokenBudget : 2_000;
66
+ const costWeight = opts.costWeight ?? 1;
67
+ const staleWeight = opts.staleWeight ?? 1;
68
+ const maxLevel = opts.maxLevel ?? 4;
69
+ let bestLevel = 0;
70
+ let bestScore = -Infinity;
71
+ for (const level of EXPANSION_LEVELS) {
72
+ if (level > maxLevel)
73
+ break;
74
+ const u = utilityAtLevel(capsule, level);
75
+ const cost = (costWeight * tokensAtLevel(capsule, level)) / budget;
76
+ const stale = staleWeight * staleRiskAtLevel(capsule, level);
77
+ const score = u - cost - stale;
78
+ // Tie-break parsimonioso: aggiorna solo se STRETTAMENTE migliore, cosi' a
79
+ // parita' resta il livello piu' basso gia' trovato.
80
+ if (score > bestScore + 1e-9) {
81
+ bestScore = score;
82
+ bestLevel = level;
83
+ }
84
+ }
85
+ return bestLevel;
86
+ }
87
+ // Punteggio della scelta (per diagnostica): l'obiettivo al livello dato.
88
+ export function expansionScore(capsule, level, opts = {}) {
89
+ const budget = opts.tokenBudget && opts.tokenBudget > 0 ? opts.tokenBudget : 2_000;
90
+ const costWeight = opts.costWeight ?? 1;
91
+ const staleWeight = opts.staleWeight ?? 1;
92
+ return (utilityAtLevel(capsule, level) -
93
+ (costWeight * tokensAtLevel(capsule, level)) / budget -
94
+ staleWeight * staleRiskAtLevel(capsule, level));
95
+ }
96
+ // --- rendering per livello --------------------------------------------------
97
+ // Rende una capsula nel testo del livello richiesto. Deterministico.
98
+ // R0 -> riga handle con istruzione di recall
99
+ // R1 -> blocco summary + metadata
100
+ // R2 -> R1 + reason (perche')
101
+ // R3 -> evidence slot citabile (proof)
102
+ // R4 -> evidence slot + body completo
103
+ export function renderCapsule(capsule, level) {
104
+ const h = capsule.header;
105
+ switch (level) {
106
+ case 0:
107
+ return `@handle[${h.id}]: ${h.type}/${h.domain} -> recall:${capsule.recall.id ?? h.id}${capsule.recall.query ? ` (${capsule.recall.query})` : ""}`;
108
+ case 1:
109
+ return [
110
+ `[CAPSULE:${h.id}] R1`,
111
+ `domain=${h.domain} type=${h.type} status=${h.status} confidence=${h.confidence}`,
112
+ `summary="${capsule.summary}"`,
113
+ ].join("\n");
114
+ case 2:
115
+ return [
116
+ `[CAPSULE:${h.id}] R2`,
117
+ `domain=${h.domain} type=${h.type} status=${h.status} confidence=${h.confidence}`,
118
+ `summary="${capsule.summary}"`,
119
+ capsule.reason ? `reason="${capsule.reason}"` : "",
120
+ ]
121
+ .filter(Boolean)
122
+ .join("\n");
123
+ case 3:
124
+ return [
125
+ `[EVIDENCE:${h.id}]`,
126
+ `domain=${h.domain}`,
127
+ `type=${h.type}`,
128
+ `summary="${capsule.summary}"`,
129
+ `confidence=${h.confidence}`,
130
+ `supersededBy=${capsule.lineage.supersededBy ?? "null"}`,
131
+ capsule.proof ? `proof="${capsule.proof}"` : capsule.reason ? `reason="${capsule.reason}"` : "",
132
+ ]
133
+ .filter(Boolean)
134
+ .join("\n");
135
+ case 4:
136
+ default:
137
+ return [
138
+ `[EVIDENCE:${h.id}]`,
139
+ `domain=${h.domain}`,
140
+ `type=${h.type}`,
141
+ `summary="${capsule.summary}"`,
142
+ `confidence=${h.confidence}`,
143
+ `supersededBy=${capsule.lineage.supersededBy ?? "null"}`,
144
+ capsule.body ? `body="${oneLine(capsule.body, 600)}"` : capsule.proof ? `proof="${capsule.proof}"` : "",
145
+ ]
146
+ .filter(Boolean)
147
+ .join("\n");
148
+ }
149
+ }
150
+ // Rende un insieme di capsule, ognuna al SUO expansionLevel corrente. Le capsule
151
+ // allo stesso livello sono separate da riga vuota; deterministico nell'ordine.
152
+ export function renderCapsules(capsules) {
153
+ return capsules
154
+ .map((c) => renderCapsule(c, c.expansionLevel))
155
+ .filter(Boolean)
156
+ .join("\n\n");
157
+ }
158
+ // Diagnostica: riga compatta livello scelto + motivazione (utility/cost/stale).
159
+ export function explainExpansion(capsule, opts = {}) {
160
+ const level = bestExpansion(capsule, opts);
161
+ return `@expansion[${capsule.header.id}]: R${level} (${EXPANSION_LABEL[level]}) util=${round(utilityAtLevel(capsule, level))} cost=${tokensAtLevel(capsule, level)}tok stale=${round(staleRiskAtLevel(capsule, level))}`;
162
+ }
163
+ function oneLine(value, max) {
164
+ const s = (value ?? "").replace(/\s+/g, " ").trim().replace(/"/g, "'");
165
+ return s.length > max ? s.slice(0, max - 1).trimEnd() + "\u2026" : s;
166
+ }
167
+ function clamp01(v) {
168
+ if (Number.isNaN(v))
169
+ return 0;
170
+ if (v < 0)
171
+ return 0;
172
+ if (v > 1)
173
+ return 1;
174
+ return v;
175
+ }
176
+ function round(v) {
177
+ return Math.round(v * 1000) / 1000;
178
+ }
@@ -0,0 +1,7 @@
1
+ export interface FileLockOptions {
2
+ readonly staleMs?: number;
3
+ readonly timeoutMs?: number;
4
+ readonly retryMs?: number;
5
+ }
6
+ export declare function acquireLockSync(target: string, opts?: FileLockOptions): () => void;
7
+ export declare function withLockSync<T>(target: string, fn: () => T, opts?: FileLockOptions): T;
@@ -0,0 +1,95 @@
1
+ import { mkdirSync, rmSync, statSync, writeFileSync } from "node:fs";
2
+ import { dirname } from "node:path";
3
+ const DEFAULT_STALE_MS = 10_000;
4
+ const DEFAULT_TIMEOUT_MS = 5_000;
5
+ const DEFAULT_RETRY_MS = 15;
6
+ function lockDirFor(target) {
7
+ return `${target}.lock`;
8
+ }
9
+ // Attesa sincrona breve (busy-wait) senza dipendenze: usa Atomics.wait su un
10
+ // buffer condiviso fittizio (sleep reale del thread), con fallback a spin.
11
+ function sleepSync(ms) {
12
+ if (ms <= 0)
13
+ return;
14
+ try {
15
+ const shared = new Int32Array(new SharedArrayBuffer(4));
16
+ Atomics.wait(shared, 0, 0, ms);
17
+ }
18
+ catch {
19
+ const end = Date.now() + ms;
20
+ while (Date.now() < end) {
21
+ /* spin */
22
+ }
23
+ }
24
+ }
25
+ function isStale(lockDir, staleMs) {
26
+ try {
27
+ const st = statSync(lockDir);
28
+ return Date.now() - st.mtimeMs > staleMs;
29
+ }
30
+ catch {
31
+ // Non esiste piu': non e' stale, e' libero.
32
+ return false;
33
+ }
34
+ }
35
+ // Acquisisce il lock per `target` (path del file da proteggere). Ritorna una
36
+ // funzione di rilascio. Lancia se non riesce entro il timeout.
37
+ export function acquireLockSync(target, opts = {}) {
38
+ const staleMs = opts.staleMs ?? DEFAULT_STALE_MS;
39
+ const timeoutMs = opts.timeoutMs ?? DEFAULT_TIMEOUT_MS;
40
+ const retryMs = opts.retryMs ?? DEFAULT_RETRY_MS;
41
+ const lockDir = lockDirFor(target);
42
+ mkdirSync(dirname(target), { recursive: true });
43
+ const deadline = Date.now() + timeoutMs;
44
+ for (;;) {
45
+ try {
46
+ // mkdir senza recursive fallisce se la dir esiste gia': e' il nostro CAS.
47
+ mkdirSync(lockDir);
48
+ // Marca chi/quando per la diagnostica dello stale.
49
+ try {
50
+ writeFileSync(`${lockDir}/owner`, `${process.pid}:${Date.now()}`, "utf8");
51
+ }
52
+ catch {
53
+ /* la marcatura e' best-effort */
54
+ }
55
+ let released = false;
56
+ return () => {
57
+ if (released)
58
+ return;
59
+ released = true;
60
+ try {
61
+ rmSync(lockDir, { recursive: true, force: true });
62
+ }
63
+ catch {
64
+ /* gia' rimosso */
65
+ }
66
+ };
67
+ }
68
+ catch {
69
+ // Lock occupato: se e' stale, forzalo; altrimenti aspetta.
70
+ if (isStale(lockDir, staleMs)) {
71
+ try {
72
+ rmSync(lockDir, { recursive: true, force: true });
73
+ }
74
+ catch {
75
+ /* qualcun altro l'ha appena tolto */
76
+ }
77
+ continue;
78
+ }
79
+ if (Date.now() >= deadline) {
80
+ throw new Error(`file-lock: timeout acquisendo ${lockDir} (${timeoutMs}ms)`);
81
+ }
82
+ sleepSync(retryMs);
83
+ }
84
+ }
85
+ }
86
+ // Esegue `fn` tenendo il lock su `target`, garantendone il rilascio.
87
+ export function withLockSync(target, fn, opts) {
88
+ const release = acquireLockSync(target, opts);
89
+ try {
90
+ return fn();
91
+ }
92
+ finally {
93
+ release();
94
+ }
95
+ }
@@ -0,0 +1,25 @@
1
+ import type { Harness } from "../core/bootstrap.js";
2
+ import type { AgentEvent, ToolContext } from "../core/types.js";
3
+ import { type FileCoordinationContext } from "../core/file-coordination.js";
4
+ import { type TaskUnit, type TaskRunner, type GranularLaunchReport } from "./granular-launcher.js";
5
+ export interface GranularKingdomOptions {
6
+ readonly harness: Harness;
7
+ readonly kingdomId: string;
8
+ readonly castleSlug: string;
9
+ readonly units: readonly TaskUnit[];
10
+ readonly signal: AbortSignal;
11
+ readonly confirm: (action: string, detail: string) => Promise<boolean>;
12
+ readonly ask?: ToolContext["ask"];
13
+ readonly fileCoordination?: FileCoordinationContext;
14
+ readonly concurrency?: number;
15
+ readonly onEvent?: (id: string, event: AgentEvent) => void;
16
+ readonly onNotice?: (text: string) => void;
17
+ readonly cwd?: string;
18
+ readonly isolated?: boolean;
19
+ readonly planStoreId?: string;
20
+ readonly markCastle?: string;
21
+ readonly depth?: number;
22
+ readonly maxDepth?: number;
23
+ }
24
+ export declare function makeAgentUnitRunner(opts: GranularKingdomOptions): TaskRunner;
25
+ export declare function launchGranularKingdom(opts: GranularKingdomOptions): Promise<GranularLaunchReport>;