@nac3/forge-cli 0.2.0-alpha.4 → 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 +1914 -63
- 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 +82 -4
- package/dist/chat/tools/git.js.map +1 -1
- package/dist/chat/tools/github.js +3 -3
- 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/lifecycle.js +3 -3
- package/dist/chat/tools/manual.js +1 -1
- 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 +152 -9
- 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 +366 -17
- 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/intents.d.ts +1 -1
- package/dist/voice/intents.js +0 -0
- 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 +21 -15
- 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
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
# SQ rules active per workflow step (alpha.59y.3)
|
|
2
|
+
#
|
|
3
|
+
# Maps each step of docs/PRODUCT_WORKFLOW.md (18 steps across 6
|
|
4
|
+
# phases) to the docs/SQ.md rule slugs that apply at that step.
|
|
5
|
+
# The chat server uses this to inject the relevant subset of SQ
|
|
6
|
+
# into the per-turn workflow state block, instead of dumping all
|
|
7
|
+
# 50+ rules every time.
|
|
8
|
+
#
|
|
9
|
+
# Schema:
|
|
10
|
+
# step_<N>_<slug>: [rule_slug, rule_slug, ...]
|
|
11
|
+
#
|
|
12
|
+
# Rule slugs use the section number from SQ.md (0.1, 0.2, 1.3,
|
|
13
|
+
# 2.4, 14, 15, etc). Sub-sections (14.1, 14.2) roll up to their
|
|
14
|
+
# parent unless the parent is broken.
|
|
15
|
+
#
|
|
16
|
+
# Cross-cutting rules (apply to every step):
|
|
17
|
+
# 0.1 -- user time is sacred
|
|
18
|
+
# 0.2 -- no fallback to legacy
|
|
19
|
+
# 0.3 -- no silent damage
|
|
20
|
+
# 0.4 -- industrial quality
|
|
21
|
+
# 0.5 -- agnostic by default
|
|
22
|
+
# 0.8 -- dual-mode comm
|
|
23
|
+
# 0.11 -- vault autonomy
|
|
24
|
+
# 14 -- producer/consumer symmetry
|
|
25
|
+
# 15 -- test things yourself
|
|
26
|
+
#
|
|
27
|
+
# These are implied in every step; they are NOT repeated here to
|
|
28
|
+
# keep the resolver's output compact. The resolver always merges
|
|
29
|
+
# them into the active set.
|
|
30
|
+
#
|
|
31
|
+
# ASCII-only.
|
|
32
|
+
|
|
33
|
+
cross_cutting:
|
|
34
|
+
- "0.1" # tiempo del user
|
|
35
|
+
- "0.2" # cero fallback legacy
|
|
36
|
+
- "0.3" # cero dano silencioso
|
|
37
|
+
- "0.4" # calidad industrial
|
|
38
|
+
- "0.5" # agnostico por default
|
|
39
|
+
- "0.8" # dual mode didactico/tecnico
|
|
40
|
+
- "0.11" # autonomia via vault
|
|
41
|
+
- "14" # producer/consumer symmetry
|
|
42
|
+
- "15" # autonomia / test things yourself
|
|
43
|
+
|
|
44
|
+
step_1_triage:
|
|
45
|
+
- "0.6" # definicion proyecto Yujin
|
|
46
|
+
- "0.10" # target desktop+mobile vs mobile-pure
|
|
47
|
+
- "1.1" # lectura docs proyecto
|
|
48
|
+
- "1.2" # volumetrias antes arquitectura
|
|
49
|
+
|
|
50
|
+
step_2_vault:
|
|
51
|
+
- "0.11" # autonomia vault (refuerzo)
|
|
52
|
+
- "2.8" # security boundaries
|
|
53
|
+
|
|
54
|
+
step_3_intent:
|
|
55
|
+
- "0.6" # definicion proyecto
|
|
56
|
+
- "1.1" # lectura docs
|
|
57
|
+
- "0.10" # target
|
|
58
|
+
|
|
59
|
+
step_3_5_legacy_audit:
|
|
60
|
+
- "1.1"
|
|
61
|
+
- "1.2"
|
|
62
|
+
|
|
63
|
+
step_4_functional:
|
|
64
|
+
- "1.1"
|
|
65
|
+
- "0.6"
|
|
66
|
+
|
|
67
|
+
step_5_nfr_quantitative:
|
|
68
|
+
- "1.2" # volumetrias antes arquitectura -- CRITICAL aqui
|
|
69
|
+
- "1.3" # solicitudes simultaneas
|
|
70
|
+
|
|
71
|
+
step_6_nfr_structural:
|
|
72
|
+
- "1.3" # escalables
|
|
73
|
+
- "0.7" # componentes obligatorios
|
|
74
|
+
|
|
75
|
+
step_7_nfr_governance:
|
|
76
|
+
- "2.7" # provenance
|
|
77
|
+
- "2.8" # security boundaries
|
|
78
|
+
|
|
79
|
+
step_8_nfr_operational:
|
|
80
|
+
- "2.6" # multilang
|
|
81
|
+
- "0.7" # componentes obligatorios
|
|
82
|
+
- "0.9" # test playwright visual
|
|
83
|
+
|
|
84
|
+
step_9_block_prioritisation:
|
|
85
|
+
- "0.5" # agnostico
|
|
86
|
+
- "1.3"
|
|
87
|
+
|
|
88
|
+
step_10_rfp:
|
|
89
|
+
- "1.1"
|
|
90
|
+
- "1.2"
|
|
91
|
+
- "1.3"
|
|
92
|
+
- "3.1" # INFRASTRUCTURE.md
|
|
93
|
+
- "3.2" # ARCHITECTURE.md
|
|
94
|
+
|
|
95
|
+
step_11_architecture:
|
|
96
|
+
- "1.2"
|
|
97
|
+
- "1.3"
|
|
98
|
+
- "0.7"
|
|
99
|
+
- "2.7"
|
|
100
|
+
- "2.8"
|
|
101
|
+
- "2.9" # single source of truth modelos LLM
|
|
102
|
+
- "3.2" # ARCHITECTURE.md emit aqui
|
|
103
|
+
- "8" # activos estrategicos / IP
|
|
104
|
+
|
|
105
|
+
step_12_solution_design:
|
|
106
|
+
- "0.5"
|
|
107
|
+
- "0.7"
|
|
108
|
+
- "2.6"
|
|
109
|
+
- "2.7"
|
|
110
|
+
- "2.9"
|
|
111
|
+
|
|
112
|
+
step_13_approval_gate:
|
|
113
|
+
- "0.3" # cero dano silencioso (refuse to advance without OK)
|
|
114
|
+
- "0.4" # calidad industrial
|
|
115
|
+
|
|
116
|
+
step_14_bootstrap:
|
|
117
|
+
- "0.7" # componentes obligatorios scaffolded
|
|
118
|
+
- "2.1" # tests scaffolded
|
|
119
|
+
- "2.4" # code style
|
|
120
|
+
- "2.5" # build + deploy
|
|
121
|
+
- "2.6" # 10 idiomas
|
|
122
|
+
- "2.9"
|
|
123
|
+
|
|
124
|
+
step_15_block_dev:
|
|
125
|
+
- "2.1" # tests primero
|
|
126
|
+
- "2.2" # coverage 100% visual
|
|
127
|
+
- "2.3" # coverage 100% backend
|
|
128
|
+
- "2.4" # code style
|
|
129
|
+
- "0.9" # playwright visual approve
|
|
130
|
+
- "14" # producer/consumer audit (refuerzo)
|
|
131
|
+
- "15" # autonomia (refuerzo)
|
|
132
|
+
|
|
133
|
+
step_16_deploy:
|
|
134
|
+
- "0.11"
|
|
135
|
+
- "2.5"
|
|
136
|
+
- "3.1" # INFRASTRUCTURE.md updated
|
|
137
|
+
- "3.4" # MAINTENANCE_MANUAL.md
|
|
138
|
+
|
|
139
|
+
step_17_postlaunch:
|
|
140
|
+
- "3.3" # USER_MANUAL.md emit
|
|
141
|
+
- "3.4" # MAINTENANCE_MANUAL.md emit
|
|
142
|
+
- "0.8" # dual mode docs
|
|
143
|
+
|
|
144
|
+
step_18_iteration:
|
|
145
|
+
- "0.3" # cero dano silencioso (adenda flow)
|
|
146
|
+
- "0.4"
|
|
147
|
+
- "7" # memoria de decisiones
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
# yujin.a11y.* verbs (F107) -- screen reader + voice-first
|
|
2
|
+
|
|
3
|
+
The `yujin.a11y.*` namespace gives the brain three
|
|
4
|
+
panel-dispatch verbs to drive the accessibility surface of any
|
|
5
|
+
adopter app. Fetch this doctrine via `yujin.doctrine.discover`
|
|
6
|
+
when the user mentions screen reader / accessibility / voice
|
|
7
|
+
announce / focus / aria.
|
|
8
|
+
|
|
9
|
+
## Catalog
|
|
10
|
+
|
|
11
|
+
| Verb | Use when |
|
|
12
|
+
|---|---|
|
|
13
|
+
| `yujin.a11y.announce` | A status / error / async completion needs to reach screen-reader users + the voice loop |
|
|
14
|
+
| `yujin.a11y.focus` | Keyboard focus needs to land on a specific element (after open modal, after async load) |
|
|
15
|
+
| `yujin.a11y.label` | An element needs a screen-reader description, optional shortcut + role hints |
|
|
16
|
+
|
|
17
|
+
All three are `policy: unrestricted`, `side_effects: ['dom']`,
|
|
18
|
+
`handler_side: panel`.
|
|
19
|
+
|
|
20
|
+
## Args -- quick reference
|
|
21
|
+
|
|
22
|
+
```
|
|
23
|
+
yujin.a11y.announce {text, politeness?:'polite'|'assertive', speak?, locale?}
|
|
24
|
+
yujin.a11y.focus {slug, scroll?, announce?}
|
|
25
|
+
yujin.a11y.label {slug, description, shortcut?, role?}
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
`slug` is the NAC-3 element slug (the value of the `data-nac-slug`
|
|
29
|
+
attribute the adopter declared at source). It MUST match
|
|
30
|
+
`[a-z0-9][a-z0-9._-]*` -- no spaces, no `/`, max 120 chars.
|
|
31
|
+
|
|
32
|
+
## When to announce
|
|
33
|
+
|
|
34
|
+
- After a destructive action completed -> `announce({text: '...
|
|
35
|
+
eliminado', politeness:'assertive'})`.
|
|
36
|
+
- After a long-running task finished -> `announce({text:'Deploy
|
|
37
|
+
listo', speak:true})` to also TTS it.
|
|
38
|
+
- For ambient progress -> default `politeness:'polite'` so the
|
|
39
|
+
screen reader does not interrupt.
|
|
40
|
+
|
|
41
|
+
## When to focus
|
|
42
|
+
|
|
43
|
+
- After opening a modal: focus the modal's primary button
|
|
44
|
+
(`scroll:true, announce:true` by default).
|
|
45
|
+
- After loading new content into a region: focus the heading
|
|
46
|
+
so screen-reader users know where they are.
|
|
47
|
+
- NEVER force focus mid-typing -- the user's keyboard input wins.
|
|
48
|
+
|
|
49
|
+
## When to label
|
|
50
|
+
|
|
51
|
+
- The adopter forgot to ship a `data-nac-label` -- the assistant
|
|
52
|
+
can patch the live a11y tree without forcing a source edit.
|
|
53
|
+
- A shortcut or role hint helps disambiguate (two buttons with
|
|
54
|
+
the same visible text).
|
|
55
|
+
|
|
56
|
+
## Don't
|
|
57
|
+
|
|
58
|
+
- Don't fire `announce` for visual-only chatter ("rendered the
|
|
59
|
+
pizarron tab"). The screen reader gets EVERY announce -- noisy
|
|
60
|
+
is worse than silent.
|
|
61
|
+
- Don't use `focus` to scroll the page for sighted users; use the
|
|
62
|
+
panel scroll API instead.
|
|
63
|
+
- Don't invent verbs like `yujin.a11y.read-page` -- only the three
|
|
64
|
+
above exist.
|
|
65
|
+
|
|
66
|
+
## Voice-first integration
|
|
67
|
+
|
|
68
|
+
`announce` with `speak: true` forwards the text to the existing
|
|
69
|
+
voice loop (Yujin TTS gateway or BYOK provider). Locale defaults
|
|
70
|
+
to the user's voice config; pass `locale: 'es-AR'` to override
|
|
71
|
+
for an individual announcement.
|
|
72
|
+
|
|
73
|
+
## Mobile
|
|
74
|
+
|
|
75
|
+
The React-Native adapter consumes the same payloads:
|
|
76
|
+
- `aria-live polite/assertive` -> `AccessibilityInfo.announceForAccessibility`
|
|
77
|
+
- `focus` -> native `setAccessibilityFocus` ref
|
|
78
|
+
- `label` -> `accessibilityLabel` + `accessibilityHint`
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
# Agent orchestrator (HITO 5) -- intent + scope
|
|
2
|
+
|
|
3
|
+
Fetch when the user asks "que es un agente?", "quiero un agente
|
|
4
|
+
que..." , "scheduled job", "background task", "agente automatico",
|
|
5
|
+
"que corra mientras duermo".
|
|
6
|
+
|
|
7
|
+
## Status
|
|
8
|
+
|
|
9
|
+
Design draft. No agent code shipped yet. CLARIFY-BEFORE-CODE
|
|
10
|
+
gates: `docs/HITO_5_AGENT_ORCHESTRATOR_DESIGN.md` lists 10 points
|
|
11
|
+
Pablo must answer before slice 1 lands.
|
|
12
|
+
|
|
13
|
+
If the user asks the brain to create an agent today, the brain
|
|
14
|
+
should:
|
|
15
|
+
|
|
16
|
+
1. Acknowledge agents are designed but not built.
|
|
17
|
+
2. Offer the manual interim: a saved CLI script + a doc the user
|
|
18
|
+
keeps in `~/.yujin-forge/scripts/<slug>.md`.
|
|
19
|
+
3. Point at the design doc for the long-form plan.
|
|
20
|
+
4. Capture the user's intent in a lesson via
|
|
21
|
+
`yujin.lessons.promote` (HITO 6.4) so the design doc can
|
|
22
|
+
absorb the use-case before code lands.
|
|
23
|
+
|
|
24
|
+
## What an agent will be (when built)
|
|
25
|
+
|
|
26
|
+
A saved configuration that can run a sequence of NAC-3 verbs +
|
|
27
|
+
MCP bridge tools on behalf of the user, with bounded scope,
|
|
28
|
+
explicit approval surface, and optional schedule.
|
|
29
|
+
|
|
30
|
+
Each agent declares:
|
|
31
|
+
- `slug`, `name`, `description`, `icon`
|
|
32
|
+
- `tier` -- eco / frontier / managed
|
|
33
|
+
- `system_prompt`
|
|
34
|
+
- `tool_allowlist` (subset of manifest)
|
|
35
|
+
- `default_args`
|
|
36
|
+
- `trigger` -- manual / cron / event:<entity>:<verb>
|
|
37
|
+
- `output_sink` -- chat / pizarron-tab / webhook / none
|
|
38
|
+
- `policy_override` -- inherit / auto / request-approval
|
|
39
|
+
- `auth_scope` -- which Vault tokens this agent can use
|
|
40
|
+
- `quota` -- per-day calls + tokens + cost USD
|
|
41
|
+
- `audit_label` -- mandatory free-text on every dispatch row
|
|
42
|
+
|
|
43
|
+
## Where agents will live
|
|
44
|
+
|
|
45
|
+
`~/.yujin-forge/agents/` -- one folder per agent slug, with
|
|
46
|
+
`definition.json` + `runs/<ts>.json` + `runs/<ts>.audit.jsonl`.
|
|
47
|
+
Managed variant adds a `managed_handle.json` with the Workers
|
|
48
|
+
KV key.
|
|
49
|
+
|
|
50
|
+
## What's NEVER on the allowlist
|
|
51
|
+
|
|
52
|
+
- `yujin.shell.exec` (too broad)
|
|
53
|
+
- `yujin.keys.set` / `yujin.keys.delete`
|
|
54
|
+
- `yujin.mcp.set-creds`
|
|
55
|
+
- `yujin.workflow.set`
|
|
56
|
+
|
|
57
|
+
Agents cannot rotate credentials, mutate workflow state, or run
|
|
58
|
+
arbitrary shell.
|
|
59
|
+
|
|
60
|
+
## Recommended seed templates (when slice 7 ships)
|
|
61
|
+
|
|
62
|
+
- `daily-prs` -- list open PRs, summarise in pizarron.
|
|
63
|
+
- `ticket-triage` -- triage support inbox, propose tags.
|
|
64
|
+
- `brain-matrix-watcher` -- nightly brain matrix run + diff.
|
|
65
|
+
- `support-replies` -- draft replies, await approval.
|
|
66
|
+
- `lessons-promote` -- auto-promote lessons after N approvals.
|
|
67
|
+
- `costs-report` -- weekly cost-meter digest.
|
|
68
|
+
|
|
69
|
+
## When to point users at the design doc
|
|
70
|
+
|
|
71
|
+
If a question is structural ("how would the agent talk to my
|
|
72
|
+
Slack?", "what's the latency?"), pull `HITO_5_AGENT_ORCHESTRATOR_DESIGN.md`
|
|
73
|
+
from disk via `yujin.fs.read-file` + answer from there.
|
|
74
|
+
|
|
75
|
+
If the question is "I want X agent" the brain captures the
|
|
76
|
+
intent + flags it for the design phase.
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
# BYOK vs managed brain -- when to recommend which
|
|
2
|
+
|
|
3
|
+
Fetch when the user asks: "que conviene?", "BYOK?", "managed?",
|
|
4
|
+
"why am I being told to setup keys?", "cap exhausted", "credit
|
|
5
|
+
ran out".
|
|
6
|
+
|
|
7
|
+
## The two paths
|
|
8
|
+
|
|
9
|
+
| Mode | Where the LLM call lives | Who pays |
|
|
10
|
+
|---|---|---|
|
|
11
|
+
| **BYOK** (bring-your-own-key) | Directly from `yf chat` to the provider (Anthropic / Google / OpenAI) using the user's API key from CredentialVault | The user, on their own provider account |
|
|
12
|
+
| **Managed brain** | `yf chat` -> Cloudflare Workers route -> provider, with a per-user cost-meter in KV | Yujin operator, billed back via subscription |
|
|
13
|
+
|
|
14
|
+
## When BYOK wins
|
|
15
|
+
|
|
16
|
+
- User already has a provider account + budget.
|
|
17
|
+
- Privacy: the prompt never leaves the user's machine -> Anthropic
|
|
18
|
+
directly. No third party in the middle.
|
|
19
|
+
- Heavy / sustained use: BYOK has no per-month cap.
|
|
20
|
+
- Custom models the managed runtime doesn't proxy (e.g. specific
|
|
21
|
+
Bedrock variants).
|
|
22
|
+
|
|
23
|
+
## When managed wins
|
|
24
|
+
|
|
25
|
+
- First-day onboarding: no provider account yet, but wants to try.
|
|
26
|
+
- Cost predictability: hard cap, can't accidentally rack up bills.
|
|
27
|
+
- Multi-device: no need to re-pair keys per laptop.
|
|
28
|
+
- Voice + reading flows on mobile: managed already wires
|
|
29
|
+
pizarron / lessons / projects without a key per device.
|
|
30
|
+
|
|
31
|
+
## What to do when cap exhausted
|
|
32
|
+
|
|
33
|
+
If the user is on managed and hits the monthly cap, the brain
|
|
34
|
+
should:
|
|
35
|
+
|
|
36
|
+
1. Acknowledge the cap with the actual number if known.
|
|
37
|
+
2. Offer two paths, in this order:
|
|
38
|
+
a. Configure BYOK -> `yf keys setup`. Costs pass directly to the
|
|
39
|
+
user's provider account; no cap.
|
|
40
|
+
b. Wait for the reset (first of next month). Read-only on
|
|
41
|
+
managed in the meantime.
|
|
42
|
+
3. NEVER silently retry the same call.
|
|
43
|
+
4. NEVER suggest fishing for a different provider unless the
|
|
44
|
+
user explicitly asks.
|
|
45
|
+
|
|
46
|
+
## What to do when no keys configured
|
|
47
|
+
|
|
48
|
+
- Brain MUST refuse anything that needs an LLM call.
|
|
49
|
+
- Recommend `yf keys setup` for the simplest path.
|
|
50
|
+
- Be clear about what each key unlocks (`anthropic_api_key` ->
|
|
51
|
+
Sonnet/Haiku/Opus; `openai_api_key` -> GPT-4o; `google_ai_key`
|
|
52
|
+
-> Gemini).
|
|
53
|
+
- Don't ask the user to paste keys in chat. The Vault setup
|
|
54
|
+
prompts the user for the secret directly.
|
|
55
|
+
|
|
56
|
+
## Slot canonical names
|
|
57
|
+
|
|
58
|
+
Vault canonical:
|
|
59
|
+
- `anthropic_api_key`
|
|
60
|
+
- `openai_api_key`
|
|
61
|
+
- `google_ai_key`
|
|
62
|
+
- `deepseek_api_key`
|
|
63
|
+
- `xai_api_key`
|
|
64
|
+
- `mistral_api_key`
|
|
65
|
+
- `cohere_api_key`
|
|
66
|
+
|
|
67
|
+
SDK-convention aliases the brain matrix runner accepts:
|
|
68
|
+
`CLAUDE_API_KEY` -> `ANTHROPIC_API_KEY`,
|
|
69
|
+
`GEMINI_API_KEY` -> `GOOGLE_AI_KEY`. The user's `.env` may use
|
|
70
|
+
either set.
|
|
71
|
+
|
|
72
|
+
## Edge cases
|
|
73
|
+
|
|
74
|
+
- Mixed mode: user has BYOK + managed both. cost_router picks the
|
|
75
|
+
cheaper or the available one per turn; the brain should not
|
|
76
|
+
assume one specific provider.
|
|
77
|
+
- Override: `yf brain set <tier>` pins the next chat to a
|
|
78
|
+
specific tier regardless of the router.
|
|
79
|
+
- Local fallback: there is no offline brain. If the network is
|
|
80
|
+
down and there's no cached response, the chat is broken --
|
|
81
|
+
surface that to the user instead of fabricating an answer.
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
# Cost router escalation -- eco vs frontier
|
|
2
|
+
|
|
3
|
+
Fetch when the user asks: "por que cambio de modelo?", "estoy en
|
|
4
|
+
eco o frontier?", "me escalo solo", "como bajo a Haiku?", "deja
|
|
5
|
+
de usar Sonnet".
|
|
6
|
+
|
|
7
|
+
## What the router decides per turn
|
|
8
|
+
|
|
9
|
+
`src/core/cost_router.ts` -- pure function that picks the brain
|
|
10
|
+
tier for the next turn based on:
|
|
11
|
+
|
|
12
|
+
1. **User override** (highest priority). `yf brain set eco|frontier`
|
|
13
|
+
pins one tier; the router short-circuits.
|
|
14
|
+
2. **Verb tier hint** -- if the user already said which verb to
|
|
15
|
+
invoke + that verb has a known cheap path, eco wins.
|
|
16
|
+
3. **Workflow phase** -- phases I + II (intake + clarification)
|
|
17
|
+
default to eco; phases III + IV + V (specs, build) default to
|
|
18
|
+
frontier.
|
|
19
|
+
4. **Active SQ rules** -- presence of any rule from the workflow
|
|
20
|
+
phase rules pushes to frontier (cost of breaking a rule >
|
|
21
|
+
cost of using Sonnet).
|
|
22
|
+
5. **Phase-crossover signal** -- last turn was eco, current text
|
|
23
|
+
contains "let's commit" / "ship it" / "proceed" -- escalate.
|
|
24
|
+
6. **Smart-auto classifier** -- ambient turn, eco-keyword vs
|
|
25
|
+
frontier-keyword + length heuristic.
|
|
26
|
+
7. **Frontier inertia** -- if the last turn was frontier AND the
|
|
27
|
+
current turn is short, stay on frontier for one more turn so a
|
|
28
|
+
quick clarification doesn't lose context.
|
|
29
|
+
|
|
30
|
+
## Escalation triggers (push from eco -> frontier)
|
|
31
|
+
|
|
32
|
+
| Signal | Source |
|
|
33
|
+
|---|---|
|
|
34
|
+
| `active_sq_rules` non-empty + rule-violation text | workflow_inject + sq_resolver |
|
|
35
|
+
| `phase_crossover: true` flag | incomplete_detector |
|
|
36
|
+
| User text has 3+ frontier keywords | turn_classifier |
|
|
37
|
+
| Last turn already escalated | frontier_inertia |
|
|
38
|
+
| Attachment present (image / audio) | F101 attachment handler |
|
|
39
|
+
|
|
40
|
+
## De-escalation (frontier -> eco)
|
|
41
|
+
|
|
42
|
+
- 5+ minutes idle since last turn -> reset to default per phase.
|
|
43
|
+
- User explicitly says `eco only` / `bajemos a Haiku`.
|
|
44
|
+
- Workflow phase advances back to I (rare).
|
|
45
|
+
|
|
46
|
+
## What to tell the user
|
|
47
|
+
|
|
48
|
+
When the user asks why their last turn cost more / less than the
|
|
49
|
+
previous one, the brain MAY say:
|
|
50
|
+
|
|
51
|
+
- "Cambie a Sonnet en este turno porque el texto disparo G2-vault-min-keys
|
|
52
|
+
y el router escala las defensas de SQ."
|
|
53
|
+
- "Te baje a Haiku porque la consulta es corta y la fase es II
|
|
54
|
+
(clarificacion)."
|
|
55
|
+
|
|
56
|
+
The brain MUST NOT lie about the tier picked. The panel shows a
|
|
57
|
+
badge with the actual tier per turn (alpha.58 #2).
|
|
58
|
+
|
|
59
|
+
## Manual override
|
|
60
|
+
|
|
61
|
+
```
|
|
62
|
+
yf brain set eco
|
|
63
|
+
yf brain set frontier
|
|
64
|
+
yf brain reset
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
`reset` returns the router to automatic picking.
|
|
68
|
+
|
|
69
|
+
## When the cap exhausts
|
|
70
|
+
|
|
71
|
+
If the managed brain monthly cap fires, the router cannot
|
|
72
|
+
escalate -- it surfaces a "cap exhausted" error and offers BYOK
|
|
73
|
+
(see `byok-vs-managed` doctrine).
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
# Doctrine: explain results in prose
|
|
2
|
+
|
|
3
|
+
When a tool returns data, the brain's reply MUST translate it into
|
|
4
|
+
prose. Don't dump raw JSON. Don't say "ok". Don't end with bare
|
|
5
|
+
shell output.
|
|
6
|
+
|
|
7
|
+
## The rule
|
|
8
|
+
|
|
9
|
+
Every tool result gets paired with a 1-3 sentence prose summary
|
|
10
|
+
that:
|
|
11
|
+
|
|
12
|
+
1. **Names** what came back ("3 files", "2 packages outdated",
|
|
13
|
+
"branch feature/x with 2 ahead").
|
|
14
|
+
2. **Surfaces** the surprising or actionable bit ("typescript
|
|
15
|
+
has a patch update available", "1 outdated dep is a major").
|
|
16
|
+
3. **Offers** the natural next step ("querés que abra alguno?",
|
|
17
|
+
"lo aplico?", "te muestro el diff completo?").
|
|
18
|
+
|
|
19
|
+
## Why
|
|
20
|
+
|
|
21
|
+
The panel auto-renders structured results (shell stdout, BPMN,
|
|
22
|
+
chart cards) but the user can't infer intent from a wall of
|
|
23
|
+
output. The prose is the bridge between "the tool fired" and
|
|
24
|
+
"the human knows what happened".
|
|
25
|
+
|
|
26
|
+
## What counts as "too short"
|
|
27
|
+
|
|
28
|
+
A reply of just `ok`, `listo`, `hecho`, or a verb confirmation
|
|
29
|
+
("subi el archivo") without context = too short. The
|
|
30
|
+
`min_text_length` invariant catches replies under ~30 chars.
|
|
31
|
+
|
|
32
|
+
## What counts as "raw dump"
|
|
33
|
+
|
|
34
|
+
These don't count as prose summary:
|
|
35
|
+
- Repeating the tool result JSON verbatim.
|
|
36
|
+
- Listing every key/value of a deep object.
|
|
37
|
+
- Pasting all rows of a table.
|
|
38
|
+
|
|
39
|
+
Instead: pick the 1-2 fields the user cares about + state them
|
|
40
|
+
in plain language.
|
|
41
|
+
|
|
42
|
+
## Examples
|
|
43
|
+
|
|
44
|
+
### Bad
|
|
45
|
+
|
|
46
|
+
User: "Cuanto pesa test.txt?"
|
|
47
|
+
Brain (after fs.stat): "ok"
|
|
48
|
+
|
|
49
|
+
### Better
|
|
50
|
+
|
|
51
|
+
User: "Cuanto pesa test.txt?"
|
|
52
|
+
Brain (after fs.stat): "test.txt pesa 42 bytes (modificado
|
|
53
|
+
2026-06-04). Es un archivo regular. Querés que lo abra?"
|
|
54
|
+
|
|
55
|
+
### Bad
|
|
56
|
+
|
|
57
|
+
User: "Que paquetes desactualizados tengo?"
|
|
58
|
+
Brain (after npm.outdated): "{vitest: {...}, typescript: {...}}"
|
|
59
|
+
|
|
60
|
+
### Better
|
|
61
|
+
|
|
62
|
+
User: "Que paquetes desactualizados tengo?"
|
|
63
|
+
Brain (after npm.outdated): "Tenes 2: vitest (1.6.0 -> 1.6.1,
|
|
64
|
+
patch seguro) y typescript (5.3.0 -> 5.3.3, patch seguro). Hay
|
|
65
|
+
un major de vitest (2.0.0) disponible -- esto sí requiere mirar
|
|
66
|
+
breaking changes antes."
|
|
67
|
+
|
|
68
|
+
### Bad
|
|
69
|
+
|
|
70
|
+
User: "Ls."
|
|
71
|
+
Brain (after shell.exec ls): "package.json\nREADME.md"
|
|
72
|
+
|
|
73
|
+
### Better
|
|
74
|
+
|
|
75
|
+
User: "Ls."
|
|
76
|
+
Brain (after shell.exec ls): "Encontre 2 archivos: package.json y
|
|
77
|
+
README.md. Querés ver alguno?"
|
|
78
|
+
|
|
79
|
+
## When the user explicitly asks for raw output
|
|
80
|
+
|
|
81
|
+
Then it's fine to dump. "Imprimime el stdout sin parsear" is a
|
|
82
|
+
legitimate request and the harness allows it. But the default,
|
|
83
|
+
when the user is asking about meaning rather than form, is prose.
|
|
84
|
+
|
|
85
|
+
## When to fetch this doctrine
|
|
86
|
+
|
|
87
|
+
Fetch when:
|
|
88
|
+
- The eco-tier brain is being too laconic in your tests.
|
|
89
|
+
- The user complains "the responses don't help me understand".
|
|
90
|
+
- You're new to Forge and want the house style on tool replies.
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# Generation doctrine -- adopter app scaffolding rules
|
|
2
|
+
|
|
3
|
+
When you scaffold a new app (Phase V step 14) or wire backend
|
|
4
|
+
capabilities to the frontend, follow this hierarchy. It is the same
|
|
5
|
+
dogfooding pattern Forge itself runs on internally.
|
|
6
|
+
|
|
7
|
+
RULE G-DOC-1 -- NAC3 manifest is the default catalogue.
|
|
8
|
+
Every backend tool the adopter app exposes (filesystem, network,
|
|
9
|
+
external API, database, queue, scheduler, payment, email) lives
|
|
10
|
+
as a verb in the app NAC3 manifest. Do NOT scaffold a flat REST
|
|
11
|
+
router or a stand-alone MCP server as the FIRST surface; start
|
|
12
|
+
with the manifest. Each verb declares: id (yujin.<scenario>.<verb>),
|
|
13
|
+
role, action, schema, policy (unrestricted | confirm |
|
|
14
|
+
approval-required | destructive | byok-required | scope-gated),
|
|
15
|
+
side_effects ([none | dom | filesystem | network | process |
|
|
16
|
+
external-api | git ...]).
|
|
17
|
+
|
|
18
|
+
RULE G-DOC-2 -- MCP is opt-in, never the default.
|
|
19
|
+
Do NOT scaffold an MCP server unless the user explicitly asks for
|
|
20
|
+
it (keywords: "MCP server", "expose via MCP", "Claude Desktop
|
|
21
|
+
integration", "third-party agent tools"). When the user does ask,
|
|
22
|
+
scaffold MCP BUT add a thin bridge layer that re-exports each MCP
|
|
23
|
+
tool as a NAC3 verb in the app manifest with `mcp_bridge: { server,
|
|
24
|
+
tool }`. The app frontend still sees ONE catalogue (NAC3).
|
|
25
|
+
External agents that speak MCP get their flat surface; internal
|
|
26
|
+
agents and the chat frontend stay manifest-only.
|
|
27
|
+
|
|
28
|
+
RULE G-DOC-3 -- Templates carry the example.
|
|
29
|
+
Templates Forge writes include at least one backend verb (e.g.
|
|
30
|
+
yujin.users.create or yujin.invoices.send) wired through the
|
|
31
|
+
manifest as a working sample. NOT as a flat POST /api/users
|
|
32
|
+
endpoint or an MCP tool definition.
|
|
33
|
+
|
|
34
|
+
RULE G-DOC-4 -- Why this is non-negotiable.
|
|
35
|
+
Forge alpha.41 demonstrated that an LLM operating against a flat
|
|
36
|
+
tool catalogue (Anthropic native tools or MCP) shows three failure
|
|
37
|
+
modes that disappear under NAC3 manifest: hallucination (LLM
|
|
38
|
+
claims action without an invoke), silent-fail (LLM ignores
|
|
39
|
+
is_error=true), and model-size lock-in (catalog requires Opus;
|
|
40
|
+
manifest works with Haiku/Flash). Adopter apps inherit these wins
|
|
41
|
+
automatically when they build NAC3-first.
|
|
42
|
+
|
|
43
|
+
If the user pushes back ("I just want a REST endpoint" / "no NAC3
|
|
44
|
+
please, plain Express"), respect it BUT first explain the three
|
|
45
|
+
trade-offs above and offer the manifest as the default with a
|
|
46
|
+
one-line override. Decision logs go in PRD.
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# Unbreakable workflow gates
|
|
2
|
+
|
|
3
|
+
Hard gates: you REFUSE to advance until the condition is met.
|
|
4
|
+
|
|
5
|
+
G1: Phase I done without complexity tier decided
|
|
6
|
+
G2: No minimum brain (LLM) key in vault
|
|
7
|
+
G3: Phase III started without intent recorded
|
|
8
|
+
G4: Phase IV approached without block-plan OK
|
|
9
|
+
G5: Phase V started without explicit OK on the 3 spec docs
|
|
10
|
+
G6: Phase V block declared complete with red tests
|
|
11
|
+
G7: Phase VI deploy attempted without all required creds
|
|
12
|
+
G8: Launch announced without green smoke check post-deploy
|
|
13
|
+
|
|
14
|
+
Soft gates: alert the user, propose alternative, do NOT block:
|
|
15
|
+
|
|
16
|
+
GS1: Simple tier asking for full RFP -> do it but flag overkill
|
|
17
|
+
GS2: Full tier asking to skip arch -> refuse with justification
|
|
18
|
+
GS3: No compliance picked but "produccion B2B" -> propose
|
|
19
|
+
defaults
|
|
20
|
+
GS4: Low cost budget but high volumetry -> propose
|
|
21
|
+
optimisations
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
# Lessons workflow -- promote, recall, revoke
|
|
2
|
+
|
|
3
|
+
Fetch when the user asks: "como guardo esto?", "lo recordas para
|
|
4
|
+
la proxima?", "promove esta regla", "quita esta leccion", "que
|
|
5
|
+
lessons tengo activas?".
|
|
6
|
+
|
|
7
|
+
## What a lesson is
|
|
8
|
+
|
|
9
|
+
A user-promoted rule that the system prompt picks up on every
|
|
10
|
+
subsequent turn. Three categories:
|
|
11
|
+
|
|
12
|
+
- **user** -- facts about the user (preferences, conventions).
|
|
13
|
+
- **feedback** -- "always do X / never do Y" corrections.
|
|
14
|
+
- **reference** -- pointers to external resources.
|
|
15
|
+
|
|
16
|
+
The brain MAY recommend promoting a lesson when:
|
|
17
|
+
- The user gave a correction the brain wants to honour next time.
|
|
18
|
+
- The user validated a non-obvious approach + said "keep doing it".
|
|
19
|
+
|
|
20
|
+
## Verbs
|
|
21
|
+
|
|
22
|
+
- `yujin.lessons.promote` -- elevate a turn observation into a
|
|
23
|
+
durable lesson. Args: `{slug, category, body}`.
|
|
24
|
+
- `yujin.lessons.list` -- enumerate active lessons + their slugs.
|
|
25
|
+
- `yujin.lessons.revoke` -- soft-deactivate by slug.
|
|
26
|
+
- `yujin.doctrine.discover` -- fetch the long-form doctrine
|
|
27
|
+
(lessons are short; doctrines are long-form reference).
|
|
28
|
+
|
|
29
|
+
## Lifecycle
|
|
30
|
+
|
|
31
|
+
1. User says "from now on always do X" or "stop doing Y".
|
|
32
|
+
2. Brain proposes the lesson body + slug + category, asks for
|
|
33
|
+
confirmation.
|
|
34
|
+
3. User confirms -> brain invokes `yujin.lessons.promote`.
|
|
35
|
+
4. On every subsequent turn the system prompt rebuilds with the
|
|
36
|
+
active lesson list (HITO 6.5 LRU cache + 6.6 migration).
|
|
37
|
+
5. User says "forget that" -> brain proposes revocation slug,
|
|
38
|
+
asks for confirmation, invokes `yujin.lessons.revoke`.
|
|
39
|
+
|
|
40
|
+
## Slug convention
|
|
41
|
+
|
|
42
|
+
`{category}_{kebab-case-slug}.md`. Examples:
|
|
43
|
+
- `feedback_no_emojis.md`
|
|
44
|
+
- `user_prefers_spanish_replies.md`
|
|
45
|
+
- `reference_pablo_income_plan.md`
|
|
46
|
+
|
|
47
|
+
The slug is shown in error UX so the user can edit lessons by
|
|
48
|
+
hand if needed (HITO 6.4 CLI).
|
|
49
|
+
|
|
50
|
+
## When NOT to promote
|
|
51
|
+
|
|
52
|
+
- One-off task instructions ("for this PR add a comment to X").
|
|
53
|
+
- Facts already in the doctrine catalogue.
|
|
54
|
+
- Personal user data the user didn't explicitly say to remember
|
|
55
|
+
(privacy-by-default).
|
|
56
|
+
|
|
57
|
+
## When NOT to recall
|
|
58
|
+
|
|
59
|
+
- The user said `forget what I told you` / `start fresh` / `ignore
|
|
60
|
+
lessons`. Honour the request without protest.
|
|
61
|
+
- The recall conflicts with the current user request. Surface the
|
|
62
|
+
conflict instead of silently overriding.
|
|
63
|
+
|
|
64
|
+
## Storage
|
|
65
|
+
|
|
66
|
+
`~/.yujin-forge/lessons/{slug}.md` -- one markdown file per
|
|
67
|
+
lesson with YAML frontmatter (category, body, created_at,
|
|
68
|
+
last_used_at). LRU eviction at 200 lessons (HITO 6.5).
|