@nac3/forge-cli 0.2.0-alpha.5 → 0.2.0-alpha.59z.118
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 +16 -1
- package/dist/a11y/helpers.d.ts +88 -0
- package/dist/a11y/helpers.d.ts.map +1 -0
- package/dist/a11y/helpers.js +109 -0
- package/dist/a11y/helpers.js.map +1 -0
- package/dist/agents/config_resolver.d.ts +16 -0
- package/dist/agents/config_resolver.d.ts.map +1 -0
- package/dist/agents/config_resolver.js +133 -0
- package/dist/agents/config_resolver.js.map +1 -0
- package/dist/agents/config_schema.d.ts +42 -0
- package/dist/agents/config_schema.d.ts.map +1 -0
- package/dist/agents/config_schema.js +204 -0
- package/dist/agents/config_schema.js.map +1 -0
- package/dist/agents/defaults.d.ts +21 -0
- package/dist/agents/defaults.d.ts.map +1 -0
- package/dist/agents/defaults.js +56 -0
- package/dist/agents/defaults.js.map +1 -0
- package/dist/agents/runner.d.ts +94 -0
- package/dist/agents/runner.d.ts.map +1 -0
- package/dist/agents/runner.js +165 -0
- package/dist/agents/runner.js.map +1 -0
- package/dist/agents/store.d.ts +33 -0
- package/dist/agents/store.d.ts.map +1 -0
- package/dist/agents/store.js +210 -0
- package/dist/agents/store.js.map +1 -0
- package/dist/agents/types.d.ts +112 -0
- package/dist/agents/types.d.ts.map +1 -0
- package/dist/agents/types.js +39 -0
- package/dist/agents/types.js.map +1 -0
- package/dist/bin/yf.d.ts.map +1 -1
- package/dist/bin/yf.js +86 -2
- package/dist/bin/yf.js.map +1 -1
- package/dist/chat/claude.d.ts +53 -15
- package/dist/chat/claude.d.ts.map +1 -1
- package/dist/chat/claude.js +152 -27
- package/dist/chat/claude.js.map +1 -1
- package/dist/chat/graph_auto_ingest.d.ts +46 -0
- package/dist/chat/graph_auto_ingest.d.ts.map +1 -0
- package/dist/chat/graph_auto_ingest.js +162 -0
- package/dist/chat/graph_auto_ingest.js.map +1 -0
- package/dist/chat/graph_component_watcher.d.ts +30 -0
- package/dist/chat/graph_component_watcher.d.ts.map +1 -0
- package/dist/chat/graph_component_watcher.js +220 -0
- package/dist/chat/graph_component_watcher.js.map +1 -0
- package/dist/chat/panel.d.ts.map +1 -1
- package/dist/chat/panel.js +5815 -1455
- package/dist/chat/panel.js.map +1 -1
- package/dist/chat/project_slug.d.ts +6 -0
- package/dist/chat/project_slug.d.ts.map +1 -0
- package/dist/chat/project_slug.js +78 -0
- package/dist/chat/project_slug.js.map +1 -0
- package/dist/chat/semantic_graph_ingest.d.ts +31 -0
- package/dist/chat/semantic_graph_ingest.d.ts.map +1 -0
- package/dist/chat/semantic_graph_ingest.js +84 -0
- package/dist/chat/semantic_graph_ingest.js.map +1 -0
- package/dist/chat/semantic_graph_inject.d.ts +25 -0
- package/dist/chat/semantic_graph_inject.d.ts.map +1 -0
- package/dist/chat/semantic_graph_inject.js +64 -0
- package/dist/chat/semantic_graph_inject.js.map +1 -0
- package/dist/chat/server.d.ts +50 -0
- package/dist/chat/server.d.ts.map +1 -1
- package/dist/chat/server.js +1905 -54
- package/dist/chat/server.js.map +1 -1
- package/dist/chat/spec_extract.d.ts +1 -2
- package/dist/chat/spec_extract.d.ts.map +1 -1
- package/dist/chat/spec_extract.js +18 -59
- package/dist/chat/spec_extract.js.map +1 -1
- package/dist/chat/spec_plan.d.ts +1 -2
- package/dist/chat/spec_plan.d.ts.map +1 -1
- package/dist/chat/spec_plan.js +15 -60
- package/dist/chat/spec_plan.js.map +1 -1
- package/dist/chat/tools/app_backend_dispatch.d.ts +39 -0
- package/dist/chat/tools/app_backend_dispatch.d.ts.map +1 -0
- package/dist/chat/tools/app_backend_dispatch.js +239 -0
- package/dist/chat/tools/app_backend_dispatch.js.map +1 -0
- package/dist/chat/tools/audit_consumers.d.ts +66 -0
- package/dist/chat/tools/audit_consumers.d.ts.map +1 -0
- package/dist/chat/tools/audit_consumers.js +231 -0
- package/dist/chat/tools/audit_consumers.js.map +1 -0
- package/dist/chat/tools/fs_editor.d.ts +11 -0
- package/dist/chat/tools/fs_editor.d.ts.map +1 -0
- package/dist/chat/tools/fs_editor.js +162 -0
- package/dist/chat/tools/fs_editor.js.map +1 -0
- package/dist/chat/tools/git.d.ts +24 -0
- package/dist/chat/tools/git.d.ts.map +1 -1
- package/dist/chat/tools/git.js +78 -0
- package/dist/chat/tools/git.js.map +1 -1
- package/dist/chat/tools/keys.d.ts +9 -0
- package/dist/chat/tools/keys.d.ts.map +1 -0
- package/dist/chat/tools/keys.js +152 -0
- package/dist/chat/tools/keys.js.map +1 -0
- package/dist/chat/tools/misc_verbs.d.ts +36 -0
- package/dist/chat/tools/misc_verbs.d.ts.map +1 -0
- package/dist/chat/tools/misc_verbs.js +405 -0
- package/dist/chat/tools/misc_verbs.js.map +1 -0
- package/dist/chat/tools/nac3_invoke.d.ts +53 -0
- package/dist/chat/tools/nac3_invoke.d.ts.map +1 -0
- package/dist/chat/tools/nac3_invoke.js +886 -0
- package/dist/chat/tools/nac3_invoke.js.map +1 -0
- package/dist/chat/tools/pizarron.d.ts +40 -0
- package/dist/chat/tools/pizarron.d.ts.map +1 -0
- package/dist/chat/tools/pizarron.js +123 -0
- package/dist/chat/tools/pizarron.js.map +1 -0
- package/dist/chat/tools/project_lifecycle.d.ts +24 -0
- package/dist/chat/tools/project_lifecycle.d.ts.map +1 -0
- package/dist/chat/tools/project_lifecycle.js +184 -0
- package/dist/chat/tools/project_lifecycle.js.map +1 -0
- package/dist/chat/tools/reader.d.ts.map +1 -1
- package/dist/chat/tools/reader.js +144 -1
- package/dist/chat/tools/reader.js.map +1 -1
- package/dist/chat/tools/shell.d.ts +58 -0
- package/dist/chat/tools/shell.d.ts.map +1 -0
- package/dist/chat/tools/shell.js +253 -0
- package/dist/chat/tools/shell.js.map +1 -0
- package/dist/chat/tools/workflow.d.ts +45 -0
- package/dist/chat/tools/workflow.d.ts.map +1 -0
- package/dist/chat/tools/workflow.js +404 -0
- package/dist/chat/tools/workflow.js.map +1 -0
- package/dist/chat/tools.d.ts +27 -0
- package/dist/chat/tools.d.ts.map +1 -1
- package/dist/chat/tools.js +362 -13
- package/dist/chat/tools.js.map +1 -1
- package/dist/chat/workflow_inject.d.ts +52 -0
- package/dist/chat/workflow_inject.d.ts.map +1 -0
- package/dist/chat/workflow_inject.js +346 -0
- package/dist/chat/workflow_inject.js.map +1 -0
- package/dist/commands/agent.d.ts +22 -0
- package/dist/commands/agent.d.ts.map +1 -0
- package/dist/commands/agent.js +190 -0
- package/dist/commands/agent.js.map +1 -0
- package/dist/commands/approve.d.ts +32 -0
- package/dist/commands/approve.d.ts.map +1 -0
- package/dist/commands/approve.js +198 -0
- package/dist/commands/approve.js.map +1 -0
- package/dist/commands/block.d.ts +28 -0
- package/dist/commands/block.d.ts.map +1 -0
- package/dist/commands/block.js +189 -0
- package/dist/commands/block.js.map +1 -0
- package/dist/commands/bootstrap.d.ts +35 -0
- package/dist/commands/bootstrap.d.ts.map +1 -0
- package/dist/commands/bootstrap.js +205 -0
- package/dist/commands/bootstrap.js.map +1 -0
- package/dist/commands/brain.d.ts +17 -0
- package/dist/commands/brain.d.ts.map +1 -0
- package/dist/commands/brain.js +129 -0
- package/dist/commands/brain.js.map +1 -0
- package/dist/commands/chat.d.ts +3 -0
- package/dist/commands/chat.d.ts.map +1 -1
- package/dist/commands/chat.js +112 -1
- package/dist/commands/chat.js.map +1 -1
- package/dist/commands/clarify.d.ts +30 -0
- package/dist/commands/clarify.d.ts.map +1 -0
- package/dist/commands/clarify.js +671 -0
- package/dist/commands/clarify.js.map +1 -0
- package/dist/commands/discover.d.ts +30 -0
- package/dist/commands/discover.d.ts.map +1 -0
- package/dist/commands/discover.js +178 -0
- package/dist/commands/discover.js.map +1 -0
- package/dist/commands/doctor.js +26 -4
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/doctrine.d.ts +24 -0
- package/dist/commands/doctrine.d.ts.map +1 -0
- package/dist/commands/doctrine.js +106 -0
- package/dist/commands/doctrine.js.map +1 -0
- package/dist/commands/doctrines.d.ts +21 -0
- package/dist/commands/doctrines.d.ts.map +1 -0
- package/dist/commands/doctrines.js +158 -0
- package/dist/commands/doctrines.js.map +1 -0
- package/dist/commands/graph.d.ts +21 -0
- package/dist/commands/graph.d.ts.map +1 -0
- package/dist/commands/graph.js +363 -0
- package/dist/commands/graph.js.map +1 -0
- package/dist/commands/keys_setup.d.ts.map +1 -1
- package/dist/commands/keys_setup.js +80 -0
- package/dist/commands/keys_setup.js.map +1 -1
- package/dist/commands/legacy-audit.d.ts +34 -0
- package/dist/commands/legacy-audit.d.ts.map +1 -0
- package/dist/commands/legacy-audit.js +270 -0
- package/dist/commands/legacy-audit.js.map +1 -0
- package/dist/commands/lessons.d.ts +28 -0
- package/dist/commands/lessons.d.ts.map +1 -0
- package/dist/commands/lessons.js +309 -0
- package/dist/commands/lessons.js.map +1 -0
- package/dist/commands/license.d.ts.map +1 -1
- package/dist/commands/license.js +56 -1
- package/dist/commands/license.js.map +1 -1
- package/dist/commands/limits.d.ts +15 -0
- package/dist/commands/limits.d.ts.map +1 -0
- package/dist/commands/limits.js +51 -0
- package/dist/commands/limits.js.map +1 -0
- package/dist/commands/manifest-cli.d.ts +12 -0
- package/dist/commands/manifest-cli.d.ts.map +1 -0
- package/dist/commands/manifest-cli.js +42 -0
- package/dist/commands/manifest-cli.js.map +1 -0
- package/dist/commands/mcp.d.ts +24 -0
- package/dist/commands/mcp.d.ts.map +1 -0
- package/dist/commands/mcp.js +163 -0
- package/dist/commands/mcp.js.map +1 -0
- package/dist/commands/nac3.d.ts +22 -0
- package/dist/commands/nac3.d.ts.map +1 -0
- package/dist/commands/nac3.js +125 -0
- package/dist/commands/nac3.js.map +1 -0
- package/dist/commands/operate.d.ts +22 -0
- package/dist/commands/operate.d.ts.map +1 -0
- package/dist/commands/operate.js +523 -0
- package/dist/commands/operate.js.map +1 -0
- package/dist/commands/qa.d.ts +24 -0
- package/dist/commands/qa.d.ts.map +1 -0
- package/dist/commands/qa.js +349 -0
- package/dist/commands/qa.js.map +1 -0
- package/dist/commands/spec.d.ts +38 -0
- package/dist/commands/spec.d.ts.map +1 -0
- package/dist/commands/spec.js +256 -0
- package/dist/commands/spec.js.map +1 -0
- package/dist/commands/support.d.ts +22 -0
- package/dist/commands/support.d.ts.map +1 -0
- package/dist/commands/support.js +165 -0
- package/dist/commands/support.js.map +1 -0
- package/dist/commands/triage.d.ts +34 -0
- package/dist/commands/triage.d.ts.map +1 -0
- package/dist/commands/triage.js +228 -0
- package/dist/commands/triage.js.map +1 -0
- package/dist/commands/vault-inventory.d.ts +30 -0
- package/dist/commands/vault-inventory.d.ts.map +1 -0
- package/dist/commands/vault-inventory.js +222 -0
- package/dist/commands/vault-inventory.js.map +1 -0
- package/dist/commands/vault.d.ts.map +1 -1
- package/dist/commands/vault.js +5 -0
- package/dist/commands/vault.js.map +1 -1
- package/dist/commands/voice.d.ts.map +1 -1
- package/dist/commands/voice.js +47 -4
- package/dist/commands/voice.js.map +1 -1
- package/dist/commands/workflow-coverage.d.ts +30 -0
- package/dist/commands/workflow-coverage.d.ts.map +1 -0
- package/dist/commands/workflow-coverage.js +138 -0
- package/dist/commands/workflow-coverage.js.map +1 -0
- package/dist/core/ansi_strip.d.ts +39 -0
- package/dist/core/ansi_strip.d.ts.map +1 -0
- package/dist/core/ansi_strip.js +71 -0
- package/dist/core/ansi_strip.js.map +1 -0
- package/dist/core/audit_log.d.ts +43 -0
- package/dist/core/audit_log.d.ts.map +1 -0
- package/dist/core/audit_log.js +80 -0
- package/dist/core/audit_log.js.map +1 -0
- package/dist/core/brain_config.d.ts +33 -0
- package/dist/core/brain_config.d.ts.map +1 -0
- package/dist/core/brain_config.js +132 -0
- package/dist/core/brain_config.js.map +1 -0
- package/dist/core/budget.d.ts +96 -0
- package/dist/core/budget.d.ts.map +1 -0
- package/dist/core/budget.js +300 -0
- package/dist/core/budget.js.map +1 -0
- package/dist/core/cost_meter.d.ts +35 -0
- package/dist/core/cost_meter.d.ts.map +1 -0
- package/dist/core/cost_meter.js +111 -0
- package/dist/core/cost_meter.js.map +1 -0
- package/dist/core/cost_router.d.ts +106 -0
- package/dist/core/cost_router.d.ts.map +1 -0
- package/dist/core/cost_router.js +465 -0
- package/dist/core/cost_router.js.map +1 -0
- package/dist/core/doctrine_resolver.d.ts +23 -0
- package/dist/core/doctrine_resolver.d.ts.map +1 -0
- package/dist/core/doctrine_resolver.js +108 -0
- package/dist/core/doctrine_resolver.js.map +1 -0
- package/dist/core/error_catalog.d.ts +80 -0
- package/dist/core/error_catalog.d.ts.map +1 -0
- package/dist/core/error_catalog.js +168 -0
- package/dist/core/error_catalog.js.map +1 -0
- package/dist/core/error_formatter.d.ts +30 -0
- package/dist/core/error_formatter.d.ts.map +1 -0
- package/dist/core/error_formatter.js +155 -0
- package/dist/core/error_formatter.js.map +1 -0
- package/dist/core/incomplete_detector.d.ts +51 -0
- package/dist/core/incomplete_detector.d.ts.map +1 -0
- package/dist/core/incomplete_detector.js +140 -0
- package/dist/core/incomplete_detector.js.map +1 -0
- package/dist/core/learnings_client.d.ts +104 -0
- package/dist/core/learnings_client.d.ts.map +1 -0
- package/dist/core/learnings_client.js +262 -0
- package/dist/core/learnings_client.js.map +1 -0
- package/dist/core/limits_config.d.ts +76 -0
- package/dist/core/limits_config.d.ts.map +1 -0
- package/dist/core/limits_config.js +297 -0
- package/dist/core/limits_config.js.map +1 -0
- package/dist/core/provider_keys.d.ts +35 -0
- package/dist/core/provider_keys.d.ts.map +1 -0
- package/dist/core/provider_keys.js +260 -0
- package/dist/core/provider_keys.js.map +1 -0
- package/dist/core/reasoning_gate.d.ts +72 -0
- package/dist/core/reasoning_gate.d.ts.map +1 -0
- package/dist/core/reasoning_gate.js +192 -0
- package/dist/core/reasoning_gate.js.map +1 -0
- package/dist/core/shell_classifier.d.ts +49 -0
- package/dist/core/shell_classifier.d.ts.map +1 -0
- package/dist/core/shell_classifier.js +159 -0
- package/dist/core/shell_classifier.js.map +1 -0
- package/dist/core/sq_resolver.d.ts +14 -0
- package/dist/core/sq_resolver.d.ts.map +1 -0
- package/dist/core/sq_resolver.js +230 -0
- package/dist/core/sq_resolver.js.map +1 -0
- package/dist/core/truncation_detector.d.ts +68 -0
- package/dist/core/truncation_detector.d.ts.map +1 -0
- package/dist/core/truncation_detector.js +115 -0
- package/dist/core/truncation_detector.js.map +1 -0
- package/dist/core/turn_classifier.d.ts +62 -0
- package/dist/core/turn_classifier.d.ts.map +1 -0
- package/dist/core/turn_classifier.js +213 -0
- package/dist/core/turn_classifier.js.map +1 -0
- package/dist/core/whats_new.d.ts +42 -0
- package/dist/core/whats_new.d.ts.map +1 -0
- package/dist/core/whats_new.js +214 -0
- package/dist/core/whats_new.js.map +1 -0
- package/dist/deploy/adapter.d.ts +93 -0
- package/dist/deploy/adapter.d.ts.map +1 -0
- package/dist/deploy/adapter.js +42 -0
- package/dist/deploy/adapter.js.map +1 -0
- package/dist/deploy/aws_adapter.d.ts +28 -0
- package/dist/deploy/aws_adapter.d.ts.map +1 -0
- package/dist/deploy/aws_adapter.js +98 -0
- package/dist/deploy/aws_adapter.js.map +1 -0
- package/dist/deploy/cloudflare.d.ts +24 -0
- package/dist/deploy/cloudflare.d.ts.map +1 -0
- package/dist/deploy/cloudflare.js +169 -0
- package/dist/deploy/cloudflare.js.map +1 -0
- package/dist/docs/LIMITED_RESPONSIBILITY.md +216 -0
- package/dist/docs/PRIVACY_POLICY.md +169 -0
- package/dist/docs/SQ.md +1397 -0
- package/dist/docs/SQ_BY_STEP.yaml +147 -0
- package/dist/docs/doctrine/accessibility.md +78 -0
- package/dist/docs/doctrine/agent-orchestrator.md +76 -0
- package/dist/docs/doctrine/byok-vs-managed.md +81 -0
- package/dist/docs/doctrine/cost-router-escalation.md +73 -0
- package/dist/docs/doctrine/explain-results.md +90 -0
- package/dist/docs/doctrine/g-doc.md +46 -0
- package/dist/docs/doctrine/gates.md +21 -0
- package/dist/docs/doctrine/lessons-workflow.md +68 -0
- package/dist/docs/doctrine/mcp-bridge-lifecycle.md +75 -0
- package/dist/docs/doctrine/nac3-attrs.md +23 -0
- package/dist/docs/doctrine/office-tools.md +102 -0
- package/dist/docs/doctrine/pizarron.md +52 -0
- package/dist/docs/doctrine/r8-modal.md +60 -0
- package/dist/docs/doctrine/safety-refusals.md +73 -0
- package/dist/docs/doctrine/verb-composition.md +68 -0
- package/dist/docs/doctrine/workflow-phases.md +108 -0
- package/dist/docs/doctrine/workflow.md +58 -0
- package/dist/docs/doctrine/yf-commands.md +49 -0
- package/dist/json/query.d.ts +38 -0
- package/dist/json/query.d.ts.map +1 -0
- package/dist/json/query.js +177 -0
- package/dist/json/query.js.map +1 -0
- package/dist/license/hito4_client.d.ts +19 -0
- package/dist/license/hito4_client.d.ts.map +1 -1
- package/dist/license/hito4_client.js +110 -0
- package/dist/license/hito4_client.js.map +1 -1
- package/dist/license/index.d.ts.map +1 -1
- package/dist/license/index.js +7 -0
- package/dist/license/index.js.map +1 -1
- package/dist/license/sync.d.ts +54 -0
- package/dist/license/sync.d.ts.map +1 -0
- package/dist/license/sync.js +138 -0
- package/dist/license/sync.js.map +1 -0
- package/dist/llm/cohere_client.d.ts +81 -0
- package/dist/llm/cohere_client.d.ts.map +1 -0
- package/dist/llm/cohere_client.js +195 -0
- package/dist/llm/cohere_client.js.map +1 -0
- package/dist/llm/deepseek_client.d.ts +63 -0
- package/dist/llm/deepseek_client.d.ts.map +1 -0
- package/dist/llm/deepseek_client.js +188 -0
- package/dist/llm/deepseek_client.js.map +1 -0
- package/dist/llm/gemini_client.d.ts +78 -0
- package/dist/llm/gemini_client.d.ts.map +1 -0
- package/dist/llm/gemini_client.js +189 -0
- package/dist/llm/gemini_client.js.map +1 -0
- package/dist/llm/managed_client.d.ts +70 -0
- package/dist/llm/managed_client.d.ts.map +1 -0
- package/dist/llm/managed_client.js +251 -0
- package/dist/llm/managed_client.js.map +1 -0
- package/dist/llm/mistral_client.d.ts +54 -0
- package/dist/llm/mistral_client.d.ts.map +1 -0
- package/dist/llm/mistral_client.js +174 -0
- package/dist/llm/mistral_client.js.map +1 -0
- package/dist/llm/multi_provider_client.d.ts +57 -0
- package/dist/llm/multi_provider_client.d.ts.map +1 -0
- package/dist/llm/multi_provider_client.js +109 -0
- package/dist/llm/multi_provider_client.js.map +1 -0
- package/dist/llm/openai_client.d.ts +77 -0
- package/dist/llm/openai_client.d.ts.map +1 -0
- package/dist/llm/openai_client.js +200 -0
- package/dist/llm/openai_client.js.map +1 -0
- package/dist/llm/xai_client.d.ts +51 -0
- package/dist/llm/xai_client.d.ts.map +1 -0
- package/dist/llm/xai_client.js +174 -0
- package/dist/llm/xai_client.js.map +1 -0
- package/dist/mcp/bridge_registry.d.ts +77 -0
- package/dist/mcp/bridge_registry.d.ts.map +1 -0
- package/dist/mcp/bridge_registry.js +220 -0
- package/dist/mcp/bridge_registry.js.map +1 -0
- package/dist/mcp/config.d.ts +25 -0
- package/dist/mcp/config.d.ts.map +1 -0
- package/dist/mcp/config.js +116 -0
- package/dist/mcp/config.js.map +1 -0
- package/dist/mcp/protocol_client.d.ts +63 -0
- package/dist/mcp/protocol_client.d.ts.map +1 -0
- package/dist/mcp/protocol_client.js +340 -0
- package/dist/mcp/protocol_client.js.map +1 -0
- package/dist/mcp/state.d.ts +38 -0
- package/dist/mcp/state.d.ts.map +1 -0
- package/dist/mcp/state.js +144 -0
- package/dist/mcp/state.js.map +1 -0
- package/dist/migrate/ai-decorator.d.ts.map +1 -1
- package/dist/migrate/ai-decorator.js +33 -145
- package/dist/migrate/ai-decorator.js.map +1 -1
- package/dist/nac3/approval_queue.d.ts +36 -0
- package/dist/nac3/approval_queue.d.ts.map +1 -0
- package/dist/nac3/approval_queue.js +105 -0
- package/dist/nac3/approval_queue.js.map +1 -0
- package/dist/nac3/backend_tools.d.ts +89 -0
- package/dist/nac3/backend_tools.d.ts.map +1 -0
- package/dist/nac3/backend_tools.js +271 -0
- package/dist/nac3/backend_tools.js.map +1 -0
- package/dist/nac3/dispatch_log.d.ts +35 -0
- package/dist/nac3/dispatch_log.d.ts.map +1 -0
- package/dist/nac3/dispatch_log.js +126 -0
- package/dist/nac3/dispatch_log.js.map +1 -0
- package/dist/nac3/internal_manifest.d.ts +62 -0
- package/dist/nac3/internal_manifest.d.ts.map +1 -0
- package/dist/nac3/internal_manifest.js +1846 -0
- package/dist/nac3/internal_manifest.js.map +1 -0
- package/dist/nac3/manifest_lazy.d.ts +71 -0
- package/dist/nac3/manifest_lazy.d.ts.map +1 -0
- package/dist/nac3/manifest_lazy.js +141 -0
- package/dist/nac3/manifest_lazy.js.map +1 -0
- package/dist/nac3/verb_tier_map.d.ts +80 -0
- package/dist/nac3/verb_tier_map.d.ts.map +1 -0
- package/dist/nac3/verb_tier_map.js +159 -0
- package/dist/nac3/verb_tier_map.js.map +1 -0
- package/dist/office/excel.d.ts +110 -0
- package/dist/office/excel.d.ts.map +1 -0
- package/dist/office/excel.js +276 -0
- package/dist/office/excel.js.map +1 -0
- package/dist/office/pdf.d.ts +35 -0
- package/dist/office/pdf.d.ts.map +1 -0
- package/dist/office/pdf.js +70 -0
- package/dist/office/pdf.js.map +1 -0
- package/dist/office/word.d.ts +64 -0
- package/dist/office/word.d.ts.map +1 -0
- package/dist/office/word.js +243 -0
- package/dist/office/word.js.map +1 -0
- package/dist/qa/brain_matrix/ab_runner.d.ts +44 -0
- package/dist/qa/brain_matrix/ab_runner.d.ts.map +1 -0
- package/dist/qa/brain_matrix/ab_runner.js +144 -0
- package/dist/qa/brain_matrix/ab_runner.js.map +1 -0
- package/dist/qa/brain_matrix/brains.json +80 -0
- package/dist/qa/brain_matrix/compare.d.ts +27 -0
- package/dist/qa/brain_matrix/compare.d.ts.map +1 -0
- package/dist/qa/brain_matrix/compare.js +122 -0
- package/dist/qa/brain_matrix/compare.js.map +1 -0
- package/dist/qa/brain_matrix/fake_brain.d.ts +36 -0
- package/dist/qa/brain_matrix/fake_brain.d.ts.map +1 -0
- package/dist/qa/brain_matrix/fake_brain.js +27 -0
- package/dist/qa/brain_matrix/fake_brain.js.map +1 -0
- package/dist/qa/brain_matrix/fixtures/scenario_a11y_announce_intent.json +22 -0
- package/dist/qa/brain_matrix/fixtures/scenario_a11y_announce_no_speak_default.json +23 -0
- package/dist/qa/brain_matrix/fixtures/scenario_a11y_consecutive_announces.json +37 -0
- package/dist/qa/brain_matrix/fixtures/scenario_a11y_focus_after_action.json +22 -0
- package/dist/qa/brain_matrix/fixtures/scenario_a11y_label_with_shortcut.json +22 -0
- package/dist/qa/brain_matrix/fixtures/scenario_announce_min_tool_calls.json +23 -0
- package/dist/qa/brain_matrix/fixtures/scenario_app_invoke_happy_path.json +65 -0
- package/dist/qa/brain_matrix/fixtures/scenario_app_no_invent_without_backend.json +18 -0
- package/dist/qa/brain_matrix/fixtures/scenario_app_schema_fail_recover.json +48 -0
- package/dist/qa/brain_matrix/fixtures/scenario_approval_modal_no_redundancy.json +21 -0
- package/dist/qa/brain_matrix/fixtures/scenario_args_redacted_in_audit.json +17 -0
- package/dist/qa/brain_matrix/fixtures/scenario_audit_consumers_intent.json +19 -0
- package/dist/qa/brain_matrix/fixtures/scenario_audit_consumers_intent_en.json +19 -0
- package/dist/qa/brain_matrix/fixtures/scenario_audit_log_on_destructive.json +18 -0
- package/dist/qa/brain_matrix/fixtures/scenario_brain_explains_after_invoke.json +28 -0
- package/dist/qa/brain_matrix/fixtures/scenario_byok_on_managed_brain_overflow.json +28 -0
- package/dist/qa/brain_matrix/fixtures/scenario_byok_required_policy.json +35 -0
- package/dist/qa/brain_matrix/fixtures/scenario_concise_no_loop.json +23 -0
- package/dist/qa/brain_matrix/fixtures/scenario_consult_nac_spec_intent.json +19 -0
- package/dist/qa/brain_matrix/fixtures/scenario_contradiction_rfp_cost.json +38 -0
- package/dist/qa/brain_matrix/fixtures/scenario_cost_router_attachment_frontier.json +24 -0
- package/dist/qa/brain_matrix/fixtures/scenario_cost_router_escalation_explicit.json +23 -0
- package/dist/qa/brain_matrix/fixtures/scenario_cost_router_idle_reset.json +24 -0
- package/dist/qa/brain_matrix/fixtures/scenario_csv_via_excel_read.json +22 -0
- package/dist/qa/brain_matrix/fixtures/scenario_destructive_no_text_confirm.json +20 -0
- package/dist/qa/brain_matrix/fixtures/scenario_diff_explains_changes.json +32 -0
- package/dist/qa/brain_matrix/fixtures/scenario_doctrine_after_unknown_intent.json +17 -0
- package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_a11y.json +24 -0
- package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_agent_orchestrator.json +24 -0
- package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_byok_vs_managed.json +24 -0
- package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_cost_router.json +24 -0
- package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_g_doc.json +24 -0
- package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_gates.json +23 -0
- package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_intent_en.json +19 -0
- package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_lessons_workflow.json +24 -0
- package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_mcp_lifecycle.json +24 -0
- package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_nac3_attrs.json +24 -0
- package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_office.json +24 -0
- package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_pizarron.json +23 -0
- package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_r8_modal.json +23 -0
- package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_workflow.json +23 -0
- package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_workflow_phases.json +24 -0
- package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_yf_commands.json +24 -0
- package/dist/qa/brain_matrix/fixtures/scenario_doctrine_explain_results.json +22 -0
- package/dist/qa/brain_matrix/fixtures/scenario_doctrine_safety_refusals.json +22 -0
- package/dist/qa/brain_matrix/fixtures/scenario_doctrine_verb_composition.json +22 -0
- package/dist/qa/brain_matrix/fixtures/scenario_eco_defers_complex.json +17 -0
- package/dist/qa/brain_matrix/fixtures/scenario_eco_short_query.json +27 -0
- package/dist/qa/brain_matrix/fixtures/scenario_env_list_intent.json +20 -0
- package/dist/qa/brain_matrix/fixtures/scenario_env_list_intent_en.json +20 -0
- package/dist/qa/brain_matrix/fixtures/scenario_env_no_secret_leak.json +21 -0
- package/dist/qa/brain_matrix/fixtures/scenario_env_secret_suppression.json +35 -0
- package/dist/qa/brain_matrix/fixtures/scenario_env_secret_suppression_en.json +21 -0
- package/dist/qa/brain_matrix/fixtures/scenario_excel_append_handles_csv_refusal.json +28 -0
- package/dist/qa/brain_matrix/fixtures/scenario_excel_append_sheet_intent.json +20 -0
- package/dist/qa/brain_matrix/fixtures/scenario_excel_append_sheet_intent_en.json +20 -0
- package/dist/qa/brain_matrix/fixtures/scenario_excel_append_then_list.json +34 -0
- package/dist/qa/brain_matrix/fixtures/scenario_excel_list_sheets_first.json +22 -0
- package/dist/qa/brain_matrix/fixtures/scenario_excel_sheet_named.json +23 -0
- package/dist/qa/brain_matrix/fixtures/scenario_explain_voice_yes.json +22 -0
- package/dist/qa/brain_matrix/fixtures/scenario_explains_forge_error.json +39 -0
- package/dist/qa/brain_matrix/fixtures/scenario_focus_after_modal_open.json +29 -0
- package/dist/qa/brain_matrix/fixtures/scenario_fs_find_intent.json +21 -0
- package/dist/qa/brain_matrix/fixtures/scenario_fs_find_intent_en.json +20 -0
- package/dist/qa/brain_matrix/fixtures/scenario_fs_find_with_glob.json +22 -0
- package/dist/qa/brain_matrix/fixtures/scenario_fs_mkdir_intent.json +20 -0
- package/dist/qa/brain_matrix/fixtures/scenario_fs_move_intent.json +20 -0
- package/dist/qa/brain_matrix/fixtures/scenario_fs_read_handles_missing.json +28 -0
- package/dist/qa/brain_matrix/fixtures/scenario_fs_stat_before_read.json +22 -0
- package/dist/qa/brain_matrix/fixtures/scenario_generated_app_nac3_default.json +24 -0
- package/dist/qa/brain_matrix/fixtures/scenario_git_branch_list_intent.json +20 -0
- package/dist/qa/brain_matrix/fixtures/scenario_git_diff_intent.json +20 -0
- package/dist/qa/brain_matrix/fixtures/scenario_git_log_intent.json +20 -0
- package/dist/qa/brain_matrix/fixtures/scenario_git_log_intent_en.json +20 -0
- package/dist/qa/brain_matrix/fixtures/scenario_git_pull_intent.json +19 -0
- package/dist/qa/brain_matrix/fixtures/scenario_git_push_intent.json +20 -0
- package/dist/qa/brain_matrix/fixtures/scenario_git_show_metadata_only.json +22 -0
- package/dist/qa/brain_matrix/fixtures/scenario_git_status_branch_combo.json +44 -0
- package/dist/qa/brain_matrix/fixtures/scenario_git_status_intent.json +20 -0
- package/dist/qa/brain_matrix/fixtures/scenario_git_status_intent_en.json +20 -0
- package/dist/qa/brain_matrix/fixtures/scenario_github_clone_repo_intent.json +20 -0
- package/dist/qa/brain_matrix/fixtures/scenario_github_create_repo_intent.json +20 -0
- package/dist/qa/brain_matrix/fixtures/scenario_id_format_in_reply.json +27 -0
- package/dist/qa/brain_matrix/fixtures/scenario_iterations_idempotent_adenda.json +27 -0
- package/dist/qa/brain_matrix/fixtures/scenario_iterations_query_history.json +29 -0
- package/dist/qa/brain_matrix/fixtures/scenario_iterations_tracker_acknowledge.json +28 -0
- package/dist/qa/brain_matrix/fixtures/scenario_json_parse_handles_malformed.json +34 -0
- package/dist/qa/brain_matrix/fixtures/scenario_json_parse_intent.json +30 -0
- package/dist/qa/brain_matrix/fixtures/scenario_json_parse_intent_en.json +30 -0
- package/dist/qa/brain_matrix/fixtures/scenario_json_query_extract.json +23 -0
- package/dist/qa/brain_matrix/fixtures/scenario_json_stringify_intent.json +20 -0
- package/dist/qa/brain_matrix/fixtures/scenario_json_stringify_intent_en.json +20 -0
- package/dist/qa/brain_matrix/fixtures/scenario_keys_set_intent.json +20 -0
- package/dist/qa/brain_matrix/fixtures/scenario_keys_status_intent.json +20 -0
- package/dist/qa/brain_matrix/fixtures/scenario_keys_status_intent_en.json +20 -0
- package/dist/qa/brain_matrix/fixtures/scenario_lazy_complex_verb.json +27 -0
- package/dist/qa/brain_matrix/fixtures/scenario_lazy_doctrine_only_when_needed.json +17 -0
- package/dist/qa/brain_matrix/fixtures/scenario_lazy_simple_verb.json +21 -0
- package/dist/qa/brain_matrix/fixtures/scenario_lesson_recall_overrides.json +22 -0
- package/dist/qa/brain_matrix/fixtures/scenario_lifecycle_restart_app_intent.json +19 -0
- package/dist/qa/brain_matrix/fixtures/scenario_lifecycle_run_app_intent.json +19 -0
- package/dist/qa/brain_matrix/fixtures/scenario_lifecycle_run_app_intent_en.json +19 -0
- package/dist/qa/brain_matrix/fixtures/scenario_lifecycle_stop_app_intent.json +20 -0
- package/dist/qa/brain_matrix/fixtures/scenario_lifecycle_stop_app_intent_en.json +20 -0
- package/dist/qa/brain_matrix/fixtures/scenario_long_doctrine_no_truncate.json +23 -0
- package/dist/qa/brain_matrix/fixtures/scenario_manifest_read_intent.json +19 -0
- package/dist/qa/brain_matrix/fixtures/scenario_manual_open_intent.json +19 -0
- package/dist/qa/brain_matrix/fixtures/scenario_mcp_bridge_unreachable_graceful.json +39 -0
- package/dist/qa/brain_matrix/fixtures/scenario_mcp_disabled_bridge_no_verbs.json +18 -0
- package/dist/qa/brain_matrix/fixtures/scenario_mcp_discover_tools_intent.json +19 -0
- package/dist/qa/brain_matrix/fixtures/scenario_mcp_invariant_1_no_verbs.json +19 -0
- package/dist/qa/brain_matrix/fixtures/scenario_mcp_invoke_two_hop.json +68 -0
- package/dist/qa/brain_matrix/fixtures/scenario_mcp_invoke_with_auth_loaded.json +76 -0
- package/dist/qa/brain_matrix/fixtures/scenario_mcp_revoked_token_graceful.json +33 -0
- package/dist/qa/brain_matrix/fixtures/scenario_mcp_set_creds_intent.json +21 -0
- package/dist/qa/brain_matrix/fixtures/scenario_mcp_set_creds_no_token_arg.json +27 -0
- package/dist/qa/brain_matrix/fixtures/scenario_mcp_show_tools_before_invoke.json +44 -0
- package/dist/qa/brain_matrix/fixtures/scenario_mcp_toggle_intent.json +20 -0
- package/dist/qa/brain_matrix/fixtures/scenario_multi_turn_clarify_then_act.json +24 -0
- package/dist/qa/brain_matrix/fixtures/scenario_nac3_attrs_doctrine.json +53 -0
- package/dist/qa/brain_matrix/fixtures/scenario_nac3_discover_schemas_intent.json +19 -0
- package/dist/qa/brain_matrix/fixtures/scenario_nac3_required_attr_missing.json +19 -0
- package/dist/qa/brain_matrix/fixtures/scenario_no_bare_ok_after_destructive.json +27 -0
- package/dist/qa/brain_matrix/fixtures/scenario_no_global_learnings_no_recall.json +20 -0
- package/dist/qa/brain_matrix/fixtures/scenario_no_id_leak_in_reply.json +24 -0
- package/dist/qa/brain_matrix/fixtures/scenario_no_invent_verb.json +18 -0
- package/dist/qa/brain_matrix/fixtures/scenario_no_loop_after_repeated_fail.json +42 -0
- package/dist/qa/brain_matrix/fixtures/scenario_no_password_echo.json +28 -0
- package/dist/qa/brain_matrix/fixtures/scenario_npm_outdated_all_current.json +28 -0
- package/dist/qa/brain_matrix/fixtures/scenario_npm_outdated_intent.json +20 -0
- package/dist/qa/brain_matrix/fixtures/scenario_npm_outdated_intent_en.json +20 -0
- package/dist/qa/brain_matrix/fixtures/scenario_npm_outdated_then_explain.json +35 -0
- package/dist/qa/brain_matrix/fixtures/scenario_office_excel_read_intent.json +24 -0
- package/dist/qa/brain_matrix/fixtures/scenario_office_excel_write_required_args.json +23 -0
- package/dist/qa/brain_matrix/fixtures/scenario_office_overwrite_explicit.json +23 -0
- package/dist/qa/brain_matrix/fixtures/scenario_office_word_write_intent.json +27 -0
- package/dist/qa/brain_matrix/fixtures/scenario_panel_open_settings_intent.json +19 -0
- package/dist/qa/brain_matrix/fixtures/scenario_panel_send_message_intent.json +19 -0
- package/dist/qa/brain_matrix/fixtures/scenario_pdf_read_intent.json +22 -0
- package/dist/qa/brain_matrix/fixtures/scenario_pizarron_clear_tab_explicit_close.json +17 -0
- package/dist/qa/brain_matrix/fixtures/scenario_pizarron_for_chart.json +30 -0
- package/dist/qa/brain_matrix/fixtures/scenario_pizarron_for_long_table.json +28 -0
- package/dist/qa/brain_matrix/fixtures/scenario_pizarron_read_tab_intent.json +20 -0
- package/dist/qa/brain_matrix/fixtures/scenario_pizarron_render_not_inline.json +20 -0
- package/dist/qa/brain_matrix/fixtures/scenario_prefer_native_read_file.json +28 -0
- package/dist/qa/brain_matrix/fixtures/scenario_prefer_native_verb_over_shell.json +22 -0
- package/dist/qa/brain_matrix/fixtures/scenario_prefer_native_workflow_state.json +28 -0
- package/dist/qa/brain_matrix/fixtures/scenario_project_init_intent.json +20 -0
- package/dist/qa/brain_matrix/fixtures/scenario_project_set_root_intent.json +20 -0
- package/dist/qa/brain_matrix/fixtures/scenario_promote_lesson_after_correction.json +17 -0
- package/dist/qa/brain_matrix/fixtures/scenario_r8_destructive_shell_exec.json +21 -0
- package/dist/qa/brain_matrix/fixtures/scenario_read_then_parse_order.json +36 -0
- package/dist/qa/brain_matrix/fixtures/scenario_reader_bookmark_jump_intent.json +19 -0
- package/dist/qa/brain_matrix/fixtures/scenario_reader_bookmark_set_intent.json +19 -0
- package/dist/qa/brain_matrix/fixtures/scenario_reader_for_long_doc.json +21 -0
- package/dist/qa/brain_matrix/fixtures/scenario_reader_list_docs_intent.json +19 -0
- package/dist/qa/brain_matrix/fixtures/scenario_reader_next_block_intent.json +19 -0
- package/dist/qa/brain_matrix/fixtures/scenario_reader_read_section_intent.json +19 -0
- package/dist/qa/brain_matrix/fixtures/scenario_reader_recap_intent.json +19 -0
- package/dist/qa/brain_matrix/fixtures/scenario_reader_search_intent.json +20 -0
- package/dist/qa/brain_matrix/fixtures/scenario_reader_search_intent_en.json +20 -0
- package/dist/qa/brain_matrix/fixtures/scenario_refuses_blanket_chmod_777.json +17 -0
- package/dist/qa/brain_matrix/fixtures/scenario_refuses_bypass_approval_modal.json +18 -0
- package/dist/qa/brain_matrix/fixtures/scenario_refuses_delete_critical_en.json +18 -0
- package/dist/qa/brain_matrix/fixtures/scenario_refuses_disable_vault_encryption.json +18 -0
- package/dist/qa/brain_matrix/fixtures/scenario_refuses_drop_database.json +17 -0
- package/dist/qa/brain_matrix/fixtures/scenario_refuses_force_push_main.json +17 -0
- package/dist/qa/brain_matrix/fixtures/scenario_refuses_force_push_main_en.json +17 -0
- package/dist/qa/brain_matrix/fixtures/scenario_refuses_leak_vault_en.json +18 -0
- package/dist/qa/brain_matrix/fixtures/scenario_refuses_modify_node_modules.json +17 -0
- package/dist/qa/brain_matrix/fixtures/scenario_refuses_skip_hooks.json +17 -0
- package/dist/qa/brain_matrix/fixtures/scenario_refuses_skip_hooks_en.json +17 -0
- package/dist/qa/brain_matrix/fixtures/scenario_refuses_to_delete_critical.json +18 -0
- package/dist/qa/brain_matrix/fixtures/scenario_refuses_to_leak_vault.json +18 -0
- package/dist/qa/brain_matrix/fixtures/scenario_respects_global_learnings.json +28 -0
- package/dist/qa/brain_matrix/fixtures/scenario_respects_workflow_gate_g2.json +39 -0
- package/dist/qa/brain_matrix/fixtures/scenario_revoke_lesson_request.json +21 -0
- package/dist/qa/brain_matrix/fixtures/scenario_sq_rules_active.json +30 -0
- package/dist/qa/brain_matrix/fixtures/scenario_text_diff_intent.json +20 -0
- package/dist/qa/brain_matrix/fixtures/scenario_text_diff_intent_en.json +20 -0
- package/dist/qa/brain_matrix/fixtures/scenario_truncated_response_retry.json +22 -0
- package/dist/qa/brain_matrix/fixtures/scenario_unknown_command_clarify.json +23 -0
- package/dist/qa/brain_matrix/fixtures/scenario_url_parse_compose.json +23 -0
- package/dist/qa/brain_matrix/fixtures/scenario_url_parse_handles_invalid.json +27 -0
- package/dist/qa/brain_matrix/fixtures/scenario_url_parse_intent.json +20 -0
- package/dist/qa/brain_matrix/fixtures/scenario_url_parse_intent_en.json +20 -0
- package/dist/qa/brain_matrix/fixtures/scenario_url_parse_then_inspect_query.json +28 -0
- package/dist/qa/brain_matrix/fixtures/scenario_url_then_stringify_order.json +34 -0
- package/dist/qa/brain_matrix/fixtures/scenario_user_just_greets.json +17 -0
- package/dist/qa/brain_matrix/fixtures/scenario_user_overrides_proceeds.json +24 -0
- package/dist/qa/brain_matrix/fixtures/scenario_user_revokes_in_middle.json +22 -0
- package/dist/qa/brain_matrix/fixtures/scenario_voice_open_pizarron.json +21 -0
- package/dist/qa/brain_matrix/fixtures/scenario_word_outline_extraction.json +22 -0
- package/dist/qa/brain_matrix/fixtures/scenario_word_overwrite_explicit.json +20 -0
- package/dist/qa/brain_matrix/fixtures/scenario_word_section_count.json +28 -0
- package/dist/qa/brain_matrix/fixtures/scenario_workflow_doctrine.json +53 -0
- package/dist/qa/brain_matrix/fixtures/scenario_workflow_done_specs.json +32 -0
- package/dist/qa/brain_matrix/fixtures/scenario_workflow_intent_capture.json +22 -0
- package/dist/qa/brain_matrix/fixtures/scenario_workflow_phase_jump_block.json +26 -0
- package/dist/qa/brain_matrix/fixtures/scenario_workflow_phase_v_step_15.json +41 -0
- package/dist/qa/brain_matrix/fixtures/scenario_workflow_run_step_intent.json +19 -0
- package/dist/qa/brain_matrix/fixtures/scenario_workflow_set_intent.json +20 -0
- package/dist/qa/brain_matrix/fixtures/scenario_workflow_state_injection.json +32 -0
- package/dist/qa/brain_matrix/fixtures/scenario_workflow_state_recovers_after_clarify.json +25 -0
- package/dist/qa/brain_matrix/fixtures/scenario_workflow_step_1_intake.json +24 -0
- package/dist/qa/brain_matrix/fixtures/scenario_yf_command_doctrine.json +56 -0
- package/dist/qa/brain_matrix/fixtures/scenario_yf_doctrine_list_intent.json +19 -0
- package/dist/qa/brain_matrix/fixtures/scenario_yf_qa_compare_intent.json +17 -0
- package/dist/qa/brain_matrix/invariants.d.ts +18 -0
- package/dist/qa/brain_matrix/invariants.d.ts.map +1 -0
- package/dist/qa/brain_matrix/invariants.js +333 -0
- package/dist/qa/brain_matrix/invariants.js.map +1 -0
- package/dist/qa/brain_matrix/report.d.ts +12 -0
- package/dist/qa/brain_matrix/report.d.ts.map +1 -0
- package/dist/qa/brain_matrix/report.js +131 -0
- package/dist/qa/brain_matrix/report.js.map +1 -0
- package/dist/qa/brain_matrix/runner.d.ts +31 -0
- package/dist/qa/brain_matrix/runner.d.ts.map +1 -0
- package/dist/qa/brain_matrix/runner.js +561 -0
- package/dist/qa/brain_matrix/runner.js.map +1 -0
- package/dist/qa/brain_matrix/types.d.ts +180 -0
- package/dist/qa/brain_matrix/types.d.ts.map +1 -0
- package/dist/qa/brain_matrix/types.js +2 -0
- package/dist/qa/brain_matrix/types.js.map +1 -0
- package/dist/qa/brain_matrix/validate_scenario.d.ts +23 -0
- package/dist/qa/brain_matrix/validate_scenario.d.ts.map +1 -0
- package/dist/qa/brain_matrix/validate_scenario.js +128 -0
- package/dist/qa/brain_matrix/validate_scenario.js.map +1 -0
- package/dist/support/github_dispatcher.d.ts +36 -0
- package/dist/support/github_dispatcher.d.ts.map +1 -0
- package/dist/support/github_dispatcher.js +292 -0
- package/dist/support/github_dispatcher.js.map +1 -0
- package/dist/support/reports.d.ts +31 -0
- package/dist/support/reports.d.ts.map +1 -0
- package/dist/support/reports.js +162 -0
- package/dist/support/reports.js.map +1 -0
- package/dist/telemetry/usage.d.ts +67 -0
- package/dist/telemetry/usage.d.ts.map +1 -0
- package/dist/telemetry/usage.js +208 -0
- package/dist/telemetry/usage.js.map +1 -0
- package/dist/version.d.ts +1 -1
- package/dist/version.d.ts.map +1 -1
- package/dist/version.js +1 -1
- package/dist/version.js.map +1 -1
- package/dist/voice/config.d.ts +12 -0
- package/dist/voice/config.d.ts.map +1 -1
- package/dist/voice/config.js +25 -2
- package/dist/voice/config.js.map +1 -1
- package/dist/voice/providers/google.d.ts +9 -0
- package/dist/voice/providers/google.d.ts.map +1 -1
- package/dist/voice/providers/google.js +197 -28
- package/dist/voice/providers/google.js.map +1 -1
- package/dist/voice/router.d.ts +10 -0
- package/dist/voice/router.d.ts.map +1 -1
- package/dist/voice/router.js +39 -20
- package/dist/voice/router.js.map +1 -1
- package/dist/voice/types.d.ts +5 -2
- package/dist/voice/types.d.ts.map +1 -1
- package/dist/voice/types.js.map +1 -1
- package/dist/workflow/phase_inference.d.ts +56 -0
- package/dist/workflow/phase_inference.d.ts.map +1 -0
- package/dist/workflow/phase_inference.js +107 -0
- package/dist/workflow/phase_inference.js.map +1 -0
- package/dist/workflow/state.d.ts +238 -0
- package/dist/workflow/state.d.ts.map +1 -0
- package/dist/workflow/state.js +213 -0
- package/dist/workflow/state.js.map +1 -0
- package/docs/SQ.md +1397 -0
- package/docs/SQ_BY_STEP.yaml +147 -0
- package/docs/doctrine/accessibility.md +78 -0
- package/docs/doctrine/agent-orchestrator.md +76 -0
- package/docs/doctrine/byok-vs-managed.md +81 -0
- package/docs/doctrine/cost-router-escalation.md +73 -0
- package/docs/doctrine/explain-results.md +90 -0
- package/docs/doctrine/g-doc.md +46 -0
- package/docs/doctrine/gates.md +21 -0
- package/docs/doctrine/lessons-workflow.md +68 -0
- package/docs/doctrine/mcp-bridge-lifecycle.md +75 -0
- package/docs/doctrine/nac3-attrs.md +23 -0
- package/docs/doctrine/office-tools.md +102 -0
- package/docs/doctrine/pizarron.md +52 -0
- package/docs/doctrine/r8-modal.md +60 -0
- package/docs/doctrine/safety-refusals.md +73 -0
- package/docs/doctrine/verb-composition.md +68 -0
- package/docs/doctrine/workflow-phases.md +108 -0
- package/docs/doctrine/workflow.md +58 -0
- package/docs/doctrine/yf-commands.md +49 -0
- package/package.json +20 -14
- package/src/i18n/catalogs/ar.json +55 -10
- package/src/i18n/catalogs/de.json +55 -10
- package/src/i18n/catalogs/en.json +66 -1
- package/src/i18n/catalogs/es.json +66 -1
- package/src/i18n/catalogs/fr.json +55 -10
- package/src/i18n/catalogs/hi.json +55 -10
- package/src/i18n/catalogs/it.json +55 -10
- package/src/i18n/catalogs/ja.json +55 -10
- package/src/i18n/catalogs/pt.json +55 -10
- package/src/i18n/catalogs/zh.json +55 -10
- package/templates/nextjs-app/README.md +48 -0
- package/templates/nextjs-app/next.config.js +8 -0
- package/templates/nextjs-app/package.json +33 -0
- package/templates/nextjs-app/src/app/globals.css +43 -0
- package/templates/nextjs-app/src/app/layout.tsx +29 -0
- package/templates/nextjs-app/src/app/page.tsx +63 -0
- package/templates/nextjs-app/src/nac/manifest.ts +36 -0
- package/templates/nextjs-app/tsconfig.json +21 -0
- package/templates/nextjs-app/yujin.forge.json +11 -0
package/dist/chat/claude.js
CHANGED
|
@@ -27,6 +27,7 @@ import { promises as fs } from 'node:fs';
|
|
|
27
27
|
import path from 'node:path';
|
|
28
28
|
import { configDir } from '../license/index.js';
|
|
29
29
|
import { Vault } from '../vault/store.js';
|
|
30
|
+
import { recordUsage } from '../telemetry/usage.js';
|
|
30
31
|
export class ConfigurationError extends Error {
|
|
31
32
|
constructor(message) {
|
|
32
33
|
super(message);
|
|
@@ -46,29 +47,38 @@ export class ClaudeApiError extends Error {
|
|
|
46
47
|
*
|
|
47
48
|
* Priority order (first match wins):
|
|
48
49
|
* 1. Explicitly injected key (test seam).
|
|
49
|
-
* 2.
|
|
50
|
-
*
|
|
51
|
-
*
|
|
52
|
-
*
|
|
53
|
-
*
|
|
50
|
+
* 2. BYOK provider_keys.json (alpha.4+ canonical: `yf keys setup`).
|
|
51
|
+
* 3. Vault slot `anthropic` (V0.4 path, kept).
|
|
52
|
+
* 4. process.env.YUJIN_ANTHROPIC_API_KEY (legacy env var).
|
|
53
|
+
* 5. process.env.ANTHROPIC_API_KEY (standard Anthropic env).
|
|
54
|
+
* 6. ~/.yujin-forge/api-key.txt (legacy file path).
|
|
54
55
|
*
|
|
55
56
|
* Throws ConfigurationError when nothing is found. The error
|
|
56
|
-
* message lists
|
|
57
|
-
*
|
|
57
|
+
* message lists the options in current-recommended order so a
|
|
58
|
+
* fresh user is pointed at `yf keys setup` first.
|
|
58
59
|
*
|
|
59
|
-
* The
|
|
60
|
-
*
|
|
61
|
-
*
|
|
62
|
-
*
|
|
63
|
-
*
|
|
64
|
-
* who already configured Forge via env or file before V0.4
|
|
65
|
-
* landed. They are NOT deprecated -- they keep working
|
|
66
|
-
* indefinitely. The vault is just the recommended path.
|
|
60
|
+
* The BYOK provider_keys check is the NEW canonical path that
|
|
61
|
+
* lands with the post-purchase activation flow (the landing
|
|
62
|
+
* tells the user to run `yf keys setup` after their Polar
|
|
63
|
+
* subscription is live). The vault slot remains supported for
|
|
64
|
+
* users who configured Forge pre-BYOK.
|
|
67
65
|
*/
|
|
68
66
|
export async function resolveApiKey(injected) {
|
|
69
67
|
if (injected && injected.trim() !== '')
|
|
70
68
|
return injected.trim();
|
|
71
|
-
/*
|
|
69
|
+
/* 1. BYOK provider keys -- alpha.44 C1: stored in the encrypted
|
|
70
|
+
Vault (AES-256-GCM). The legacy plaintext provider_keys.json
|
|
71
|
+
gets auto-migrated by core/provider_keys.ts on first access. */
|
|
72
|
+
try {
|
|
73
|
+
const { getKey } = await import('../core/provider_keys.js');
|
|
74
|
+
const v = await getKey('anthropic_api_key');
|
|
75
|
+
if (v && v.trim() !== '')
|
|
76
|
+
return v.trim();
|
|
77
|
+
}
|
|
78
|
+
catch {
|
|
79
|
+
/* Vault unavailable -- fall through to legacy paths */
|
|
80
|
+
}
|
|
81
|
+
/* 2. Vault slot. Opens cheaply; the cost is dominated by
|
|
72
82
|
scrypt derivation (~60ms) which is acceptable for the
|
|
73
83
|
boot of a chat session. */
|
|
74
84
|
try {
|
|
@@ -85,10 +95,12 @@ export async function resolveApiKey(injected) {
|
|
|
85
95
|
env-var setups still work. The vault corruption surfaces
|
|
86
96
|
loudly when they explicitly run `yf vault list` or `set`. */
|
|
87
97
|
}
|
|
98
|
+
/* 3. + 4. Env vars. */
|
|
88
99
|
const fromEnv = process.env['YUJIN_ANTHROPIC_API_KEY']
|
|
89
100
|
?? process.env['ANTHROPIC_API_KEY'];
|
|
90
101
|
if (fromEnv && fromEnv.trim() !== '')
|
|
91
102
|
return fromEnv.trim();
|
|
103
|
+
/* 5. Legacy file. */
|
|
92
104
|
const filePath = path.join(configDir(), 'api-key.txt');
|
|
93
105
|
try {
|
|
94
106
|
const raw = await fs.readFile(filePath, 'utf-8');
|
|
@@ -100,14 +112,27 @@ export async function resolveApiKey(injected) {
|
|
|
100
112
|
if (err.code !== 'ENOENT')
|
|
101
113
|
throw err;
|
|
102
114
|
}
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
115
|
+
/* alpha.59z.14 F104 -- formatted error with what/why/fix triple.
|
|
116
|
+
* Importing the formatter lazily because resolveAnthropicKey()
|
|
117
|
+
* gets called from many code paths; we keep this fn synchronous
|
|
118
|
+
* by inlining the catalog data here. The CLI formatter wraps
|
|
119
|
+
* the thrown ConfigurationError instance into a ForgeError at
|
|
120
|
+
* the boundary (yf doctor / yf chat catch). */
|
|
121
|
+
const err = new ConfigurationError('no Anthropic API key found. Configure one of:\n'
|
|
122
|
+
+ ' - yf keys set anthropic_api_key (recommended; encrypted vault slot)\n'
|
|
123
|
+
+ ' - yf keys setup (interactive setup; brain + voice)\n'
|
|
106
124
|
+ ' - export ANTHROPIC_API_KEY=sk-ant-...\n'
|
|
125
|
+
+ ' - export YUJIN_ANTHROPIC_API_KEY=sk-ant-...\n'
|
|
107
126
|
+ ' - write the key to ~/.yujin-forge/api-key.txt');
|
|
127
|
+
/* Hydrate forge_error via the catalog so the message respects
|
|
128
|
+
* the active i18n session language (alpha.59z.15). */
|
|
129
|
+
const { renderForgeError, E_BYOK_KEY_MISSING } = await import('../core/error_catalog.js');
|
|
130
|
+
err.forge_error = renderForgeError(E_BYOK_KEY_MISSING, {
|
|
131
|
+
provider: 'anthropic', slot: 'anthropic_api_key', tier: 'frontier',
|
|
132
|
+
});
|
|
133
|
+
throw err;
|
|
108
134
|
}
|
|
109
135
|
const DEFAULT_MODEL = 'claude-sonnet-4-6';
|
|
110
|
-
const DEFAULT_MAX_TOOL_ROUNDS = 5;
|
|
111
136
|
export class ClaudeClient {
|
|
112
137
|
apiKey;
|
|
113
138
|
fetchImpl;
|
|
@@ -126,7 +151,23 @@ export class ClaudeClient {
|
|
|
126
151
|
}
|
|
127
152
|
const model = req.model ?? this.defaultModel;
|
|
128
153
|
const maxTokens = req.maxTokens ?? 1024;
|
|
129
|
-
|
|
154
|
+
/* alpha.59c -- max_tool_rounds comes from limits_config (or
|
|
155
|
+
* the caller's override). Inside the loop we re-evaluate
|
|
156
|
+
* based on the verb family of the first tool the LLM
|
|
157
|
+
* invokes so reader-heavy turns get the bigger cap
|
|
158
|
+
* automatically. Cap only grows mid-turn, never shrinks. */
|
|
159
|
+
const { readLimitsConfig, classifyVerbFamily, getMaxToolRoundsForFamily } = await import('../core/limits_config.js');
|
|
160
|
+
const limits = await readLimitsConfig();
|
|
161
|
+
const callerSpecifiedCap = req.maxToolRounds !== undefined;
|
|
162
|
+
/* alpha.59e -- when Danger Zone auto-approve is on, the user
|
|
163
|
+
* has opted in to long autonomous chains. Use the higher
|
|
164
|
+
* autonomous cap as the BASE. Caller override still wins. */
|
|
165
|
+
const autonomousMode = limits.danger_zone && limits.danger_zone.auto_approve_all === true;
|
|
166
|
+
const baseCap = autonomousMode
|
|
167
|
+
? limits.max_tool_rounds.autonomous
|
|
168
|
+
: limits.max_tool_rounds.default;
|
|
169
|
+
let maxRounds = req.maxToolRounds ?? baseCap;
|
|
170
|
+
let familyResolved = null;
|
|
130
171
|
/* Seed the conversation with the caller's history. Each round
|
|
131
172
|
appends turns; the loop terminates when the model's
|
|
132
173
|
stop_reason is anything other than 'tool_use'. */
|
|
@@ -145,8 +186,26 @@ export class ClaudeClient {
|
|
|
145
186
|
max_tokens: maxTokens,
|
|
146
187
|
messages,
|
|
147
188
|
};
|
|
148
|
-
if (req.system)
|
|
149
|
-
|
|
189
|
+
if (req.system) {
|
|
190
|
+
/* Wrap the system prompt as a cacheable content block.
|
|
191
|
+
* Anthropic prompt caching (5-min TTL) charges 10% on cache
|
|
192
|
+
* hits, 25% on cache writes. Our system prompt is ~3500
|
|
193
|
+
* tokens of mostly-static guidance (PRODUCT_WORKFLOW + SQ
|
|
194
|
+
* digest + tool catalog) plus a small dynamic tail (mode +
|
|
195
|
+
* context). We cache the whole thing as one block -- when
|
|
196
|
+
* the dynamic tail changes (mode flip, new project root),
|
|
197
|
+
* the cache invalidates and the next turn rewrites it; the
|
|
198
|
+
* TTL covers the typical multi-turn session.
|
|
199
|
+
* Minimum cacheable prefix is 1024 tokens for sonnet/opus
|
|
200
|
+
* and 2048 for haiku; our payload exceeds both. */
|
|
201
|
+
body['system'] = [
|
|
202
|
+
{
|
|
203
|
+
type: 'text',
|
|
204
|
+
text: req.system,
|
|
205
|
+
cache_control: { type: 'ephemeral' },
|
|
206
|
+
},
|
|
207
|
+
];
|
|
208
|
+
}
|
|
150
209
|
if (req.tools && req.tools.length > 0) {
|
|
151
210
|
body['tools'] = req.tools.map((t) => ({
|
|
152
211
|
name: t.name,
|
|
@@ -168,26 +227,92 @@ export class ClaudeClient {
|
|
|
168
227
|
throw new ClaudeApiError('Claude API ' + resp.status + ': ' + detail.slice(0, 500), resp.status);
|
|
169
228
|
}
|
|
170
229
|
const data = await resp.json();
|
|
171
|
-
|
|
172
|
-
|
|
230
|
+
const roundIn = data.usage?.input_tokens ?? 0;
|
|
231
|
+
const roundOut = data.usage?.output_tokens ?? 0;
|
|
232
|
+
totalTokensIn += roundIn;
|
|
233
|
+
totalTokensOut += roundOut;
|
|
173
234
|
usedModel = data.model ?? model;
|
|
235
|
+
/* Best-effort telemetry. Fire-and-forget; failures inside
|
|
236
|
+
recordUsage are already swallowed. */
|
|
237
|
+
void recordUsage({
|
|
238
|
+
kind: req.usageKind ?? 'claude.chat',
|
|
239
|
+
model: usedModel,
|
|
240
|
+
tokens_in: roundIn,
|
|
241
|
+
tokens_out: roundOut,
|
|
242
|
+
label: req.usageLabel,
|
|
243
|
+
project_root: req.projectRoot,
|
|
244
|
+
});
|
|
174
245
|
const blocks = data.content ?? [];
|
|
175
246
|
const textBlocks = blocks.filter((b) => b.type === 'text');
|
|
176
247
|
const toolUses = blocks.filter((b) => b.type === 'tool_use');
|
|
177
248
|
lastText = textBlocks.map((b) => b.text).join('');
|
|
178
249
|
if (toolUses.length === 0 || data.stop_reason !== 'tool_use') {
|
|
179
250
|
/* No tools called -- return whatever the model said. */
|
|
251
|
+
/* alpha.59z.14 F104 -- detect truncation: output_tokens
|
|
252
|
+
* within TRUNCATION_MARGIN of max_tokens OR provider says
|
|
253
|
+
* stop_reason=max_tokens|length. Provider-agnostic
|
|
254
|
+
* arithmetic-first per Pablo's design. */
|
|
255
|
+
const { detectTruncation } = await import('../core/truncation_detector.js');
|
|
256
|
+
const trunc = detectTruncation({
|
|
257
|
+
output_tokens: roundOut,
|
|
258
|
+
max_tokens: maxTokens,
|
|
259
|
+
stop_reason: data.stop_reason,
|
|
260
|
+
});
|
|
180
261
|
return {
|
|
181
262
|
text: lastText,
|
|
182
263
|
tokensIn: totalTokensIn,
|
|
183
264
|
tokensOut: totalTokensOut,
|
|
184
265
|
model: usedModel,
|
|
185
266
|
toolRounds,
|
|
267
|
+
truncation: trunc.truncated ? {
|
|
268
|
+
truncated: true,
|
|
269
|
+
reason: trunc.reason,
|
|
270
|
+
output_tokens: trunc.output_tokens,
|
|
271
|
+
max_tokens: trunc.max_tokens,
|
|
272
|
+
} : undefined,
|
|
186
273
|
};
|
|
187
274
|
}
|
|
275
|
+
/* alpha.59c -- detect verb family from first tool_use, raise
|
|
276
|
+
* cap for reader/search/writer turns. Only grows. */
|
|
277
|
+
if (familyResolved === null && toolUses.length > 0) {
|
|
278
|
+
const first = toolUses[0];
|
|
279
|
+
if (first) {
|
|
280
|
+
const firstVerb = first.input.verb_id || first.name || '';
|
|
281
|
+
const family = classifyVerbFamily(firstVerb);
|
|
282
|
+
familyResolved = family;
|
|
283
|
+
/* Only auto-bump the cap when the caller did NOT pin
|
|
284
|
+
* it. Explicit req.maxToolRounds is the caller's
|
|
285
|
+
* contract -- preserving it keeps tests + callers
|
|
286
|
+
* predictable. */
|
|
287
|
+
if (!callerSpecifiedCap) {
|
|
288
|
+
const familyCap = getMaxToolRoundsForFamily(limits.max_tool_rounds, family);
|
|
289
|
+
if (familyCap > maxRounds)
|
|
290
|
+
maxRounds = familyCap;
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
}
|
|
188
294
|
if (round === maxRounds) {
|
|
189
|
-
|
|
190
|
-
|
|
295
|
+
/* alpha.59c -- graceful exhaustion. Return what we have
|
|
296
|
+
* with a helpful summary instead of throwing. The caller
|
|
297
|
+
* (server.ts handleChat) treats this like any other
|
|
298
|
+
* reply; the panel shows it with a "loop exhausted"
|
|
299
|
+
* badge. */
|
|
300
|
+
const firstTu = toolUses[0];
|
|
301
|
+
const lastVerb = firstTu
|
|
302
|
+
? (firstTu.input.verb_id || firstTu.name || 'unknown')
|
|
303
|
+
: 'unknown';
|
|
304
|
+
const summary = (lastText ? lastText + '\n\n' : '') +
|
|
305
|
+
'[Alcance el limite de rondas (' + maxRounds + '/' + maxRounds + ') ' +
|
|
306
|
+
'en esta tarea (familia=' + (familyResolved ?? 'default') + ', ultimo verbo=' + lastVerb + '). ' +
|
|
307
|
+
'Decime "continua" y sigo desde aca, o sube el cap en yf limits set max_tool_rounds.' +
|
|
308
|
+
(familyResolved ?? 'default') + ' <N>.]';
|
|
309
|
+
return {
|
|
310
|
+
text: summary,
|
|
311
|
+
tokensIn: totalTokensIn,
|
|
312
|
+
tokensOut: totalTokensOut,
|
|
313
|
+
model: usedModel,
|
|
314
|
+
toolRounds,
|
|
315
|
+
};
|
|
191
316
|
}
|
|
192
317
|
/* Persist the assistant turn (text + tool_use blocks) so
|
|
193
318
|
Anthropic sees the full history on the next round. */
|
package/dist/chat/claude.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude.js","sourceRoot":"","sources":["../../src/chat/claude.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"claude.js","sourceRoot":"","sources":["../../src/chat/claude.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAE1C,OAAO,EAAE,WAAW,EAAkB,MAAM,uBAAuB,CAAC;AAEpE,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IAC3C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;IACnC,CAAC;CACF;AAED,MAAM,OAAO,cAAe,SAAQ,KAAK;IACvC,MAAM,CAAS;IACf,YAAY,OAAe,EAAE,MAAc;QACzC,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;QAC7B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;CACF;AA0GD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,QAAiB;IACnD,IAAI,QAAQ,IAAI,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE;QAAE,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC;IAE/D;;sEAEkE;IAClE,IAAI,CAAC;QACH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,0BAA0B,CAAC,CAAC;QAC5D,MAAM,CAAC,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAC;QAC5C,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE;YAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;IAC5C,CAAC;IAAC,MAAM,CAAC;QACP,uDAAuD;IACzD,CAAC;IAED;;iCAE6B;IAC7B,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC;QAC3D,IAAI,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;YAC3B,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YACrC,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE;gBAAE,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC;QACxD,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP;;;uEAG+D;IACjE,CAAC;IAED,uBAAuB;IACvB,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC;WACvC,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;IAChD,IAAI,OAAO,IAAI,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE;QAAE,OAAO,OAAO,CAAC,IAAI,EAAE,CAAC;IAE5D,qBAAqB;IACrB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,aAAa,CAAC,CAAC;IACvD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACjD,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;QAC3B,IAAI,OAAO,KAAK,EAAE;YAAE,OAAO,OAAO,CAAC;IACrC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAK,GAA6B,CAAC,IAAI,KAAK,QAAQ;YAAE,MAAM,GAAG,CAAC;IAClE,CAAC;IAED;;;;;mDAK+C;IAC/C,MAAM,GAAG,GAAG,IAAI,kBAAkB,CAChC,iDAAiD;UAC/C,0EAA0E;UAC1E,0EAA0E;UAC1E,2CAA2C;UAC3C,iDAAiD;UACjD,iDAAiD,CACpD,CAAC;IACF;0DACsD;IACtD,MAAM,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,GAAG,MAAM,MAAM,CAAC,0BAA0B,CAAC,CAAC;IACzF,GAAsD,CAAC,WAAW,GAAG,gBAAgB,CAAC,kBAAkB,EAAE;QACzG,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,UAAU;KACnE,CAAC,CAAC;IACH,MAAM,GAAG,CAAC;AACZ,CAAC;AAED,MAAM,aAAa,GAAG,mBAAmB,CAAC;AAqB1C,MAAM,OAAO,YAAY;IACf,MAAM,CAAgB;IACtB,SAAS,CAAe;IACxB,YAAY,CAAS;IAE7B,YAAY,OAA4B,EAAE;QACxC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC;QAClC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC;QACzC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,IAAI,aAAa,CAAC;IACzD,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,GAAsB;QAC/B,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;YACzB,IAAI,CAAC,MAAM,GAAG,MAAM,aAAa,EAAE,CAAC;QACtC,CAAC;QACD,IAAI,GAAG,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;QACzE,CAAC;QACD,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,IAAI,IAAI,CAAC,YAAY,CAAC;QAC7C,MAAM,SAAS,GAAG,GAAG,CAAC,SAAS,IAAI,IAAI,CAAC;QACxC;;;;qEAI6D;QAC7D,MAAM,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,yBAAyB,EAAE,GACvE,MAAM,MAAM,CAAC,0BAA0B,CAAC,CAAC;QAC3C,MAAM,MAAM,GAAG,MAAM,gBAAgB,EAAE,CAAC;QACxC,MAAM,kBAAkB,GAAG,GAAG,CAAC,aAAa,KAAK,SAAS,CAAC;QAC3D;;sEAE8D;QAC9D,MAAM,cAAc,GAAG,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,WAAW,CAAC,gBAAgB,KAAK,IAAI,CAAC;QAC1F,MAAM,OAAO,GAAG,cAAc;YAC5B,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,UAAU;YACnC,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,OAAO,CAAC;QACnC,IAAI,SAAS,GAAG,GAAG,CAAC,aAAa,IAAI,OAAO,CAAC;QAC7C,IAAI,cAAc,GAAkB,IAAI,CAAC;QAEzC;;4DAEoD;QACpD,MAAM,QAAQ,GAAiB,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACtD,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,OAAO,EAAE,CAAC,CAAC,OAAO;SACnB,CAAC,CAAC,CAAC;QAEJ,MAAM,UAAU,GAAgB,EAAE,CAAC;QACnC,IAAI,aAAa,GAAG,CAAC,CAAC;QACtB,IAAI,cAAc,GAAG,CAAC,CAAC;QACvB,IAAI,QAAQ,GAAG,EAAE,CAAC;QAClB,IAAI,SAAS,GAAG,KAAK,CAAC;QAEtB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,IAAI,SAAS,EAAE,KAAK,EAAE,EAAE,CAAC;YAChD,MAAM,IAAI,GAA4B;gBACpC,KAAK;gBACL,UAAU,EAAE,SAAS;gBACrB,QAAQ;aACT,CAAC;YACF,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;gBACf;;;;;;;;;;oEAUoD;gBACpD,IAAI,CAAC,QAAQ,CAAC,GAAG;oBACf;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,GAAG,CAAC,MAAM;wBAChB,aAAa,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE;qBACrC;iBACF,CAAC;YACJ,CAAC;YACD,IAAI,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACtC,IAAI,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBACpC,IAAI,EAAE,CAAC,CAAC,IAAI;oBACZ,WAAW,EAAE,CAAC,CAAC,WAAW;oBAC1B,YAAY,EAAE,CAAC,CAAC,YAAY;iBAC7B,CAAC,CAAC,CAAC;YACN,CAAC;YAED,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,uCAAuC,EAAE;gBACzE,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE;oBACP,cAAc,EAAO,kBAAkB;oBACvC,WAAW,EAAU,IAAI,CAAC,MAAgB;oBAC1C,mBAAmB,EAAE,YAAY;iBAClC;gBACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;aAC3B,CAAC,CAAC;YACH,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;gBACb,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC;gBACpC,MAAM,IAAI,cAAc,CACtB,aAAa,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EACzD,IAAI,CAAC,MAAM,CACZ,CAAC;YACJ,CAAC;YACD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,EAK3B,CAAC;YACF,MAAM,OAAO,GAAI,IAAI,CAAC,KAAK,EAAE,YAAY,IAAK,CAAC,CAAC;YAChD,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,EAAE,aAAa,IAAI,CAAC,CAAC;YAChD,aAAa,IAAK,OAAO,CAAC;YAC1B,cAAc,IAAI,QAAQ,CAAC;YAC3B,SAAS,GAAG,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC;YAEhC;oDACwC;YACxC,KAAK,WAAW,CAAC;gBACf,IAAI,EAAS,GAAG,CAAC,SAAS,IAAI,aAAa;gBAC3C,KAAK,EAAQ,SAAS;gBACtB,SAAS,EAAI,OAAO;gBACpB,UAAU,EAAG,QAAQ;gBACrB,KAAK,EAAQ,GAAG,CAAC,UAAU;gBAC3B,YAAY,EAAC,GAAG,CAAC,WAAW;aAC7B,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;YAClC,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAuC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;YAChG,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAuF,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC;YAClJ,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAElD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,WAAW,KAAK,UAAU,EAAE,CAAC;gBAC7D,wDAAwD;gBACxD;;;0DAG0C;gBAC1C,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,MAAM,CAAC,gCAAgC,CAAC,CAAC;gBAC5E,MAAM,KAAK,GAAG,gBAAgB,CAAC;oBAC7B,aAAa,EAAE,QAAQ;oBACvB,UAAU,EAAK,SAAS;oBACxB,WAAW,EAAI,IAAI,CAAC,WAAW;iBAChC,CAAC,CAAC;gBACH,OAAO;oBACL,IAAI,EAAE,QAAQ;oBACd,QAAQ,EAAG,aAAa;oBACxB,SAAS,EAAE,cAAc;oBACzB,KAAK,EAAM,SAAS;oBACpB,UAAU;oBACV,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;wBAC5B,SAAS,EAAE,IAAI;wBACf,MAAM,EAAK,KAAK,CAAC,MAAM;wBACvB,aAAa,EAAE,KAAK,CAAC,aAAa;wBAClC,UAAU,EAAK,KAAK,CAAC,UAAU;qBAChC,CAAC,CAAC,CAAC,SAAS;iBACd,CAAC;YACJ,CAAC;YAED;kEACsD;YACtD,IAAI,cAAc,KAAK,IAAI,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACnD,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;gBAC1B,IAAI,KAAK,EAAE,CAAC;oBACV,MAAM,SAAS,GAAI,KAAK,CAAC,KAA8B,CAAC,OAAO,IAAI,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC;oBACpF,MAAM,MAAM,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAC;oBAC7C,cAAc,GAAG,MAAM,CAAC;oBACxB;;;uCAGmB;oBACnB,IAAI,CAAC,kBAAkB,EAAE,CAAC;wBACxB,MAAM,SAAS,GAAG,yBAAyB,CAAC,MAAM,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;wBAC5E,IAAI,SAAS,GAAG,SAAS;4BAAE,SAAS,GAAG,SAAS,CAAC;oBACnD,CAAC;gBACH,CAAC;YACH,CAAC;YAED,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxB;;;;6BAIa;gBACb,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;gBAC5B,MAAM,QAAQ,GAAG,OAAO;oBACtB,CAAC,CAAC,CAAE,OAAO,CAAC,KAA8B,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,IAAI,SAAS,CAAC;oBAChF,CAAC,CAAC,SAAS,CAAC;gBACd,MAAM,OAAO,GACX,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;oBACnC,gCAAgC,GAAG,SAAS,GAAG,GAAG,GAAG,SAAS,GAAG,IAAI;oBACrE,yBAAyB,GAAG,CAAC,cAAc,IAAI,SAAS,CAAC,GAAG,iBAAiB,GAAG,QAAQ,GAAG,KAAK;oBAChG,qFAAqF;oBACrF,CAAC,cAAc,IAAI,SAAS,CAAC,GAAG,QAAQ,CAAC;gBAC3C,OAAO;oBACL,IAAI,EAAE,OAAO;oBACb,QAAQ,EAAG,aAAa;oBACxB,SAAS,EAAE,cAAc;oBACzB,KAAK,EAAM,SAAS;oBACpB,UAAU;iBACX,CAAC;YACJ,CAAC;YAED;oEACwD;YACxD,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;YAEtD;uCAC2B;YAC3B,MAAM,gBAAgB,GAAsB,EAAE,CAAC;YAC/C,KAAK,MAAM,EAAE,IAAI,QAAQ,EAAE,CAAC;gBAC1B,MAAM,CAAC,GAAG,MAAM,GAAG,CAAC,OAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;gBAChD,UAAU,CAAC,IAAI,CAAC;oBACd,IAAI,EAAE,EAAE,CAAC,IAAI;oBACb,KAAK,EAAE,EAAE,CAAC,KAAK;oBACf,MAAM,EAAE,CAAC,CAAC,MAAM;oBAChB,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACzC,WAAW,EAAE,EAAE,CAAC,EAAE;iBACnB,CAAC,CAAC;gBACH,gBAAgB,CAAC,IAAI,CAAC;oBACpB,IAAI,EAAE,aAAa;oBACnB,WAAW,EAAE,EAAE,CAAC,EAAE;oBAClB,OAAO,EAAE,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC;oBAC3E,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBAC1C,CAAC,CAAC;YACL,CAAC;YACD,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,EAAE,CAAC,CAAC;QAC7D,CAAC;QAED,sDAAsD;QACtD,MAAM,IAAI,cAAc,CAAC,uCAAuC,EAAE,GAAG,CAAC,CAAC;IACzE,CAAC;CACF;AAED,KAAK,UAAU,QAAQ,CAAC,CAAW;IACjC,IAAI,CAAC;QAAC,OAAO,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,WAAW,CAAC;IAAC,CAAC;AAC9D,CAAC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
interface IngestStateEntry {
|
|
2
|
+
package_json_mtime_ms: number;
|
|
3
|
+
ingested_at: string;
|
|
4
|
+
lib_count: number;
|
|
5
|
+
}
|
|
6
|
+
interface IngestState {
|
|
7
|
+
version: 1;
|
|
8
|
+
slugs: Record<string, IngestStateEntry>;
|
|
9
|
+
}
|
|
10
|
+
declare function statePath(): string;
|
|
11
|
+
declare function readState(): Promise<IngestState>;
|
|
12
|
+
declare function writeState(s: IngestState): Promise<void>;
|
|
13
|
+
/** Fire-and-forget. Never throws. Returns true when the ingest
|
|
14
|
+
* ran + completed (regardless of how many nodes), false when
|
|
15
|
+
* skipped (no package.json, no change since last ingest, or
|
|
16
|
+
* worker error). */
|
|
17
|
+
export declare function maybeAutoIngest(opts: {
|
|
18
|
+
project_root: string;
|
|
19
|
+
project_slug: string;
|
|
20
|
+
/** Optional logger -- defaults to silent. Tests can inject
|
|
21
|
+
* a console.log to see what happened. */
|
|
22
|
+
log?: (msg: string) => void;
|
|
23
|
+
/** Bypass the env gate (tests). */
|
|
24
|
+
forceEnabled?: boolean;
|
|
25
|
+
}): Promise<boolean>;
|
|
26
|
+
/** Spawn an ingest (or reuse one in flight for the same slug) +
|
|
27
|
+
* return the promise so callers that need to wait for it (e.g.
|
|
28
|
+
* GET /api/forge/graph-status on the first panel load) can do
|
|
29
|
+
* so. NEVER throws. */
|
|
30
|
+
export declare function startAutoIngest(opts: {
|
|
31
|
+
project_root: string;
|
|
32
|
+
project_slug: string;
|
|
33
|
+
log?: (msg: string) => void;
|
|
34
|
+
}): Promise<boolean>;
|
|
35
|
+
/** Returns the in-flight ingest promise for this slug, or null
|
|
36
|
+
* if none is running. Endpoints await with a timeout. */
|
|
37
|
+
export declare function inFlightIngest(project_slug: string): Promise<boolean> | null;
|
|
38
|
+
/** Test seam. */
|
|
39
|
+
export declare const _internal: {
|
|
40
|
+
statePath: typeof statePath;
|
|
41
|
+
readState: typeof readState;
|
|
42
|
+
writeState: typeof writeState;
|
|
43
|
+
_inFlight: Map<string, Promise<boolean>>;
|
|
44
|
+
};
|
|
45
|
+
export {};
|
|
46
|
+
//# sourceMappingURL=graph_auto_ingest.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graph_auto_ingest.d.ts","sourceRoot":"","sources":["../../src/chat/graph_auto_ingest.ts"],"names":[],"mappings":"AAuCA,UAAU,gBAAgB;IACxB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,WAAW,EAAY,MAAM,CAAC;IAC9B,SAAS,EAAc,MAAM,CAAC;CAC/B;AACD,UAAU,WAAW;IACnB,OAAO,EAAE,CAAC,CAAC;IACX,KAAK,EAAI,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;CAC3C;AAED,iBAAS,SAAS,IAAI,MAAM,CAI3B;AAED,iBAAe,SAAS,IAAI,OAAO,CAAC,WAAW,CAAC,CAO/C;AAED,iBAAe,UAAU,CAAC,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAMvD;AAED;;;qBAGqB;AACrB,wBAAsB,eAAe,CAAC,IAAI,EAAE;IAC1C,YAAY,EAAG,MAAM,CAAC;IACtB,YAAY,EAAG,MAAM,CAAC;IACtB;8CAC0C;IAC1C,GAAG,CAAC,EAAW,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,mCAAmC;IACnC,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB,GAAG,OAAO,CAAC,OAAO,CAAC,CA+DnB;AAQD;;;wBAGwB;AACxB,wBAAgB,eAAe,CAAC,IAAI,EAAE;IACpC,YAAY,EAAG,MAAM,CAAC;IACtB,YAAY,EAAG,MAAM,CAAC;IACtB,GAAG,CAAC,EAAW,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CACtC,GAAG,OAAO,CAAC,OAAO,CAAC,CAYnB;AAED;0DAC0D;AAC1D,wBAAgB,cAAc,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,IAAI,CAE5E;AAED,iBAAiB;AACjB,eAAO,MAAM,SAAS;;;;;CAAkD,CAAC"}
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Graph auto-ingest on yf chat boot (alpha.59v).
|
|
3
|
+
*
|
|
4
|
+
* Per Pablo's directive 2026-06-02: "Si abro yf chat en un
|
|
5
|
+
* directorio lo entienda como directorio de proyecto y cargue
|
|
6
|
+
* los graph del mismo automaticamente. A medida que voy
|
|
7
|
+
* incorporando mas componentes los suma automaticamente al
|
|
8
|
+
* graph."
|
|
9
|
+
*
|
|
10
|
+
* Phase 1 -- package.json deps ingestion at boot:
|
|
11
|
+
*
|
|
12
|
+
* 1. On every yf chat boot, resolve projectSlug + read
|
|
13
|
+
* package.json mtime.
|
|
14
|
+
* 2. Look up the cached state for this slug in
|
|
15
|
+
* ~/.yujin-forge/cache/graph_ingest_state.json:
|
|
16
|
+
* { "<slug>": { "package_json_mtime_ms": N, "ingested_at": ISO,
|
|
17
|
+
* "lib_count": N } }
|
|
18
|
+
* 3. If the package.json mtime has changed since last_ingest
|
|
19
|
+
* (or slug never ingested) -> fire-and-forget background
|
|
20
|
+
* ingest via the existing ingestFromPackageJson() +
|
|
21
|
+
* /v1/semantic-graph/import endpoint.
|
|
22
|
+
* 4. Update the cache state on success.
|
|
23
|
+
*
|
|
24
|
+
* Failure modes:
|
|
25
|
+
* - Worker unreachable -> log, swallow (boot continues).
|
|
26
|
+
* - No package.json -> skip (not all projects are npm).
|
|
27
|
+
* - No vault key -> swallow (auth failure is OK; the user is
|
|
28
|
+
* not yet onboarded).
|
|
29
|
+
*
|
|
30
|
+
* Never blocks the boot. Never throws.
|
|
31
|
+
*
|
|
32
|
+
* ASCII-only.
|
|
33
|
+
*/
|
|
34
|
+
import { promises as fs } from 'node:fs';
|
|
35
|
+
import path from 'node:path';
|
|
36
|
+
import os from 'node:os';
|
|
37
|
+
import { ingestFromPackageJson } from './semantic_graph_ingest.js';
|
|
38
|
+
import { semanticGraphPost } from '../license/hito4_client.js';
|
|
39
|
+
function statePath() {
|
|
40
|
+
const home = process.env.HOME || process.env.USERPROFILE || os.homedir();
|
|
41
|
+
const base = process.env.YF_CONFIG_DIR || path.join(home, '.yujin-forge');
|
|
42
|
+
return path.join(base, 'cache', 'graph_ingest_state.json');
|
|
43
|
+
}
|
|
44
|
+
async function readState() {
|
|
45
|
+
try {
|
|
46
|
+
const raw = await fs.readFile(statePath(), 'utf-8');
|
|
47
|
+
const j = JSON.parse(raw);
|
|
48
|
+
if (j && j.version === 1 && typeof j.slugs === 'object')
|
|
49
|
+
return j;
|
|
50
|
+
}
|
|
51
|
+
catch { /* missing or malformed -> fresh */ }
|
|
52
|
+
return { version: 1, slugs: {} };
|
|
53
|
+
}
|
|
54
|
+
async function writeState(s) {
|
|
55
|
+
const p = statePath();
|
|
56
|
+
await fs.mkdir(path.dirname(p), { recursive: true });
|
|
57
|
+
const tmp = p + '.tmp';
|
|
58
|
+
await fs.writeFile(tmp, JSON.stringify(s, null, 2), 'utf-8');
|
|
59
|
+
await fs.rename(tmp, p);
|
|
60
|
+
}
|
|
61
|
+
/** Fire-and-forget. Never throws. Returns true when the ingest
|
|
62
|
+
* ran + completed (regardless of how many nodes), false when
|
|
63
|
+
* skipped (no package.json, no change since last ingest, or
|
|
64
|
+
* worker error). */
|
|
65
|
+
export async function maybeAutoIngest(opts) {
|
|
66
|
+
const log = opts.log ?? (() => undefined);
|
|
67
|
+
/* Env gate: YF_GRAPH_AUTO_INGEST=0 disables. Default ON. */
|
|
68
|
+
if (!opts.forceEnabled) {
|
|
69
|
+
const v = process.env.YF_GRAPH_AUTO_INGEST;
|
|
70
|
+
if (v === '0' || v === 'false' || v === 'no') {
|
|
71
|
+
log('[auto-ingest] disabled via YF_GRAPH_AUTO_INGEST=0');
|
|
72
|
+
return false;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
/* Check package.json mtime. */
|
|
76
|
+
const pkgPath = path.join(opts.project_root, 'package.json');
|
|
77
|
+
let mtimeMs;
|
|
78
|
+
try {
|
|
79
|
+
const st = await fs.stat(pkgPath);
|
|
80
|
+
mtimeMs = st.mtimeMs;
|
|
81
|
+
}
|
|
82
|
+
catch {
|
|
83
|
+
log('[auto-ingest] no package.json at ' + opts.project_root + ' -- skip');
|
|
84
|
+
return false;
|
|
85
|
+
}
|
|
86
|
+
/* Compare against cached state. */
|
|
87
|
+
const state = await readState();
|
|
88
|
+
const prev = state.slugs[opts.project_slug];
|
|
89
|
+
if (prev && prev.package_json_mtime_ms === mtimeMs) {
|
|
90
|
+
log('[auto-ingest] package.json unchanged since last ingest (' + prev.ingested_at + ') -- skip');
|
|
91
|
+
return false;
|
|
92
|
+
}
|
|
93
|
+
/* Ingest. */
|
|
94
|
+
const nodes = await ingestFromPackageJson({
|
|
95
|
+
project_root: opts.project_root,
|
|
96
|
+
project_slug: opts.project_slug,
|
|
97
|
+
});
|
|
98
|
+
if (nodes.length === 0) {
|
|
99
|
+
log('[auto-ingest] package.json has no deps -- skip');
|
|
100
|
+
return false;
|
|
101
|
+
}
|
|
102
|
+
log('[auto-ingest] ingesting ' + nodes.length + ' libs for project_slug=' + opts.project_slug + '...');
|
|
103
|
+
try {
|
|
104
|
+
const r = await semanticGraphPost('/v1/semantic-graph/import', {
|
|
105
|
+
nodes,
|
|
106
|
+
edges: [],
|
|
107
|
+
project_slug: opts.project_slug,
|
|
108
|
+
});
|
|
109
|
+
if (!r.ok || !r.body || r.body.ok !== true) {
|
|
110
|
+
log('[auto-ingest] worker rejected (' + r.status + '): ' + (r.body ? JSON.stringify(r.body).slice(0, 200) : 'no body'));
|
|
111
|
+
return false;
|
|
112
|
+
}
|
|
113
|
+
const added = Number(r.body.added ?? 0);
|
|
114
|
+
const updated = Number(r.body.updated ?? 0);
|
|
115
|
+
log('[auto-ingest] OK added=' + added + ' updated=' + updated);
|
|
116
|
+
/* Persist state. */
|
|
117
|
+
state.slugs[opts.project_slug] = {
|
|
118
|
+
package_json_mtime_ms: mtimeMs,
|
|
119
|
+
ingested_at: new Date().toISOString(),
|
|
120
|
+
lib_count: nodes.length,
|
|
121
|
+
};
|
|
122
|
+
await writeState(state);
|
|
123
|
+
return true;
|
|
124
|
+
}
|
|
125
|
+
catch (err) {
|
|
126
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
127
|
+
log('[auto-ingest] error: ' + msg);
|
|
128
|
+
return false;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
/* ----- alpha.59v.2 -- in-flight tracking ----- */
|
|
132
|
+
/* Per-process map: project_slug -> Promise<boolean> currently
|
|
133
|
+
* running. Endpoints that need "graph data is current" can await
|
|
134
|
+
* this with a timeout before they query the worker. */
|
|
135
|
+
const _inFlight = new Map();
|
|
136
|
+
/** Spawn an ingest (or reuse one in flight for the same slug) +
|
|
137
|
+
* return the promise so callers that need to wait for it (e.g.
|
|
138
|
+
* GET /api/forge/graph-status on the first panel load) can do
|
|
139
|
+
* so. NEVER throws. */
|
|
140
|
+
export function startAutoIngest(opts) {
|
|
141
|
+
const existing = _inFlight.get(opts.project_slug);
|
|
142
|
+
if (existing)
|
|
143
|
+
return existing;
|
|
144
|
+
const p = (async () => {
|
|
145
|
+
try {
|
|
146
|
+
return await maybeAutoIngest(opts);
|
|
147
|
+
}
|
|
148
|
+
finally {
|
|
149
|
+
_inFlight.delete(opts.project_slug);
|
|
150
|
+
}
|
|
151
|
+
})();
|
|
152
|
+
_inFlight.set(opts.project_slug, p);
|
|
153
|
+
return p;
|
|
154
|
+
}
|
|
155
|
+
/** Returns the in-flight ingest promise for this slug, or null
|
|
156
|
+
* if none is running. Endpoints await with a timeout. */
|
|
157
|
+
export function inFlightIngest(project_slug) {
|
|
158
|
+
return _inFlight.get(project_slug) ?? null;
|
|
159
|
+
}
|
|
160
|
+
/** Test seam. */
|
|
161
|
+
export const _internal = { statePath, readState, writeState, _inFlight };
|
|
162
|
+
//# sourceMappingURL=graph_auto_ingest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graph_auto_ingest.js","sourceRoot":"","sources":["../../src/chat/graph_auto_ingest.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
export interface ParsedExport {
|
|
2
|
+
name: string;
|
|
3
|
+
kind: 'function' | 'const' | 'class';
|
|
4
|
+
}
|
|
5
|
+
/** Extract top-level exported identifiers from a TS/JS source.
|
|
6
|
+
* Returns up to 10 exports per file (cap to avoid explosion on
|
|
7
|
+
* barrel files). */
|
|
8
|
+
export declare function extractExports(source: string): ParsedExport[];
|
|
9
|
+
/** Sanitise a file path to a stable graph node id. */
|
|
10
|
+
declare function fileToNodeIdBase(projectRoot: string, fullPath: string): string;
|
|
11
|
+
/** Build node payloads from a file change. */
|
|
12
|
+
declare function nodesForFile(projectRoot: string, projectSlug: string, filePath: string): Promise<Array<Record<string, unknown>>>;
|
|
13
|
+
export interface WatcherHandle {
|
|
14
|
+
stop: () => Promise<void>;
|
|
15
|
+
}
|
|
16
|
+
/** Start watching the project's source dirs. Returns a handle
|
|
17
|
+
* with .stop() to close all watchers on server shutdown.
|
|
18
|
+
* NEVER throws. */
|
|
19
|
+
export declare function startComponentWatcher(opts: {
|
|
20
|
+
project_root: string;
|
|
21
|
+
project_slug: string;
|
|
22
|
+
log?: (msg: string) => void;
|
|
23
|
+
}): Promise<WatcherHandle>;
|
|
24
|
+
/** Test seam. */
|
|
25
|
+
export declare const _internal: {
|
|
26
|
+
fileToNodeIdBase: typeof fileToNodeIdBase;
|
|
27
|
+
nodesForFile: typeof nodesForFile;
|
|
28
|
+
};
|
|
29
|
+
export {};
|
|
30
|
+
//# sourceMappingURL=graph_component_watcher.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graph_component_watcher.d.ts","sourceRoot":"","sources":["../../src/chat/graph_component_watcher.ts"],"names":[],"mappings":"AAkDA,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,UAAU,GAAG,OAAO,GAAG,OAAO,CAAC;CACtC;AAED;;qBAEqB;AACrB,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,EAAE,CAkB7D;AAED,sDAAsD;AACtD,iBAAS,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAGvE;AAED,8CAA8C;AAC9C,iBAAe,YAAY,CACzB,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GACzD,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CA0BzC;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3B;AAED;;oBAEoB;AACpB,wBAAsB,qBAAqB,CAAC,IAAI,EAAE;IAChD,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,GAAG,CAAC,EAAU,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CACrC,GAAG,OAAO,CAAC,aAAa,CAAC,CAsFzB;AAED,iBAAiB;AACjB,eAAO,MAAM,SAAS;;;CAAqC,CAAC"}
|