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,471 @@
|
|
|
1
|
+
// routes/admin.ts — health, Gemini ping, stats, re-embed, backup, config.
|
|
2
|
+
// Reference: api-server.v1.ts (lines 383-443, 3229-3335)
|
|
3
|
+
import { Router } from "express";
|
|
4
|
+
import { blockEmbeddingText } from "../engine/embeddings.js";
|
|
5
|
+
import { getLLMProvider, getEmbeddingProvider, resetProviders } from "../engine/providers/index.js";
|
|
6
|
+
import { existsSync, readFileSync, writeFileSync, mkdirSync } from "fs";
|
|
7
|
+
import { dirname } from "path";
|
|
8
|
+
import { resolveEnvWriteTarget } from "../home-env.js";
|
|
9
|
+
import { performBackup } from "../store/backup.js";
|
|
10
|
+
import { runProvenanceCheck } from "../middleware/reflect/provenance-check.js";
|
|
11
|
+
import { healSchemaDemotes } from "../middleware/reflect/schema-heal.js";
|
|
12
|
+
import { pruneCollapsedTypes } from "../middleware/reflect/prune-collapsed-types.js";
|
|
13
|
+
// ─── .env helpers ─────────────────────────────────────────────────────────────
|
|
14
|
+
// Env-file LOCATION + parsing live in ../home-env.ts (shared with boot-env.ts so a
|
|
15
|
+
// fresh install's ~/.nodedex/.env is loaded at boot). serializeEnvFile (below) is the
|
|
16
|
+
// write-side, used only by the config POST.
|
|
17
|
+
function serializeEnvFile(original, updates) {
|
|
18
|
+
const lines = original.split("\n");
|
|
19
|
+
const written = new Set();
|
|
20
|
+
const result = lines.map(line => {
|
|
21
|
+
const trimmed = line.trim();
|
|
22
|
+
if (!trimmed || trimmed.startsWith("#"))
|
|
23
|
+
return line;
|
|
24
|
+
const eq = trimmed.indexOf("=");
|
|
25
|
+
if (eq < 0)
|
|
26
|
+
return line;
|
|
27
|
+
const key = trimmed.slice(0, eq).trim();
|
|
28
|
+
if (key in updates) {
|
|
29
|
+
written.add(key);
|
|
30
|
+
const val = updates[key];
|
|
31
|
+
// preserve comment-style commented-out key if value is empty
|
|
32
|
+
if (val === "")
|
|
33
|
+
return `# ${key}=`;
|
|
34
|
+
return `${key}=${val}`;
|
|
35
|
+
}
|
|
36
|
+
return line;
|
|
37
|
+
});
|
|
38
|
+
// Append keys not already present in the file
|
|
39
|
+
for (const [key, val] of Object.entries(updates)) {
|
|
40
|
+
if (!written.has(key) && val !== "") {
|
|
41
|
+
result.push(`${key}=${val}`);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return result.join("\n");
|
|
45
|
+
}
|
|
46
|
+
function maskKey(key) {
|
|
47
|
+
if (!key || key.length < 8)
|
|
48
|
+
return key ? "••••••" : "";
|
|
49
|
+
return `${key.slice(0, 4)}…${key.slice(-4)}`;
|
|
50
|
+
}
|
|
51
|
+
/** Slim an OpenRouter `/api/v1/models` entry to what the web-UI picker needs. Pure /
|
|
52
|
+
* testable. `max_completion_tokens` (under `top_provider`) is the OUTPUT ceiling that
|
|
53
|
+
* feeds NODEDEX_MODEL_CAPS; `context_length` is the whole input+output window (NOT the
|
|
54
|
+
* output cap — do not use it for caps). `supported_parameters` tells whether the model
|
|
55
|
+
* can do structured output, so the UI can warn/filter rather than discover it at the
|
|
56
|
+
* first pass failure. Shape verified live 2026-06-16 against the real endpoint. */
|
|
57
|
+
/** Parse NODEDEX_MODEL_CAPS (a JSON `{model: maxOutputTokens}` string) defensively. */
|
|
58
|
+
export function safeParseModelCaps(raw) {
|
|
59
|
+
try {
|
|
60
|
+
const o = JSON.parse(raw ?? "{}");
|
|
61
|
+
return o && typeof o === "object" && !Array.isArray(o) ? o : {};
|
|
62
|
+
}
|
|
63
|
+
catch {
|
|
64
|
+
return {};
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
/** The v2 engine stages, each with its model-override env knob, TIER (the "needs a
|
|
68
|
+
* smarter model" hint the web UI shows), role, and resolved model. Resolution mirrors
|
|
69
|
+
* the real call sites: comprehend → NODEDEX_COMPREHEND_MODEL (no tier); selector/build/
|
|
70
|
+
* connect → REASONING tier; fill → STRUCTURAL tier; chain → default. effective =
|
|
71
|
+
* override || tier model || default model. Pure / testable (reads env only). */
|
|
72
|
+
export function buildPassRouting() {
|
|
73
|
+
const defaultModel = process.env.AI_MODEL ?? process.env.NODEDEX_PRIMARY_MODEL ?? "";
|
|
74
|
+
const reasoning = process.env.NODEDEX_REASONING_MODEL ?? "";
|
|
75
|
+
const structural = process.env.NODEDEX_STRUCTURAL_MODEL ?? "";
|
|
76
|
+
const hintFor = (t) => t === "smart" ? "wants a strong model" : t === "mechanical" ? "a cheap model is fine" : "moderate";
|
|
77
|
+
const defs = [
|
|
78
|
+
{ stage: "comprehend", env: "NODEDEX_COMPREHEND_MODEL", tier: "smart", role: "holistic read → typed blocks + links + provenance (the workhorse)", tierModel: "" },
|
|
79
|
+
{ stage: "selector", env: "NODEDEX_JUDGE_MODEL", tier: "smart", role: "worth-gate: keep/drop candidates", tierModel: reasoning },
|
|
80
|
+
{ stage: "fill", env: "NODEDEX_PASS2B_MODEL", tier: "mechanical", role: "fill unique{} fields per block", tierModel: structural },
|
|
81
|
+
{ stage: "build", env: "NODEDEX_PASS3_MODEL", tier: "smart", role: "write blocks + canonical names + relations", tierModel: reasoning },
|
|
82
|
+
{ stage: "connect", env: "NODEDEX_PASS4_MODEL", tier: "smart", role: "cross-block linking", tierModel: reasoning },
|
|
83
|
+
{ stage: "chain", env: "NODEDEX_PASS5_MODEL", tier: "light", role: "chain narrative summary", tierModel: "" },
|
|
84
|
+
];
|
|
85
|
+
return {
|
|
86
|
+
default_model: defaultModel, reasoning_tier: reasoning, structural_tier: structural,
|
|
87
|
+
stages: defs.map((d) => {
|
|
88
|
+
const override = process.env[d.env] ?? "";
|
|
89
|
+
return { stage: d.stage, env: d.env, tier: d.tier, role: d.role, override, effective: override || d.tierModel || defaultModel, hint: hintFor(d.tier) };
|
|
90
|
+
}),
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
export function slimOpenRouterModel(m) {
|
|
94
|
+
const tp = m?.top_provider ?? {};
|
|
95
|
+
const sp = Array.isArray(m?.supported_parameters) ? m.supported_parameters : [];
|
|
96
|
+
return {
|
|
97
|
+
id: String(m?.id ?? ""),
|
|
98
|
+
name: String(m?.name ?? m?.id ?? ""),
|
|
99
|
+
context_length: m?.context_length ?? tp?.context_length ?? null,
|
|
100
|
+
max_completion_tokens: tp?.max_completion_tokens ?? null,
|
|
101
|
+
pricing: m?.pricing
|
|
102
|
+
? { prompt: String(m.pricing.prompt ?? ""), completion: String(m.pricing.completion ?? "") }
|
|
103
|
+
: null,
|
|
104
|
+
supports_structured: sp.includes("structured_outputs") || sp.includes("response_format"),
|
|
105
|
+
supports_tools: sp.includes("tools"),
|
|
106
|
+
modality: m?.architecture?.modality ?? null,
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
export function createAdminRouter(db, schedulerHealth, embeddings) {
|
|
110
|
+
const router = Router();
|
|
111
|
+
// ─── Health check ──────────────────────────────────────────────────────────
|
|
112
|
+
router.get("/api/health", (_req, res) => {
|
|
113
|
+
const now = Date.now();
|
|
114
|
+
const jobs = Object.entries(schedulerHealth ?? {}).map(([key, job]) => {
|
|
115
|
+
const lastRunMs = job.last_run ? new Date(job.last_run).getTime() : null;
|
|
116
|
+
const overdueMs = job.interval_ms * 1.5;
|
|
117
|
+
const overdue = lastRunMs !== null && (now - lastRunMs) > overdueMs;
|
|
118
|
+
const status = job.last_error ? "error" : overdue ? "overdue" : job.run_count === 0 ? "pending" : "ok";
|
|
119
|
+
return { key, ...job, overdue, status };
|
|
120
|
+
});
|
|
121
|
+
const overall = jobs.some(j => j.status === "error") ? "error"
|
|
122
|
+
: jobs.some(j => j.status === "overdue") ? "degraded"
|
|
123
|
+
: "ok";
|
|
124
|
+
res.json({ overall, jobs, server_time: new Date().toISOString() });
|
|
125
|
+
});
|
|
126
|
+
// ─── AI provider ping ─────────────────────────────────────────────────────
|
|
127
|
+
async function handleProviderPing(_req, res) {
|
|
128
|
+
const provider = getLLMProvider();
|
|
129
|
+
if (!provider.isAvailable()) {
|
|
130
|
+
return res.status(503).json({ ok: false, error: `no API key configured for provider '${provider.getName()}'` });
|
|
131
|
+
}
|
|
132
|
+
try {
|
|
133
|
+
const ok = await provider.ping();
|
|
134
|
+
if (ok)
|
|
135
|
+
return res.json({ ok: true, provider: provider.getName() });
|
|
136
|
+
return res.status(503).json({ ok: false, provider: provider.getName(), error: "ping failed" });
|
|
137
|
+
}
|
|
138
|
+
catch (e) {
|
|
139
|
+
return res.status(500).json({ ok: false, error: String(e).slice(0, 120) });
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
router.get("/api/provider/ping", handleProviderPing);
|
|
143
|
+
router.get("/api/gemini/ping", handleProviderPing); // legacy alias
|
|
144
|
+
// ─── Structured ping — same code path as reflect passes ──────────────────
|
|
145
|
+
// Uses generateStructured so it catches JSON/schema failures that plain ping misses.
|
|
146
|
+
router.get("/api/gemini/ping-structured", async (_req, res) => {
|
|
147
|
+
const provider = getLLMProvider();
|
|
148
|
+
if (!provider.isAvailable()) {
|
|
149
|
+
return res.status(503).json({ ok: false, error: `no API key configured for provider '${provider.getName()}'` });
|
|
150
|
+
}
|
|
151
|
+
try {
|
|
152
|
+
const schema = {
|
|
153
|
+
type: "object",
|
|
154
|
+
properties: { ok: { type: "boolean" } },
|
|
155
|
+
required: ["ok"],
|
|
156
|
+
};
|
|
157
|
+
const r = await provider.generateStructured("Reply with {\"ok\": true}.", "ping", schema, { thinkingBudget: 0, maxOutputTokens: 32 });
|
|
158
|
+
if (r?.result?.ok === true)
|
|
159
|
+
return res.json({ ok: true, provider: provider.getName() });
|
|
160
|
+
return res.status(503).json({ ok: false, provider: provider.getName(), error: "structured ping failed" });
|
|
161
|
+
}
|
|
162
|
+
catch (e) {
|
|
163
|
+
return res.status(500).json({ ok: false, error: String(e).slice(0, 120) });
|
|
164
|
+
}
|
|
165
|
+
});
|
|
166
|
+
// ─── Stats ────────────────────────────────────────────────────────────────
|
|
167
|
+
router.get("/api/stats", (_req, res) => {
|
|
168
|
+
try {
|
|
169
|
+
const stats = db.getStats();
|
|
170
|
+
const allBlocks = db.getAllBlocks();
|
|
171
|
+
const withEmbeddings = allBlocks.filter((b) => b.embedding).length;
|
|
172
|
+
res.json({ ...stats, with_embeddings: withEmbeddings, total_all: allBlocks.length });
|
|
173
|
+
}
|
|
174
|
+
catch (e) {
|
|
175
|
+
res.status(500).json({ error: String(e) });
|
|
176
|
+
}
|
|
177
|
+
});
|
|
178
|
+
// ─── Graph health — unlinked blocks only ────────────────────────────────
|
|
179
|
+
// Unlinked = no part_of relation → invisible to project-scoped dead-end checks.
|
|
180
|
+
// TTL expiry and relation cleanup are handled by the GC scheduler.
|
|
181
|
+
router.get("/api/admin/graph-health", (_req, res) => {
|
|
182
|
+
try {
|
|
183
|
+
const health = db.getGraphHealth();
|
|
184
|
+
res.json({
|
|
185
|
+
unlinked: { count: health.unlinked.length, blocks: health.unlinked },
|
|
186
|
+
clean: health.unlinked.length === 0,
|
|
187
|
+
});
|
|
188
|
+
}
|
|
189
|
+
catch (e) {
|
|
190
|
+
res.status(500).json({ error: String(e) });
|
|
191
|
+
}
|
|
192
|
+
});
|
|
193
|
+
// ─── Admin: provenance integrity check (gap ④a — $0, deterministic, no LLM) ──
|
|
194
|
+
// Verifies each block's source_excerpt actually appears in its source transcript;
|
|
195
|
+
// writes provenance_mismatch flags for fuzzy/missing. POST { limit?, write? }.
|
|
196
|
+
// write:false = dry-run audit (counts only, no flags).
|
|
197
|
+
router.post("/api/admin/provenance-check", (req, res) => {
|
|
198
|
+
try {
|
|
199
|
+
const limitRaw = Number(req.body?.limit);
|
|
200
|
+
const limit = Number.isFinite(limitRaw) && limitRaw > 0 ? limitRaw : undefined;
|
|
201
|
+
const write = req.body?.write !== false;
|
|
202
|
+
const flagFuzzy = req.body?.flagFuzzy !== false; // soft flags = $0 metric; false = only hard
|
|
203
|
+
const result = runProvenanceCheck(db, { limit, write, flagFuzzy });
|
|
204
|
+
res.json(result);
|
|
205
|
+
}
|
|
206
|
+
catch (e) {
|
|
207
|
+
res.status(500).json({ error: String(e) });
|
|
208
|
+
}
|
|
209
|
+
});
|
|
210
|
+
// ─── Admin: heal schema-mismatch flags via the deterministic demote ─────────
|
|
211
|
+
// Retroactively applies demoteForSave() to needs_review blocks created before
|
|
212
|
+
// demote-at-save shipped. CORRECTS (re-types), never deletes; collisions are left
|
|
213
|
+
// flagged for the dup-reviewer. $0 (no LLM). The server's single connection — safe
|
|
214
|
+
// to run live (unlike a script against the open DB).
|
|
215
|
+
router.post("/api/admin/heal-schema-demotes", (_req, res) => {
|
|
216
|
+
try {
|
|
217
|
+
res.json(healSchemaDemotes(db));
|
|
218
|
+
}
|
|
219
|
+
catch (e) {
|
|
220
|
+
res.status(500).json({ error: String(e) });
|
|
221
|
+
}
|
|
222
|
+
});
|
|
223
|
+
// ─── Admin: prune the collapsed block-type rows from the registry ───────────
|
|
224
|
+
// reasoning_chain/metric/claim were collapsed (2026-06-15) but their block_types
|
|
225
|
+
// rows persist in pre-collapse DBs (INSERT OR IGNORE never deletes) and still
|
|
226
|
+
// surface to the agent via /api/session. Deletes EXACTLY those three by name (no
|
|
227
|
+
// heuristic → user-created custom types are untouched). Existing BLOCKS stay
|
|
228
|
+
// forward-only. $0, idempotent, through the server's single connection (safe live).
|
|
229
|
+
router.post("/api/admin/prune-collapsed-types", (_req, res) => {
|
|
230
|
+
try {
|
|
231
|
+
res.json(pruneCollapsedTypes(db));
|
|
232
|
+
}
|
|
233
|
+
catch (e) {
|
|
234
|
+
res.status(500).json({ error: String(e) });
|
|
235
|
+
}
|
|
236
|
+
});
|
|
237
|
+
// ─── Admin: re-embed all blocks ───────────────────────────────────────────
|
|
238
|
+
// Reembeds EVERY non-archived block through the canonical recipe (essence +
|
|
239
|
+
// concepts) — this is the one-time migration tool for the Tier 2 recipe-drift
|
|
240
|
+
// fix (2026-06-15). Was a contextual "[label|type|project] / related_to:" header;
|
|
241
|
+
// dropped so every stored vector shares the recipe used at save time. See
|
|
242
|
+
// blockEmbeddingText.
|
|
243
|
+
router.post("/api/admin/reembed-all", async (_req, res) => {
|
|
244
|
+
if (!embeddings?.isAvailable()) {
|
|
245
|
+
return res.status(503).json({ error: "Embedding engine not available" });
|
|
246
|
+
}
|
|
247
|
+
try {
|
|
248
|
+
const allBlocks = db.getAllBlocks().filter(b => b.status !== "archived");
|
|
249
|
+
let reembedded = 0;
|
|
250
|
+
let errors = 0;
|
|
251
|
+
for (const block of allBlocks) {
|
|
252
|
+
try {
|
|
253
|
+
const vec = await embeddings.embed(blockEmbeddingText({ essence: block.essence, concepts: block.concepts }));
|
|
254
|
+
if (vec) {
|
|
255
|
+
db.updateEmbedding(block.id, vec);
|
|
256
|
+
reembedded++;
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
catch {
|
|
260
|
+
errors++;
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
res.json({ reembedded, errors });
|
|
264
|
+
}
|
|
265
|
+
catch (e) {
|
|
266
|
+
res.status(500).json({ error: String(e) });
|
|
267
|
+
}
|
|
268
|
+
});
|
|
269
|
+
// ─── Config: read current server config ───────────────────────────────────
|
|
270
|
+
router.get("/api/admin/config", (_req, res) => {
|
|
271
|
+
const envPath = resolveEnvWriteTarget();
|
|
272
|
+
const geminiKey = process.env.GEMINI_API_KEY ?? "";
|
|
273
|
+
const openaiKey = process.env.OPENAI_API_KEY ?? "";
|
|
274
|
+
const anthropicKey = process.env.ANTHROPIC_API_KEY ?? "";
|
|
275
|
+
const adminToken = process.env.NODEDEX_ADMIN_TOKEN ?? "";
|
|
276
|
+
res.json({
|
|
277
|
+
provider: process.env.AI_PROVIDER ?? "gemini",
|
|
278
|
+
model: process.env.AI_MODEL ?? process.env.NODEDEX_PRIMARY_MODEL ?? "",
|
|
279
|
+
fallback_model: process.env.NODEDEX_FALLBACK_MODEL ?? "",
|
|
280
|
+
pass4_model: process.env.NODEDEX_PASS4_MODEL ?? "",
|
|
281
|
+
gemini_key_set: geminiKey.length > 0,
|
|
282
|
+
gemini_key_preview: maskKey(geminiKey),
|
|
283
|
+
openai_key_set: openaiKey.length > 0,
|
|
284
|
+
openai_key_preview: maskKey(openaiKey),
|
|
285
|
+
anthropic_key_set: anthropicKey.length > 0,
|
|
286
|
+
anthropic_key_preview: maskKey(anthropicKey),
|
|
287
|
+
openai_base_url: process.env.OPENAI_BASE_URL ?? "",
|
|
288
|
+
embedding_provider: process.env.EMBEDDING_PROVIDER ?? "",
|
|
289
|
+
embedding_model: process.env.NODEDEX_EMBEDDING_MODEL ?? "",
|
|
290
|
+
// ⚠ embeddings power semantic recall + dedup (H3's value); false here = recall
|
|
291
|
+
// silently degrades to keyword-only. The UI should WARN, not bury this.
|
|
292
|
+
embedding_configured: (() => { try {
|
|
293
|
+
return getEmbeddingProvider().isAvailable();
|
|
294
|
+
}
|
|
295
|
+
catch {
|
|
296
|
+
return false;
|
|
297
|
+
} })(),
|
|
298
|
+
// Per-pass / tier model routing (advanced) — see GET /api/settings/passes for the
|
|
299
|
+
// resolved per-stage model + the smartness hint.
|
|
300
|
+
comprehend_model: process.env.NODEDEX_COMPREHEND_MODEL ?? "",
|
|
301
|
+
judge_model: process.env.NODEDEX_JUDGE_MODEL ?? "",
|
|
302
|
+
pass2b_model: process.env.NODEDEX_PASS2B_MODEL ?? "",
|
|
303
|
+
pass3_model: process.env.NODEDEX_PASS3_MODEL ?? "",
|
|
304
|
+
pass5_model: process.env.NODEDEX_PASS5_MODEL ?? "",
|
|
305
|
+
reasoning_model: process.env.NODEDEX_REASONING_MODEL ?? "",
|
|
306
|
+
structural_model: process.env.NODEDEX_STRUCTURAL_MODEL ?? "",
|
|
307
|
+
// Per-model output caps (populated by the web UI from /api/models).
|
|
308
|
+
model_caps: safeParseModelCaps(process.env.NODEDEX_MODEL_CAPS),
|
|
309
|
+
// Cost controls. min_credit floor is OpenRouter-only (live balance); daily cap
|
|
310
|
+
// is provider-agnostic (ledger-estimated).
|
|
311
|
+
min_credit_usd: process.env.NODEDEX_MIN_CREDIT_USD ?? "",
|
|
312
|
+
daily_budget_usd: process.env.NODEDEX_DAILY_BUDGET_USD ?? "",
|
|
313
|
+
// Write-robustness (H1).
|
|
314
|
+
arc_max_retries: process.env.NODEDEX_ARC_MAX_RETRIES ?? "",
|
|
315
|
+
// Arc auto-extract cadence: auto-commit captured turns every N (0/blank = off →
|
|
316
|
+
// rely on inactivity + the agent's own workspace_extract_arc). Read LIVE by
|
|
317
|
+
// arcAutoTurns(), so a POST here takes effect on the running server with no restart.
|
|
318
|
+
arc_auto_turns: process.env.NODEDEX_ARC_AUTO_TURNS ?? "",
|
|
319
|
+
pass3_batch_size: process.env.NODEDEX_PASS3_BATCH_SIZE ?? "",
|
|
320
|
+
thinking_budget: process.env.NODEDEX_THINKING_BUDGET ?? "high",
|
|
321
|
+
background_knowledge: (process.env.NODEDEX_BACKGROUND_KNOWLEDGE ?? "off").toLowerCase() === "on",
|
|
322
|
+
pass1_version: process.env.NODEDEX_PASS1_VERSION ?? "v1",
|
|
323
|
+
pass_extract: (process.env.NODEDEX_PASS_EXTRACT ?? "off").toLowerCase() === "on",
|
|
324
|
+
admin_token_set: adminToken.length > 0,
|
|
325
|
+
env_file_path: envPath,
|
|
326
|
+
env_file_found: existsSync(envPath),
|
|
327
|
+
});
|
|
328
|
+
});
|
|
329
|
+
// ─── Config: update server config ─────────────────────────────────────────
|
|
330
|
+
router.post("/api/admin/config", (req, res) => {
|
|
331
|
+
const body = req.body ?? {};
|
|
332
|
+
// Build env updates map — only include fields that were provided
|
|
333
|
+
const envUpdates = {};
|
|
334
|
+
if (body.provider !== undefined)
|
|
335
|
+
envUpdates["AI_PROVIDER"] = body.provider;
|
|
336
|
+
if (body.model !== undefined)
|
|
337
|
+
envUpdates["AI_MODEL"] = body.model;
|
|
338
|
+
if (body.fallback_model !== undefined)
|
|
339
|
+
envUpdates["NODEDEX_FALLBACK_MODEL"] = body.fallback_model;
|
|
340
|
+
if (body.pass4_model !== undefined)
|
|
341
|
+
envUpdates["NODEDEX_PASS4_MODEL"] = body.pass4_model;
|
|
342
|
+
if (body.gemini_key !== undefined)
|
|
343
|
+
envUpdates["GEMINI_API_KEY"] = body.gemini_key;
|
|
344
|
+
if (body.openai_key !== undefined)
|
|
345
|
+
envUpdates["OPENAI_API_KEY"] = body.openai_key;
|
|
346
|
+
if (body.anthropic_key !== undefined)
|
|
347
|
+
envUpdates["ANTHROPIC_API_KEY"] = body.anthropic_key;
|
|
348
|
+
if (body.openai_base_url !== undefined)
|
|
349
|
+
envUpdates["OPENAI_BASE_URL"] = body.openai_base_url;
|
|
350
|
+
if (body.embedding_provider !== undefined)
|
|
351
|
+
envUpdates["EMBEDDING_PROVIDER"] = body.embedding_provider;
|
|
352
|
+
if (body.embedding_model !== undefined)
|
|
353
|
+
envUpdates["NODEDEX_EMBEDDING_MODEL"] = body.embedding_model;
|
|
354
|
+
// Per-pass / tier model routing (advanced). These take effect WITHOUT a provider
|
|
355
|
+
// reset — modelForPass / modelOverride read env fresh per call.
|
|
356
|
+
if (body.comprehend_model !== undefined)
|
|
357
|
+
envUpdates["NODEDEX_COMPREHEND_MODEL"] = body.comprehend_model;
|
|
358
|
+
if (body.judge_model !== undefined)
|
|
359
|
+
envUpdates["NODEDEX_JUDGE_MODEL"] = body.judge_model;
|
|
360
|
+
if (body.pass2b_model !== undefined)
|
|
361
|
+
envUpdates["NODEDEX_PASS2B_MODEL"] = body.pass2b_model;
|
|
362
|
+
if (body.pass3_model !== undefined)
|
|
363
|
+
envUpdates["NODEDEX_PASS3_MODEL"] = body.pass3_model;
|
|
364
|
+
if (body.pass5_model !== undefined)
|
|
365
|
+
envUpdates["NODEDEX_PASS5_MODEL"] = body.pass5_model;
|
|
366
|
+
if (body.reasoning_model !== undefined)
|
|
367
|
+
envUpdates["NODEDEX_REASONING_MODEL"] = body.reasoning_model;
|
|
368
|
+
if (body.structural_model !== undefined)
|
|
369
|
+
envUpdates["NODEDEX_STRUCTURAL_MODEL"] = body.structural_model;
|
|
370
|
+
// Per-model output caps — accepts an object or a JSON string; stored as JSON.
|
|
371
|
+
if (body.model_caps !== undefined)
|
|
372
|
+
envUpdates["NODEDEX_MODEL_CAPS"] = typeof body.model_caps === "string" ? body.model_caps : JSON.stringify(body.model_caps);
|
|
373
|
+
// Cost controls + write-robustness (numbers stored as strings).
|
|
374
|
+
if (body.min_credit_usd !== undefined)
|
|
375
|
+
envUpdates["NODEDEX_MIN_CREDIT_USD"] = String(body.min_credit_usd);
|
|
376
|
+
if (body.daily_budget_usd !== undefined)
|
|
377
|
+
envUpdates["NODEDEX_DAILY_BUDGET_USD"] = String(body.daily_budget_usd);
|
|
378
|
+
if (body.arc_max_retries !== undefined)
|
|
379
|
+
envUpdates["NODEDEX_ARC_MAX_RETRIES"] = String(body.arc_max_retries);
|
|
380
|
+
if (body.arc_auto_turns !== undefined)
|
|
381
|
+
envUpdates["NODEDEX_ARC_AUTO_TURNS"] = String(body.arc_auto_turns);
|
|
382
|
+
if (body.pass3_batch_size !== undefined)
|
|
383
|
+
envUpdates["NODEDEX_PASS3_BATCH_SIZE"] = String(body.pass3_batch_size);
|
|
384
|
+
if (body.thinking_budget !== undefined)
|
|
385
|
+
envUpdates["NODEDEX_THINKING_BUDGET"] = body.thinking_budget;
|
|
386
|
+
if (body.background_knowledge !== undefined)
|
|
387
|
+
envUpdates["NODEDEX_BACKGROUND_KNOWLEDGE"] = body.background_knowledge ? "on" : "off";
|
|
388
|
+
if (body.pass1_version !== undefined)
|
|
389
|
+
envUpdates["NODEDEX_PASS1_VERSION"] = body.pass1_version;
|
|
390
|
+
if (body.pass_extract !== undefined)
|
|
391
|
+
envUpdates["NODEDEX_PASS_EXTRACT"] = body.pass_extract ? "on" : "off";
|
|
392
|
+
if (body.admin_token !== undefined)
|
|
393
|
+
envUpdates["NODEDEX_ADMIN_TOKEN"] = body.admin_token;
|
|
394
|
+
// Apply to process.env immediately (hot-reload for provider/keys)
|
|
395
|
+
for (const [k, v] of Object.entries(envUpdates)) {
|
|
396
|
+
if (v === "") {
|
|
397
|
+
delete process.env[k];
|
|
398
|
+
}
|
|
399
|
+
else {
|
|
400
|
+
process.env[k] = v;
|
|
401
|
+
}
|
|
402
|
+
}
|
|
403
|
+
// Provider/key changes: reset singletons so next call re-reads from process.env
|
|
404
|
+
const providerChanged = ["AI_PROVIDER", "GEMINI_API_KEY", "OPENAI_API_KEY",
|
|
405
|
+
"ANTHROPIC_API_KEY", "OPENAI_BASE_URL", "EMBEDDING_PROVIDER"].some(k => k in envUpdates);
|
|
406
|
+
if (providerChanged)
|
|
407
|
+
resetProviders();
|
|
408
|
+
// Persist to the resolved .env target: an existing repo .env (dev), else
|
|
409
|
+
// ~/.nodedex/.env (created on first write — the fresh-install home). NEVER null,
|
|
410
|
+
// so a fresh install can always save. boot-env.ts loads ~/.nodedex/.env next start.
|
|
411
|
+
const envPath = resolveEnvWriteTarget();
|
|
412
|
+
try {
|
|
413
|
+
const existed = existsSync(envPath);
|
|
414
|
+
const original = existed ? readFileSync(envPath, "utf8") : "";
|
|
415
|
+
const updated = serializeEnvFile(original, envUpdates);
|
|
416
|
+
mkdirSync(dirname(envPath), { recursive: true });
|
|
417
|
+
writeFileSync(envPath, updated, "utf8");
|
|
418
|
+
return res.json({ saved: true, env_file: envPath, created: !existed, hot_reloaded: providerChanged });
|
|
419
|
+
}
|
|
420
|
+
catch (e) {
|
|
421
|
+
return res.status(500).json({ error: `Failed to write ${envPath}: ${String(e)}` });
|
|
422
|
+
}
|
|
423
|
+
});
|
|
424
|
+
// ─── GET /api/models — provider model catalog (web-UI model picker) ─────────
|
|
425
|
+
// Proxies OpenRouter's model list (the one middle-platform catalog the web UI
|
|
426
|
+
// targets first). FREE metadata call — NO inference. Done server-side so the key
|
|
427
|
+
// never round-trips through the browser. Each entry carries the OUTPUT ceiling
|
|
428
|
+
// (→ NODEDEX_MODEL_CAPS), context window, pricing, and structured-output capability.
|
|
429
|
+
// ?q= filters by id/name substring. (Other providers' catalogs come later — the
|
|
430
|
+
// user's H2 scope is OpenRouter first.)
|
|
431
|
+
router.get("/api/models", async (req, res) => {
|
|
432
|
+
const key = process.env.OPENROUTER_API_KEY || process.env.OPENAI_API_KEY || "";
|
|
433
|
+
try {
|
|
434
|
+
const r = await fetch("https://openrouter.ai/api/v1/models", {
|
|
435
|
+
headers: key ? { Authorization: `Bearer ${key}` } : {},
|
|
436
|
+
});
|
|
437
|
+
if (!r.ok)
|
|
438
|
+
return res.status(502).json({ error: `OpenRouter /models fetch failed (${r.status})` });
|
|
439
|
+
const j = await r.json();
|
|
440
|
+
let models = (Array.isArray(j?.data) ? j.data : []).map(slimOpenRouterModel);
|
|
441
|
+
const q = String(req.query.q ?? "").trim().toLowerCase();
|
|
442
|
+
if (q)
|
|
443
|
+
models = models.filter((m) => m.id.toLowerCase().includes(q) || m.name.toLowerCase().includes(q));
|
|
444
|
+
res.json({ source: "openrouter:/api/v1/models", count: models.length, models });
|
|
445
|
+
}
|
|
446
|
+
catch (e) {
|
|
447
|
+
res.status(502).json({ error: `models fetch failed: ${String(e?.message ?? e).slice(0, 200)}` });
|
|
448
|
+
}
|
|
449
|
+
});
|
|
450
|
+
// ─── GET /api/settings/passes — per-pass model routing + smartness hint ─────
|
|
451
|
+
// For the web-UI "advanced models" panel: each v2 engine stage, its override env
|
|
452
|
+
// knob, the resolved (effective) model, and a TIER hint ("wants a strong model" /
|
|
453
|
+
// "a cheap model is fine" / "moderate") so the user knows where to spend on a
|
|
454
|
+
// smarter model. Read-only → general auth gate (not ADMIN_PATHS).
|
|
455
|
+
router.get("/api/settings/passes", (_req, res) => {
|
|
456
|
+
res.json(buildPassRouting());
|
|
457
|
+
});
|
|
458
|
+
// ─── Admin: backup DB ─────────────────────────────────────────────────────
|
|
459
|
+
// Shares performBackup with the scheduled timer (store/backup.ts) — consistent
|
|
460
|
+
// (checkpoint-then-copy) + encryption-preserving. 1h throttle on the manual path.
|
|
461
|
+
router.post("/api/admin/backup", (_req, res) => {
|
|
462
|
+
try {
|
|
463
|
+
res.json(performBackup(db, { throttleMs: 60 * 60 * 1000, keep: 5 }));
|
|
464
|
+
}
|
|
465
|
+
catch (e) {
|
|
466
|
+
res.status(500).json({ error: String(e) });
|
|
467
|
+
}
|
|
468
|
+
});
|
|
469
|
+
return router;
|
|
470
|
+
}
|
|
471
|
+
//# sourceMappingURL=admin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin.js","sourceRoot":"","sources":["../../src/routes/admin.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,yDAAyD;AAEzD,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEjC,OAAO,EAAmB,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC9E,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAEpG,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AACxE,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,2CAA2C,CAAC;AAC/E,OAAO,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AACzE,OAAO,EAAE,mBAAmB,EAAE,MAAM,gDAAgD,CAAC;AAErF,iFAAiF;AACjF,mFAAmF;AACnF,sFAAsF;AACtF,4CAA4C;AAE5C,SAAS,gBAAgB,CAAC,QAAgB,EAAE,OAA+B;IACzE,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACnC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAElC,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;QAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC;QACrD,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAChC,IAAI,EAAE,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC;QACxB,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACxC,IAAI,GAAG,IAAI,OAAO,EAAE,CAAC;YACnB,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACjB,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;YACzB,6DAA6D;YAC7D,IAAI,GAAG,KAAK,EAAE;gBAAE,OAAO,KAAK,GAAG,GAAG,CAAC;YACnC,OAAO,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC;QACzB,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;IAEH,8CAA8C;IAC9C,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACjD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,GAAG,KAAK,EAAE,EAAE,CAAC;YACpC,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3B,CAAC;AAED,SAAS,OAAO,CAAC,GAAW;IAC1B,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;IACvD,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAC/C,CAAC;AAED;;;;;oFAKoF;AACpF,uFAAuF;AACvF,MAAM,UAAU,kBAAkB,CAAC,GAAY;IAC7C,IAAI,CAAC;QAAC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC;QAAC,OAAO,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAAC,CAAC;IAC3G,MAAM,CAAC;QAAC,OAAO,EAAE,CAAC;IAAC,CAAC;AACtB,CAAC;AAQD;;;;iFAIiF;AACjF,MAAM,UAAU,gBAAgB;IAG9B,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,EAAE,CAAC;IACrF,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,uBAAuB,IAAI,EAAE,CAAC;IAC5D,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,wBAAwB,IAAI,EAAE,CAAC;IAC9D,MAAM,OAAO,GAAG,CAAC,CAAY,EAAE,EAAE,CAC/B,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,KAAK,YAAY,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,UAAU,CAAC;IACrG,MAAM,IAAI,GAA4F;QACpG,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,EAAE,0BAA0B,EAAE,IAAI,EAAE,OAAO,EAAO,IAAI,EAAE,mEAAmE,EAAE,SAAS,EAAE,EAAE,EAAE;QACtK,EAAE,KAAK,EAAE,UAAU,EAAI,GAAG,EAAE,qBAAqB,EAAO,IAAI,EAAE,OAAO,EAAO,IAAI,EAAE,kCAAkC,EAAkC,SAAS,EAAE,SAAS,EAAE;QAC5K,EAAE,KAAK,EAAE,MAAM,EAAQ,GAAG,EAAE,sBAAsB,EAAM,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,gCAAgC,EAAoC,SAAS,EAAE,UAAU,EAAE;QAC7K,EAAE,KAAK,EAAE,OAAO,EAAO,GAAG,EAAE,qBAAqB,EAAO,IAAI,EAAE,OAAO,EAAO,IAAI,EAAE,4CAA4C,EAAwB,SAAS,EAAE,SAAS,EAAE;QAC5K,EAAE,KAAK,EAAE,SAAS,EAAK,GAAG,EAAE,qBAAqB,EAAO,IAAI,EAAE,OAAO,EAAO,IAAI,EAAE,qBAAqB,EAA+C,SAAS,EAAE,SAAS,EAAE;QAC5K,EAAE,KAAK,EAAE,OAAO,EAAO,GAAG,EAAE,qBAAqB,EAAO,IAAI,EAAE,OAAO,EAAO,IAAI,EAAE,yBAAyB,EAA2C,SAAS,EAAE,EAAE,EAAE;KACtK,CAAC;IACF,OAAO;QACL,aAAa,EAAE,YAAY,EAAE,cAAc,EAAE,SAAS,EAAE,eAAe,EAAE,UAAU;QACnF,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YACrB,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;YAC1C,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,IAAI,CAAC,CAAC,SAAS,IAAI,YAAY,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;QACzJ,CAAC,CAAC;KACH,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,CAAM;IAMxC,MAAM,EAAE,GAAG,CAAC,EAAE,YAAY,IAAI,EAAE,CAAC;IACjC,MAAM,EAAE,GAAa,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1F,OAAO;QACL,EAAE,EAAE,MAAM,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC;QACvB,IAAI,EAAE,MAAM,CAAC,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC;QACpC,cAAc,EAAE,CAAC,EAAE,cAAc,IAAI,EAAE,EAAE,cAAc,IAAI,IAAI;QAC/D,qBAAqB,EAAE,EAAE,EAAE,qBAAqB,IAAI,IAAI;QACxD,OAAO,EAAE,CAAC,EAAE,OAAO;YACjB,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,IAAI,EAAE,CAAC,EAAE;YAC5F,CAAC,CAAC,IAAI;QACR,mBAAmB,EAAE,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;QACxF,cAAc,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC;QACpC,QAAQ,EAAE,CAAC,EAAE,YAAY,EAAE,QAAQ,IAAI,IAAI;KAC5C,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,EAAe,EACf,eAAoD,EACpD,UAA4B;IAE5B,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC;IAExB,8EAA8E;IAC9E,MAAM,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;QACtC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,eAAe,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE;YACpE,MAAM,SAAS,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;YACzE,MAAM,SAAS,GAAG,GAAG,CAAC,WAAW,GAAG,GAAG,CAAC;YACxC,MAAM,OAAO,GAAG,SAAS,KAAK,IAAI,IAAI,CAAC,GAAG,GAAG,SAAS,CAAC,GAAG,SAAS,CAAC;YACpE,MAAM,MAAM,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;YACvG,OAAO,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;QAC1C,CAAC,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO;YAC5D,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,UAAU;gBACrD,CAAC,CAAC,IAAI,CAAC;QACT,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;IACrE,CAAC,CAAC,CAAC;IAEH,6EAA6E;IAC7E,KAAK,UAAU,kBAAkB,CAAC,IAAS,EAAE,GAAQ;QACnD,MAAM,QAAQ,GAAG,cAAc,EAAE,CAAC;QAClC,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,EAAE,CAAC;YAC5B,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,uCAAuC,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;QAClH,CAAC;QACD,IAAI,CAAC;YACH,MAAM,EAAE,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACjC,IAAI,EAAE;gBAAE,OAAO,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YACpE,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC,CAAC;QACjG,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YAChB,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;QAC7E,CAAC;IACH,CAAC;IACD,MAAM,CAAC,GAAG,CAAC,oBAAoB,EAAE,kBAAkB,CAAC,CAAC;IACrD,MAAM,CAAC,GAAG,CAAC,kBAAkB,EAAI,kBAAkB,CAAC,CAAC,CAAC,eAAe;IAErE,4EAA4E;IAC5E,qFAAqF;IACrF,MAAM,CAAC,GAAG,CAAC,6BAA6B,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE;QAC5D,MAAM,QAAQ,GAAG,cAAc,EAAE,CAAC;QAClC,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,EAAE,CAAC;YAC5B,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,uCAAuC,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;QAClH,CAAC;QACD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG;gBACb,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE;gBACvC,QAAQ,EAAE,CAAC,IAAI,CAAC;aACjB,CAAC;YACF,MAAM,CAAC,GAAG,MAAO,QAAgB,CAAC,kBAAkB,CAClD,4BAA4B,EAC5B,MAAM,EACN,MAAM,EACN,EAAE,cAAc,EAAE,CAAC,EAAE,eAAe,EAAE,EAAE,EAAE,CAC3C,CAAC;YACF,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,KAAK,IAAI;gBAAE,OAAO,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YACxF,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,wBAAwB,EAAE,CAAC,CAAC;QAC5G,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YAChB,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;QAC7E,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,6EAA6E;IAC7E,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;QACrC,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC;YAC5B,MAAM,SAAS,GAAG,EAAE,CAAC,YAAY,EAAE,CAAC;YACpC,MAAM,cAAc,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC;YACnE,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,SAAS,EAAE,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;QACvF,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,2EAA2E;IAC3E,gFAAgF;IAChF,mEAAmE;IACnE,MAAM,CAAC,GAAG,CAAC,yBAAyB,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;QAClD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,EAAE,CAAC,cAAc,EAAE,CAAC;YACnC,GAAG,CAAC,IAAI,CAAC;gBACP,QAAQ,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,QAAQ,EAAE;gBACpE,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC;aACpC,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;IAEH,gFAAgF;IAChF,kFAAkF;IAClF,+EAA+E;IAC/E,uDAAuD;IACvD,MAAM,CAAC,IAAI,CAAC,6BAA6B,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QACtD,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,CAAE,GAAG,CAAC,IAAY,EAAE,KAAK,CAAC,CAAC;YAClD,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;YAC/E,MAAM,KAAK,GAAI,GAAG,CAAC,IAAY,EAAE,KAAK,KAAK,KAAK,CAAC;YACjD,MAAM,SAAS,GAAI,GAAG,CAAC,IAAY,EAAE,SAAS,KAAK,KAAK,CAAC,CAAC,4CAA4C;YACtG,MAAM,MAAM,GAAG,kBAAkB,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;YACnE,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACnB,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;IAEH,+EAA+E;IAC/E,8EAA8E;IAC9E,kFAAkF;IAClF,mFAAmF;IACnF,qDAAqD;IACrD,MAAM,CAAC,IAAI,CAAC,gCAAgC,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;QAC1D,IAAI,CAAC;YACH,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC,CAAC;QAClC,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;IAEH,+EAA+E;IAC/E,iFAAiF;IACjF,8EAA8E;IAC9E,iFAAiF;IACjF,6EAA6E;IAC7E,oFAAoF;IACpF,MAAM,CAAC,IAAI,CAAC,kCAAkC,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;QAC5D,IAAI,CAAC;YACH,GAAG,CAAC,IAAI,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC,CAAC;QACpC,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;IAEH,6EAA6E;IAC7E,4EAA4E;IAC5E,8EAA8E;IAC9E,kFAAkF;IAClF,0EAA0E;IAC1E,sBAAsB;IACtB,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE;QACxD,IAAI,CAAC,UAAU,EAAE,WAAW,EAAE,EAAE,CAAC;YAC/B,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,gCAAgC,EAAE,CAAC,CAAC;QAC3E,CAAC;QACD,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,EAAE,CAAC,YAAY,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC;YAEzE,IAAI,UAAU,GAAG,CAAC,CAAC;YACnB,IAAI,MAAM,GAAG,CAAC,CAAC;YAEf,KAAK,MAAM,KAAK,IAAI,SAAS,EAAE,CAAC;gBAC9B,IAAI,CAAC;oBACH,MAAM,GAAG,GAAG,MAAM,UAAW,CAAC,KAAK,CACjC,kBAAkB,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CACzE,CAAC;oBACF,IAAI,GAAG,EAAE,CAAC;wBACR,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;wBAClC,UAAU,EAAE,CAAC;oBACf,CAAC;gBACH,CAAC;gBAAC,MAAM,CAAC;oBACP,MAAM,EAAE,CAAC;gBACX,CAAC;YACH,CAAC;YAED,GAAG,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC;QACnC,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;IAEH,6EAA6E;IAC7E,MAAM,CAAC,GAAG,CAAC,mBAAmB,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;QAC5C,MAAM,OAAO,GAAG,qBAAqB,EAAE,CAAC;QACxC,MAAM,SAAS,GAAK,OAAO,CAAC,GAAG,CAAC,cAAc,IAAM,EAAE,CAAC;QACvD,MAAM,SAAS,GAAK,OAAO,CAAC,GAAG,CAAC,cAAc,IAAM,EAAE,CAAC;QACvD,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,EAAE,CAAC;QACzD,MAAM,UAAU,GAAI,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,EAAE,CAAC;QAE1D,GAAG,CAAC,IAAI,CAAC;YACP,QAAQ,EAAa,OAAO,CAAC,GAAG,CAAC,WAAW,IAAa,QAAQ;YACjE,KAAK,EAAgB,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAgB,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,EAAE;YAChG,cAAc,EAAO,OAAO,CAAC,GAAG,CAAC,sBAAsB,IAAI,EAAE;YAC7D,WAAW,EAAU,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAK,EAAE;YAC3D,cAAc,EAAO,SAAS,CAAC,MAAM,GAAG,CAAC;YACzC,kBAAkB,EAAG,OAAO,CAAC,SAAS,CAAC;YACvC,cAAc,EAAO,SAAS,CAAC,MAAM,GAAG,CAAC;YACzC,kBAAkB,EAAG,OAAO,CAAC,SAAS,CAAC;YACvC,iBAAiB,EAAI,YAAY,CAAC,MAAM,GAAG,CAAC;YAC5C,qBAAqB,EAAE,OAAO,CAAC,YAAY,CAAC;YAC5C,eAAe,EAAM,OAAO,CAAC,GAAG,CAAC,eAAe,IAAS,EAAE;YAC3D,kBAAkB,EAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAM,EAAE;YAC3D,eAAe,EAAM,OAAO,CAAC,GAAG,CAAC,uBAAuB,IAAI,EAAE;YAC9D,+EAA+E;YAC/E,wEAAwE;YACxE,oBAAoB,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;gBAAC,OAAO,oBAAoB,EAAE,CAAC,WAAW,EAAE,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC;gBAAC,OAAO,KAAK,CAAC;YAAC,CAAC,CAAC,CAAC,CAAC,EAAE;YAChH,kFAAkF;YAClF,iDAAiD;YACjD,gBAAgB,EAAK,OAAO,CAAC,GAAG,CAAC,wBAAwB,IAAI,EAAE;YAC/D,WAAW,EAAU,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAO,EAAE;YAC7D,YAAY,EAAS,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAM,EAAE;YAC7D,WAAW,EAAU,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAO,EAAE;YAC7D,WAAW,EAAU,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAO,EAAE;YAC7D,eAAe,EAAM,OAAO,CAAC,GAAG,CAAC,uBAAuB,IAAK,EAAE;YAC/D,gBAAgB,EAAK,OAAO,CAAC,GAAG,CAAC,wBAAwB,IAAI,EAAE;YAC/D,oEAAoE;YACpE,UAAU,EAAW,kBAAkB,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC;YACvE,+EAA+E;YAC/E,2CAA2C;YAC3C,cAAc,EAAO,OAAO,CAAC,GAAG,CAAC,sBAAsB,IAAM,EAAE;YAC/D,gBAAgB,EAAK,OAAO,CAAC,GAAG,CAAC,wBAAwB,IAAI,EAAE;YAC/D,yBAAyB;YACzB,eAAe,EAAM,OAAO,CAAC,GAAG,CAAC,uBAAuB,IAAK,EAAE;YAC/D,gFAAgF;YAChF,4EAA4E;YAC5E,qFAAqF;YACrF,cAAc,EAAO,OAAO,CAAC,GAAG,CAAC,sBAAsB,IAAM,EAAE;YAC/D,gBAAgB,EAAK,OAAO,CAAC,GAAG,CAAC,wBAAwB,IAAI,EAAE;YAC/D,eAAe,EAAM,OAAO,CAAC,GAAG,CAAC,uBAAuB,IAAI,MAAM;YAClE,oBAAoB,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,4BAA4B,IAAI,KAAK,CAAC,CAAC,WAAW,EAAE,KAAK,IAAI;YAChG,aAAa,EAAQ,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,IAAI;YAC9D,YAAY,EAAS,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,KAAK,CAAC,CAAC,WAAW,EAAE,KAAK,IAAI;YACvF,eAAe,EAAM,UAAU,CAAC,MAAM,GAAG,CAAC;YAC1C,aAAa,EAAQ,OAAO;YAC5B,cAAc,EAAO,UAAU,CAAC,OAAO,CAAC;SACzC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,6EAA6E;IAC7E,MAAM,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QAC5C,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;QAE5B,iEAAiE;QACjE,MAAM,UAAU,GAA2B,EAAE,CAAC;QAE9C,IAAI,IAAI,CAAC,QAAQ,KAAc,SAAS;YAAE,UAAU,CAAC,aAAa,CAAC,GAAoB,IAAI,CAAC,QAAQ,CAAC;QACrG,IAAI,IAAI,CAAC,KAAK,KAAiB,SAAS;YAAE,UAAU,CAAC,UAAU,CAAC,GAAuB,IAAI,CAAC,KAAK,CAAC;QAClG,IAAI,IAAI,CAAC,cAAc,KAAQ,SAAS;YAAE,UAAU,CAAC,wBAAwB,CAAC,GAAU,IAAI,CAAC,cAAc,CAAC;QAC5G,IAAI,IAAI,CAAC,WAAW,KAAW,SAAS;YAAE,UAAU,CAAC,qBAAqB,CAAC,GAAa,IAAI,CAAC,WAAW,CAAC;QACzG,IAAI,IAAI,CAAC,UAAU,KAAY,SAAS;YAAE,UAAU,CAAC,gBAAgB,CAAC,GAAiB,IAAI,CAAC,UAAU,CAAC;QACvG,IAAI,IAAI,CAAC,UAAU,KAAY,SAAS;YAAE,UAAU,CAAC,gBAAgB,CAAC,GAAiB,IAAI,CAAC,UAAU,CAAC;QACvG,IAAI,IAAI,CAAC,aAAa,KAAS,SAAS;YAAE,UAAU,CAAC,mBAAmB,CAAC,GAAc,IAAI,CAAC,aAAa,CAAC;QAC1G,IAAI,IAAI,CAAC,eAAe,KAAO,SAAS;YAAE,UAAU,CAAC,iBAAiB,CAAC,GAAgB,IAAI,CAAC,eAAe,CAAC;QAC5G,IAAI,IAAI,CAAC,kBAAkB,KAAK,SAAS;YAAE,UAAU,CAAC,oBAAoB,CAAC,GAAY,IAAI,CAAC,kBAAkB,CAAC;QAC/G,IAAI,IAAI,CAAC,eAAe,KAAO,SAAS;YAAE,UAAU,CAAC,yBAAyB,CAAC,GAAO,IAAI,CAAC,eAAe,CAAC;QAC3G,iFAAiF;QACjF,gEAAgE;QAChE,IAAI,IAAI,CAAC,gBAAgB,KAAM,SAAS;YAAE,UAAU,CAAC,0BAA0B,CAAC,GAAM,IAAI,CAAC,gBAAgB,CAAC;QAC5G,IAAI,IAAI,CAAC,WAAW,KAAW,SAAS;YAAE,UAAU,CAAC,qBAAqB,CAAC,GAAW,IAAI,CAAC,WAAW,CAAC;QACvG,IAAI,IAAI,CAAC,YAAY,KAAU,SAAS;YAAE,UAAU,CAAC,sBAAsB,CAAC,GAAU,IAAI,CAAC,YAAY,CAAC;QACxG,IAAI,IAAI,CAAC,WAAW,KAAW,SAAS;YAAE,UAAU,CAAC,qBAAqB,CAAC,GAAW,IAAI,CAAC,WAAW,CAAC;QACvG,IAAI,IAAI,CAAC,WAAW,KAAW,SAAS;YAAE,UAAU,CAAC,qBAAqB,CAAC,GAAW,IAAI,CAAC,WAAW,CAAC;QACvG,IAAI,IAAI,CAAC,eAAe,KAAO,SAAS;YAAE,UAAU,CAAC,yBAAyB,CAAC,GAAO,IAAI,CAAC,eAAe,CAAC;QAC3G,IAAI,IAAI,CAAC,gBAAgB,KAAM,SAAS;YAAE,UAAU,CAAC,0BAA0B,CAAC,GAAM,IAAI,CAAC,gBAAgB,CAAC;QAC5G,8EAA8E;QAC9E,IAAI,IAAI,CAAC,UAAU,KAAY,SAAS;YAAE,UAAU,CAAC,oBAAoB,CAAC,GAAY,OAAO,IAAI,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC9K,gEAAgE;QAChE,IAAI,IAAI,CAAC,cAAc,KAAQ,SAAS;YAAE,UAAU,CAAC,wBAAwB,CAAC,GAAQ,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAClH,IAAI,IAAI,CAAC,gBAAgB,KAAM,SAAS;YAAE,UAAU,CAAC,0BAA0B,CAAC,GAAM,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACpH,IAAI,IAAI,CAAC,eAAe,KAAO,SAAS;YAAE,UAAU,CAAC,yBAAyB,CAAC,GAAO,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QACnH,IAAI,IAAI,CAAC,cAAc,KAAQ,SAAS;YAAE,UAAU,CAAC,wBAAwB,CAAC,GAAQ,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAClH,IAAI,IAAI,CAAC,gBAAgB,KAAM,SAAS;YAAE,UAAU,CAAC,0BAA0B,CAAC,GAAM,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACpH,IAAI,IAAI,CAAC,eAAe,KAAO,SAAS;YAAE,UAAU,CAAC,yBAAyB,CAAC,GAAQ,IAAI,CAAC,eAAe,CAAC;QAC5G,IAAI,IAAI,CAAC,oBAAoB,KAAK,SAAS;YAAE,UAAU,CAAC,8BAA8B,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;QACnI,IAAI,IAAI,CAAC,aAAa,KAAS,SAAS;YAAE,UAAU,CAAC,uBAAuB,CAAC,GAAU,IAAI,CAAC,aAAa,CAAC;QAC1G,IAAI,IAAI,CAAC,YAAY,KAAU,SAAS;YAAE,UAAU,CAAC,sBAAsB,CAAC,GAAW,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;QACxH,IAAI,IAAI,CAAC,WAAW,KAAW,SAAS;YAAE,UAAU,CAAC,qBAAqB,CAAC,GAAY,IAAI,CAAC,WAAW,CAAC;QAExG,kEAAkE;QAClE,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;YAChD,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC;gBACb,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACxB,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YACrB,CAAC;QACH,CAAC;QAED,gFAAgF;QAChF,MAAM,eAAe,GAAG,CAAC,aAAa,EAAE,gBAAgB,EAAE,gBAAgB;YACxE,mBAAmB,EAAE,iBAAiB,EAAE,oBAAoB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC;QAC3F,IAAI,eAAe;YAAE,cAAc,EAAE,CAAC;QAEtC,yEAAyE;QACzE,iFAAiF;QACjF,oFAAoF;QACpF,MAAM,OAAO,GAAG,qBAAqB,EAAE,CAAC;QACxC,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;YACpC,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9D,MAAM,OAAO,GAAG,gBAAgB,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;YACvD,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACjD,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;YACxC,OAAO,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,CAAC,CAAC;QACxG,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,mBAAmB,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACrF,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,+EAA+E;IAC/E,8EAA8E;IAC9E,iFAAiF;IACjF,+EAA+E;IAC/E,qFAAqF;IACrF,gFAAgF;IAChF,wCAAwC;IACxC,MAAM,CAAC,GAAG,CAAC,aAAa,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QAC3C,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,EAAE,CAAC;QAC/E,IAAI,CAAC;YACH,MAAM,CAAC,GAAG,MAAM,KAAK,CAAC,qCAAqC,EAAE;gBAC3D,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,UAAU,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE;aACvD,CAAC,CAAC;YACH,IAAI,CAAC,CAAC,CAAC,EAAE;gBAAE,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,oCAAoC,CAAC,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;YACnG,MAAM,CAAC,GAAQ,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;YAC9B,IAAI,MAAM,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;YAC7E,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;YACzD,IAAI,CAAC;gBAAE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9G,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,2BAA2B,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QAClF,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YAChB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,wBAAwB,MAAM,CAAC,CAAC,EAAE,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;QACnG,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,+EAA+E;IAC/E,iFAAiF;IACjF,kFAAkF;IAClF,8EAA8E;IAC9E,kEAAkE;IAClE,MAAM,CAAC,GAAG,CAAC,sBAAsB,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;QAC/C,GAAG,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;IAC/B,CAAC,CAAC,CAAC;IAEH,6EAA6E;IAC7E,+EAA+E;IAC/E,kFAAkF;IAClF,MAAM,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;QAC7C,IAAI,CAAC;YACH,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACvE,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"blocks.d.ts","sourceRoot":"","sources":["../../src/routes/blocks.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAKnD,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,WAAW,GAAG,MAAM,CA0pB1D"}
|