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.
- package/CHANGELOG.md +87 -0
- package/LICENSE +661 -0
- package/README.md +116 -3
- package/THIRD_PARTY_NOTICES.md +40 -0
- package/dist/archive/zip.js +73 -0
- package/dist/args.js +100 -0
- package/dist/automations/history-store.js +34 -0
- package/dist/automations/policy-store.js +43 -0
- package/dist/automations/runner.js +107 -0
- package/dist/automations/schedule.js +85 -0
- package/dist/automations/windows-task.js +53 -0
- package/dist/commands/advanced-cli.js +233 -0
- package/dist/commands/checkpoint-cli.js +45 -0
- package/dist/commands/config-cli.js +107 -0
- package/dist/commands/context.js +17 -0
- package/dist/commands/extensions-cli.js +207 -0
- package/dist/commands/project-cli.js +74 -0
- package/dist/commands/project-commands.js +143 -0
- package/dist/commands/provider-cli.js +244 -0
- package/dist/commands/services-cli.js +248 -0
- package/dist/commands/session-cli.js +171 -0
- package/dist/commands/system-cli.js +405 -0
- package/dist/config/commands.js +60 -0
- package/dist/config/load.js +382 -0
- package/dist/config/migrations.js +48 -0
- package/dist/config/types.js +11 -0
- package/dist/diagnostics/development-log.js +154 -0
- package/dist/diagnostics/doctor.js +104 -0
- package/dist/diagnostics/redact.js +80 -0
- package/dist/diagnostics/zip.js +52 -0
- package/dist/errors.js +156 -0
- package/dist/events/bridge.js +130 -0
- package/dist/extensions/installer.js +178 -0
- package/dist/extensions/package-schema.js +24 -0
- package/dist/headless/result.js +84 -0
- package/dist/headless/run.js +230 -0
- package/dist/i18n/en/approval.js +46 -0
- package/dist/i18n/en/common.js +9 -0
- package/dist/i18n/en/credentials.js +92 -0
- package/dist/i18n/en/errors.js +267 -0
- package/dist/i18n/en/firstrun.js +101 -0
- package/dist/i18n/en/providers.js +37 -0
- package/dist/i18n/en/screen.js +774 -0
- package/dist/i18n/en/tools.js +127 -0
- package/dist/i18n/en.js +14 -0
- package/dist/i18n/error-view.js +307 -0
- package/dist/i18n/index.js +19 -0
- package/dist/i18n/kernel-map.js +139 -0
- package/dist/io.js +45 -0
- package/dist/main.js +331 -0
- package/dist/paths.js +41 -0
- package/dist/protocol/v2/codec.js +9 -0
- package/dist/protocol/v2/events.js +555 -0
- package/dist/protocol/v2/index.js +4 -0
- package/dist/protocol/v2/replay.js +28 -0
- package/dist/protocol/v2/types.js +1 -0
- package/dist/provider/control-plane.js +135 -0
- package/dist/provider/environment-keys.js +275 -0
- package/dist/provider/health.js +110 -0
- package/dist/provider/missing-key.js +48 -0
- package/dist/provider/model-catalog.js +168 -0
- package/dist/provider/openrouter-login.js +172 -0
- package/dist/provider/provider-text.js +13 -0
- package/dist/provider/store.js +95 -0
- package/dist/provider/system-keyring.js +214 -0
- package/dist/runtime/active-run.js +63 -0
- package/dist/runtime/agent-tree.js +74 -0
- package/dist/runtime/attachments.js +84 -0
- package/dist/runtime/brokered-executor.js +395 -0
- package/dist/runtime/context-archive.js +69 -0
- package/dist/runtime/context-status.js +76 -0
- package/dist/runtime/create-runtime.js +111 -0
- package/dist/runtime/model-profile.js +361 -0
- package/dist/runtime/output-store.js +137 -0
- package/dist/runtime/provider-attempts.js +185 -0
- package/dist/runtime/replay-buffer.js +153 -0
- package/dist/runtime/repo.js +95 -0
- package/dist/runtime/session-facade.js +135 -0
- package/dist/runtime/session-summary.js +125 -0
- package/dist/runtime/supervisor.js +265 -0
- package/dist/runtime/talos-composition.js +1011 -0
- package/dist/runtime/types.js +5 -0
- package/dist/runtime/usage-snapshot.js +82 -0
- package/dist/security/auto-classifier.js +38 -0
- package/dist/security/credential-free-environment.js +54 -0
- package/dist/security/evaluate.js +243 -0
- package/dist/security/execution-backends.js +236 -0
- package/dist/security/execution-broker.js +102 -0
- package/dist/security/forge-scan.js +74 -0
- package/dist/security/from-approval.js +39 -0
- package/dist/security/mxc-execution-backend.js +281 -0
- package/dist/security/permission-engine.js +138 -0
- package/dist/security/permission-explanation.js +54 -0
- package/dist/security/persist.js +179 -0
- package/dist/security/plugin-guard.js +230 -0
- package/dist/security/process-tree-evidence-store.js +74 -0
- package/dist/security/process-tree-probe.js +554 -0
- package/dist/security/project-resource-inventory.js +186 -0
- package/dist/security/project-trust-gate.js +38 -0
- package/dist/security/project-trust.js +367 -0
- package/dist/security/rule-parser.js +201 -0
- package/dist/security/shell-segmentation.js +68 -0
- package/dist/security/trust-authority.js +324 -0
- package/dist/security/types.js +1 -0
- package/dist/security/workspace-identity.js +102 -0
- package/dist/services/automation-facade.js +59 -0
- package/dist/services/forge-facade.js +77 -0
- package/dist/services/hook-facade.js +240 -0
- package/dist/services/index.js +16 -0
- package/dist/services/library-facade.js +174 -0
- package/dist/services/mcp-facade.js +348 -0
- package/dist/services/memory-facade.js +126 -0
- package/dist/services/notes-facade.js +157 -0
- package/dist/services/plugin-facade.js +308 -0
- package/dist/services/research-facade.js +110 -0
- package/dist/services/task-board-facade.js +236 -0
- package/dist/services/workflow-catalog.js +246 -0
- package/dist/sessions/export-format.js +98 -0
- package/dist/sessions/metadata-store.js +160 -0
- package/dist/sessions/share.js +122 -0
- package/dist/sessions/transfer.js +16 -0
- package/dist/subcommands.js +62 -0
- package/dist/tui/agent-roster.js +36 -0
- package/dist/tui/agent-view.js +51 -0
- package/dist/tui/app.js +4098 -0
- package/dist/tui/approval.js +36 -0
- package/dist/tui/boot/boot-sequence.js +76 -0
- package/dist/tui/boot/cinematic.js +243 -0
- package/dist/tui/boot/desktop-logo.js +82 -0
- package/dist/tui/boot.js +3 -0
- package/dist/tui/busy-input.js +58 -0
- package/dist/tui/catalog-service.js +560 -0
- package/dist/tui/components/assistant-stream.js +1 -0
- package/dist/tui/components/command-menu.js +68 -0
- package/dist/tui/components/composer.js +219 -0
- package/dist/tui/components/diff.js +35 -0
- package/dist/tui/components/footer.js +48 -0
- package/dist/tui/components/header.js +6 -0
- package/dist/tui/components/markdown.js +305 -0
- package/dist/tui/components/status-indicator.js +38 -0
- package/dist/tui/components/terminal-shell.js +214 -0
- package/dist/tui/components/thinking-row.js +19 -0
- package/dist/tui/components/tool-row.js +97 -0
- package/dist/tui/components/transcript-virtualizer.js +165 -0
- package/dist/tui/components/transcript.js +43 -0
- package/dist/tui/descendant-approvals.js +104 -0
- package/dist/tui/diff-model.js +77 -0
- package/dist/tui/editor-history.js +21 -0
- package/dist/tui/editor.js +210 -0
- package/dist/tui/event-adapter.js +436 -0
- package/dist/tui/exit-output.js +58 -0
- package/dist/tui/external-editor.js +53 -0
- package/dist/tui/file-completion.js +89 -0
- package/dist/tui/focus-manager.js +5 -0
- package/dist/tui/highlight.js +30 -0
- package/dist/tui/input-router.js +18 -0
- package/dist/tui/interrupt.js +99 -0
- package/dist/tui/keybindings.js +194 -0
- package/dist/tui/keymap-resolver.js +91 -0
- package/dist/tui/launch-state.js +148 -0
- package/dist/tui/line-diff.js +57 -0
- package/dist/tui/live-activity.js +56 -0
- package/dist/tui/metrics.js +123 -0
- package/dist/tui/onboarding.js +36 -0
- package/dist/tui/overlays/agent-tree.js +43 -0
- package/dist/tui/overlays/approval-dialog.js +642 -0
- package/dist/tui/overlays/automation-center.js +51 -0
- package/dist/tui/overlays/checkpoint-picker.js +47 -0
- package/dist/tui/overlays/context-inspector.js +36 -0
- package/dist/tui/overlays/effort-line.js +110 -0
- package/dist/tui/overlays/forge-center.js +46 -0
- package/dist/tui/overlays/help-dialog.js +16 -0
- package/dist/tui/overlays/history-picker.js +37 -0
- package/dist/tui/overlays/hook-center.js +70 -0
- package/dist/tui/overlays/library-center.js +55 -0
- package/dist/tui/overlays/mcp-center.js +60 -0
- package/dist/tui/overlays/memory-center.js +63 -0
- package/dist/tui/overlays/model-picker.js +77 -0
- package/dist/tui/overlays/notes-center.js +53 -0
- package/dist/tui/overlays/overlay-host.js +8 -0
- package/dist/tui/overlays/plugin-center.js +76 -0
- package/dist/tui/overlays/provider-picker.js +171 -0
- package/dist/tui/overlays/queue-editor.js +32 -0
- package/dist/tui/overlays/research-center.js +59 -0
- package/dist/tui/overlays/scroll-window.js +234 -0
- package/dist/tui/overlays/session-picker.js +115 -0
- package/dist/tui/overlays/tasks-center.js +83 -0
- package/dist/tui/overlays/theme-picker.js +21 -0
- package/dist/tui/overlays/transcript-search.js +58 -0
- package/dist/tui/overlays/trust-center.js +29 -0
- package/dist/tui/overlays/workflow-center.js +46 -0
- package/dist/tui/project-file-index.js +214 -0
- package/dist/tui/project-references.js +85 -0
- package/dist/tui/project-trust-prompt.js +289 -0
- package/dist/tui/prompt-history-store.js +116 -0
- package/dist/tui/queue-store.js +110 -0
- package/dist/tui/regions/budget.js +59 -0
- package/dist/tui/regions/views.js +96 -0
- package/dist/tui/render-coordinator.js +148 -0
- package/dist/tui/render-scheduler.js +4 -0
- package/dist/tui/run.js +69 -0
- package/dist/tui/selection-list.js +29 -0
- package/dist/tui/session-controller.js +791 -0
- package/dist/tui/session-export.js +54 -0
- package/dist/tui/setup-wizard.js +46 -0
- package/dist/tui/shell-input.js +35 -0
- package/dist/tui/shell-layout.js +48 -0
- package/dist/tui/shell-model.js +98 -0
- package/dist/tui/slash-commands.js +82 -0
- package/dist/tui/state.js +151 -0
- package/dist/tui/status-bar.js +125 -0
- package/dist/tui/status-view.js +40 -0
- package/dist/tui/terminal-capabilities.js +9 -0
- package/dist/tui/terminal-session.js +11 -0
- package/dist/tui/text-width.js +66 -0
- package/dist/tui/theme-catalog.js +27 -0
- package/dist/tui/theme-store.js +23 -0
- package/dist/tui/theme.js +23 -0
- package/dist/tui/tool-display.js +135 -0
- package/dist/tui/tool-facts.js +1 -0
- package/dist/tui/tools/bash-renderer.js +32 -0
- package/dist/tui/tools/change.js +61 -0
- package/dist/tui/tools/edit-renderer.js +17 -0
- package/dist/tui/tools/generic-renderer.js +13 -0
- package/dist/tui/tools/list-renderer.js +14 -0
- package/dist/tui/tools/read-renderer.js +13 -0
- package/dist/tui/tools/registry.js +20 -0
- package/dist/tui/tools/row-format.js +187 -0
- package/dist/tui/tools/search-renderer.js +38 -0
- package/dist/tui/tools/shared.js +97 -0
- package/dist/tui/tools/write-renderer.js +15 -0
- package/dist/tui/transcript-model.js +441 -0
- package/dist/tui/ui-preferences.js +79 -0
- package/dist/tui/usage-view.js +77 -0
- package/dist/tui/vim-mode.js +99 -0
- package/dist/update/check.js +15 -0
- package/dist/update/npm.js +51 -0
- package/dist/update/run.js +129 -0
- package/dist/version.js +2 -0
- package/dist/workspace/checkpoint-store.js +210 -0
- package/dist/workspace/checkpoint.js +413 -0
- package/dist/workspace/restore.js +232 -0
- package/package.json +64 -5
- package/vendor/context-engine/package.json +11 -0
- package/vendor/context-engine/src/compaction-planner.mjs +57 -0
- package/vendor/context-engine/src/contracts.mjs +48 -0
- package/vendor/context-engine/src/engine.mjs +445 -0
- package/vendor/context-engine/src/node/context-export.mjs +164 -0
- package/vendor/context-engine/src/node/legacy-import.mjs +92 -0
- package/vendor/context-engine/src/node/migrations/001-context.sql +126 -0
- package/vendor/context-engine/src/node/sqlite-store.mjs +85 -0
- package/vendor/context-engine/src/node/sqlite-worker.mjs +559 -0
- package/vendor/context-engine/src/profiles.mjs +10 -0
- package/vendor/context-engine/src/retrieval.mjs +104 -0
- package/vendor/context-engine/src/summary.mjs +97 -0
- package/vendor/context-engine/src/usage.mjs +34 -0
- package/vendor/harness-ui/package.json +38 -0
- package/vendor/harness-ui/src/acp-agent.mjs +350 -0
- package/vendor/harness-ui/src/agent-service.mjs +2188 -0
- package/vendor/harness-ui/src/agui-events.mjs +452 -0
- package/vendor/harness-ui/src/ambiente-solo-server.mjs +121 -0
- package/vendor/harness-ui/src/artifact-store.mjs +39 -0
- package/vendor/harness-ui/src/assistenza.mjs +123 -0
- package/vendor/harness-ui/src/automation-scheduler.mjs +69 -0
- package/vendor/harness-ui/src/automation-store.mjs +145 -0
- package/vendor/harness-ui/src/browser-annota.mjs +639 -0
- package/vendor/harness-ui/src/browser-frame.mjs +211 -0
- package/vendor/harness-ui/src/browser-proxy-universale.mjs +519 -0
- package/vendor/harness-ui/src/browser-proxy.mjs +87 -0
- package/vendor/harness-ui/src/browser-sessione-viva.mjs +329 -0
- package/vendor/harness-ui/src/browser-stream.mjs +445 -0
- package/vendor/harness-ui/src/browser-vivo.mjs +694 -0
- package/vendor/harness-ui/src/chat-image-attachments.mjs +72 -0
- package/vendor/harness-ui/src/config.mjs +697 -0
- package/vendor/harness-ui/src/contesto-del-progetto.mjs +385 -0
- package/vendor/harness-ui/src/context-asset-adapter.mjs +72 -0
- package/vendor/harness-ui/src/context-desktop-service.mjs +253 -0
- package/vendor/harness-ui/src/context-embedding-runtime.mjs +252 -0
- package/vendor/harness-ui/src/context-inference-scheduler.mjs +81 -0
- package/vendor/harness-ui/src/context-native-compaction.mjs +75 -0
- package/vendor/harness-ui/src/context-provider-adapter.mjs +141 -0
- package/vendor/harness-ui/src/context-runtime.mjs +118 -0
- package/vendor/harness-ui/src/context-token-counters.mjs +184 -0
- package/vendor/harness-ui/src/context-tool-catalog.mjs +86 -0
- package/vendor/harness-ui/src/context-tool-output.mjs +72 -0
- package/vendor/harness-ui/src/costo-elenco.mjs +252 -0
- package/vendor/harness-ui/src/custom-task.mjs +171 -0
- package/vendor/harness-ui/src/doctor.mjs +142 -0
- package/vendor/harness-ui/src/document-filename.mjs +97 -0
- package/vendor/harness-ui/src/document-generator.mjs +493 -0
- package/vendor/harness-ui/src/document-report.mjs +331 -0
- package/vendor/harness-ui/src/duckduckgo-search.mjs +155 -0
- package/vendor/harness-ui/src/elenco-profondo.mjs +337 -0
- package/vendor/harness-ui/src/favicon-proxy.mjs +113 -0
- package/vendor/harness-ui/src/forge-contract.mjs +221 -0
- package/vendor/harness-ui/src/frequent-dirs.mjs +134 -0
- package/vendor/harness-ui/src/generated-image-store.mjs +147 -0
- package/vendor/harness-ui/src/generation-idle.mjs +332 -0
- package/vendor/harness-ui/src/gguf-header.mjs +207 -0
- package/vendor/harness-ui/src/git-service.mjs +626 -0
- package/vendor/harness-ui/src/gitignore-elenco.mjs +604 -0
- package/vendor/harness-ui/src/harness-receipt-keypair.mjs +207 -0
- package/vendor/harness-ui/src/hf-direct-transfer.mjs +170 -0
- package/vendor/harness-ui/src/hf-hub-client.mjs +106 -0
- package/vendor/harness-ui/src/hf-image-proxy.mjs +105 -0
- package/vendor/harness-ui/src/hf-model-transfer.mjs +245 -0
- package/vendor/harness-ui/src/hook-registry.mjs +186 -0
- package/vendor/harness-ui/src/http-app.mjs +6259 -0
- package/vendor/harness-ui/src/http-lifecycle.mjs +132 -0
- package/vendor/harness-ui/src/id-archivio.mjs +27 -0
- package/vendor/harness-ui/src/image-generator.mjs +143 -0
- package/vendor/harness-ui/src/istruzioni-di-progetto.mjs +234 -0
- package/vendor/harness-ui/src/kernel/dist/kernelPerIlBanco.js +518 -0
- package/vendor/harness-ui/src/kernel/talosHarness.mjs +10437 -0
- package/vendor/harness-ui/src/library-policy-store.mjs +175 -0
- package/vendor/harness-ui/src/library-store.mjs +652 -0
- package/vendor/harness-ui/src/llama-server-supervisor.mjs +629 -0
- package/vendor/harness-ui/src/local-model-store.mjs +339 -0
- package/vendor/harness-ui/src/local-runtime-contract.mjs +66 -0
- package/vendor/harness-ui/src/local-runtime-events.mjs +44 -0
- package/vendor/harness-ui/src/local-runtime-llama-server.mjs +244 -0
- package/vendor/harness-ui/src/local-runtime-probe.mjs +401 -0
- package/vendor/harness-ui/src/machine-capacity.mjs +66 -0
- package/vendor/harness-ui/src/mappa-cartelle.mjs +491 -0
- package/vendor/harness-ui/src/mcp-client.mjs +98 -0
- package/vendor/harness-ui/src/mcp-registry.mjs +157 -0
- package/vendor/harness-ui/src/mcp-session.mjs +177 -0
- package/vendor/harness-ui/src/memory-store.mjs +227 -0
- package/vendor/harness-ui/src/model-catalog-models-dev.mjs +276 -0
- package/vendor/harness-ui/src/model-catalog.mjs +129 -0
- package/vendor/harness-ui/src/model-destination.mjs +189 -0
- package/vendor/harness-ui/src/modifica-ancorata.mjs +177 -0
- package/vendor/harness-ui/src/native-provider-adapter.mjs +205 -0
- package/vendor/harness-ui/src/notes-store.mjs +250 -0
- package/vendor/harness-ui/src/openai-compatible-runtime.mjs +428 -0
- package/vendor/harness-ui/src/openrouter-oauth.mjs +339 -0
- package/vendor/harness-ui/src/path-policy.mjs +442 -0
- package/vendor/harness-ui/src/plugin-registry.mjs +780 -0
- package/vendor/harness-ui/src/plugin-session.mjs +180 -0
- package/vendor/harness-ui/src/process-policy.mjs +345 -0
- package/vendor/harness-ui/src/prompt-enhancer-provider.mjs +94 -0
- package/vendor/harness-ui/src/provider-auth-cloud.mjs +95 -0
- package/vendor/harness-ui/src/provider-credential-store.mjs +541 -0
- package/vendor/harness-ui/src/provider-probe.mjs +582 -0
- package/vendor/harness-ui/src/provider-registry.mjs +1633 -0
- package/vendor/harness-ui/src/pty-terminal.mjs +312 -0
- package/vendor/harness-ui/src/public-problem.mjs +109 -0
- package/vendor/harness-ui/src/research/card.mjs +235 -0
- package/vendor/harness-ui/src/research/citations.mjs +142 -0
- package/vendor/harness-ui/src/research/collector.mjs +275 -0
- package/vendor/harness-ui/src/research/deposito-a-pezzi.mjs +139 -0
- package/vendor/harness-ui/src/research/dossier.mjs +114 -0
- package/vendor/harness-ui/src/research/esportazioni.mjs +560 -0
- package/vendor/harness-ui/src/research/fetch-cache.mjs +465 -0
- package/vendor/harness-ui/src/research/fidelity.mjs +122 -0
- package/vendor/harness-ui/src/research/independence.mjs +159 -0
- package/vendor/harness-ui/src/research/ledger.mjs +166 -0
- package/vendor/harness-ui/src/research/markdown-server.mjs +565 -0
- package/vendor/harness-ui/src/research/narration.mjs +181 -0
- package/vendor/harness-ui/src/research/open-cards.mjs +131 -0
- package/vendor/harness-ui/src/research/opposing.mjs +305 -0
- package/vendor/harness-ui/src/research/outline.mjs +111 -0
- package/vendor/harness-ui/src/research/page-budget.mjs +209 -0
- package/vendor/harness-ui/src/research/pdf.mjs +291 -0
- package/vendor/harness-ui/src/research/plan.mjs +301 -0
- package/vendor/harness-ui/src/research/raccolta-viva.mjs +452 -0
- package/vendor/harness-ui/src/research/recheck-document.mjs +69 -0
- package/vendor/harness-ui/src/research/recheck-history.mjs +192 -0
- package/vendor/harness-ui/src/research/recheck.mjs +194 -0
- package/vendor/harness-ui/src/research/report.mjs +203 -0
- package/vendor/harness-ui/src/research/run.mjs +527 -0
- package/vendor/harness-ui/src/research/synthesis.mjs +318 -0
- package/vendor/harness-ui/src/research/verification.mjs +572 -0
- package/vendor/harness-ui/src/research-orchestrator.mjs +2679 -0
- package/vendor/harness-ui/src/research-store.mjs +1133 -0
- package/vendor/harness-ui/src/runtime-build-manifest.mjs +26 -0
- package/vendor/harness-ui/src/runtime-contract.mjs +59 -0
- package/vendor/harness-ui/src/runtime-owner-adapter.mjs +1348 -0
- package/vendor/harness-ui/src/runtime-owner-contract.mjs +32 -0
- package/vendor/harness-ui/src/scheda-di-lavoro.mjs +249 -0
- package/vendor/harness-ui/src/search-source-store.mjs +172 -0
- package/vendor/harness-ui/src/session-registry.mjs +6095 -0
- package/vendor/harness-ui/src/session-store.mjs +220 -0
- package/vendor/harness-ui/src/sessione-pronta.mjs +73 -0
- package/vendor/harness-ui/src/setup-stato.mjs +31 -0
- package/vendor/harness-ui/src/sezioni-istruzioni.mjs +204 -0
- package/vendor/harness-ui/src/skill-registry.mjs +120 -0
- package/vendor/harness-ui/src/sse-replay-coalescente.mjs +0 -0
- package/vendor/harness-ui/src/static-files.mjs +96 -0
- package/vendor/harness-ui/src/stream-partition.mjs +123 -0
- package/vendor/harness-ui/src/subagent-orchestrator.mjs +453 -0
- package/vendor/harness-ui/src/task-catalog.mjs +65 -0
- package/vendor/harness-ui/src/tasks-store.mjs +220 -0
- package/vendor/harness-ui/src/terminal-registry.mjs +312 -0
- package/vendor/harness-ui/src/terminal-ws.mjs +170 -0
- package/vendor/harness-ui/src/tool-forge-store.mjs +299 -0
- package/vendor/harness-ui/src/tool-schema-normalize.mjs +100 -0
- package/vendor/harness-ui/src/usage-cache.mjs +315 -0
- package/vendor/harness-ui/src/workspace-browser.mjs +213 -0
- package/vendor/harness-ui/src/workspace-context.mjs +124 -0
- package/vendor/harness-ui/src/workspace-disk.mjs +62 -0
- package/vendor/harness-ui/src/workspace-files.mjs +589 -0
- package/vendor/harness-ui/src/workspace-info.mjs +189 -0
- package/vendor/harness-ui/src/workspace-launch-store.mjs +150 -0
- package/vendor/harness-ui/src/workspace-tree.mjs +67 -0
- package/vendor/harness-ui/src/workspace-watcher.mjs +161 -0
- 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
|
+
}
|