talos-code 0.0.1 → 0.2.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 (407) hide show
  1. package/CHANGELOG.md +87 -0
  2. package/LICENSE +661 -0
  3. package/README.md +116 -3
  4. package/THIRD_PARTY_NOTICES.md +40 -0
  5. package/dist/archive/zip.js +73 -0
  6. package/dist/args.js +100 -0
  7. package/dist/automations/history-store.js +34 -0
  8. package/dist/automations/policy-store.js +43 -0
  9. package/dist/automations/runner.js +107 -0
  10. package/dist/automations/schedule.js +85 -0
  11. package/dist/automations/windows-task.js +53 -0
  12. package/dist/commands/advanced-cli.js +233 -0
  13. package/dist/commands/checkpoint-cli.js +45 -0
  14. package/dist/commands/config-cli.js +107 -0
  15. package/dist/commands/context.js +17 -0
  16. package/dist/commands/extensions-cli.js +207 -0
  17. package/dist/commands/project-cli.js +74 -0
  18. package/dist/commands/project-commands.js +143 -0
  19. package/dist/commands/provider-cli.js +244 -0
  20. package/dist/commands/services-cli.js +248 -0
  21. package/dist/commands/session-cli.js +171 -0
  22. package/dist/commands/system-cli.js +405 -0
  23. package/dist/config/commands.js +60 -0
  24. package/dist/config/load.js +382 -0
  25. package/dist/config/migrations.js +48 -0
  26. package/dist/config/types.js +11 -0
  27. package/dist/diagnostics/development-log.js +154 -0
  28. package/dist/diagnostics/doctor.js +104 -0
  29. package/dist/diagnostics/redact.js +80 -0
  30. package/dist/diagnostics/zip.js +52 -0
  31. package/dist/errors.js +156 -0
  32. package/dist/events/bridge.js +130 -0
  33. package/dist/extensions/installer.js +178 -0
  34. package/dist/extensions/package-schema.js +24 -0
  35. package/dist/headless/result.js +84 -0
  36. package/dist/headless/run.js +230 -0
  37. package/dist/i18n/en/approval.js +46 -0
  38. package/dist/i18n/en/common.js +9 -0
  39. package/dist/i18n/en/credentials.js +92 -0
  40. package/dist/i18n/en/errors.js +267 -0
  41. package/dist/i18n/en/firstrun.js +101 -0
  42. package/dist/i18n/en/providers.js +37 -0
  43. package/dist/i18n/en/screen.js +774 -0
  44. package/dist/i18n/en/tools.js +127 -0
  45. package/dist/i18n/en.js +14 -0
  46. package/dist/i18n/error-view.js +307 -0
  47. package/dist/i18n/index.js +19 -0
  48. package/dist/i18n/kernel-map.js +139 -0
  49. package/dist/io.js +45 -0
  50. package/dist/main.js +331 -0
  51. package/dist/paths.js +41 -0
  52. package/dist/protocol/v2/codec.js +9 -0
  53. package/dist/protocol/v2/events.js +555 -0
  54. package/dist/protocol/v2/index.js +4 -0
  55. package/dist/protocol/v2/replay.js +28 -0
  56. package/dist/protocol/v2/types.js +1 -0
  57. package/dist/provider/control-plane.js +135 -0
  58. package/dist/provider/environment-keys.js +275 -0
  59. package/dist/provider/health.js +110 -0
  60. package/dist/provider/missing-key.js +48 -0
  61. package/dist/provider/model-catalog.js +168 -0
  62. package/dist/provider/openrouter-login.js +172 -0
  63. package/dist/provider/provider-text.js +13 -0
  64. package/dist/provider/store.js +95 -0
  65. package/dist/provider/system-keyring.js +214 -0
  66. package/dist/runtime/active-run.js +63 -0
  67. package/dist/runtime/agent-tree.js +74 -0
  68. package/dist/runtime/attachments.js +84 -0
  69. package/dist/runtime/brokered-executor.js +395 -0
  70. package/dist/runtime/context-archive.js +69 -0
  71. package/dist/runtime/context-status.js +76 -0
  72. package/dist/runtime/create-runtime.js +111 -0
  73. package/dist/runtime/model-profile.js +361 -0
  74. package/dist/runtime/output-store.js +137 -0
  75. package/dist/runtime/provider-attempts.js +185 -0
  76. package/dist/runtime/replay-buffer.js +153 -0
  77. package/dist/runtime/repo.js +95 -0
  78. package/dist/runtime/session-facade.js +135 -0
  79. package/dist/runtime/session-summary.js +125 -0
  80. package/dist/runtime/supervisor.js +265 -0
  81. package/dist/runtime/talos-composition.js +1011 -0
  82. package/dist/runtime/types.js +5 -0
  83. package/dist/runtime/usage-snapshot.js +82 -0
  84. package/dist/security/auto-classifier.js +38 -0
  85. package/dist/security/credential-free-environment.js +54 -0
  86. package/dist/security/evaluate.js +243 -0
  87. package/dist/security/execution-backends.js +236 -0
  88. package/dist/security/execution-broker.js +102 -0
  89. package/dist/security/forge-scan.js +74 -0
  90. package/dist/security/from-approval.js +39 -0
  91. package/dist/security/mxc-execution-backend.js +281 -0
  92. package/dist/security/permission-engine.js +138 -0
  93. package/dist/security/permission-explanation.js +54 -0
  94. package/dist/security/persist.js +179 -0
  95. package/dist/security/plugin-guard.js +230 -0
  96. package/dist/security/process-tree-evidence-store.js +74 -0
  97. package/dist/security/process-tree-probe.js +554 -0
  98. package/dist/security/project-resource-inventory.js +186 -0
  99. package/dist/security/project-trust-gate.js +38 -0
  100. package/dist/security/project-trust.js +367 -0
  101. package/dist/security/rule-parser.js +201 -0
  102. package/dist/security/shell-segmentation.js +68 -0
  103. package/dist/security/trust-authority.js +324 -0
  104. package/dist/security/types.js +1 -0
  105. package/dist/security/workspace-identity.js +102 -0
  106. package/dist/services/automation-facade.js +59 -0
  107. package/dist/services/forge-facade.js +77 -0
  108. package/dist/services/hook-facade.js +240 -0
  109. package/dist/services/index.js +16 -0
  110. package/dist/services/library-facade.js +174 -0
  111. package/dist/services/mcp-facade.js +348 -0
  112. package/dist/services/memory-facade.js +126 -0
  113. package/dist/services/notes-facade.js +157 -0
  114. package/dist/services/plugin-facade.js +308 -0
  115. package/dist/services/research-facade.js +110 -0
  116. package/dist/services/task-board-facade.js +236 -0
  117. package/dist/services/workflow-catalog.js +246 -0
  118. package/dist/sessions/export-format.js +98 -0
  119. package/dist/sessions/metadata-store.js +160 -0
  120. package/dist/sessions/share.js +122 -0
  121. package/dist/sessions/transfer.js +16 -0
  122. package/dist/subcommands.js +62 -0
  123. package/dist/tui/agent-roster.js +36 -0
  124. package/dist/tui/agent-view.js +51 -0
  125. package/dist/tui/app.js +4098 -0
  126. package/dist/tui/approval.js +36 -0
  127. package/dist/tui/boot/boot-sequence.js +76 -0
  128. package/dist/tui/boot/cinematic.js +243 -0
  129. package/dist/tui/boot/desktop-logo.js +82 -0
  130. package/dist/tui/boot.js +3 -0
  131. package/dist/tui/busy-input.js +58 -0
  132. package/dist/tui/catalog-service.js +560 -0
  133. package/dist/tui/components/assistant-stream.js +1 -0
  134. package/dist/tui/components/command-menu.js +68 -0
  135. package/dist/tui/components/composer.js +219 -0
  136. package/dist/tui/components/diff.js +35 -0
  137. package/dist/tui/components/footer.js +48 -0
  138. package/dist/tui/components/header.js +6 -0
  139. package/dist/tui/components/markdown.js +305 -0
  140. package/dist/tui/components/status-indicator.js +38 -0
  141. package/dist/tui/components/terminal-shell.js +214 -0
  142. package/dist/tui/components/thinking-row.js +19 -0
  143. package/dist/tui/components/tool-row.js +97 -0
  144. package/dist/tui/components/transcript-virtualizer.js +165 -0
  145. package/dist/tui/components/transcript.js +43 -0
  146. package/dist/tui/descendant-approvals.js +104 -0
  147. package/dist/tui/diff-model.js +77 -0
  148. package/dist/tui/editor-history.js +21 -0
  149. package/dist/tui/editor.js +210 -0
  150. package/dist/tui/event-adapter.js +436 -0
  151. package/dist/tui/exit-output.js +58 -0
  152. package/dist/tui/external-editor.js +53 -0
  153. package/dist/tui/file-completion.js +89 -0
  154. package/dist/tui/focus-manager.js +5 -0
  155. package/dist/tui/highlight.js +30 -0
  156. package/dist/tui/input-router.js +18 -0
  157. package/dist/tui/interrupt.js +99 -0
  158. package/dist/tui/keybindings.js +194 -0
  159. package/dist/tui/keymap-resolver.js +91 -0
  160. package/dist/tui/launch-state.js +148 -0
  161. package/dist/tui/line-diff.js +57 -0
  162. package/dist/tui/live-activity.js +56 -0
  163. package/dist/tui/metrics.js +123 -0
  164. package/dist/tui/onboarding.js +36 -0
  165. package/dist/tui/overlays/agent-tree.js +43 -0
  166. package/dist/tui/overlays/approval-dialog.js +642 -0
  167. package/dist/tui/overlays/automation-center.js +51 -0
  168. package/dist/tui/overlays/checkpoint-picker.js +47 -0
  169. package/dist/tui/overlays/context-inspector.js +36 -0
  170. package/dist/tui/overlays/effort-line.js +110 -0
  171. package/dist/tui/overlays/forge-center.js +46 -0
  172. package/dist/tui/overlays/help-dialog.js +16 -0
  173. package/dist/tui/overlays/history-picker.js +37 -0
  174. package/dist/tui/overlays/hook-center.js +70 -0
  175. package/dist/tui/overlays/library-center.js +55 -0
  176. package/dist/tui/overlays/mcp-center.js +60 -0
  177. package/dist/tui/overlays/memory-center.js +63 -0
  178. package/dist/tui/overlays/model-picker.js +77 -0
  179. package/dist/tui/overlays/notes-center.js +53 -0
  180. package/dist/tui/overlays/overlay-host.js +8 -0
  181. package/dist/tui/overlays/plugin-center.js +76 -0
  182. package/dist/tui/overlays/provider-picker.js +171 -0
  183. package/dist/tui/overlays/queue-editor.js +32 -0
  184. package/dist/tui/overlays/research-center.js +59 -0
  185. package/dist/tui/overlays/scroll-window.js +234 -0
  186. package/dist/tui/overlays/session-picker.js +115 -0
  187. package/dist/tui/overlays/tasks-center.js +83 -0
  188. package/dist/tui/overlays/theme-picker.js +21 -0
  189. package/dist/tui/overlays/transcript-search.js +58 -0
  190. package/dist/tui/overlays/trust-center.js +29 -0
  191. package/dist/tui/overlays/workflow-center.js +46 -0
  192. package/dist/tui/project-file-index.js +214 -0
  193. package/dist/tui/project-references.js +85 -0
  194. package/dist/tui/project-trust-prompt.js +289 -0
  195. package/dist/tui/prompt-history-store.js +116 -0
  196. package/dist/tui/queue-store.js +110 -0
  197. package/dist/tui/regions/budget.js +59 -0
  198. package/dist/tui/regions/views.js +96 -0
  199. package/dist/tui/render-coordinator.js +148 -0
  200. package/dist/tui/render-scheduler.js +4 -0
  201. package/dist/tui/run.js +69 -0
  202. package/dist/tui/selection-list.js +29 -0
  203. package/dist/tui/session-controller.js +791 -0
  204. package/dist/tui/session-export.js +54 -0
  205. package/dist/tui/setup-wizard.js +46 -0
  206. package/dist/tui/shell-input.js +35 -0
  207. package/dist/tui/shell-layout.js +48 -0
  208. package/dist/tui/shell-model.js +98 -0
  209. package/dist/tui/slash-commands.js +82 -0
  210. package/dist/tui/state.js +151 -0
  211. package/dist/tui/status-bar.js +125 -0
  212. package/dist/tui/status-view.js +40 -0
  213. package/dist/tui/terminal-capabilities.js +9 -0
  214. package/dist/tui/terminal-session.js +11 -0
  215. package/dist/tui/text-width.js +66 -0
  216. package/dist/tui/theme-catalog.js +27 -0
  217. package/dist/tui/theme-store.js +23 -0
  218. package/dist/tui/theme.js +23 -0
  219. package/dist/tui/tool-display.js +135 -0
  220. package/dist/tui/tool-facts.js +1 -0
  221. package/dist/tui/tools/bash-renderer.js +32 -0
  222. package/dist/tui/tools/change.js +61 -0
  223. package/dist/tui/tools/edit-renderer.js +17 -0
  224. package/dist/tui/tools/generic-renderer.js +13 -0
  225. package/dist/tui/tools/list-renderer.js +14 -0
  226. package/dist/tui/tools/read-renderer.js +13 -0
  227. package/dist/tui/tools/registry.js +20 -0
  228. package/dist/tui/tools/row-format.js +187 -0
  229. package/dist/tui/tools/search-renderer.js +38 -0
  230. package/dist/tui/tools/shared.js +97 -0
  231. package/dist/tui/tools/write-renderer.js +15 -0
  232. package/dist/tui/transcript-model.js +441 -0
  233. package/dist/tui/ui-preferences.js +79 -0
  234. package/dist/tui/usage-view.js +77 -0
  235. package/dist/tui/vim-mode.js +99 -0
  236. package/dist/update/check.js +15 -0
  237. package/dist/update/npm.js +51 -0
  238. package/dist/update/run.js +129 -0
  239. package/dist/version.js +2 -0
  240. package/dist/workspace/checkpoint-store.js +210 -0
  241. package/dist/workspace/checkpoint.js +413 -0
  242. package/dist/workspace/restore.js +232 -0
  243. package/package.json +64 -5
  244. package/vendor/context-engine/package.json +11 -0
  245. package/vendor/context-engine/src/compaction-planner.mjs +57 -0
  246. package/vendor/context-engine/src/contracts.mjs +48 -0
  247. package/vendor/context-engine/src/engine.mjs +445 -0
  248. package/vendor/context-engine/src/node/context-export.mjs +164 -0
  249. package/vendor/context-engine/src/node/legacy-import.mjs +92 -0
  250. package/vendor/context-engine/src/node/migrations/001-context.sql +126 -0
  251. package/vendor/context-engine/src/node/sqlite-store.mjs +85 -0
  252. package/vendor/context-engine/src/node/sqlite-worker.mjs +559 -0
  253. package/vendor/context-engine/src/profiles.mjs +10 -0
  254. package/vendor/context-engine/src/retrieval.mjs +104 -0
  255. package/vendor/context-engine/src/summary.mjs +97 -0
  256. package/vendor/context-engine/src/usage.mjs +34 -0
  257. package/vendor/harness-ui/package.json +38 -0
  258. package/vendor/harness-ui/src/acp-agent.mjs +350 -0
  259. package/vendor/harness-ui/src/agent-service.mjs +2188 -0
  260. package/vendor/harness-ui/src/agui-events.mjs +452 -0
  261. package/vendor/harness-ui/src/ambiente-solo-server.mjs +121 -0
  262. package/vendor/harness-ui/src/artifact-store.mjs +39 -0
  263. package/vendor/harness-ui/src/assistenza.mjs +123 -0
  264. package/vendor/harness-ui/src/automation-scheduler.mjs +69 -0
  265. package/vendor/harness-ui/src/automation-store.mjs +145 -0
  266. package/vendor/harness-ui/src/browser-annota.mjs +639 -0
  267. package/vendor/harness-ui/src/browser-frame.mjs +211 -0
  268. package/vendor/harness-ui/src/browser-proxy-universale.mjs +519 -0
  269. package/vendor/harness-ui/src/browser-proxy.mjs +87 -0
  270. package/vendor/harness-ui/src/browser-sessione-viva.mjs +329 -0
  271. package/vendor/harness-ui/src/browser-stream.mjs +445 -0
  272. package/vendor/harness-ui/src/browser-vivo.mjs +694 -0
  273. package/vendor/harness-ui/src/chat-image-attachments.mjs +72 -0
  274. package/vendor/harness-ui/src/config.mjs +697 -0
  275. package/vendor/harness-ui/src/contesto-del-progetto.mjs +385 -0
  276. package/vendor/harness-ui/src/context-asset-adapter.mjs +72 -0
  277. package/vendor/harness-ui/src/context-desktop-service.mjs +253 -0
  278. package/vendor/harness-ui/src/context-embedding-runtime.mjs +252 -0
  279. package/vendor/harness-ui/src/context-inference-scheduler.mjs +81 -0
  280. package/vendor/harness-ui/src/context-native-compaction.mjs +75 -0
  281. package/vendor/harness-ui/src/context-provider-adapter.mjs +141 -0
  282. package/vendor/harness-ui/src/context-runtime.mjs +118 -0
  283. package/vendor/harness-ui/src/context-token-counters.mjs +184 -0
  284. package/vendor/harness-ui/src/context-tool-catalog.mjs +86 -0
  285. package/vendor/harness-ui/src/context-tool-output.mjs +72 -0
  286. package/vendor/harness-ui/src/costo-elenco.mjs +252 -0
  287. package/vendor/harness-ui/src/custom-task.mjs +171 -0
  288. package/vendor/harness-ui/src/doctor.mjs +142 -0
  289. package/vendor/harness-ui/src/document-filename.mjs +97 -0
  290. package/vendor/harness-ui/src/document-generator.mjs +493 -0
  291. package/vendor/harness-ui/src/document-report.mjs +331 -0
  292. package/vendor/harness-ui/src/duckduckgo-search.mjs +155 -0
  293. package/vendor/harness-ui/src/elenco-profondo.mjs +337 -0
  294. package/vendor/harness-ui/src/favicon-proxy.mjs +113 -0
  295. package/vendor/harness-ui/src/forge-contract.mjs +221 -0
  296. package/vendor/harness-ui/src/frequent-dirs.mjs +134 -0
  297. package/vendor/harness-ui/src/generated-image-store.mjs +147 -0
  298. package/vendor/harness-ui/src/generation-idle.mjs +332 -0
  299. package/vendor/harness-ui/src/gguf-header.mjs +207 -0
  300. package/vendor/harness-ui/src/git-service.mjs +626 -0
  301. package/vendor/harness-ui/src/gitignore-elenco.mjs +604 -0
  302. package/vendor/harness-ui/src/harness-receipt-keypair.mjs +207 -0
  303. package/vendor/harness-ui/src/hf-direct-transfer.mjs +170 -0
  304. package/vendor/harness-ui/src/hf-hub-client.mjs +106 -0
  305. package/vendor/harness-ui/src/hf-image-proxy.mjs +105 -0
  306. package/vendor/harness-ui/src/hf-model-transfer.mjs +245 -0
  307. package/vendor/harness-ui/src/hook-registry.mjs +186 -0
  308. package/vendor/harness-ui/src/http-app.mjs +6259 -0
  309. package/vendor/harness-ui/src/http-lifecycle.mjs +132 -0
  310. package/vendor/harness-ui/src/id-archivio.mjs +27 -0
  311. package/vendor/harness-ui/src/image-generator.mjs +143 -0
  312. package/vendor/harness-ui/src/istruzioni-di-progetto.mjs +234 -0
  313. package/vendor/harness-ui/src/kernel/dist/kernelPerIlBanco.js +518 -0
  314. package/vendor/harness-ui/src/kernel/talosHarness.mjs +10437 -0
  315. package/vendor/harness-ui/src/library-policy-store.mjs +175 -0
  316. package/vendor/harness-ui/src/library-store.mjs +652 -0
  317. package/vendor/harness-ui/src/llama-server-supervisor.mjs +629 -0
  318. package/vendor/harness-ui/src/local-model-store.mjs +339 -0
  319. package/vendor/harness-ui/src/local-runtime-contract.mjs +66 -0
  320. package/vendor/harness-ui/src/local-runtime-events.mjs +44 -0
  321. package/vendor/harness-ui/src/local-runtime-llama-server.mjs +244 -0
  322. package/vendor/harness-ui/src/local-runtime-probe.mjs +401 -0
  323. package/vendor/harness-ui/src/machine-capacity.mjs +66 -0
  324. package/vendor/harness-ui/src/mappa-cartelle.mjs +491 -0
  325. package/vendor/harness-ui/src/mcp-client.mjs +98 -0
  326. package/vendor/harness-ui/src/mcp-registry.mjs +157 -0
  327. package/vendor/harness-ui/src/mcp-session.mjs +177 -0
  328. package/vendor/harness-ui/src/memory-store.mjs +227 -0
  329. package/vendor/harness-ui/src/model-catalog-models-dev.mjs +276 -0
  330. package/vendor/harness-ui/src/model-catalog.mjs +129 -0
  331. package/vendor/harness-ui/src/model-destination.mjs +189 -0
  332. package/vendor/harness-ui/src/modifica-ancorata.mjs +177 -0
  333. package/vendor/harness-ui/src/native-provider-adapter.mjs +205 -0
  334. package/vendor/harness-ui/src/notes-store.mjs +250 -0
  335. package/vendor/harness-ui/src/openai-compatible-runtime.mjs +428 -0
  336. package/vendor/harness-ui/src/openrouter-oauth.mjs +339 -0
  337. package/vendor/harness-ui/src/path-policy.mjs +442 -0
  338. package/vendor/harness-ui/src/plugin-registry.mjs +780 -0
  339. package/vendor/harness-ui/src/plugin-session.mjs +180 -0
  340. package/vendor/harness-ui/src/process-policy.mjs +345 -0
  341. package/vendor/harness-ui/src/prompt-enhancer-provider.mjs +94 -0
  342. package/vendor/harness-ui/src/provider-auth-cloud.mjs +95 -0
  343. package/vendor/harness-ui/src/provider-credential-store.mjs +541 -0
  344. package/vendor/harness-ui/src/provider-probe.mjs +582 -0
  345. package/vendor/harness-ui/src/provider-registry.mjs +1633 -0
  346. package/vendor/harness-ui/src/pty-terminal.mjs +312 -0
  347. package/vendor/harness-ui/src/public-problem.mjs +109 -0
  348. package/vendor/harness-ui/src/research/card.mjs +235 -0
  349. package/vendor/harness-ui/src/research/citations.mjs +142 -0
  350. package/vendor/harness-ui/src/research/collector.mjs +275 -0
  351. package/vendor/harness-ui/src/research/deposito-a-pezzi.mjs +139 -0
  352. package/vendor/harness-ui/src/research/dossier.mjs +114 -0
  353. package/vendor/harness-ui/src/research/esportazioni.mjs +560 -0
  354. package/vendor/harness-ui/src/research/fetch-cache.mjs +465 -0
  355. package/vendor/harness-ui/src/research/fidelity.mjs +122 -0
  356. package/vendor/harness-ui/src/research/independence.mjs +159 -0
  357. package/vendor/harness-ui/src/research/ledger.mjs +166 -0
  358. package/vendor/harness-ui/src/research/markdown-server.mjs +565 -0
  359. package/vendor/harness-ui/src/research/narration.mjs +181 -0
  360. package/vendor/harness-ui/src/research/open-cards.mjs +131 -0
  361. package/vendor/harness-ui/src/research/opposing.mjs +305 -0
  362. package/vendor/harness-ui/src/research/outline.mjs +111 -0
  363. package/vendor/harness-ui/src/research/page-budget.mjs +209 -0
  364. package/vendor/harness-ui/src/research/pdf.mjs +291 -0
  365. package/vendor/harness-ui/src/research/plan.mjs +301 -0
  366. package/vendor/harness-ui/src/research/raccolta-viva.mjs +452 -0
  367. package/vendor/harness-ui/src/research/recheck-document.mjs +69 -0
  368. package/vendor/harness-ui/src/research/recheck-history.mjs +192 -0
  369. package/vendor/harness-ui/src/research/recheck.mjs +194 -0
  370. package/vendor/harness-ui/src/research/report.mjs +203 -0
  371. package/vendor/harness-ui/src/research/run.mjs +527 -0
  372. package/vendor/harness-ui/src/research/synthesis.mjs +318 -0
  373. package/vendor/harness-ui/src/research/verification.mjs +572 -0
  374. package/vendor/harness-ui/src/research-orchestrator.mjs +2679 -0
  375. package/vendor/harness-ui/src/research-store.mjs +1133 -0
  376. package/vendor/harness-ui/src/runtime-build-manifest.mjs +26 -0
  377. package/vendor/harness-ui/src/runtime-contract.mjs +59 -0
  378. package/vendor/harness-ui/src/runtime-owner-adapter.mjs +1348 -0
  379. package/vendor/harness-ui/src/runtime-owner-contract.mjs +32 -0
  380. package/vendor/harness-ui/src/scheda-di-lavoro.mjs +249 -0
  381. package/vendor/harness-ui/src/search-source-store.mjs +172 -0
  382. package/vendor/harness-ui/src/session-registry.mjs +6095 -0
  383. package/vendor/harness-ui/src/session-store.mjs +220 -0
  384. package/vendor/harness-ui/src/sessione-pronta.mjs +73 -0
  385. package/vendor/harness-ui/src/setup-stato.mjs +31 -0
  386. package/vendor/harness-ui/src/sezioni-istruzioni.mjs +204 -0
  387. package/vendor/harness-ui/src/skill-registry.mjs +120 -0
  388. package/vendor/harness-ui/src/sse-replay-coalescente.mjs +0 -0
  389. package/vendor/harness-ui/src/static-files.mjs +96 -0
  390. package/vendor/harness-ui/src/stream-partition.mjs +123 -0
  391. package/vendor/harness-ui/src/subagent-orchestrator.mjs +453 -0
  392. package/vendor/harness-ui/src/task-catalog.mjs +65 -0
  393. package/vendor/harness-ui/src/tasks-store.mjs +220 -0
  394. package/vendor/harness-ui/src/terminal-registry.mjs +312 -0
  395. package/vendor/harness-ui/src/terminal-ws.mjs +170 -0
  396. package/vendor/harness-ui/src/tool-forge-store.mjs +299 -0
  397. package/vendor/harness-ui/src/tool-schema-normalize.mjs +100 -0
  398. package/vendor/harness-ui/src/usage-cache.mjs +315 -0
  399. package/vendor/harness-ui/src/workspace-browser.mjs +213 -0
  400. package/vendor/harness-ui/src/workspace-context.mjs +124 -0
  401. package/vendor/harness-ui/src/workspace-disk.mjs +62 -0
  402. package/vendor/harness-ui/src/workspace-files.mjs +589 -0
  403. package/vendor/harness-ui/src/workspace-info.mjs +189 -0
  404. package/vendor/harness-ui/src/workspace-launch-store.mjs +150 -0
  405. package/vendor/harness-ui/src/workspace-tree.mjs +67 -0
  406. package/vendor/harness-ui/src/workspace-watcher.mjs +161 -0
  407. package/vendor/manifest.json +170 -0
