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,140 @@
|
|
|
1
|
+
import type Database from "better-sqlite3";
|
|
2
|
+
import type { PipelineFlag, PipelineFlagType, PipelineFlagWriter, ScopeCheck, ReviewVerdict, FlagActionTaken } from "./types.js";
|
|
3
|
+
/**
|
|
4
|
+
* Create the pipeline_flags table + indexes if they don't exist. Safe to call
|
|
5
|
+
* repeatedly (CREATE IF NOT EXISTS + indexes are idempotent).
|
|
6
|
+
*
|
|
7
|
+
* Caller responsibility: invoke once at server boot. Writers do NOT auto-
|
|
8
|
+
* create the table — they assume it exists. Keeps the call graph predictable
|
|
9
|
+
* (no silent side effects in hot paths). Matches pass2-quarantine.ts pattern.
|
|
10
|
+
*
|
|
11
|
+
* criteria_json + review/action fields are stored as nullable TEXT so the
|
|
12
|
+
* shape can evolve without per-field column adds (SQLite JSON1 can query
|
|
13
|
+
* into them if composition analysis ever needed).
|
|
14
|
+
*/
|
|
15
|
+
export declare function ensurePipelineFlagsTable(db: Database.Database): void;
|
|
16
|
+
export interface WritePipelineFlagInput {
|
|
17
|
+
flag_type: PipelineFlagType;
|
|
18
|
+
block_id_a: string;
|
|
19
|
+
block_id_b: string | null;
|
|
20
|
+
criteria: Record<string, unknown>;
|
|
21
|
+
scope_check: ScopeCheck;
|
|
22
|
+
origin_writer: PipelineFlagWriter;
|
|
23
|
+
origin_range_id: string | null;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Write a new flag for async-reviewer pickup. Returns the generated id.
|
|
27
|
+
*
|
|
28
|
+
* Writes are additive — multiple flags for the same block_id_a are allowed
|
|
29
|
+
* (different flag_types, or different block_id_b candidates). Reviewer
|
|
30
|
+
* deduplicates by inspecting the unreviewed set + the actual graph state.
|
|
31
|
+
*
|
|
32
|
+
* No FK or shape validation here beyond what SQLite enforces — caller is
|
|
33
|
+
* expected to assemble a valid criteria object per the flag_type's schema
|
|
34
|
+
* (see PIPELINE-SLICE-1-DESIGN.md §3.1).
|
|
35
|
+
*/
|
|
36
|
+
export declare function writePipelineFlag(db: Database.Database, input: WritePipelineFlagInput): string;
|
|
37
|
+
export interface MarkFlagReviewedInput {
|
|
38
|
+
flag_id: string;
|
|
39
|
+
verdict: ReviewVerdict;
|
|
40
|
+
reason: string;
|
|
41
|
+
/** What the reviewer actually completed (dup merge / provenance correct/demote).
|
|
42
|
+
* null when the reviewer only wrote a verdict (verdict-only mode). */
|
|
43
|
+
action_taken?: FlagActionTaken;
|
|
44
|
+
winning_block_id?: string | null;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Mark a flag as reviewed — idempotent via `WHERE reviewed_at IS NULL` guard.
|
|
48
|
+
* Returns true if the row was updated, false if it was already reviewed
|
|
49
|
+
* (concurrent reviewer tick won the race, or manual REST review beat the
|
|
50
|
+
* async worker). False is NOT an error — caller logs and moves on.
|
|
51
|
+
*
|
|
52
|
+
* Slice 2.2 reviewer worker (flag-reviewer.ts) writes via this helper after
|
|
53
|
+
* each LLM call. Slice 2.4 REST endpoint (POST /api/flags/:id/review) also
|
|
54
|
+
* uses it for manual operator override.
|
|
55
|
+
*/
|
|
56
|
+
export declare function markFlagReviewed(db: Database.Database, input: MarkFlagReviewedInput): boolean;
|
|
57
|
+
/**
|
|
58
|
+
* Route a flag to the AGENT for clarification WITHOUT consuming the single review
|
|
59
|
+
* slot. Sets review_verdict='pending_clarification' + review_reason but leaves
|
|
60
|
+
* reviewed_at NULL, so:
|
|
61
|
+
* - getPendingFlags excludes it (the autonomous reviewer won't re-process it), AND
|
|
62
|
+
* - the agent can still resolve it via POST /api/flags/:id/review — that endpoint
|
|
63
|
+
* guards on reviewed_at (not verdict), so the agent's later verdict IS the real
|
|
64
|
+
* review and overwrites this routing marker.
|
|
65
|
+
*
|
|
66
|
+
* Used by the reviewer for owner-unknown flags it must NOT auto-decide: ownership
|
|
67
|
+
* needs context the autonomous reviewer lacks (the conversation + the ability to ask
|
|
68
|
+
* the user). FLAG, don't guess. Returns true if a row was updated (false if the flag
|
|
69
|
+
* was already reviewed, or already routed).
|
|
70
|
+
*/
|
|
71
|
+
export declare function markFlagPendingClarification(db: Database.Database, input: {
|
|
72
|
+
flag_id: string;
|
|
73
|
+
reason: string;
|
|
74
|
+
}): boolean;
|
|
75
|
+
export interface GetPendingFlagsOpts {
|
|
76
|
+
flag_type?: PipelineFlagType;
|
|
77
|
+
origin_writer?: PipelineFlagWriter;
|
|
78
|
+
limit?: number;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Get flags awaiting review (reviewed_at IS NULL). Default limit 100.
|
|
82
|
+
* Used by Slice 2 async reviewer worker. Also useful for debug REST endpoint
|
|
83
|
+
* (Slice 2 will add GET /api/flags).
|
|
84
|
+
*/
|
|
85
|
+
export declare function getPendingFlags(db: Database.Database, opts?: GetPendingFlagsOpts): PipelineFlag[];
|
|
86
|
+
/**
|
|
87
|
+
* Flags routed to the AGENT for clarification (reviewed_at NULL + verdict=
|
|
88
|
+
* 'pending_clarification'). The context hook surfaces these as plain-English
|
|
89
|
+
* questions; the agent resolves them (POST /api/flags/:id/review) or asks the user.
|
|
90
|
+
* Oldest first (resolve the longest-waiting ambiguity first).
|
|
91
|
+
*/
|
|
92
|
+
export declare function getAgentPendingFlags(db: Database.Database, opts?: {
|
|
93
|
+
limit?: number;
|
|
94
|
+
}): PipelineFlag[];
|
|
95
|
+
/**
|
|
96
|
+
* Cheap COUNT of flags routed to the agent (same predicate as getAgentPendingFlags,
|
|
97
|
+
* no row materialization). Drives the lightweight "N items need your input" nudge
|
|
98
|
+
* that rides on every tool result — a passive MCP tool can't push, so the agent
|
|
99
|
+
* discovers pending work by bumping into this on calls it was already making.
|
|
100
|
+
*/
|
|
101
|
+
export declare function countAgentPendingFlags(db: Database.Database): number;
|
|
102
|
+
export interface ListFlagsOpts {
|
|
103
|
+
flag_type?: PipelineFlagType;
|
|
104
|
+
origin_writer?: PipelineFlagWriter;
|
|
105
|
+
/** true → only reviewed; false → only unreviewed; undefined → all. */
|
|
106
|
+
reviewed?: boolean;
|
|
107
|
+
block_id?: string;
|
|
108
|
+
limit?: number;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* General flag lister for the REST endpoint (Slice 2.4). Unlike getPendingFlags
|
|
112
|
+
* (unreviewed-only), this handles the reviewed=true / =false / =all (undefined)
|
|
113
|
+
* tri-state + a block_id filter (matches either block_id_a or block_id_b).
|
|
114
|
+
* Newest-first ordering (REST consumers want the recent flags up top).
|
|
115
|
+
*/
|
|
116
|
+
export declare function listFlags(db: Database.Database, opts?: ListFlagsOpts): PipelineFlag[];
|
|
117
|
+
/** Single flag by id, or null if not found. */
|
|
118
|
+
export declare function getFlagById(db: Database.Database, id: string): PipelineFlag | null;
|
|
119
|
+
/**
|
|
120
|
+
* Get all flags for a given block (reviewed or not). Useful for surfacing
|
|
121
|
+
* flag history per block (Slice 2 REST endpoint, debug, audit).
|
|
122
|
+
*/
|
|
123
|
+
export declare function getFlagsForBlock(db: Database.Database, blockId: string): PipelineFlag[];
|
|
124
|
+
/**
|
|
125
|
+
* Summary counts — useful for telemetry + debug visibility (mirrors
|
|
126
|
+
* summarizeQuarantine pattern from pass2-quarantine.ts).
|
|
127
|
+
*/
|
|
128
|
+
export declare function summarizePipelineFlags(db: Database.Database): {
|
|
129
|
+
total: number;
|
|
130
|
+
unreviewed: number;
|
|
131
|
+
by_type: Array<{
|
|
132
|
+
flag_type: string;
|
|
133
|
+
count: number;
|
|
134
|
+
}>;
|
|
135
|
+
by_writer: Array<{
|
|
136
|
+
origin_writer: string;
|
|
137
|
+
count: number;
|
|
138
|
+
}>;
|
|
139
|
+
};
|
|
140
|
+
//# sourceMappingURL=pipeline-flags.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pipeline-flags.d.ts","sourceRoot":"","sources":["../../../src/middleware/reflect/pipeline-flags.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,314 @@
|
|
|
1
|
+
// ═══════════════════════════════════════════════════════════════════════════════
|
|
2
|
+
// DEBT 5 Slice 1 — PIPELINE FLAGS (Stage FLAG infrastructure)
|
|
3
|
+
// ═══════════════════════════════════════════════════════════════════════════════
|
|
4
|
+
//
|
|
5
|
+
// Replaces auto-drop semantics in dedupBySourceAndValue + provides the durable
|
|
6
|
+
// flag persistence layer for Stage AUDIT (Slice 2) + entity resolution
|
|
7
|
+
// uncertainty (Stage C, Sub-step 1.2).
|
|
8
|
+
//
|
|
9
|
+
// Per user direction: system FLAGS, reasoning MERGES. This module is the
|
|
10
|
+
// system FLAGS half — code-only, no LLM, just durable persistence of
|
|
11
|
+
// "these two blocks look like duplicates — needs reasoning to decide."
|
|
12
|
+
//
|
|
13
|
+
// The async LLM reviewer (Slice 2) is the reasoning MERGES half — it
|
|
14
|
+
// consumes rows written here, calls LLM with full context, writes verdict +
|
|
15
|
+
// optional merge action back.
|
|
16
|
+
//
|
|
17
|
+
// Pattern reference: pass2-quarantine.ts (table + writer + reader module).
|
|
18
|
+
// Per docs/PIPELINE-SLICE-1-DESIGN.md §3.
|
|
19
|
+
//
|
|
20
|
+
// Sub-step 1.1 (this file): table schema + function signatures + stub impls.
|
|
21
|
+
// - ensurePipelineFlagsTable: real impl (idempotent CREATE)
|
|
22
|
+
// - writePipelineFlag: real impl (INSERT)
|
|
23
|
+
// - getPendingFlags: real impl (SELECT)
|
|
24
|
+
// No callers yet — Sub-step 1.4 wires Stage FLAG to call writePipelineFlag.
|
|
25
|
+
//
|
|
26
|
+
// What this module does NOT do:
|
|
27
|
+
// - The async LLM reviewer (that's Slice 2 — its own module)
|
|
28
|
+
// - Stage AUDIT background process (that's Slice 2)
|
|
29
|
+
// - Auto-merge actions (reviewer's job, not flag-writer's)
|
|
30
|
+
import { v4 as uuidv4 } from "uuid";
|
|
31
|
+
// ─── Schema migration ──────────────────────────────────────────────────────────
|
|
32
|
+
/**
|
|
33
|
+
* Create the pipeline_flags table + indexes if they don't exist. Safe to call
|
|
34
|
+
* repeatedly (CREATE IF NOT EXISTS + indexes are idempotent).
|
|
35
|
+
*
|
|
36
|
+
* Caller responsibility: invoke once at server boot. Writers do NOT auto-
|
|
37
|
+
* create the table — they assume it exists. Keeps the call graph predictable
|
|
38
|
+
* (no silent side effects in hot paths). Matches pass2-quarantine.ts pattern.
|
|
39
|
+
*
|
|
40
|
+
* criteria_json + review/action fields are stored as nullable TEXT so the
|
|
41
|
+
* shape can evolve without per-field column adds (SQLite JSON1 can query
|
|
42
|
+
* into them if composition analysis ever needed).
|
|
43
|
+
*/
|
|
44
|
+
export function ensurePipelineFlagsTable(db) {
|
|
45
|
+
db.exec(`
|
|
46
|
+
CREATE TABLE IF NOT EXISTS pipeline_flags (
|
|
47
|
+
id TEXT PRIMARY KEY,
|
|
48
|
+
flag_type TEXT NOT NULL,
|
|
49
|
+
block_id_a TEXT NOT NULL,
|
|
50
|
+
block_id_b TEXT,
|
|
51
|
+
criteria_json TEXT NOT NULL,
|
|
52
|
+
scope_check TEXT NOT NULL,
|
|
53
|
+
origin_writer TEXT NOT NULL,
|
|
54
|
+
origin_range_id TEXT,
|
|
55
|
+
created_at TEXT NOT NULL,
|
|
56
|
+
|
|
57
|
+
reviewed_at TEXT,
|
|
58
|
+
review_verdict TEXT,
|
|
59
|
+
review_reason TEXT,
|
|
60
|
+
|
|
61
|
+
action_taken TEXT,
|
|
62
|
+
action_at TEXT,
|
|
63
|
+
winning_block_id TEXT,
|
|
64
|
+
|
|
65
|
+
FOREIGN KEY (block_id_a) REFERENCES blocks(id),
|
|
66
|
+
FOREIGN KEY (block_id_b) REFERENCES blocks(id),
|
|
67
|
+
FOREIGN KEY (origin_range_id) REFERENCES conversation_turn_ranges(id),
|
|
68
|
+
FOREIGN KEY (winning_block_id) REFERENCES blocks(id)
|
|
69
|
+
)
|
|
70
|
+
`);
|
|
71
|
+
db.exec(`CREATE INDEX IF NOT EXISTS idx_pipeline_flags_unreviewed
|
|
72
|
+
ON pipeline_flags(reviewed_at) WHERE reviewed_at IS NULL`);
|
|
73
|
+
db.exec(`CREATE INDEX IF NOT EXISTS idx_pipeline_flags_type
|
|
74
|
+
ON pipeline_flags(flag_type)`);
|
|
75
|
+
db.exec(`CREATE INDEX IF NOT EXISTS idx_pipeline_flags_block_a
|
|
76
|
+
ON pipeline_flags(block_id_a)`);
|
|
77
|
+
db.exec(`CREATE INDEX IF NOT EXISTS idx_pipeline_flags_origin_writer
|
|
78
|
+
ON pipeline_flags(origin_writer)`);
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Write a new flag for async-reviewer pickup. Returns the generated id.
|
|
82
|
+
*
|
|
83
|
+
* Writes are additive — multiple flags for the same block_id_a are allowed
|
|
84
|
+
* (different flag_types, or different block_id_b candidates). Reviewer
|
|
85
|
+
* deduplicates by inspecting the unreviewed set + the actual graph state.
|
|
86
|
+
*
|
|
87
|
+
* No FK or shape validation here beyond what SQLite enforces — caller is
|
|
88
|
+
* expected to assemble a valid criteria object per the flag_type's schema
|
|
89
|
+
* (see PIPELINE-SLICE-1-DESIGN.md §3.1).
|
|
90
|
+
*/
|
|
91
|
+
export function writePipelineFlag(db, input) {
|
|
92
|
+
const id = `pfl_${uuidv4().slice(0, 12)}`;
|
|
93
|
+
const stmt = db.prepare(`
|
|
94
|
+
INSERT INTO pipeline_flags (
|
|
95
|
+
id, flag_type, block_id_a, block_id_b, criteria_json,
|
|
96
|
+
scope_check, origin_writer, origin_range_id, created_at,
|
|
97
|
+
reviewed_at, review_verdict, review_reason,
|
|
98
|
+
action_taken, action_at, winning_block_id
|
|
99
|
+
) VALUES (
|
|
100
|
+
@id, @flag_type, @block_id_a, @block_id_b, @criteria_json,
|
|
101
|
+
@scope_check, @origin_writer, @origin_range_id, @created_at,
|
|
102
|
+
NULL, NULL, NULL,
|
|
103
|
+
NULL, NULL, NULL
|
|
104
|
+
)
|
|
105
|
+
`);
|
|
106
|
+
stmt.run({
|
|
107
|
+
id,
|
|
108
|
+
flag_type: input.flag_type,
|
|
109
|
+
block_id_a: input.block_id_a,
|
|
110
|
+
block_id_b: input.block_id_b,
|
|
111
|
+
criteria_json: JSON.stringify(input.criteria ?? {}),
|
|
112
|
+
scope_check: input.scope_check,
|
|
113
|
+
origin_writer: input.origin_writer,
|
|
114
|
+
origin_range_id: input.origin_range_id,
|
|
115
|
+
created_at: new Date().toISOString(),
|
|
116
|
+
});
|
|
117
|
+
return id;
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Mark a flag as reviewed — idempotent via `WHERE reviewed_at IS NULL` guard.
|
|
121
|
+
* Returns true if the row was updated, false if it was already reviewed
|
|
122
|
+
* (concurrent reviewer tick won the race, or manual REST review beat the
|
|
123
|
+
* async worker). False is NOT an error — caller logs and moves on.
|
|
124
|
+
*
|
|
125
|
+
* Slice 2.2 reviewer worker (flag-reviewer.ts) writes via this helper after
|
|
126
|
+
* each LLM call. Slice 2.4 REST endpoint (POST /api/flags/:id/review) also
|
|
127
|
+
* uses it for manual operator override.
|
|
128
|
+
*/
|
|
129
|
+
export function markFlagReviewed(db, input) {
|
|
130
|
+
const stmt = db.prepare(`
|
|
131
|
+
UPDATE pipeline_flags
|
|
132
|
+
SET reviewed_at = @reviewed_at,
|
|
133
|
+
review_verdict = @verdict,
|
|
134
|
+
review_reason = @reason,
|
|
135
|
+
action_taken = @action_taken,
|
|
136
|
+
action_at = @action_at,
|
|
137
|
+
winning_block_id = @winning_block_id
|
|
138
|
+
WHERE id = @flag_id
|
|
139
|
+
AND reviewed_at IS NULL
|
|
140
|
+
`);
|
|
141
|
+
const action_taken = input.action_taken ?? null;
|
|
142
|
+
const r = stmt.run({
|
|
143
|
+
flag_id: input.flag_id,
|
|
144
|
+
reviewed_at: new Date().toISOString(),
|
|
145
|
+
verdict: input.verdict,
|
|
146
|
+
reason: input.reason,
|
|
147
|
+
action_taken,
|
|
148
|
+
// action_at populated only when an action actually fired
|
|
149
|
+
action_at: action_taken && action_taken !== 'none' ? new Date().toISOString() : null,
|
|
150
|
+
winning_block_id: input.winning_block_id ?? null,
|
|
151
|
+
});
|
|
152
|
+
return r.changes === 1;
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Route a flag to the AGENT for clarification WITHOUT consuming the single review
|
|
156
|
+
* slot. Sets review_verdict='pending_clarification' + review_reason but leaves
|
|
157
|
+
* reviewed_at NULL, so:
|
|
158
|
+
* - getPendingFlags excludes it (the autonomous reviewer won't re-process it), AND
|
|
159
|
+
* - the agent can still resolve it via POST /api/flags/:id/review — that endpoint
|
|
160
|
+
* guards on reviewed_at (not verdict), so the agent's later verdict IS the real
|
|
161
|
+
* review and overwrites this routing marker.
|
|
162
|
+
*
|
|
163
|
+
* Used by the reviewer for owner-unknown flags it must NOT auto-decide: ownership
|
|
164
|
+
* needs context the autonomous reviewer lacks (the conversation + the ability to ask
|
|
165
|
+
* the user). FLAG, don't guess. Returns true if a row was updated (false if the flag
|
|
166
|
+
* was already reviewed, or already routed).
|
|
167
|
+
*/
|
|
168
|
+
export function markFlagPendingClarification(db, input) {
|
|
169
|
+
const stmt = db.prepare(`
|
|
170
|
+
UPDATE pipeline_flags
|
|
171
|
+
SET review_verdict = 'pending_clarification',
|
|
172
|
+
review_reason = @reason
|
|
173
|
+
WHERE id = @flag_id
|
|
174
|
+
AND reviewed_at IS NULL
|
|
175
|
+
AND (review_verdict IS NULL OR review_verdict != 'pending_clarification')
|
|
176
|
+
`);
|
|
177
|
+
const r = stmt.run({ flag_id: input.flag_id, reason: input.reason });
|
|
178
|
+
return r.changes === 1;
|
|
179
|
+
}
|
|
180
|
+
function rowToFlag(row) {
|
|
181
|
+
let criteria = {};
|
|
182
|
+
try {
|
|
183
|
+
criteria = JSON.parse(row.criteria_json);
|
|
184
|
+
}
|
|
185
|
+
catch { /* tolerate bad JSON — empty criteria */ }
|
|
186
|
+
return {
|
|
187
|
+
id: row.id,
|
|
188
|
+
flag_type: row.flag_type,
|
|
189
|
+
block_id_a: row.block_id_a,
|
|
190
|
+
block_id_b: row.block_id_b,
|
|
191
|
+
criteria,
|
|
192
|
+
scope_check: row.scope_check,
|
|
193
|
+
origin_writer: row.origin_writer,
|
|
194
|
+
origin_range_id: row.origin_range_id,
|
|
195
|
+
created_at: row.created_at,
|
|
196
|
+
reviewed_at: row.reviewed_at,
|
|
197
|
+
review_verdict: row.review_verdict ?? null,
|
|
198
|
+
review_reason: row.review_reason,
|
|
199
|
+
action_taken: row.action_taken ?? null,
|
|
200
|
+
action_at: row.action_at,
|
|
201
|
+
winning_block_id: row.winning_block_id,
|
|
202
|
+
};
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Get flags awaiting review (reviewed_at IS NULL). Default limit 100.
|
|
206
|
+
* Used by Slice 2 async reviewer worker. Also useful for debug REST endpoint
|
|
207
|
+
* (Slice 2 will add GET /api/flags).
|
|
208
|
+
*/
|
|
209
|
+
export function getPendingFlags(db, opts = {}) {
|
|
210
|
+
// Exclude flags routed to the agent (verdict='pending_clarification', reviewed_at
|
|
211
|
+
// still NULL) — those await the agent/user, not the autonomous reviewer. Without
|
|
212
|
+
// this the reviewer would re-route them every tick.
|
|
213
|
+
const where = [
|
|
214
|
+
"reviewed_at IS NULL",
|
|
215
|
+
"(review_verdict IS NULL OR review_verdict != 'pending_clarification')",
|
|
216
|
+
];
|
|
217
|
+
const params = {};
|
|
218
|
+
if (opts.flag_type) {
|
|
219
|
+
where.push("flag_type = @flag_type");
|
|
220
|
+
params.flag_type = opts.flag_type;
|
|
221
|
+
}
|
|
222
|
+
if (opts.origin_writer) {
|
|
223
|
+
where.push("origin_writer = @origin_writer");
|
|
224
|
+
params.origin_writer = opts.origin_writer;
|
|
225
|
+
}
|
|
226
|
+
const limit = opts.limit ?? 100;
|
|
227
|
+
const sql = `SELECT * FROM pipeline_flags WHERE ${where.join(" AND ")} ORDER BY created_at ASC LIMIT ${limit}`;
|
|
228
|
+
const rows = db.prepare(sql).all(params);
|
|
229
|
+
return rows.map(rowToFlag);
|
|
230
|
+
}
|
|
231
|
+
/**
|
|
232
|
+
* Flags routed to the AGENT for clarification (reviewed_at NULL + verdict=
|
|
233
|
+
* 'pending_clarification'). The context hook surfaces these as plain-English
|
|
234
|
+
* questions; the agent resolves them (POST /api/flags/:id/review) or asks the user.
|
|
235
|
+
* Oldest first (resolve the longest-waiting ambiguity first).
|
|
236
|
+
*/
|
|
237
|
+
export function getAgentPendingFlags(db, opts = {}) {
|
|
238
|
+
const limit = opts.limit ?? 20;
|
|
239
|
+
const rows = db.prepare(`SELECT * FROM pipeline_flags
|
|
240
|
+
WHERE reviewed_at IS NULL AND review_verdict = 'pending_clarification'
|
|
241
|
+
ORDER BY created_at ASC LIMIT ${limit}`).all();
|
|
242
|
+
return rows.map(rowToFlag);
|
|
243
|
+
}
|
|
244
|
+
/**
|
|
245
|
+
* Cheap COUNT of flags routed to the agent (same predicate as getAgentPendingFlags,
|
|
246
|
+
* no row materialization). Drives the lightweight "N items need your input" nudge
|
|
247
|
+
* that rides on every tool result — a passive MCP tool can't push, so the agent
|
|
248
|
+
* discovers pending work by bumping into this on calls it was already making.
|
|
249
|
+
*/
|
|
250
|
+
export function countAgentPendingFlags(db) {
|
|
251
|
+
const row = db.prepare(`SELECT COUNT(*) AS n FROM pipeline_flags
|
|
252
|
+
WHERE reviewed_at IS NULL AND review_verdict = 'pending_clarification'`).get();
|
|
253
|
+
return row?.n ?? 0;
|
|
254
|
+
}
|
|
255
|
+
/**
|
|
256
|
+
* General flag lister for the REST endpoint (Slice 2.4). Unlike getPendingFlags
|
|
257
|
+
* (unreviewed-only), this handles the reviewed=true / =false / =all (undefined)
|
|
258
|
+
* tri-state + a block_id filter (matches either block_id_a or block_id_b).
|
|
259
|
+
* Newest-first ordering (REST consumers want the recent flags up top).
|
|
260
|
+
*/
|
|
261
|
+
export function listFlags(db, opts = {}) {
|
|
262
|
+
const where = [];
|
|
263
|
+
const params = {};
|
|
264
|
+
if (opts.flag_type) {
|
|
265
|
+
where.push("flag_type = @flag_type");
|
|
266
|
+
params.flag_type = opts.flag_type;
|
|
267
|
+
}
|
|
268
|
+
if (opts.origin_writer) {
|
|
269
|
+
where.push("origin_writer = @origin_writer");
|
|
270
|
+
params.origin_writer = opts.origin_writer;
|
|
271
|
+
}
|
|
272
|
+
if (opts.reviewed === true)
|
|
273
|
+
where.push("reviewed_at IS NOT NULL");
|
|
274
|
+
if (opts.reviewed === false)
|
|
275
|
+
where.push("reviewed_at IS NULL");
|
|
276
|
+
if (opts.block_id) {
|
|
277
|
+
where.push("(block_id_a = @block_id OR block_id_b = @block_id)");
|
|
278
|
+
params.block_id = opts.block_id;
|
|
279
|
+
}
|
|
280
|
+
const limit = opts.limit ?? 100;
|
|
281
|
+
const whereClause = where.length ? `WHERE ${where.join(" AND ")}` : "";
|
|
282
|
+
const sql = `SELECT * FROM pipeline_flags ${whereClause} ORDER BY created_at DESC LIMIT ${limit}`;
|
|
283
|
+
const rows = db.prepare(sql).all(params);
|
|
284
|
+
return rows.map(rowToFlag);
|
|
285
|
+
}
|
|
286
|
+
/** Single flag by id, or null if not found. */
|
|
287
|
+
export function getFlagById(db, id) {
|
|
288
|
+
const row = db.prepare(`SELECT * FROM pipeline_flags WHERE id = ?`).get(id);
|
|
289
|
+
return row ? rowToFlag(row) : null;
|
|
290
|
+
}
|
|
291
|
+
/**
|
|
292
|
+
* Get all flags for a given block (reviewed or not). Useful for surfacing
|
|
293
|
+
* flag history per block (Slice 2 REST endpoint, debug, audit).
|
|
294
|
+
*/
|
|
295
|
+
export function getFlagsForBlock(db, blockId) {
|
|
296
|
+
const rows = db.prepare(`
|
|
297
|
+
SELECT * FROM pipeline_flags
|
|
298
|
+
WHERE block_id_a = @blockId OR block_id_b = @blockId
|
|
299
|
+
ORDER BY created_at DESC
|
|
300
|
+
`).all({ blockId });
|
|
301
|
+
return rows.map(rowToFlag);
|
|
302
|
+
}
|
|
303
|
+
/**
|
|
304
|
+
* Summary counts — useful for telemetry + debug visibility (mirrors
|
|
305
|
+
* summarizeQuarantine pattern from pass2-quarantine.ts).
|
|
306
|
+
*/
|
|
307
|
+
export function summarizePipelineFlags(db) {
|
|
308
|
+
const total = db.prepare(`SELECT COUNT(*) as n FROM pipeline_flags`).get().n;
|
|
309
|
+
const unreviewed = db.prepare(`SELECT COUNT(*) as n FROM pipeline_flags WHERE reviewed_at IS NULL`).get().n;
|
|
310
|
+
const by_type = db.prepare(`SELECT flag_type, COUNT(*) as count FROM pipeline_flags GROUP BY flag_type ORDER BY count DESC`).all();
|
|
311
|
+
const by_writer = db.prepare(`SELECT origin_writer, COUNT(*) as count FROM pipeline_flags GROUP BY origin_writer ORDER BY count DESC`).all();
|
|
312
|
+
return { total, unreviewed, by_type, by_writer };
|
|
313
|
+
}
|
|
314
|
+
//# sourceMappingURL=pipeline-flags.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pipeline-flags.js","sourceRoot":"","sources":["../../../src/middleware/reflect/pipeline-flags.ts"],"names":[],"mappings":"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"}
|