agent-nuvira 3.3.12 โ 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/agents/reasoner.d.ts.map +1 -1
- package/dist/agents/agents/reasoner.js +13 -0
- package/dist/agents/agents/reasoner.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 +103 -135
- 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 +798 -39
- package/dist/cli/chat.js.map +1 -1
- package/dist/cli/cli-program.d.ts.map +1 -1
- package/dist/cli/cli-program.js +20 -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 +107 -3
- 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/execute.d.ts.map +1 -1
- package/dist/cli/execute.js +6 -0
- package/dist/cli/execute.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 +31 -0
- package/dist/cli/knowledge.d.ts.map +1 -0
- package/dist/cli/knowledge.js +223 -0
- package/dist/cli/knowledge.js.map +1 -0
- package/dist/cli/loop-executor.d.ts.map +1 -1
- package/dist/cli/loop-executor.js +92 -18
- 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/omniroute-control.d.ts +88 -0
- package/dist/cli/omniroute-control.d.ts.map +1 -0
- package/dist/cli/omniroute-control.js +179 -0
- package/dist/cli/omniroute-control.js.map +1 -0
- package/dist/cli/omniroute.d.ts +21 -0
- package/dist/cli/omniroute.d.ts.map +1 -0
- package/dist/cli/omniroute.js +67 -0
- package/dist/cli/omniroute.js.map +1 -0
- 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/config/types.d.ts +8 -0
- package/dist/config/types.d.ts.map +1 -1
- package/dist/context/history.d.ts +21 -0
- package/dist/context/history.d.ts.map +1 -1
- package/dist/context/history.js +50 -0
- package/dist/context/history.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 +206 -0
- package/dist/gateway/hook-contract.d.ts.map +1 -0
- package/dist/gateway/hook-contract.js +449 -0
- package/dist/gateway/hook-contract.js.map +1 -0
- package/dist/gateway/hooks.d.ts.map +1 -1
- package/dist/gateway/hooks.js +14 -0
- package/dist/gateway/hooks.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 +54 -0
- package/dist/inference/interface.d.ts.map +1 -1
- package/dist/inference/model-id-validation.d.ts +57 -0
- package/dist/inference/model-id-validation.d.ts.map +1 -0
- package/dist/inference/model-id-validation.js +127 -0
- package/dist/inference/model-id-validation.js.map +1 -0
- 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/openai-compat-adapter.d.ts.map +1 -1
- package/dist/inference/openai-compat-adapter.js +12 -1
- package/dist/inference/openai-compat-adapter.js.map +1 -1
- package/dist/inference/provider-catalog.d.ts +11 -0
- package/dist/inference/provider-catalog.d.ts.map +1 -1
- package/dist/inference/provider-catalog.js +80 -0
- package/dist/inference/provider-catalog.js.map +1 -1
- package/dist/inference/route-resolver.d.ts +32 -8
- package/dist/inference/route-resolver.d.ts.map +1 -1
- package/dist/inference/route-resolver.js +175 -1
- package/dist/inference/route-resolver.js.map +1 -1
- package/dist/inference/tool-call-utils.d.ts.map +1 -1
- package/dist/inference/tool-call-utils.js +10 -8
- package/dist/inference/tool-call-utils.js.map +1 -1
- package/dist/inference/tools.d.ts +17 -1
- package/dist/inference/tools.d.ts.map +1 -1
- package/dist/inference/tools.js +69 -19
- 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 +121 -24
- package/dist/learning/auto-router.d.ts.map +1 -1
- package/dist/learning/auto-router.js +374 -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 +45 -2
- package/dist/learning/error-repair.d.ts.map +1 -1
- package/dist/learning/error-repair.js +95 -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 +350 -0
- package/dist/learning/knowledge-base.d.ts.map +1 -0
- package/dist/learning/knowledge-base.js +906 -0
- package/dist/learning/knowledge-base.js.map +1 -0
- 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 +2 -1
- package/dist/learning/model-selection.d.ts.map +1 -1
- package/dist/learning/model-selection.js +76 -2
- 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/project-docs.d.ts +83 -0
- package/dist/learning/project-docs.d.ts.map +1 -0
- package/dist/learning/project-docs.js +132 -0
- package/dist/learning/project-docs.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/quota-ledger.d.ts +13 -0
- package/dist/learning/quota-ledger.d.ts.map +1 -1
- package/dist/learning/quota-ledger.js +28 -0
- package/dist/learning/quota-ledger.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/seeded-benchmark.d.ts +14 -0
- package/dist/learning/seeded-benchmark.d.ts.map +1 -1
- package/dist/learning/seeded-benchmark.js +43 -4
- package/dist/learning/seeded-benchmark.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/security/secret-scan.d.ts +156 -0
- package/dist/security/secret-scan.d.ts.map +1 -0
- package/dist/security/secret-scan.js +525 -0
- package/dist/security/secret-scan.js.map +1 -0
- 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 +44 -4
- package/dist/tools/plan-store.d.ts.map +1 -1
- package/dist/tools/plan-store.js +93 -9
- 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 +623 -15
- package/dist/tools/registry.js.map +1 -1
- package/dist/tools/remediation-ladder.d.ts +91 -0
- package/dist/tools/remediation-ladder.d.ts.map +1 -0
- package/dist/tools/remediation-ladder.js +316 -0
- package/dist/tools/remediation-ladder.js.map +1 -0
- 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 +289 -10
- package/dist/tools/run-terminal.js.map +1 -1
- package/dist/tools/skills-hub.d.ts +7 -0
- package/dist/tools/skills-hub.d.ts.map +1 -1
- package/dist/tools/skills-hub.js +11 -2
- package/dist/tools/skills-hub.js.map +1 -1
- package/dist/tools/step-artifact.d.ts +35 -0
- package/dist/tools/step-artifact.d.ts.map +1 -0
- package/dist/tools/step-artifact.js +154 -0
- package/dist/tools/step-artifact.js.map +1 -0
- package/dist/tools/tool-loop.d.ts +327 -13
- package/dist/tools/tool-loop.d.ts.map +1 -1
- package/dist/tools/tool-loop.js +891 -66
- package/dist/tools/tool-loop.js.map +1 -1
- package/dist/tools/toolsets.js +4 -4
- package/dist/tools/toolsets.js.map +1 -1
- package/dist/tools/worktree.d.ts +11 -2
- package/dist/tools/worktree.d.ts.map +1 -1
- package/dist/tools/worktree.js +11 -2
- package/dist/tools/worktree.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 +40 -0
- package/dist/web-dashboard/server.d.ts.map +1 -1
- package/dist/web-dashboard/server.js +733 -15
- package/dist/web-dashboard/server.js.map +1 -1
- package/dist/web-dashboard/src/types.d.ts +236 -1
- package/dist/web-dashboard/src/types.d.ts.map +1 -1
- package/dist/web-dashboard/workspace-guard.d.ts +18 -2
- package/dist/web-dashboard/workspace-guard.d.ts.map +1 -1
- package/dist/web-dashboard/workspace-guard.js +94 -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-tK8Y2qHB.css +1 -0
- 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 +2 -2
- package/src/web-dashboard/public/assets/index-BrZcYhy6.js +0 -207
- package/src/web-dashboard/public/assets/index-BrZcYhy6.js.map +0 -1
- package/src/web-dashboard/public/assets/index-DsWczTa6.css +0 -1
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HooksCommand โ `nuvira hooks` โ the declarative lifecycle hooks, from the CLI.
|
|
3
|
+
*
|
|
4
|
+
* A hook here is a RULE, not code: it binds to one of nuvira's four lifecycle
|
|
5
|
+
* seams (`before_tool_call`, `after_tool_call`, `failed_tool_call`,
|
|
6
|
+
* `on_session_end`) and its only possible actions are `deny`, `notify` and
|
|
7
|
+
* `scan-args` โ a fixed, native allow-list. Installing one can therefore never
|
|
8
|
+
* execute third-party code. See `docs/HOOKS.md` and
|
|
9
|
+
* `src/gateway/hook-contract.ts`.
|
|
10
|
+
*
|
|
11
|
+
* This is the CLI face of the same `<config-dir>/hooks.json` the dashboard's
|
|
12
|
+
* Hooks page edits, and the same contract the runtime reads live. Both surfaces
|
|
13
|
+
* share `hook-contract.ts`, so the vocabulary cannot drift.
|
|
14
|
+
*
|
|
15
|
+
* Subcommands:
|
|
16
|
+
* nuvira hooks list โ built-in + user hooks, with state
|
|
17
|
+
* nuvira hooks add --id โฆ --label โฆ โฆ โ declare a hook
|
|
18
|
+
* nuvira hooks remove <id> โ remove a user hook
|
|
19
|
+
* nuvira hooks enable <id> โ turn a hook on (also a built-in)
|
|
20
|
+
* nuvira hooks disable <id> โ turn a hook off
|
|
21
|
+
*
|
|
22
|
+
* The built-in starter set (block `rm -rf`, catch secrets in writes/commands)
|
|
23
|
+
* ships DISABLED; `enable` on a built-in materializes it into the file.
|
|
24
|
+
*/
|
|
25
|
+
import { Command } from 'commander';
|
|
26
|
+
import { BaseCommand } from './commands.js';
|
|
27
|
+
import { logger } from '../utils/logger.js';
|
|
28
|
+
import { HOOK_ACTION_KINDS, HOOK_EVENTS, builtinHookById, hookDeclarationsFile, listHookDeclarations, readHookDeclarations, setHookDeclarations, } from '../gateway/hook-contract.js';
|
|
29
|
+
/** Repeatable `--arg key=glob` collector. */
|
|
30
|
+
function collectArg(value, previous) {
|
|
31
|
+
previous.push(value);
|
|
32
|
+
return previous;
|
|
33
|
+
}
|
|
34
|
+
/** `key=glob` lines โ the `argsMatch` record. Blank / malformed entries drop. */
|
|
35
|
+
function parseArgsMatch(values) {
|
|
36
|
+
const out = {};
|
|
37
|
+
for (const raw of values) {
|
|
38
|
+
const eq = raw.indexOf('=');
|
|
39
|
+
if (eq <= 0)
|
|
40
|
+
continue;
|
|
41
|
+
const key = raw.slice(0, eq).trim();
|
|
42
|
+
const glob = raw.slice(eq + 1).trim();
|
|
43
|
+
if (key && glob)
|
|
44
|
+
out[key] = glob;
|
|
45
|
+
}
|
|
46
|
+
return Object.keys(out).length > 0 ? out : undefined;
|
|
47
|
+
}
|
|
48
|
+
/** A one-line, human summary of what a declaration matches and does. */
|
|
49
|
+
function describeHook(hook) {
|
|
50
|
+
const when = hook.when ?? {};
|
|
51
|
+
const parts = [];
|
|
52
|
+
if (when.tool)
|
|
53
|
+
parts.push(`tool ${when.tool}`);
|
|
54
|
+
if (when.surface)
|
|
55
|
+
parts.push(`surface ${when.surface}`);
|
|
56
|
+
if (when.cwdPrefix)
|
|
57
|
+
parts.push(`cwd ${when.cwdPrefix}*`);
|
|
58
|
+
if (when.argsMatch)
|
|
59
|
+
for (const [k, v] of Object.entries(when.argsMatch))
|
|
60
|
+
parts.push(`${k}=${v}`);
|
|
61
|
+
const target = parts.length > 0 ? parts.join(' ยท ') : 'every call';
|
|
62
|
+
switch (hook.action.kind) {
|
|
63
|
+
case 'deny':
|
|
64
|
+
return `${target} โ deny${hook.action.reason ? `: ${hook.action.reason}` : ''}`;
|
|
65
|
+
case 'notify':
|
|
66
|
+
return `${target} โ notify: ${hook.action.message}`;
|
|
67
|
+
case 'scan-args':
|
|
68
|
+
return `${target} โ scan args for secrets${hook.action.denyOnHit ? ' (deny on hit)' : ''}`;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
export class HooksCommand extends BaseCommand {
|
|
72
|
+
create() {
|
|
73
|
+
const cmd = new Command('hooks')
|
|
74
|
+
.description('Declarative lifecycle hooks โ list/add/remove the rules that deny, notify or secret-scan tool calls (the same hooks.json the dashboard Hooks page edits; a hook is data, never code)')
|
|
75
|
+
.option('-v, --verbose', 'verbose output');
|
|
76
|
+
cmd
|
|
77
|
+
.command('list')
|
|
78
|
+
.description('List built-in and user hooks with their seam, action and state')
|
|
79
|
+
.action(() => {
|
|
80
|
+
const all = listHookDeclarations();
|
|
81
|
+
logger.highlight('\n๐ช Hooks');
|
|
82
|
+
if (all.length === 0) {
|
|
83
|
+
logger.info(' No hooks declared.');
|
|
84
|
+
console.log('');
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
for (const hook of all) {
|
|
88
|
+
const state = hook.enabled ? 'โ
enabled ' : 'โญ disabled';
|
|
89
|
+
const source = hook.source === 'builtin' ? 'builtin' : 'user';
|
|
90
|
+
console.log(` ${state} ${hook.id} [${source}] (${hook.event})`);
|
|
91
|
+
console.log(` ${hook.label}`);
|
|
92
|
+
console.log(` ${describeHook(hook)}`);
|
|
93
|
+
}
|
|
94
|
+
console.log('');
|
|
95
|
+
logger.info(` File: ${hookDeclarationsFile()}`);
|
|
96
|
+
console.log('');
|
|
97
|
+
});
|
|
98
|
+
cmd
|
|
99
|
+
.command('add')
|
|
100
|
+
.description('Declare a new hook (it is enabled unless --disabled is given)')
|
|
101
|
+
.requiredOption('--id <id>', 'unique id: lowercase letters, digits and hyphens')
|
|
102
|
+
.requiredOption('--label <label>', 'human label')
|
|
103
|
+
.requiredOption('--event <event>', `seam: ${HOOK_EVENTS.join(' | ')}`)
|
|
104
|
+
.requiredOption('--action <kind>', `action: ${HOOK_ACTION_KINDS.join(' | ')}`)
|
|
105
|
+
.option('--tool <glob>', 'tool-name glob to match (e.g. run_terminal, run_*)')
|
|
106
|
+
.option('--surface <glob>', 'surface glob to match (e.g. cli-chat)')
|
|
107
|
+
.option('--cwd <prefix>', 'only match calls whose cwd starts with this prefix')
|
|
108
|
+
.option('--arg <key=glob>', 'shallow arg matcher, repeatable (e.g. --arg "command=*rm -rf*")', collectArg, [])
|
|
109
|
+
.option('--reason <text>', 'reason shown when a deny (or deny-on-hit) blocks the call')
|
|
110
|
+
.option('--message <text>', 'notify message ({tool} / {surface} / {event} interpolated)')
|
|
111
|
+
.option('--deny-on-hit', 'scan-args: block the call when a secret shape is found')
|
|
112
|
+
.option('--disabled', 'add it switched off (the dashboard adds them on by default)')
|
|
113
|
+
.action((opts) => {
|
|
114
|
+
const id = String(opts.id ?? '');
|
|
115
|
+
const label = String(opts.label ?? '');
|
|
116
|
+
const event = String(opts.event ?? '');
|
|
117
|
+
const kind = String(opts.action ?? '');
|
|
118
|
+
if (!HOOK_EVENTS.includes(event)) {
|
|
119
|
+
logger.error(`Unknown --event '${event}'. Choose one of: ${HOOK_EVENTS.join(', ')}`);
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
if (!HOOK_ACTION_KINDS.includes(kind)) {
|
|
123
|
+
logger.error(`Unknown --action '${kind}'. Choose one of: ${HOOK_ACTION_KINDS.join(', ')}`);
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
const when = {
|
|
127
|
+
...(typeof opts.tool === 'string' && opts.tool ? { tool: opts.tool } : {}),
|
|
128
|
+
...(typeof opts.surface === 'string' && opts.surface ? { surface: opts.surface } : {}),
|
|
129
|
+
...(typeof opts.cwd === 'string' && opts.cwd ? { cwdPrefix: opts.cwd } : {}),
|
|
130
|
+
...(parseArgsMatch(opts.arg ?? []) ? { argsMatch: parseArgsMatch(opts.arg ?? []) } : {}),
|
|
131
|
+
};
|
|
132
|
+
const reason = typeof opts.reason === 'string' && opts.reason ? opts.reason : undefined;
|
|
133
|
+
const message = typeof opts.message === 'string' && opts.message ? opts.message : undefined;
|
|
134
|
+
const action = kind === 'deny'
|
|
135
|
+
? { kind: 'deny', ...(reason ? { reason } : {}) }
|
|
136
|
+
: kind === 'notify'
|
|
137
|
+
? { kind: 'notify', message: message ?? 'hook fired: {tool}' }
|
|
138
|
+
: { kind: 'scan-args', denyOnHit: Boolean(opts.denyOnHit), ...(reason ? { reason } : {}) };
|
|
139
|
+
const declaration = {
|
|
140
|
+
id,
|
|
141
|
+
label,
|
|
142
|
+
event,
|
|
143
|
+
enabled: !opts.disabled,
|
|
144
|
+
...(Object.keys(when).length > 0 ? { when } : {}),
|
|
145
|
+
action,
|
|
146
|
+
source: 'user',
|
|
147
|
+
updatedAt: Date.now(),
|
|
148
|
+
};
|
|
149
|
+
const user = readHookDeclarations();
|
|
150
|
+
if (user.some((h) => h.id === id)) {
|
|
151
|
+
logger.error(`A hook with id '${id}' already exists. Remove it, or use 'enable'/'disable'.`);
|
|
152
|
+
console.log('');
|
|
153
|
+
return;
|
|
154
|
+
}
|
|
155
|
+
const saved = setHookDeclarations([...user, declaration]);
|
|
156
|
+
if (!saved.ok) {
|
|
157
|
+
logger.error(`Rejected: ${saved.error}`);
|
|
158
|
+
console.log('');
|
|
159
|
+
return;
|
|
160
|
+
}
|
|
161
|
+
logger.success(`โ Added hook '${id}' (${declaration.enabled ? 'enabled' : 'disabled'}).`);
|
|
162
|
+
logger.info(` In force on the next tool call. Inspect it: nuvira hooks list`);
|
|
163
|
+
console.log('');
|
|
164
|
+
});
|
|
165
|
+
cmd
|
|
166
|
+
.command('remove <id>')
|
|
167
|
+
.description('Remove a user hook (a built-in cannot be deleted โ disable it instead)')
|
|
168
|
+
.action((id) => {
|
|
169
|
+
const user = readHookDeclarations();
|
|
170
|
+
if (!user.some((h) => h.id === id)) {
|
|
171
|
+
if (builtinHookById(id)) {
|
|
172
|
+
logger.warn(`'${id}' is a built-in default and cannot be removed. Turn it off with: nuvira hooks disable ${id}`);
|
|
173
|
+
}
|
|
174
|
+
else {
|
|
175
|
+
logger.warn(`No user hook '${id}'.`);
|
|
176
|
+
}
|
|
177
|
+
console.log('');
|
|
178
|
+
return;
|
|
179
|
+
}
|
|
180
|
+
const isBuiltin = Boolean(builtinHookById(id));
|
|
181
|
+
const saved = setHookDeclarations(user.filter((h) => h.id !== id));
|
|
182
|
+
if (!saved.ok) {
|
|
183
|
+
logger.error(saved.error);
|
|
184
|
+
console.log('');
|
|
185
|
+
return;
|
|
186
|
+
}
|
|
187
|
+
logger.success(isBuiltin
|
|
188
|
+
? `โบ Reset built-in '${id}' to its default (disabled).`
|
|
189
|
+
: `๐๏ธ Removed hook '${id}'.`);
|
|
190
|
+
console.log('');
|
|
191
|
+
});
|
|
192
|
+
const setEnabled = (enabled) => (id) => {
|
|
193
|
+
const user = readHookDeclarations();
|
|
194
|
+
const existing = user.find((h) => h.id === id);
|
|
195
|
+
let next;
|
|
196
|
+
if (existing) {
|
|
197
|
+
next = user.map((h) => (h.id === id ? { ...h, enabled, updatedAt: Date.now() } : h));
|
|
198
|
+
}
|
|
199
|
+
else {
|
|
200
|
+
const builtin = builtinHookById(id);
|
|
201
|
+
if (!builtin) {
|
|
202
|
+
logger.warn(`No hook '${id}'. Declare it first: nuvira hooks add --id ${id} โฆ`);
|
|
203
|
+
console.log('');
|
|
204
|
+
return;
|
|
205
|
+
}
|
|
206
|
+
// Enabling a built-in materializes it into the file so the runtime โ
|
|
207
|
+
// which follows the user set โ actually sees it.
|
|
208
|
+
next = [...user, { ...builtin, enabled, updatedAt: Date.now() }];
|
|
209
|
+
}
|
|
210
|
+
const saved = setHookDeclarations(next);
|
|
211
|
+
if (!saved.ok) {
|
|
212
|
+
logger.error(saved.error);
|
|
213
|
+
console.log('');
|
|
214
|
+
return;
|
|
215
|
+
}
|
|
216
|
+
logger.success(`${enabled ? 'โ
Enabled' : 'โญ Disabled'} '${id}'.`);
|
|
217
|
+
console.log('');
|
|
218
|
+
};
|
|
219
|
+
cmd.command('enable <id>').description('Turn a hook on (works on a built-in too)').action(setEnabled(true));
|
|
220
|
+
cmd.command('disable <id>').description('Turn a hook off').action(setEnabled(false));
|
|
221
|
+
return cmd;
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
//# sourceMappingURL=hooks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../src/cli/hooks.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* KnowledgeCommand โ `nuvira knowledge` โ tag-scoped retrieval over your own documents.
|
|
3
|
+
*
|
|
4
|
+
* Bring documents, give them a tag, then ask questions scoped to that tag. The
|
|
5
|
+
* documents are extracted, chunked and embedded ONCE (vectorized), so later
|
|
6
|
+
* questions only embed a short query instead of re-reading the files on every
|
|
7
|
+
* turn. Each tag is its own vector namespace; nothing leaves the Nuvira data dir.
|
|
8
|
+
*
|
|
9
|
+
* The agent can drive the same pipeline mid-task via the `knowledge` tool.
|
|
10
|
+
*
|
|
11
|
+
* Subcommands:
|
|
12
|
+
* nuvira knowledge add <tag> <path...> โ ingest files/folders under a tag
|
|
13
|
+
* nuvira knowledge sync <tag> <path...> โ re-sync folders (hash-gated; prunes vanished files)
|
|
14
|
+
* nuvira knowledge query <tag> "<question>" โ retrieve the tag's relevant passages
|
|
15
|
+
* nuvira knowledge toc <tag> [doc] โ documents and their headings
|
|
16
|
+
* nuvira knowledge read <tag> <doc> โ one document or section, VERBATIM
|
|
17
|
+
* nuvira knowledge remove <tag> <doc> โ remove one document from a tag
|
|
18
|
+
* nuvira knowledge list โ list tags, documents and chunk counts
|
|
19
|
+
* nuvira knowledge stats <tag> โ details for one tag
|
|
20
|
+
* nuvira knowledge forget <tag> โ remove a tag's vectors and stored text
|
|
21
|
+
*
|
|
22
|
+
* `query` answers "where is it mentioned"; `read` answers "what does it say".
|
|
23
|
+
* They are different jobs โ a spec-driven build needs a section verbatim, not
|
|
24
|
+
* the six most similar paragraphs of it.
|
|
25
|
+
*/
|
|
26
|
+
import { Command } from 'commander';
|
|
27
|
+
import { BaseCommand } from './commands.js';
|
|
28
|
+
export declare class KnowledgeCommand extends BaseCommand {
|
|
29
|
+
create(): Command;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=knowledge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"knowledge.d.ts","sourceRoot":"","sources":["../../src/cli/knowledge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAiB5C,qBAAa,gBAAiB,SAAQ,WAAW;IAC/C,MAAM,IAAI,OAAO;CAiMlB"}
|
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* KnowledgeCommand โ `nuvira knowledge` โ tag-scoped retrieval over your own documents.
|
|
3
|
+
*
|
|
4
|
+
* Bring documents, give them a tag, then ask questions scoped to that tag. The
|
|
5
|
+
* documents are extracted, chunked and embedded ONCE (vectorized), so later
|
|
6
|
+
* questions only embed a short query instead of re-reading the files on every
|
|
7
|
+
* turn. Each tag is its own vector namespace; nothing leaves the Nuvira data dir.
|
|
8
|
+
*
|
|
9
|
+
* The agent can drive the same pipeline mid-task via the `knowledge` tool.
|
|
10
|
+
*
|
|
11
|
+
* Subcommands:
|
|
12
|
+
* nuvira knowledge add <tag> <path...> โ ingest files/folders under a tag
|
|
13
|
+
* nuvira knowledge sync <tag> <path...> โ re-sync folders (hash-gated; prunes vanished files)
|
|
14
|
+
* nuvira knowledge query <tag> "<question>" โ retrieve the tag's relevant passages
|
|
15
|
+
* nuvira knowledge toc <tag> [doc] โ documents and their headings
|
|
16
|
+
* nuvira knowledge read <tag> <doc> โ one document or section, VERBATIM
|
|
17
|
+
* nuvira knowledge remove <tag> <doc> โ remove one document from a tag
|
|
18
|
+
* nuvira knowledge list โ list tags, documents and chunk counts
|
|
19
|
+
* nuvira knowledge stats <tag> โ details for one tag
|
|
20
|
+
* nuvira knowledge forget <tag> โ remove a tag's vectors and stored text
|
|
21
|
+
*
|
|
22
|
+
* `query` answers "where is it mentioned"; `read` answers "what does it say".
|
|
23
|
+
* They are different jobs โ a spec-driven build needs a section verbatim, not
|
|
24
|
+
* the six most similar paragraphs of it.
|
|
25
|
+
*/
|
|
26
|
+
import { Command } from 'commander';
|
|
27
|
+
import { basename } from 'node:path';
|
|
28
|
+
import { existsSync } from 'node:fs';
|
|
29
|
+
import { BaseCommand } from './commands.js';
|
|
30
|
+
import { logger } from '../utils/logger.js';
|
|
31
|
+
import { formatCount } from '../utils/format.js';
|
|
32
|
+
import { ingestKnowledge, queryKnowledge, listKnowledgeTags, getKnowledgeTag, forgetKnowledgeTag, normalizeKnowledgeTag, listKnowledgeSections, readKnowledgeDocument, removeKnowledgeDocument, syncKnowledgeTag, MAX_READ_CHARS, } from '../learning/knowledge-base.js';
|
|
33
|
+
export class KnowledgeCommand extends BaseCommand {
|
|
34
|
+
create() {
|
|
35
|
+
const cmd = new Command('knowledge')
|
|
36
|
+
.description('Knowledge base โ answer questions from your own tagged documents (vector retrieval)')
|
|
37
|
+
.option('-v, --verbose', 'verbose output');
|
|
38
|
+
cmd
|
|
39
|
+
.command('add <tag> <paths...>')
|
|
40
|
+
.description('Ingest files or folders under a tag (extracted, chunked and embedded once)')
|
|
41
|
+
.action(async (tag, paths) => {
|
|
42
|
+
const missing = paths.filter((p) => !existsSync(p));
|
|
43
|
+
if (missing.length > 0) {
|
|
44
|
+
logger.error(`Path not found: ${missing.join(', ')}`);
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
const normalized = normalizeKnowledgeTag(tag);
|
|
48
|
+
logger.info(`๐ Ingesting ${paths.length} path(s) under tag '${normalized}' ...`);
|
|
49
|
+
logger.info(' (first run downloads the local embedding model, ~130MB, then cached)');
|
|
50
|
+
try {
|
|
51
|
+
const result = await ingestKnowledge(tag, paths);
|
|
52
|
+
logger.success(` Ingested ${result.files} document(s) / ${result.chunks} chunk(s) under '${result.tag}'.`);
|
|
53
|
+
if (result.unchanged > 0) {
|
|
54
|
+
logger.info(` ${result.unchanged} document(s) unchanged โ not re-embedded (use 'sync' to prune removed files).`);
|
|
55
|
+
}
|
|
56
|
+
for (const s of result.skipped) {
|
|
57
|
+
logger.warn(` Skipped ${basename(s.path)}: ${s.reason}`);
|
|
58
|
+
}
|
|
59
|
+
logger.info(` Ask it: nuvira knowledge query "${result.tag}" "<question>"`);
|
|
60
|
+
}
|
|
61
|
+
catch (err) {
|
|
62
|
+
logger.error(`Failed to ingest: ${err instanceof Error ? err.message : String(err)}`);
|
|
63
|
+
}
|
|
64
|
+
console.log('');
|
|
65
|
+
});
|
|
66
|
+
cmd
|
|
67
|
+
.command('query <tag> <question>')
|
|
68
|
+
.description('Retrieve the most relevant passages for a question, scoped to a tag')
|
|
69
|
+
.option('-k, --top-k <n>', 'chunks to retrieve (default 6)')
|
|
70
|
+
.action(async (tag, question, opts) => {
|
|
71
|
+
const normalized = normalizeKnowledgeTag(tag);
|
|
72
|
+
const topK = opts.topK ? Number.parseInt(opts.topK, 10) : undefined;
|
|
73
|
+
logger.info(`๐ ${normalized}: ${question}`);
|
|
74
|
+
const hits = await queryKnowledge(tag, question, { topK });
|
|
75
|
+
if (hits.length === 0) {
|
|
76
|
+
logger.warn(`No entries for tag '${normalized}' โ ingest documents first: nuvira knowledge add "${normalized}" <files>.`);
|
|
77
|
+
console.log('');
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
hits.forEach((h, i) => {
|
|
81
|
+
console.log('');
|
|
82
|
+
logger.highlight(` ${i + 1}. ${basename(h.sourcePath)} (chunk ${h.chunkIndex + 1}, sim ${h.similarity.toFixed(3)})`);
|
|
83
|
+
console.log(h.text.slice(0, 400));
|
|
84
|
+
});
|
|
85
|
+
console.log('');
|
|
86
|
+
logger.info('The data part of an answer comes from these passages; the general part from the model / web-research.');
|
|
87
|
+
console.log('');
|
|
88
|
+
});
|
|
89
|
+
cmd
|
|
90
|
+
.command('toc <tag> [doc]')
|
|
91
|
+
.description("List a tag's documents and the headings in each")
|
|
92
|
+
.action(async (tag, doc) => {
|
|
93
|
+
const docs = listKnowledgeSections(tag, doc);
|
|
94
|
+
if (docs.length === 0) {
|
|
95
|
+
logger.warn(`No documents under '${normalizeKnowledgeTag(tag)}'. Add some: nuvira knowledge add <tag> <files...>`);
|
|
96
|
+
console.log('');
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
logger.highlight(`\n๐ ${normalizeKnowledgeTag(tag)}`);
|
|
100
|
+
for (const d of docs) {
|
|
101
|
+
console.log(` ๐ ${d.title} (${d.chunks} chunk${d.chunks === 1 ? '' : 's'}) โ ${d.path}`);
|
|
102
|
+
if (d.sections.length === 0) {
|
|
103
|
+
console.log(' (no headings โ read the whole document)');
|
|
104
|
+
continue;
|
|
105
|
+
}
|
|
106
|
+
for (const s of d.sections) {
|
|
107
|
+
console.log(` ${' '.repeat(Math.max(0, s.level - 1))}ยง ${s.headingPath ? `${s.headingPath} > ` : ''}${s.title}`);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
console.log('');
|
|
111
|
+
logger.info("Read one verbatim: nuvira knowledge read <tag> <doc> --section \"<heading>\"");
|
|
112
|
+
console.log('');
|
|
113
|
+
});
|
|
114
|
+
cmd
|
|
115
|
+
.command('read <tag> <doc>')
|
|
116
|
+
.description('Print a document, or one named section, VERBATIM (not a summary)')
|
|
117
|
+
.option('-s, --section <heading>', 'section heading to read (default: the whole document)')
|
|
118
|
+
.action(async (tag, doc, opts) => {
|
|
119
|
+
const read = readKnowledgeDocument(tag, doc, opts.section);
|
|
120
|
+
if (!read.ok) {
|
|
121
|
+
logger.warn(read.reason);
|
|
122
|
+
console.log('');
|
|
123
|
+
return;
|
|
124
|
+
}
|
|
125
|
+
logger.highlight(`\n๐ ${read.path}${read.headingPath ? ` โ ยง${read.headingPath}` : ''}`);
|
|
126
|
+
console.log('');
|
|
127
|
+
console.log(read.text);
|
|
128
|
+
if (read.truncated) {
|
|
129
|
+
console.log('');
|
|
130
|
+
logger.warn(` [truncated at ${MAX_READ_CHARS} characters โ read a section instead]`);
|
|
131
|
+
}
|
|
132
|
+
console.log('');
|
|
133
|
+
});
|
|
134
|
+
cmd
|
|
135
|
+
.command('remove <tag> <doc>')
|
|
136
|
+
.description('Remove ONE document from a tag (its chunks, stored text and manifest row)')
|
|
137
|
+
.action(async (tag, doc) => {
|
|
138
|
+
const removed = await removeKnowledgeDocument(tag, doc);
|
|
139
|
+
if (removed)
|
|
140
|
+
logger.success(`๐๏ธ Removed '${doc}' from '${normalizeKnowledgeTag(tag)}'.`);
|
|
141
|
+
else
|
|
142
|
+
logger.warn(`No document '${doc}' under '${normalizeKnowledgeTag(tag)}'.`);
|
|
143
|
+
console.log('');
|
|
144
|
+
});
|
|
145
|
+
cmd
|
|
146
|
+
.command('sync <tag> <paths...>')
|
|
147
|
+
.description("Bring a tag up to date with its folders โ hash-gated, prunes files that vanished")
|
|
148
|
+
.action(async (tag, paths) => {
|
|
149
|
+
const missing = paths.filter((p) => !existsSync(p));
|
|
150
|
+
if (missing.length > 0) {
|
|
151
|
+
logger.error(`Path not found: ${missing.join(', ')}`);
|
|
152
|
+
return;
|
|
153
|
+
}
|
|
154
|
+
const normalized = normalizeKnowledgeTag(tag);
|
|
155
|
+
logger.info(`๐ Syncing '${normalized}' from ${paths.length} path(s) ...`);
|
|
156
|
+
try {
|
|
157
|
+
const result = await syncKnowledgeTag(tag, paths);
|
|
158
|
+
logger.success(` ${result.added} added, ${result.changed} changed, ${result.unchanged} unchanged, ${result.chunks} chunk(s) written.`);
|
|
159
|
+
for (const p of result.removed)
|
|
160
|
+
logger.warn(` Removed ${basename(p)}: no longer present under a synced path.`);
|
|
161
|
+
for (const s of result.skipped)
|
|
162
|
+
logger.warn(` Skipped ${basename(s.path)}: ${s.reason}`);
|
|
163
|
+
}
|
|
164
|
+
catch (err) {
|
|
165
|
+
logger.error(`Failed to sync: ${err instanceof Error ? err.message : String(err)}`);
|
|
166
|
+
}
|
|
167
|
+
console.log('');
|
|
168
|
+
});
|
|
169
|
+
cmd
|
|
170
|
+
.command('list')
|
|
171
|
+
.description('List knowledge tags with document and chunk counts')
|
|
172
|
+
.action(async () => {
|
|
173
|
+
const tags = listKnowledgeTags();
|
|
174
|
+
logger.highlight('\n๐ Knowledge base');
|
|
175
|
+
if (tags.length === 0) {
|
|
176
|
+
logger.info(' No tags yet. Add one: nuvira knowledge add <tag> <files...>');
|
|
177
|
+
console.log('');
|
|
178
|
+
return;
|
|
179
|
+
}
|
|
180
|
+
for (const t of tags) {
|
|
181
|
+
console.log(` โข ${t.tag} โ ${t.chunkCount} chunk(s) across ${t.documents.length} document(s)`);
|
|
182
|
+
for (const d of t.documents) {
|
|
183
|
+
console.log(` ${basename(d.path)} (${d.chunks} chunk${d.chunks === 1 ? '' : 's'})`);
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
console.log('');
|
|
187
|
+
});
|
|
188
|
+
cmd
|
|
189
|
+
.command('stats <tag>')
|
|
190
|
+
.description('Show details for one knowledge tag')
|
|
191
|
+
.action(async (tag) => {
|
|
192
|
+
const entry = getKnowledgeTag(tag);
|
|
193
|
+
if (!entry) {
|
|
194
|
+
logger.warn(`No knowledge tag '${normalizeKnowledgeTag(tag)}' found.`);
|
|
195
|
+
console.log('');
|
|
196
|
+
return;
|
|
197
|
+
}
|
|
198
|
+
logger.highlight(`\n๐ ${entry.tag}`);
|
|
199
|
+
console.log(` Chunks: ${formatCount(entry.chunkCount)}`);
|
|
200
|
+
console.log(` Documents: ${entry.documents.length}`);
|
|
201
|
+
console.log(` Updated: ${new Date(entry.updatedAt).toISOString()}`);
|
|
202
|
+
for (const d of entry.documents) {
|
|
203
|
+
console.log(` โข ${d.path} (${d.chunks} chunk${d.chunks === 1 ? '' : 's'})`);
|
|
204
|
+
}
|
|
205
|
+
console.log('');
|
|
206
|
+
});
|
|
207
|
+
cmd
|
|
208
|
+
.command('forget <tag>')
|
|
209
|
+
.description("Remove a tag's vectors and manifest entry")
|
|
210
|
+
.action(async (tag) => {
|
|
211
|
+
const removed = await forgetKnowledgeTag(tag);
|
|
212
|
+
if (removed) {
|
|
213
|
+
logger.success(`๐๏ธ Removed knowledge tag '${normalizeKnowledgeTag(tag)}'.`);
|
|
214
|
+
}
|
|
215
|
+
else {
|
|
216
|
+
logger.warn(`No knowledge tag '${normalizeKnowledgeTag(tag)}' found.`);
|
|
217
|
+
}
|
|
218
|
+
console.log('');
|
|
219
|
+
});
|
|
220
|
+
return cmd;
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
//# sourceMappingURL=knowledge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"knowledge.js","sourceRoot":"","sources":["../../src/cli/knowledge.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loop-executor.d.ts","sourceRoot":"","sources":["../../src/cli/loop-executor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAWrD,OAAO,EAKL,KAAK,gBAAgB,EACtB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAKL,KAAK,aAAa,EACnB,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"loop-executor.d.ts","sourceRoot":"","sources":["../../src/cli/loop-executor.ts"],"names":[],"mappings":"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"}
|