nodedex 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/adapters/claude-code-watcher.mjs +336 -0
- package/adapters/hermes-statedb-watcher.mjs +234 -0
- package/adapters/nodedex-capture-core.mjs +129 -0
- package/adapters/nodedex-capture.mjs +169 -0
- package/dist/agent-protocol.d.ts +7 -0
- package/dist/agent-protocol.d.ts.map +1 -0
- package/dist/agent-protocol.js +38 -0
- package/dist/agent-protocol.js.map +1 -0
- package/dist/api-server.d.ts +5 -0
- package/dist/api-server.d.ts.map +1 -0
- package/dist/api-server.js +351 -0
- package/dist/api-server.js.map +1 -0
- package/dist/boot-env.d.ts +2 -0
- package/dist/boot-env.d.ts.map +1 -0
- package/dist/boot-env.js +12 -0
- package/dist/boot-env.js.map +1 -0
- package/dist/engine/__tests__/search-core.test.d.ts +2 -0
- package/dist/engine/__tests__/search-core.test.d.ts.map +1 -0
- package/dist/engine/__tests__/search-core.test.js +139 -0
- package/dist/engine/__tests__/search-core.test.js.map +1 -0
- package/dist/engine/ai-provider.d.ts +45 -0
- package/dist/engine/ai-provider.d.ts.map +1 -0
- package/dist/engine/ai-provider.js +5 -0
- package/dist/engine/ai-provider.js.map +1 -0
- package/dist/engine/embeddings.d.ts +51 -0
- package/dist/engine/embeddings.d.ts.map +1 -0
- package/dist/engine/embeddings.js +89 -0
- package/dist/engine/embeddings.js.map +1 -0
- package/dist/engine/providers/__tests__/failure-policy.test.d.ts +2 -0
- package/dist/engine/providers/__tests__/failure-policy.test.d.ts.map +1 -0
- package/dist/engine/providers/__tests__/failure-policy.test.js +134 -0
- package/dist/engine/providers/__tests__/failure-policy.test.js.map +1 -0
- package/dist/engine/providers/__tests__/model-caps.test.d.ts +2 -0
- package/dist/engine/providers/__tests__/model-caps.test.d.ts.map +1 -0
- package/dist/engine/providers/__tests__/model-caps.test.js +38 -0
- package/dist/engine/providers/__tests__/model-caps.test.js.map +1 -0
- package/dist/engine/providers/__tests__/openai-structured.test.d.ts +2 -0
- package/dist/engine/providers/__tests__/openai-structured.test.d.ts.map +1 -0
- package/dist/engine/providers/__tests__/openai-structured.test.js +73 -0
- package/dist/engine/providers/__tests__/openai-structured.test.js.map +1 -0
- package/dist/engine/providers/__tests__/usage-ledger.test.d.ts +2 -0
- package/dist/engine/providers/__tests__/usage-ledger.test.d.ts.map +1 -0
- package/dist/engine/providers/__tests__/usage-ledger.test.js +108 -0
- package/dist/engine/providers/__tests__/usage-ledger.test.js.map +1 -0
- package/dist/engine/providers/anthropic.d.ts +17 -0
- package/dist/engine/providers/anthropic.d.ts.map +1 -0
- package/dist/engine/providers/anthropic.js +125 -0
- package/dist/engine/providers/anthropic.js.map +1 -0
- package/dist/engine/providers/failure-policy.d.ts +56 -0
- package/dist/engine/providers/failure-policy.d.ts.map +1 -0
- package/dist/engine/providers/failure-policy.js +120 -0
- package/dist/engine/providers/failure-policy.js.map +1 -0
- package/dist/engine/providers/gemini.d.ts +22 -0
- package/dist/engine/providers/gemini.d.ts.map +1 -0
- package/dist/engine/providers/gemini.js +180 -0
- package/dist/engine/providers/gemini.js.map +1 -0
- package/dist/engine/providers/index.d.ts +8 -0
- package/dist/engine/providers/index.d.ts.map +1 -0
- package/dist/engine/providers/index.js +67 -0
- package/dist/engine/providers/index.js.map +1 -0
- package/dist/engine/providers/local.d.ts +12 -0
- package/dist/engine/providers/local.d.ts.map +1 -0
- package/dist/engine/providers/local.js +46 -0
- package/dist/engine/providers/local.js.map +1 -0
- package/dist/engine/providers/model-caps.d.ts +6 -0
- package/dist/engine/providers/model-caps.d.ts.map +1 -0
- package/dist/engine/providers/model-caps.js +49 -0
- package/dist/engine/providers/model-caps.js.map +1 -0
- package/dist/engine/providers/openai.d.ts +30 -0
- package/dist/engine/providers/openai.d.ts.map +1 -0
- package/dist/engine/providers/openai.js +309 -0
- package/dist/engine/providers/openai.js.map +1 -0
- package/dist/engine/providers/usage-ledger.d.ts +69 -0
- package/dist/engine/providers/usage-ledger.d.ts.map +1 -0
- package/dist/engine/providers/usage-ledger.js +209 -0
- package/dist/engine/providers/usage-ledger.js.map +1 -0
- package/dist/engine/search-core.d.ts +40 -0
- package/dist/engine/search-core.d.ts.map +1 -0
- package/dist/engine/search-core.js +109 -0
- package/dist/engine/search-core.js.map +1 -0
- package/dist/engine/vector-math.d.ts +5 -0
- package/dist/engine/vector-math.d.ts.map +1 -0
- package/dist/engine/vector-math.js +25 -0
- package/dist/engine/vector-math.js.map +1 -0
- package/dist/home-env.d.ts +26 -0
- package/dist/home-env.d.ts.map +1 -0
- package/dist/home-env.js +87 -0
- package/dist/home-env.js.map +1 -0
- package/dist/mcp-server.d.ts +13 -0
- package/dist/mcp-server.d.ts.map +1 -0
- package/dist/mcp-server.js +79 -0
- package/dist/mcp-server.js.map +1 -0
- package/dist/middleware/auth.d.ts +23 -0
- package/dist/middleware/auth.d.ts.map +1 -0
- package/dist/middleware/auth.js +104 -0
- package/dist/middleware/auth.js.map +1 -0
- package/dist/middleware/auto-recall.d.ts +7 -0
- package/dist/middleware/auto-recall.d.ts.map +1 -0
- package/dist/middleware/auto-recall.js +257 -0
- package/dist/middleware/auto-recall.js.map +1 -0
- package/dist/middleware/auto-reflect.d.ts +4 -0
- package/dist/middleware/auto-reflect.d.ts.map +1 -0
- package/dist/middleware/auto-reflect.js +5 -0
- package/dist/middleware/auto-reflect.js.map +1 -0
- package/dist/middleware/reflect/apply-flag-verdict.d.ts +27 -0
- package/dist/middleware/reflect/apply-flag-verdict.d.ts.map +1 -0
- package/dist/middleware/reflect/apply-flag-verdict.js +57 -0
- package/dist/middleware/reflect/apply-flag-verdict.js.map +1 -0
- package/dist/middleware/reflect/arc-entity-resolve.d.ts +29 -0
- package/dist/middleware/reflect/arc-entity-resolve.d.ts.map +1 -0
- package/dist/middleware/reflect/arc-entity-resolve.js +356 -0
- package/dist/middleware/reflect/arc-entity-resolve.js.map +1 -0
- package/dist/middleware/reflect/arc-inactivity-timer.d.ts +47 -0
- package/dist/middleware/reflect/arc-inactivity-timer.d.ts.map +1 -0
- package/dist/middleware/reflect/arc-inactivity-timer.js +175 -0
- package/dist/middleware/reflect/arc-inactivity-timer.js.map +1 -0
- package/dist/middleware/reflect/arc-pipeline.d.ts +33 -0
- package/dist/middleware/reflect/arc-pipeline.d.ts.map +1 -0
- package/dist/middleware/reflect/arc-pipeline.js +498 -0
- package/dist/middleware/reflect/arc-pipeline.js.map +1 -0
- package/dist/middleware/reflect/comprehend-pergroup.d.ts +100 -0
- package/dist/middleware/reflect/comprehend-pergroup.d.ts.map +1 -0
- package/dist/middleware/reflect/comprehend-pergroup.js +610 -0
- package/dist/middleware/reflect/comprehend-pergroup.js.map +1 -0
- package/dist/middleware/reflect/comprehend.d.ts +237 -0
- package/dist/middleware/reflect/comprehend.d.ts.map +1 -0
- package/dist/middleware/reflect/comprehend.js +706 -0
- package/dist/middleware/reflect/comprehend.js.map +1 -0
- package/dist/middleware/reflect/config.d.ts +34 -0
- package/dist/middleware/reflect/config.d.ts.map +1 -0
- package/dist/middleware/reflect/config.js +131 -0
- package/dist/middleware/reflect/config.js.map +1 -0
- package/dist/middleware/reflect/context.d.ts +138 -0
- package/dist/middleware/reflect/context.d.ts.map +1 -0
- package/dist/middleware/reflect/context.js +619 -0
- package/dist/middleware/reflect/context.js.map +1 -0
- package/dist/middleware/reflect/cost-breakdown.d.ts +69 -0
- package/dist/middleware/reflect/cost-breakdown.d.ts.map +1 -0
- package/dist/middleware/reflect/cost-breakdown.js +63 -0
- package/dist/middleware/reflect/cost-breakdown.js.map +1 -0
- package/dist/middleware/reflect/cost-guard.d.ts +102 -0
- package/dist/middleware/reflect/cost-guard.d.ts.map +1 -0
- package/dist/middleware/reflect/cost-guard.js +243 -0
- package/dist/middleware/reflect/cost-guard.js.map +1 -0
- package/dist/middleware/reflect/cost-pricing.d.ts +54 -0
- package/dist/middleware/reflect/cost-pricing.d.ts.map +1 -0
- package/dist/middleware/reflect/cost-pricing.js +148 -0
- package/dist/middleware/reflect/cost-pricing.js.map +1 -0
- package/dist/middleware/reflect/cross-group-link.d.ts +61 -0
- package/dist/middleware/reflect/cross-group-link.d.ts.map +1 -0
- package/dist/middleware/reflect/cross-group-link.js +212 -0
- package/dist/middleware/reflect/cross-group-link.js.map +1 -0
- package/dist/middleware/reflect/dedup-by-source-and-value.d.ts +70 -0
- package/dist/middleware/reflect/dedup-by-source-and-value.d.ts.map +1 -0
- package/dist/middleware/reflect/dedup-by-source-and-value.js +0 -0
- package/dist/middleware/reflect/dedup-by-source-and-value.js.map +1 -0
- package/dist/middleware/reflect/describe-roots.d.ts +58 -0
- package/dist/middleware/reflect/describe-roots.d.ts.map +1 -0
- package/dist/middleware/reflect/describe-roots.js +266 -0
- package/dist/middleware/reflect/describe-roots.js.map +1 -0
- package/dist/middleware/reflect/flag-reviewer-startup.d.ts +16 -0
- package/dist/middleware/reflect/flag-reviewer-startup.d.ts.map +1 -0
- package/dist/middleware/reflect/flag-reviewer-startup.js +107 -0
- package/dist/middleware/reflect/flag-reviewer-startup.js.map +1 -0
- package/dist/middleware/reflect/flag-reviewer.d.ts +69 -0
- package/dist/middleware/reflect/flag-reviewer.d.ts.map +1 -0
- package/dist/middleware/reflect/flag-reviewer.js +520 -0
- package/dist/middleware/reflect/flag-reviewer.js.map +1 -0
- package/dist/middleware/reflect/inline-dedup.d.ts +26 -0
- package/dist/middleware/reflect/inline-dedup.d.ts.map +1 -0
- package/dist/middleware/reflect/inline-dedup.js +131 -0
- package/dist/middleware/reflect/inline-dedup.js.map +1 -0
- package/dist/middleware/reflect/justify-decisions.d.ts +37 -0
- package/dist/middleware/reflect/justify-decisions.d.ts.map +1 -0
- package/dist/middleware/reflect/justify-decisions.js +159 -0
- package/dist/middleware/reflect/justify-decisions.js.map +1 -0
- package/dist/middleware/reflect/nl-accept.d.ts +35 -0
- package/dist/middleware/reflect/nl-accept.d.ts.map +1 -0
- package/dist/middleware/reflect/nl-accept.js +167 -0
- package/dist/middleware/reflect/nl-accept.js.map +1 -0
- package/dist/middleware/reflect/pass0.d.ts +20 -0
- package/dist/middleware/reflect/pass0.d.ts.map +1 -0
- package/dist/middleware/reflect/pass0.js +423 -0
- package/dist/middleware/reflect/pass0.js.map +1 -0
- package/dist/middleware/reflect/pass1.d.ts +17 -0
- package/dist/middleware/reflect/pass1.d.ts.map +1 -0
- package/dist/middleware/reflect/pass1.js +241 -0
- package/dist/middleware/reflect/pass1.js.map +1 -0
- package/dist/middleware/reflect/pass2-quarantine.d.ts +129 -0
- package/dist/middleware/reflect/pass2-quarantine.d.ts.map +1 -0
- package/dist/middleware/reflect/pass2-quarantine.js +272 -0
- package/dist/middleware/reflect/pass2-quarantine.js.map +1 -0
- package/dist/middleware/reflect/pass2-seams.d.ts +205 -0
- package/dist/middleware/reflect/pass2-seams.d.ts.map +1 -0
- package/dist/middleware/reflect/pass2-seams.js +279 -0
- package/dist/middleware/reflect/pass2-seams.js.map +1 -0
- package/dist/middleware/reflect/pass2-split-orchestrator.d.ts +37 -0
- package/dist/middleware/reflect/pass2-split-orchestrator.d.ts.map +1 -0
- package/dist/middleware/reflect/pass2-split-orchestrator.js +531 -0
- package/dist/middleware/reflect/pass2-split-orchestrator.js.map +1 -0
- package/dist/middleware/reflect/pass2.d.ts +17 -0
- package/dist/middleware/reflect/pass2.d.ts.map +1 -0
- package/dist/middleware/reflect/pass2.js +324 -0
- package/dist/middleware/reflect/pass2.js.map +1 -0
- package/dist/middleware/reflect/pass2a.d.ts +141 -0
- package/dist/middleware/reflect/pass2a.d.ts.map +1 -0
- package/dist/middleware/reflect/pass2a.js +404 -0
- package/dist/middleware/reflect/pass2a.js.map +1 -0
- package/dist/middleware/reflect/pass2b.d.ts +108 -0
- package/dist/middleware/reflect/pass2b.d.ts.map +1 -0
- package/dist/middleware/reflect/pass2b.js +480 -0
- package/dist/middleware/reflect/pass2b.js.map +1 -0
- package/dist/middleware/reflect/pass2c.d.ts +113 -0
- package/dist/middleware/reflect/pass2c.d.ts.map +1 -0
- package/dist/middleware/reflect/pass2c.js +360 -0
- package/dist/middleware/reflect/pass2c.js.map +1 -0
- package/dist/middleware/reflect/pass3-batch.d.ts +62 -0
- package/dist/middleware/reflect/pass3-batch.d.ts.map +1 -0
- package/dist/middleware/reflect/pass3-batch.js +139 -0
- package/dist/middleware/reflect/pass3-batch.js.map +1 -0
- package/dist/middleware/reflect/pass3.d.ts +23 -0
- package/dist/middleware/reflect/pass3.d.ts.map +1 -0
- package/dist/middleware/reflect/pass3.js +371 -0
- package/dist/middleware/reflect/pass3.js.map +1 -0
- package/dist/middleware/reflect/pass4-slice.d.ts +25 -0
- package/dist/middleware/reflect/pass4-slice.d.ts.map +1 -0
- package/dist/middleware/reflect/pass4-slice.js +315 -0
- package/dist/middleware/reflect/pass4-slice.js.map +1 -0
- package/dist/middleware/reflect/pass4.d.ts +30 -0
- package/dist/middleware/reflect/pass4.d.ts.map +1 -0
- package/dist/middleware/reflect/pass4.js +193 -0
- package/dist/middleware/reflect/pass4.js.map +1 -0
- package/dist/middleware/reflect/pass5.d.ts +22 -0
- package/dist/middleware/reflect/pass5.d.ts.map +1 -0
- package/dist/middleware/reflect/pass5.js +178 -0
- package/dist/middleware/reflect/pass5.js.map +1 -0
- package/dist/middleware/reflect/pass_judge.d.ts +44 -0
- package/dist/middleware/reflect/pass_judge.d.ts.map +1 -0
- package/dist/middleware/reflect/pass_judge.js +263 -0
- package/dist/middleware/reflect/pass_judge.js.map +1 -0
- package/dist/middleware/reflect/pipeline-flags.d.ts +140 -0
- package/dist/middleware/reflect/pipeline-flags.d.ts.map +1 -0
- package/dist/middleware/reflect/pipeline-flags.js +314 -0
- package/dist/middleware/reflect/pipeline-flags.js.map +1 -0
- package/dist/middleware/reflect/pipeline.d.ts +237 -0
- package/dist/middleware/reflect/pipeline.d.ts.map +1 -0
- package/dist/middleware/reflect/pipeline.js +3114 -0
- package/dist/middleware/reflect/pipeline.js.map +1 -0
- package/dist/middleware/reflect/promptOverride.d.ts +14 -0
- package/dist/middleware/reflect/promptOverride.d.ts.map +1 -0
- package/dist/middleware/reflect/promptOverride.js +28 -0
- package/dist/middleware/reflect/promptOverride.js.map +1 -0
- package/dist/middleware/reflect/provenance-check.d.ts +48 -0
- package/dist/middleware/reflect/provenance-check.d.ts.map +1 -0
- package/dist/middleware/reflect/provenance-check.js +180 -0
- package/dist/middleware/reflect/provenance-check.js.map +1 -0
- package/dist/middleware/reflect/provenance-reviewer.d.ts +52 -0
- package/dist/middleware/reflect/provenance-reviewer.d.ts.map +1 -0
- package/dist/middleware/reflect/provenance-reviewer.js +253 -0
- package/dist/middleware/reflect/provenance-reviewer.js.map +1 -0
- package/dist/middleware/reflect/prune-collapsed-types.d.ts +11 -0
- package/dist/middleware/reflect/prune-collapsed-types.d.ts.map +1 -0
- package/dist/middleware/reflect/prune-collapsed-types.js +32 -0
- package/dist/middleware/reflect/prune-collapsed-types.js.map +1 -0
- package/dist/middleware/reflect/recognize-root.d.ts +75 -0
- package/dist/middleware/reflect/recognize-root.d.ts.map +1 -0
- package/dist/middleware/reflect/recognize-root.js +204 -0
- package/dist/middleware/reflect/recognize-root.js.map +1 -0
- package/dist/middleware/reflect/render-agent-flag.d.ts +25 -0
- package/dist/middleware/reflect/render-agent-flag.d.ts.map +1 -0
- package/dist/middleware/reflect/render-agent-flag.js +39 -0
- package/dist/middleware/reflect/render-agent-flag.js.map +1 -0
- package/dist/middleware/reflect/retrieve-graph-slice.d.ts +54 -0
- package/dist/middleware/reflect/retrieve-graph-slice.d.ts.map +1 -0
- package/dist/middleware/reflect/retrieve-graph-slice.js +173 -0
- package/dist/middleware/reflect/retrieve-graph-slice.js.map +1 -0
- package/dist/middleware/reflect/root-relatedness.d.ts +31 -0
- package/dist/middleware/reflect/root-relatedness.d.ts.map +1 -0
- package/dist/middleware/reflect/root-relatedness.js +92 -0
- package/dist/middleware/reflect/root-relatedness.js.map +1 -0
- package/dist/middleware/reflect/schema-heal.d.ts +22 -0
- package/dist/middleware/reflect/schema-heal.d.ts.map +1 -0
- package/dist/middleware/reflect/schema-heal.js +119 -0
- package/dist/middleware/reflect/schema-heal.js.map +1 -0
- package/dist/middleware/reflect/schema-validator.d.ts +85 -0
- package/dist/middleware/reflect/schema-validator.d.ts.map +1 -0
- package/dist/middleware/reflect/schema-validator.js +196 -0
- package/dist/middleware/reflect/schema-validator.js.map +1 -0
- package/dist/middleware/reflect/stage-audit-graph.d.ts +115 -0
- package/dist/middleware/reflect/stage-audit-graph.d.ts.map +1 -0
- package/dist/middleware/reflect/stage-audit-graph.js +563 -0
- package/dist/middleware/reflect/stage-audit-graph.js.map +1 -0
- package/dist/middleware/reflect/stage-d-resolve-graph.d.ts +87 -0
- package/dist/middleware/reflect/stage-d-resolve-graph.d.ts.map +1 -0
- package/dist/middleware/reflect/stage-d-resolve-graph.js +256 -0
- package/dist/middleware/reflect/stage-d-resolve-graph.js.map +1 -0
- package/dist/middleware/reflect/synthesizeFromSceneCard.d.ts +15 -0
- package/dist/middleware/reflect/synthesizeFromSceneCard.d.ts.map +1 -0
- package/dist/middleware/reflect/synthesizeFromSceneCard.js +91 -0
- package/dist/middleware/reflect/synthesizeFromSceneCard.js.map +1 -0
- package/dist/middleware/reflect/types.d.ts +261 -0
- package/dist/middleware/reflect/types.d.ts.map +1 -0
- package/dist/middleware/reflect/types.js +3 -0
- package/dist/middleware/reflect/types.js.map +1 -0
- package/dist/middleware/reflect/v2-integrate.d.ts +120 -0
- package/dist/middleware/reflect/v2-integrate.d.ts.map +1 -0
- package/dist/middleware/reflect/v2-integrate.js +388 -0
- package/dist/middleware/reflect/v2-integrate.js.map +1 -0
- package/dist/middleware/reflect/v2-judge.d.ts +44 -0
- package/dist/middleware/reflect/v2-judge.d.ts.map +1 -0
- package/dist/middleware/reflect/v2-judge.js +191 -0
- package/dist/middleware/reflect/v2-judge.js.map +1 -0
- package/dist/relation-sets.d.ts +2 -0
- package/dist/relation-sets.d.ts.map +1 -0
- package/dist/relation-sets.js +35 -0
- package/dist/relation-sets.js.map +1 -0
- package/dist/routes/__tests__/flags.test.d.ts +2 -0
- package/dist/routes/__tests__/flags.test.d.ts.map +1 -0
- package/dist/routes/__tests__/flags.test.js +257 -0
- package/dist/routes/__tests__/flags.test.js.map +1 -0
- package/dist/routes/__tests__/models-catalog.test.d.ts +2 -0
- package/dist/routes/__tests__/models-catalog.test.d.ts.map +1 -0
- package/dist/routes/__tests__/models-catalog.test.js +130 -0
- package/dist/routes/__tests__/models-catalog.test.js.map +1 -0
- package/dist/routes/__tests__/reflect-pause-drain.test.d.ts +2 -0
- package/dist/routes/__tests__/reflect-pause-drain.test.d.ts.map +1 -0
- package/dist/routes/__tests__/reflect-pause-drain.test.js +38 -0
- package/dist/routes/__tests__/reflect-pause-drain.test.js.map +1 -0
- package/dist/routes/__tests__/spend-pause-drain.test.d.ts +2 -0
- package/dist/routes/__tests__/spend-pause-drain.test.d.ts.map +1 -0
- package/dist/routes/__tests__/spend-pause-drain.test.js +38 -0
- package/dist/routes/__tests__/spend-pause-drain.test.js.map +1 -0
- package/dist/routes/admin.d.ts +49 -0
- package/dist/routes/admin.d.ts.map +1 -0
- package/dist/routes/admin.js +471 -0
- package/dist/routes/admin.js.map +1 -0
- package/dist/routes/blocks.d.ts +4 -0
- package/dist/routes/blocks.d.ts.map +1 -0
- package/dist/routes/blocks.js +893 -0
- package/dist/routes/blocks.js.map +1 -0
- package/dist/routes/chat-proxy.d.ts +5 -0
- package/dist/routes/chat-proxy.d.ts.map +1 -0
- package/dist/routes/chat-proxy.js +225 -0
- package/dist/routes/chat-proxy.js.map +1 -0
- package/dist/routes/conversations.d.ts +4 -0
- package/dist/routes/conversations.d.ts.map +1 -0
- package/dist/routes/conversations.js +139 -0
- package/dist/routes/conversations.js.map +1 -0
- package/dist/routes/flags.d.ts +4 -0
- package/dist/routes/flags.d.ts.map +1 -0
- package/dist/routes/flags.js +151 -0
- package/dist/routes/flags.js.map +1 -0
- package/dist/routes/inject.d.ts +4 -0
- package/dist/routes/inject.d.ts.map +1 -0
- package/dist/routes/inject.js +183 -0
- package/dist/routes/inject.js.map +1 -0
- package/dist/routes/mcp-http.d.ts +5 -0
- package/dist/routes/mcp-http.d.ts.map +1 -0
- package/dist/routes/mcp-http.js +94 -0
- package/dist/routes/mcp-http.js.map +1 -0
- package/dist/routes/quarantine.d.ts +4 -0
- package/dist/routes/quarantine.d.ts.map +1 -0
- package/dist/routes/quarantine.js +66 -0
- package/dist/routes/quarantine.js.map +1 -0
- package/dist/routes/recall.d.ts +5 -0
- package/dist/routes/recall.d.ts.map +1 -0
- package/dist/routes/recall.js +573 -0
- package/dist/routes/recall.js.map +1 -0
- package/dist/routes/reflect.d.ts +5 -0
- package/dist/routes/reflect.d.ts.map +1 -0
- package/dist/routes/reflect.js +231 -0
- package/dist/routes/reflect.js.map +1 -0
- package/dist/routes/session.d.ts +4 -0
- package/dist/routes/session.d.ts.map +1 -0
- package/dist/routes/session.js +418 -0
- package/dist/routes/session.js.map +1 -0
- package/dist/routes/state.d.ts +116 -0
- package/dist/routes/state.d.ts.map +1 -0
- package/dist/routes/state.js +621 -0
- package/dist/routes/state.js.map +1 -0
- package/dist/routes/usage.d.ts +3 -0
- package/dist/routes/usage.d.ts.map +1 -0
- package/dist/routes/usage.js +141 -0
- package/dist/routes/usage.js.map +1 -0
- package/dist/routes/workspace.d.ts +5 -0
- package/dist/routes/workspace.d.ts.map +1 -0
- package/dist/routes/workspace.js +435 -0
- package/dist/routes/workspace.js.map +1 -0
- package/dist/server.d.ts +13 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +298 -0
- package/dist/server.js.map +1 -0
- package/dist/store/__tests__/backup.test.d.ts +2 -0
- package/dist/store/__tests__/backup.test.d.ts.map +1 -0
- package/dist/store/__tests__/backup.test.js +53 -0
- package/dist/store/__tests__/backup.test.js.map +1 -0
- package/dist/store/__tests__/quality.test.d.ts +2 -0
- package/dist/store/__tests__/quality.test.d.ts.map +1 -0
- package/dist/store/__tests__/quality.test.js +75 -0
- package/dist/store/__tests__/quality.test.js.map +1 -0
- package/dist/store/backup.d.ts +14 -0
- package/dist/store/backup.d.ts.map +1 -0
- package/dist/store/backup.js +95 -0
- package/dist/store/backup.js.map +1 -0
- package/dist/store/database.d.ts +407 -0
- package/dist/store/database.d.ts.map +1 -0
- package/dist/store/database.js +2004 -0
- package/dist/store/database.js.map +1 -0
- package/dist/store/quality.d.ts +25 -0
- package/dist/store/quality.d.ts.map +1 -0
- package/dist/store/quality.js +48 -0
- package/dist/store/quality.js.map +1 -0
- package/dist/tools/__tests__/assemble-block-chains.test.d.ts +2 -0
- package/dist/tools/__tests__/assemble-block-chains.test.d.ts.map +1 -0
- package/dist/tools/__tests__/assemble-block-chains.test.js +118 -0
- package/dist/tools/__tests__/assemble-block-chains.test.js.map +1 -0
- package/dist/tools/__tests__/filter-roots-by-concepts.test.d.ts +2 -0
- package/dist/tools/__tests__/filter-roots-by-concepts.test.d.ts.map +1 -0
- package/dist/tools/__tests__/filter-roots-by-concepts.test.js +68 -0
- package/dist/tools/__tests__/filter-roots-by-concepts.test.js.map +1 -0
- package/dist/tools/__tests__/flag-surface.test.d.ts +2 -0
- package/dist/tools/__tests__/flag-surface.test.d.ts.map +1 -0
- package/dist/tools/__tests__/flag-surface.test.js +130 -0
- package/dist/tools/__tests__/flag-surface.test.js.map +1 -0
- package/dist/tools/core.d.ts +5 -0
- package/dist/tools/core.d.ts.map +1 -0
- package/dist/tools/core.js +962 -0
- package/dist/tools/core.js.map +1 -0
- package/dist/tools/derive.d.ts +5 -0
- package/dist/tools/derive.d.ts.map +1 -0
- package/dist/tools/derive.js +182 -0
- package/dist/tools/derive.js.map +1 -0
- package/dist/tools/flag-surface.d.ts +26 -0
- package/dist/tools/flag-surface.d.ts.map +1 -0
- package/dist/tools/flag-surface.js +59 -0
- package/dist/tools/flag-surface.js.map +1 -0
- package/dist/tools/helpers.d.ts +99 -0
- package/dist/tools/helpers.d.ts.map +1 -0
- package/dist/tools/helpers.js +243 -0
- package/dist/tools/helpers.js.map +1 -0
- package/dist/tools/projects.d.ts +5 -0
- package/dist/tools/projects.d.ts.map +1 -0
- package/dist/tools/projects.js +175 -0
- package/dist/tools/projects.js.map +1 -0
- package/dist/tools/system.d.ts +5 -0
- package/dist/tools/system.d.ts.map +1 -0
- package/dist/tools/system.js +1361 -0
- package/dist/tools/system.js.map +1 -0
- package/dist/tools/tasks.d.ts +5 -0
- package/dist/tools/tasks.d.ts.map +1 -0
- package/dist/tools/tasks.js +289 -0
- package/dist/tools/tasks.js.map +1 -0
- package/package.json +69 -0
- package/scripts/nodedex-entry.mjs +396 -0
- package/tui-dist/App.js +185 -0
- package/tui-dist/api.js +197 -0
- package/tui-dist/cli.js +53 -0
- package/tui-dist/components.js +63 -0
- package/tui-dist/config.js +242 -0
- package/tui-dist/connect-snippets.js +98 -0
- package/tui-dist/feed.js +51 -0
- package/tui-dist/health.js +465 -0
- package/tui-dist/hooks.js +23 -0
- package/tui-dist/memory.js +220 -0
- package/tui-dist/onboarding.js +498 -0
- package/tui-dist/review.js +193 -0
- package/tui-dist/servers.js +556 -0
- package/tui-dist/smoke.js +15 -0
- package/tui-dist/theme.js +106 -0
|
@@ -0,0 +1,371 @@
|
|
|
1
|
+
import { reflectTokenStats } from "./context.js";
|
|
2
|
+
import { ALLOW_BACKGROUND_KNOWLEDGE, modelForPass } from "./config.js";
|
|
3
|
+
// ═══════════════════════════════════════════════════════════════════════════════
|
|
4
|
+
// PASS 3 — BUILD
|
|
5
|
+
// Job: assemble each classified item into a complete graph block.
|
|
6
|
+
// Saves blocks in priority order (dead_ends first, then decisions/constraints).
|
|
7
|
+
// ═══════════════════════════════════════════════════════════════════════════════
|
|
8
|
+
const BG_KNOWLEDGE_SECTION = ALLOW_BACKGROUND_KNOWLEDGE
|
|
9
|
+
? `── KNOWLEDGE SOURCE ──────────────────────────────────────────────────────────
|
|
10
|
+
|
|
11
|
+
Background knowledge is ENABLED.
|
|
12
|
+
|
|
13
|
+
You may draw on background knowledge to enrich blocks — filling in mechanisms,
|
|
14
|
+
implications, or connections not explicit in CLASSIFIED ITEMS.
|
|
15
|
+
Only add background knowledge when it directly supports a claim already in CLASSIFIED ITEMS.
|
|
16
|
+
Do not introduce speculative connections or mechanisms with no basis in the session content.
|
|
17
|
+
|
|
18
|
+
`
|
|
19
|
+
: `── KNOWLEDGE SOURCE ──────────────────────────────────────────────────────────
|
|
20
|
+
|
|
21
|
+
Background knowledge is DISABLED.
|
|
22
|
+
|
|
23
|
+
Only use content from CLASSIFIED ITEMS to populate each block's fields.
|
|
24
|
+
Do not introduce claims, mechanisms, or details not present in CLASSIFIED ITEMS.
|
|
25
|
+
If you recognise a real-world connection from your background knowledge → skip it.
|
|
26
|
+
Every field (essence, unique{}, concepts[]) must be traceable to CLASSIFIED ITEMS.
|
|
27
|
+
|
|
28
|
+
`;
|
|
29
|
+
export const PASS3_PROMPT = `You receive a classified list of items from an agent session.
|
|
30
|
+
For each item: assemble it into a complete graph block. Build ONLY from CLASSIFIED
|
|
31
|
+
ITEMS FROM PASS 2 — every block must come from exactly one classified item.
|
|
32
|
+
|
|
33
|
+
── STATE CONVENTION ─────────────────────────────────────────────────────────
|
|
34
|
+
"State" in this prompt = text in marked regions below (KNOWN PROJECT ROOTS,
|
|
35
|
+
AGENT-SAVED BLOCKS THIS TURN, MANDATORY CREATES, MANDATORY ITEM ACCOUNTING,
|
|
36
|
+
PROJECT GRAPH, CLASSIFIED ITEMS FROM PASS 2). Your training
|
|
37
|
+
knowledge and "what's commonly known" are NOT state. A block already exists
|
|
38
|
+
ONLY if it appears in PROJECT GRAPH or AGENT-SAVED BLOCKS. Familiarity ≠ recorded.
|
|
39
|
+
|
|
40
|
+
${BG_KNOWLEDGE_SECTION}── NAMING: 4 DIMENSIONS ──────────────────────────────────────────────────────
|
|
41
|
+
{project}_{entity}_{type}_{concept}
|
|
42
|
+
project = must be in KNOWN PROJECT ROOTS or project_creates[].
|
|
43
|
+
entity = optional sub-component — omit for top-level blocks.
|
|
44
|
+
type = block type. concept = 2-5 words, hyphens only, lowercase.
|
|
45
|
+
RULE: underscores separate dimensions only. Hyphens within dimensions.
|
|
46
|
+
essence: 1 sentence, ≤120 chars.
|
|
47
|
+
|
|
48
|
+
── CONCEPTS[] — SEARCH TAGS ────────────────────────────────────────────────
|
|
49
|
+
"What specific words would someone type to find this block?"
|
|
50
|
+
→ Named things, mechanisms, measurements, failure modes, people.
|
|
51
|
+
NOT: category labels, type descriptions, vague process words.
|
|
52
|
+
The type field captures category. concepts[] captures content.
|
|
53
|
+
|
|
54
|
+
── CONCEPT: THE WHAT ───────────────────────────────────────────────────────
|
|
55
|
+
Concept names WHAT changed/failed/is required — not the mechanism or reason.
|
|
56
|
+
Test: strip "because", "using", "via", "through", "by" — what remains is the concept.
|
|
57
|
+
|
|
58
|
+
For decisions: "What now exists or is true after this decision was made?"
|
|
59
|
+
The new state is the concept. Not the mechanism. Not what was replaced.
|
|
60
|
+
This question is item-scoped — sibling items do not influence it.
|
|
61
|
+
|
|
62
|
+
── PRE-SCAN: NEW PROJECTS ──────────────────────────────────────────────────
|
|
63
|
+
Before ANY output: scan all items, collect project values, compare against KNOWN PROJECT ROOTS.
|
|
64
|
+
Any project NOT in KNOWN PROJECT ROOTS → add to project_creates[] FIRST.
|
|
65
|
+
A project value not in KNOWN PROJECT ROOTS is NEW — it must appear in project_creates[].
|
|
66
|
+
project_creates[]: { label (hyphens, no underscores), essence, parent (optional) }
|
|
67
|
+
|
|
68
|
+
── FOR EACH ITEM ───────────────────────────────────────────────────────────
|
|
69
|
+
|
|
70
|
+
Q1. Project: copy Pass 2's project field verbatim into label.project. Pass 2 set
|
|
71
|
+
a project on every item — never re-derive it, never blank it, never write "null".
|
|
72
|
+
Unknown project (not a KNOWN PROJECT ROOT) → also add it to project_creates[].
|
|
73
|
+
|
|
74
|
+
Q2. Causal connections — fill using block labels (new_blocks[] or PROJECT GRAPH):
|
|
75
|
+
|
|
76
|
+
triggered_by: "Would this block exist if (X) hadn't happened?" NO → X.
|
|
77
|
+
Translate Pass 2 triggered_by_items: item IDs → labels via from_item_id.
|
|
78
|
+
Empty triggered_by is valid whenever no in-graph cause exists — not only the genesis block.
|
|
79
|
+
|
|
80
|
+
based_on: "Would this claim be unsupported without (X)'s specific finding?" YES → X.
|
|
81
|
+
Translate Pass 2 based_on_items. Wire conclusion → evidence, not reverse.
|
|
82
|
+
|
|
83
|
+
Both fields: item ID → resolve via from_item_id. Block label → verify in PROJECT GRAPH.
|
|
84
|
+
|
|
85
|
+
Q4. Replace or extend something in PROJECT GRAPH?
|
|
86
|
+
Same concept, new value → supersedes. Adds detail → extends.
|
|
87
|
+
Identical concept → updates[], not new_blocks[].
|
|
88
|
+
"Is this the mechanism by which an existing block is achieved?" YES → extends.
|
|
89
|
+
extends test: "Existing block valid without this? AND this only makes sense given existing?"
|
|
90
|
+
Both YES → extends (new=source, existing=target).
|
|
91
|
+
Scan PROJECT GRAPH ESSENCES (not labels) for cross-session matches.
|
|
92
|
+
|
|
93
|
+
── UNIQUE FIELDS ───────────────────────────────────────────────────────────
|
|
94
|
+
Copy unique{} from Pass 2. If empty, derive from item text. Min 2 non-empty fields.
|
|
95
|
+
Values must be specific (numbers, names, thresholds) — not generic paraphrases.
|
|
96
|
+
|
|
97
|
+
── PRE-COMPUTED FIELDS (copy from Pass 2 — do NOT re-derive) ───────────────
|
|
98
|
+
is_a = item type. from_item_id = item id. extends_item = server resolves.
|
|
99
|
+
supersedes_ref → add { type: "supersedes", target_id: value } to relations.
|
|
100
|
+
triggered_by_items/based_on_items → translate to labels for Q2.
|
|
101
|
+
|
|
102
|
+
── DEDUP ───────────────────────────────────────────────────────────────────
|
|
103
|
+
Pass 2 already did all dedup — intra-batch and against the graph. Trust it
|
|
104
|
+
completely. Check only ONE thing here: label collision.
|
|
105
|
+
LABEL COLLISION: only flag if an EXACT label string match exists in PROJECT GRAPH
|
|
106
|
+
above. Do not guess that a similar block "probably exists". If a match is found,
|
|
107
|
+
ask: "Is existing block's claim still true?" YES → updates[]. NO → supersedes.
|
|
108
|
+
|
|
109
|
+
SKIP EVIDENCE: When you put an item in skip_reasons[] for being a duplicate or
|
|
110
|
+
already-existing, why_skipped must reference an exact label from PROJECT GRAPH
|
|
111
|
+
or AGENT-SAVED BLOCKS. No reference → not a valid skip.
|
|
112
|
+
|
|
113
|
+
── SUPERSEDES_REF = CREATE, NOT UPDATE ─────────────────────────────────────
|
|
114
|
+
supersedes_ref items → ALWAYS new_blocks[] + supersedes relation. NEVER updates[].
|
|
115
|
+
Old block stays as permanent history. New block is current state.
|
|
116
|
+
|
|
117
|
+
── UPDATES[] ───────────────────────────────────────────────────────────────
|
|
118
|
+
"After this session, is the existing block's claim still accurate?"
|
|
119
|
+
YES (incomplete, add detail) → updates[]. NO (state changed) → new_blocks[] + supersedes.
|
|
120
|
+
|
|
121
|
+
── TASKS ───────────────────────────────────────────────────────────────────
|
|
122
|
+
type=task + named owner → ALWAYS new block. unique: { status, description, owner }.
|
|
123
|
+
relations: implements → the decision/blueprint being executed.
|
|
124
|
+
Scheduling details with no owner → updates[] or skip_reasons[].
|
|
125
|
+
|
|
126
|
+
── NEIGHBORHOOD ────────────────────────────────────────────────────────────
|
|
127
|
+
Item \`neighborhood\` shows closest existing block + story arc. Use for action decision.
|
|
128
|
+
"(no existing match)" → go straight to new_blocks[].
|
|
129
|
+
|
|
130
|
+
── RELATIONS & TTL ─────────────────────────────────────────────────────────
|
|
131
|
+
triggered_by, based_on, supersedes, extends, implements, resolves
|
|
132
|
+
permanent: decision, constraint, dead_end, blueprint, preference
|
|
133
|
+
project: fact, insight, question, hypothesis, entity, metric, event
|
|
134
|
+
|
|
135
|
+
── CAUSAL WIRING ───────────────────────────────────────────────────────────
|
|
136
|
+
Wire every triggered_by/based_on you can — scan new_blocks[] and PROJECT GRAPH
|
|
137
|
+
for the block each one depends on. Connectivity makes the graph navigable; do it
|
|
138
|
+
diligently.
|
|
139
|
+
|
|
140
|
+
A missing link is NEVER a reason to skip a block — for ANY type. The graph is
|
|
141
|
+
built incrementally across sessions: a cause is often out of scope this session,
|
|
142
|
+
or arrives in a later one. Causality is universal, but the graph holds only what
|
|
143
|
+
THIS session extracted — you cannot wire a relation to a block that does not
|
|
144
|
+
exist. Create the block now with whatever links exist (empty is valid); a later
|
|
145
|
+
turn enriches it via updates[] and Pass 4 stitching. Deleting a confirmed,
|
|
146
|
+
GATE-passed block to enforce a link quota loses real knowledge permanently.
|
|
147
|
+
Never fabricate a link to fill the gap.
|
|
148
|
+
|
|
149
|
+
Novel types: fill unique{} from schema{} if present, else treat as fact. Set review_reason.
|
|
150
|
+
|
|
151
|
+
── FINAL SCAN ──────────────────────────────────────────────────────────────
|
|
152
|
+
1. Same-topic batch siblings with no relation? → add extends (narrower → broader).
|
|
153
|
+
2. Decision/constraint supersedes something in PROJECT GRAPH? → add supersedes.
|
|
154
|
+
3. Every MANDATORY ITEM ACCOUNTING ID in new_blocks[] or skip_reasons[]?
|
|
155
|
+
|
|
156
|
+
── OUTPUT VERIFICATION ─────────────────────────────────────────────────────
|
|
157
|
+
Empty relations[] is valid for ANY type when no in-graph predecessor exists —
|
|
158
|
+
never skip a block for missing links, never fabricate one to fill a quota.
|
|
159
|
+
from_item_id MUST be set. Do not add part_of — server sets project_id automatically.`;
|
|
160
|
+
const PASS3_SCHEMA = {
|
|
161
|
+
type: "object",
|
|
162
|
+
properties: {
|
|
163
|
+
project_creates: {
|
|
164
|
+
type: "array",
|
|
165
|
+
items: {
|
|
166
|
+
type: "object",
|
|
167
|
+
properties: {
|
|
168
|
+
label: { type: "string" },
|
|
169
|
+
essence: { type: "string" },
|
|
170
|
+
parent: { type: "string" },
|
|
171
|
+
},
|
|
172
|
+
required: ["label", "essence"],
|
|
173
|
+
},
|
|
174
|
+
},
|
|
175
|
+
new_blocks: {
|
|
176
|
+
type: "array",
|
|
177
|
+
items: {
|
|
178
|
+
type: "object",
|
|
179
|
+
properties: {
|
|
180
|
+
label: {
|
|
181
|
+
type: "object",
|
|
182
|
+
properties: {
|
|
183
|
+
project: { type: "string" },
|
|
184
|
+
subgroup: { type: "string" },
|
|
185
|
+
type: { type: "string" },
|
|
186
|
+
concept: { type: "string" },
|
|
187
|
+
},
|
|
188
|
+
required: ["project", "type", "concept"],
|
|
189
|
+
},
|
|
190
|
+
is_a: { type: "string" },
|
|
191
|
+
triggered_by: { type: "array", items: { type: "string" } },
|
|
192
|
+
essence: { type: "string" },
|
|
193
|
+
relations: {
|
|
194
|
+
type: "array",
|
|
195
|
+
items: {
|
|
196
|
+
type: "object",
|
|
197
|
+
properties: {
|
|
198
|
+
type: { type: "string" },
|
|
199
|
+
target_id: { type: "string" },
|
|
200
|
+
},
|
|
201
|
+
required: ["type", "target_id"],
|
|
202
|
+
},
|
|
203
|
+
},
|
|
204
|
+
unique: {
|
|
205
|
+
type: "object",
|
|
206
|
+
properties: {
|
|
207
|
+
choice: { type: "string" },
|
|
208
|
+
reason: { type: "string" },
|
|
209
|
+
alternatives_rejected: { type: "string" },
|
|
210
|
+
approach: { type: "string" },
|
|
211
|
+
alternative: { type: "string" },
|
|
212
|
+
limit: { type: "string" },
|
|
213
|
+
source: { type: "string" },
|
|
214
|
+
value: { type: "string" },
|
|
215
|
+
name: { type: "string" },
|
|
216
|
+
role: { type: "string" },
|
|
217
|
+
purpose: { type: "string" },
|
|
218
|
+
status: { type: "string" },
|
|
219
|
+
trigger_to_implement: { type: "string" },
|
|
220
|
+
question: { type: "string" },
|
|
221
|
+
why_matters: { type: "string" },
|
|
222
|
+
observation: { type: "string" },
|
|
223
|
+
implication: { type: "string" },
|
|
224
|
+
description: { type: "string" },
|
|
225
|
+
owner: { type: "string" },
|
|
226
|
+
outcome: { type: "string" },
|
|
227
|
+
proposal: { type: "string" },
|
|
228
|
+
evidence_for: { type: "string" },
|
|
229
|
+
evidence_against: { type: "string" },
|
|
230
|
+
lean: { type: "string" },
|
|
231
|
+
over: { type: "string" },
|
|
232
|
+
condition: { type: "string" },
|
|
233
|
+
definition: { type: "string" },
|
|
234
|
+
current_value: { type: "string" },
|
|
235
|
+
target: { type: "string" },
|
|
236
|
+
what_happened: { type: "string" },
|
|
237
|
+
date: { type: "string" },
|
|
238
|
+
},
|
|
239
|
+
},
|
|
240
|
+
concepts: { type: "array", items: { type: "string" } },
|
|
241
|
+
ttl: { type: "string" },
|
|
242
|
+
novelty_reason: { type: "string" },
|
|
243
|
+
raw_excerpt: { type: "string" },
|
|
244
|
+
from_item_id: { type: "string" },
|
|
245
|
+
based_on: { type: "array", items: { type: "string" } },
|
|
246
|
+
},
|
|
247
|
+
required: ["label", "is_a", "essence", "unique", "concepts", "relations", "from_item_id"],
|
|
248
|
+
},
|
|
249
|
+
},
|
|
250
|
+
updates: {
|
|
251
|
+
type: "array",
|
|
252
|
+
items: {
|
|
253
|
+
type: "object",
|
|
254
|
+
properties: {
|
|
255
|
+
block_id: { type: "string" },
|
|
256
|
+
essence: { type: "string" },
|
|
257
|
+
unique_patch: { type: "object" },
|
|
258
|
+
relations_add: {
|
|
259
|
+
type: "array",
|
|
260
|
+
items: {
|
|
261
|
+
type: "object",
|
|
262
|
+
properties: {
|
|
263
|
+
type: { type: "string" },
|
|
264
|
+
target_id: { type: "string" },
|
|
265
|
+
},
|
|
266
|
+
},
|
|
267
|
+
},
|
|
268
|
+
reason: { type: "string" },
|
|
269
|
+
},
|
|
270
|
+
required: ["block_id"],
|
|
271
|
+
},
|
|
272
|
+
},
|
|
273
|
+
skip_reasons: {
|
|
274
|
+
type: "array",
|
|
275
|
+
items: {
|
|
276
|
+
type: "object",
|
|
277
|
+
properties: {
|
|
278
|
+
item_id: { type: "string" },
|
|
279
|
+
text: { type: "string" },
|
|
280
|
+
why_skipped: { type: "string" },
|
|
281
|
+
},
|
|
282
|
+
},
|
|
283
|
+
},
|
|
284
|
+
},
|
|
285
|
+
required: ["project_creates", "new_blocks", "updates", "skip_reasons"],
|
|
286
|
+
};
|
|
287
|
+
export async function callPass3LLM(provider, classified, knownRoots, projectContext, agentSavedBlocks, thinkingBudget = 4096, duplicateAlerts = "", itemContext = {}) {
|
|
288
|
+
const rootsSection = knownRoots.length > 0
|
|
289
|
+
? `KNOWN PROJECT ROOTS:\n${knownRoots.map((p) => ` ${p.label}: "${p.essence}"`).join("\n")}\n\n`
|
|
290
|
+
: `KNOWN PROJECT ROOTS: (empty — any prefix is valid)\n\n`;
|
|
291
|
+
const agentSavedSection = agentSavedBlocks.length > 0
|
|
292
|
+
? `AGENT-SAVED BLOCKS THIS TURN (do not recreate these concepts):\n${agentSavedBlocks.map((b) => `[${b.label} | ${b.id}] type:${b.type} "${b.essence}"`).join("\n")}\n\n`
|
|
293
|
+
: "";
|
|
294
|
+
const projectSection = projectContext
|
|
295
|
+
? `PROJECT GRAPH (existing blocks — use for dedup, novelty check, and relation targets):\n${projectContext}\n\n`
|
|
296
|
+
: `PROJECT GRAPH: (workspace is empty)\n\n`;
|
|
297
|
+
// Mandatory creates: items with supersedes_ref MUST become new blocks
|
|
298
|
+
const mandatoryCreates = classified.filter(item => item.supersedes_ref);
|
|
299
|
+
const mandatorySection = mandatoryCreates.length > 0
|
|
300
|
+
? `MANDATORY CREATES — Pass 2 set supersedes_ref on these items. They MUST appear in new_blocks[]. Do NOT skip, do NOT put in updates[]:\n${mandatoryCreates.map(item => ` ${item.id} [${item.type}] supersedes "${item.supersedes_ref}" — "${item.text.slice(0, 90)}"`).join("\n")}\n\n`
|
|
301
|
+
: "";
|
|
302
|
+
// Targeted accountability:
|
|
303
|
+
// Tier 1 — always mandatory: decisions, constraints, dead_ends, blueprints, questions,
|
|
304
|
+
// supersedes_ref items, and task items with a named owner
|
|
305
|
+
// Tier 2 — mandatory if they're causal evidence for a Tier 1 item (appear in based_on_items or triggered_by_items)
|
|
306
|
+
// Tier 3 — facts with no existing match (new state data that must be created or explicitly skipped)
|
|
307
|
+
// Facts/tasks without a named owner that extend existing blocks remain silently droppable
|
|
308
|
+
const MANDATORY_ITEM_TYPES = new Set(["decision", "constraint", "dead_end", "blueprint", "question"]);
|
|
309
|
+
const tier1Items = classified.filter(item => MANDATORY_ITEM_TYPES.has(item.type) || !!item.supersedes_ref
|
|
310
|
+
|| (item.type === "task" && !!item.unique?.owner));
|
|
311
|
+
const tier1Ids = new Set(tier1Items.map(i => i.id));
|
|
312
|
+
const tier2Items = classified.filter(item => {
|
|
313
|
+
if (tier1Ids.has(item.id))
|
|
314
|
+
return false; // already in tier 1
|
|
315
|
+
// mandatory if referenced as causal evidence by any tier-1 item
|
|
316
|
+
return tier1Items.some(t1 => (t1.based_on_items ?? []).includes(item.id) ||
|
|
317
|
+
(t1.triggered_by_items ?? []).includes(item.id));
|
|
318
|
+
});
|
|
319
|
+
const tier2Ids = new Set(tier2Items.map(i => i.id));
|
|
320
|
+
// Tier 3: facts with no existing neighborhood match — must be explicitly created or skipped
|
|
321
|
+
const tier3Items = classified.filter(item => {
|
|
322
|
+
if (tier1Ids.has(item.id) || tier2Ids.has(item.id))
|
|
323
|
+
return false;
|
|
324
|
+
if (item.type !== "fact")
|
|
325
|
+
return false;
|
|
326
|
+
const ctx = itemContext[item.id];
|
|
327
|
+
return !ctx || ctx === "(no existing match — create new block)";
|
|
328
|
+
});
|
|
329
|
+
const mandatoryAccountingItems = [...tier1Items, ...tier2Items, ...tier3Items];
|
|
330
|
+
const accountingSection = mandatoryAccountingItems.length > 0
|
|
331
|
+
? `MANDATORY ITEM ACCOUNTING — every item below MUST appear in new_blocks[from_item_id] or skip_reasons[item_id] with a specific reason. Do not stop until all are addressed:\n${mandatoryAccountingItems.map(item => {
|
|
332
|
+
const sup = item.supersedes_ref ? ` [supersedes ${item.supersedes_ref}]` : "";
|
|
333
|
+
const evidence = tier2Ids.has(item.id) ? " [causal evidence]" : "";
|
|
334
|
+
const newFact = tier3Items.some(t3 => t3.id === item.id) ? " [new fact — no existing match]" : "";
|
|
335
|
+
return ` ${item.id} [${item.type}]${sup}${evidence}${newFact}`;
|
|
336
|
+
}).join("\n")}\n\n`
|
|
337
|
+
: "";
|
|
338
|
+
// Inject per-item neighborhood context into classified items.
|
|
339
|
+
// keep_reason/type_reasoning are debug observability fields (v2 COMPREHEND) bound
|
|
340
|
+
// for the turn-log — strip them from the PROMPT copy so they cost no tokens and
|
|
341
|
+
// can't nudge Pass 3. (v1's classification_reasoning keeps its existing behavior.)
|
|
342
|
+
const classifiedWithContext = classified.map(item => {
|
|
343
|
+
const { keep_reason: _kr, type_reasoning: _tr, ...rest } = item;
|
|
344
|
+
return {
|
|
345
|
+
...rest,
|
|
346
|
+
neighborhood: itemContext[item.id] ?? "(no existing match — create new block)",
|
|
347
|
+
};
|
|
348
|
+
});
|
|
349
|
+
const classifiedSection = `CLASSIFIED ITEMS FROM PASS 2:\n${JSON.stringify(classifiedWithContext, null, 2)}`;
|
|
350
|
+
const userInput = `${rootsSection}${agentSavedSection}${mandatorySection}${accountingSection}${duplicateAlerts}${projectSection}${classifiedSection}`;
|
|
351
|
+
// 32768 (not the 65536 ceiling): batching already bounds a chunk to <=20 blocks
|
|
352
|
+
// (~13K tokens typical), so 32768 fits with room AND leaves the truncation-bump
|
|
353
|
+
// real headroom up to the model ceiling. 65536 + thinking over-requested past the
|
|
354
|
+
// ceiling → a provider glitch dropped the whole write (2026-06-16 deep-stress find).
|
|
355
|
+
const r = await provider.generateStructured(PASS3_PROMPT, userInput, PASS3_SCHEMA, { thinkingBudget, maxOutputTokens: 32768, modelOverride: modelForPass("pass3") });
|
|
356
|
+
if (r.usage) {
|
|
357
|
+
reflectTokenStats.pass3.input += r.usage.input;
|
|
358
|
+
reflectTokenStats.pass3.thinking += r.usage.thinking;
|
|
359
|
+
reflectTokenStats.pass3.output += r.usage.output;
|
|
360
|
+
}
|
|
361
|
+
reflectTokenStats.pass3.calls += 1;
|
|
362
|
+
const tag = provider.getName() !== "gemini" ? ` [${provider.getName()}]` : "";
|
|
363
|
+
if (r.result) {
|
|
364
|
+
console.log(`Auto-Reflect Pass 3 tokens — in=${r.usage?.input ?? "?"} think=${r.usage?.thinking ?? "?"} out=${r.usage?.output ?? "?"}${tag}`);
|
|
365
|
+
}
|
|
366
|
+
else {
|
|
367
|
+
console.error(`Auto-Reflect Pass 3: ${r.rateLimited ? "rate limited" : "failed"} [${provider.getName()}]`);
|
|
368
|
+
}
|
|
369
|
+
return { analysis: r.result, geminiThinking: r.thinking ?? "", rateLimited: r.rateLimited, model: r.model, attempts: r.attempts };
|
|
370
|
+
}
|
|
371
|
+
//# sourceMappingURL=pass3.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pass3.js","sourceRoot":"","sources":["../../../src/middleware/reflect/pass3.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { WorkspaceDB, Block } from "../../store/database.js";
|
|
2
|
+
/** Default ON (promoted 2026-06-14 — validated; falls back to the full dump under the
|
|
3
|
+
* small-graph threshold). Set NODEDEX_PASS4_SLICE=0 to opt out. */
|
|
4
|
+
export declare function pass4SliceEnabled(): boolean;
|
|
5
|
+
/** Below this many blocks the dump is fine + cheaper than k retrievals → fall back. */
|
|
6
|
+
export declare function pass4SliceMinGraph(): number;
|
|
7
|
+
export declare function semanticDeltaEnabled(): boolean;
|
|
8
|
+
export declare function semanticDeltaK(): number;
|
|
9
|
+
export interface Pass4SliceOpts {
|
|
10
|
+
/** First-ever net: top-k similarity candidates per new block (the GUESS path). */
|
|
11
|
+
netK?: number;
|
|
12
|
+
/** Hard cap on total surfaced blocks (token guard). */
|
|
13
|
+
maxBlocks?: number;
|
|
14
|
+
}
|
|
15
|
+
/** Cosine similarity of two equal-length vectors. 0 if shapes mismatch. */
|
|
16
|
+
/**
|
|
17
|
+
* Build the retrieved-slice PROJECT GRAPH body for Pass 4. Returns the same shape
|
|
18
|
+
* as buildProjectContext ({ context, reflectedIds }) so it is a drop-in swap at
|
|
19
|
+
* the call site. `context` is the body Pass 4 wraps in "PROJECT GRAPH (...):".
|
|
20
|
+
*/
|
|
21
|
+
export declare function buildPass4Slice(db: WorkspaceDB, newBlocks: Block[], opts?: Pass4SliceOpts): {
|
|
22
|
+
context: string;
|
|
23
|
+
reflectedIds: string[];
|
|
24
|
+
};
|
|
25
|
+
//# sourceMappingURL=pass4-slice.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pass4-slice.d.ts","sourceRoot":"","sources":["../../../src/middleware/reflect/pass4-slice.ts"],"names":[],"mappings":"AAoCA,OAAO,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AASlE;oEACoE;AACpE,wBAAgB,iBAAiB,IAAI,OAAO,CAE3C;AAED,uFAAuF;AACvF,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAOD,wBAAgB,oBAAoB,IAAI,OAAO,CAE9C;AACD,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAID,MAAM,WAAW,cAAc;IAC7B,kFAAkF;IAClF,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,uDAAuD;IACvD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAsDD,2EAA2E;AAG3E;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,EAAE,EAAE,WAAW,EACf,SAAS,EAAE,KAAK,EAAE,EAClB,IAAI,GAAE,cAAmB,GACxB;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,EAAE,CAAA;CAAE,CAoJ7C"}
|