talos-code 0.0.1 → 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 (401) hide show
  1. package/LICENSE +661 -0
  2. package/README.md +111 -3
  3. package/THIRD_PARTY_NOTICES.md +40 -0
  4. package/dist/archive/zip.js +73 -0
  5. package/dist/args.js +97 -0
  6. package/dist/automations/history-store.js +34 -0
  7. package/dist/automations/policy-store.js +43 -0
  8. package/dist/automations/runner.js +107 -0
  9. package/dist/automations/schedule.js +85 -0
  10. package/dist/automations/windows-task.js +53 -0
  11. package/dist/commands/advanced-cli.js +233 -0
  12. package/dist/commands/checkpoint-cli.js +45 -0
  13. package/dist/commands/config-cli.js +107 -0
  14. package/dist/commands/context.js +17 -0
  15. package/dist/commands/extensions-cli.js +207 -0
  16. package/dist/commands/project-cli.js +74 -0
  17. package/dist/commands/project-commands.js +143 -0
  18. package/dist/commands/provider-cli.js +185 -0
  19. package/dist/commands/services-cli.js +248 -0
  20. package/dist/commands/session-cli.js +171 -0
  21. package/dist/commands/system-cli.js +405 -0
  22. package/dist/config/commands.js +60 -0
  23. package/dist/config/load.js +382 -0
  24. package/dist/config/migrations.js +48 -0
  25. package/dist/config/types.js +11 -0
  26. package/dist/diagnostics/development-log.js +154 -0
  27. package/dist/diagnostics/doctor.js +104 -0
  28. package/dist/diagnostics/redact.js +80 -0
  29. package/dist/diagnostics/zip.js +52 -0
  30. package/dist/errors.js +156 -0
  31. package/dist/events/bridge.js +130 -0
  32. package/dist/extensions/installer.js +178 -0
  33. package/dist/extensions/package-schema.js +24 -0
  34. package/dist/headless/result.js +84 -0
  35. package/dist/headless/run.js +230 -0
  36. package/dist/i18n/en/approval.js +43 -0
  37. package/dist/i18n/en/common.js +9 -0
  38. package/dist/i18n/en/credentials.js +82 -0
  39. package/dist/i18n/en/errors.js +246 -0
  40. package/dist/i18n/en/firstrun.js +89 -0
  41. package/dist/i18n/en/providers.js +37 -0
  42. package/dist/i18n/en/screen.js +736 -0
  43. package/dist/i18n/en/tools.js +127 -0
  44. package/dist/i18n/en.js +14 -0
  45. package/dist/i18n/error-view.js +307 -0
  46. package/dist/i18n/index.js +19 -0
  47. package/dist/i18n/kernel-map.js +139 -0
  48. package/dist/io.js +45 -0
  49. package/dist/main.js +330 -0
  50. package/dist/paths.js +41 -0
  51. package/dist/protocol/v2/codec.js +9 -0
  52. package/dist/protocol/v2/events.js +555 -0
  53. package/dist/protocol/v2/index.js +4 -0
  54. package/dist/protocol/v2/replay.js +28 -0
  55. package/dist/protocol/v2/types.js +1 -0
  56. package/dist/provider/control-plane.js +135 -0
  57. package/dist/provider/environment-keys.js +275 -0
  58. package/dist/provider/health.js +110 -0
  59. package/dist/provider/missing-key.js +48 -0
  60. package/dist/provider/model-catalog.js +168 -0
  61. package/dist/provider/provider-text.js +13 -0
  62. package/dist/provider/store.js +95 -0
  63. package/dist/provider/system-keyring.js +214 -0
  64. package/dist/runtime/active-run.js +63 -0
  65. package/dist/runtime/agent-tree.js +74 -0
  66. package/dist/runtime/attachments.js +84 -0
  67. package/dist/runtime/brokered-executor.js +395 -0
  68. package/dist/runtime/context-status.js +76 -0
  69. package/dist/runtime/create-runtime.js +111 -0
  70. package/dist/runtime/model-profile.js +361 -0
  71. package/dist/runtime/output-store.js +137 -0
  72. package/dist/runtime/provider-attempts.js +185 -0
  73. package/dist/runtime/replay-buffer.js +153 -0
  74. package/dist/runtime/repo.js +95 -0
  75. package/dist/runtime/session-facade.js +135 -0
  76. package/dist/runtime/session-summary.js +125 -0
  77. package/dist/runtime/supervisor.js +262 -0
  78. package/dist/runtime/talos-composition.js +1006 -0
  79. package/dist/runtime/types.js +5 -0
  80. package/dist/runtime/usage-snapshot.js +82 -0
  81. package/dist/security/auto-classifier.js +38 -0
  82. package/dist/security/credential-free-environment.js +54 -0
  83. package/dist/security/evaluate.js +243 -0
  84. package/dist/security/execution-backends.js +236 -0
  85. package/dist/security/execution-broker.js +102 -0
  86. package/dist/security/forge-scan.js +74 -0
  87. package/dist/security/from-approval.js +39 -0
  88. package/dist/security/mxc-execution-backend.js +281 -0
  89. package/dist/security/permission-engine.js +138 -0
  90. package/dist/security/permission-explanation.js +54 -0
  91. package/dist/security/persist.js +179 -0
  92. package/dist/security/plugin-guard.js +230 -0
  93. package/dist/security/process-tree-evidence-store.js +74 -0
  94. package/dist/security/process-tree-probe.js +554 -0
  95. package/dist/security/project-resource-inventory.js +186 -0
  96. package/dist/security/project-trust-gate.js +38 -0
  97. package/dist/security/project-trust.js +367 -0
  98. package/dist/security/rule-parser.js +201 -0
  99. package/dist/security/shell-segmentation.js +68 -0
  100. package/dist/security/trust-authority.js +324 -0
  101. package/dist/security/types.js +1 -0
  102. package/dist/security/workspace-identity.js +102 -0
  103. package/dist/services/automation-facade.js +59 -0
  104. package/dist/services/forge-facade.js +77 -0
  105. package/dist/services/hook-facade.js +240 -0
  106. package/dist/services/index.js +16 -0
  107. package/dist/services/library-facade.js +174 -0
  108. package/dist/services/mcp-facade.js +348 -0
  109. package/dist/services/memory-facade.js +126 -0
  110. package/dist/services/notes-facade.js +157 -0
  111. package/dist/services/plugin-facade.js +308 -0
  112. package/dist/services/research-facade.js +110 -0
  113. package/dist/services/task-board-facade.js +236 -0
  114. package/dist/services/workflow-catalog.js +246 -0
  115. package/dist/sessions/export-format.js +98 -0
  116. package/dist/sessions/metadata-store.js +160 -0
  117. package/dist/sessions/share.js +122 -0
  118. package/dist/sessions/transfer.js +16 -0
  119. package/dist/subcommands.js +62 -0
  120. package/dist/tui/agent-roster.js +36 -0
  121. package/dist/tui/app.js +3761 -0
  122. package/dist/tui/approval.js +36 -0
  123. package/dist/tui/boot/boot-sequence.js +76 -0
  124. package/dist/tui/boot/cinematic.js +243 -0
  125. package/dist/tui/boot/desktop-logo.js +82 -0
  126. package/dist/tui/boot.js +3 -0
  127. package/dist/tui/busy-input.js +58 -0
  128. package/dist/tui/catalog-service.js +559 -0
  129. package/dist/tui/components/assistant-stream.js +1 -0
  130. package/dist/tui/components/command-menu.js +68 -0
  131. package/dist/tui/components/composer.js +219 -0
  132. package/dist/tui/components/diff.js +35 -0
  133. package/dist/tui/components/footer.js +48 -0
  134. package/dist/tui/components/header.js +6 -0
  135. package/dist/tui/components/markdown.js +305 -0
  136. package/dist/tui/components/status-indicator.js +32 -0
  137. package/dist/tui/components/terminal-shell.js +205 -0
  138. package/dist/tui/components/thinking-row.js +19 -0
  139. package/dist/tui/components/tool-row.js +97 -0
  140. package/dist/tui/components/transcript-virtualizer.js +165 -0
  141. package/dist/tui/components/transcript.js +43 -0
  142. package/dist/tui/diff-model.js +77 -0
  143. package/dist/tui/editor-history.js +21 -0
  144. package/dist/tui/editor.js +210 -0
  145. package/dist/tui/event-adapter.js +436 -0
  146. package/dist/tui/exit-output.js +58 -0
  147. package/dist/tui/external-editor.js +53 -0
  148. package/dist/tui/file-completion.js +89 -0
  149. package/dist/tui/focus-manager.js +5 -0
  150. package/dist/tui/highlight.js +30 -0
  151. package/dist/tui/input-router.js +18 -0
  152. package/dist/tui/interrupt.js +99 -0
  153. package/dist/tui/keybindings.js +194 -0
  154. package/dist/tui/keymap-resolver.js +91 -0
  155. package/dist/tui/launch-state.js +139 -0
  156. package/dist/tui/line-diff.js +57 -0
  157. package/dist/tui/live-activity.js +45 -0
  158. package/dist/tui/metrics.js +123 -0
  159. package/dist/tui/onboarding.js +36 -0
  160. package/dist/tui/overlays/agent-tree.js +39 -0
  161. package/dist/tui/overlays/approval-dialog.js +640 -0
  162. package/dist/tui/overlays/automation-center.js +51 -0
  163. package/dist/tui/overlays/checkpoint-picker.js +47 -0
  164. package/dist/tui/overlays/context-inspector.js +36 -0
  165. package/dist/tui/overlays/effort-line.js +110 -0
  166. package/dist/tui/overlays/forge-center.js +46 -0
  167. package/dist/tui/overlays/help-dialog.js +16 -0
  168. package/dist/tui/overlays/history-picker.js +37 -0
  169. package/dist/tui/overlays/hook-center.js +70 -0
  170. package/dist/tui/overlays/library-center.js +55 -0
  171. package/dist/tui/overlays/mcp-center.js +60 -0
  172. package/dist/tui/overlays/memory-center.js +63 -0
  173. package/dist/tui/overlays/model-picker.js +72 -0
  174. package/dist/tui/overlays/notes-center.js +53 -0
  175. package/dist/tui/overlays/overlay-host.js +8 -0
  176. package/dist/tui/overlays/plugin-center.js +76 -0
  177. package/dist/tui/overlays/provider-picker.js +145 -0
  178. package/dist/tui/overlays/queue-editor.js +32 -0
  179. package/dist/tui/overlays/research-center.js +59 -0
  180. package/dist/tui/overlays/scroll-window.js +234 -0
  181. package/dist/tui/overlays/session-picker.js +115 -0
  182. package/dist/tui/overlays/tasks-center.js +83 -0
  183. package/dist/tui/overlays/theme-picker.js +21 -0
  184. package/dist/tui/overlays/transcript-search.js +58 -0
  185. package/dist/tui/overlays/trust-center.js +29 -0
  186. package/dist/tui/overlays/workflow-center.js +46 -0
  187. package/dist/tui/project-file-index.js +214 -0
  188. package/dist/tui/project-references.js +85 -0
  189. package/dist/tui/project-trust-prompt.js +287 -0
  190. package/dist/tui/prompt-history-store.js +116 -0
  191. package/dist/tui/queue-store.js +110 -0
  192. package/dist/tui/regions/budget.js +59 -0
  193. package/dist/tui/regions/views.js +96 -0
  194. package/dist/tui/render-coordinator.js +148 -0
  195. package/dist/tui/render-scheduler.js +4 -0
  196. package/dist/tui/run.js +69 -0
  197. package/dist/tui/selection-list.js +29 -0
  198. package/dist/tui/session-controller.js +778 -0
  199. package/dist/tui/session-export.js +54 -0
  200. package/dist/tui/shell-input.js +35 -0
  201. package/dist/tui/shell-layout.js +48 -0
  202. package/dist/tui/shell-model.js +98 -0
  203. package/dist/tui/slash-commands.js +80 -0
  204. package/dist/tui/state.js +151 -0
  205. package/dist/tui/status-bar.js +125 -0
  206. package/dist/tui/status-view.js +40 -0
  207. package/dist/tui/terminal-capabilities.js +9 -0
  208. package/dist/tui/terminal-session.js +11 -0
  209. package/dist/tui/text-width.js +66 -0
  210. package/dist/tui/theme-catalog.js +25 -0
  211. package/dist/tui/theme-store.js +23 -0
  212. package/dist/tui/theme.js +23 -0
  213. package/dist/tui/tool-display.js +135 -0
  214. package/dist/tui/tool-facts.js +1 -0
  215. package/dist/tui/tools/bash-renderer.js +32 -0
  216. package/dist/tui/tools/change.js +61 -0
  217. package/dist/tui/tools/edit-renderer.js +17 -0
  218. package/dist/tui/tools/generic-renderer.js +13 -0
  219. package/dist/tui/tools/list-renderer.js +14 -0
  220. package/dist/tui/tools/read-renderer.js +13 -0
  221. package/dist/tui/tools/registry.js +20 -0
  222. package/dist/tui/tools/row-format.js +187 -0
  223. package/dist/tui/tools/search-renderer.js +38 -0
  224. package/dist/tui/tools/shared.js +97 -0
  225. package/dist/tui/tools/write-renderer.js +15 -0
  226. package/dist/tui/transcript-model.js +441 -0
  227. package/dist/tui/ui-preferences.js +79 -0
  228. package/dist/tui/usage-view.js +77 -0
  229. package/dist/tui/vim-mode.js +99 -0
  230. package/dist/update/check.js +15 -0
  231. package/dist/update/npm.js +51 -0
  232. package/dist/update/run.js +129 -0
  233. package/dist/version.js +2 -0
  234. package/dist/workspace/checkpoint-store.js +210 -0
  235. package/dist/workspace/checkpoint.js +413 -0
  236. package/dist/workspace/restore.js +232 -0
  237. package/package.json +63 -5
  238. package/vendor/context-engine/package.json +11 -0
  239. package/vendor/context-engine/src/compaction-planner.mjs +57 -0
  240. package/vendor/context-engine/src/contracts.mjs +48 -0
  241. package/vendor/context-engine/src/engine.mjs +445 -0
  242. package/vendor/context-engine/src/node/context-export.mjs +164 -0
  243. package/vendor/context-engine/src/node/legacy-import.mjs +92 -0
  244. package/vendor/context-engine/src/node/migrations/001-context.sql +126 -0
  245. package/vendor/context-engine/src/node/sqlite-store.mjs +85 -0
  246. package/vendor/context-engine/src/node/sqlite-worker.mjs +559 -0
  247. package/vendor/context-engine/src/profiles.mjs +10 -0
  248. package/vendor/context-engine/src/retrieval.mjs +104 -0
  249. package/vendor/context-engine/src/summary.mjs +97 -0
  250. package/vendor/context-engine/src/usage.mjs +34 -0
  251. package/vendor/harness-ui/package.json +38 -0
  252. package/vendor/harness-ui/src/acp-agent.mjs +350 -0
  253. package/vendor/harness-ui/src/agent-service.mjs +2188 -0
  254. package/vendor/harness-ui/src/agui-events.mjs +452 -0
  255. package/vendor/harness-ui/src/ambiente-solo-server.mjs +121 -0
  256. package/vendor/harness-ui/src/artifact-store.mjs +39 -0
  257. package/vendor/harness-ui/src/assistenza.mjs +123 -0
  258. package/vendor/harness-ui/src/automation-scheduler.mjs +69 -0
  259. package/vendor/harness-ui/src/automation-store.mjs +145 -0
  260. package/vendor/harness-ui/src/browser-annota.mjs +639 -0
  261. package/vendor/harness-ui/src/browser-frame.mjs +211 -0
  262. package/vendor/harness-ui/src/browser-proxy-universale.mjs +519 -0
  263. package/vendor/harness-ui/src/browser-proxy.mjs +87 -0
  264. package/vendor/harness-ui/src/browser-sessione-viva.mjs +329 -0
  265. package/vendor/harness-ui/src/browser-stream.mjs +445 -0
  266. package/vendor/harness-ui/src/browser-vivo.mjs +694 -0
  267. package/vendor/harness-ui/src/chat-image-attachments.mjs +72 -0
  268. package/vendor/harness-ui/src/config.mjs +697 -0
  269. package/vendor/harness-ui/src/contesto-del-progetto.mjs +385 -0
  270. package/vendor/harness-ui/src/context-asset-adapter.mjs +72 -0
  271. package/vendor/harness-ui/src/context-desktop-service.mjs +253 -0
  272. package/vendor/harness-ui/src/context-embedding-runtime.mjs +252 -0
  273. package/vendor/harness-ui/src/context-inference-scheduler.mjs +81 -0
  274. package/vendor/harness-ui/src/context-native-compaction.mjs +75 -0
  275. package/vendor/harness-ui/src/context-provider-adapter.mjs +141 -0
  276. package/vendor/harness-ui/src/context-runtime.mjs +118 -0
  277. package/vendor/harness-ui/src/context-token-counters.mjs +184 -0
  278. package/vendor/harness-ui/src/context-tool-catalog.mjs +86 -0
  279. package/vendor/harness-ui/src/context-tool-output.mjs +72 -0
  280. package/vendor/harness-ui/src/costo-elenco.mjs +252 -0
  281. package/vendor/harness-ui/src/custom-task.mjs +171 -0
  282. package/vendor/harness-ui/src/doctor.mjs +142 -0
  283. package/vendor/harness-ui/src/document-filename.mjs +97 -0
  284. package/vendor/harness-ui/src/document-generator.mjs +493 -0
  285. package/vendor/harness-ui/src/document-report.mjs +331 -0
  286. package/vendor/harness-ui/src/duckduckgo-search.mjs +155 -0
  287. package/vendor/harness-ui/src/elenco-profondo.mjs +337 -0
  288. package/vendor/harness-ui/src/favicon-proxy.mjs +113 -0
  289. package/vendor/harness-ui/src/forge-contract.mjs +221 -0
  290. package/vendor/harness-ui/src/frequent-dirs.mjs +134 -0
  291. package/vendor/harness-ui/src/generated-image-store.mjs +147 -0
  292. package/vendor/harness-ui/src/generation-idle.mjs +332 -0
  293. package/vendor/harness-ui/src/gguf-header.mjs +207 -0
  294. package/vendor/harness-ui/src/git-service.mjs +626 -0
  295. package/vendor/harness-ui/src/gitignore-elenco.mjs +604 -0
  296. package/vendor/harness-ui/src/harness-receipt-keypair.mjs +207 -0
  297. package/vendor/harness-ui/src/hf-direct-transfer.mjs +170 -0
  298. package/vendor/harness-ui/src/hf-hub-client.mjs +106 -0
  299. package/vendor/harness-ui/src/hf-image-proxy.mjs +105 -0
  300. package/vendor/harness-ui/src/hf-model-transfer.mjs +245 -0
  301. package/vendor/harness-ui/src/hook-registry.mjs +186 -0
  302. package/vendor/harness-ui/src/http-app.mjs +6259 -0
  303. package/vendor/harness-ui/src/http-lifecycle.mjs +132 -0
  304. package/vendor/harness-ui/src/id-archivio.mjs +27 -0
  305. package/vendor/harness-ui/src/image-generator.mjs +143 -0
  306. package/vendor/harness-ui/src/istruzioni-di-progetto.mjs +234 -0
  307. package/vendor/harness-ui/src/kernel/dist/kernelPerIlBanco.js +518 -0
  308. package/vendor/harness-ui/src/kernel/talosHarness.mjs +10437 -0
  309. package/vendor/harness-ui/src/library-policy-store.mjs +175 -0
  310. package/vendor/harness-ui/src/library-store.mjs +652 -0
  311. package/vendor/harness-ui/src/llama-server-supervisor.mjs +629 -0
  312. package/vendor/harness-ui/src/local-model-store.mjs +339 -0
  313. package/vendor/harness-ui/src/local-runtime-contract.mjs +66 -0
  314. package/vendor/harness-ui/src/local-runtime-events.mjs +44 -0
  315. package/vendor/harness-ui/src/local-runtime-llama-server.mjs +244 -0
  316. package/vendor/harness-ui/src/local-runtime-probe.mjs +401 -0
  317. package/vendor/harness-ui/src/machine-capacity.mjs +66 -0
  318. package/vendor/harness-ui/src/mappa-cartelle.mjs +491 -0
  319. package/vendor/harness-ui/src/mcp-client.mjs +98 -0
  320. package/vendor/harness-ui/src/mcp-registry.mjs +157 -0
  321. package/vendor/harness-ui/src/mcp-session.mjs +177 -0
  322. package/vendor/harness-ui/src/memory-store.mjs +227 -0
  323. package/vendor/harness-ui/src/model-catalog-models-dev.mjs +276 -0
  324. package/vendor/harness-ui/src/model-catalog.mjs +129 -0
  325. package/vendor/harness-ui/src/model-destination.mjs +189 -0
  326. package/vendor/harness-ui/src/modifica-ancorata.mjs +177 -0
  327. package/vendor/harness-ui/src/native-provider-adapter.mjs +205 -0
  328. package/vendor/harness-ui/src/notes-store.mjs +250 -0
  329. package/vendor/harness-ui/src/openai-compatible-runtime.mjs +428 -0
  330. package/vendor/harness-ui/src/openrouter-oauth.mjs +339 -0
  331. package/vendor/harness-ui/src/path-policy.mjs +442 -0
  332. package/vendor/harness-ui/src/plugin-registry.mjs +780 -0
  333. package/vendor/harness-ui/src/plugin-session.mjs +180 -0
  334. package/vendor/harness-ui/src/process-policy.mjs +345 -0
  335. package/vendor/harness-ui/src/prompt-enhancer-provider.mjs +94 -0
  336. package/vendor/harness-ui/src/provider-auth-cloud.mjs +95 -0
  337. package/vendor/harness-ui/src/provider-credential-store.mjs +541 -0
  338. package/vendor/harness-ui/src/provider-probe.mjs +582 -0
  339. package/vendor/harness-ui/src/provider-registry.mjs +1633 -0
  340. package/vendor/harness-ui/src/pty-terminal.mjs +312 -0
  341. package/vendor/harness-ui/src/public-problem.mjs +109 -0
  342. package/vendor/harness-ui/src/research/card.mjs +235 -0
  343. package/vendor/harness-ui/src/research/citations.mjs +142 -0
  344. package/vendor/harness-ui/src/research/collector.mjs +275 -0
  345. package/vendor/harness-ui/src/research/deposito-a-pezzi.mjs +139 -0
  346. package/vendor/harness-ui/src/research/dossier.mjs +114 -0
  347. package/vendor/harness-ui/src/research/esportazioni.mjs +560 -0
  348. package/vendor/harness-ui/src/research/fetch-cache.mjs +465 -0
  349. package/vendor/harness-ui/src/research/fidelity.mjs +122 -0
  350. package/vendor/harness-ui/src/research/independence.mjs +159 -0
  351. package/vendor/harness-ui/src/research/ledger.mjs +166 -0
  352. package/vendor/harness-ui/src/research/markdown-server.mjs +565 -0
  353. package/vendor/harness-ui/src/research/narration.mjs +181 -0
  354. package/vendor/harness-ui/src/research/open-cards.mjs +131 -0
  355. package/vendor/harness-ui/src/research/opposing.mjs +305 -0
  356. package/vendor/harness-ui/src/research/outline.mjs +111 -0
  357. package/vendor/harness-ui/src/research/page-budget.mjs +209 -0
  358. package/vendor/harness-ui/src/research/pdf.mjs +291 -0
  359. package/vendor/harness-ui/src/research/plan.mjs +301 -0
  360. package/vendor/harness-ui/src/research/raccolta-viva.mjs +452 -0
  361. package/vendor/harness-ui/src/research/recheck-document.mjs +69 -0
  362. package/vendor/harness-ui/src/research/recheck-history.mjs +192 -0
  363. package/vendor/harness-ui/src/research/recheck.mjs +194 -0
  364. package/vendor/harness-ui/src/research/report.mjs +203 -0
  365. package/vendor/harness-ui/src/research/run.mjs +527 -0
  366. package/vendor/harness-ui/src/research/synthesis.mjs +318 -0
  367. package/vendor/harness-ui/src/research/verification.mjs +572 -0
  368. package/vendor/harness-ui/src/research-orchestrator.mjs +2679 -0
  369. package/vendor/harness-ui/src/research-store.mjs +1133 -0
  370. package/vendor/harness-ui/src/runtime-build-manifest.mjs +26 -0
  371. package/vendor/harness-ui/src/runtime-contract.mjs +59 -0
  372. package/vendor/harness-ui/src/runtime-owner-adapter.mjs +1348 -0
  373. package/vendor/harness-ui/src/runtime-owner-contract.mjs +32 -0
  374. package/vendor/harness-ui/src/scheda-di-lavoro.mjs +249 -0
  375. package/vendor/harness-ui/src/search-source-store.mjs +172 -0
  376. package/vendor/harness-ui/src/session-registry.mjs +6095 -0
  377. package/vendor/harness-ui/src/session-store.mjs +220 -0
  378. package/vendor/harness-ui/src/sessione-pronta.mjs +73 -0
  379. package/vendor/harness-ui/src/setup-stato.mjs +31 -0
  380. package/vendor/harness-ui/src/sezioni-istruzioni.mjs +204 -0
  381. package/vendor/harness-ui/src/skill-registry.mjs +120 -0
  382. package/vendor/harness-ui/src/sse-replay-coalescente.mjs +0 -0
  383. package/vendor/harness-ui/src/static-files.mjs +96 -0
  384. package/vendor/harness-ui/src/stream-partition.mjs +123 -0
  385. package/vendor/harness-ui/src/subagent-orchestrator.mjs +453 -0
  386. package/vendor/harness-ui/src/task-catalog.mjs +65 -0
  387. package/vendor/harness-ui/src/tasks-store.mjs +220 -0
  388. package/vendor/harness-ui/src/terminal-registry.mjs +312 -0
  389. package/vendor/harness-ui/src/terminal-ws.mjs +170 -0
  390. package/vendor/harness-ui/src/tool-forge-store.mjs +299 -0
  391. package/vendor/harness-ui/src/tool-schema-normalize.mjs +100 -0
  392. package/vendor/harness-ui/src/usage-cache.mjs +315 -0
  393. package/vendor/harness-ui/src/workspace-browser.mjs +213 -0
  394. package/vendor/harness-ui/src/workspace-context.mjs +124 -0
  395. package/vendor/harness-ui/src/workspace-disk.mjs +62 -0
  396. package/vendor/harness-ui/src/workspace-files.mjs +589 -0
  397. package/vendor/harness-ui/src/workspace-info.mjs +189 -0
  398. package/vendor/harness-ui/src/workspace-launch-store.mjs +150 -0
  399. package/vendor/harness-ui/src/workspace-tree.mjs +67 -0
  400. package/vendor/harness-ui/src/workspace-watcher.mjs +161 -0
  401. package/vendor/manifest.json +170 -0