@@ -0,0 +1,92 @@
1
+ import { createHash } from 'node:crypto';
2
+ import { ContextStoreError } from './sqlite-store.mjs';
3
+ import { verifyContextArchive } from './context-export.mjs';
4
+
5
+ const hash = value => createHash('sha256').update(value).digest('hex');
6
+ const object = value => value !== null && typeof value === 'object' && !Array.isArray(value);
7
+ const id = value => typeof value === 'string' && value.length > 0 && value.length <= 256;
8
+
9
+ function validJson(value, ancestors = new Set()) {
10
+ if (value === null || ['string', 'boolean'].includes(typeof value) || (typeof value === 'number' && Number.isFinite(value))) return true;
11
+ if ((!object(value) && !Array.isArray(value)) || ancestors.has(value) || (object(value) && Object.getPrototypeOf(value) !== Object.prototype)) return false;
12
+ if (Array.isArray(value) && Object.keys(value).length !== value.length) return false;
13
+ ancestors.add(value);
14
+ const valid = Object.values(value).every(child => validJson(child, ancestors));
15
+ ancestors.delete(value);
16
+ return valid;
17
+ }
18
+
19
+ function validMessages(messages) {
20
+ if (!Array.isArray(messages) || !messages.length || !validJson(messages)) return false;
21
+ const pending = new Set();
22
+ for (const message of messages) {
23
+ if (!object(message) || !['system', 'developer', 'user', 'assistant', 'tool'].includes(message.role) || (!Object.hasOwn(message, 'content') && !(message.role === 'assistant' && Array.isArray(message.tool_calls) && message.tool_calls.length))) return false;
24
+ if (message.tool_calls !== undefined) {
25
+ if (message.role !== 'assistant' || !Array.isArray(message.tool_calls)) return false;
26
+ for (const call of message.tool_calls) {
27
+ if (!object(call) || !id(call.id) || pending.has(call.id) || call.type !== 'function' || !object(call.function) || !id(call.function.name) || typeof call.function.arguments !== 'string') return false;
28
+ pending.add(call.id);
29
+ }
30
+ }
31
+ if (message.role === 'tool' && (!id(message.tool_call_id) || !pending.delete(message.tool_call_id))) return false;
32
+ }
33
+ try { JSON.stringify(messages); } catch { return false; }
34
+ return true;
35
+ }
36
+
37
+ /** First validate the body, then compare generations. A malformed late final
38
+ * must never hide a usable checkpoint from an earlier run. */
39
+ export function selectLastValidCheckpoint(records) {
40
+ if (!Array.isArray(records)) throw new ContextStoreError('Legacy records must be an array', 'CTX_LEGACY_CORRUPT');
41
+ let selected = null;
42
+ for (let recordIndex = 0; recordIndex < records.length; recordIndex++) {
43
+ const record = records[recordIndex];
44
+ const messages = record?.tipo === 'messaggi-finali' ? record.messaggiFinali : record?.tipo === 'checkpoint-ripresa' ? record.messaggi : null;
45
+ const versioneGiro = record?.versioneGiro ?? 0;
46
+ if (!Number.isSafeInteger(versioneGiro) || versioneGiro < 0 || !validMessages(messages)) continue;
47
+ if (!selected || versioneGiro >= selected.versioneGiro) selected = { messages: JSON.parse(JSON.stringify(messages)), versioneGiro, recordIndex };
48
+ }
49
+ return selected;
50
+ }
51
+
52
+ /** Import once through the same atomic archive boundary as normal exports.
53
+ * jsonl is captured bytes/text, never a path; no legacy source is rewritten. */
54
+ export async function importLegacySession({ sessionId, jsonl, settings, metadata = {} }, { store }) {
55
+ if (typeof jsonl !== 'string' && !(jsonl instanceof Uint8Array)) throw new ContextStoreError('Legacy JSONL must be captured text or bytes', 'CTX_LEGACY_CORRUPT');
56
+ const bytes = typeof jsonl === 'string' ? Buffer.from(jsonl, 'utf8') : Buffer.from(jsonl);
57
+ let text;
58
+ try { text = new TextDecoder('utf-8', { fatal: true }).decode(bytes); }
59
+ catch (cause) { throw new ContextStoreError('Legacy JSONL is not valid UTF-8', 'CTX_LEGACY_CORRUPT', { cause }); }
60
+ const lines = text.split('\n').filter(line => line.trim() !== '');
61
+ const records = [];
62
+ let corruptTail = false;
63
+ for (let index = 0; index < lines.length; index++) {
64
+ try {
65
+ const parsed = JSON.parse(lines[index]);
66
+ if (!object(parsed)) throw new Error('Expected a legacy record object');
67
+ records.push(parsed);
68
+ } catch (cause) {
69
+ if (index === lines.length - 1) { corruptTail = true; break; }
70
+ throw new ContextStoreError(`Legacy JSONL has a corrupt intermediate record at line ${index + 1}`, 'CTX_LEGACY_CORRUPT', { cause });
71
+ }
72
+ }
73
+ const checkpoint = selectLastValidCheckpoint(records);
74
+ if (!checkpoint) throw new ContextStoreError('Legacy JSONL contains no valid message checkpoint', 'CTX_LEGACY_NO_CHECKPOINT');
75
+ const sourceSha256 = hash(bytes);
76
+ const sourceBlobId = `legacy-jsonl:${sourceSha256}`;
77
+ const headerDate = records.find(record => typeof record.avviataAlle === 'string')?.avviataAlle;
78
+ const createdAt = typeof headerDate === 'string' && /^\d{4}-\d\d-\d\dT\d\d:\d\d(?::\d\d(?:\.\d+)?)?(?:Z|[+-]\d\d:\d\d)$/.test(headerDate) && Number.isFinite(Date.parse(headerDate)) ? headerDate : '1970-01-01T00:00:00.000Z';
79
+ const originals = checkpoint.messages.map((message, index) => ({
80
+ id: `legacy:${sourceSha256}:${index + 1}`, message, createdAt,
81
+ origin: 'legacy-jsonl',
82
+ schema: 'talos.context.record.v1', sessionId, sequence: index + 1, sha256: hash(JSON.stringify(message)),
83
+ }));
84
+ const session = {
85
+ schema: 'talos.context.snapshot.v1', sessionId, revision: originals.length ? 1 : 0, stateRevision: 0, headSequence: originals.length, settings,
86
+ metadata: { ...metadata, legacy: { sourceBlobId, sourceSha256, corruptTail, versioneGiro: checkpoint.versioneGiro, recordIndex: checkpoint.recordIndex, records: originals.map((record, messageIndex) => ({ recordId: record.id, messageIndex })) } },
87
+ activeVersion: null, facts: [], jobs: [],
88
+ };
89
+ const payload = { schema: 'talos.context.archive.v1', session, records: originals, versions: [], facts: [], jobs: [], usage: [], blobs: [{ id: sourceBlobId, sha256: sourceSha256, mimeType: 'application/x-ndjson', base64: bytes.toString('base64') }] };
90
+ const archive = { ...payload, manifest: { schema: 'talos.context.manifest.v1', algorithm: 'sha256', payloadSha256: hash(JSON.stringify(payload)) } };
91
+ return store.importSession({ archive: verifyContextArchive(archive) });
92
+ }
@@ -0,0 +1,126 @@
1
+ CREATE TABLE IF NOT EXISTS context_sessions (
2
+ session_id TEXT PRIMARY KEY,
3
+ revision INTEGER NOT NULL DEFAULT 0 CHECK(revision >= 0),
4
+ state_revision INTEGER NOT NULL DEFAULT 0 CHECK(state_revision >= 0),
5
+ head_sequence INTEGER NOT NULL DEFAULT 0 CHECK(head_sequence >= 0),
6
+ settings_json TEXT NOT NULL CHECK(json_valid(settings_json)),
7
+ metadata_json TEXT NOT NULL CHECK(json_valid(metadata_json)),
8
+ active_version_id TEXT
9
+ ) STRICT;
10
+ CREATE TABLE IF NOT EXISTS original_records (
11
+ session_id TEXT NOT NULL REFERENCES context_sessions(session_id),
12
+ id TEXT NOT NULL,
13
+ sequence INTEGER NOT NULL CHECK(sequence > 0),
14
+ sha256 TEXT NOT NULL,
15
+ record_json TEXT NOT NULL CHECK(json_valid(record_json)),
16
+ PRIMARY KEY(session_id, id),
17
+ UNIQUE(session_id, sequence)
18
+ ) STRICT;
19
+ CREATE TRIGGER IF NOT EXISTS originals_no_update BEFORE UPDATE ON original_records
20
+ BEGIN SELECT RAISE(ABORT, 'original records are immutable'); END;
21
+ CREATE TRIGGER IF NOT EXISTS originals_no_delete BEFORE DELETE ON original_records
22
+ BEGIN SELECT RAISE(ABORT, 'original records are immutable'); END;
23
+ CREATE TABLE IF NOT EXISTS content_blobs (
24
+ sha256 TEXT PRIMARY KEY,
25
+ bytes BLOB NOT NULL
26
+ ) STRICT;
27
+ CREATE TRIGGER IF NOT EXISTS blobs_no_update BEFORE UPDATE ON content_blobs
28
+ BEGIN SELECT RAISE(ABORT, 'original blobs are immutable'); END;
29
+ CREATE TRIGGER IF NOT EXISTS blobs_no_delete BEFORE DELETE ON content_blobs
30
+ BEGIN SELECT RAISE(ABORT, 'original blobs are immutable'); END;
31
+ CREATE TABLE IF NOT EXISTS record_assets (
32
+ session_id TEXT NOT NULL REFERENCES context_sessions(session_id),
33
+ id TEXT NOT NULL,
34
+ sha256 TEXT NOT NULL REFERENCES content_blobs(sha256),
35
+ mime_type TEXT NOT NULL,
36
+ PRIMARY KEY(session_id, id)
37
+ ) STRICT;
38
+ CREATE TRIGGER IF NOT EXISTS assets_no_update BEFORE UPDATE ON record_assets
39
+ BEGIN SELECT RAISE(ABORT, 'original assets are immutable'); END;
40
+ CREATE TABLE IF NOT EXISTS context_versions (
41
+ ordinal INTEGER PRIMARY KEY,
42
+ session_id TEXT NOT NULL REFERENCES context_sessions(session_id),
43
+ id TEXT NOT NULL,
44
+ version_json TEXT NOT NULL CHECK(json_valid(version_json)),
45
+ UNIQUE(session_id, id)
46
+ ) STRICT;
47
+ CREATE TRIGGER IF NOT EXISTS versions_no_update BEFORE UPDATE ON context_versions
48
+ BEGIN SELECT RAISE(ABORT, 'context versions are immutable'); END;
49
+ CREATE TRIGGER IF NOT EXISTS versions_no_delete BEFORE DELETE ON context_versions
50
+ BEGIN SELECT RAISE(ABORT, 'context versions are immutable'); END;
51
+ CREATE TABLE IF NOT EXISTS summary_nodes (
52
+ session_id TEXT NOT NULL,
53
+ version_id TEXT NOT NULL,
54
+ summary_json TEXT NOT NULL CHECK(json_valid(summary_json)),
55
+ PRIMARY KEY(session_id, version_id),
56
+ FOREIGN KEY(session_id, version_id) REFERENCES context_versions(session_id, id)
57
+ ) STRICT;
58
+ CREATE TABLE IF NOT EXISTS protected_facts (
59
+ session_id TEXT NOT NULL REFERENCES context_sessions(session_id),
60
+ id TEXT NOT NULL,
61
+ fact_json TEXT NOT NULL CHECK(json_valid(fact_json)),
62
+ PRIMARY KEY(session_id, id)
63
+ ) STRICT;
64
+ CREATE TABLE IF NOT EXISTS compaction_jobs (
65
+ session_id TEXT NOT NULL REFERENCES context_sessions(session_id),
66
+ id TEXT NOT NULL,
67
+ idempotency_key TEXT NOT NULL,
68
+ state TEXT NOT NULL,
69
+ job_json TEXT NOT NULL CHECK(json_valid(job_json)),
70
+ PRIMARY KEY(session_id, id),
71
+ UNIQUE(session_id, idempotency_key)
72
+ ) STRICT;
73
+ CREATE UNIQUE INDEX IF NOT EXISTS context_one_active_job ON compaction_jobs(session_id)
74
+ WHERE state IN ('queued','preparing','summarizing','validating','ready');
75
+ CREATE TABLE IF NOT EXISTS context_outbox (
76
+ ordinal INTEGER PRIMARY KEY,
77
+ session_id TEXT NOT NULL REFERENCES context_sessions(session_id),
78
+ id TEXT NOT NULL,
79
+ event_json TEXT NOT NULL CHECK(json_valid(event_json)),
80
+ acknowledged INTEGER NOT NULL DEFAULT 0 CHECK(acknowledged IN (0,1)),
81
+ UNIQUE(session_id, id)
82
+ ) STRICT;
83
+ CREATE TABLE IF NOT EXISTS search_chunks (
84
+ rowid INTEGER PRIMARY KEY,
85
+ session_id TEXT NOT NULL,
86
+ id TEXT NOT NULL,
87
+ record_id TEXT NOT NULL,
88
+ sequence INTEGER NOT NULL,
89
+ text TEXT NOT NULL,
90
+ start INTEGER NOT NULL,
91
+ end INTEGER NOT NULL,
92
+ embedding BLOB,
93
+ dimensions INTEGER,
94
+ UNIQUE(session_id, id),
95
+ FOREIGN KEY(session_id, record_id) REFERENCES original_records(session_id, id)
96
+ ) STRICT;
97
+ CREATE VIRTUAL TABLE IF NOT EXISTS search_chunks_fts USING fts5(text, content='search_chunks', content_rowid='rowid');
98
+ CREATE TRIGGER IF NOT EXISTS search_chunks_insert AFTER INSERT ON search_chunks
99
+ BEGIN INSERT INTO search_chunks_fts(rowid,text) VALUES(new.rowid,new.text); END;
100
+ CREATE TRIGGER IF NOT EXISTS search_chunks_delete AFTER DELETE ON search_chunks
101
+ BEGIN INSERT INTO search_chunks_fts(search_chunks_fts,rowid,text) VALUES('delete',old.rowid,old.text); END;
102
+ CREATE TABLE IF NOT EXISTS usage_records (
103
+ ordinal INTEGER PRIMARY KEY,
104
+ session_id TEXT NOT NULL REFERENCES context_sessions(session_id),
105
+ operation_id TEXT NOT NULL,
106
+ job_id TEXT,
107
+ usage_json TEXT NOT NULL CHECK(json_valid(usage_json)),
108
+ UNIQUE(session_id, operation_id)
109
+ ) STRICT;
110
+ CREATE TABLE IF NOT EXISTS context_mutations (
111
+ session_id TEXT NOT NULL REFERENCES context_sessions(session_id),
112
+ idempotency_key TEXT NOT NULL,
113
+ request_fingerprint TEXT NOT NULL,
114
+ result_json TEXT NOT NULL CHECK(json_valid(result_json)),
115
+ PRIMARY KEY(session_id,idempotency_key)
116
+ ) STRICT;
117
+ PRAGMA user_version = 1;
118
+
119
+ -- 09/09/2026 — l'ULTIMA misura preparata per la richiesta (strumenti e riserva compresi), con la
120
+ -- revisione a cui si riferisce: la modale la mostra come «misurata alle …», mai come dato vivo.
121
+ CREATE TABLE IF NOT EXISTS context_measurements (
122
+ session_id TEXT PRIMARY KEY REFERENCES context_sessions(session_id),
123
+ revision INTEGER NOT NULL CHECK(revision >= 0),
124
+ measured_at TEXT NOT NULL,
125
+ measurement_json TEXT NOT NULL CHECK(json_valid(measurement_json))
126
+ ) STRICT;
@@ -0,0 +1,85 @@
1
+ import { Worker } from 'node:worker_threads';
2
+
3
+ export class ContextStoreError extends Error {
4
+ constructor(message, code = 'CTX_STORE_FAILED', options) {
5
+ super(message, options);
6
+ this.name = 'ContextStoreError';
7
+ this.code = code;
8
+ }
9
+ }
10
+
11
+ /** SQLite owns all durable state in one dedicated worker. Requests are copied
12
+ * when submitted and serialized in the worker, including backup and shutdown. */
13
+ export function createSqliteContextStore({ databasePath, vectorExtension = false, faultPoint } = {}) {
14
+ if (typeof databasePath !== 'string' || !databasePath || databasePath.includes('\0')) {
15
+ throw new ContextStoreError('A database path is required', 'CTX_INVALID_INPUT');
16
+ }
17
+ const worker = new Worker(new URL('./sqlite-worker.mjs', import.meta.url), {
18
+ workerData: { databasePath, vectorExtension, faultPoint },
19
+ });
20
+ const pending = new Map();
21
+ let nextId = 0;
22
+ let failure;
23
+ let closing = false;
24
+ let closePromise;
25
+ let resolveExit;
26
+ const exited = new Promise(resolve => { resolveExit = resolve; });
27
+ const fail = error => {
28
+ failure ??= error;
29
+ for (const entry of pending.values()) entry.reject(failure);
30
+ pending.clear();
31
+ };
32
+ worker.on('message', response => {
33
+ const entry = pending.get(response?.id);
34
+ if (!entry) return;
35
+ pending.delete(response.id);
36
+ if (response.error) entry.reject(new ContextStoreError(response.error.message, response.error.code));
37
+ else entry.resolve(response.result);
38
+ });
39
+ worker.on('error', error => fail(new ContextStoreError(error.message, 'CTX_WORKER_FAILED')));
40
+ worker.on('exit', code => {
41
+ if (!closing || code !== 0 || pending.size) fail(new ContextStoreError(`Context worker exited (${code})`, 'CTX_WORKER_EXIT'));
42
+ resolveExit();
43
+ });
44
+ const request = (method, args = {}) => {
45
+ if (failure) return Promise.reject(failure);
46
+ if (closing && method !== 'close') return Promise.reject(new ContextStoreError('Context store is closed', 'CTX_STORE_CLOSED'));
47
+ const id = ++nextId;
48
+ return new Promise((resolve, reject) => {
49
+ pending.set(id, { resolve, reject });
50
+ try { worker.postMessage({ id, method, args }); }
51
+ catch (error) {
52
+ pending.delete(id);
53
+ reject(new ContextStoreError('Context arguments must be cloneable data', 'CTX_INVALID_INPUT', { cause: error }));
54
+ }
55
+ });
56
+ };
57
+ const store = {};
58
+ for (const method of [
59
+ 'initSession', 'readContextSnapshot', 'recordMeasurement', 'appendOriginalBatch', 'readOriginals',
60
+ 'updateSessionSettings', 'listContextVersions', 'commitContextVersion',
61
+ 'restoreContextVersion', 'claimContextJob', 'saveJobProgress', 'readContextJob',
62
+ 'upsertProtectedFact', 'removeProtectedFact', 'readContextOutbox', 'ackContextEvent', 'recordContextNotice',
63
+ 'recordUsage', 'readUsage', 'readContextMutation', 'putBlob', 'readBlob', 'replaceSearchChunks',
64
+ 'searchLexical', 'searchVector', 'exportSession', 'importSession', 'backup', 'health',
65
+ ]) store[method] = args => request(method, args);
66
+ store.close = () => {
67
+ if (closePromise) return closePromise;
68
+ closing = true;
69
+ closePromise = (async () => {
70
+ if (!failure) await request('close');
71
+ await exited;
72
+ })();
73
+ return closePromise;
74
+ };
75
+ return Object.freeze(store);
76
+ }
77
+
78
+ export const appendOriginalBatch = (options, { store }) => store.appendOriginalBatch(options);
79
+ export const commitContextVersion = (options, { store }) => store.commitContextVersion(options);
80
+ export const readContextSnapshot = (options, { store }) => store.readContextSnapshot(options);
81
+ export const recordMeasurement = (options, { store }) => store.recordMeasurement(options);
82
+ export const saveJobProgress = (options, { store }) => store.saveJobProgress(options);
83
+ export const claimContextJob = (options, { store }) => store.claimContextJob(options);
84
+ export const readContextOutbox = (options, { store }) => store.readContextOutbox(options);
85
+ export const ackContextEvent = (options, { store }) => store.ackContextEvent(options);