agent-nuvira 3.3.13 → 3.3.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +67 -1
- package/dist/agents/agents/planner.d.ts.map +1 -1
- package/dist/agents/agents/planner.js +9 -0
- package/dist/agents/agents/planner.js.map +1 -1
- package/dist/agents/orchestrator.d.ts +31 -0
- package/dist/agents/orchestrator.d.ts.map +1 -1
- package/dist/agents/orchestrator.js +74 -126
- package/dist/agents/orchestrator.js.map +1 -1
- package/dist/cli/chat.d.ts +89 -0
- package/dist/cli/chat.d.ts.map +1 -1
- package/dist/cli/chat.js +765 -33
- package/dist/cli/chat.js.map +1 -1
- package/dist/cli/cli-program.d.ts.map +1 -1
- package/dist/cli/cli-program.js +12 -0
- package/dist/cli/cli-program.js.map +1 -1
- package/dist/cli/config.d.ts +12 -0
- package/dist/cli/config.d.ts.map +1 -1
- package/dist/cli/config.js +86 -0
- package/dist/cli/config.js.map +1 -1
- package/dist/cli/decisions.d.ts +28 -0
- package/dist/cli/decisions.d.ts.map +1 -0
- package/dist/cli/decisions.js +140 -0
- package/dist/cli/decisions.js.map +1 -0
- package/dist/cli/doctor.d.ts +6 -0
- package/dist/cli/doctor.d.ts.map +1 -1
- package/dist/cli/doctor.js +46 -0
- package/dist/cli/doctor.js.map +1 -1
- package/dist/cli/failover-runner.d.ts.map +1 -1
- package/dist/cli/failover-runner.js +19 -1
- package/dist/cli/failover-runner.js.map +1 -1
- package/dist/cli/feedback.d.ts.map +1 -1
- package/dist/cli/feedback.js +5 -1
- package/dist/cli/feedback.js.map +1 -1
- package/dist/cli/hooks.d.ts +30 -0
- package/dist/cli/hooks.d.ts.map +1 -0
- package/dist/cli/hooks.js +224 -0
- package/dist/cli/hooks.js.map +1 -0
- package/dist/cli/knowledge.d.ts +9 -1
- package/dist/cli/knowledge.d.ts.map +1 -1
- package/dist/cli/knowledge.js +93 -2
- package/dist/cli/knowledge.js.map +1 -1
- package/dist/cli/loop-executor.d.ts.map +1 -1
- package/dist/cli/loop-executor.js +47 -12
- package/dist/cli/loop-executor.js.map +1 -1
- package/dist/cli/model.d.ts +20 -0
- package/dist/cli/model.d.ts.map +1 -1
- package/dist/cli/model.js +294 -14
- package/dist/cli/model.js.map +1 -1
- package/dist/cli/rate.d.ts +78 -0
- package/dist/cli/rate.d.ts.map +1 -0
- package/dist/cli/rate.js +294 -0
- package/dist/cli/rate.js.map +1 -0
- package/dist/config/process-env.d.ts.map +1 -1
- package/dist/config/process-env.js +10 -0
- package/dist/config/process-env.js.map +1 -1
- package/dist/enterprise/vault.d.ts.map +1 -1
- package/dist/enterprise/vault.js +5 -21
- package/dist/enterprise/vault.js.map +1 -1
- package/dist/gateway/hook-contract.d.ts +33 -0
- package/dist/gateway/hook-contract.d.ts.map +1 -1
- package/dist/gateway/hook-contract.js +97 -0
- package/dist/gateway/hook-contract.js.map +1 -1
- package/dist/inference/gemini-adapter.d.ts.map +1 -1
- package/dist/inference/gemini-adapter.js +4 -0
- package/dist/inference/gemini-adapter.js.map +1 -1
- package/dist/inference/interface.d.ts +37 -0
- package/dist/inference/interface.d.ts.map +1 -1
- package/dist/inference/native-tools.d.ts +16 -1
- package/dist/inference/native-tools.d.ts.map +1 -1
- package/dist/inference/native-tools.js +34 -10
- package/dist/inference/native-tools.js.map +1 -1
- package/dist/inference/route-resolver.d.ts +30 -0
- package/dist/inference/route-resolver.d.ts.map +1 -1
- package/dist/inference/route-resolver.js +158 -1
- package/dist/inference/route-resolver.js.map +1 -1
- package/dist/inference/tools.d.ts +16 -1
- package/dist/inference/tools.d.ts.map +1 -1
- package/dist/inference/tools.js +51 -18
- package/dist/inference/tools.js.map +1 -1
- package/dist/learning/acceptance-model.d.ts +247 -0
- package/dist/learning/acceptance-model.d.ts.map +1 -0
- package/dist/learning/acceptance-model.js +708 -0
- package/dist/learning/acceptance-model.js.map +1 -0
- package/dist/learning/auto-router.d.ts +68 -24
- package/dist/learning/auto-router.d.ts.map +1 -1
- package/dist/learning/auto-router.js +301 -96
- package/dist/learning/auto-router.js.map +1 -1
- package/dist/learning/autonomy-policy.d.ts +12 -16
- package/dist/learning/autonomy-policy.d.ts.map +1 -1
- package/dist/learning/autonomy-policy.js +50 -48
- package/dist/learning/autonomy-policy.js.map +1 -1
- package/dist/learning/behavioural-labels.d.ts +86 -0
- package/dist/learning/behavioural-labels.d.ts.map +1 -0
- package/dist/learning/behavioural-labels.js +166 -0
- package/dist/learning/behavioural-labels.js.map +1 -0
- package/dist/learning/capability-evidence.d.ts +167 -0
- package/dist/learning/capability-evidence.d.ts.map +1 -0
- package/dist/learning/capability-evidence.js +210 -0
- package/dist/learning/capability-evidence.js.map +1 -0
- package/dist/learning/capability-readiness.d.ts +64 -0
- package/dist/learning/capability-readiness.d.ts.map +1 -0
- package/dist/learning/capability-readiness.js +74 -0
- package/dist/learning/capability-readiness.js.map +1 -0
- package/dist/learning/capability-types.d.ts +169 -0
- package/dist/learning/capability-types.d.ts.map +1 -0
- package/dist/learning/capability-types.js +20 -0
- package/dist/learning/capability-types.js.map +1 -0
- package/dist/learning/catalog-feed.d.ts +89 -0
- package/dist/learning/catalog-feed.d.ts.map +1 -0
- package/dist/learning/catalog-feed.js +211 -0
- package/dist/learning/catalog-feed.js.map +1 -0
- package/dist/learning/cli-intent-effects.d.ts +60 -0
- package/dist/learning/cli-intent-effects.d.ts.map +1 -0
- package/dist/learning/cli-intent-effects.js +153 -0
- package/dist/learning/cli-intent-effects.js.map +1 -0
- package/dist/learning/command-adaptation.d.ts +41 -0
- package/dist/learning/command-adaptation.d.ts.map +1 -0
- package/dist/learning/command-adaptation.js +122 -0
- package/dist/learning/command-adaptation.js.map +1 -0
- package/dist/learning/consent-picture.d.ts +42 -0
- package/dist/learning/consent-picture.d.ts.map +1 -0
- package/dist/learning/consent-picture.js +53 -0
- package/dist/learning/consent-picture.js.map +1 -0
- package/dist/learning/context-budget.d.ts +37 -6
- package/dist/learning/context-budget.d.ts.map +1 -1
- package/dist/learning/context-budget.js +38 -9
- package/dist/learning/context-budget.js.map +1 -1
- package/dist/learning/decision-log.d.ts +114 -0
- package/dist/learning/decision-log.d.ts.map +1 -0
- package/dist/learning/decision-log.js +296 -0
- package/dist/learning/decision-log.js.map +1 -0
- package/dist/learning/deliverable-class.d.ts.map +1 -1
- package/dist/learning/deliverable-class.js +19 -0
- package/dist/learning/deliverable-class.js.map +1 -1
- package/dist/learning/deliverable-corpus.d.ts +117 -0
- package/dist/learning/deliverable-corpus.d.ts.map +1 -0
- package/dist/learning/deliverable-corpus.js +176 -0
- package/dist/learning/deliverable-corpus.js.map +1 -0
- package/dist/learning/error-repair.d.ts +22 -1
- package/dist/learning/error-repair.d.ts.map +1 -1
- package/dist/learning/error-repair.js +37 -0
- package/dist/learning/error-repair.js.map +1 -1
- package/dist/learning/exhaustion-report.d.ts +136 -0
- package/dist/learning/exhaustion-report.d.ts.map +1 -0
- package/dist/learning/exhaustion-report.js +239 -0
- package/dist/learning/exhaustion-report.js.map +1 -0
- package/dist/learning/failure-bookkeeping.d.ts +16 -0
- package/dist/learning/failure-bookkeeping.d.ts.map +1 -1
- package/dist/learning/failure-bookkeeping.js +51 -5
- package/dist/learning/failure-bookkeeping.js.map +1 -1
- package/dist/learning/gate-friction.d.ts +39 -0
- package/dist/learning/gate-friction.d.ts.map +1 -0
- package/dist/learning/gate-friction.js +91 -0
- package/dist/learning/gate-friction.js.map +1 -0
- package/dist/learning/harness-narration.d.ts +34 -0
- package/dist/learning/harness-narration.d.ts.map +1 -0
- package/dist/learning/harness-narration.js +58 -0
- package/dist/learning/harness-narration.js.map +1 -0
- package/dist/learning/hub-skill-catalog.d.ts.map +1 -1
- package/dist/learning/hub-skill-catalog.js +1 -2
- package/dist/learning/hub-skill-catalog.js.map +1 -1
- package/dist/learning/hybrid-router.d.ts +65 -0
- package/dist/learning/hybrid-router.d.ts.map +1 -1
- package/dist/learning/hybrid-router.js +186 -0
- package/dist/learning/hybrid-router.js.map +1 -1
- package/dist/learning/knowledge-base.d.ts +229 -3
- package/dist/learning/knowledge-base.d.ts.map +1 -1
- package/dist/learning/knowledge-base.js +593 -24
- package/dist/learning/knowledge-base.js.map +1 -1
- package/dist/learning/knowledge-eval.d.ts +171 -0
- package/dist/learning/knowledge-eval.d.ts.map +1 -0
- package/dist/learning/knowledge-eval.js +196 -0
- package/dist/learning/knowledge-eval.js.map +1 -0
- package/dist/learning/knowledge-turn.d.ts +92 -0
- package/dist/learning/knowledge-turn.d.ts.map +1 -0
- package/dist/learning/knowledge-turn.js +190 -0
- package/dist/learning/knowledge-turn.js.map +1 -0
- package/dist/learning/learned-commands.d.ts +64 -0
- package/dist/learning/learned-commands.d.ts.map +1 -0
- package/dist/learning/learned-commands.js +108 -0
- package/dist/learning/learned-commands.js.map +1 -0
- package/dist/learning/lexical-search.d.ts +50 -0
- package/dist/learning/lexical-search.d.ts.map +1 -0
- package/dist/learning/lexical-search.js +111 -0
- package/dist/learning/lexical-search.js.map +1 -0
- package/dist/learning/machine-facts.d.ts +71 -0
- package/dist/learning/machine-facts.d.ts.map +1 -0
- package/dist/learning/machine-facts.js +164 -0
- package/dist/learning/machine-facts.js.map +1 -0
- package/dist/learning/markdown-outline.d.ts +73 -0
- package/dist/learning/markdown-outline.d.ts.map +1 -0
- package/dist/learning/markdown-outline.js +136 -0
- package/dist/learning/markdown-outline.js.map +1 -0
- package/dist/learning/model-first-router.d.ts +33 -1
- package/dist/learning/model-first-router.d.ts.map +1 -1
- package/dist/learning/model-first-router.js +123 -9
- package/dist/learning/model-first-router.js.map +1 -1
- package/dist/learning/model-identity.d.ts +80 -0
- package/dist/learning/model-identity.d.ts.map +1 -0
- package/dist/learning/model-identity.js +115 -0
- package/dist/learning/model-identity.js.map +1 -0
- package/dist/learning/model-registry.d.ts +141 -2
- package/dist/learning/model-registry.d.ts.map +1 -1
- package/dist/learning/model-registry.js +324 -38
- package/dist/learning/model-registry.js.map +1 -1
- package/dist/learning/model-scoring.d.ts.map +1 -1
- package/dist/learning/model-scoring.js +8 -1
- package/dist/learning/model-scoring.js.map +1 -1
- package/dist/learning/model-selection.d.ts.map +1 -1
- package/dist/learning/model-selection.js +41 -0
- package/dist/learning/model-selection.js.map +1 -1
- package/dist/learning/outcome-observation.d.ts +49 -0
- package/dist/learning/outcome-observation.d.ts.map +1 -0
- package/dist/learning/outcome-observation.js +95 -0
- package/dist/learning/outcome-observation.js.map +1 -0
- package/dist/learning/pair-entitlement.d.ts +184 -0
- package/dist/learning/pair-entitlement.d.ts.map +1 -0
- package/dist/learning/pair-entitlement.js +214 -0
- package/dist/learning/pair-entitlement.js.map +1 -0
- package/dist/learning/provider-fallback.d.ts +23 -1
- package/dist/learning/provider-fallback.d.ts.map +1 -1
- package/dist/learning/provider-fallback.js +24 -0
- package/dist/learning/provider-fallback.js.map +1 -1
- package/dist/learning/reasoning-trace.d.ts +65 -1
- package/dist/learning/reasoning-trace.d.ts.map +1 -1
- package/dist/learning/reasoning-trace.js +123 -1
- package/dist/learning/reasoning-trace.js.map +1 -1
- package/dist/learning/requirement-probe.d.ts +55 -0
- package/dist/learning/requirement-probe.d.ts.map +1 -0
- package/dist/learning/requirement-probe.js +77 -0
- package/dist/learning/requirement-probe.js.map +1 -0
- package/dist/learning/resilient-call.d.ts +20 -1
- package/dist/learning/resilient-call.d.ts.map +1 -1
- package/dist/learning/resilient-call.js +42 -4
- package/dist/learning/resilient-call.js.map +1 -1
- package/dist/learning/response-usability.d.ts +85 -0
- package/dist/learning/response-usability.d.ts.map +1 -0
- package/dist/learning/response-usability.js +135 -0
- package/dist/learning/response-usability.js.map +1 -0
- package/dist/learning/router-bandit.d.ts +132 -0
- package/dist/learning/router-bandit.d.ts.map +1 -1
- package/dist/learning/router-bandit.js +253 -0
- package/dist/learning/router-bandit.js.map +1 -1
- package/dist/learning/routing-history.d.ts +41 -2
- package/dist/learning/routing-history.d.ts.map +1 -1
- package/dist/learning/routing-history.js.map +1 -1
- package/dist/learning/run-trace.d.ts +21 -0
- package/dist/learning/run-trace.d.ts.map +1 -1
- package/dist/learning/run-trace.js +38 -0
- package/dist/learning/run-trace.js.map +1 -1
- package/dist/learning/session-grant.d.ts +75 -0
- package/dist/learning/session-grant.d.ts.map +1 -0
- package/dist/learning/session-grant.js +112 -0
- package/dist/learning/session-grant.js.map +1 -0
- package/dist/learning/task-model-continuity.d.ts +73 -0
- package/dist/learning/task-model-continuity.d.ts.map +1 -0
- package/dist/learning/task-model-continuity.js +87 -0
- package/dist/learning/task-model-continuity.js.map +1 -0
- package/dist/learning/turn-feedback.d.ts +93 -0
- package/dist/learning/turn-feedback.d.ts.map +1 -0
- package/dist/learning/turn-feedback.js +127 -0
- package/dist/learning/turn-feedback.js.map +1 -0
- package/dist/learning/turn-report.d.ts +104 -2
- package/dist/learning/turn-report.d.ts.map +1 -1
- package/dist/learning/turn-report.js +161 -6
- package/dist/learning/turn-report.js.map +1 -1
- package/dist/learning/verdict-routing.d.ts +51 -0
- package/dist/learning/verdict-routing.d.ts.map +1 -0
- package/dist/learning/verdict-routing.js +122 -0
- package/dist/learning/verdict-routing.js.map +1 -0
- package/dist/mcp/client.d.ts.map +1 -1
- package/dist/mcp/client.js +5 -0
- package/dist/mcp/client.js.map +1 -1
- package/dist/mcp/manager.d.ts +10 -0
- package/dist/mcp/manager.d.ts.map +1 -1
- package/dist/mcp/manager.js +20 -0
- package/dist/mcp/manager.js.map +1 -1
- package/dist/mcp/mcp-discovery.d.ts +34 -0
- package/dist/mcp/mcp-discovery.d.ts.map +1 -0
- package/dist/mcp/mcp-discovery.js +71 -0
- package/dist/mcp/mcp-discovery.js.map +1 -0
- package/dist/mcp/mcp-schema-cache.d.ts +17 -0
- package/dist/mcp/mcp-schema-cache.d.ts.map +1 -1
- package/dist/mcp/mcp-schema-cache.js +47 -3
- package/dist/mcp/mcp-schema-cache.js.map +1 -1
- package/dist/mcp/types.d.ts +28 -0
- package/dist/mcp/types.d.ts.map +1 -1
- package/dist/mcp/types.js.map +1 -1
- package/dist/tools/ask-user.d.ts.map +1 -1
- package/dist/tools/ask-user.js +4 -0
- package/dist/tools/ask-user.js.map +1 -1
- package/dist/tools/capability-registry.d.ts +150 -0
- package/dist/tools/capability-registry.d.ts.map +1 -0
- package/dist/tools/capability-registry.js +400 -0
- package/dist/tools/capability-registry.js.map +1 -0
- package/dist/tools/child-agent-runtime.d.ts.map +1 -1
- package/dist/tools/child-agent-runtime.js +19 -5
- package/dist/tools/child-agent-runtime.js.map +1 -1
- package/dist/tools/coding-tools.d.ts +17 -5
- package/dist/tools/coding-tools.d.ts.map +1 -1
- package/dist/tools/coding-tools.js +80 -11
- package/dist/tools/coding-tools.js.map +1 -1
- package/dist/tools/command-memo.d.ts +116 -0
- package/dist/tools/command-memo.d.ts.map +1 -0
- package/dist/tools/command-memo.js +202 -0
- package/dist/tools/command-memo.js.map +1 -0
- package/dist/tools/git-tool.d.ts.map +1 -1
- package/dist/tools/git-tool.js +13 -3
- package/dist/tools/git-tool.js.map +1 -1
- package/dist/tools/harness-directive.d.ts +42 -0
- package/dist/tools/harness-directive.d.ts.map +1 -0
- package/dist/tools/harness-directive.js +45 -0
- package/dist/tools/harness-directive.js.map +1 -0
- package/dist/tools/loop-skill-hint.d.ts +74 -174
- package/dist/tools/loop-skill-hint.d.ts.map +1 -1
- package/dist/tools/loop-skill-hint.js +110 -536
- package/dist/tools/loop-skill-hint.js.map +1 -1
- package/dist/tools/mcp-client-tool.d.ts +2 -0
- package/dist/tools/mcp-client-tool.d.ts.map +1 -1
- package/dist/tools/mcp-client-tool.js +3 -0
- package/dist/tools/mcp-client-tool.js.map +1 -1
- package/dist/tools/modality/shared.d.ts +1 -4
- package/dist/tools/modality/shared.d.ts.map +1 -1
- package/dist/tools/modality/shared.js +7 -22
- package/dist/tools/modality/shared.js.map +1 -1
- package/dist/tools/plan-store.d.ts +20 -2
- package/dist/tools/plan-store.d.ts.map +1 -1
- package/dist/tools/plan-store.js +51 -7
- package/dist/tools/plan-store.js.map +1 -1
- package/dist/tools/registry.d.ts +76 -3
- package/dist/tools/registry.d.ts.map +1 -1
- package/dist/tools/registry.js +486 -26
- package/dist/tools/registry.js.map +1 -1
- package/dist/tools/remediation-ladder.d.ts.map +1 -1
- package/dist/tools/remediation-ladder.js +8 -0
- package/dist/tools/remediation-ladder.js.map +1 -1
- package/dist/tools/run-cli.d.ts.map +1 -1
- package/dist/tools/run-cli.js +29 -4
- package/dist/tools/run-cli.js.map +1 -1
- package/dist/tools/run-terminal.d.ts +11 -0
- package/dist/tools/run-terminal.d.ts.map +1 -1
- package/dist/tools/run-terminal.js +265 -10
- package/dist/tools/run-terminal.js.map +1 -1
- package/dist/tools/tool-loop.d.ts +321 -13
- package/dist/tools/tool-loop.d.ts.map +1 -1
- package/dist/tools/tool-loop.js +867 -66
- package/dist/tools/tool-loop.js.map +1 -1
- package/dist/utils/atomic-store.d.ts +53 -0
- package/dist/utils/atomic-store.d.ts.map +1 -0
- package/dist/utils/atomic-store.js +178 -0
- package/dist/utils/atomic-store.js.map +1 -0
- package/dist/utils/binary-probe.d.ts +25 -0
- package/dist/utils/binary-probe.d.ts.map +1 -0
- package/dist/utils/binary-probe.js +48 -0
- package/dist/utils/binary-probe.js.map +1 -0
- package/dist/utils/workspace-path.d.ts +50 -0
- package/dist/utils/workspace-path.d.ts.map +1 -0
- package/dist/utils/workspace-path.js +86 -0
- package/dist/utils/workspace-path.js.map +1 -0
- package/dist/web-dashboard/chat-console.d.ts +24 -0
- package/dist/web-dashboard/chat-console.d.ts.map +1 -1
- package/dist/web-dashboard/chat-console.js +38 -0
- package/dist/web-dashboard/chat-console.js.map +1 -1
- package/dist/web-dashboard/project-context.d.ts +27 -2
- package/dist/web-dashboard/project-context.d.ts.map +1 -1
- package/dist/web-dashboard/project-context.js +32 -2
- package/dist/web-dashboard/project-context.js.map +1 -1
- package/dist/web-dashboard/server.d.ts +11 -0
- package/dist/web-dashboard/server.d.ts.map +1 -1
- package/dist/web-dashboard/server.js +362 -11
- package/dist/web-dashboard/server.js.map +1 -1
- package/dist/web-dashboard/src/types.d.ts +170 -1
- package/dist/web-dashboard/src/types.d.ts.map +1 -1
- package/dist/web-dashboard/workspace-guard.d.ts +11 -2
- package/dist/web-dashboard/workspace-guard.d.ts.map +1 -1
- package/dist/web-dashboard/workspace-guard.js +24 -12
- package/dist/web-dashboard/workspace-guard.js.map +1 -1
- package/dist/web-dashboard/workspace-resolution.d.ts +87 -0
- package/dist/web-dashboard/workspace-resolution.d.ts.map +1 -0
- package/dist/web-dashboard/workspace-resolution.js +105 -0
- package/dist/web-dashboard/workspace-resolution.js.map +1 -0
- package/package.json +1 -1
- package/src/web-dashboard/public/assets/index-zjbdJnO-.js +210 -0
- package/src/web-dashboard/public/assets/index-zjbdJnO-.js.map +1 -0
- package/src/web-dashboard/public/index.html +1 -1
- package/src/web-dashboard/public/assets/index-DhiuR4S2.js +0 -210
- package/src/web-dashboard/public/assets/index-DhiuR4S2.js.map +0 -1
|
@@ -15,6 +15,22 @@
|
|
|
15
15
|
* vector namespace (`knowledge-<tag>`), so tags never bleed into each other and
|
|
16
16
|
* a tag can be forgotten without touching anything else.
|
|
17
17
|
*
|
|
18
|
+
* Retrieval is relevance-FLOORED (`DEFAULT_KNOWLEDGE_MIN_SIMILARITY`), because
|
|
19
|
+
* "the nearest k neighbours" is not the same claim as "k relevant passages":
|
|
20
|
+
* an unrelated question must be able to come back empty rather than receive the
|
|
21
|
+
* closest six chunks of a document it has nothing to do with.
|
|
22
|
+
*
|
|
23
|
+
* Retrieval is also HYBRID (Phase 2.2–2.4): a dense (vector) half and a lexical
|
|
24
|
+
* (BM25, see `lexical-search.ts`) half are fused with Reciprocal Rank Fusion and
|
|
25
|
+
* then capped per source document. The two halves fail on different questions —
|
|
26
|
+
* embeddings miss the exact identifier, clause number or error code a user pastes
|
|
27
|
+
* in, and BM25 misses a paraphrase with no shared words — so ranking both and
|
|
28
|
+
* fusing their RANKS (not their incomparable scores) gets both. The cosine floor
|
|
29
|
+
* still governs DENSE evidence; lexical evidence is governed by its own term
|
|
30
|
+
* overlap, which is why an unrelated question (no shared vocabulary) still comes
|
|
31
|
+
* back empty from both halves. `fusion: 'dense'` reproduces vector-only
|
|
32
|
+
* retrieval for a caller that wants it or for the eval to compare against.
|
|
33
|
+
*
|
|
18
34
|
* The retrieved chunks are USER DATA; the model supplies the generic half of an
|
|
19
35
|
* answer (and `web-research` supplies the net-based half). `formatKnowledgeContext`
|
|
20
36
|
* labels each chunk with its source file so the model can attribute precisely
|
|
@@ -34,11 +50,71 @@ export declare const KNOWLEDGE_NAMESPACE_PREFIX = "knowledge-";
|
|
|
34
50
|
export declare const KNOWLEDGE_MANIFEST_FILE = "knowledge-index.json";
|
|
35
51
|
/** Default chunks returned per query. */
|
|
36
52
|
export declare const DEFAULT_KNOWLEDGE_TOP_K = 6;
|
|
37
|
-
/**
|
|
53
|
+
/**
|
|
54
|
+
* Relevance floor for retrieval.
|
|
55
|
+
*
|
|
56
|
+
* Every backend scores in cosine similarity, where 1 means "the same direction"
|
|
57
|
+
* and 0 means "unrelated", so a hit below this is at best a weak topic touch.
|
|
58
|
+
* The floor is what makes an HONEST empty answer reachable: nearest-neighbour
|
|
59
|
+
* search always returns its k nearest neighbours, so without a floor the k-th
|
|
60
|
+
* can be a passage about something else entirely and an unrelated question still
|
|
61
|
+
* receives a confident-looking block of the wrong document. A hit below the
|
|
62
|
+
* floor is not evidence about the question, so it is dropped here rather than
|
|
63
|
+
* left to the model to notice and ignore.
|
|
64
|
+
*
|
|
65
|
+
* CALIBRATED, NOT GUESSED. Cosine similarity between a question and its own
|
|
66
|
+
* document is a property of the EMBEDDING MODEL, so this number only means
|
|
67
|
+
* anything next to the model that produced the vectors. On the eval corpus with
|
|
68
|
+
* the retrieval model (`RETRIEVAL_MODEL`, bge-small-en-v1.5), unrelated
|
|
69
|
+
* questions reach up to 0.425 and the lowest-scoring CORRECT answer sits at
|
|
70
|
+
* 0.635 (p50 0.772). 0.5 is the round value inside that
|
|
71
|
+
* measured gap with margin on both sides: above every leak probe and below every
|
|
72
|
+
* correct answer. `tests/live/knowledge-eval-live.test.ts` prints the band and
|
|
73
|
+
* FAILS if the shipped floor falls outside it, so this is re-measurable rather
|
|
74
|
+
* than folklore.
|
|
75
|
+
*
|
|
76
|
+
* IT IS TIER-SPECIFIC, and the embedder is TIERED. If the local ONNX model
|
|
77
|
+
* cannot load, `embed` falls back to a different model — Python
|
|
78
|
+
* `all-MiniLM-L6-v2`, on a different similarity scale — or to a zero vector,
|
|
79
|
+
* WITHOUT throwing. A floor calibrated for one model is simply wrong for
|
|
80
|
+
* another, and wrong in a way that looks measured. The live eval therefore proves
|
|
81
|
+
* which model actually ran (an identity probe) before it reports a band, and
|
|
82
|
+
* fails loudly if they disagree. The offline eval uses its OWN floor and says so
|
|
83
|
+
* (`KNOWLEDGE_EVAL_OFFLINE_MIN_SIMILARITY`), because a bag-of-words vectorizer is
|
|
84
|
+
* not on this model's scale at all.
|
|
85
|
+
*/
|
|
86
|
+
export declare const DEFAULT_KNOWLEDGE_MIN_SIMILARITY = 0.5;
|
|
87
|
+
/**
|
|
88
|
+
* How many chunks ONE source document may contribute to a result.
|
|
89
|
+
*
|
|
90
|
+
* Fusion alone can hand the whole top-k to whichever document the query happens
|
|
91
|
+
* to touch most, because a long document has more chances to contain a term —
|
|
92
|
+
* so a single highly-ranked file would crowd out the shorter document that
|
|
93
|
+
* actually answers the question. The cap promotes diversity of SOURCES.
|
|
94
|
+
*
|
|
95
|
+
* It is deliberately relaxed to "no cap" when the candidate pool has only one
|
|
96
|
+
* source: the common case is a tag holding a single document, and capping it
|
|
97
|
+
* there would throw away half the passages for no diversity to gain.
|
|
98
|
+
*/
|
|
99
|
+
export declare const DEFAULT_KNOWLEDGE_MAX_PER_SOURCE = 3;
|
|
100
|
+
/**
|
|
101
|
+
* One document recorded under a tag.
|
|
102
|
+
*
|
|
103
|
+
* `docId` and `contentHash` are what make the SECOND ingest of the same folder
|
|
104
|
+
* cheap and correct: the id addresses the document's stored text (so a section
|
|
105
|
+
* can be read verbatim), and the hash says whether anything inside it changed
|
|
106
|
+
* (so an unchanged file is not extracted, chunked and embedded again).
|
|
107
|
+
*/
|
|
38
108
|
export interface KnowledgeDocument {
|
|
109
|
+
/** Stable id derived from `path` — the key of the stored extracted text. */
|
|
110
|
+
docId: string;
|
|
39
111
|
path: string;
|
|
112
|
+
/** First heading of the document, or its basename when it has none. */
|
|
113
|
+
title: string;
|
|
40
114
|
chunks: number;
|
|
41
115
|
addedAt: number;
|
|
116
|
+
/** SHA-1 of the extracted text — the change detector for re-ingest. */
|
|
117
|
+
contentHash: string;
|
|
42
118
|
}
|
|
43
119
|
/** Manifest entry for a tag. */
|
|
44
120
|
export interface KnowledgeTagEntry {
|
|
@@ -58,12 +134,27 @@ export interface KnowledgeHit {
|
|
|
58
134
|
sourcePath: string;
|
|
59
135
|
chunkIndex: number;
|
|
60
136
|
similarity: number;
|
|
137
|
+
/**
|
|
138
|
+
* The heading chain the passage sits under, e.g. `Auth Design > Token refresh`.
|
|
139
|
+
* Empty for a document with no headings (or a non-Markdown one), which is why
|
|
140
|
+
* it is optional in the rendered citation rather than printed as `unknown`.
|
|
141
|
+
*/
|
|
142
|
+
headingPath?: string;
|
|
143
|
+
/**
|
|
144
|
+
* WHY this passage is here: `dense` means it cleared the cosine floor, `term`
|
|
145
|
+
* means it is a lexical-only match whose similarity is below the floor. The
|
|
146
|
+
* distinction is rendered in the citation, because a passage presented with a
|
|
147
|
+
* low `sim` and no explanation reads as a mistake rather than as a term match.
|
|
148
|
+
*/
|
|
149
|
+
evidence?: 'dense' | 'term';
|
|
61
150
|
}
|
|
62
151
|
/** Result of an ingest call. */
|
|
63
152
|
export interface IngestResult {
|
|
64
153
|
tag: string;
|
|
65
154
|
files: number;
|
|
66
155
|
chunks: number;
|
|
156
|
+
/** Documents whose content hash matched the recorded one — nothing re-embedded. */
|
|
157
|
+
unchanged: number;
|
|
67
158
|
skipped: Array<{
|
|
68
159
|
path: string;
|
|
69
160
|
reason: string;
|
|
@@ -74,6 +165,34 @@ export interface KnowledgeOptions {
|
|
|
74
165
|
chunkTokens?: number;
|
|
75
166
|
overlapTokens?: number;
|
|
76
167
|
topK?: number;
|
|
168
|
+
/**
|
|
169
|
+
* Relevance floor for `queryKnowledge` — hits scoring below this cosine
|
|
170
|
+
* similarity are dropped. Defaults to `DEFAULT_KNOWLEDGE_MIN_SIMILARITY`.
|
|
171
|
+
*/
|
|
172
|
+
minSimilarity?: number;
|
|
173
|
+
/**
|
|
174
|
+
* How to retrieve: `hybrid` (default) fuses dense + lexical evidence; `dense`
|
|
175
|
+
* reproduces vector-only retrieval. Query-only.
|
|
176
|
+
*/
|
|
177
|
+
fusion?: 'hybrid' | 'dense';
|
|
178
|
+
/**
|
|
179
|
+
* Lexical (BM25) floor for a candidate matched ONLY by the lexical half — a
|
|
180
|
+
* dense hit is already gated by `minSimilarity`. 0 (default) keeps any passage
|
|
181
|
+
* that shares a content term with the question. Query-only.
|
|
182
|
+
*/
|
|
183
|
+
minLexicalScore?: number;
|
|
184
|
+
/**
|
|
185
|
+
* Chunks one source document may contribute to a result. Defaults to
|
|
186
|
+
* `DEFAULT_KNOWLEDGE_MAX_PER_SOURCE`, and is relaxed automatically when only
|
|
187
|
+
* one source is in the candidate pool. Query-only.
|
|
188
|
+
*/
|
|
189
|
+
maxPerSource?: number;
|
|
190
|
+
/**
|
|
191
|
+
* Ingest-only. Called once per chunk that could NOT be embedded and was
|
|
192
|
+
* therefore not indexed, so a caller can report the shortfall instead of a
|
|
193
|
+
* document that looks fully indexed while part of it is missing.
|
|
194
|
+
*/
|
|
195
|
+
onChunkSkipped?: (reason: string) => void;
|
|
77
196
|
/**
|
|
78
197
|
* Embedding function override. Defaults to the local embedder. Injectable so
|
|
79
198
|
* callers (and tests) can supply a deterministic/dummy vectorizer without
|
|
@@ -97,6 +216,8 @@ export declare function readKnowledgeManifest(): KnowledgeManifest;
|
|
|
97
216
|
export declare function listKnowledgeTags(): KnowledgeTagEntry[];
|
|
98
217
|
/** One tag's manifest entry, or null. */
|
|
99
218
|
export declare function getKnowledgeTag(tag: string): KnowledgeTagEntry | null;
|
|
219
|
+
/** Stable id for a document, derived from its path. */
|
|
220
|
+
export declare function documentIdFor(sourcePath: string): string;
|
|
100
221
|
/** Recursively collect files under a path (bounded, ignores build/vendor dirs). */
|
|
101
222
|
export declare function collectKnowledgeFiles(root: string, out?: string[], depth?: number): string[];
|
|
102
223
|
/**
|
|
@@ -104,16 +225,121 @@ export declare function collectKnowledgeFiles(root: string, out?: string[], dept
|
|
|
104
225
|
* so re-ingesting a changed document overwrites its chunks rather than
|
|
105
226
|
* duplicating them.
|
|
106
227
|
*/
|
|
107
|
-
export declare function ingestKnowledgeText(tag: string, sourcePath: string, text: string, opts?: KnowledgeOptions
|
|
228
|
+
export declare function ingestKnowledgeText(tag: string, sourcePath: string, text: string, opts?: KnowledgeOptions,
|
|
229
|
+
/**
|
|
230
|
+
* How many chunks this same `<tag>:<sourcePath>` contributed LAST time, so a
|
|
231
|
+
* document that got shorter has its retired tail removed. `ingestKnowledge`
|
|
232
|
+
* passes the count it reads from the manifest.
|
|
233
|
+
*/
|
|
234
|
+
previousChunkCount?: number): Promise<number>;
|
|
108
235
|
/**
|
|
109
236
|
* Ingest one or more files/directories under a tag. Extraction, chunking and
|
|
110
237
|
* embedding happen ONCE here; later questions only embed a short query.
|
|
111
238
|
*/
|
|
112
239
|
export declare function ingestKnowledge(tag: string, paths: string[], opts?: KnowledgeOptions): Promise<IngestResult>;
|
|
113
|
-
/**
|
|
240
|
+
/**
|
|
241
|
+
* Embed the question and return the tag's top-k chunks. Never throws.
|
|
242
|
+
*
|
|
243
|
+
* Two retrievers run over the same namespace and their RANKS are fused:
|
|
244
|
+
*
|
|
245
|
+
* 1. **Dense** — cosine over the stored vectors, gated by `minSimilarity`.
|
|
246
|
+
* This is the Phase-0 relevance floor and it is unchanged: a passage the
|
|
247
|
+
* embeddings do not consider related is not dense evidence.
|
|
248
|
+
* 2. **Lexical** — BM25 over the stored chunk text, which can find the exact
|
|
249
|
+
* term a dense retriever missed. A lexical hit is evidence by itself, so it
|
|
250
|
+
* is admitted even when its cosine sits below the floor — that is the whole
|
|
251
|
+
* reason the second retriever exists, and it is why `minSimilarity` alone
|
|
252
|
+
* can no longer force an empty result for a question that shares vocabulary
|
|
253
|
+
* with the corpus. Pass `fusion: 'dense'` to get the old, purely-cosine
|
|
254
|
+
* behaviour.
|
|
255
|
+
*
|
|
256
|
+
* Reciprocal Rank Fusion scores each candidate `Σ 1/(RRF_K + rank)`. Scores are
|
|
257
|
+
* never summed across halves — cosine and BM25 are on different scales, and
|
|
258
|
+
* adding them would silently weight whichever happens to have the larger range.
|
|
259
|
+
* RRF only needs each half to ORDER its candidates, so a backend change cannot
|
|
260
|
+
* move the fusion.
|
|
261
|
+
*
|
|
262
|
+
* The fused ranking is then capped per source document, so one long file cannot
|
|
263
|
+
* take every slot from the shorter one that answers the question.
|
|
264
|
+
*/
|
|
114
265
|
export declare function queryKnowledge(tag: string, question: string, opts?: KnowledgeOptions): Promise<KnowledgeHit[]>;
|
|
266
|
+
/** Cap on a read, so "the whole document" cannot become an unbounded prompt. */
|
|
267
|
+
export declare const MAX_READ_CHARS = 40000;
|
|
268
|
+
/** One heading in a document's table of contents. */
|
|
269
|
+
export interface KnowledgeSectionInfo {
|
|
270
|
+
title: string;
|
|
271
|
+
headingPath: string;
|
|
272
|
+
level: number;
|
|
273
|
+
chars: number;
|
|
274
|
+
}
|
|
275
|
+
/** A document in a tag's table of contents. */
|
|
276
|
+
export interface KnowledgeDocumentOutline {
|
|
277
|
+
docId: string;
|
|
278
|
+
path: string;
|
|
279
|
+
title: string;
|
|
280
|
+
chunks: number;
|
|
281
|
+
addedAt: number;
|
|
282
|
+
sections: KnowledgeSectionInfo[];
|
|
283
|
+
}
|
|
284
|
+
/**
|
|
285
|
+
* Read a document's text, or one of its sections.
|
|
286
|
+
*
|
|
287
|
+
* `section` is matched against the section's heading path, case-insensitively,
|
|
288
|
+
* with or without the ancestors (`"Token refresh"` finds
|
|
289
|
+
* `Auth Design > Token refresh`, and so does the full path). An unknown section
|
|
290
|
+
* returns the available ones instead of the whole document, because silently
|
|
291
|
+
* answering a narrower question with everything is how a reader concludes the
|
|
292
|
+
* document says something it never said.
|
|
293
|
+
*/
|
|
294
|
+
export declare function readKnowledgeDocument(tag: string, docRef: string, section?: string): {
|
|
295
|
+
ok: true;
|
|
296
|
+
text: string;
|
|
297
|
+
truncated: boolean;
|
|
298
|
+
path: string;
|
|
299
|
+
headingPath?: string;
|
|
300
|
+
} | {
|
|
301
|
+
ok: false;
|
|
302
|
+
reason: string;
|
|
303
|
+
};
|
|
304
|
+
/** Every document under a tag, with its heading tree. */
|
|
305
|
+
export declare function listKnowledgeSections(tag: string, docRef?: string): KnowledgeDocumentOutline[];
|
|
306
|
+
/**
|
|
307
|
+
* Remove one document from a tag: its chunks, its stored text, its manifest row.
|
|
308
|
+
* Used by `syncKnowledgeTag` when a file is no longer present under a synced
|
|
309
|
+
* root, and by the CLI to drop a single document without forgetting the tag.
|
|
310
|
+
*/
|
|
311
|
+
export declare function removeKnowledgeDocument(tag: string, docRef: string): Promise<boolean>;
|
|
115
312
|
/** Remove a tag's vectors and manifest entry. Returns true when something was removed. */
|
|
116
313
|
export declare function forgetKnowledgeTag(tag: string): Promise<boolean>;
|
|
314
|
+
/** What a sync changed. `changed` and `added` re-embedded; `unchanged` did not. */
|
|
315
|
+
export interface SyncResult {
|
|
316
|
+
tag: string;
|
|
317
|
+
added: number;
|
|
318
|
+
changed: number;
|
|
319
|
+
unchanged: number;
|
|
320
|
+
/** Documents dropped because they are no longer under a synced root. */
|
|
321
|
+
removed: string[];
|
|
322
|
+
chunks: number;
|
|
323
|
+
skipped: Array<{
|
|
324
|
+
path: string;
|
|
325
|
+
reason: string;
|
|
326
|
+
}>;
|
|
327
|
+
}
|
|
328
|
+
/**
|
|
329
|
+
* Bring a tag up to date with the folders it is kept in step with.
|
|
330
|
+
*
|
|
331
|
+
* This is `add` plus the two things a folder being kept in step needs: content
|
|
332
|
+
* hashes mean an unchanged file is not re-extracted, re-chunked or re-embedded,
|
|
333
|
+
* and a file that has DISAPPEARED stops being served.
|
|
334
|
+
*
|
|
335
|
+
* Removal is scoped to the roots the caller actually synced. Syncing `./specs`
|
|
336
|
+
* must not delete documents ingested from somewhere else, so a document is only
|
|
337
|
+
* pruned when it lives under one of the synced directories AND was absent from
|
|
338
|
+
* that directory's enumeration — a precise rule, rather than "anything not in
|
|
339
|
+
* this list", which would quietly empty a tag the first time it was called with
|
|
340
|
+
* the wrong path.
|
|
341
|
+
*/
|
|
342
|
+
export declare function syncKnowledgeTag(tag: string, paths: string[], opts?: KnowledgeOptions): Promise<SyncResult>;
|
|
117
343
|
/**
|
|
118
344
|
* Render retrieved chunks as context that ATTRIBUTES each part to the user's
|
|
119
345
|
* data. The model can then answer the data half from here and the generic half
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"knowledge-base.d.ts","sourceRoot":"","sources":["../../src/learning/knowledge-base.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"knowledge-base.d.ts","sourceRoot":"","sources":["../../src/learning/knowledge-base.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AAUH,OAAO,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAQ9E,iHAAiH;AACjH,eAAO,MAAM,gBAAgB,QAAmC,CAAC;AAEjE,iFAAiF;AACjF,eAAO,MAAM,0BAA0B,eAAe,CAAC;AAEvD,mFAAmF;AACnF,eAAO,MAAM,uBAAuB,yBAAyB,CAAC;AAE9D,yCAAyC;AACzC,eAAO,MAAM,uBAAuB,IAAI,CAAC;AAEzC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,eAAO,MAAM,gCAAgC,MAAM,CAAC;AAEpD;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,gCAAgC,IAAI,CAAC;AAmClD;;;;;;;GAOG;AACH,MAAM,WAAW,iBAAiB;IAChC,4EAA4E;IAC5E,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,uEAAuE;IACvE,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,uEAAuE;IACvE,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,gCAAgC;AAChC,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,iBAAiB,EAAE,CAAC;CAChC;AAED,UAAU,iBAAiB;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;CACzC;AAED,uCAAuC;AACvC,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;CAC7B;AAED,gCAAgC;AAChC,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,mFAAmF;IACnF,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAClD;AAED,sCAAsC;AACtC,MAAM,WAAW,gBAAgB;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;OAGG;IACH,MAAM,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;IAC5B;;;;OAIG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C;;;;OAIG;IACH,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;CAC/C;AAcD;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAOzD;AAED,mEAAmE;AACnE,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAExD;AAED,qEAAqE;AACrE,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEnD;AAQD,iFAAiF;AACjF,wBAAgB,qBAAqB,IAAI,iBAAiB,CASzD;AAWD,8EAA8E;AAC9E,wBAAgB,iBAAiB,IAAI,iBAAiB,EAAE,CAEvD;AAED,yCAAyC;AACzC,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI,CAGrE;AAeD,uDAAuD;AACvD,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAExD;AAoDD,mFAAmF;AACnF,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,GAAE,MAAM,EAAO,EAAE,KAAK,SAAI,GAAG,MAAM,EAAE,CAyB3F;AAkCD;;;;GAIG;AACH,wBAAsB,mBAAmB,CACvC,GAAG,EAAE,MAAM,EACX,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,EACZ,IAAI,GAAE,gBAAqB;AAC3B;;;;GAIG;AACH,kBAAkB,SAAI,GACrB,OAAO,CAAC,MAAM,CAAC,CAsDjB;AAED;;;GAGG;AACH,wBAAsB,eAAe,CACnC,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,EAAE,EACf,IAAI,GAAE,gBAAqB,GAC1B,OAAO,CAAC,YAAY,CAAC,CAyGvB;AAkBD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAsB,cAAc,CAClC,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,EAChB,IAAI,GAAE,gBAAqB,GAC1B,OAAO,CAAC,YAAY,EAAE,CAAC,CAwGzB;AAWD,gFAAgF;AAChF,eAAO,MAAM,cAAc,QAAS,CAAC;AAErC,qDAAqD;AACrD,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED,+CAA+C;AAC/C,MAAM,WAAW,wBAAwB;IACvC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,oBAAoB,EAAE,CAAC;CAClC;AAiCD;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,MAAM,GACf;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CA2CpH;AAED,yDAAyD;AACzD,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,wBAAwB,EAAE,CAsB9F;AAED;;;;GAIG;AACH,wBAAsB,uBAAuB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CA2B3F;AAED,0FAA0F;AAC1F,wBAAsB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAoBtE;AAID,mFAAmF;AACnF,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,wEAAwE;IACxE,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAClD;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,EAAE,EACf,IAAI,GAAE,gBAAqB,GAC1B,OAAO,CAAC,UAAU,CAAC,CAgErB;AAID;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,MAAM,CA2BhF;AAGD,OAAO,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,CAAC"}
|