@@ -0,0 +1,318 @@
1
+ /*
2
+ * PORTO FEDELE di AVM/mobile/src/lib/research/researchSynthesis.ts (282 righe, 11/09/2026).
3
+ *
4
+ * Trasformare quello che è stato raccolto in un rapporto le cui citazioni si
5
+ * possano controllare.
6
+ *
7
+ * La seconda metà di R-3, e la metà che decide se R-4 sia possibile del tutto.
8
+ * Il guasto misurato del campo non è che i modelli citino troppo poco — è che
9
+ * quello che citano non si può verificare: una risposta prende 0,94 per
10
+ * sembrare ancorata e 0,61 per essere davvero sostenuta dalla fonte che nomina,
11
+ * e ogni prodotto spedisce il primo numero. Le citazioni allucinate stanno fra
12
+ * l'11% e il 57% a seconda di chi conta.
13
+ *
14
+ * Quindi la forma dell'uscita non è prosa con note a piè di pagina. Ogni
15
+ * affermazione porta l'id della fonte su cui si appoggia E il passaggio su cui
16
+ * si appoggia, che è la struttura su cui il campo si è assestato nel 2026 — e
17
+ * il passaggio viene poi controllato, qui, contro il testo che abbiamo tenuto
18
+ * quando abbiamo letto la pagina.
19
+ *
20
+ * Quel controllo è tutta la ragione per cui il raccoglitore tiene il testo. È
21
+ * meccanico, gratis, non coinvolge nessun modello e non ha opinioni, e prende
22
+ * da solo la categoria peggiore: la citazione che non è mai stata sulla pagina.
23
+ * Quello che non può giudicare — se un passaggio vero SOSTENGA davvero
24
+ * l'affermazione — è lasciato a R-4 e a un modello diverso da quello che ha
25
+ * scritto il rapporto, perché l'autore è il giudice peggiore possibile della
26
+ * propria citazione.
27
+ *
28
+ * Niente che fallisca viene nascosto. Un'affermazione la cui citazione non è
29
+ * nella fonte è marcata `unsupported` e mostrata lo stesso, perché un rapporto
30
+ * che butta in silenzio le sue affermazioni più deboli dice al lettore che non
31
+ * ne aveva.
32
+ */
33
+
34
+ import { TALOS_RESEARCH_PAGE_BUDGET, talosResearchPageBudget } from './page-budget.mjs';
35
+
36
+ /**
37
+ * @typedef {import('./collector.mjs').TalosResearchCollection} TalosResearchCollection
38
+ * @typedef {import('./collector.mjs').TalosResearchSource} TalosResearchSource
39
+ */
40
+
41
+ /**
42
+ * @typedef {object} TalosResearchClaim
43
+ * @property {string} text
44
+ * @property {number} sourceIndex La fonte su cui si appoggia, col numero che il prompt le ha dato.
45
+ * @property {string} quote Il passaggio che il modello dice la sostenga, alla lettera.
46
+ * @property {'yes' | 'no' | 'unchecked'} quotePresent
47
+ * L2, deciso qui e adesso: quel passaggio è davvero nel testo che abbiamo
48
+ * tenuto? `unchecked` vuol dire che non c'era nessuna fonte contro cui
49
+ * controllare — un'affermazione che cita un numero che nessuno ha consegnato.
50
+ * Non è una promozione.
51
+ */
52
+
53
+ /**
54
+ * @typedef {object} TalosResearchReport
55
+ * @property {string} summary
56
+ * @property {readonly TalosResearchClaim[]} claims
57
+ * @property {readonly TalosResearchSource[]} sources Le fonti nell'ordine in cui il prompt le ha numerate, così le citazioni risolvono.
58
+ */
59
+
60
+ /*
61
+ * L6 (11/09/2026, approvato dall'owner con il numero davanti: +16.500 token per corsa, +3,4 %, per
62
+ * 3,75× più prove) — il budget per fonte vive in `page-budget.mjs`, misurato su 430 pagine vere:
63
+ * 15.000 caratteri testa+coda, contro i 4.000 di sola testa di prima, che consegnavano il 26 % dei
64
+ * caratteri e facevano arrivare intera 1 pagina su 14. Finché questa riga non c'era, il budget era
65
+ * calcolato e non letto — un cancello spento (lezione «il cancello semantico era spento da sempre»).
66
+ * Se la fonte porta già la finestra calcolata dal collettore (`source.window`) si usa quella; per le
67
+ * fonti di un dossier vecchio, senza finestra, la si calcola qui con lo stesso tetto.
68
+ */
69
+
70
+ /**
71
+ * ⛔⛔ DOPPIONI-01 — la stessa pagina, contata una volta per linea d'indagine.
72
+ *
73
+ * FOTOGRAFATO sul Pad il 2026-08-20. Il rapporto diceva «10 fonti», e
74
+ * l'elenco portava `wikipedia.org` due volte, `ultralytics.com` due volte,
75
+ * `ibm.com` due volte, `huggingface.co` due volte: stesso titolo, stessa
76
+ * data, stesso indirizzo. Sei pagine distinte contate dieci.
77
+ *
78
+ * Due rami del piano cercano cose diverse e trovano la stessa pagina — è
79
+ * normale e va bene. Quello che non va bene è metterla due volte in fila.
80
+ *
81
+ * ## Cosa sporcava, oltre al conteggio
82
+ *
83
+ * · Il modello la vedeva come `[1]` e `[6]`: due numeri per una pagina,
84
+ * e due affermazioni «da fonti diverse» che vengono dalla stessa.
85
+ * · «6 su 10 indipendenti» aveva numeratore e denominatore entrambi
86
+ * gonfiati, cioè la misura che esiste per non gonfiare i numeri era la
87
+ * prima a essere gonfiata.
88
+ * · Il testo della pagina finiva nel prompt due volte, pagato due volte.
89
+ *
90
+ * ⛔ Si tiene la copia col TESTO PIÙ LUNGO, non la prima: due rami possono
91
+ * aver letto la stessa pagina con fortuna diversa, e la più povera
92
+ * toglierebbe passaggi che l'altra aveva.
93
+ *
94
+ * @param {readonly TalosResearchCollection[]} collections
95
+ * @returns {readonly TalosResearchSource[]}
96
+ */
97
+ export function talosResearchDistinctSources(collections) {
98
+ /** @type {Map<string, TalosResearchSource>} */
99
+ const migliori = new Map();
100
+ /** @type {string[]} */
101
+ const ordine = [];
102
+
103
+ for (const collection of collections) {
104
+ for (const source of collection.sources) {
105
+ const chiave = chiaveDi(source.url);
106
+ const gia = migliori.get(chiave);
107
+ if (!gia) {
108
+ migliori.set(chiave, source);
109
+ ordine.push(chiave);
110
+ continue;
111
+ }
112
+ if (source.text.length > gia.text.length) migliori.set(chiave, source);
113
+ }
114
+ }
115
+
116
+ return ordine.map((chiave) => migliori.get(chiave));
117
+ }
118
+
119
+ /**
120
+ * L'indirizzo ridotto a ciò che identifica la PAGINA.
121
+ *
122
+ * ⛔ Il frammento non identifica niente — `#section` è un punto della
123
+ * stessa pagina — e la barra finale nemmeno. La query invece resta: su
124
+ * moltissimi siti `?id=12` e `?id=13` sono due articoli diversi, e
125
+ * toglierla fonderebbe pagine che non c'entrano.
126
+ *
127
+ * Un indirizzo illeggibile resta sé stesso: meglio un doppione che una
128
+ * fusione sbagliata.
129
+ *
130
+ * @param {string} url
131
+ * @returns {string}
132
+ */
133
+ function chiaveDi(url) {
134
+ try {
135
+ const letto = new URL(url);
136
+ letto.hash = '';
137
+ const testo = letto.toString();
138
+ return testo.endsWith('/') ? testo.slice(0, -1) : testo;
139
+ } catch {
140
+ return url;
141
+ }
142
+ }
143
+
144
+ /**
145
+ * L'istruzione, e la forma che pretende.
146
+ *
147
+ * Scritta come un formato stretto invece che come una richiesta di buon
148
+ * comportamento: «cita le tue fonti» produce citazioni plausibili, e uno schema
149
+ * ne produce di controllabili. Al modello si dice che il passaggio verrà
150
+ * verificato meccanicamente, perché un modello che sa che la citazione è
151
+ * controllata smette di inventare citazioni — e perché è vero, che è la ragione
152
+ * migliore.
153
+ *
154
+ * @param {string} question
155
+ * @param {readonly TalosResearchCollection[]} collections
156
+ * @returns {{prompt: string, sources: readonly TalosResearchSource[]}}
157
+ */
158
+ export function talosResearchSynthesisPrompt(question, collections) {
159
+ const sources = talosResearchDistinctSources(collections);
160
+ const catalogue = sources.map((source, index) => [
161
+ `[${index + 1}] ${source.title}`,
162
+ source.url,
163
+ source.publishedAt ? `data dichiarata: ${source.publishedAt}` : 'data non dichiarata',
164
+ source.obtained === 'snippet' ? 'ATTENZIONE: solo estratto dal motore di ricerca' : '',
165
+ source.window ?? talosResearchPageBudget(source.text, { cap: TALOS_RESEARCH_PAGE_BUDGET }).window,
166
+ ].filter(Boolean).join('\n')).join('\n\n---\n\n');
167
+
168
+ const prompt = [
169
+ `Domanda: ${question}`,
170
+ '',
171
+ 'Fonti raccolte, numerate:',
172
+ '',
173
+ catalogue,
174
+ '',
175
+ 'Scrivi un rapporto rispettando ESATTAMENTE questo formato:',
176
+ '',
177
+ 'SINTESI: una o due frasi che rispondono alla domanda.',
178
+ '',
179
+ // Scritto come un esempio invece che come un segnaposto etichettato perché
180
+ // uno etichettato viene ricopiato: un giro vero è tornato con sei righe che
181
+ // cominciavano con la parola AFFERMAZIONE, e un rapporto in cui ogni
182
+ // affermazione è il nome del campo è peggio di nessun rapporto.
183
+ 'Poi una riga per ogni affermazione, in questa forma:',
184
+ 'affermazione | numero della fonte | "passaggio copiato dalla fonte"',
185
+ '',
186
+ 'Per esempio:',
187
+ 'La torre è alta 96 metri | 3 | "la torre misura 96 metri dalla base"',
188
+ '',
189
+ 'Regole:',
190
+ '- scrivi l’affermazione vera e propria, non la parola «affermazione».',
191
+ '- il passaggio deve essere copiato alla lettera dalla fonte che citi:',
192
+ ' viene confrontato con il testo che abbiamo salvato, meccanicamente.',
193
+ '- se le fonti non bastano a sostenere qualcosa, dillo invece di dedurlo.',
194
+ '- niente affermazioni senza fonte.',
195
+ ].join('\n');
196
+
197
+ return { prompt, sources };
198
+ }
199
+
200
+ /** Il nome del campo, restituito al posto di un'affermazione. Mai un'affermazione. */
201
+ const PLACEHOLDER = /^[<[(]?\s*(l['’]?\s*)?affermazione\s*(vera e propria)?\s*[>\])]?$/i;
202
+
203
+ /**
204
+ * R11 — una domanda di seguito, risposta con quello che era già stato pagato.
205
+ *
206
+ * La stessa forma della sintesi, perché dev'essere controllata allo stesso
207
+ * modo: una domanda di seguito le cui citazioni nessuno ha verificato sarebbe
208
+ * l'anello debole di un dossier per il resto verificato. Quello che cambia è
209
+ * l'istruzione permanente — non sta avvenendo nessuna ricerca, quindi le fonti
210
+ * sono tutto quello che ci sarà mai, e al modello si dice di dirlo invece di
211
+ * riempire il buco a memoria.
212
+ *
213
+ * Con tutto già su disco questo costa una chiamata al modello e nessuna rete
214
+ * per le fonti; sul motore del dispositivo non costa niente del tutto. Altrove
215
+ * una domanda di seguito fa ripartire l'intera ricerca.
216
+ *
217
+ * @param {string} question
218
+ * @param {readonly TalosResearchCollection[]} collections
219
+ * @returns {{prompt: string, sources: readonly TalosResearchSource[]}}
220
+ */
221
+ export function talosResearchFollowUpPrompt(question, collections) {
222
+ const built = talosResearchSynthesisPrompt(question, collections);
223
+ return {
224
+ sources: built.sources,
225
+ prompt: [
226
+ 'Queste sono le fonti già raccolte in una ricerca precedente.',
227
+ 'NON è stata fatta nessuna ricerca nuova e non ce ne sarà: quello che',
228
+ 'c’è qui sotto è tutto quello che esiste.',
229
+ '',
230
+ built.prompt,
231
+ '',
232
+ '- se queste fonti non rispondono alla domanda, scrivilo nella SINTESI',
233
+ ' invece di rispondere da quello che sai: qui si risponde solo con le fonti.',
234
+ ].join('\n'),
235
+ };
236
+ }
237
+
238
+ /**
239
+ * Spazi e virgolette differiscono fra una pagina e un modello. Il significato no.
240
+ *
241
+ * @param {string} text
242
+ * @returns {string}
243
+ */
244
+ function comparable(text) {
245
+ return text
246
+ .replace(/[‘’“”]/g, (mark) => (mark === '‘' || mark === '’' ? "'" : '"'))
247
+ .replace(/\s+/g, ' ')
248
+ .trim()
249
+ .toLowerCase();
250
+ }
251
+
252
+ /**
253
+ * Legge la risposta del modello, e controlla ogni citazione mentre lo fa.
254
+ *
255
+ * Le righe che non stanno nel formato vengono ignorate invece che salvate: un
256
+ * analizzatore che indovina cosa volesse dire una citazione malformata è un
257
+ * analizzatore che inventa attribuzioni, che è il guasto a cui tutto questo
258
+ * file mira.
259
+ *
260
+ * @param {string} answer
261
+ * @param {readonly TalosResearchSource[]} sources
262
+ * @returns {TalosResearchReport}
263
+ */
264
+ export function talosResearchParseSynthesis(answer, sources) {
265
+ const lines = answer.split('\n').map((line) => line.trim()).filter(Boolean);
266
+ const summary = lines
267
+ .find((line) => line.toUpperCase().startsWith('SINTESI:'))
268
+ ?.slice('SINTESI:'.length)
269
+ .trim() ?? '';
270
+
271
+ /** @type {TalosResearchClaim[]} */
272
+ const claims = [];
273
+ for (const line of lines) {
274
+ const parts = line.split('|').map((part) => part.trim());
275
+ if (parts.length < 3) continue;
276
+ const sourceIndex = Number.parseInt(parts[1].replace(/[^0-9]/g, ''), 10);
277
+ if (!Number.isFinite(sourceIndex)) continue;
278
+ const quote = parts.slice(2).join('|').replace(/^["“]|["”]$/g, '').trim();
279
+ if (parts[0].length === 0 || quote.length === 0) continue;
280
+ // Il modello restituito. Visto su un giro vero: ogni riga cominciava con la
281
+ // parola AFFERMAZIONE, e il rapporto archiviava sei affermazioni ciascuna
282
+ // delle quali era il nome del campo. Buttate invece che mostrate, il che
283
+ // lascia la sintesi senza niente e fa fallire il passo — l'esito onesto,
284
+ // perché non era stato affermato niente.
285
+ if (PLACEHOLDER.test(parts[0])) continue;
286
+
287
+ const source = sources[sourceIndex - 1];
288
+ claims.push({
289
+ text: parts[0],
290
+ sourceIndex,
291
+ quote,
292
+ // Il controllo che il testo tenuto ripaga. Nessun modello, nessuna
293
+ // opinione, nessun costo.
294
+ quotePresent: !source
295
+ ? 'unchecked'
296
+ : comparable(source.text).includes(comparable(quote)) ? 'yes' : 'no',
297
+ });
298
+ }
299
+
300
+ return { summary, claims, sources };
301
+ }
302
+
303
+ /**
304
+ * Quello che al lettore è dovuto in cima: quanto di questo ha retto.
305
+ *
306
+ * @param {TalosResearchReport} report
307
+ * @returns {{total:number, supported:number, unsupported:number}}
308
+ */
309
+ export function talosResearchReportStanding(report) {
310
+ return {
311
+ total: report.claims.length,
312
+ supported: report.claims.filter((claim) => claim.quotePresent === 'yes').length,
313
+ // `unchecked` conta qui, non come una promozione: un'affermazione che cita
314
+ // una fonte che nessuno ha consegnato non è un'affermazione sopravvissuta a
315
+ // un controllo.
316
+ unsupported: report.claims.filter((claim) => claim.quotePresent !== 'yes').length,
317
+ };
318
+ }