wotann 0.5.0 → 0.5.39
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/dist/agents/background-agent.d.ts.map +1 -1
- package/dist/agents/background-agent.js +2 -1
- package/dist/agents/background-agent.js.map +1 -1
- package/dist/agents/file-scope-policy.d.ts +116 -0
- package/dist/agents/file-scope-policy.d.ts.map +1 -0
- package/dist/agents/file-scope-policy.js +190 -0
- package/dist/agents/file-scope-policy.js.map +1 -0
- package/dist/agents/yaml-manifest.d.ts +125 -0
- package/dist/agents/yaml-manifest.d.ts.map +1 -0
- package/dist/agents/yaml-manifest.js +901 -0
- package/dist/agents/yaml-manifest.js.map +1 -0
- package/dist/auth/login.d.ts +3 -3
- package/dist/auth/login.d.ts.map +1 -1
- package/dist/auth/login.js +80 -23
- package/dist/auth/login.js.map +1 -1
- package/dist/autopilot/completion-oracle.d.ts.map +1 -1
- package/dist/autopilot/completion-oracle.js +3 -1
- package/dist/autopilot/completion-oracle.js.map +1 -1
- package/dist/autopilot/run-manifest.d.ts +90 -0
- package/dist/autopilot/run-manifest.d.ts.map +1 -0
- package/dist/autopilot/run-manifest.js +261 -0
- package/dist/autopilot/run-manifest.js.map +1 -0
- package/dist/browser/adaptive-selectors.d.ts +170 -0
- package/dist/browser/adaptive-selectors.d.ts.map +1 -0
- package/dist/browser/adaptive-selectors.js +317 -0
- package/dist/browser/adaptive-selectors.js.map +1 -0
- package/dist/browser/humanize-input.d.ts +76 -0
- package/dist/browser/humanize-input.d.ts.map +1 -0
- package/dist/browser/humanize-input.js +386 -0
- package/dist/browser/humanize-input.js.map +1 -0
- package/dist/channels/teams.d.ts +41 -19
- package/dist/channels/teams.d.ts.map +1 -1
- package/dist/channels/teams.js +121 -24
- package/dist/channels/teams.js.map +1 -1
- package/dist/channels/terminal-mention.d.ts.map +1 -1
- package/dist/channels/terminal-mention.js +4 -1
- package/dist/channels/terminal-mention.js.map +1 -1
- package/dist/cli/commands/blast-radius.d.ts +47 -0
- package/dist/cli/commands/blast-radius.d.ts.map +1 -0
- package/dist/cli/commands/blast-radius.js +123 -0
- package/dist/cli/commands/blast-radius.js.map +1 -0
- package/dist/cli/commands/evolve.d.ts +92 -0
- package/dist/cli/commands/evolve.d.ts.map +1 -0
- package/dist/cli/commands/evolve.js +336 -0
- package/dist/cli/commands/evolve.js.map +1 -0
- package/dist/cli/commands/learning.d.ts +54 -0
- package/dist/cli/commands/learning.d.ts.map +1 -0
- package/dist/cli/commands/learning.js +380 -0
- package/dist/cli/commands/learning.js.map +1 -0
- package/dist/cli/commands/persona.d.ts +42 -0
- package/dist/cli/commands/persona.d.ts.map +1 -0
- package/dist/cli/commands/persona.js +198 -0
- package/dist/cli/commands/persona.js.map +1 -0
- package/dist/cli/commands/stuck.d.ts.map +1 -1
- package/dist/cli/commands/stuck.js +5 -2
- package/dist/cli/commands/stuck.js.map +1 -1
- package/dist/cli/commands.d.ts.map +1 -1
- package/dist/cli/commands.js +5 -2
- package/dist/cli/commands.js.map +1 -1
- package/dist/cli/orphan-wires/agent-manifest-cmd.d.ts +17 -0
- package/dist/cli/orphan-wires/agent-manifest-cmd.d.ts.map +1 -0
- package/dist/cli/orphan-wires/agent-manifest-cmd.js +99 -0
- package/dist/cli/orphan-wires/agent-manifest-cmd.js.map +1 -0
- package/dist/cli/orphan-wires/arena-cmd.d.ts +26 -0
- package/dist/cli/orphan-wires/arena-cmd.d.ts.map +1 -0
- package/dist/cli/orphan-wires/arena-cmd.js +167 -0
- package/dist/cli/orphan-wires/arena-cmd.js.map +1 -0
- package/dist/cli/orphan-wires/artifact-cmd.d.ts +17 -0
- package/dist/cli/orphan-wires/artifact-cmd.d.ts.map +1 -0
- package/dist/cli/orphan-wires/artifact-cmd.js +175 -0
- package/dist/cli/orphan-wires/artifact-cmd.js.map +1 -0
- package/dist/cli/orphan-wires/demo-cmd.d.ts +25 -0
- package/dist/cli/orphan-wires/demo-cmd.d.ts.map +1 -0
- package/dist/cli/orphan-wires/demo-cmd.js +164 -0
- package/dist/cli/orphan-wires/demo-cmd.js.map +1 -0
- package/dist/cli/orphan-wires/extras-cmd.d.ts +20 -0
- package/dist/cli/orphan-wires/extras-cmd.d.ts.map +1 -0
- package/dist/cli/orphan-wires/extras-cmd.js +289 -0
- package/dist/cli/orphan-wires/extras-cmd.js.map +1 -0
- package/dist/cli/orphan-wires/harness-introspect-cmd.d.ts +15 -0
- package/dist/cli/orphan-wires/harness-introspect-cmd.d.ts.map +1 -0
- package/dist/cli/orphan-wires/harness-introspect-cmd.js +36 -0
- package/dist/cli/orphan-wires/harness-introspect-cmd.js.map +1 -0
- package/dist/cli/orphan-wires/index.d.ts.map +1 -1
- package/dist/cli/orphan-wires/index.js +30 -0
- package/dist/cli/orphan-wires/index.js.map +1 -1
- package/dist/cli/orphan-wires/integrations-cmd.d.ts +38 -0
- package/dist/cli/orphan-wires/integrations-cmd.d.ts.map +1 -0
- package/dist/cli/orphan-wires/integrations-cmd.js +345 -0
- package/dist/cli/orphan-wires/integrations-cmd.js.map +1 -0
- package/dist/cli/orphan-wires/mcp-scaffold-cmd.d.ts +18 -0
- package/dist/cli/orphan-wires/mcp-scaffold-cmd.d.ts.map +1 -0
- package/dist/cli/orphan-wires/mcp-scaffold-cmd.js +127 -0
- package/dist/cli/orphan-wires/mcp-scaffold-cmd.js.map +1 -0
- package/dist/cli/orphan-wires/memory-consolidate-cmd.d.ts +21 -0
- package/dist/cli/orphan-wires/memory-consolidate-cmd.d.ts.map +1 -0
- package/dist/cli/orphan-wires/memory-consolidate-cmd.js +86 -0
- package/dist/cli/orphan-wires/memory-consolidate-cmd.js.map +1 -0
- package/dist/cli/orphan-wires/patch-cmd.d.ts +29 -0
- package/dist/cli/orphan-wires/patch-cmd.d.ts.map +1 -0
- package/dist/cli/orphan-wires/patch-cmd.js +150 -0
- package/dist/cli/orphan-wires/patch-cmd.js.map +1 -0
- package/dist/cli/orphan-wires/redteam-scan-cmd.d.ts +28 -0
- package/dist/cli/orphan-wires/redteam-scan-cmd.d.ts.map +1 -0
- package/dist/cli/orphan-wires/redteam-scan-cmd.js +169 -0
- package/dist/cli/orphan-wires/redteam-scan-cmd.js.map +1 -0
- package/dist/cli/orphan-wires/scrape-adapt-cmd.d.ts +21 -0
- package/dist/cli/orphan-wires/scrape-adapt-cmd.d.ts.map +1 -0
- package/dist/cli/orphan-wires/scrape-adapt-cmd.js +70 -0
- package/dist/cli/orphan-wires/scrape-adapt-cmd.js.map +1 -0
- package/dist/cli/orphan-wires/shell-tier-cmd.d.ts +20 -0
- package/dist/cli/orphan-wires/shell-tier-cmd.d.ts.map +1 -0
- package/dist/cli/orphan-wires/shell-tier-cmd.js +74 -0
- package/dist/cli/orphan-wires/shell-tier-cmd.js.map +1 -0
- package/dist/cli/orphan-wires/sub-recipes-cmd.d.ts +18 -0
- package/dist/cli/orphan-wires/sub-recipes-cmd.d.ts.map +1 -0
- package/dist/cli/orphan-wires/sub-recipes-cmd.js +87 -0
- package/dist/cli/orphan-wires/sub-recipes-cmd.js.map +1 -0
- package/dist/cli/orphan-wires/webapp-test-cmd.d.ts +20 -0
- package/dist/cli/orphan-wires/webapp-test-cmd.d.ts.map +1 -0
- package/dist/cli/orphan-wires/webapp-test-cmd.js +115 -0
- package/dist/cli/orphan-wires/webapp-test-cmd.js.map +1 -0
- package/dist/cli/thin-client.d.ts +17 -10
- package/dist/cli/thin-client.d.ts.map +1 -1
- package/dist/cli/thin-client.js +108 -26
- package/dist/cli/thin-client.js.map +1 -1
- package/dist/computer-use/action-history-compactor.d.ts +92 -0
- package/dist/computer-use/action-history-compactor.d.ts.map +1 -0
- package/dist/computer-use/action-history-compactor.js +204 -0
- package/dist/computer-use/action-history-compactor.js.map +1 -0
- package/dist/computer-use/action-repertoire.d.ts +8 -0
- package/dist/computer-use/action-repertoire.d.ts.map +1 -1
- package/dist/computer-use/action-repertoire.js +19 -0
- package/dist/computer-use/action-repertoire.js.map +1 -1
- package/dist/computer-use/computer-agent.d.ts +232 -2
- package/dist/computer-use/computer-agent.d.ts.map +1 -1
- package/dist/computer-use/computer-agent.js +558 -19
- package/dist/computer-use/computer-agent.js.map +1 -1
- package/dist/computer-use/coordinate-scaling.d.ts +104 -0
- package/dist/computer-use/coordinate-scaling.d.ts.map +1 -0
- package/dist/computer-use/coordinate-scaling.js +175 -0
- package/dist/computer-use/coordinate-scaling.js.map +1 -0
- package/dist/computer-use/driver-contract.d.ts +158 -0
- package/dist/computer-use/driver-contract.d.ts.map +1 -0
- package/dist/computer-use/driver-contract.js +471 -0
- package/dist/computer-use/driver-contract.js.map +1 -0
- package/dist/computer-use/perception-engine.d.ts +39 -0
- package/dist/computer-use/perception-engine.d.ts.map +1 -1
- package/dist/computer-use/perception-engine.js +27 -27
- package/dist/computer-use/perception-engine.js.map +1 -1
- package/dist/computer-use/platform-bindings.d.ts.map +1 -1
- package/dist/computer-use/platform-bindings.js +216 -2
- package/dist/computer-use/platform-bindings.js.map +1 -1
- package/dist/computer-use/safe-execute.d.ts +86 -0
- package/dist/computer-use/safe-execute.d.ts.map +1 -0
- package/dist/computer-use/safe-execute.js +152 -0
- package/dist/computer-use/safe-execute.js.map +1 -0
- package/dist/context/branch-summarization.d.ts +97 -0
- package/dist/context/branch-summarization.d.ts.map +1 -0
- package/dist/context/branch-summarization.js +170 -0
- package/dist/context/branch-summarization.js.map +1 -0
- package/dist/context/compaction.d.ts +16 -1
- package/dist/context/compaction.d.ts.map +1 -1
- package/dist/context/compaction.js +50 -2
- package/dist/context/compaction.js.map +1 -1
- package/dist/context/inspector.d.ts +2 -2
- package/dist/context/inspector.d.ts.map +1 -1
- package/dist/context/inspector.js +4 -3
- package/dist/context/inspector.js.map +1 -1
- package/dist/core/agent-bridge.d.ts.map +1 -1
- package/dist/core/agent-bridge.js +200 -69
- package/dist/core/agent-bridge.js.map +1 -1
- package/dist/core/config.d.ts.map +1 -1
- package/dist/core/config.js +7 -0
- package/dist/core/config.js.map +1 -1
- package/dist/core/mode-model-preference.d.ts +95 -0
- package/dist/core/mode-model-preference.d.ts.map +1 -0
- package/dist/core/mode-model-preference.js +170 -0
- package/dist/core/mode-model-preference.js.map +1 -0
- package/dist/core/prompt-override.d.ts.map +1 -1
- package/dist/core/prompt-override.js +1 -0
- package/dist/core/prompt-override.js.map +1 -1
- package/dist/core/runtime-intelligence.d.ts +11 -0
- package/dist/core/runtime-intelligence.d.ts.map +1 -1
- package/dist/core/runtime-intelligence.js +18 -3
- package/dist/core/runtime-intelligence.js.map +1 -1
- package/dist/core/runtime-tool-dispatch.js +1 -1
- package/dist/core/runtime-tool-dispatch.js.map +1 -1
- package/dist/core/runtime.d.ts +186 -13
- package/dist/core/runtime.d.ts.map +1 -1
- package/dist/core/runtime.js +717 -228
- package/dist/core/runtime.js.map +1 -1
- package/dist/core/session-rewind.d.ts +67 -0
- package/dist/core/session-rewind.d.ts.map +1 -0
- package/dist/core/session-rewind.js +120 -0
- package/dist/core/session-rewind.js.map +1 -0
- package/dist/core/types.d.ts +19 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/daemon/file-watcher.d.ts +84 -0
- package/dist/daemon/file-watcher.d.ts.map +1 -0
- package/dist/daemon/file-watcher.js +193 -0
- package/dist/daemon/file-watcher.js.map +1 -0
- package/dist/daemon/jsonl-mode.d.ts +11 -0
- package/dist/daemon/jsonl-mode.d.ts.map +1 -0
- package/dist/daemon/jsonl-mode.js +77 -0
- package/dist/daemon/jsonl-mode.js.map +1 -0
- package/dist/daemon/kairos-ipc.d.ts +4 -1
- package/dist/daemon/kairos-ipc.d.ts.map +1 -1
- package/dist/daemon/kairos-ipc.js +38 -22
- package/dist/daemon/kairos-ipc.js.map +1 -1
- package/dist/daemon/kairos-rpc.d.ts +5 -1
- package/dist/daemon/kairos-rpc.d.ts.map +1 -1
- package/dist/daemon/kairos-rpc.js +1262 -114
- package/dist/daemon/kairos-rpc.js.map +1 -1
- package/dist/daemon/kairos.d.ts +35 -4
- package/dist/daemon/kairos.d.ts.map +1 -1
- package/dist/daemon/kairos.js +204 -24
- package/dist/daemon/kairos.js.map +1 -1
- package/dist/daemon/rpc-handlers/intelligence-rpc.d.ts.map +1 -1
- package/dist/daemon/rpc-handlers/intelligence-rpc.js +15 -3
- package/dist/daemon/rpc-handlers/intelligence-rpc.js.map +1 -1
- package/dist/daemon/transport/jsonl.d.ts +7 -0
- package/dist/daemon/transport/jsonl.d.ts.map +1 -0
- package/dist/daemon/transport/jsonl.js +38 -0
- package/dist/daemon/transport/jsonl.js.map +1 -0
- package/dist/daemon/transport/socket-path.d.ts +28 -0
- package/dist/daemon/transport/socket-path.d.ts.map +1 -0
- package/dist/daemon/transport/socket-path.js +36 -0
- package/dist/daemon/transport/socket-path.js.map +1 -0
- package/dist/design/theme-presets.d.ts +77 -0
- package/dist/design/theme-presets.d.ts.map +1 -0
- package/dist/design/theme-presets.js +274 -0
- package/dist/design/theme-presets.js.map +1 -0
- package/dist/desktop/companion-server.d.ts +67 -4
- package/dist/desktop/companion-server.d.ts.map +1 -1
- package/dist/desktop/companion-server.js +617 -70
- package/dist/desktop/companion-server.js.map +1 -1
- package/dist/desktop/web-artifacts-builder.d.ts +108 -0
- package/dist/desktop/web-artifacts-builder.d.ts.map +1 -0
- package/dist/desktop/web-artifacts-builder.js +184 -0
- package/dist/desktop/web-artifacts-builder.js.map +1 -0
- package/dist/hooks/built-in.d.ts.map +1 -1
- package/dist/hooks/built-in.js +15 -10
- package/dist/hooks/built-in.js.map +1 -1
- package/dist/index.js +1301 -167
- package/dist/index.js.map +1 -1
- package/dist/integrations/integration-manifest.d.ts +140 -0
- package/dist/integrations/integration-manifest.d.ts.map +1 -0
- package/dist/integrations/integration-manifest.js +268 -0
- package/dist/integrations/integration-manifest.js.map +1 -0
- package/dist/intelligence/apply-patch-dsl.d.ts +112 -0
- package/dist/intelligence/apply-patch-dsl.d.ts.map +1 -0
- package/dist/intelligence/apply-patch-dsl.js +264 -0
- package/dist/intelligence/apply-patch-dsl.js.map +1 -0
- package/dist/intelligence/apply-patch-executor.d.ts +147 -0
- package/dist/intelligence/apply-patch-executor.d.ts.map +1 -0
- package/dist/intelligence/apply-patch-executor.js +418 -0
- package/dist/intelligence/apply-patch-executor.js.map +1 -0
- package/dist/intelligence/blast-radius.d.ts +67 -0
- package/dist/intelligence/blast-radius.d.ts.map +1 -0
- package/dist/intelligence/blast-radius.js +536 -0
- package/dist/intelligence/blast-radius.js.map +1 -0
- package/dist/intelligence/code-graph.d.ts +58 -7
- package/dist/intelligence/code-graph.d.ts.map +1 -1
- package/dist/intelligence/code-graph.js +347 -16
- package/dist/intelligence/code-graph.js.map +1 -1
- package/dist/intelligence/codebase-health.d.ts.map +1 -1
- package/dist/intelligence/codebase-health.js +4 -3
- package/dist/intelligence/codebase-health.js.map +1 -1
- package/dist/intelligence/codemaps.d.ts +30 -1
- package/dist/intelligence/codemaps.d.ts.map +1 -1
- package/dist/intelligence/codemaps.js +99 -16
- package/dist/intelligence/codemaps.js.map +1 -1
- package/dist/intelligence/consecutive-error-counter.d.ts +89 -0
- package/dist/intelligence/consecutive-error-counter.d.ts.map +1 -0
- package/dist/intelligence/consecutive-error-counter.js +151 -0
- package/dist/intelligence/consecutive-error-counter.js.map +1 -0
- package/dist/intelligence/eval-frameworks/redteam-plugin-catalog.d.ts +87 -0
- package/dist/intelligence/eval-frameworks/redteam-plugin-catalog.d.ts.map +1 -0
- package/dist/intelligence/eval-frameworks/redteam-plugin-catalog.js +882 -0
- package/dist/intelligence/eval-frameworks/redteam-plugin-catalog.js.map +1 -0
- package/dist/intelligence/extractors/mineru.d.ts +108 -0
- package/dist/intelligence/extractors/mineru.d.ts.map +1 -0
- package/dist/intelligence/extractors/mineru.js +352 -0
- package/dist/intelligence/extractors/mineru.js.map +1 -0
- package/dist/intelligence/harness-introspect.d.ts +124 -0
- package/dist/intelligence/harness-introspect.d.ts.map +1 -0
- package/dist/intelligence/harness-introspect.js +349 -0
- package/dist/intelligence/harness-introspect.js.map +1 -0
- package/dist/intelligence/multi-patch-voter.d.ts +59 -1
- package/dist/intelligence/multi-patch-voter.d.ts.map +1 -1
- package/dist/intelligence/multi-patch-voter.js +191 -27
- package/dist/intelligence/multi-patch-voter.js.map +1 -1
- package/dist/intelligence/multimodal-extract.d.ts +44 -0
- package/dist/intelligence/multimodal-extract.d.ts.map +1 -1
- package/dist/intelligence/multimodal-extract.js +40 -1
- package/dist/intelligence/multimodal-extract.js.map +1 -1
- package/dist/intelligence/research-loops/budgeted-research.d.ts +7 -0
- package/dist/intelligence/research-loops/budgeted-research.d.ts.map +1 -1
- package/dist/intelligence/research-loops/budgeted-research.js +18 -0
- package/dist/intelligence/research-loops/budgeted-research.js.map +1 -1
- package/dist/intelligence/research-loops/constraint-guided-explorer.d.ts +124 -0
- package/dist/intelligence/research-loops/constraint-guided-explorer.d.ts.map +1 -0
- package/dist/intelligence/research-loops/constraint-guided-explorer.js +177 -0
- package/dist/intelligence/research-loops/constraint-guided-explorer.js.map +1 -0
- package/dist/intelligence/research-loops/results-collector.d.ts +62 -0
- package/dist/intelligence/research-loops/results-collector.d.ts.map +1 -0
- package/dist/intelligence/research-loops/results-collector.js +128 -0
- package/dist/intelligence/research-loops/results-collector.js.map +1 -0
- package/dist/intelligence/research-loops/results-log.d.ts +94 -0
- package/dist/intelligence/research-loops/results-log.d.ts.map +1 -0
- package/dist/intelligence/research-loops/results-log.js +178 -0
- package/dist/intelligence/research-loops/results-log.js.map +1 -0
- package/dist/intelligence/research-loops/strategies/base-strategy.d.ts +111 -0
- package/dist/intelligence/research-loops/strategies/base-strategy.d.ts.map +1 -0
- package/dist/intelligence/research-loops/strategies/base-strategy.js +72 -0
- package/dist/intelligence/research-loops/strategies/base-strategy.js.map +1 -0
- package/dist/intelligence/research-loops/strategies/dual-confidence.d.ts +57 -0
- package/dist/intelligence/research-loops/strategies/dual-confidence.d.ts.map +1 -0
- package/dist/intelligence/research-loops/strategies/dual-confidence.js +172 -0
- package/dist/intelligence/research-loops/strategies/dual-confidence.js.map +1 -0
- package/dist/intelligence/research-loops/strategies/langgraph-agent.d.ts +68 -0
- package/dist/intelligence/research-loops/strategies/langgraph-agent.d.ts.map +1 -0
- package/dist/intelligence/research-loops/strategies/langgraph-agent.js +221 -0
- package/dist/intelligence/research-loops/strategies/langgraph-agent.js.map +1 -0
- package/dist/intelligence/research-loops/strategies/parallel-constrained.d.ts +42 -0
- package/dist/intelligence/research-loops/strategies/parallel-constrained.d.ts.map +1 -0
- package/dist/intelligence/research-loops/strategies/parallel-constrained.js +132 -0
- package/dist/intelligence/research-loops/strategies/parallel-constrained.js.map +1 -0
- package/dist/intelligence/research-loops/strategies/recursive-decomposition.d.ts +55 -0
- package/dist/intelligence/research-loops/strategies/recursive-decomposition.d.ts.map +1 -0
- package/dist/intelligence/research-loops/strategies/recursive-decomposition.js +187 -0
- package/dist/intelligence/research-loops/strategies/recursive-decomposition.js.map +1 -0
- package/dist/intelligence/research-loops/strategy-registry.d.ts +43 -0
- package/dist/intelligence/research-loops/strategy-registry.d.ts.map +1 -0
- package/dist/intelligence/research-loops/strategy-registry.js +62 -0
- package/dist/intelligence/research-loops/strategy-registry.js.map +1 -0
- package/dist/intelligence/research-strategies.d.ts +133 -0
- package/dist/intelligence/research-strategies.d.ts.map +1 -0
- package/dist/intelligence/research-strategies.js +204 -0
- package/dist/intelligence/research-strategies.js.map +1 -0
- package/dist/lib.d.ts +49 -0
- package/dist/lib.d.ts.map +1 -1
- package/dist/lib.js +133 -0
- package/dist/lib.js.map +1 -1
- package/dist/loop/tool-description-reset.d.ts +113 -0
- package/dist/loop/tool-description-reset.d.ts.map +1 -0
- package/dist/loop/tool-description-reset.js +136 -0
- package/dist/loop/tool-description-reset.js.map +1 -0
- package/dist/lsp/server-registry.d.ts.map +1 -1
- package/dist/lsp/server-registry.js +2 -1
- package/dist/lsp/server-registry.js.map +1 -1
- package/dist/lsp/symbol-operations.d.ts.map +1 -1
- package/dist/lsp/symbol-operations.js +2 -1
- package/dist/lsp/symbol-operations.js.map +1 -1
- package/dist/marketplace/acp-agent-registry.d.ts.map +1 -1
- package/dist/marketplace/acp-agent-registry.js +2 -1
- package/dist/marketplace/acp-agent-registry.js.map +1 -1
- package/dist/marketplace/marketplace-source-git.d.ts +135 -0
- package/dist/marketplace/marketplace-source-git.d.ts.map +1 -0
- package/dist/marketplace/marketplace-source-git.js +211 -0
- package/dist/marketplace/marketplace-source-git.js.map +1 -0
- package/dist/marketplace/registry.d.ts +87 -0
- package/dist/marketplace/registry.d.ts.map +1 -1
- package/dist/marketplace/registry.js +113 -2
- package/dist/marketplace/registry.js.map +1 -1
- package/dist/mcp/chrome-devtools.d.ts +62 -2
- package/dist/mcp/chrome-devtools.d.ts.map +1 -1
- package/dist/mcp/chrome-devtools.js +183 -1
- package/dist/mcp/chrome-devtools.js.map +1 -1
- package/dist/mcp/health-probe.d.ts +1 -0
- package/dist/mcp/health-probe.d.ts.map +1 -1
- package/dist/mcp/health-probe.js +32 -1
- package/dist/mcp/health-probe.js.map +1 -1
- package/dist/mcp/mcp-scaffolder.d.ts +166 -0
- package/dist/mcp/mcp-scaffolder.d.ts.map +1 -0
- package/dist/mcp/mcp-scaffolder.js +526 -0
- package/dist/mcp/mcp-scaffolder.js.map +1 -0
- package/dist/mcp/mcp-server.d.ts.map +1 -1
- package/dist/mcp/mcp-server.js +55 -0
- package/dist/mcp/mcp-server.js.map +1 -1
- package/dist/mcp/memory-mcp.d.ts +163 -0
- package/dist/mcp/memory-mcp.d.ts.map +1 -0
- package/dist/mcp/memory-mcp.js +368 -0
- package/dist/mcp/memory-mcp.js.map +1 -0
- package/dist/mcp/tool-loader.d.ts.map +1 -1
- package/dist/mcp/tool-loader.js +13 -0
- package/dist/mcp/tool-loader.js.map +1 -1
- package/dist/meet/meeting-runtime.d.ts.map +1 -1
- package/dist/meet/meeting-runtime.js +3 -1
- package/dist/meet/meeting-runtime.js.map +1 -1
- package/dist/memory/incremental-indexer.d.ts.map +1 -1
- package/dist/memory/incremental-indexer.js +5 -1
- package/dist/memory/incremental-indexer.js.map +1 -1
- package/dist/memory/qmd-integration.d.ts.map +1 -1
- package/dist/memory/qmd-integration.js +47 -15
- package/dist/memory/qmd-integration.js.map +1 -1
- package/dist/memory/two-phase-consolidator.d.ts +118 -0
- package/dist/memory/two-phase-consolidator.d.ts.map +1 -0
- package/dist/memory/two-phase-consolidator.js +265 -0
- package/dist/memory/two-phase-consolidator.js.map +1 -0
- package/dist/middleware/doom-loop.d.ts +21 -0
- package/dist/middleware/doom-loop.d.ts.map +1 -1
- package/dist/middleware/doom-loop.js +49 -6
- package/dist/middleware/doom-loop.js.map +1 -1
- package/dist/middleware/loop-detection.d.ts +176 -6
- package/dist/middleware/loop-detection.d.ts.map +1 -1
- package/dist/middleware/loop-detection.js +341 -6
- package/dist/middleware/loop-detection.js.map +1 -1
- package/dist/middleware/pipeline.d.ts +9 -1
- package/dist/middleware/pipeline.d.ts.map +1 -1
- package/dist/middleware/pipeline.js +116 -1
- package/dist/middleware/pipeline.js.map +1 -1
- package/dist/middleware/tool-flow-gate.d.ts +20 -0
- package/dist/middleware/tool-flow-gate.d.ts.map +1 -1
- package/dist/middleware/tool-flow-gate.js +93 -0
- package/dist/middleware/tool-flow-gate.js.map +1 -1
- package/dist/mobile/ios-app.d.ts +18 -1
- package/dist/mobile/ios-app.d.ts.map +1 -1
- package/dist/mobile/ios-app.js +108 -8
- package/dist/mobile/ios-app.js.map +1 -1
- package/dist/orchestration/adversarial-cut.d.ts +85 -0
- package/dist/orchestration/adversarial-cut.d.ts.map +1 -0
- package/dist/orchestration/adversarial-cut.js +222 -0
- package/dist/orchestration/adversarial-cut.js.map +1 -0
- package/dist/orchestration/agent-kanban.d.ts +147 -0
- package/dist/orchestration/agent-kanban.d.ts.map +1 -0
- package/dist/orchestration/agent-kanban.js +414 -0
- package/dist/orchestration/agent-kanban.js.map +1 -0
- package/dist/orchestration/autonomous.d.ts +111 -0
- package/dist/orchestration/autonomous.d.ts.map +1 -1
- package/dist/orchestration/autonomous.js +183 -6
- package/dist/orchestration/autonomous.js.map +1 -1
- package/dist/orchestration/elo-tournament.d.ts +90 -0
- package/dist/orchestration/elo-tournament.d.ts.map +1 -0
- package/dist/orchestration/elo-tournament.js +203 -0
- package/dist/orchestration/elo-tournament.js.map +1 -0
- package/dist/orchestration/multi-model-arena.d.ts +138 -0
- package/dist/orchestration/multi-model-arena.d.ts.map +1 -0
- package/dist/orchestration/multi-model-arena.js +298 -0
- package/dist/orchestration/multi-model-arena.js.map +1 -0
- package/dist/orchestration/review-pipeline.d.ts +78 -0
- package/dist/orchestration/review-pipeline.d.ts.map +1 -0
- package/dist/orchestration/review-pipeline.js +202 -0
- package/dist/orchestration/review-pipeline.js.map +1 -0
- package/dist/orchestration/unified-state-thread.d.ts +186 -0
- package/dist/orchestration/unified-state-thread.d.ts.map +1 -0
- package/dist/orchestration/unified-state-thread.js +327 -0
- package/dist/orchestration/unified-state-thread.js.map +1 -0
- package/dist/plugins/manager.d.ts.map +1 -1
- package/dist/plugins/manager.js +2 -1
- package/dist/plugins/manager.js.map +1 -1
- package/dist/prompt/engine.d.ts +7 -0
- package/dist/prompt/engine.d.ts.map +1 -1
- package/dist/prompt/engine.js.map +1 -1
- package/dist/prompt/modules/caveman.d.ts +51 -0
- package/dist/prompt/modules/caveman.d.ts.map +1 -0
- package/dist/prompt/modules/caveman.js +97 -0
- package/dist/prompt/modules/caveman.js.map +1 -0
- package/dist/prompt/modules/index.d.ts +1 -0
- package/dist/prompt/modules/index.d.ts.map +1 -1
- package/dist/prompt/modules/index.js +3 -0
- package/dist/prompt/modules/index.js.map +1 -1
- package/dist/providers/account-pool.d.ts.map +1 -1
- package/dist/providers/account-pool.js +1 -0
- package/dist/providers/account-pool.js.map +1 -1
- package/dist/providers/anthropic-adapter.d.ts.map +1 -1
- package/dist/providers/anthropic-adapter.js +33 -0
- package/dist/providers/anthropic-adapter.js.map +1 -1
- package/dist/providers/cloud-offload/config-loader.d.ts +20 -0
- package/dist/providers/cloud-offload/config-loader.d.ts.map +1 -0
- package/dist/providers/cloud-offload/config-loader.js +148 -0
- package/dist/providers/cloud-offload/config-loader.js.map +1 -0
- package/dist/providers/codex-adapter.d.ts.map +1 -1
- package/dist/providers/codex-adapter.js +136 -4
- package/dist/providers/codex-adapter.js.map +1 -1
- package/dist/providers/discovery.d.ts.map +1 -1
- package/dist/providers/discovery.js +20 -0
- package/dist/providers/discovery.js.map +1 -1
- package/dist/providers/effort-cascade.d.ts +113 -0
- package/dist/providers/effort-cascade.d.ts.map +1 -0
- package/dist/providers/effort-cascade.js +215 -0
- package/dist/providers/effort-cascade.js.map +1 -0
- package/dist/providers/fallback-chain.d.ts.map +1 -1
- package/dist/providers/fallback-chain.js +1 -0
- package/dist/providers/fallback-chain.js.map +1 -1
- package/dist/providers/health-check.d.ts.map +1 -1
- package/dist/providers/health-check.js +8 -0
- package/dist/providers/health-check.js.map +1 -1
- package/dist/providers/model-defaults.d.ts +1 -1
- package/dist/providers/model-defaults.d.ts.map +1 -1
- package/dist/providers/model-defaults.js +13 -1
- package/dist/providers/model-defaults.js.map +1 -1
- package/dist/providers/model-discovery.d.ts.map +1 -1
- package/dist/providers/model-discovery.js +1 -0
- package/dist/providers/model-discovery.js.map +1 -1
- package/dist/providers/ollama-adapter.d.ts.map +1 -1
- package/dist/providers/ollama-adapter.js +21 -1
- package/dist/providers/ollama-adapter.js.map +1 -1
- package/dist/providers/openai-compat-adapter.d.ts.map +1 -1
- package/dist/providers/openai-compat-adapter.js +25 -0
- package/dist/providers/openai-compat-adapter.js.map +1 -1
- package/dist/providers/preset-library.d.ts.map +1 -1
- package/dist/providers/preset-library.js +9 -0
- package/dist/providers/preset-library.js.map +1 -1
- package/dist/providers/provider-service.d.ts.map +1 -1
- package/dist/providers/provider-service.js +40 -1
- package/dist/providers/provider-service.js.map +1 -1
- package/dist/providers/registry.d.ts.map +1 -1
- package/dist/providers/registry.js +7 -0
- package/dist/providers/registry.js.map +1 -1
- package/dist/providers/sticky-rotation.d.ts +100 -0
- package/dist/providers/sticky-rotation.d.ts.map +1 -0
- package/dist/providers/sticky-rotation.js +134 -0
- package/dist/providers/sticky-rotation.js.map +1 -0
- package/dist/providers/tool-parsers/parsers.d.ts.map +1 -1
- package/dist/providers/tool-parsers/parsers.js +17 -4
- package/dist/providers/tool-parsers/parsers.js.map +1 -1
- package/dist/providers/types.d.ts +25 -0
- package/dist/providers/types.d.ts.map +1 -1
- package/dist/recipes/final-output.d.ts +74 -0
- package/dist/recipes/final-output.d.ts.map +1 -0
- package/dist/recipes/final-output.js +232 -0
- package/dist/recipes/final-output.js.map +1 -0
- package/dist/recipes/recipe-loader.d.ts.map +1 -1
- package/dist/recipes/recipe-loader.js +29 -0
- package/dist/recipes/recipe-loader.js.map +1 -1
- package/dist/recipes/recipe-runtime.d.ts.map +1 -1
- package/dist/recipes/recipe-runtime.js +31 -0
- package/dist/recipes/recipe-runtime.js.map +1 -1
- package/dist/recipes/recipe-types.d.ts +28 -0
- package/dist/recipes/recipe-types.d.ts.map +1 -1
- package/dist/recipes/sop-crystallizer.d.ts +90 -0
- package/dist/recipes/sop-crystallizer.d.ts.map +1 -0
- package/dist/recipes/sop-crystallizer.js +238 -0
- package/dist/recipes/sop-crystallizer.js.map +1 -0
- package/dist/recipes/sub-recipe-orchestrator.d.ts +126 -0
- package/dist/recipes/sub-recipe-orchestrator.d.ts.map +1 -0
- package/dist/recipes/sub-recipe-orchestrator.js +225 -0
- package/dist/recipes/sub-recipe-orchestrator.js.map +1 -0
- package/dist/sandbox/extended-backends.d.ts.map +1 -1
- package/dist/sandbox/extended-backends.js +7 -2
- package/dist/sandbox/extended-backends.js.map +1 -1
- package/dist/sandbox/seatbelt-policy.d.ts +132 -0
- package/dist/sandbox/seatbelt-policy.d.ts.map +1 -0
- package/dist/sandbox/seatbelt-policy.js +562 -0
- package/dist/sandbox/seatbelt-policy.js.map +1 -0
- package/dist/sandbox/terminal-backends.d.ts.map +1 -1
- package/dist/sandbox/terminal-backends.js +3 -1
- package/dist/sandbox/terminal-backends.js.map +1 -1
- package/dist/security/auto-mode-ruleset.d.ts +142 -0
- package/dist/security/auto-mode-ruleset.d.ts.map +1 -0
- package/dist/security/auto-mode-ruleset.js +264 -0
- package/dist/security/auto-mode-ruleset.js.map +1 -0
- package/dist/security/bash-arity-policy.d.ts +70 -0
- package/dist/security/bash-arity-policy.d.ts.map +1 -0
- package/dist/security/bash-arity-policy.js +189 -0
- package/dist/security/bash-arity-policy.js.map +1 -0
- package/dist/security/command-sanitizer.d.ts.map +1 -1
- package/dist/security/command-sanitizer.js +24 -0
- package/dist/security/command-sanitizer.js.map +1 -1
- package/dist/security/credential-broker.d.ts +136 -0
- package/dist/security/credential-broker.d.ts.map +1 -0
- package/dist/security/credential-broker.js +284 -0
- package/dist/security/credential-broker.js.map +1 -0
- package/dist/security/invisible-text-sanitizer.d.ts +114 -0
- package/dist/security/invisible-text-sanitizer.d.ts.map +1 -0
- package/dist/security/invisible-text-sanitizer.js +221 -0
- package/dist/security/invisible-text-sanitizer.js.map +1 -0
- package/dist/security/osv-check.d.ts +174 -0
- package/dist/security/osv-check.d.ts.map +1 -0
- package/dist/security/osv-check.js +409 -0
- package/dist/security/osv-check.js.map +1 -0
- package/dist/security/process-hardening.d.ts +114 -0
- package/dist/security/process-hardening.d.ts.map +1 -0
- package/dist/security/process-hardening.js +132 -0
- package/dist/security/process-hardening.js.map +1 -0
- package/dist/security/shell-escalation-tiers.d.ts +73 -0
- package/dist/security/shell-escalation-tiers.d.ts.map +1 -0
- package/dist/security/shell-escalation-tiers.js +439 -0
- package/dist/security/shell-escalation-tiers.js.map +1 -0
- package/dist/session/fork.d.ts +100 -0
- package/dist/session/fork.d.ts.map +1 -0
- package/dist/session/fork.js +223 -0
- package/dist/session/fork.js.map +1 -0
- package/dist/skills/activation-telemetry.d.ts +154 -0
- package/dist/skills/activation-telemetry.d.ts.map +1 -0
- package/dist/skills/activation-telemetry.js +274 -0
- package/dist/skills/activation-telemetry.js.map +1 -0
- package/dist/skills/agentskills-registry.d.ts +12 -1
- package/dist/skills/agentskills-registry.d.ts.map +1 -1
- package/dist/skills/agentskills-registry.js +11 -0
- package/dist/skills/agentskills-registry.js.map +1 -1
- package/dist/skills/description-optimizer.d.ts +101 -0
- package/dist/skills/description-optimizer.d.ts.map +1 -0
- package/dist/skills/description-optimizer.js +304 -0
- package/dist/skills/description-optimizer.js.map +1 -0
- package/dist/skills/history-deduper.d.ts +109 -0
- package/dist/skills/history-deduper.d.ts.map +1 -0
- package/dist/skills/history-deduper.js +222 -0
- package/dist/skills/history-deduper.js.map +1 -0
- package/dist/skills/loader.d.ts.map +1 -1
- package/dist/skills/loader.js +2 -1
- package/dist/skills/loader.js.map +1 -1
- package/dist/skills/skill-source-adapter.d.ts +16 -0
- package/dist/skills/skill-source-adapter.d.ts.map +1 -1
- package/dist/skills/skill-source-adapter.js +0 -0
- package/dist/skills/skill-source-adapter.js.map +1 -1
- package/dist/skills/skill-standard.d.ts +29 -4
- package/dist/skills/skill-standard.d.ts.map +1 -1
- package/dist/skills/skill-standard.js +139 -66
- package/dist/skills/skill-standard.js.map +1 -1
- package/dist/skills/sop-completion-gate.d.ts +137 -0
- package/dist/skills/sop-completion-gate.d.ts.map +1 -0
- package/dist/skills/sop-completion-gate.js +159 -0
- package/dist/skills/sop-completion-gate.js.map +1 -0
- package/dist/skills/sop-template.d.ts +85 -0
- package/dist/skills/sop-template.d.ts.map +1 -0
- package/dist/skills/sop-template.js +106 -0
- package/dist/skills/sop-template.js.map +1 -0
- package/dist/skills/wotann-skills-registry.d.ts +1 -1
- package/dist/skills/wotann-skills-registry.d.ts.map +1 -1
- package/dist/skills/wotann-skills-registry.js +503 -0
- package/dist/skills/wotann-skills-registry.js.map +1 -1
- package/dist/snippets/prompt-corpus.d.ts +10 -0
- package/dist/snippets/prompt-corpus.d.ts.map +1 -0
- package/dist/snippets/prompt-corpus.js +158 -0
- package/dist/snippets/prompt-corpus.js.map +1 -0
- package/dist/snippets/snippet-store.d.ts +27 -0
- package/dist/snippets/snippet-store.d.ts.map +1 -1
- package/dist/snippets/snippet-store.js +109 -6
- package/dist/snippets/snippet-store.js.map +1 -1
- package/dist/storage/sqlite-node-backend.d.ts +47 -36
- package/dist/storage/sqlite-node-backend.d.ts.map +1 -1
- package/dist/storage/sqlite-node-backend.js +250 -94
- package/dist/storage/sqlite-node-backend.js.map +1 -1
- package/dist/testing/webapp-server-lifecycle.d.ts +74 -0
- package/dist/testing/webapp-server-lifecycle.d.ts.map +1 -0
- package/dist/testing/webapp-server-lifecycle.js +272 -0
- package/dist/testing/webapp-server-lifecycle.js.map +1 -0
- package/dist/tools/markitdown-bridge.d.ts +19 -0
- package/dist/tools/markitdown-bridge.d.ts.map +1 -1
- package/dist/tools/markitdown-bridge.js +167 -2
- package/dist/tools/markitdown-bridge.js.map +1 -1
- package/dist/tools/pdf-processor.d.ts.map +1 -1
- package/dist/tools/pdf-processor.js +7 -3
- package/dist/tools/pdf-processor.js.map +1 -1
- package/dist/tools/pptx-processor.d.ts +51 -0
- package/dist/tools/pptx-processor.d.ts.map +1 -0
- package/dist/tools/pptx-processor.js +334 -0
- package/dist/tools/pptx-processor.js.map +1 -0
- package/dist/ui/App.d.ts.map +1 -1
- package/dist/ui/App.js +1661 -149
- package/dist/ui/App.js.map +1 -1
- package/dist/ui/agent-tools.d.ts +60 -0
- package/dist/ui/agent-tools.d.ts.map +1 -0
- package/dist/ui/agent-tools.js +468 -0
- package/dist/ui/agent-tools.js.map +1 -0
- package/dist/ui/alt-buffer-mode.d.ts +68 -0
- package/dist/ui/alt-buffer-mode.d.ts.map +1 -0
- package/dist/ui/alt-buffer-mode.js +114 -0
- package/dist/ui/alt-buffer-mode.js.map +1 -0
- package/dist/ui/alt-buffer.d.ts +57 -10
- package/dist/ui/alt-buffer.d.ts.map +1 -1
- package/dist/ui/alt-buffer.js +54 -12
- package/dist/ui/alt-buffer.js.map +1 -1
- package/dist/ui/components/AgentStatusPanel.d.ts.map +1 -1
- package/dist/ui/components/AgentStatusPanel.js +14 -6
- package/dist/ui/components/AgentStatusPanel.js.map +1 -1
- package/dist/ui/components/AuditLogPanel.js +3 -3
- package/dist/ui/components/AuditLogPanel.js.map +1 -1
- package/dist/ui/components/AutomationsPanel.js +3 -3
- package/dist/ui/components/AutomationsPanel.js.map +1 -1
- package/dist/ui/components/ChatView.d.ts +9 -1
- package/dist/ui/components/ChatView.d.ts.map +1 -1
- package/dist/ui/components/ChatView.js +503 -14
- package/dist/ui/components/ChatView.js.map +1 -1
- package/dist/ui/components/CommandPaletteCommands.d.ts +2 -0
- package/dist/ui/components/CommandPaletteCommands.d.ts.map +1 -1
- package/dist/ui/components/CommandPaletteCommands.js +18 -2
- package/dist/ui/components/CommandPaletteCommands.js.map +1 -1
- package/dist/ui/components/ContextHUD.d.ts.map +1 -1
- package/dist/ui/components/ContextHUD.js +3 -3
- package/dist/ui/components/ContextHUD.js.map +1 -1
- package/dist/ui/components/DispatchInbox.js +3 -3
- package/dist/ui/components/DispatchInbox.js.map +1 -1
- package/dist/ui/components/GdprPanel.d.ts.map +1 -1
- package/dist/ui/components/GdprPanel.js +2 -3
- package/dist/ui/components/GdprPanel.js.map +1 -1
- package/dist/ui/components/HistoryPicker.js +3 -3
- package/dist/ui/components/HistoryPicker.js.map +1 -1
- package/dist/ui/components/ModelPicker.d.ts +9 -6
- package/dist/ui/components/ModelPicker.d.ts.map +1 -1
- package/dist/ui/components/ModelPicker.js +12 -9
- package/dist/ui/components/ModelPicker.js.map +1 -1
- package/dist/ui/components/OptionPicker.js +3 -3
- package/dist/ui/components/OptionPicker.js.map +1 -1
- package/dist/ui/components/PermissionPrompt.js +3 -3
- package/dist/ui/components/PermissionPrompt.js.map +1 -1
- package/dist/ui/components/PromptInput.d.ts.map +1 -1
- package/dist/ui/components/PromptInput.js +65 -10
- package/dist/ui/components/PromptInput.js.map +1 -1
- package/dist/ui/components/ProviderSetupOverlay.d.ts +19 -0
- package/dist/ui/components/ProviderSetupOverlay.d.ts.map +1 -0
- package/dist/ui/components/ProviderSetupOverlay.js +124 -0
- package/dist/ui/components/ProviderSetupOverlay.js.map +1 -0
- package/dist/ui/components/StartupScreen.d.ts.map +1 -1
- package/dist/ui/components/StartupScreen.js +10 -1
- package/dist/ui/components/StartupScreen.js.map +1 -1
- package/dist/ui/components/StatusBar.d.ts.map +1 -1
- package/dist/ui/components/StatusBar.js +3 -3
- package/dist/ui/components/StatusBar.js.map +1 -1
- package/dist/ui/components/TrustPanel.js +3 -3
- package/dist/ui/components/TrustPanel.js.map +1 -1
- package/dist/ui/components/UnifiedStatusBar.d.ts.map +1 -1
- package/dist/ui/components/UnifiedStatusBar.js +76 -5
- package/dist/ui/components/UnifiedStatusBar.js.map +1 -1
- package/dist/ui/computer-action-parser.d.ts +6 -0
- package/dist/ui/computer-action-parser.d.ts.map +1 -0
- package/dist/ui/computer-action-parser.js +119 -0
- package/dist/ui/computer-action-parser.js.map +1 -0
- package/dist/ui/helpers.d.ts +1 -1
- package/dist/ui/helpers.d.ts.map +1 -1
- package/dist/ui/helpers.js +1 -1
- package/dist/ui/helpers.js.map +1 -1
- package/dist/ui/keybindings.d.ts +12 -2
- package/dist/ui/keybindings.d.ts.map +1 -1
- package/dist/ui/keybindings.js +36 -4
- package/dist/ui/keybindings.js.map +1 -1
- package/dist/ui/markdown-stream.d.ts +99 -0
- package/dist/ui/markdown-stream.d.ts.map +1 -0
- package/dist/ui/markdown-stream.js +314 -0
- package/dist/ui/markdown-stream.js.map +1 -0
- package/dist/ui/terminal-keyboard-protocol.d.ts +23 -0
- package/dist/ui/terminal-keyboard-protocol.d.ts.map +1 -0
- package/dist/ui/terminal-keyboard-protocol.js +72 -0
- package/dist/ui/terminal-keyboard-protocol.js.map +1 -0
- package/dist/ui/theme/context.d.ts +39 -0
- package/dist/ui/theme/context.d.ts.map +1 -0
- package/dist/ui/theme/context.js +42 -0
- package/dist/ui/theme/context.js.map +1 -0
- package/dist/utils/platform.d.ts +115 -0
- package/dist/utils/platform.d.ts.map +1 -0
- package/dist/utils/platform.js +146 -0
- package/dist/utils/platform.js.map +1 -0
- package/dist/verification/auto-verify-policy.d.ts +107 -0
- package/dist/verification/auto-verify-policy.d.ts.map +1 -0
- package/dist/verification/auto-verify-policy.js +309 -0
- package/dist/verification/auto-verify-policy.js.map +1 -0
- package/package.json +4 -1
- package/skills/anthropic-finance/audit-spreadsheet.md +165 -0
- package/skills/anthropic-finance/clean-data-xls.md +59 -0
- package/skills/anthropic-finance/competitive-analysis.md +288 -0
- package/skills/anthropic-finance/compliance-rules-engine.md +56 -0
- package/skills/anthropic-finance/dd-checklist.md +126 -0
- package/skills/anthropic-finance/independent-recompute.md +47 -0
- package/skills/anthropic-finance/reconcile-root-cause.md +48 -0
- package/skills/anthropic-finance/roll-forward.md +42 -0
- package/skills/anthropic-finance/untrusted-doc-parse.md +57 -0
- package/skills/anthropic-finance/variance-commentary.md +43 -0
- package/skills/doubt-driven-development.md +95 -0
- package/skills/mattpocock/diagnose.md +126 -0
- package/skills/mattpocock/grill-with-docs.md +97 -0
- package/skills/mattpocock/improve-codebase-architecture.md +80 -0
- package/skills/mattpocock/prototype.md +39 -0
- package/skills/mattpocock/review.md +87 -0
- package/skills/mattpocock/tdd.md +118 -0
- package/skills/mattpocock/zoom-out.md +17 -0
- package/skills/scientific/citation-management/SKILL.md +1113 -0
- package/skills/scientific/citation-management/assets/bibtex_template.bib +264 -0
- package/skills/scientific/citation-management/assets/citation_checklist.md +386 -0
- package/skills/scientific/citation-management/references/bibtex_formatting.md +908 -0
- package/skills/scientific/citation-management/references/citation_validation.md +794 -0
- package/skills/scientific/citation-management/references/google_scholar_search.md +725 -0
- package/skills/scientific/citation-management/references/metadata_extraction.md +870 -0
- package/skills/scientific/citation-management/references/pubmed_search.md +839 -0
- package/skills/scientific/citation-management/scripts/doi_to_bibtex.py +204 -0
- package/skills/scientific/citation-management/scripts/extract_metadata.py +569 -0
- package/skills/scientific/citation-management/scripts/format_bibtex.py +349 -0
- package/skills/scientific/citation-management/scripts/generate_schematic.py +139 -0
- package/skills/scientific/citation-management/scripts/generate_schematic_ai.py +817 -0
- package/skills/scientific/citation-management/scripts/search_google_scholar.py +282 -0
- package/skills/scientific/citation-management/scripts/search_pubmed.py +398 -0
- package/skills/scientific/citation-management/scripts/validate_citations.py +497 -0
- package/skills/scientific/database-lookup/SKILL.md +480 -0
- package/skills/scientific/database-lookup/references/addgene.md +38 -0
- package/skills/scientific/database-lookup/references/alphafold.md +40 -0
- package/skills/scientific/database-lookup/references/alphavantage.md +261 -0
- package/skills/scientific/database-lookup/references/bea.md +409 -0
- package/skills/scientific/database-lookup/references/bindingdb.md +85 -0
- package/skills/scientific/database-lookup/references/biogrid.md +110 -0
- package/skills/scientific/database-lookup/references/bls.md +235 -0
- package/skills/scientific/database-lookup/references/brenda.md +71 -0
- package/skills/scientific/database-lookup/references/cbioportal.md +206 -0
- package/skills/scientific/database-lookup/references/census.md +251 -0
- package/skills/scientific/database-lookup/references/chebi.md +103 -0
- package/skills/scientific/database-lookup/references/chembl.md +80 -0
- package/skills/scientific/database-lookup/references/clinicaltrials.md +77 -0
- package/skills/scientific/database-lookup/references/clinpgx.md +64 -0
- package/skills/scientific/database-lookup/references/clinvar.md +91 -0
- package/skills/scientific/database-lookup/references/cod.md +121 -0
- package/skills/scientific/database-lookup/references/cosmic.md +59 -0
- package/skills/scientific/database-lookup/references/dailymed.md +65 -0
- package/skills/scientific/database-lookup/references/datacommons.md +237 -0
- package/skills/scientific/database-lookup/references/dbsnp.md +143 -0
- package/skills/scientific/database-lookup/references/disgenet.md +52 -0
- package/skills/scientific/database-lookup/references/drugbank.md +54 -0
- package/skills/scientific/database-lookup/references/ecb.md +191 -0
- package/skills/scientific/database-lookup/references/emdb.md +37 -0
- package/skills/scientific/database-lookup/references/ena.md +372 -0
- package/skills/scientific/database-lookup/references/encode.md +47 -0
- package/skills/scientific/database-lookup/references/ensembl.md +539 -0
- package/skills/scientific/database-lookup/references/epa.md +232 -0
- package/skills/scientific/database-lookup/references/eurostat.md +237 -0
- package/skills/scientific/database-lookup/references/fda.md +64 -0
- package/skills/scientific/database-lookup/references/federal-reserve.md +216 -0
- package/skills/scientific/database-lookup/references/fred.md +297 -0
- package/skills/scientific/database-lookup/references/gene-ontology.md +147 -0
- package/skills/scientific/database-lookup/references/geo.md +130 -0
- package/skills/scientific/database-lookup/references/gnomad.md +93 -0
- package/skills/scientific/database-lookup/references/gtex.md +136 -0
- package/skills/scientific/database-lookup/references/gwas-catalog.md +46 -0
- package/skills/scientific/database-lookup/references/hca.md +35 -0
- package/skills/scientific/database-lookup/references/hpo.md +48 -0
- package/skills/scientific/database-lookup/references/human-protein-atlas.md +57 -0
- package/skills/scientific/database-lookup/references/interpro.md +120 -0
- package/skills/scientific/database-lookup/references/jaspar.md +50 -0
- package/skills/scientific/database-lookup/references/kegg.md +78 -0
- package/skills/scientific/database-lookup/references/lincs-l1000.md +68 -0
- package/skills/scientific/database-lookup/references/materials-project.md +123 -0
- package/skills/scientific/database-lookup/references/metabolomics-workbench.md +98 -0
- package/skills/scientific/database-lookup/references/monarch.md +46 -0
- package/skills/scientific/database-lookup/references/mousemine.md +40 -0
- package/skills/scientific/database-lookup/references/nasa-exoplanet-archive.md +112 -0
- package/skills/scientific/database-lookup/references/nasa.md +121 -0
- package/skills/scientific/database-lookup/references/ncbi-gene.md +64 -0
- package/skills/scientific/database-lookup/references/ncbi-protein.md +104 -0
- package/skills/scientific/database-lookup/references/ncbi-taxonomy.md +121 -0
- package/skills/scientific/database-lookup/references/nist.md +105 -0
- package/skills/scientific/database-lookup/references/noaa.md +199 -0
- package/skills/scientific/database-lookup/references/omim.md +114 -0
- package/skills/scientific/database-lookup/references/opentargets.md +459 -0
- package/skills/scientific/database-lookup/references/openweathermap.md +255 -0
- package/skills/scientific/database-lookup/references/pdb.md +121 -0
- package/skills/scientific/database-lookup/references/pride.md +74 -0
- package/skills/scientific/database-lookup/references/pubchem.md +145 -0
- package/skills/scientific/database-lookup/references/quickgo.md +45 -0
- package/skills/scientific/database-lookup/references/reactome.md +140 -0
- package/skills/scientific/database-lookup/references/rummageo.md +32 -0
- package/skills/scientific/database-lookup/references/sdss.md +130 -0
- package/skills/scientific/database-lookup/references/sec-edgar.md +315 -0
- package/skills/scientific/database-lookup/references/simbad.md +131 -0
- package/skills/scientific/database-lookup/references/sra.md +149 -0
- package/skills/scientific/database-lookup/references/string.md +283 -0
- package/skills/scientific/database-lookup/references/tcga-gdc.md +58 -0
- package/skills/scientific/database-lookup/references/treasury.md +215 -0
- package/skills/scientific/database-lookup/references/ucsc-genome.md +135 -0
- package/skills/scientific/database-lookup/references/uniprot.md +283 -0
- package/skills/scientific/database-lookup/references/usgs.md +260 -0
- package/skills/scientific/database-lookup/references/uspto.md +130 -0
- package/skills/scientific/database-lookup/references/who.md +283 -0
- package/skills/scientific/database-lookup/references/worldbank.md +239 -0
- package/skills/scientific/database-lookup/references/zinc.md +202 -0
- package/skills/scientific/hypothesis-generation/SKILL.md +297 -0
- package/skills/scientific/hypothesis-generation/assets/FORMATTING_GUIDE.md +672 -0
- package/skills/scientific/hypothesis-generation/assets/hypothesis_generation.sty +307 -0
- package/skills/scientific/hypothesis-generation/assets/hypothesis_report_template.tex +572 -0
- package/skills/scientific/hypothesis-generation/references/experimental_design_patterns.md +329 -0
- package/skills/scientific/hypothesis-generation/references/hypothesis_quality_criteria.md +198 -0
- package/skills/scientific/hypothesis-generation/references/literature_search_strategies.md +622 -0
- package/skills/scientific/hypothesis-generation/scripts/generate_schematic.py +139 -0
- package/skills/scientific/hypothesis-generation/scripts/generate_schematic_ai.py +817 -0
- package/skills/scientific/literature-review/SKILL.md +699 -0
- package/skills/scientific/literature-review/assets/review_template.md +412 -0
- package/skills/scientific/literature-review/references/citation_styles.md +166 -0
- package/skills/scientific/literature-review/references/database_strategies.md +455 -0
- package/skills/scientific/literature-review/scripts/generate_pdf.py +176 -0
- package/skills/scientific/literature-review/scripts/generate_schematic.py +139 -0
- package/skills/scientific/literature-review/scripts/generate_schematic_ai.py +817 -0
- package/skills/scientific/literature-review/scripts/search_databases.py +303 -0
- package/skills/scientific/literature-review/scripts/verify_citations.py +222 -0
- package/skills/scientific/markdown-mermaid-writing/SKILL.md +327 -0
- package/skills/scientific/markdown-mermaid-writing/assets/examples/example-research-report.md +221 -0
- package/skills/scientific/markdown-mermaid-writing/references/diagrams/architecture.md +108 -0
- package/skills/scientific/markdown-mermaid-writing/references/diagrams/block.md +177 -0
- package/skills/scientific/markdown-mermaid-writing/references/diagrams/c4.md +136 -0
- package/skills/scientific/markdown-mermaid-writing/references/diagrams/class.md +246 -0
- package/skills/scientific/markdown-mermaid-writing/references/diagrams/complex_examples.md +384 -0
- package/skills/scientific/markdown-mermaid-writing/references/diagrams/er.md +222 -0
- package/skills/scientific/markdown-mermaid-writing/references/diagrams/flowchart.md +177 -0
- package/skills/scientific/markdown-mermaid-writing/references/diagrams/gantt.md +138 -0
- package/skills/scientific/markdown-mermaid-writing/references/diagrams/git_graph.md +74 -0
- package/skills/scientific/markdown-mermaid-writing/references/diagrams/kanban.md +107 -0
- package/skills/scientific/markdown-mermaid-writing/references/diagrams/mindmap.md +74 -0
- package/skills/scientific/markdown-mermaid-writing/references/diagrams/packet.md +55 -0
- package/skills/scientific/markdown-mermaid-writing/references/diagrams/pie.md +52 -0
- package/skills/scientific/markdown-mermaid-writing/references/diagrams/quadrant.md +66 -0
- package/skills/scientific/markdown-mermaid-writing/references/diagrams/radar.md +59 -0
- package/skills/scientific/markdown-mermaid-writing/references/diagrams/requirement.md +88 -0
- package/skills/scientific/markdown-mermaid-writing/references/diagrams/sankey.md +71 -0
- package/skills/scientific/markdown-mermaid-writing/references/diagrams/sequence.md +174 -0
- package/skills/scientific/markdown-mermaid-writing/references/diagrams/state.md +150 -0
- package/skills/scientific/markdown-mermaid-writing/references/diagrams/timeline.md +96 -0
- package/skills/scientific/markdown-mermaid-writing/references/diagrams/treemap.md +66 -0
- package/skills/scientific/markdown-mermaid-writing/references/diagrams/user_journey.md +108 -0
- package/skills/scientific/markdown-mermaid-writing/references/diagrams/xy_chart.md +53 -0
- package/skills/scientific/markdown-mermaid-writing/references/diagrams/zenuml.md +71 -0
- package/skills/scientific/markdown-mermaid-writing/references/markdown_style_guide.md +733 -0
- package/skills/scientific/markdown-mermaid-writing/references/mermaid_style_guide.md +458 -0
- package/skills/scientific/markdown-mermaid-writing/templates/decision_record.md +211 -0
- package/skills/scientific/markdown-mermaid-writing/templates/how_to_guide.md +275 -0
- package/skills/scientific/markdown-mermaid-writing/templates/issue.md +303 -0
- package/skills/scientific/markdown-mermaid-writing/templates/kanban.md +223 -0
- package/skills/scientific/markdown-mermaid-writing/templates/presentation.md +312 -0
- package/skills/scientific/markdown-mermaid-writing/templates/project_documentation.md +412 -0
- package/skills/scientific/markdown-mermaid-writing/templates/pull_request.md +319 -0
- package/skills/scientific/markdown-mermaid-writing/templates/research_paper.md +304 -0
- package/skills/scientific/markdown-mermaid-writing/templates/status_report.md +185 -0
- package/skills/scientific/paper-lookup/SKILL.md +193 -0
- package/skills/scientific/paper-lookup/references/arxiv.md +161 -0
- package/skills/scientific/paper-lookup/references/biorxiv.md +118 -0
- package/skills/scientific/paper-lookup/references/core.md +150 -0
- package/skills/scientific/paper-lookup/references/crossref.md +181 -0
- package/skills/scientific/paper-lookup/references/medrxiv.md +104 -0
- package/skills/scientific/paper-lookup/references/openalex.md +174 -0
- package/skills/scientific/paper-lookup/references/pmc.md +152 -0
- package/skills/scientific/paper-lookup/references/pubmed.md +124 -0
- package/skills/scientific/paper-lookup/references/semantic-scholar.md +203 -0
- package/skills/scientific/paper-lookup/references/unpaywall.md +127 -0
- package/skills/scientific/peer-review/SKILL.md +569 -0
- package/skills/scientific/peer-review/references/common_issues.md +552 -0
- package/skills/scientific/peer-review/references/reporting_standards.md +290 -0
- package/skills/scientific/peer-review/scripts/generate_schematic.py +139 -0
- package/skills/scientific/peer-review/scripts/generate_schematic_ai.py +817 -0
- package/skills/scientific/scholar-evaluation/SKILL.md +298 -0
- package/skills/scientific/scholar-evaluation/references/evaluation_framework.md +663 -0
- package/skills/scientific/scholar-evaluation/scripts/calculate_scores.py +378 -0
- package/skills/scientific/scholar-evaluation/scripts/generate_schematic.py +139 -0
- package/skills/scientific/scholar-evaluation/scripts/generate_schematic_ai.py +817 -0
- package/skills/scientific/scientific-brainstorming/SKILL.md +189 -0
- package/skills/scientific/scientific-brainstorming/references/brainstorming_methods.md +326 -0
- package/skills/scientific/scientific-critical-thinking/SKILL.md +570 -0
- package/skills/scientific/scientific-critical-thinking/references/common_biases.md +364 -0
- package/skills/scientific/scientific-critical-thinking/references/evidence_hierarchy.md +484 -0
- package/skills/scientific/scientific-critical-thinking/references/experimental_design.md +496 -0
- package/skills/scientific/scientific-critical-thinking/references/logical_fallacies.md +478 -0
- package/skills/scientific/scientific-critical-thinking/references/scientific_method.md +169 -0
- package/skills/scientific/scientific-critical-thinking/references/statistical_pitfalls.md +506 -0
- package/skills/scientific/scientific-critical-thinking/scripts/generate_schematic.py +139 -0
- package/skills/scientific/scientific-critical-thinking/scripts/generate_schematic_ai.py +817 -0
- package/skills/wotann-imports/incremental-implementation.md +241 -0
- package/skills/wotann-imports/security-threat-model.md +81 -0
- package/skills/wotann-imports/triage.md +103 -0
- package/dist/build/deploy-targets/coolify.d.ts +0 -148
- package/dist/build/deploy-targets/coolify.d.ts.map +0 -1
- package/dist/build/deploy-targets/coolify.js +0 -339
- package/dist/build/deploy-targets/coolify.js.map +0 -1
- package/dist/build/deploy-targets/dokploy.d.ts +0 -139
- package/dist/build/deploy-targets/dokploy.d.ts.map +0 -1
- package/dist/build/deploy-targets/dokploy.js +0 -339
- package/dist/build/deploy-targets/dokploy.js.map +0 -1
- package/dist/claude/hardening/error-handler.d.ts +0 -52
- package/dist/claude/hardening/error-handler.d.ts.map +0 -1
- package/dist/claude/hardening/error-handler.js +0 -158
- package/dist/claude/hardening/error-handler.js.map +0 -1
- package/dist/cli/onboarding.d.ts +0 -34
- package/dist/cli/onboarding.d.ts.map +0 -1
- package/dist/cli/onboarding.js +0 -150
- package/dist/cli/onboarding.js.map +0 -1
- package/dist/core/agent-profiles.d.ts +0 -65
- package/dist/core/agent-profiles.d.ts.map +0 -1
- package/dist/core/agent-profiles.js +0 -137
- package/dist/core/agent-profiles.js.map +0 -1
- package/dist/desktop/supabase-relay.d.ts +0 -86
- package/dist/desktop/supabase-relay.d.ts.map +0 -1
- package/dist/desktop/supabase-relay.js +0 -335
- package/dist/desktop/supabase-relay.js.map +0 -1
- package/dist/intelligence/kg-builder.d.ts +0 -181
- package/dist/intelligence/kg-builder.d.ts.map +0 -1
- package/dist/intelligence/kg-builder.js +0 -807
- package/dist/intelligence/kg-builder.js.map +0 -1
- package/dist/orchestration/jean-orchestrator.d.ts +0 -79
- package/dist/orchestration/jean-orchestrator.d.ts.map +0 -1
- package/dist/orchestration/jean-orchestrator.js +0 -253
- package/dist/orchestration/jean-orchestrator.js.map +0 -1
- package/dist/orchestration/jean-registries/command-registry.d.ts +0 -85
- package/dist/orchestration/jean-registries/command-registry.d.ts.map +0 -1
- package/dist/orchestration/jean-registries/command-registry.js +0 -120
- package/dist/orchestration/jean-registries/command-registry.js.map +0 -1
- package/dist/orchestration/jean-registries/event-registry.d.ts +0 -80
- package/dist/orchestration/jean-registries/event-registry.d.ts.map +0 -1
- package/dist/orchestration/jean-registries/event-registry.js +0 -147
- package/dist/orchestration/jean-registries/event-registry.js.map +0 -1
- package/dist/orchestration/jean-registries/process-registry.d.ts +0 -71
- package/dist/orchestration/jean-registries/process-registry.d.ts.map +0 -1
- package/dist/orchestration/jean-registries/process-registry.js +0 -104
- package/dist/orchestration/jean-registries/process-registry.js.map +0 -1
- package/dist/orchestration/jean-registries/result-registry.d.ts +0 -71
- package/dist/orchestration/jean-registries/result-registry.d.ts.map +0 -1
- package/dist/orchestration/jean-registries/result-registry.js +0 -97
- package/dist/orchestration/jean-registries/result-registry.js.map +0 -1
- package/dist/providers/bedrock-signer.d.ts +0 -23
- package/dist/providers/bedrock-signer.d.ts.map +0 -1
- package/dist/providers/bedrock-signer.js +0 -439
- package/dist/providers/bedrock-signer.js.map +0 -1
- package/dist/providers/harness-profiles.d.ts +0 -70
- package/dist/providers/harness-profiles.d.ts.map +0 -1
- package/dist/providers/harness-profiles.js +0 -210
- package/dist/providers/harness-profiles.js.map +0 -1
- package/dist/providers/vertex-oauth.d.ts +0 -21
- package/dist/providers/vertex-oauth.d.ts.map +0 -1
- package/dist/providers/vertex-oauth.js +0 -393
- package/dist/providers/vertex-oauth.js.map +0 -1
- package/dist/sandbox/backends/cloud-auth.d.ts +0 -50
- package/dist/sandbox/backends/cloud-auth.d.ts.map +0 -1
- package/dist/sandbox/backends/cloud-auth.js +0 -93
- package/dist/sandbox/backends/cloud-auth.js.map +0 -1
- package/dist/security/anti-distillation.d.ts +0 -46
- package/dist/security/anti-distillation.d.ts.map +0 -1
- package/dist/security/anti-distillation.js +0 -358
- package/dist/security/anti-distillation.js.map +0 -1
- package/dist/security/multi-encoding-decoder.d.ts +0 -47
- package/dist/security/multi-encoding-decoder.d.ts.map +0 -1
- package/dist/security/multi-encoding-decoder.js +0 -336
- package/dist/security/multi-encoding-decoder.js.map +0 -1
- package/dist/ui/accessibility.d.ts +0 -157
- package/dist/ui/accessibility.d.ts.map +0 -1
- package/dist/ui/accessibility.js +0 -232
- package/dist/ui/accessibility.js.map +0 -1
- package/dist/ui/animations.d.ts +0 -102
- package/dist/ui/animations.d.ts.map +0 -1
- package/dist/ui/animations.js +0 -277
- package/dist/ui/animations.js.map +0 -1
- package/dist/ui/components/Sparkline.d.ts +0 -81
- package/dist/ui/components/Sparkline.d.ts.map +0 -1
- package/dist/ui/components/Sparkline.js +0 -102
- package/dist/ui/components/Sparkline.js.map +0 -1
- package/dist/ui/input/mouse.d.ts +0 -139
- package/dist/ui/input/mouse.d.ts.map +0 -1
- package/dist/ui/input/mouse.js +0 -239
- package/dist/ui/input/mouse.js.map +0 -1
- package/dist/ui/sound.d.ts +0 -85
- package/dist/ui/sound.d.ts.map +0 -1
- package/dist/ui/sound.js +0 -126
- package/dist/ui/sound.js.map +0 -1
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session fork primitive — branch a SQLite-backed session at its last
|
|
3
|
+
* checkpoint to enable parallel-approach exploration ("try CQRS vs
|
|
4
|
+
* event-sourcing", "what if we rolled this back and tried a different
|
|
5
|
+
* tool order"). Ported from the opencode/cline session-fork pattern.
|
|
6
|
+
*
|
|
7
|
+
* WHAT: Given a source session id and a `wotannDir`, this module opens
|
|
8
|
+
* `<wotannDir>/sessions.db`, materialises the schema if it's missing,
|
|
9
|
+
* and atomically copies the source session row + its message thread
|
|
10
|
+
* (up to and including its `last_checkpoint`) into a freshly minted
|
|
11
|
+
* session id. The new session inherits the source's `last_checkpoint`
|
|
12
|
+
* pointer so a follow-on resume/restore command sees the same head.
|
|
13
|
+
*
|
|
14
|
+
* WHY: WOTANN already has two checkpoint flavours — `storage/
|
|
15
|
+
* checkpoint-supersede.ts` (pure-data rollback algorithm) and
|
|
16
|
+
* `autopilot/checkpoint.ts` (JSON file dumps for long-running autopilot
|
|
17
|
+
* loops). Neither offers a first-class "branch from here" primitive
|
|
18
|
+
* for SQL-backed sessions. The opencode + cline ports both expose this
|
|
19
|
+
* as a single transactional copy; we follow that shape so the future
|
|
20
|
+
* CLI subcommand has a clean call site.
|
|
21
|
+
*
|
|
22
|
+
* WHERE: Imported by the CLI surface that the parent agent will wire up
|
|
23
|
+
* sequentially. The DB file path is derived from `req.wotannDir` so
|
|
24
|
+
* callers can sandbox it per test or per workspace without changing
|
|
25
|
+
* the module's interface.
|
|
26
|
+
*
|
|
27
|
+
* HOW:
|
|
28
|
+
* 1. Lazy-construct (or open) `<wotannDir>/sessions.db` via
|
|
29
|
+
* `better-sqlite3`. The schema (`sessions`, `messages`) is created
|
|
30
|
+
* with `CREATE TABLE IF NOT EXISTS`, so multiple callers sharing
|
|
31
|
+
* the same DB never collide.
|
|
32
|
+
* 2. Look up the source session row. Honest error envelope on miss:
|
|
33
|
+
* `{ok:false, error:"session not found"}`.
|
|
34
|
+
* 3. Read the source's `last_checkpoint` pointer. If absent or empty,
|
|
35
|
+
* `{ok:false, error:"no checkpoint to fork from"}`.
|
|
36
|
+
* 4. Generate a new session id with `crypto.randomUUID()`.
|
|
37
|
+
* 5. Inside `db.transaction(...)`, INSERT the new sessions row and
|
|
38
|
+
* COPY every message in the source thread whose `seq` is at or
|
|
39
|
+
* below the message that backs the checkpoint pointer. better-
|
|
40
|
+
* sqlite3 transactions roll back atomically on any thrown error,
|
|
41
|
+
* so a partial INSERT can never leave the database half-forked.
|
|
42
|
+
* 6. Return `{ok:true, newSessionId, sourceCheckpoint, messageCount}`.
|
|
43
|
+
*
|
|
44
|
+
* Schema (self-contained — no other module currently owns these tables):
|
|
45
|
+
* sessions(id PK, label, last_checkpoint, created_at, source_session)
|
|
46
|
+
* messages(session_id, seq, role, content, checkpoint_id,
|
|
47
|
+
* PRIMARY KEY (session_id, seq))
|
|
48
|
+
*
|
|
49
|
+
* The `messages.checkpoint_id` column records WHICH checkpoint each
|
|
50
|
+
* message was the head for — required so a fork can compute "all
|
|
51
|
+
* messages up to the checkpoint" without an external join table. A
|
|
52
|
+
* row with `checkpoint_id = NULL` is a regular message; a row with
|
|
53
|
+
* `checkpoint_id` non-null is the message that minted that checkpoint.
|
|
54
|
+
*
|
|
55
|
+
* `sessions.last_checkpoint` is the pointer field the task calls out —
|
|
56
|
+
* it stores the checkpoint id (a string) so we can locate the cut
|
|
57
|
+
* point during fork.
|
|
58
|
+
*
|
|
59
|
+
* Honest-stub policy: every failure path returns a typed `ForkResult`
|
|
60
|
+
* with `ok:false` and a human-readable `error` string. The function
|
|
61
|
+
* never throws to the caller. Callers can branch on `result.ok` and
|
|
62
|
+
* surface the `error` in the CLI without try/catch noise.
|
|
63
|
+
*/
|
|
64
|
+
import Database from "better-sqlite3";
|
|
65
|
+
import { mkdirSync, existsSync } from "node:fs";
|
|
66
|
+
import { join } from "node:path";
|
|
67
|
+
import { randomUUID } from "node:crypto";
|
|
68
|
+
// Schema bootstrap ───────────────────────────────────────
|
|
69
|
+
/**
|
|
70
|
+
* Materialise the session schema. Idempotent: existing tables are left
|
|
71
|
+
* untouched, missing tables/indexes are created. Called by `forkSession`
|
|
72
|
+
* on every invocation so a brand-new `wotannDir` works without a
|
|
73
|
+
* separate migration step.
|
|
74
|
+
*
|
|
75
|
+
* We DO NOT set `journal_mode = WAL` here. The parent CLI may share the
|
|
76
|
+
* DB across processes and WAL behaviour interacts with that decision —
|
|
77
|
+
* leave journal mode at SQLite's default until the caller wires the
|
|
78
|
+
* proper PRAGMA bundle from `utils/schema-drift.ts`.
|
|
79
|
+
*/
|
|
80
|
+
function ensureSchema(db) {
|
|
81
|
+
db.exec(`
|
|
82
|
+
CREATE TABLE IF NOT EXISTS sessions (
|
|
83
|
+
id TEXT PRIMARY KEY,
|
|
84
|
+
label TEXT,
|
|
85
|
+
last_checkpoint TEXT,
|
|
86
|
+
created_at INTEGER NOT NULL,
|
|
87
|
+
source_session TEXT
|
|
88
|
+
);
|
|
89
|
+
CREATE TABLE IF NOT EXISTS messages (
|
|
90
|
+
session_id TEXT NOT NULL,
|
|
91
|
+
seq INTEGER NOT NULL,
|
|
92
|
+
role TEXT NOT NULL,
|
|
93
|
+
content TEXT NOT NULL,
|
|
94
|
+
checkpoint_id TEXT,
|
|
95
|
+
PRIMARY KEY (session_id, seq)
|
|
96
|
+
);
|
|
97
|
+
CREATE INDEX IF NOT EXISTS idx_messages_checkpoint
|
|
98
|
+
ON messages(session_id, checkpoint_id);
|
|
99
|
+
`);
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Open the sessions database at `<wotannDir>/sessions.db`. Creates
|
|
103
|
+
* `wotannDir` if it doesn't exist so the first call on a fresh
|
|
104
|
+
* workspace doesn't fail with ENOENT. Errors from `better-sqlite3` (e.g.
|
|
105
|
+
* file-system permission failures) propagate to the caller —
|
|
106
|
+
* `forkSession` catches them and translates to a typed `ForkResult`.
|
|
107
|
+
*/
|
|
108
|
+
function openSessionDb(wotannDir) {
|
|
109
|
+
if (!existsSync(wotannDir)) {
|
|
110
|
+
mkdirSync(wotannDir, { recursive: true });
|
|
111
|
+
}
|
|
112
|
+
const dbPath = join(wotannDir, "sessions.db");
|
|
113
|
+
return new Database(dbPath);
|
|
114
|
+
}
|
|
115
|
+
// Public API ─────────────────────────────────────────────
|
|
116
|
+
/**
|
|
117
|
+
* Fork a session at its last checkpoint. See module docstring for the
|
|
118
|
+
* full contract. Never throws — every failure mode is a structured
|
|
119
|
+
* `ForkResult` with `ok:false` and a `error` string.
|
|
120
|
+
*
|
|
121
|
+
* Returns `Promise<ForkResult>` because the task contract specifies an
|
|
122
|
+
* async signature; the implementation is synchronous under the hood
|
|
123
|
+
* (better-sqlite3 is sync) but we honour the public shape for
|
|
124
|
+
* forward-compatibility with the node-sqlite3 / sql.js backends that
|
|
125
|
+
* `selectStorageAdapter()` may eventually route to.
|
|
126
|
+
*/
|
|
127
|
+
export async function forkSession(req) {
|
|
128
|
+
let db = null;
|
|
129
|
+
try {
|
|
130
|
+
db = openSessionDb(req.wotannDir);
|
|
131
|
+
ensureSchema(db);
|
|
132
|
+
// Look up the source session row ──────────────────────
|
|
133
|
+
const sourceRow = db
|
|
134
|
+
.prepare("SELECT id, label, last_checkpoint, created_at, source_session FROM sessions WHERE id = ?")
|
|
135
|
+
.get(req.sourceSessionId);
|
|
136
|
+
if (!sourceRow) {
|
|
137
|
+
return { ok: false, error: "session not found" };
|
|
138
|
+
}
|
|
139
|
+
const sourceCheckpoint = sourceRow.last_checkpoint;
|
|
140
|
+
if (sourceCheckpoint === null || sourceCheckpoint === undefined || sourceCheckpoint === "") {
|
|
141
|
+
return { ok: false, error: "no checkpoint to fork from" };
|
|
142
|
+
}
|
|
143
|
+
// Locate the message that minted the checkpoint ───────
|
|
144
|
+
// `messages.checkpoint_id` is set on the message at which the
|
|
145
|
+
// checkpoint was minted. We accept the FIRST match (lowest seq)
|
|
146
|
+
// so a misconfigured DB that double-tags rows still produces a
|
|
147
|
+
// deterministic cut.
|
|
148
|
+
const checkpointMessage = db
|
|
149
|
+
.prepare("SELECT session_id, seq, role, content, checkpoint_id " +
|
|
150
|
+
"FROM messages WHERE session_id = ? AND checkpoint_id = ? " +
|
|
151
|
+
"ORDER BY seq ASC LIMIT 1")
|
|
152
|
+
.get(req.sourceSessionId, sourceCheckpoint);
|
|
153
|
+
// Cut point: every message with seq <= checkpointMessage.seq. If
|
|
154
|
+
// the checkpoint pointer doesn't match any message (e.g. it was
|
|
155
|
+
// recorded before the message thread existed), we copy ALL
|
|
156
|
+
// messages — the checkpoint is the conceptual head even if no
|
|
157
|
+
// message backs it. This preserves the fork's "branch from here"
|
|
158
|
+
// semantics for thread-less sessions.
|
|
159
|
+
const cutSeq = checkpointMessage ? checkpointMessage.seq : Number.MAX_SAFE_INTEGER;
|
|
160
|
+
const newSessionId = randomUUID();
|
|
161
|
+
const createdAt = Date.now();
|
|
162
|
+
const newLabel = req.label ?? sourceRow.label ?? null;
|
|
163
|
+
// Atomic copy ────────────────────────────────────────
|
|
164
|
+
// better-sqlite3's `transaction()` wraps the callback in BEGIN /
|
|
165
|
+
// COMMIT and rolls back on any thrown error. If the new session
|
|
166
|
+
// INSERT collides or the message COPY fails partway, the DB is
|
|
167
|
+
// restored to its pre-fork state.
|
|
168
|
+
const handle = db;
|
|
169
|
+
const tx = handle.transaction(() => {
|
|
170
|
+
// Insert the new session row pointing at the SAME checkpoint id.
|
|
171
|
+
// The fork inherits the cut point — the next snapshot the user
|
|
172
|
+
// takes will supersede it via checkpoint-supersede semantics.
|
|
173
|
+
handle
|
|
174
|
+
.prepare("INSERT INTO sessions (id, label, last_checkpoint, created_at, source_session) " +
|
|
175
|
+
"VALUES (?, ?, ?, ?, ?)")
|
|
176
|
+
.run(newSessionId, newLabel, sourceCheckpoint, createdAt, sourceRow.id);
|
|
177
|
+
// Copy every message in the source thread up to and including
|
|
178
|
+
// the checkpoint cut point. We re-use the source's `seq` values
|
|
179
|
+
// because the new thread is a verbatim prefix; subsequent writes
|
|
180
|
+
// will append at seq = max(seq) + 1.
|
|
181
|
+
const sourceMessages = handle
|
|
182
|
+
.prepare("SELECT session_id, seq, role, content, checkpoint_id " +
|
|
183
|
+
"FROM messages WHERE session_id = ? AND seq <= ? " +
|
|
184
|
+
"ORDER BY seq ASC")
|
|
185
|
+
.all(req.sourceSessionId, cutSeq);
|
|
186
|
+
const insertMsg = handle.prepare("INSERT INTO messages (session_id, seq, role, content, checkpoint_id) " +
|
|
187
|
+
"VALUES (?, ?, ?, ?, ?)");
|
|
188
|
+
for (const m of sourceMessages) {
|
|
189
|
+
insertMsg.run(newSessionId, m.seq, m.role, m.content, m.checkpoint_id);
|
|
190
|
+
}
|
|
191
|
+
return sourceMessages.length;
|
|
192
|
+
});
|
|
193
|
+
const messageCount = tx();
|
|
194
|
+
return {
|
|
195
|
+
ok: true,
|
|
196
|
+
newSessionId,
|
|
197
|
+
sourceCheckpoint,
|
|
198
|
+
messageCount,
|
|
199
|
+
};
|
|
200
|
+
}
|
|
201
|
+
catch (err) {
|
|
202
|
+
// Translate every native exception into a typed envelope. Closed /
|
|
203
|
+
// read-only DBs surface here ("This database connection is busy"
|
|
204
|
+
// or "attempt to write a readonly database"), as do disk-full and
|
|
205
|
+
// permission errors. The CLI caller decides whether to surface
|
|
206
|
+
// the raw message; we expose it so debugging stays honest.
|
|
207
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
208
|
+
return { ok: false, error: `fork failed: ${message}` };
|
|
209
|
+
}
|
|
210
|
+
finally {
|
|
211
|
+
// Close the handle even on the error path so the test harness can
|
|
212
|
+
// remove the temp dir without "database is locked" noise on
|
|
213
|
+
// Windows. better-sqlite3's close() is idempotent.
|
|
214
|
+
try {
|
|
215
|
+
db?.close();
|
|
216
|
+
}
|
|
217
|
+
catch {
|
|
218
|
+
// Best-effort — if close itself throws, the caller already has
|
|
219
|
+
// the primary error to act on.
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
//# sourceMappingURL=fork.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fork.js","sourceRoot":"","sources":["../../src/session/fork.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Skill activation telemetry — closes the description-optimizer loop.
|
|
3
|
+
*
|
|
4
|
+
* The description-optimizer (skills/description-optimizer.ts) needs a
|
|
5
|
+
* labeled corpus of (prompt, expected-trigger) pairs to score a
|
|
6
|
+
* description's F1. Hand-curating that corpus is tedious. This module
|
|
7
|
+
* records, for every WOTANN session, *which* skill (if any) was
|
|
8
|
+
* actually activated for *which* user prompt, and persists the result
|
|
9
|
+
* to a JSONL log. The optimizer can then pull a real corpus directly
|
|
10
|
+
* from observed usage:
|
|
11
|
+
*
|
|
12
|
+
* - positives for skill X = prompts where X was triggered
|
|
13
|
+
* - negatives for skill X = prompts where X was NOT triggered
|
|
14
|
+
*
|
|
15
|
+
* The loop closes: real usage → telemetry → corpus → optimizer →
|
|
16
|
+
* better description → better future activation.
|
|
17
|
+
*
|
|
18
|
+
* Storage shape — JSONL with two event kinds:
|
|
19
|
+
*
|
|
20
|
+
* activation: { kind:"activation", ts, sessionId, prompt,
|
|
21
|
+
* triggered: {skill, kind} | null,
|
|
22
|
+
* candidates: [{skill, score}], outcome }
|
|
23
|
+
*
|
|
24
|
+
* outcome-patch: { kind:"outcome-patch", ts, sessionId, outcome }
|
|
25
|
+
*
|
|
26
|
+
* The patch-event form is how `markOutcome` survives a process restart
|
|
27
|
+
* and a JSONL reload. `loadTelemetryLog` folds patches into the most-
|
|
28
|
+
* recent matching activation when reading, so disk-backed corpus
|
|
29
|
+
* mining sees regret signals exactly the same as in-memory does.
|
|
30
|
+
*
|
|
31
|
+
* Where:
|
|
32
|
+
* - `triggered` is the skill that fired (null if no skill fired)
|
|
33
|
+
* - `kind` is "auto" | "user-named" — whether the harness chose
|
|
34
|
+
* the skill itself or the user explicitly called it
|
|
35
|
+
* - `candidates` is the top-N skills by the auto-detector's score
|
|
36
|
+
* (so optimizer can mine near-misses for negatives)
|
|
37
|
+
* - `outcome` captures whether the activation was useful: "ok"
|
|
38
|
+
* when a downstream success signal arrived, "regret" when the
|
|
39
|
+
* user immediately re-invoked a different skill
|
|
40
|
+
*
|
|
41
|
+
* QUALITY BARS
|
|
42
|
+
* - QB#1 No vendor bias — provider-agnostic; skills are name-only.
|
|
43
|
+
* - QB#3 Honest stub — disk failures degrade to in-memory only and
|
|
44
|
+
* surface a warn so the run never crashes.
|
|
45
|
+
* - QB#7 Per-call state — each Telemetry instance is fresh; no
|
|
46
|
+
* module-level singleton.
|
|
47
|
+
* - QB#13 Env guard — telemetry is disabled by default (opt-in via
|
|
48
|
+
* constructor flag); tests can pass `enabled:false` for full mocking.
|
|
49
|
+
*/
|
|
50
|
+
export type ActivationKind = "auto" | "user-named";
|
|
51
|
+
export type ActivationOutcome = "ok" | "regret" | "unknown";
|
|
52
|
+
export interface ActivationCandidate {
|
|
53
|
+
readonly skill: string;
|
|
54
|
+
readonly score: number;
|
|
55
|
+
}
|
|
56
|
+
export interface ActivationEvent {
|
|
57
|
+
/** ISO-8601 timestamp the event was recorded. */
|
|
58
|
+
readonly ts: string;
|
|
59
|
+
/** WOTANN session id the event belongs to. */
|
|
60
|
+
readonly sessionId: string;
|
|
61
|
+
/** The user's prompt text (exact, untrimmed) for corpus mining. */
|
|
62
|
+
readonly prompt: string;
|
|
63
|
+
/** The skill that fired, or null when no skill fired. */
|
|
64
|
+
readonly triggered: {
|
|
65
|
+
readonly skill: string;
|
|
66
|
+
readonly kind: ActivationKind;
|
|
67
|
+
} | null;
|
|
68
|
+
/** Top candidates from the activation scorer (regret + near-miss mining). */
|
|
69
|
+
readonly candidates: readonly ActivationCandidate[];
|
|
70
|
+
/** Optional outcome marker — set later by markOutcome(). */
|
|
71
|
+
readonly outcome: ActivationOutcome;
|
|
72
|
+
}
|
|
73
|
+
export interface TelemetryOptions {
|
|
74
|
+
/** When false, every method is a no-op. Default: true. */
|
|
75
|
+
readonly enabled?: boolean;
|
|
76
|
+
/** Path to the JSONL log. Required when enabled is true. */
|
|
77
|
+
readonly path?: string;
|
|
78
|
+
/** Optional clock override (tests). */
|
|
79
|
+
readonly now?: () => Date;
|
|
80
|
+
/** Cap on in-memory events when disk write fails. Default: 1000. */
|
|
81
|
+
readonly memoryCap?: number;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Append-only telemetry sink. Writes JSONL to disk; falls back to an
|
|
85
|
+
* in-memory ring when the disk write fails so the active run never
|
|
86
|
+
* loses events to filesystem hiccups.
|
|
87
|
+
*/
|
|
88
|
+
export declare class SkillActivationTelemetry {
|
|
89
|
+
private readonly enabled;
|
|
90
|
+
private readonly path;
|
|
91
|
+
private readonly now;
|
|
92
|
+
private readonly memoryCap;
|
|
93
|
+
private readonly memory;
|
|
94
|
+
/** Index from sessionId → most-recent event index in `memory` so
|
|
95
|
+
* markOutcome can patch retroactively without scanning the whole log. */
|
|
96
|
+
private readonly recentBySession;
|
|
97
|
+
constructor(opts?: TelemetryOptions);
|
|
98
|
+
/**
|
|
99
|
+
* Record one activation event. The event is added to the in-memory
|
|
100
|
+
* ring AND appended to disk (when a path is configured). Disk write
|
|
101
|
+
* failure is logged once; in-memory persists.
|
|
102
|
+
*/
|
|
103
|
+
record(input: Omit<ActivationEvent, "ts" | "outcome"> & {
|
|
104
|
+
outcome?: ActivationOutcome;
|
|
105
|
+
}): Promise<ActivationEvent>;
|
|
106
|
+
/**
|
|
107
|
+
* Patch the outcome of the most-recent event for a given session.
|
|
108
|
+
* Used by the runtime to flag e.g. "user immediately switched to a
|
|
109
|
+
* different skill" → outcome:"regret".
|
|
110
|
+
*
|
|
111
|
+
* Persists the patch to disk as an `outcome-patch` JSONL event so a
|
|
112
|
+
* reload picks up the regret signal. Returns true when a matching
|
|
113
|
+
* in-memory event was patched (or telemetry is enabled); false when
|
|
114
|
+
* no recent event existed and telemetry is disabled.
|
|
115
|
+
*/
|
|
116
|
+
markOutcome(sessionId: string, outcome: ActivationOutcome): Promise<boolean>;
|
|
117
|
+
/**
|
|
118
|
+
* In-memory snapshot of the recorded events (for tests / inspection).
|
|
119
|
+
* Returns a frozen copy so callers cannot mutate the ring.
|
|
120
|
+
*/
|
|
121
|
+
snapshot(): readonly ActivationEvent[];
|
|
122
|
+
private pushMemory;
|
|
123
|
+
}
|
|
124
|
+
export interface ExtractedCorpus {
|
|
125
|
+
/** Prompts where the named skill triggered with outcome != "regret". */
|
|
126
|
+
readonly positives: readonly string[];
|
|
127
|
+
/** Prompts where another skill triggered while the named skill was
|
|
128
|
+
* in the candidate set (true negatives — same domain, wrong skill). */
|
|
129
|
+
readonly negatives: readonly string[];
|
|
130
|
+
/** Total number of events scanned. */
|
|
131
|
+
readonly scanned: number;
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Build a positive/negative corpus for the named skill from a
|
|
135
|
+
* read-only event stream. The negatives heuristic uses *near-miss*
|
|
136
|
+
* events (the named skill was a candidate but a different skill won)
|
|
137
|
+
* because pure non-trigger events are too easy and don't sharpen the
|
|
138
|
+
* description. Falls back to non-trigger events when the candidate
|
|
139
|
+
* stream isn't populated.
|
|
140
|
+
*/
|
|
141
|
+
export declare function extractCorpusForSkill(events: readonly ActivationEvent[], skill: string, opts?: {
|
|
142
|
+
readonly maxEach?: number;
|
|
143
|
+
}): ExtractedCorpus;
|
|
144
|
+
/**
|
|
145
|
+
* Read a JSONL telemetry log from disk and return the parsed events.
|
|
146
|
+
* Malformed lines are skipped (with a count returned for diagnostics).
|
|
147
|
+
*/
|
|
148
|
+
export interface LoadResult {
|
|
149
|
+
readonly events: readonly ActivationEvent[];
|
|
150
|
+
readonly skipped: number;
|
|
151
|
+
readonly path: string;
|
|
152
|
+
}
|
|
153
|
+
export declare function loadTelemetryLog(path: string): LoadResult;
|
|
154
|
+
//# sourceMappingURL=activation-telemetry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"activation-telemetry.d.ts","sourceRoot":"","sources":["../../src/skills/activation-telemetry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,274 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Skill activation telemetry — closes the description-optimizer loop.
|
|
3
|
+
*
|
|
4
|
+
* The description-optimizer (skills/description-optimizer.ts) needs a
|
|
5
|
+
* labeled corpus of (prompt, expected-trigger) pairs to score a
|
|
6
|
+
* description's F1. Hand-curating that corpus is tedious. This module
|
|
7
|
+
* records, for every WOTANN session, *which* skill (if any) was
|
|
8
|
+
* actually activated for *which* user prompt, and persists the result
|
|
9
|
+
* to a JSONL log. The optimizer can then pull a real corpus directly
|
|
10
|
+
* from observed usage:
|
|
11
|
+
*
|
|
12
|
+
* - positives for skill X = prompts where X was triggered
|
|
13
|
+
* - negatives for skill X = prompts where X was NOT triggered
|
|
14
|
+
*
|
|
15
|
+
* The loop closes: real usage → telemetry → corpus → optimizer →
|
|
16
|
+
* better description → better future activation.
|
|
17
|
+
*
|
|
18
|
+
* Storage shape — JSONL with two event kinds:
|
|
19
|
+
*
|
|
20
|
+
* activation: { kind:"activation", ts, sessionId, prompt,
|
|
21
|
+
* triggered: {skill, kind} | null,
|
|
22
|
+
* candidates: [{skill, score}], outcome }
|
|
23
|
+
*
|
|
24
|
+
* outcome-patch: { kind:"outcome-patch", ts, sessionId, outcome }
|
|
25
|
+
*
|
|
26
|
+
* The patch-event form is how `markOutcome` survives a process restart
|
|
27
|
+
* and a JSONL reload. `loadTelemetryLog` folds patches into the most-
|
|
28
|
+
* recent matching activation when reading, so disk-backed corpus
|
|
29
|
+
* mining sees regret signals exactly the same as in-memory does.
|
|
30
|
+
*
|
|
31
|
+
* Where:
|
|
32
|
+
* - `triggered` is the skill that fired (null if no skill fired)
|
|
33
|
+
* - `kind` is "auto" | "user-named" — whether the harness chose
|
|
34
|
+
* the skill itself or the user explicitly called it
|
|
35
|
+
* - `candidates` is the top-N skills by the auto-detector's score
|
|
36
|
+
* (so optimizer can mine near-misses for negatives)
|
|
37
|
+
* - `outcome` captures whether the activation was useful: "ok"
|
|
38
|
+
* when a downstream success signal arrived, "regret" when the
|
|
39
|
+
* user immediately re-invoked a different skill
|
|
40
|
+
*
|
|
41
|
+
* QUALITY BARS
|
|
42
|
+
* - QB#1 No vendor bias — provider-agnostic; skills are name-only.
|
|
43
|
+
* - QB#3 Honest stub — disk failures degrade to in-memory only and
|
|
44
|
+
* surface a warn so the run never crashes.
|
|
45
|
+
* - QB#7 Per-call state — each Telemetry instance is fresh; no
|
|
46
|
+
* module-level singleton.
|
|
47
|
+
* - QB#13 Env guard — telemetry is disabled by default (opt-in via
|
|
48
|
+
* constructor flag); tests can pass `enabled:false` for full mocking.
|
|
49
|
+
*/
|
|
50
|
+
import { existsSync, mkdirSync, readFileSync } from "node:fs";
|
|
51
|
+
import { appendFile } from "node:fs/promises";
|
|
52
|
+
import { dirname } from "node:path";
|
|
53
|
+
/**
|
|
54
|
+
* Append-only telemetry sink. Writes JSONL to disk; falls back to an
|
|
55
|
+
* in-memory ring when the disk write fails so the active run never
|
|
56
|
+
* loses events to filesystem hiccups.
|
|
57
|
+
*/
|
|
58
|
+
export class SkillActivationTelemetry {
|
|
59
|
+
enabled;
|
|
60
|
+
path;
|
|
61
|
+
now;
|
|
62
|
+
memoryCap;
|
|
63
|
+
memory = [];
|
|
64
|
+
/** Index from sessionId → most-recent event index in `memory` so
|
|
65
|
+
* markOutcome can patch retroactively without scanning the whole log. */
|
|
66
|
+
recentBySession = new Map();
|
|
67
|
+
constructor(opts = {}) {
|
|
68
|
+
this.enabled = opts.enabled ?? true;
|
|
69
|
+
this.path = opts.path ?? null;
|
|
70
|
+
this.now = opts.now ?? (() => new Date());
|
|
71
|
+
this.memoryCap = opts.memoryCap ?? 1000;
|
|
72
|
+
if (this.enabled && this.path) {
|
|
73
|
+
try {
|
|
74
|
+
const dir = dirname(this.path);
|
|
75
|
+
if (!existsSync(dir))
|
|
76
|
+
mkdirSync(dir, { recursive: true });
|
|
77
|
+
}
|
|
78
|
+
catch (e) {
|
|
79
|
+
// Non-fatal — record() will retry on first append; in-memory
|
|
80
|
+
// ring is the safety net.
|
|
81
|
+
console.warn(`[skill-telemetry] failed to ensure dir for ${this.path}: ${e.message}`);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Record one activation event. The event is added to the in-memory
|
|
87
|
+
* ring AND appended to disk (when a path is configured). Disk write
|
|
88
|
+
* failure is logged once; in-memory persists.
|
|
89
|
+
*/
|
|
90
|
+
async record(input) {
|
|
91
|
+
const event = {
|
|
92
|
+
ts: this.now().toISOString(),
|
|
93
|
+
sessionId: input.sessionId,
|
|
94
|
+
prompt: input.prompt,
|
|
95
|
+
triggered: input.triggered,
|
|
96
|
+
candidates: input.candidates,
|
|
97
|
+
outcome: input.outcome ?? "unknown",
|
|
98
|
+
};
|
|
99
|
+
if (!this.enabled)
|
|
100
|
+
return event;
|
|
101
|
+
this.pushMemory(event);
|
|
102
|
+
if (this.path) {
|
|
103
|
+
try {
|
|
104
|
+
await appendFile(this.path, JSON.stringify(event) + "\n", "utf-8");
|
|
105
|
+
}
|
|
106
|
+
catch (e) {
|
|
107
|
+
console.warn(`[skill-telemetry] disk write failed (${e.message}); continuing with in-memory log`);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
return event;
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Patch the outcome of the most-recent event for a given session.
|
|
114
|
+
* Used by the runtime to flag e.g. "user immediately switched to a
|
|
115
|
+
* different skill" → outcome:"regret".
|
|
116
|
+
*
|
|
117
|
+
* Persists the patch to disk as an `outcome-patch` JSONL event so a
|
|
118
|
+
* reload picks up the regret signal. Returns true when a matching
|
|
119
|
+
* in-memory event was patched (or telemetry is enabled); false when
|
|
120
|
+
* no recent event existed and telemetry is disabled.
|
|
121
|
+
*/
|
|
122
|
+
async markOutcome(sessionId, outcome) {
|
|
123
|
+
const idx = this.recentBySession.get(sessionId);
|
|
124
|
+
let patchedInMemory = false;
|
|
125
|
+
if (idx !== undefined) {
|
|
126
|
+
const event = this.memory[idx];
|
|
127
|
+
if (event) {
|
|
128
|
+
this.memory[idx] = { ...event, outcome };
|
|
129
|
+
patchedInMemory = true;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
if (!this.enabled)
|
|
133
|
+
return patchedInMemory;
|
|
134
|
+
if (this.path) {
|
|
135
|
+
try {
|
|
136
|
+
const patch = {
|
|
137
|
+
kind: "outcome-patch",
|
|
138
|
+
ts: this.now().toISOString(),
|
|
139
|
+
sessionId,
|
|
140
|
+
outcome,
|
|
141
|
+
};
|
|
142
|
+
await appendFile(this.path, JSON.stringify(patch) + "\n", "utf-8");
|
|
143
|
+
}
|
|
144
|
+
catch (e) {
|
|
145
|
+
console.warn(`[skill-telemetry] outcome-patch disk write failed (${e.message})`);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
// When telemetry is on but session never recorded, the disk patch
|
|
149
|
+
// can still be useful for offline analysis — return true.
|
|
150
|
+
return patchedInMemory || this.enabled;
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* In-memory snapshot of the recorded events (for tests / inspection).
|
|
154
|
+
* Returns a frozen copy so callers cannot mutate the ring.
|
|
155
|
+
*/
|
|
156
|
+
snapshot() {
|
|
157
|
+
return Object.freeze([...this.memory]);
|
|
158
|
+
}
|
|
159
|
+
pushMemory(event) {
|
|
160
|
+
this.memory.push(event);
|
|
161
|
+
if (this.memory.length > this.memoryCap) {
|
|
162
|
+
// Drop the oldest. Re-index the recentBySession map so its
|
|
163
|
+
// pointers stay valid after the shift.
|
|
164
|
+
this.memory.shift();
|
|
165
|
+
for (const [k, v] of this.recentBySession) {
|
|
166
|
+
if (v <= 0)
|
|
167
|
+
this.recentBySession.delete(k);
|
|
168
|
+
else
|
|
169
|
+
this.recentBySession.set(k, v - 1);
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
this.recentBySession.set(event.sessionId, this.memory.length - 1);
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Build a positive/negative corpus for the named skill from a
|
|
177
|
+
* read-only event stream. The negatives heuristic uses *near-miss*
|
|
178
|
+
* events (the named skill was a candidate but a different skill won)
|
|
179
|
+
* because pure non-trigger events are too easy and don't sharpen the
|
|
180
|
+
* description. Falls back to non-trigger events when the candidate
|
|
181
|
+
* stream isn't populated.
|
|
182
|
+
*/
|
|
183
|
+
export function extractCorpusForSkill(events, skill, opts = {}) {
|
|
184
|
+
const cap = typeof opts.maxEach === "number" && opts.maxEach > 0 ? opts.maxEach : Infinity;
|
|
185
|
+
const positives = [];
|
|
186
|
+
const negatives = [];
|
|
187
|
+
let scanned = 0;
|
|
188
|
+
for (const e of events) {
|
|
189
|
+
scanned++;
|
|
190
|
+
// Positive: the named skill fired with no regret marker.
|
|
191
|
+
if (e.triggered?.skill === skill && e.outcome !== "regret") {
|
|
192
|
+
if (positives.length < cap)
|
|
193
|
+
positives.push(e.prompt);
|
|
194
|
+
continue;
|
|
195
|
+
}
|
|
196
|
+
// Near-miss negative: a different skill fired AND the named skill
|
|
197
|
+
// was in the candidate set. Strong signal — same domain, wrong
|
|
198
|
+
// skill.
|
|
199
|
+
if (e.triggered?.skill &&
|
|
200
|
+
e.triggered.skill !== skill &&
|
|
201
|
+
e.candidates.some((c) => c.skill === skill)) {
|
|
202
|
+
if (negatives.length < cap)
|
|
203
|
+
negatives.push(e.prompt);
|
|
204
|
+
continue;
|
|
205
|
+
}
|
|
206
|
+
// Weak negative: no skill fired and the named skill wasn't a
|
|
207
|
+
// candidate at all. Only used to fill out the negative set when
|
|
208
|
+
// we don't have enough near-misses.
|
|
209
|
+
if (e.triggered === null && !e.candidates.some((c) => c.skill === skill)) {
|
|
210
|
+
if (negatives.length < cap)
|
|
211
|
+
negatives.push(e.prompt);
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
return {
|
|
215
|
+
positives: Object.freeze(positives),
|
|
216
|
+
negatives: Object.freeze(negatives),
|
|
217
|
+
scanned,
|
|
218
|
+
};
|
|
219
|
+
}
|
|
220
|
+
export function loadTelemetryLog(path) {
|
|
221
|
+
if (!existsSync(path)) {
|
|
222
|
+
return { events: Object.freeze([]), skipped: 0, path };
|
|
223
|
+
}
|
|
224
|
+
const raw = readFileSync(path, "utf-8");
|
|
225
|
+
const events = [];
|
|
226
|
+
// Track most-recent activation index per session so we can fold
|
|
227
|
+
// outcome-patch lines into the matching activation.
|
|
228
|
+
const recentBySession = new Map();
|
|
229
|
+
let skipped = 0;
|
|
230
|
+
for (const line of raw.split(/\r?\n/)) {
|
|
231
|
+
const trimmed = line.trim();
|
|
232
|
+
if (trimmed.length === 0)
|
|
233
|
+
continue;
|
|
234
|
+
let parsed;
|
|
235
|
+
try {
|
|
236
|
+
parsed = JSON.parse(trimmed);
|
|
237
|
+
}
|
|
238
|
+
catch {
|
|
239
|
+
skipped++;
|
|
240
|
+
continue;
|
|
241
|
+
}
|
|
242
|
+
if (!parsed || typeof parsed !== "object") {
|
|
243
|
+
skipped++;
|
|
244
|
+
continue;
|
|
245
|
+
}
|
|
246
|
+
const obj = parsed;
|
|
247
|
+
// outcome-patch: fold into the matching activation, then move on.
|
|
248
|
+
if (obj["kind"] === "outcome-patch") {
|
|
249
|
+
const sid = obj["sessionId"];
|
|
250
|
+
const oc = obj["outcome"];
|
|
251
|
+
if (typeof sid === "string" && typeof oc === "string") {
|
|
252
|
+
const idx = recentBySession.get(sid);
|
|
253
|
+
if (idx !== undefined) {
|
|
254
|
+
const event = events[idx];
|
|
255
|
+
if (event) {
|
|
256
|
+
events[idx] = { ...event, outcome: oc };
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
continue;
|
|
261
|
+
}
|
|
262
|
+
// Default: treat as activation event. Lightweight shape gate.
|
|
263
|
+
const event = obj;
|
|
264
|
+
if (typeof event.prompt === "string" && typeof event.sessionId === "string") {
|
|
265
|
+
events.push(event);
|
|
266
|
+
recentBySession.set(event.sessionId, events.length - 1);
|
|
267
|
+
}
|
|
268
|
+
else {
|
|
269
|
+
skipped++;
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
return { events: Object.freeze(events), skipped, path };
|
|
273
|
+
}
|
|
274
|
+
//# sourceMappingURL=activation-telemetry.js.map
|