@vascend/talos 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +202 -0
- package/dist/backend/asset-events.d.ts +31 -0
- package/dist/backend/asset-events.js +149 -0
- package/dist/backend/assets.d.ts +31 -0
- package/dist/backend/assets.js +210 -0
- package/dist/backend/auth.d.ts +18 -0
- package/dist/backend/auth.js +59 -0
- package/dist/backend/config.d.ts +14 -0
- package/dist/backend/config.js +41 -0
- package/dist/backend/conversations.d.ts +21 -0
- package/dist/backend/conversations.js +141 -0
- package/dist/backend/crypto.d.ts +9 -0
- package/dist/backend/crypto.js +68 -0
- package/dist/backend/engine.d.ts +13 -0
- package/dist/backend/engine.js +78 -0
- package/dist/backend/http.d.ts +25 -0
- package/dist/backend/http.js +112 -0
- package/dist/backend/index.d.ts +1 -0
- package/dist/backend/index.js +24 -0
- package/dist/backend/routes.d.ts +14 -0
- package/dist/backend/routes.js +169 -0
- package/dist/backend/sdk.d.ts +12 -0
- package/dist/backend/sdk.js +11 -0
- package/dist/backend/server.d.ts +12 -0
- package/dist/backend/server.js +91 -0
- package/dist/backend/temp-image-store.d.ts +46 -0
- package/dist/backend/temp-image-store.js +197 -0
- package/dist/backend/types.d.ts +103 -0
- package/dist/backend/types.js +29 -0
- package/dist/backend/users.d.ts +13 -0
- package/dist/backend/users.js +76 -0
- package/dist/backend/ws-handler.d.ts +14 -0
- package/dist/backend/ws-handler.js +72 -0
- package/dist/backend/ws.d.ts +19 -0
- package/dist/backend/ws.js +146 -0
- package/dist/core/agent.d.ts +56 -0
- package/dist/core/agent.js +1783 -0
- package/dist/core/background.d.ts +45 -0
- package/dist/core/background.js +140 -0
- package/dist/core/bootstrap.d.ts +45 -0
- package/dist/core/bootstrap.js +294 -0
- package/dist/core/cli-args.d.ts +41 -0
- package/dist/core/cli-args.js +282 -0
- package/dist/core/collapsible-output.d.ts +38 -0
- package/dist/core/collapsible-output.js +143 -0
- package/dist/core/compaction-checkpoint.d.ts +9 -0
- package/dist/core/compaction-checkpoint.js +58 -0
- package/dist/core/compaction.d.ts +42 -0
- package/dist/core/compaction.js +270 -0
- package/dist/core/config.d.ts +49 -0
- package/dist/core/config.js +417 -0
- package/dist/core/context-ledger.d.ts +99 -0
- package/dist/core/context-ledger.js +222 -0
- package/dist/core/context-policy.d.ts +17 -0
- package/dist/core/context-policy.js +81 -0
- package/dist/core/continuation-review.d.ts +23 -0
- package/dist/core/continuation-review.js +64 -0
- package/dist/core/crash-report.d.ts +3 -0
- package/dist/core/crash-report.js +27 -0
- package/dist/core/credentials.d.ts +11 -0
- package/dist/core/credentials.js +183 -0
- package/dist/core/doctor.d.ts +24 -0
- package/dist/core/doctor.js +125 -0
- package/dist/core/effort.d.ts +5 -0
- package/dist/core/effort.js +42 -0
- package/dist/core/env-paths.d.ts +3 -0
- package/dist/core/env-paths.js +38 -0
- package/dist/core/execution-guidance.d.ts +9 -0
- package/dist/core/execution-guidance.js +73 -0
- package/dist/core/execution-target.d.ts +41 -0
- package/dist/core/execution-target.js +69 -0
- package/dist/core/file-coordination.d.ts +66 -0
- package/dist/core/file-coordination.js +176 -0
- package/dist/core/file-lease-store.d.ts +14 -0
- package/dist/core/file-lease-store.js +89 -0
- package/dist/core/image-limits.d.ts +26 -0
- package/dist/core/image-limits.js +205 -0
- package/dist/core/interruptible-completion.d.ts +3 -0
- package/dist/core/interruptible-completion.js +42 -0
- package/dist/core/kingdoms-mode-state.d.ts +24 -0
- package/dist/core/kingdoms-mode-state.js +139 -0
- package/dist/core/licenza.d.ts +38 -0
- package/dist/core/licenza.js +125 -0
- package/dist/core/model-limits.d.ts +2 -0
- package/dist/core/model-limits.js +36 -0
- package/dist/core/output-lifecycle.d.ts +44 -0
- package/dist/core/output-lifecycle.js +190 -0
- package/dist/core/package-update.d.ts +15 -0
- package/dist/core/package-update.js +121 -0
- package/dist/core/permission-queue.d.ts +2 -0
- package/dist/core/permission-queue.js +20 -0
- package/dist/core/prompt-attachment.d.ts +21 -0
- package/dist/core/prompt-attachment.js +123 -0
- package/dist/core/request-plan.d.ts +16 -0
- package/dist/core/request-plan.js +36 -0
- package/dist/core/run-timing.d.ts +17 -0
- package/dist/core/run-timing.js +123 -0
- package/dist/core/self-update.d.ts +17 -0
- package/dist/core/self-update.js +54 -0
- package/dist/core/session-refs.d.ts +27 -0
- package/dist/core/session-refs.js +126 -0
- package/dist/core/session-storage.d.ts +4 -0
- package/dist/core/session-storage.js +48 -0
- package/dist/core/session-title.d.ts +1 -0
- package/dist/core/session-title.js +21 -0
- package/dist/core/session-usage.d.ts +17 -0
- package/dist/core/session-usage.js +74 -0
- package/dist/core/session.d.ts +58 -0
- package/dist/core/session.js +296 -0
- package/dist/core/settings.d.ts +17 -0
- package/dist/core/settings.js +107 -0
- package/dist/core/storage-retention.d.ts +21 -0
- package/dist/core/storage-retention.js +227 -0
- package/dist/core/text-sanitize.d.ts +1 -0
- package/dist/core/text-sanitize.js +35 -0
- package/dist/core/tool-artifacts.d.ts +6 -0
- package/dist/core/tool-artifacts.js +51 -0
- package/dist/core/tool-compress.d.ts +8 -0
- package/dist/core/tool-compress.js +111 -0
- package/dist/core/tool-executor.d.ts +16 -0
- package/dist/core/tool-executor.js +97 -0
- package/dist/core/tool-result-index.d.ts +52 -0
- package/dist/core/tool-result-index.js +327 -0
- package/dist/core/tool-result-store.d.ts +38 -0
- package/dist/core/tool-result-store.js +190 -0
- package/dist/core/tool-scheduler.d.ts +16 -0
- package/dist/core/tool-scheduler.js +35 -0
- package/dist/core/trust.d.ts +21 -0
- package/dist/core/trust.js +95 -0
- package/dist/core/types.d.ts +402 -0
- package/dist/core/types.js +1 -0
- package/dist/core/update-check.d.ts +26 -0
- package/dist/core/update-check.js +89 -0
- package/dist/core/update-process.d.ts +10 -0
- package/dist/core/update-process.js +31 -0
- package/dist/core/user-inbox.d.ts +23 -0
- package/dist/core/user-inbox.js +56 -0
- package/dist/core/user-input.d.ts +10 -0
- package/dist/core/user-input.js +35 -0
- package/dist/core/version.d.ts +1 -0
- package/dist/core/version.js +10 -0
- package/dist/core/vibe-modes.d.ts +38 -0
- package/dist/core/vibe-modes.js +383 -0
- package/dist/core/workspace-roots.d.ts +13 -0
- package/dist/core/workspace-roots.js +91 -0
- package/dist/core/workspace-sessions.d.ts +51 -0
- package/dist/core/workspace-sessions.js +243 -0
- package/dist/cowork/client.d.ts +29 -0
- package/dist/cowork/client.js +49 -0
- package/dist/cowork/engine-bridge.d.ts +22 -0
- package/dist/cowork/engine-bridge.js +98 -0
- package/dist/cowork/index.d.ts +11 -0
- package/dist/cowork/index.js +16 -0
- package/dist/cowork/ipc.d.ts +97 -0
- package/dist/cowork/ipc.js +96 -0
- package/dist/cowork/manager.d.ts +66 -0
- package/dist/cowork/manager.js +325 -0
- package/dist/cowork/store.d.ts +23 -0
- package/dist/cowork/store.js +182 -0
- package/dist/cowork/sync.d.ts +20 -0
- package/dist/cowork/sync.js +164 -0
- package/dist/cowork/types.d.ts +78 -0
- package/dist/cowork/types.js +21 -0
- package/dist/extensions/ext-tools.d.ts +3 -0
- package/dist/extensions/ext-tools.js +73 -0
- package/dist/extensions/loader.d.ts +91 -0
- package/dist/extensions/loader.js +474 -0
- package/dist/extensions/settings.d.ts +20 -0
- package/dist/extensions/settings.js +86 -0
- package/dist/extensions/types.d.ts +219 -0
- package/dist/extensions/types.js +1 -0
- package/dist/horizon/async-queue.d.ts +9 -0
- package/dist/horizon/async-queue.js +46 -0
- package/dist/horizon/engine.d.ts +85 -0
- package/dist/horizon/engine.js +603 -0
- package/dist/horizon/index.d.ts +4 -0
- package/dist/horizon/index.js +2 -0
- package/dist/horizon/main-team.d.ts +163 -0
- package/dist/horizon/main-team.js +774 -0
- package/dist/horizon/types.d.ts +233 -0
- package/dist/horizon/types.js +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +233 -0
- package/dist/mcp/protocol.d.ts +81 -0
- package/dist/mcp/protocol.js +122 -0
- package/dist/package.json +1 -0
- package/dist/packages/packages.d.ts +12 -0
- package/dist/packages/packages.js +323 -0
- package/dist/prompts/templates.d.ts +13 -0
- package/dist/prompts/templates.js +139 -0
- package/dist/providers/anthropic-oauth.d.ts +13 -0
- package/dist/providers/anthropic-oauth.js +124 -0
- package/dist/providers/anthropic.d.ts +27 -0
- package/dist/providers/anthropic.js +526 -0
- package/dist/providers/catalog.d.ts +15 -0
- package/dist/providers/catalog.js +166 -0
- package/dist/providers/effort.d.ts +12 -0
- package/dist/providers/effort.js +102 -0
- package/dist/providers/model-catalog.d.ts +43 -0
- package/dist/providers/model-catalog.js +70 -0
- package/dist/providers/model-effort.d.ts +5 -0
- package/dist/providers/model-effort.js +43 -0
- package/dist/providers/model-registry.d.ts +39 -0
- package/dist/providers/model-registry.js +142 -0
- package/dist/providers/models-dev.d.ts +9 -0
- package/dist/providers/models-dev.js +97 -0
- package/dist/providers/oauth-callback-server.d.ts +28 -0
- package/dist/providers/oauth-callback-server.js +184 -0
- package/dist/providers/oauth-orchestrator.d.ts +58 -0
- package/dist/providers/oauth-orchestrator.js +159 -0
- package/dist/providers/oauth-store.d.ts +12 -0
- package/dist/providers/oauth-store.js +139 -0
- package/dist/providers/open-browser.d.ts +20 -0
- package/dist/providers/open-browser.js +92 -0
- package/dist/providers/openai-compat.d.ts +14 -0
- package/dist/providers/openai-compat.js +523 -0
- package/dist/providers/openai-oauth.d.ts +15 -0
- package/dist/providers/openai-oauth.js +382 -0
- package/dist/providers/openrouter-auth.d.ts +73 -0
- package/dist/providers/openrouter-auth.js +321 -0
- package/dist/providers/openrouter-manual-fallback.d.ts +25 -0
- package/dist/providers/openrouter-manual-fallback.js +161 -0
- package/dist/providers/openrouter.d.ts +15 -0
- package/dist/providers/openrouter.js +107 -0
- package/dist/providers/plan-limits.d.ts +6 -0
- package/dist/providers/plan-limits.js +175 -0
- package/dist/providers/provider-reset.d.ts +4 -0
- package/dist/providers/provider-reset.js +83 -0
- package/dist/providers/quota-limits.d.ts +4 -0
- package/dist/providers/quota-limits.js +33 -0
- package/dist/providers/registry.d.ts +33 -0
- package/dist/providers/registry.js +213 -0
- package/dist/providers/retry.d.ts +37 -0
- package/dist/providers/retry.js +347 -0
- package/dist/rpc/server.d.ts +23 -0
- package/dist/rpc/server.js +222 -0
- package/dist/sdk.d.ts +67 -0
- package/dist/sdk.js +64 -0
- package/dist/skills/skills.d.ts +17 -0
- package/dist/skills/skills.js +155 -0
- package/dist/text-sanitize.js +28 -0
- package/dist/tools/ask-user.d.ts +2 -0
- package/dist/tools/ask-user.js +60 -0
- package/dist/tools/builtin.d.ts +48 -0
- package/dist/tools/builtin.js +2494 -0
- package/dist/tools/capabilities.d.ts +5 -0
- package/dist/tools/capabilities.js +55 -0
- package/dist/tools/computer-capture.d.ts +2 -0
- package/dist/tools/computer-capture.js +91 -0
- package/dist/tools/computer-posix.d.ts +5 -0
- package/dist/tools/computer-posix.js +136 -0
- package/dist/tools/computer-use.d.ts +14 -0
- package/dist/tools/computer-use.js +108 -0
- package/dist/tools/discovery.d.ts +12 -0
- package/dist/tools/discovery.js +205 -0
- package/dist/tools/execute.d.ts +2 -0
- package/dist/tools/execute.js +73 -0
- package/dist/tools/normalize-input.d.ts +17 -0
- package/dist/tools/normalize-input.js +174 -0
- package/dist/tools/output-artifact.d.ts +3 -0
- package/dist/tools/output-artifact.js +80 -0
- package/dist/tools/pagination.d.ts +15 -0
- package/dist/tools/pagination.js +93 -0
- package/dist/tools/plan-status.d.ts +2 -0
- package/dist/tools/plan-status.js +109 -0
- package/dist/tools/program-input.d.ts +3 -0
- package/dist/tools/program-input.js +19 -0
- package/dist/tools/program.d.ts +3 -0
- package/dist/tools/program.js +567 -0
- package/dist/tools/protocol-catalog.d.ts +12 -0
- package/dist/tools/protocol-catalog.js +46 -0
- package/dist/tools/ramification-tools.d.ts +12 -0
- package/dist/tools/ramification-tools.js +528 -0
- package/dist/tools/regex-compat.d.ts +9 -0
- package/dist/tools/regex-compat.js +96 -0
- package/dist/tools/registry.d.ts +51 -0
- package/dist/tools/registry.js +185 -0
- package/dist/tools/resolve.d.ts +2 -0
- package/dist/tools/resolve.js +107 -0
- package/dist/tools/shell-env.d.ts +2 -0
- package/dist/tools/shell-env.js +7 -0
- package/dist/tools/team-input.d.ts +3 -0
- package/dist/tools/team-input.js +129 -0
- package/dist/tools/team-tools.d.ts +7 -0
- package/dist/tools/team-tools.js +348 -0
- package/dist/tools/workspace-sessions.d.ts +2 -0
- package/dist/tools/workspace-sessions.js +35 -0
- package/dist/tui/account-entry.d.ts +1 -0
- package/dist/tui/account-entry.js +93 -0
- package/dist/tui/attachment-highlight.d.ts +1 -0
- package/dist/tui/attachment-highlight.js +24 -0
- package/dist/tui/attachment-refs.d.ts +2 -0
- package/dist/tui/attachment-refs.js +3 -0
- package/dist/tui/bottom-input.d.ts +219 -0
- package/dist/tui/bottom-input.js +1958 -0
- package/dist/tui/branding.d.ts +107 -0
- package/dist/tui/branding.js +750 -0
- package/dist/tui/clipboard-image.d.ts +10 -0
- package/dist/tui/clipboard-image.js +163 -0
- package/dist/tui/clipboard-text.d.ts +9 -0
- package/dist/tui/clipboard-text.js +51 -0
- package/dist/tui/clipboard-windows.d.ts +8 -0
- package/dist/tui/clipboard-windows.js +84 -0
- package/dist/tui/collapsible-command.d.ts +15 -0
- package/dist/tui/collapsible-command.js +48 -0
- package/dist/tui/command-feedback.d.ts +10 -0
- package/dist/tui/command-feedback.js +46 -0
- package/dist/tui/command-output-registry.d.ts +28 -0
- package/dist/tui/command-output-registry.js +103 -0
- package/dist/tui/command-transcript.d.ts +12 -0
- package/dist/tui/command-transcript.js +90 -0
- package/dist/tui/commands.d.ts +20 -0
- package/dist/tui/commands.js +131 -0
- package/dist/tui/context-bar.d.ts +4 -0
- package/dist/tui/context-bar.js +74 -0
- package/dist/tui/context-meter.d.ts +25 -0
- package/dist/tui/context-meter.js +81 -0
- package/dist/tui/cost-binding.d.ts +8 -0
- package/dist/tui/cost-binding.js +43 -0
- package/dist/tui/cost-tracker.d.ts +49 -0
- package/dist/tui/cost-tracker.js +122 -0
- package/dist/tui/diff.d.ts +9 -0
- package/dist/tui/diff.js +119 -0
- package/dist/tui/i18n-catalog.d.ts +5 -0
- package/dist/tui/i18n-catalog.js +184 -0
- package/dist/tui/i18n.d.ts +6 -0
- package/dist/tui/i18n.js +10 -0
- package/dist/tui/image-attachments.d.ts +46 -0
- package/dist/tui/image-attachments.js +167 -0
- package/dist/tui/images.d.ts +12 -0
- package/dist/tui/images.js +87 -0
- package/dist/tui/intro.d.ts +13 -0
- package/dist/tui/intro.js +109 -0
- package/dist/tui/language-preference.d.ts +6 -0
- package/dist/tui/language-preference.js +24 -0
- package/dist/tui/live-output.d.ts +2 -0
- package/dist/tui/live-output.js +18 -0
- package/dist/tui/locales.d.ts +19 -0
- package/dist/tui/locales.js +22 -0
- package/dist/tui/login-menu.d.ts +17 -0
- package/dist/tui/login-menu.js +58 -0
- package/dist/tui/logo.d.ts +8 -0
- package/dist/tui/logo.js +305 -0
- package/dist/tui/markdown-inline.d.ts +3 -0
- package/dist/tui/markdown-inline.js +99 -0
- package/dist/tui/markdown-table.d.ts +4 -0
- package/dist/tui/markdown-table.js +63 -0
- package/dist/tui/markdown.d.ts +11 -0
- package/dist/tui/markdown.js +257 -0
- package/dist/tui/mcp-transcript.d.ts +7 -0
- package/dist/tui/mcp-transcript.js +40 -0
- package/dist/tui/model-details.d.ts +2 -0
- package/dist/tui/model-details.js +21 -0
- package/dist/tui/model-selection.d.ts +7 -0
- package/dist/tui/model-selection.js +41 -0
- package/dist/tui/native-scrollback.d.ts +27 -0
- package/dist/tui/native-scrollback.js +134 -0
- package/dist/tui/onboarding.d.ts +72 -0
- package/dist/tui/onboarding.js +207 -0
- package/dist/tui/paste-collapse.d.ts +39 -0
- package/dist/tui/paste-collapse.js +117 -0
- package/dist/tui/perm-mode.d.ts +8 -0
- package/dist/tui/perm-mode.js +41 -0
- package/dist/tui/prompt-queue-store.d.ts +26 -0
- package/dist/tui/prompt-queue-store.js +87 -0
- package/dist/tui/prompt-queue.d.ts +47 -0
- package/dist/tui/prompt-queue.js +187 -0
- package/dist/tui/provider-menu.d.ts +33 -0
- package/dist/tui/provider-menu.js +175 -0
- package/dist/tui/question.d.ts +24 -0
- package/dist/tui/question.js +32 -0
- package/dist/tui/queue-screen.d.ts +25 -0
- package/dist/tui/queue-screen.js +152 -0
- package/dist/tui/queue-team.d.ts +3 -0
- package/dist/tui/queue-team.js +28 -0
- package/dist/tui/queued-questions.d.ts +20 -0
- package/dist/tui/queued-questions.js +163 -0
- package/dist/tui/quick-help.d.ts +1 -0
- package/dist/tui/quick-help.js +53 -0
- package/dist/tui/repl.d.ts +78 -0
- package/dist/tui/repl.js +4130 -0
- package/dist/tui/restore-queued-input.d.ts +3 -0
- package/dist/tui/restore-queued-input.js +20 -0
- package/dist/tui/review-detail.d.ts +6 -0
- package/dist/tui/review-detail.js +56 -0
- package/dist/tui/review-files.d.ts +3 -0
- package/dist/tui/review-files.js +22 -0
- package/dist/tui/review-render.d.ts +22 -0
- package/dist/tui/review-render.js +98 -0
- package/dist/tui/review-screen.d.ts +38 -0
- package/dist/tui/review-screen.js +358 -0
- package/dist/tui/review-store.d.ts +60 -0
- package/dist/tui/review-store.js +270 -0
- package/dist/tui/review-team.d.ts +2 -0
- package/dist/tui/review-team.js +27 -0
- package/dist/tui/selector-mouse.d.ts +26 -0
- package/dist/tui/selector-mouse.js +65 -0
- package/dist/tui/selector.d.ts +51 -0
- package/dist/tui/selector.js +299 -0
- package/dist/tui/session-replay.d.ts +10 -0
- package/dist/tui/session-replay.js +78 -0
- package/dist/tui/session-usage.d.ts +22 -0
- package/dist/tui/session-usage.js +55 -0
- package/dist/tui/skill-transcript.d.ts +5 -0
- package/dist/tui/skill-transcript.js +31 -0
- package/dist/tui/startup.d.ts +5 -0
- package/dist/tui/startup.js +61 -0
- package/dist/tui/status-line-loader.d.ts +8 -0
- package/dist/tui/status-line-loader.js +33 -0
- package/dist/tui/status-line.d.ts +38 -0
- package/dist/tui/status-line.js +213 -0
- package/dist/tui/system-language.d.ts +8 -0
- package/dist/tui/system-language.js +41 -0
- package/dist/tui/task-labels.d.ts +2 -0
- package/dist/tui/task-labels.js +7 -0
- package/dist/tui/term-bg.d.ts +4 -0
- package/dist/tui/term-bg.js +67 -0
- package/dist/tui/terminal-screen.d.ts +12 -0
- package/dist/tui/terminal-screen.js +1 -0
- package/dist/tui/terminal-text.d.ts +7 -0
- package/dist/tui/terminal-text.js +123 -0
- package/dist/tui/theme.d.ts +25 -0
- package/dist/tui/theme.js +383 -0
- package/dist/tui/tool-style.d.ts +7 -0
- package/dist/tui/tool-style.js +119 -0
- package/dist/tui/update-prompt.d.ts +14 -0
- package/dist/tui/update-prompt.js +104 -0
- package/dist/tui/usage-footer.d.ts +9 -0
- package/dist/tui/usage-footer.js +123 -0
- package/dist/tui/vascend-login.d.ts +68 -0
- package/dist/tui/vascend-login.js +355 -0
- package/dist/tui/web-login.d.ts +28 -0
- package/dist/tui/web-login.js +115 -0
- package/dist/vascend/activity-status.d.ts +12 -0
- package/dist/vascend/activity-status.js +68 -0
- package/dist/vascend/architecture-map.d.ts +73 -0
- package/dist/vascend/architecture-map.js +424 -0
- package/dist/vascend/attention-layout.d.ts +19 -0
- package/dist/vascend/attention-layout.js +141 -0
- package/dist/vascend/budget-allocator.d.ts +31 -0
- package/dist/vascend/budget-allocator.js +79 -0
- package/dist/vascend/candidate-collector.d.ts +20 -0
- package/dist/vascend/candidate-collector.js +220 -0
- package/dist/vascend/code-events.d.ts +24 -0
- package/dist/vascend/code-events.js +304 -0
- package/dist/vascend/code-graph-memory.d.ts +38 -0
- package/dist/vascend/code-graph-memory.js +334 -0
- package/dist/vascend/code-graph-runtime.d.ts +19 -0
- package/dist/vascend/code-graph-runtime.js +190 -0
- package/dist/vascend/code-graph-types.d.ts +58 -0
- package/dist/vascend/code-graph-types.js +50 -0
- package/dist/vascend/code-parser.d.ts +4 -0
- package/dist/vascend/code-parser.js +257 -0
- package/dist/vascend/competitor-knowledge.d.ts +53 -0
- package/dist/vascend/competitor-knowledge.js +262 -0
- package/dist/vascend/completeness.d.ts +16 -0
- package/dist/vascend/completeness.js +90 -0
- package/dist/vascend/context-autotuner.d.ts +45 -0
- package/dist/vascend/context-autotuner.js +231 -0
- package/dist/vascend/context-candidate.d.ts +45 -0
- package/dist/vascend/context-candidate.js +150 -0
- package/dist/vascend/context-capsule.d.ts +51 -0
- package/dist/vascend/context-capsule.js +133 -0
- package/dist/vascend/context-fabric.d.ts +108 -0
- package/dist/vascend/context-fabric.js +480 -0
- package/dist/vascend/context-feedback-loop.d.ts +56 -0
- package/dist/vascend/context-feedback-loop.js +204 -0
- package/dist/vascend/context-learning-identity.d.ts +4 -0
- package/dist/vascend/context-learning-identity.js +8 -0
- package/dist/vascend/context-links.d.ts +14 -0
- package/dist/vascend/context-links.js +83 -0
- package/dist/vascend/context-lint.d.ts +22 -0
- package/dist/vascend/context-lint.js +91 -0
- package/dist/vascend/context-market-selection.d.ts +17 -0
- package/dist/vascend/context-market-selection.js +50 -0
- package/dist/vascend/context-metrics.d.ts +25 -0
- package/dist/vascend/context-metrics.js +57 -0
- package/dist/vascend/context-pack-render.d.ts +16 -0
- package/dist/vascend/context-pack-render.js +52 -0
- package/dist/vascend/context-pareto.d.ts +33 -0
- package/dist/vascend/context-pareto.js +165 -0
- package/dist/vascend/context-pattern-explorer.d.ts +41 -0
- package/dist/vascend/context-pattern-explorer.js +276 -0
- package/dist/vascend/context-regret.d.ts +32 -0
- package/dist/vascend/context-regret.js +93 -0
- package/dist/vascend/context-retriever.d.ts +22 -0
- package/dist/vascend/context-retriever.js +243 -0
- package/dist/vascend/context-scope-index.d.ts +5 -0
- package/dist/vascend/context-scope-index.js +96 -0
- package/dist/vascend/context-scorer.d.ts +35 -0
- package/dist/vascend/context-scorer.js +162 -0
- package/dist/vascend/context-search-index.d.ts +12 -0
- package/dist/vascend/context-search-index.js +25 -0
- package/dist/vascend/context-snapshot.d.ts +22 -0
- package/dist/vascend/context-snapshot.js +135 -0
- package/dist/vascend/context-window-compiler.d.ts +42 -0
- package/dist/vascend/context-window-compiler.js +237 -0
- package/dist/vascend/contract-memory.d.ts +61 -0
- package/dist/vascend/contract-memory.js +435 -0
- package/dist/vascend/council.d.ts +58 -0
- package/dist/vascend/council.js +337 -0
- package/dist/vascend/decision-promotion.d.ts +48 -0
- package/dist/vascend/decision-promotion.js +410 -0
- package/dist/vascend/delta-context.d.ts +12 -0
- package/dist/vascend/delta-context.js +36 -0
- package/dist/vascend/dev-context-compiler.d.ts +27 -0
- package/dist/vascend/dev-context-compiler.js +133 -0
- package/dist/vascend/dev-context-layout.d.ts +30 -0
- package/dist/vascend/dev-context-layout.js +262 -0
- package/dist/vascend/evidence-slots.d.ts +14 -0
- package/dist/vascend/evidence-slots.js +55 -0
- package/dist/vascend/expansion-levels.d.ts +15 -0
- package/dist/vascend/expansion-levels.js +178 -0
- package/dist/vascend/file-lock.d.ts +7 -0
- package/dist/vascend/file-lock.js +95 -0
- package/dist/vascend/granular-kingdom.d.ts +25 -0
- package/dist/vascend/granular-kingdom.js +259 -0
- package/dist/vascend/granular-launcher.d.ts +48 -0
- package/dist/vascend/granular-launcher.js +202 -0
- package/dist/vascend/kingdom-bus.d.ts +25 -0
- package/dist/vascend/kingdom-bus.js +54 -0
- package/dist/vascend/kingdom-channel.d.ts +22 -0
- package/dist/vascend/kingdom-channel.js +180 -0
- package/dist/vascend/kingdom-kpi.d.ts +48 -0
- package/dist/vascend/kingdom-kpi.js +172 -0
- package/dist/vascend/kingdom-live.d.ts +28 -0
- package/dist/vascend/kingdom-live.js +61 -0
- package/dist/vascend/kingdom-run.d.ts +18 -0
- package/dist/vascend/kingdom-run.js +506 -0
- package/dist/vascend/kingdom-scribe.d.ts +20 -0
- package/dist/vascend/kingdom-scribe.js +52 -0
- package/dist/vascend/kingdom.d.ts +79 -0
- package/dist/vascend/kingdom.js +870 -0
- package/dist/vascend/lexical-index.d.ts +10 -0
- package/dist/vascend/lexical-index.js +99 -0
- package/dist/vascend/lexical-search.d.ts +29 -0
- package/dist/vascend/lexical-search.js +262 -0
- package/dist/vascend/long-term-context.d.ts +51 -0
- package/dist/vascend/long-term-context.js +194 -0
- package/dist/vascend/mandate.d.ts +33 -0
- package/dist/vascend/mandate.js +107 -0
- package/dist/vascend/memory-packet.d.ts +13 -0
- package/dist/vascend/memory-packet.js +155 -0
- package/dist/vascend/memory-status.d.ts +22 -0
- package/dist/vascend/memory-status.js +73 -0
- package/dist/vascend/memory-store.d.ts +62 -0
- package/dist/vascend/memory-store.js +273 -0
- package/dist/vascend/objective-revision.d.ts +69 -0
- package/dist/vascend/objective-revision.js +319 -0
- package/dist/vascend/patch-plan-store.d.ts +33 -0
- package/dist/vascend/patch-plan-store.js +240 -0
- package/dist/vascend/patch-plan.d.ts +97 -0
- package/dist/vascend/patch-plan.js +345 -0
- package/dist/vascend/plan-progress.d.ts +11 -0
- package/dist/vascend/plan-progress.js +68 -0
- package/dist/vascend/plan-store.d.ts +64 -0
- package/dist/vascend/plan-store.js +460 -0
- package/dist/vascend/proof-chains.d.ts +19 -0
- package/dist/vascend/proof-chains.js +120 -0
- package/dist/vascend/ramification-store.d.ts +25 -0
- package/dist/vascend/ramification-store.js +94 -0
- package/dist/vascend/ramification.d.ts +193 -0
- package/dist/vascend/ramification.js +583 -0
- package/dist/vascend/recall-planner.d.ts +17 -0
- package/dist/vascend/recall-planner.js +109 -0
- package/dist/vascend/requirements.d.ts +31 -0
- package/dist/vascend/requirements.js +151 -0
- package/dist/vascend/reviewer.d.ts +9 -0
- package/dist/vascend/reviewer.js +93 -0
- package/dist/vascend/room-graph.d.ts +29 -0
- package/dist/vascend/room-graph.js +242 -0
- package/dist/vascend/room-memory.d.ts +57 -0
- package/dist/vascend/room-memory.js +631 -0
- package/dist/vascend/runtime.d.ts +84 -0
- package/dist/vascend/runtime.js +286 -0
- package/dist/vascend/self-improve.d.ts +104 -0
- package/dist/vascend/self-improve.js +396 -0
- package/dist/vascend/session-search.d.ts +52 -0
- package/dist/vascend/session-search.js +349 -0
- package/dist/vascend/supersession-graph.d.ts +14 -0
- package/dist/vascend/supersession-graph.js +70 -0
- package/dist/vascend/team-areas.d.ts +9 -0
- package/dist/vascend/team-areas.js +28 -0
- package/dist/vascend/team-handoff.d.ts +24 -0
- package/dist/vascend/team-handoff.js +37 -0
- package/dist/vascend/team-scheduler.d.ts +13 -0
- package/dist/vascend/team-scheduler.js +74 -0
- package/dist/vascend/team-session.d.ts +42 -0
- package/dist/vascend/team-session.js +142 -0
- package/dist/vascend/test-failure-memory.d.ts +76 -0
- package/dist/vascend/test-failure-memory.js +354 -0
- package/dist/vascend/token-market.d.ts +42 -0
- package/dist/vascend/token-market.js +144 -0
- package/dist/vascend/tuner-baseline-store.d.ts +52 -0
- package/dist/vascend/tuner-baseline-store.js +446 -0
- package/dist/vascend/user-profile.d.ts +44 -0
- package/dist/vascend/user-profile.js +131 -0
- package/dist/vascend/vision.d.ts +94 -0
- package/dist/vascend/vision.js +375 -0
- package/dist/vascend/work-agent.d.ts +12 -0
- package/dist/vascend/work-agent.js +83 -0
- package/dist/vascend/work-queue.d.ts +62 -0
- package/dist/vascend/work-queue.js +255 -0
- package/dist/vascend/work-runner.d.ts +64 -0
- package/dist/vascend/work-runner.js +137 -0
- package/dist/vascend/worktree.d.ts +38 -0
- package/dist/vascend/worktree.js +206 -0
- package/dist/vendor/computer-use/README.md +7 -0
- package/dist/vendor/computer-use/computer-desktop.js +211 -0
- package/dist/vendor/computer-use/computer-observe.js +315 -0
- package/dist/vendor/computer-use/computer-scripts.js +1230 -0
- package/dist/vendor/computer-use/computer-tools.js +2136 -0
- package/dist/vendor/computer-use/package.json +1 -0
- package/dist/vendor/computer-use/rac/atomic-input.js +91 -0
- package/dist/vendor/computer-use/rac/grammatica.js +101 -0
- package/dist/vendor/computer-use/rac/parser.js +185 -0
- package/dist/vendor/computer-use/rac/protocol.js +136 -0
- package/install.ps1 +30 -0
- package/install.sh +50 -0
- package/package.json +56 -0
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
export function completenessEnabled(env) {
|
|
2
|
+
const v = (env["TALOS_COMPLETENESS"] ?? "").trim().toLowerCase();
|
|
3
|
+
return !(v === "0" || v === "off" || v === "false" || v === "no");
|
|
4
|
+
}
|
|
5
|
+
// Quante volte al massimo svegliare l'agente per completare (anti-loop).
|
|
6
|
+
export function completenessRounds(env) {
|
|
7
|
+
const n = Number(env["TALOS_COMPLETENESS_ROUNDS"]);
|
|
8
|
+
return Number.isInteger(n) && n >= 0 ? n : 2;
|
|
9
|
+
}
|
|
10
|
+
const CRITIC_SYSTEM = `# Critico di completezza
|
|
11
|
+
INDICE
|
|
12
|
+
1 = goal
|
|
13
|
+
2 = consegna
|
|
14
|
+
3 = mancante
|
|
15
|
+
|
|
16
|
+
DEFINIZIONI
|
|
17
|
+
@goal[reale]: l'obiettivo VERO dell'utente, non il piano svolto
|
|
18
|
+
@consegna[criterio]: completa = funzionante e utilizzabile come chiesto (es. una SaaS: dati, auth, CRUD, UI, flussi base)
|
|
19
|
+
@mancante[regola]: elenca SOLO pezzi ESSENZIALI assenti; niente perfezionismo, niente nice-to-have
|
|
20
|
+
@rigore[bilancia]: se la consegna soddisfa il goal nella sostanza, complete=true
|
|
21
|
+
|
|
22
|
+
RELAZIONI
|
|
23
|
+
@R1: @goal[reale] -> @consegna[criterio] [ misura la consegna sul goal vero ]
|
|
24
|
+
@R2: @consegna[criterio] -> @mancante[regola] [ elenca solo l'essenziale assente ]
|
|
25
|
+
|
|
26
|
+
OUTPUT: SOLO JSON {"complete": bool, "missing": [stringhe brevi]}. Niente prosa, niente markdown.`;
|
|
27
|
+
export async function judgeCompleteness(opts) {
|
|
28
|
+
const { harness, goal, evidence, signal } = opts;
|
|
29
|
+
const resolved = harness.providers.resolve(harness.config.model);
|
|
30
|
+
if (!resolved)
|
|
31
|
+
return unknownVerdict("provider del critico non disponibile");
|
|
32
|
+
const user = `GOAL dell'utente:\n${goal}\n\nLAVORO SVOLTO (sintesi + attivita):\n${evidence}\n\n` +
|
|
33
|
+
`Manca qualcosa di ESSENZIALE per consegnare il goal in modo completo e funzionante? ` +
|
|
34
|
+
`Rispondi SOLO JSON {"complete": bool, "missing": [...]}.`;
|
|
35
|
+
try {
|
|
36
|
+
const res = await resolved.provider.complete({
|
|
37
|
+
system: CRITIC_SYSTEM,
|
|
38
|
+
messages: [{ role: "user", content: [{ type: "text", text: user }] }],
|
|
39
|
+
tools: [],
|
|
40
|
+
model: resolved.modelId,
|
|
41
|
+
maxTokens: harness.config.maxTokens,
|
|
42
|
+
signal,
|
|
43
|
+
sessionId: `completeness-${harness.session.id}`,
|
|
44
|
+
});
|
|
45
|
+
return parseVerdict(res.text);
|
|
46
|
+
}
|
|
47
|
+
catch (error) {
|
|
48
|
+
return unknownVerdict(`verifica non riuscita: ${error instanceof Error ? error.message : String(error)}`);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
function parseVerdict(text) {
|
|
52
|
+
const m = /\{[\s\S]*\}/.exec(text);
|
|
53
|
+
if (!m)
|
|
54
|
+
return unknownVerdict("risposta del critico non strutturata");
|
|
55
|
+
try {
|
|
56
|
+
const raw = JSON.parse(m[0]);
|
|
57
|
+
const missing = Array.isArray(raw.missing) ? raw.missing.map(String).map((s) => s.trim()).filter(Boolean).slice(0, 12) : [];
|
|
58
|
+
if (raw.complete === true && missing.length === 0)
|
|
59
|
+
return { complete: true, missing: [] };
|
|
60
|
+
if (raw.complete === false) {
|
|
61
|
+
return { complete: false, missing: missing.length ? missing : ["criteri di consegna non dimostrati"] };
|
|
62
|
+
}
|
|
63
|
+
return unknownVerdict("il critico non ha espresso un verdetto booleano");
|
|
64
|
+
}
|
|
65
|
+
catch {
|
|
66
|
+
return unknownVerdict("JSON del critico non valido");
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
function unknownVerdict(reason) {
|
|
70
|
+
return { complete: false, missing: [], uncertain: true, reason };
|
|
71
|
+
}
|
|
72
|
+
// Steer in notazione Danilov per far continuare l'agente sui pezzi mancanti.
|
|
73
|
+
export function buildCompletenessSteer(goal, missing) {
|
|
74
|
+
return `[VASCEND_COMPLETEZZA]
|
|
75
|
+
INDICE
|
|
76
|
+
1 = goal
|
|
77
|
+
2 = mancante
|
|
78
|
+
3 = azione
|
|
79
|
+
|
|
80
|
+
DEFINIZIONI
|
|
81
|
+
@goal[reale]: "${goal.replace(/"/g, "'").slice(0, 200)}"
|
|
82
|
+
@mancante[pezzi]: ${missing.map((m, i) => `(${i + 1}) ${m}`).join(" ; ")}
|
|
83
|
+
@azione[continua]: NON ti fermi al piano gia' fatto; il goal non e' "ho creato i gruppi" ma "ho consegnato la cosa completa"
|
|
84
|
+
|
|
85
|
+
RELAZIONI
|
|
86
|
+
@R1: @mancante[pezzi] -> @azione[continua] [ pianifica e COSTRUISCI i pezzi mancanti ]
|
|
87
|
+
@R2: @azione[continua] -> @goal[reale] [ finche' la consegna soddisfa il goal vero ]
|
|
88
|
+
|
|
89
|
+
OUTPUT: crea altri gruppi/attivita e realizza i pezzi mancanti elencati, poi illuminali. Vai fino a una consegna completa e funzionante, non fermarti al primo piano.`;
|
|
90
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { ScoreWeights, TierThresholds } from "./context-scorer.js";
|
|
2
|
+
import type { ContextMetrics } from "./context-metrics.js";
|
|
3
|
+
export interface QualityTargets {
|
|
4
|
+
readonly minUtility: number;
|
|
5
|
+
readonly maxStaleRate: number;
|
|
6
|
+
readonly minEvidenceCoverage: number;
|
|
7
|
+
readonly maxEvidenceCoverage: number;
|
|
8
|
+
}
|
|
9
|
+
export declare const DEFAULT_TARGETS: QualityTargets;
|
|
10
|
+
export interface TuneConfig {
|
|
11
|
+
readonly weights: ScoreWeights;
|
|
12
|
+
readonly thresholds: TierThresholds;
|
|
13
|
+
}
|
|
14
|
+
export declare const DEFAULT_CONFIG: TuneConfig;
|
|
15
|
+
export declare const WEIGHT_BOUNDS: Readonly<Record<keyof ScoreWeights, readonly [number, number]>>;
|
|
16
|
+
export declare const HIGH_BOUNDS: readonly [number, number];
|
|
17
|
+
export declare const MID_BOUNDS: readonly [number, number];
|
|
18
|
+
export interface TuneAdjustment {
|
|
19
|
+
readonly lever: keyof ScoreWeights | "thresholdHigh" | "thresholdMid";
|
|
20
|
+
readonly delta: number;
|
|
21
|
+
readonly reason: string;
|
|
22
|
+
}
|
|
23
|
+
export declare function diagnose(metrics: ContextMetrics, targets?: QualityTargets): TuneAdjustment[];
|
|
24
|
+
export declare function applyAdjustments(config: TuneConfig, adjustments: readonly TuneAdjustment[]): TuneConfig;
|
|
25
|
+
export declare function autotuneStep(config: TuneConfig, metrics: ContextMetrics, targets?: QualityTargets): {
|
|
26
|
+
readonly config: TuneConfig;
|
|
27
|
+
readonly adjustments: readonly TuneAdjustment[];
|
|
28
|
+
};
|
|
29
|
+
export declare function qualityScore(metrics: ContextMetrics, targets?: QualityTargets): number;
|
|
30
|
+
export declare function hasConverged(adjustments: readonly TuneAdjustment[], scoreDelta: number, minDelta?: number): boolean;
|
|
31
|
+
export type CompileMetrics = (config: TuneConfig) => ContextMetrics;
|
|
32
|
+
export interface GreedyOptions {
|
|
33
|
+
readonly config?: TuneConfig;
|
|
34
|
+
readonly targets?: QualityTargets;
|
|
35
|
+
readonly maxRounds?: number;
|
|
36
|
+
readonly minGain?: number;
|
|
37
|
+
}
|
|
38
|
+
export interface GreedyResult {
|
|
39
|
+
readonly bestConfig: TuneConfig;
|
|
40
|
+
readonly bestScore: number;
|
|
41
|
+
readonly initialScore: number;
|
|
42
|
+
readonly rounds: number;
|
|
43
|
+
}
|
|
44
|
+
export declare function runFeedbackLoopGreedy(compile: CompileMetrics, opts?: GreedyOptions): GreedyResult;
|
|
45
|
+
export declare function formatAdjustments(adjustments: readonly TuneAdjustment[]): string;
|
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
// Context Autotuner (metodo Danilov, Memory OS) -- L2: l'anello di retroazione.
|
|
2
|
+
//
|
|
3
|
+
// Il salto sopra le metriche: non basta MISURARE il contesto compilato, bisogna
|
|
4
|
+
// USARE la misura per RICONFIGURARE lo scorer. Questo modulo chiude l'anello.
|
|
5
|
+
//
|
|
6
|
+
// compile -> ContextMetrics -> autotune(weights, thresholds) -> compile ...
|
|
7
|
+
//
|
|
8
|
+
// E' il cuore dell'AUTO-MIGLIORAMENTO dell'architettura del context: a parita'
|
|
9
|
+
// di store, il sistema regola da solo i pesi multi-fattore e le soglie di tier
|
|
10
|
+
// finche' le metriche non convergono verso target di qualita'.
|
|
11
|
+
//
|
|
12
|
+
// Diagnosi -> aggiustamento (tutto deterministico, niente provider, niente rete):
|
|
13
|
+
// - stale_memory_rate alto -> alza conflictRisk (caccia gli obsoleti)
|
|
14
|
+
// - context_utility basso -> alza relevance, abbassa tokenCost
|
|
15
|
+
// - evidence_coverage basso -> abbassa la soglia HIGH (piu' corpo)
|
|
16
|
+
// - evidence_coverage troppo alto + utility basso -> alza la soglia HIGH
|
|
17
|
+
// - decision_consistency falso -> alza conflictRisk (decisioni superseded fuori)
|
|
18
|
+
//
|
|
19
|
+
// Modulo PURO e DETERMINISTICO: stessi input -> stesso output. Ogni passo e'
|
|
20
|
+
// limitato da uno step massimo e i pesi sono clampati in un range sano, cosi'
|
|
21
|
+
// l'anello e' STABILE (non diverge) e MONOTONO verso i target.
|
|
22
|
+
import { DEFAULT_WEIGHTS, DEFAULT_THRESHOLDS } from "./context-scorer.js";
|
|
23
|
+
export const DEFAULT_TARGETS = {
|
|
24
|
+
minUtility: 8,
|
|
25
|
+
maxStaleRate: 0.1,
|
|
26
|
+
minEvidenceCoverage: 0.35,
|
|
27
|
+
maxEvidenceCoverage: 0.75,
|
|
28
|
+
};
|
|
29
|
+
export const DEFAULT_CONFIG = {
|
|
30
|
+
weights: DEFAULT_WEIGHTS,
|
|
31
|
+
thresholds: DEFAULT_THRESHOLDS,
|
|
32
|
+
};
|
|
33
|
+
// --- range sani di clamping -------------------------------------------------
|
|
34
|
+
// Un controllore senza limiti diverge. Ogni leva ha un intervallo entro cui
|
|
35
|
+
// puo' muoversi: cosi' l'anello resta stabile a prescindere dalle metriche.
|
|
36
|
+
// Esportati: l'esploratore multi-pattern (context-pattern-explorer) li riusa per
|
|
37
|
+
// generare e sanificare i suoi pattern dentro lo stesso spazio sano.
|
|
38
|
+
export const WEIGHT_BOUNDS = {
|
|
39
|
+
relevance: [0.5, 2.0],
|
|
40
|
+
dependency: [0.3, 1.5],
|
|
41
|
+
trust: [0.2, 1.2],
|
|
42
|
+
freshness: [0.1, 1.0],
|
|
43
|
+
novelty: [0.1, 1.0],
|
|
44
|
+
conflictRisk: [0.5, 2.5],
|
|
45
|
+
tokenCost: [0.05, 0.8],
|
|
46
|
+
};
|
|
47
|
+
export const HIGH_BOUNDS = [0.6, 1.8];
|
|
48
|
+
export const MID_BOUNDS = [0.2, 0.9];
|
|
49
|
+
// Passo massimo per iterazione: piccolo = anello dolce e stabile.
|
|
50
|
+
const STEP = 0.1;
|
|
51
|
+
const THRESH_STEP = 0.08;
|
|
52
|
+
function clamp(v, lo, hi) {
|
|
53
|
+
if (!Number.isFinite(v))
|
|
54
|
+
return lo;
|
|
55
|
+
return Math.max(lo, Math.min(hi, v));
|
|
56
|
+
}
|
|
57
|
+
function round3(v) {
|
|
58
|
+
return Math.round(v * 1000) / 1000;
|
|
59
|
+
}
|
|
60
|
+
// Diagnostica le metriche rispetto ai target e produce la lista di correzioni.
|
|
61
|
+
// PURA: nessun side-effect. Ogni correzione e' limitata a +/- STEP.
|
|
62
|
+
export function diagnose(metrics, targets = DEFAULT_TARGETS) {
|
|
63
|
+
const adj = [];
|
|
64
|
+
// 1) Troppi obsoleti fra gli inclusi -> penalizza di piu' il conflitto.
|
|
65
|
+
if (metrics.staleMemoryRate > targets.maxStaleRate) {
|
|
66
|
+
const severity = Math.min(1, (metrics.staleMemoryRate - targets.maxStaleRate) / Math.max(0.01, 1 - targets.maxStaleRate));
|
|
67
|
+
adj.push({
|
|
68
|
+
lever: "conflictRisk",
|
|
69
|
+
delta: +round3(STEP * (0.5 + severity)),
|
|
70
|
+
reason: `stale_memory_rate ${metrics.staleMemoryRate} > ${targets.maxStaleRate}`,
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
// 2) Decisioni superseded entrate -> rinforza il conflictRisk con decisione.
|
|
74
|
+
if (!metrics.decisionConsistency) {
|
|
75
|
+
adj.push({
|
|
76
|
+
lever: "conflictRisk",
|
|
77
|
+
delta: +round3(STEP),
|
|
78
|
+
reason: "decision_consistency=false: decisione obsoleta inclusa",
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
// 3) Densita' utile bassa -> piu' rilevanza, meno penalita' di costo.
|
|
82
|
+
if (metrics.contextUtility < targets.minUtility) {
|
|
83
|
+
adj.push({
|
|
84
|
+
lever: "relevance",
|
|
85
|
+
delta: +round3(STEP),
|
|
86
|
+
reason: `context_utility ${metrics.contextUtility} < ${targets.minUtility}`,
|
|
87
|
+
});
|
|
88
|
+
adj.push({
|
|
89
|
+
lever: "tokenCost",
|
|
90
|
+
delta: -round3(STEP * 0.5),
|
|
91
|
+
reason: `context_utility basso: riduci penalita' di costo`,
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
// 4) Copertura di evidenza (corpo) troppo bassa -> abbassa la soglia HIGH
|
|
95
|
+
// cosi' piu' candidati entrano come corpo invece che come handle.
|
|
96
|
+
if (metrics.evidenceCoverage < targets.minEvidenceCoverage) {
|
|
97
|
+
adj.push({
|
|
98
|
+
lever: "thresholdHigh",
|
|
99
|
+
delta: -round3(THRESH_STEP),
|
|
100
|
+
reason: `evidence_coverage ${metrics.evidenceCoverage} < ${targets.minEvidenceCoverage}`,
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
else if (metrics.evidenceCoverage > targets.maxEvidenceCoverage && metrics.contextUtility < targets.minUtility) {
|
|
104
|
+
// 5) Quasi tutto e' corpo ma la densita' resta bassa -> alza la soglia HIGH
|
|
105
|
+
// (troppo corpo gonfia i token senza aggiungere utilita').
|
|
106
|
+
adj.push({
|
|
107
|
+
lever: "thresholdHigh",
|
|
108
|
+
delta: +round3(THRESH_STEP),
|
|
109
|
+
reason: `evidence_coverage ${metrics.evidenceCoverage} > ${targets.maxEvidenceCoverage} con utility bassa`,
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
return adj;
|
|
113
|
+
}
|
|
114
|
+
// --- applicazione: config + aggiustamenti -> nuova config -------------------
|
|
115
|
+
// Applica le correzioni a una configurazione, sommando i delta per leva e
|
|
116
|
+
// clampando ogni leva nel suo range sano. PURA e deterministica.
|
|
117
|
+
export function applyAdjustments(config, adjustments) {
|
|
118
|
+
// Somma i delta per leva (piu' correzioni possono toccare la stessa leva).
|
|
119
|
+
const weightDelta = {};
|
|
120
|
+
let highDelta = 0;
|
|
121
|
+
let midDelta = 0;
|
|
122
|
+
for (const a of adjustments) {
|
|
123
|
+
if (a.lever === "thresholdHigh")
|
|
124
|
+
highDelta += a.delta;
|
|
125
|
+
else if (a.lever === "thresholdMid")
|
|
126
|
+
midDelta += a.delta;
|
|
127
|
+
else
|
|
128
|
+
weightDelta[a.lever] = (weightDelta[a.lever] ?? 0) + a.delta;
|
|
129
|
+
}
|
|
130
|
+
const weights = {
|
|
131
|
+
relevance: tuneWeight("relevance", config.weights.relevance, weightDelta.relevance),
|
|
132
|
+
dependency: tuneWeight("dependency", config.weights.dependency, weightDelta.dependency),
|
|
133
|
+
trust: tuneWeight("trust", config.weights.trust, weightDelta.trust),
|
|
134
|
+
freshness: tuneWeight("freshness", config.weights.freshness, weightDelta.freshness),
|
|
135
|
+
novelty: tuneWeight("novelty", config.weights.novelty, weightDelta.novelty),
|
|
136
|
+
conflictRisk: tuneWeight("conflictRisk", config.weights.conflictRisk, weightDelta.conflictRisk),
|
|
137
|
+
tokenCost: tuneWeight("tokenCost", config.weights.tokenCost, weightDelta.tokenCost),
|
|
138
|
+
};
|
|
139
|
+
// La soglia MID resta sempre sotto la HIGH (invariante di tier).
|
|
140
|
+
const high = clamp(round3(config.thresholds.high + highDelta), HIGH_BOUNDS[0], HIGH_BOUNDS[1]);
|
|
141
|
+
const midRaw = clamp(round3(config.thresholds.mid + midDelta), MID_BOUNDS[0], MID_BOUNDS[1]);
|
|
142
|
+
const mid = Math.min(midRaw, round3(high - 0.1));
|
|
143
|
+
return { weights, thresholds: { high, mid } };
|
|
144
|
+
}
|
|
145
|
+
function tuneWeight(lever, current, delta) {
|
|
146
|
+
const [lo, hi] = WEIGHT_BOUNDS[lever];
|
|
147
|
+
return clamp(round3(current + (delta ?? 0)), lo, hi);
|
|
148
|
+
}
|
|
149
|
+
// Un solo passo dell'anello: diagnosi + applicazione. Ritorna la nuova config e
|
|
150
|
+
// le correzioni applicate (per traccia/log).
|
|
151
|
+
export function autotuneStep(config, metrics, targets = DEFAULT_TARGETS) {
|
|
152
|
+
const adjustments = diagnose(metrics, targets);
|
|
153
|
+
return { config: applyAdjustments(config, adjustments), adjustments };
|
|
154
|
+
}
|
|
155
|
+
// --- punteggio scalare di qualita' (per misurare il progresso) --------------
|
|
156
|
+
// Riduce le metriche a un singolo numero 0..100: la "bonta'" del contesto.
|
|
157
|
+
// Serve all'anello per dire se un passo MIGLIORA davvero (monotonia) e per
|
|
158
|
+
// decidere la convergenza. Pesa densita' utile, freschezza dalla memoria e
|
|
159
|
+
// copertura di evidenza dentro la banda target; penalizza stale e incoerenza.
|
|
160
|
+
export function qualityScore(metrics, targets = DEFAULT_TARGETS) {
|
|
161
|
+
// Densita' utile normalizzata sul target (cap a 1).
|
|
162
|
+
const utility = clamp(metrics.contextUtility / Math.max(1, targets.minUtility), 0, 1);
|
|
163
|
+
// Stale: 1 quando rate=0, scende a 0 quando supera abbondantemente il max.
|
|
164
|
+
const staleSlack = Math.max(0.01, targets.maxStaleRate * 3);
|
|
165
|
+
const cleanliness = clamp(1 - metrics.staleMemoryRate / staleSlack, 0, 1);
|
|
166
|
+
// Copertura dentro la banda [min,max] = 1; fuori banda scende linearmente.
|
|
167
|
+
const cov = metrics.evidenceCoverage;
|
|
168
|
+
let coverage;
|
|
169
|
+
if (cov >= targets.minEvidenceCoverage && cov <= targets.maxEvidenceCoverage) {
|
|
170
|
+
coverage = 1;
|
|
171
|
+
}
|
|
172
|
+
else if (cov < targets.minEvidenceCoverage) {
|
|
173
|
+
coverage = clamp(cov / Math.max(0.01, targets.minEvidenceCoverage), 0, 1);
|
|
174
|
+
}
|
|
175
|
+
else {
|
|
176
|
+
coverage = clamp(1 - (cov - targets.maxEvidenceCoverage) / Math.max(0.01, 1 - targets.maxEvidenceCoverage), 0, 1);
|
|
177
|
+
}
|
|
178
|
+
const consistency = metrics.decisionConsistency ? 1 : 0;
|
|
179
|
+
// Combinazione pesata -> 0..100. Pulizia e densita' pesano di piu'.
|
|
180
|
+
const raw = 0.32 * utility + 0.28 * cleanliness + 0.22 * coverage + 0.18 * consistency;
|
|
181
|
+
return Math.round(raw * 100);
|
|
182
|
+
}
|
|
183
|
+
// Convergenza: nessuna correzione proposta E qualita' sopra una soglia, oppure
|
|
184
|
+
// il punteggio non migliora piu' in modo apprezzabile.
|
|
185
|
+
export function hasConverged(adjustments, scoreDelta, minDelta = 1) {
|
|
186
|
+
return adjustments.length === 0 || scoreDelta < minDelta;
|
|
187
|
+
}
|
|
188
|
+
// L'autotuner SINGLE-PATH puro e autocontenuto: parte da una config, applica la
|
|
189
|
+
// diagnosi greedy e converge al primo ottimo locale. Identico nello spirito a
|
|
190
|
+
// runFeedbackLoop (context-feedback-loop) ma senza dipendenze sul compiler reale,
|
|
191
|
+
// cosi' l'esploratore multi-pattern puo' derivare i suoi punti greedy/restart
|
|
192
|
+
// senza creare un ciclo di import. MONOTONO: tiene sempre la config migliore.
|
|
193
|
+
export function runFeedbackLoopGreedy(compile, opts = {}) {
|
|
194
|
+
const targets = opts.targets ?? DEFAULT_TARGETS;
|
|
195
|
+
const maxRounds = opts.maxRounds && opts.maxRounds > 0 ? opts.maxRounds : 8;
|
|
196
|
+
const minGain = typeof opts.minGain === "number" ? opts.minGain : 1;
|
|
197
|
+
let config = opts.config ?? DEFAULT_CONFIG;
|
|
198
|
+
let metrics = compile(config);
|
|
199
|
+
let score = qualityScore(metrics, targets);
|
|
200
|
+
const initialScore = score;
|
|
201
|
+
let bestConfig = config;
|
|
202
|
+
let bestScore = score;
|
|
203
|
+
let rounds = 0;
|
|
204
|
+
for (let round = 0; round < maxRounds; round++) {
|
|
205
|
+
rounds++;
|
|
206
|
+
const step = autotuneStep(config, metrics, targets);
|
|
207
|
+
if (step.adjustments.length === 0)
|
|
208
|
+
break;
|
|
209
|
+
const nextMetrics = compile(step.config);
|
|
210
|
+
const nextScore = qualityScore(nextMetrics, targets);
|
|
211
|
+
const gain = nextScore - score;
|
|
212
|
+
if (nextScore > bestScore) {
|
|
213
|
+
bestScore = nextScore;
|
|
214
|
+
bestConfig = step.config;
|
|
215
|
+
}
|
|
216
|
+
if (hasConverged(step.adjustments, gain, minGain))
|
|
217
|
+
break;
|
|
218
|
+
config = step.config;
|
|
219
|
+
metrics = nextMetrics;
|
|
220
|
+
score = nextScore;
|
|
221
|
+
}
|
|
222
|
+
return { bestConfig, bestScore, initialScore, rounds };
|
|
223
|
+
}
|
|
224
|
+
// Formatta un passo dell'anello come blocco Danilov (log/TUI).
|
|
225
|
+
export function formatAdjustments(adjustments) {
|
|
226
|
+
if (!adjustments.length)
|
|
227
|
+
return "@autotune: nessuna correzione (convergenza locale)";
|
|
228
|
+
return adjustments
|
|
229
|
+
.map((a) => `@tune[${a.lever}]: ${a.delta > 0 ? "+" : ""}${a.delta} [ ${a.reason} ]`)
|
|
230
|
+
.join("\n");
|
|
231
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { MemoryDomain, MemoryEvent } from "./memory-store.js";
|
|
2
|
+
export type ContextKind = "room" | "decision" | "note" | "asset" | "kingdom" | "task" | "event" | "file";
|
|
3
|
+
export type ContextStatus = "active" | "superseded" | "archived";
|
|
4
|
+
export type ContextConfidence = "low" | "medium" | "high";
|
|
5
|
+
export interface ContextCandidate {
|
|
6
|
+
readonly id: string;
|
|
7
|
+
readonly kind: ContextKind;
|
|
8
|
+
readonly domain: MemoryDomain;
|
|
9
|
+
readonly subject: string;
|
|
10
|
+
readonly summary: string;
|
|
11
|
+
readonly body: string;
|
|
12
|
+
readonly terms: readonly string[];
|
|
13
|
+
readonly links: readonly string[];
|
|
14
|
+
readonly createdAt: number;
|
|
15
|
+
readonly trust: ContextConfidence;
|
|
16
|
+
readonly status: ContextStatus;
|
|
17
|
+
readonly supersededBy: string | null;
|
|
18
|
+
readonly dependency: boolean;
|
|
19
|
+
readonly scopeId: string | null;
|
|
20
|
+
}
|
|
21
|
+
export type ContextCandidateInput = Partial<ContextCandidate> & Pick<ContextCandidate, "id" | "kind">;
|
|
22
|
+
export interface ContextScoreFactors {
|
|
23
|
+
readonly relevance: number;
|
|
24
|
+
readonly dependency: number;
|
|
25
|
+
readonly trust: number;
|
|
26
|
+
readonly freshness: number;
|
|
27
|
+
readonly novelty: number;
|
|
28
|
+
readonly conflictRisk: number;
|
|
29
|
+
readonly tokenCost: number;
|
|
30
|
+
}
|
|
31
|
+
export type ContextTier = "high" | "mid" | "low";
|
|
32
|
+
export interface ContextScore {
|
|
33
|
+
readonly candidate: ContextCandidate;
|
|
34
|
+
readonly score: number;
|
|
35
|
+
readonly factors: ContextScoreFactors;
|
|
36
|
+
readonly tier: ContextTier;
|
|
37
|
+
}
|
|
38
|
+
export declare function normalizeCandidate(input: ContextCandidateInput): ContextCandidate;
|
|
39
|
+
export declare function kindFromEvent(event: Pick<MemoryEvent, "domain" | "type">): ContextKind;
|
|
40
|
+
export declare function candidateFromEvent(event: MemoryEvent, opts?: {
|
|
41
|
+
readonly scopeId?: string;
|
|
42
|
+
readonly dependency?: boolean;
|
|
43
|
+
}): ContextCandidate;
|
|
44
|
+
export declare function estimateCandidateTokens(candidate: ContextCandidate, form: "body" | "handle"): number;
|
|
45
|
+
export declare function confidenceWeight(confidence: ContextConfidence): number;
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
// Tipi del dominio CANDIDATO di contesto (metodo Danilov, Memory OS).
|
|
2
|
+
//
|
|
3
|
+
// Un ContextCandidate e' qualunque frammento di memoria che POTREBBE entrare
|
|
4
|
+
// nella context window del turno corrente: una stanza, una decisione, una nota,
|
|
5
|
+
// un file/asset, un messaggio kingdom, un task o un evento. Il Context Window
|
|
6
|
+
// Compiler non manda "piu' memoria": sceglie QUALE candidato merita token,
|
|
7
|
+
// in quale forma e in quale posizione.
|
|
8
|
+
//
|
|
9
|
+
// Modulo PURO: solo tipi e helper deterministici, nessun side-effect, nessuna
|
|
10
|
+
// dipendenza a runtime. Combacia per struttura con MemoryEvent (memory-store)
|
|
11
|
+
// senza dipenderne in modo rigido: un evento si converte in candidato tramite
|
|
12
|
+
// candidateFromEvent.
|
|
13
|
+
// --- helper deterministici --------------------------------------------------
|
|
14
|
+
// Normalizza una forma tollerante in un ContextCandidate completo, applicando
|
|
15
|
+
// default sicuri. Deterministico.
|
|
16
|
+
export function normalizeCandidate(input) {
|
|
17
|
+
return {
|
|
18
|
+
id: input.id,
|
|
19
|
+
kind: input.kind,
|
|
20
|
+
domain: input.domain ?? "system",
|
|
21
|
+
subject: (input.subject ?? "").trim(),
|
|
22
|
+
summary: (input.summary ?? "").trim(),
|
|
23
|
+
body: (input.body ?? "").trim(),
|
|
24
|
+
terms: dedupeTerms(input.terms ?? []),
|
|
25
|
+
links: dedupeValues(input.links ?? []),
|
|
26
|
+
createdAt: typeof input.createdAt === "number" ? input.createdAt : 0,
|
|
27
|
+
trust: input.trust ?? "medium",
|
|
28
|
+
status: input.status ?? "active",
|
|
29
|
+
supersededBy: input.supersededBy ?? null,
|
|
30
|
+
dependency: input.dependency ?? false,
|
|
31
|
+
scopeId: input.scopeId ?? null,
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
// Mappa il tipo evento del Memory OS al ContextKind piu' adatto.
|
|
35
|
+
export function kindFromEvent(event) {
|
|
36
|
+
switch (event.domain) {
|
|
37
|
+
case "decisions":
|
|
38
|
+
return "decision";
|
|
39
|
+
case "notes":
|
|
40
|
+
return "note";
|
|
41
|
+
case "assets":
|
|
42
|
+
return "asset";
|
|
43
|
+
case "kingdom":
|
|
44
|
+
return "kingdom";
|
|
45
|
+
case "plan":
|
|
46
|
+
return "task";
|
|
47
|
+
case "rooms":
|
|
48
|
+
return "room";
|
|
49
|
+
case "files":
|
|
50
|
+
return "file";
|
|
51
|
+
case "code":
|
|
52
|
+
// Convenzione concordata col Dev Context Layout: gli eventi del code graph
|
|
53
|
+
// hanno kind "file" cosi' atterrano nella zona "code graph caldo".
|
|
54
|
+
return "file";
|
|
55
|
+
default:
|
|
56
|
+
return "event";
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
// Confidenza implicita per dominio: decisioni ed eventi di sistema/plan sono
|
|
60
|
+
// canonici (high); note/asset utente sono medium; kingdom/file sono low di
|
|
61
|
+
// default (rumorosi finche' non promossi).
|
|
62
|
+
function trustForDomain(domain) {
|
|
63
|
+
if (domain === "decisions" || domain === "plan" || domain === "system")
|
|
64
|
+
return "high";
|
|
65
|
+
if (domain === "kingdom" || domain === "files")
|
|
66
|
+
return "low";
|
|
67
|
+
return "medium";
|
|
68
|
+
}
|
|
69
|
+
// Estrae status/supersededBy dal payload dell'evento (campi opzionali del grafo
|
|
70
|
+
// di supersessione), con default "active".
|
|
71
|
+
function supersessionFromEvent(event) {
|
|
72
|
+
const payload = event.payload ?? {};
|
|
73
|
+
const rawStatus = typeof payload["status"] === "string" ? payload["status"] : "active";
|
|
74
|
+
const status = rawStatus === "superseded" || rawStatus === "archived" ? rawStatus : "active";
|
|
75
|
+
const supersededBy = typeof payload["supersededBy"] === "string" ? payload["supersededBy"] : null;
|
|
76
|
+
return { status, supersededBy };
|
|
77
|
+
}
|
|
78
|
+
// Converte un MemoryEvent in ContextCandidate. Deterministico: nessuna lettura
|
|
79
|
+
// esterna, solo mappatura dei campi. `dependency` e' un override esplicito.
|
|
80
|
+
export function candidateFromEvent(event, opts = {}) {
|
|
81
|
+
const { status, supersededBy } = supersessionFromEvent(event);
|
|
82
|
+
const confidence = typeof event.payload?.["confidence"] === "string"
|
|
83
|
+
? event.payload["confidence"]
|
|
84
|
+
: trustForDomain(event.domain);
|
|
85
|
+
return normalizeCandidate({
|
|
86
|
+
id: event.id,
|
|
87
|
+
kind: kindFromEvent(event),
|
|
88
|
+
domain: event.domain,
|
|
89
|
+
subject: event.subject,
|
|
90
|
+
summary: event.summary,
|
|
91
|
+
body: event.body,
|
|
92
|
+
terms: event.terms,
|
|
93
|
+
links: event.links.map((link) => link.target),
|
|
94
|
+
createdAt: event.createdAt,
|
|
95
|
+
trust: confidence,
|
|
96
|
+
status,
|
|
97
|
+
supersededBy,
|
|
98
|
+
// Un test rotto o un contratto/API appena cambiato e' un prerequisito
|
|
99
|
+
// operativo, non semplice cronaca. L'override esplicito del chiamante resta
|
|
100
|
+
// autoritativo per i casi che vogliono degradarlo.
|
|
101
|
+
dependency: opts.dependency ?? isHotCodeDependency(event),
|
|
102
|
+
...(opts.scopeId ? { scopeId: opts.scopeId } : {}),
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
function isHotCodeDependency(event) {
|
|
106
|
+
return event.domain === "code" && (event.type === "code.test.failed" ||
|
|
107
|
+
event.type === "code.contract.changed" ||
|
|
108
|
+
event.type === "code.api.changed");
|
|
109
|
+
}
|
|
110
|
+
// Stima deterministica dei token di un candidato nella forma indicata.
|
|
111
|
+
// Approssimazione classica: ~4 caratteri per token. La forma "body" usa il
|
|
112
|
+
// corpo completo; "handle" usa solo id+subject+summary.
|
|
113
|
+
export function estimateCandidateTokens(candidate, form) {
|
|
114
|
+
const text = form === "body"
|
|
115
|
+
? `${candidate.id} ${candidate.subject} ${candidate.summary} ${candidate.body}`
|
|
116
|
+
: `${candidate.id} ${candidate.subject} ${candidate.summary}`;
|
|
117
|
+
return Math.max(1, Math.ceil(text.length / 4));
|
|
118
|
+
}
|
|
119
|
+
// Numero di confidenza in [0,1] per i tre livelli.
|
|
120
|
+
export function confidenceWeight(confidence) {
|
|
121
|
+
if (confidence === "high")
|
|
122
|
+
return 1;
|
|
123
|
+
if (confidence === "medium")
|
|
124
|
+
return 0.6;
|
|
125
|
+
return 0.3;
|
|
126
|
+
}
|
|
127
|
+
function dedupeTerms(terms) {
|
|
128
|
+
const seen = new Set();
|
|
129
|
+
const out = [];
|
|
130
|
+
for (const raw of terms) {
|
|
131
|
+
const t = raw.trim().toLowerCase();
|
|
132
|
+
if (!t || seen.has(t))
|
|
133
|
+
continue;
|
|
134
|
+
seen.add(t);
|
|
135
|
+
out.push(t);
|
|
136
|
+
}
|
|
137
|
+
return out;
|
|
138
|
+
}
|
|
139
|
+
function dedupeValues(values) {
|
|
140
|
+
const seen = new Set();
|
|
141
|
+
const out = [];
|
|
142
|
+
for (const raw of values) {
|
|
143
|
+
const value = raw.trim();
|
|
144
|
+
if (!value || seen.has(value))
|
|
145
|
+
continue;
|
|
146
|
+
seen.add(value);
|
|
147
|
+
out.push(value);
|
|
148
|
+
}
|
|
149
|
+
return out;
|
|
150
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { type ContextCandidate, type ContextConfidence, type ContextKind, type ContextStatus } from "./context-candidate.js";
|
|
2
|
+
import type { MemoryDomain } from "./memory-store.js";
|
|
3
|
+
export type ExpansionLevel = 0 | 1 | 2 | 3 | 4;
|
|
4
|
+
export declare const EXPANSION_LEVELS: readonly ExpansionLevel[];
|
|
5
|
+
export declare const EXPANSION_LABEL: Readonly<Record<ExpansionLevel, string>>;
|
|
6
|
+
export interface CapsuleHeader {
|
|
7
|
+
readonly id: string;
|
|
8
|
+
readonly domain: MemoryDomain;
|
|
9
|
+
readonly type: ContextKind;
|
|
10
|
+
readonly status: ContextStatus;
|
|
11
|
+
readonly confidence: ContextConfidence;
|
|
12
|
+
}
|
|
13
|
+
export interface CapsuleMetrics {
|
|
14
|
+
readonly tokenCost: number;
|
|
15
|
+
readonly utility: number;
|
|
16
|
+
readonly freshness: number;
|
|
17
|
+
}
|
|
18
|
+
export interface CapsuleRecall {
|
|
19
|
+
readonly domains: readonly MemoryDomain[];
|
|
20
|
+
readonly query?: string;
|
|
21
|
+
readonly id?: string;
|
|
22
|
+
}
|
|
23
|
+
export interface CapsuleLineage {
|
|
24
|
+
readonly supersedes?: readonly string[];
|
|
25
|
+
readonly supersededBy?: string | null;
|
|
26
|
+
readonly derivedFrom?: readonly string[];
|
|
27
|
+
readonly createdAt: number;
|
|
28
|
+
}
|
|
29
|
+
export interface ContextCapsule {
|
|
30
|
+
readonly header: CapsuleHeader;
|
|
31
|
+
readonly summary: string;
|
|
32
|
+
readonly reason: string;
|
|
33
|
+
readonly proof: string;
|
|
34
|
+
readonly body: string;
|
|
35
|
+
readonly terms: readonly string[];
|
|
36
|
+
readonly recall: CapsuleRecall;
|
|
37
|
+
readonly metrics: CapsuleMetrics;
|
|
38
|
+
readonly lineage: CapsuleLineage;
|
|
39
|
+
readonly expansionLevel: ExpansionLevel;
|
|
40
|
+
}
|
|
41
|
+
export interface CapsuleFromCandidateOptions {
|
|
42
|
+
readonly now?: number;
|
|
43
|
+
readonly utility?: number;
|
|
44
|
+
readonly recallQuery?: string;
|
|
45
|
+
readonly expansionLevel?: ExpansionLevel;
|
|
46
|
+
}
|
|
47
|
+
export declare function capsuleFromCandidate(c: ContextCandidate, opts?: CapsuleFromCandidateOptions): ContextCapsule;
|
|
48
|
+
export declare function capsulesFromCandidates(candidates: readonly ContextCandidate[], opts?: CapsuleFromCandidateOptions): readonly ContextCapsule[];
|
|
49
|
+
export declare function withExpansion(capsule: ContextCapsule, level: ExpansionLevel): ContextCapsule;
|
|
50
|
+
export declare function confidenceWeightOf(confidence: ContextConfidence): number;
|
|
51
|
+
export declare function isStale(capsule: ContextCapsule): boolean;
|