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,301 @@
1
+ /*
2
+ * PORTO FEDELE di AVM/mobile/src/lib/research/researchPlan.ts (271 righe, 11/09/2026).
3
+ *
4
+ * Il piano, il suo costo, e il rifiuto di inventare un numero.
5
+ *
6
+ * R-2. Gemini mostra un piano e lo lascia modificare, e il campo si ferma lì:
7
+ * nessuno dice quanto costerà il giro PRIMA che parta. Con BYOK l'utente paga
8
+ * di tasca sua, quindi dirlo non è un fronzolo — è dovuto.
9
+ *
10
+ * La parte scomoda è che non ci è permesso conoscere il prezzo. I prezzi
11
+ * cambiano, e un listino cotto dentro un pacchetto è una bugia con una data di
12
+ * rilascio sopra — la regola contro le liste statiche esiste esattamente per
13
+ * questo. OpenRouter pubblica le tariffe per token nella sua lista modelli, che
14
+ * è una fonte viva che possiamo leggere; gli altri fornitori non pubblicano
15
+ * niente di leggibile a macchina.
16
+ *
17
+ * Quindi il costo ha due metà e si trattano diversamente. Il LAVORO — ricerche,
18
+ * pagine, minuti, token — è aritmetica sul piano e si mostra sempre. Il DENARO
19
+ * si mostra solo dove un prezzo pubblicato è stato davvero ottenuto, e dove non
20
+ * lo è stato la risposta è «non conoscibile da qui» invece di una cifra
21
+ * plausibile. Un prezzo inventato è peggio di nessun prezzo: verrebbe creduto.
22
+ *
23
+ * ⛔ Porto meccanico: stesse semantiche, stessi casi limite, stessi nomi
24
+ * esportati. I tipi sono in JSDoc (`@typedef`), non in TypeScript — vedi
25
+ * https://www.typescriptlang.org/docs/handbook/jsdoc-supported-types.html.
26
+ * `TalosResearchBranch` e `TalosResearchDepth` vivono in `./run.mjs` e qui
27
+ * entrano SOLO come tipi: nessun import a runtime, quindi nessun ciclo.
28
+ */
29
+
30
+ /**
31
+ * @typedef {import('./run.mjs').TalosResearchBranch} TalosResearchBranch
32
+ * @typedef {import('./run.mjs').TalosResearchDepth} TalosResearchDepth
33
+ */
34
+
35
+ /**
36
+ * @typedef {object} TalosResearchDepthProfile
37
+ * @property {TalosResearchDepth} depth
38
+ * @property {number} branches Quante linee d'indagine apre il piano di default.
39
+ * @property {number} sources Fonti che l'intero giro si aspetta di leggere. Distribuite sui rami.
40
+ * @property {number} minutes Tempo d'orologio grossolano, per chi decide se partire adesso.
41
+ */
42
+
43
+ /**
44
+ * I tre livelli, coi numeri delle misure sui concorrenti: OpenAI legge 50-200
45
+ * fonti in 10-30 minuti, Gemini 30-150 in 5-15, Claude 20-100 in 5-20,
46
+ * Perplexity finisce in 2-4. Questi stanno di proposito in fondo a quella
47
+ * forbice — qui si gira su una batteria di telefono, non in un datacentre.
48
+ *
49
+ * Default, non gabbie: il piano resta modificabile, che è il punto di R-2.
50
+ *
51
+ * @type {Readonly<Record<TalosResearchDepth, TalosResearchDepthProfile>>}
52
+ */
53
+ export const TALOS_RESEARCH_DEPTHS = Object.freeze({
54
+ quick: Object.freeze({ depth: 'quick', branches: 2, sources: 10, minutes: 3 }),
55
+ deep: Object.freeze({ depth: 'deep', branches: 4, sources: 30, minutes: 10 }),
56
+ exhaustive: Object.freeze({ depth: 'exhaustive', branches: 6, sources: 80, minutes: 25 }),
57
+ });
58
+
59
+ /**
60
+ * Quanto testo costa assorbire una fonte.
61
+ *
62
+ * Una pagina ridotta alla sua parte leggibile sono qualche migliaio di parole;
63
+ * a circa quattro caratteri per token si arriva vicino a questa cifra. È una
64
+ * stima, ed è etichettata come tale ovunque esca — il numero vero si conosce
65
+ * solo dopo che la pagina è stata scaricata.
66
+ */
67
+ const TOKENS_PER_SOURCE = 1_500;
68
+
69
+ /** Quanto spende il modello forte a tirare insieme un ramo, alla fine. */
70
+ const TOKENS_PER_BRANCH_SYNTHESIS = 2_000;
71
+
72
+ /** Le facce lungo cui si apre una domanda, nell'ordine in cui vale aprirle. */
73
+ const FACETS = [
74
+ 'fatti e numeri',
75
+ 'fonti contrarie',
76
+ 'chi lo dice e con quale interesse',
77
+ 'quanto è recente',
78
+ 'casi reali',
79
+ 'cosa resta incerto',
80
+ ];
81
+
82
+ /**
83
+ * Quante fonti per ramo regge un autore che gira SUL TELEFONO.
84
+ *
85
+ * Il rapporto si scrive leggendo tutte le fonti raccolte in un colpo solo,
86
+ * quindi la profondità non decide solo quanto si cerca: decide la lunghezza
87
+ * del prompt finale. Misurato sul OnePlus Pad 3 il 2026-08-04 — dieci pagine
88
+ * facevano 11009 token, e un 3B con quel prompt macinava mezz'ora senza
89
+ * consegnare. Non è un limite del contesto (quello è 16384): è il tempo.
90
+ *
91
+ * Il tetto è sul TOTALE, non sul singolo ramo, e la differenza non è un
92
+ * dettaglio: la sintesi legge tutti i rami insieme. Col tetto per ramo,
93
+ * «Esaustiva» restava a 39.000 token — sei rami da tre fonti — cioè oltre il
94
+ * doppio del contesto, esattamente il difetto che si voleva chiudere.
95
+ *
96
+ * Sei fonti in tutto tengono la sintesi in un prompt che un modello sul
97
+ * dispositivo scrive in minuti, non in decine di minuti, a QUALSIASI
98
+ * profondità. Il numero è basso di proposito: un rapporto che arriva vale
99
+ * più di uno più ricco che non arriva.
100
+ */
101
+ const TALOS_LOCAL_SOURCES_TOTAL = 6;
102
+
103
+ /**
104
+ * Un primo piano per una domanda. Ci si aspetta che l'utente lo cambi.
105
+ *
106
+ * Le domande dei rami sono la domanda stessa vista da un altro lato, perché un
107
+ * piano i cui rami sono parafrasi l'uno dell'altro spende quattro volte per
108
+ * imparare una cosa sola. Le facce sono ordinate per quanto spesso cambiano una
109
+ * risposta, così un giro rapido a due rami prende le due che contano di più.
110
+ *
111
+ * @param {string} question
112
+ * @param {TalosResearchDepth} depth
113
+ * @param {boolean} [localAuthor=false] L'autore gira sul dispositivo: il piano si adatta a lui.
114
+ * @returns {readonly TalosResearchBranch[]}
115
+ */
116
+ export function talosResearchPlanFor(question, depth, localAuthor = false) {
117
+ const profile = TALOS_RESEARCH_DEPTHS[depth];
118
+ const chiesto = Math.max(1, Math.round(profile.sources / profile.branches));
119
+ // Si ABBASSA soltanto: se la profondità chiede già meno di così, quella
120
+ // vince — nessuno ha chiesto di gonfiare una ricerca rapida.
121
+ /*
122
+ * Il totale si DISTRIBUISCE, non si divide e basta.
123
+ *
124
+ * Dividere e arrotondare per difetto perdeva fonti a ogni ramo: sei fonti
125
+ * su quattro rami facevano uno per ramo, cioè quattro — e sulle linguette
126
+ * «Approfondita» mostrava 4 dove «Rapida» mostrava 6. Più profonda che
127
+ * rende meno non è una scelta discutibile: sembra rotta, e lo era.
128
+ *
129
+ * Il resto va ai primi rami, quindi il totale è esatto a qualsiasi
130
+ * profondità e le linguette dicono tutte lo stesso numero.
131
+ */
132
+ const perBranch = localAuthor
133
+ ? Math.max(1, Math.min(chiesto, Math.floor(TALOS_LOCAL_SOURCES_TOTAL / profile.branches)))
134
+ : chiesto;
135
+ const avanzo = localAuthor && perBranch * profile.branches < TALOS_LOCAL_SOURCES_TOTAL
136
+ ? Math.min(TALOS_LOCAL_SOURCES_TOTAL - perBranch * profile.branches, profile.branches)
137
+ : 0;
138
+ return Array.from({ length: profile.branches }, (_, index) => ({
139
+ id: `b${index + 1}`,
140
+ question: `${question.trim()} — ${FACETS[index % FACETS.length]}`,
141
+ estimate: {
142
+ searches: 1,
143
+ pages: perBranch + (index < avanzo ? 1 : 0),
144
+ tokens: (perBranch + (index < avanzo ? 1 : 0)) * TOKENS_PER_SOURCE + TOKENS_PER_BRANCH_SYNTHESIS,
145
+ },
146
+ }));
147
+ }
148
+
149
+ /**
150
+ * @typedef {object} TalosResearchPlanTotals
151
+ * @property {number} branches
152
+ * @property {number} searches
153
+ * @property {number} pages
154
+ * @property {number} tokens
155
+ * @property {number} minutes
156
+ */
157
+
158
+ /**
159
+ * Quanto tempo ci vuole in tutto, una volta noti i rami.
160
+ *
161
+ * Una pagina costa circa questo tempo d'orologio per essere scaricata e ridotta
162
+ * su un telefono: la rete è la maggior parte, e l'analisi non è gratis.
163
+ * Moltiplicato per le pagine, è quello su cui l'utente sta davvero decidendo
164
+ * quando sceglie una profondità.
165
+ */
166
+ const SECONDS_PER_PAGE = 6;
167
+
168
+ /**
169
+ * @param {readonly TalosResearchBranch[]} plan
170
+ * @returns {TalosResearchPlanTotals}
171
+ */
172
+ export function talosResearchPlanTotals(plan) {
173
+ const totals = plan.reduce(
174
+ (sum, branch) => ({
175
+ searches: sum.searches + branch.estimate.searches,
176
+ pages: sum.pages + branch.estimate.pages,
177
+ tokens: sum.tokens + branch.estimate.tokens,
178
+ }),
179
+ { searches: 0, pages: 0, tokens: 0 },
180
+ );
181
+ return {
182
+ branches: plan.length,
183
+ ...totals,
184
+ // Arrotondato PER ECCESSO, e mai a zero per un piano che ha lavoro dentro:
185
+ // un giro annunciato come «0 minuti» che ne prende quaranta di secondi ha
186
+ // mentito sull'unica cosa che l'utente aveva chiesto.
187
+ minutes: plan.length === 0 ? 0 : Math.max(1, Math.ceil((totals.pages * SECONDS_PER_PAGE) / 60)),
188
+ };
189
+ }
190
+
191
+ /**
192
+ * Un prezzo che il FORNITORE ha pubblicato, per milione di token. Mai
193
+ * assemblato qui dentro.
194
+ *
195
+ * Diviso perché le due tariffe differiscono di un ordine di grandezza sulla
196
+ * maggior parte dei modelli, e un giro di ricerca è sbilanciato: legge molto
197
+ * più di quanto scriva, quindi usare una tariffa sola per entrambe
198
+ * sbaglierebbe il totale nella direzione in cui il modello è tariffato.
199
+ *
200
+ * @typedef {object} TalosResearchPrice
201
+ * @property {string} currency
202
+ * @property {number} promptPerMillion
203
+ * @property {number} completionPerMillion
204
+ */
205
+
206
+ /**
207
+ * `{known:false}` NON è un errore, e non è uno zero.
208
+ *
209
+ * @typedef {{known:true, currency:string, amount:number} | {known:false}} TalosResearchCost
210
+ */
211
+
212
+ /**
213
+ * Quanto costerà il giro, quando lo si può dire del tutto.
214
+ *
215
+ * La quota scritta rispetto a quella letta non è un'ipotesi tirata fuori dal
216
+ * nulla: un giro di ricerca legge pagine e scrive un riassunto, quindi l'uscita
217
+ * è una piccola frazione dell'ingresso. Sbagliarla sposta la stima di qualche
218
+ * punto percentuale; fingere di conoscere un prezzo che non ci è mai stato
219
+ * detto la sposterebbe da stima a finzione.
220
+ */
221
+ const COMPLETION_SHARE = 0.15;
222
+
223
+ /**
224
+ * @param {TalosResearchPlanTotals} totals
225
+ * @param {TalosResearchPrice | null} price
226
+ * @returns {TalosResearchCost}
227
+ */
228
+ export function talosResearchPlanCost(totals, price) {
229
+ if (!price) return { known: false };
230
+ const completion = totals.tokens * COMPLETION_SHARE;
231
+ const prompt = totals.tokens - completion;
232
+ const amount = (prompt * price.promptPerMillion + completion * price.completionPerMillion) / 1_000_000;
233
+ return { known: true, currency: price.currency, amount };
234
+ }
235
+
236
+ /**
237
+ * Togliere una linea d'indagine. Gli id degli altri non si muovono.
238
+ *
239
+ * @param {readonly TalosResearchBranch[]} plan
240
+ * @param {string} branchId
241
+ * @returns {readonly TalosResearchBranch[]}
242
+ */
243
+ export function talosResearchPlanWithout(plan, branchId) {
244
+ return plan.filter((branch) => branch.id !== branchId);
245
+ }
246
+
247
+ /**
248
+ * Aggiungerne uno, con una stima presa in prestito dal piano a cui si unisce.
249
+ *
250
+ * Un ramo nuovo costa quanto costano gli altri — è ciò che vuol dire «un altro
251
+ * di questi» — e un piano i cui rami portassero stime selvaggiamente diverse
252
+ * per lo stesso tipo di lavoro renderebbe il totale illeggibile. L'id NON è di
253
+ * proposito un contatore sulla lunghezza corrente: togliere b2 e poi
254
+ * aggiungerne uno produrrebbe un secondo b2, e un id doppio è un passo che
255
+ * sovrascrive il posto di un altro nel giornale.
256
+ *
257
+ * @param {readonly TalosResearchBranch[]} plan
258
+ * @param {string} question
259
+ * @param {TalosResearchDepth} depth
260
+ * @returns {readonly TalosResearchBranch[]}
261
+ */
262
+ export function talosResearchPlanWith(plan, question, depth) {
263
+ const highest = plan.reduce((top, branch) => {
264
+ const parsed = Number.parseInt(branch.id.replace(/^b/, ''), 10);
265
+ return Number.isFinite(parsed) && parsed > top ? parsed : top;
266
+ }, 0);
267
+ const template = plan[0]?.estimate ?? talosResearchPlanFor(question, depth)[0].estimate;
268
+ return [...plan, { id: `b${highest + 1}`, question: question.trim(), estimate: template }];
269
+ }
270
+
271
+ /**
272
+ * Riformularne uno. La stima non cambia: il lavoro ha la stessa forma.
273
+ *
274
+ * @param {readonly TalosResearchBranch[]} plan
275
+ * @param {string} branchId
276
+ * @param {string} question
277
+ * @returns {readonly TalosResearchBranch[]}
278
+ */
279
+ export function talosResearchPlanReworded(plan, branchId, question) {
280
+ return plan.map((branch) => (
281
+ branch.id === branchId ? { ...branch, question: question.trim() } : branch
282
+ ));
283
+ }
284
+
285
+ /**
286
+ * Quanto DEVE LEGGERE IN UNA VOLTA chi scrive il rapporto.
287
+ *
288
+ * Non è il totale della ricerca — quello comprende le ricerche e le sintesi
289
+ * per ramo, che sono chiamate separate. Il prompt finale porta il testo di
290
+ * tutte le fonti raccolte, e basta.
291
+ *
292
+ * La differenza conta perché è quella che un avviso mostra all'utente: dire
293
+ * 21.000 quando il modello ne legge 9.000 è una cifra plausibile invece che
294
+ * vera, ed è esattamente ciò che la disciplina sul costo vieta.
295
+ *
296
+ * @param {readonly TalosResearchBranch[]} plan
297
+ * @returns {number}
298
+ */
299
+ export function talosResearchSynthesisLoad(plan) {
300
+ return plan.reduce((sum, branch) => sum + branch.estimate.pages, 0) * TOKENS_PER_SOURCE;
301
+ }