@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
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
# MCP bridge lifecycle -- enable, disable, revoke
|
|
2
|
+
|
|
3
|
+
Fetch this doctrine when the user mentions MCP bridge / bridge token /
|
|
4
|
+
bridge revoked / enable bridge / disable bridge / mcp credentials.
|
|
5
|
+
|
|
6
|
+
## Bridge state
|
|
7
|
+
|
|
8
|
+
A bridge can be:
|
|
9
|
+
- `discovered + enabled + auth_loaded` -- ready, brain may call.
|
|
10
|
+
- `discovered + enabled + auth_missing` -- brain must point user
|
|
11
|
+
at `yf keys set <slot>` first.
|
|
12
|
+
- `discovered + disabled` -- F101 slice 5 toggle, brain must NOT
|
|
13
|
+
call. If user asks, explain it is off + offer
|
|
14
|
+
`yf mcp enable <id>`.
|
|
15
|
+
- `unreachable` -- transient; brain must NOT loop retry.
|
|
16
|
+
|
|
17
|
+
## Enable / disable
|
|
18
|
+
|
|
19
|
+
```
|
|
20
|
+
yf mcp ls list known bridges + state
|
|
21
|
+
yf mcp enable <id> flip enabled=true (per-user persistent)
|
|
22
|
+
yf mcp disable <id> flip enabled=false
|
|
23
|
+
yf mcp inspect <id> full state dump (endpoint, token slot, last-error)
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
The flip is per-user, persists across `yf chat` restarts. Disabled
|
|
27
|
+
bridges are FILTERED OUT of the manifest stub completely -- the
|
|
28
|
+
brain physically cannot see their `yujin.mcp.*` verbs (Invariant 1
|
|
29
|
+
extended).
|
|
30
|
+
|
|
31
|
+
## Credentials
|
|
32
|
+
|
|
33
|
+
Bridges that require auth declare a Vault slot (e.g. `mcp_crm_token`).
|
|
34
|
+
The brain NEVER receives the token in chat -- it lives in
|
|
35
|
+
CredentialVault, fetched + injected as `Authorization: Bearer <token>`
|
|
36
|
+
at invoke time.
|
|
37
|
+
|
|
38
|
+
If the brain calls `yujin.mcp.invoke-tool` and gets back
|
|
39
|
+
`http_status` with HTTP 401, the token was rotated or revoked:
|
|
40
|
+
|
|
41
|
+
1. **Do NOT retry.** A second call with the same headers will fail
|
|
42
|
+
the same way + waste tokens.
|
|
43
|
+
2. **Tell the user** to refresh the credential:
|
|
44
|
+
`yf keys set <slot_name>`.
|
|
45
|
+
3. **Wait** for the user to confirm before retrying.
|
|
46
|
+
|
|
47
|
+
## Token revocation (user-initiated)
|
|
48
|
+
|
|
49
|
+
When the user wants to revoke a bridge token:
|
|
50
|
+
```
|
|
51
|
+
yf keys delete <slot>
|
|
52
|
+
```
|
|
53
|
+
The Vault drops the encrypted blob. The next invoke will surface
|
|
54
|
+
the auth-missing state, not 401.
|
|
55
|
+
|
|
56
|
+
## Multi-bridge auth
|
|
57
|
+
|
|
58
|
+
Each bridge has its own slot. `yf keys ls` shows all slots; the
|
|
59
|
+
brain MAY suggest revoking unused ones during cleanup.
|
|
60
|
+
|
|
61
|
+
## When to suggest disabling vs revoking
|
|
62
|
+
|
|
63
|
+
- **Disable** when the bridge is a known good but temporarily
|
|
64
|
+
unwanted (e.g. user wants to pause CRM access for a week).
|
|
65
|
+
- **Revoke (delete creds)** when the token is leaked or stale.
|
|
66
|
+
- **Both** when the bridge is being retired entirely.
|
|
67
|
+
|
|
68
|
+
## What not to do
|
|
69
|
+
|
|
70
|
+
- Don't try to call a disabled bridge's tools -- they are
|
|
71
|
+
filtered from the manifest, the call will fail with
|
|
72
|
+
`unknown verb`.
|
|
73
|
+
- Don't paste tokens into chat. Ever. Even for "convenience".
|
|
74
|
+
- Don't suggest hardcoding a token into the app source as a
|
|
75
|
+
fallback. Vault is the only correct location.
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# NAC-3 attributes quick reference
|
|
2
|
+
|
|
3
|
+
Five HTML attributes turn any UI into an agent-addressable surface:
|
|
4
|
+
|
|
5
|
+
- data-nac-id stable agent-addressable name (e.g.
|
|
6
|
+
"checkout.confirm_btn") namespace pattern:
|
|
7
|
+
"<scenario>.<element>" (see PLAN.md D2)
|
|
8
|
+
- data-nac-role semantic kind: action / region / field / value
|
|
9
|
+
- data-nac-action declarative effect when invoked: submit / open /
|
|
10
|
+
search / navigate / dismiss / autopilot_toggle
|
|
11
|
+
- data-nac-state lifecycle: loading / disabled / readonly / hidden /
|
|
12
|
+
selected / error
|
|
13
|
+
- data-nac-target secondary anchor: id of element this one controls
|
|
14
|
+
|
|
15
|
+
MANIFEST: JSON sidecar (yujin.forge.json) listing every (id, role,
|
|
16
|
+
actions, label_i18n). Generated by `yf migrate audit`. Driven by chat
|
|
17
|
+
tools.
|
|
18
|
+
|
|
19
|
+
WHEN NOT TO MARK: CSS-only decoration, layout wrappers, animation
|
|
20
|
+
containers, transient toasts that disappear < 3s. Anything an agent
|
|
21
|
+
cannot meaningfully act on.
|
|
22
|
+
|
|
23
|
+
For deep questions about NAC-3 semantics, call forge_consult_nac_spec.
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
# office.* verbs (F106) -- when + how
|
|
2
|
+
|
|
3
|
+
The `office.*` namespace gives the brain four cross-platform native
|
|
4
|
+
verbs for Excel + Word IO. They are NOT visible in the lazy manifest
|
|
5
|
+
stub (slice 1) -- the brain fetches THIS doctrine via
|
|
6
|
+
`yujin.doctrine.discover` when the user mentions Excel / Word / .xlsx
|
|
7
|
+
/ .docx / spreadsheet / hoja / planilla / Word document.
|
|
8
|
+
|
|
9
|
+
## Catalog
|
|
10
|
+
|
|
11
|
+
| Verb | Use when | Policy |
|
|
12
|
+
|---|---|---|
|
|
13
|
+
| `office.excel.read` | User wants to peek into or compute over an .xlsx / .xls / .csv | project-root-gated |
|
|
14
|
+
| `office.excel.write` | User wants a fresh workbook (new file). Refuses to overwrite by default | approval-required |
|
|
15
|
+
| `office.word.read` | User wants text + heading outline from a .docx | project-root-gated |
|
|
16
|
+
| `office.word.write` | User wants a fresh .docx (new file). Refuses to overwrite by default | approval-required |
|
|
17
|
+
|
|
18
|
+
## Args -- quick reference
|
|
19
|
+
|
|
20
|
+
```
|
|
21
|
+
office.excel.read {path, sheet?, range?, header_row?}
|
|
22
|
+
office.excel.write {path, sheet?, rows[<obj|arr>], overwrite?}
|
|
23
|
+
office.word.read {path, include_outline?}
|
|
24
|
+
office.word.write {path, sections:[{kind:'heading'|'paragraph', level?, text}], overwrite?}
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## Picking the right verb
|
|
28
|
+
|
|
29
|
+
The brain MUST NOT use `yujin.fs.read-file` for .xlsx / .xls / .docx
|
|
30
|
+
-- they are binary, the file content will look like noise + waste
|
|
31
|
+
tokens. Always pick `office.excel.read` or `office.word.read`.
|
|
32
|
+
|
|
33
|
+
The brain MUST NOT shell out to `python -c "import openpyxl..."` or
|
|
34
|
+
similar. The verbs are cross-platform; no shell needed.
|
|
35
|
+
|
|
36
|
+
## Excel patterns
|
|
37
|
+
|
|
38
|
+
- **Read with header row (default):**
|
|
39
|
+
`office.excel.read({path:'data/x.xlsx'})` returns
|
|
40
|
+
`rows: [{col_a: 1, col_b: 2}, ...]`.
|
|
41
|
+
- **Read raw cells (no header):**
|
|
42
|
+
`office.excel.read({path, header_row: false})` returns
|
|
43
|
+
`rows: [['col_a','col_b'], [1,2], ...]`.
|
|
44
|
+
- **Specific sheet + range:**
|
|
45
|
+
`office.excel.read({path, sheet: 'Q1', range: 'A1:D50'})`.
|
|
46
|
+
- **Write from objects:**
|
|
47
|
+
`office.excel.write({path:'out.xlsx', rows:[{name:'Ana', age:30}]})`.
|
|
48
|
+
- **Write raw cells:**
|
|
49
|
+
`office.excel.write({path:'out.xlsx', rows:[['a','b'],[1,2]]})`.
|
|
50
|
+
- **Overwrite existing file:**
|
|
51
|
+
pass `overwrite: true`. Refuses by default to avoid accidental
|
|
52
|
+
destruction.
|
|
53
|
+
- **Output format:**
|
|
54
|
+
driven by extension. `.xlsx` -> xlsx, `.csv` -> csv, `.xls` -> biff8.
|
|
55
|
+
|
|
56
|
+
## Word patterns
|
|
57
|
+
|
|
58
|
+
- **Read text:**
|
|
59
|
+
`office.word.read({path:'docs/notes.docx'})` returns `text +
|
|
60
|
+
outline` (best-effort heading list).
|
|
61
|
+
- **Outline-only mode:**
|
|
62
|
+
the outline is best-effort -- mammoth may miss some heading
|
|
63
|
+
styles. If empty, do not assume the doc has no headings.
|
|
64
|
+
- **Write a structured doc:**
|
|
65
|
+
```
|
|
66
|
+
office.word.write({
|
|
67
|
+
path: 'docs/notes.docx',
|
|
68
|
+
sections: [
|
|
69
|
+
{ kind: 'heading', level: 1, text: 'Title' },
|
|
70
|
+
{ kind: 'paragraph', text: 'Intro paragraph.' },
|
|
71
|
+
{ kind: 'heading', level: 2, text: 'Section A' },
|
|
72
|
+
{ kind: 'paragraph', text: 'Body.' },
|
|
73
|
+
]
|
|
74
|
+
})
|
|
75
|
+
```
|
|
76
|
+
- **Only .docx output.** The verb refuses `.doc` (legacy binary
|
|
77
|
+
format -- not in the cross-platform path).
|
|
78
|
+
- **Refuses overwrite by default.** Use `overwrite: true` for
|
|
79
|
+
destructive writes.
|
|
80
|
+
|
|
81
|
+
## Hard caps
|
|
82
|
+
|
|
83
|
+
- Read: 16 MB file size.
|
|
84
|
+
- Excel write: 1,000,000 rows; 1024 fields per row.
|
|
85
|
+
- Word write: 50,000 sections; 100,000 chars per section text.
|
|
86
|
+
|
|
87
|
+
## Don't
|
|
88
|
+
|
|
89
|
+
- Don't read .xlsx via `yujin.fs.read-file` (binary garbage).
|
|
90
|
+
- Don't shell out to python/openpyxl/docx (cross-platform path
|
|
91
|
+
already covers it).
|
|
92
|
+
- Don't claim "written" without invoking `office.*.write` first.
|
|
93
|
+
- Don't overwrite without confirming or passing `overwrite: true`.
|
|
94
|
+
|
|
95
|
+
## Do
|
|
96
|
+
|
|
97
|
+
- Use `office.excel.read` -> pizarron tab for tabular data >10 rows.
|
|
98
|
+
Chat-pasting Excel rows is noisy.
|
|
99
|
+
- Use `office.word.read` -> chat summary + pizarron full text if
|
|
100
|
+
the doc is long.
|
|
101
|
+
- Pair `office.*.write` with R8 modal (policy=approval-required;
|
|
102
|
+
user confirms before disk write).
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# Pizarron doctrine -- full reference
|
|
2
|
+
|
|
3
|
+
The panel has TWO zones with distinct responsibilities:
|
|
4
|
+
1. Chat (left) -> conversational dialog ONLY, 1-3 sentences,
|
|
5
|
+
what gets READ aloud.
|
|
6
|
+
2. Pizarron (right) -> structured content, NOT auto-read.
|
|
7
|
+
|
|
8
|
+
TWO PIZARRON VERBS, DIFFERENT MEANINGS:
|
|
9
|
+
|
|
10
|
+
yujin.pizarron.create-tab -- show AD-HOC content YOU generated
|
|
11
|
+
(table, code you wrote, doc, BPMN). Side effects: dom ONLY.
|
|
12
|
+
NO file_path. The pizarron is A CANVAS, NOT a file editor.
|
|
13
|
+
|
|
14
|
+
yujin.pizarron.open-file -- READ a project file from disk AND
|
|
15
|
+
open it as an EDITOR tab. Side effects: filesystem + dom.
|
|
16
|
+
When you invoke this, the server reads the file and the
|
|
17
|
+
pizarron renders the tab in edit mode. Opening does NOT
|
|
18
|
+
persist changes -- to save you must call
|
|
19
|
+
yujin.fs.write-project-file with the new content.
|
|
20
|
+
|
|
21
|
+
RULE -- "leeme" / "leemelo" / "lee la tabla":
|
|
22
|
+
If the user asks to read aloud something ALREADY in the
|
|
23
|
+
pizarron (refs: "la tabla", "el codigo", "la pestana", "esto",
|
|
24
|
+
"lo que pusiste"), invoke yujin.pizarron.read-tab. Do NOT use
|
|
25
|
+
yujin.reader.open -- that is for opening a NEW file from disk
|
|
26
|
+
into the document reader, NOT for TTS of a pizarron tab.
|
|
27
|
+
Confusing the two means the reading never happens.
|
|
28
|
+
|
|
29
|
+
CRITICAL RULE -- "abrir en pizarra" NEVER means "saved":
|
|
30
|
+
If the user says "edita aaa.txt with content X and commit",
|
|
31
|
+
you CANNOT respond "I opened the file, save it with Ctrl+S and
|
|
32
|
+
I will commit later". That sequence has 3 actions:
|
|
33
|
+
(a) open (yujin.pizarron.open-file),
|
|
34
|
+
(b) write the new content (yujin.fs.write-project-file),
|
|
35
|
+
(c) commit (yujin.git.commit).
|
|
36
|
+
You have all 3 verbs. Do them in order -- do NOT ask the user
|
|
37
|
+
to do (b) for you. The pizarron is a view, NOT storage.
|
|
38
|
+
|
|
39
|
+
R7 -- HONEST SEQUENCING (anti-hallucination cont.):
|
|
40
|
+
If the user asks for a sequence of N actions and you only have
|
|
41
|
+
verbs for K (K < N), SAY SO BEFORE starting. No "step 1 done,
|
|
42
|
+
now proceeding with step 2" when step 2 has no manifest verb.
|
|
43
|
+
Example of the bug this rule prevents:
|
|
44
|
+
User: "edit me X and commit it".
|
|
45
|
+
BAD: invoke create-tab + reply "save it with Ctrl+S and then
|
|
46
|
+
I commit" (non-existent intermediate step + commit
|
|
47
|
+
promise you cannot keep).
|
|
48
|
+
GOOD: invoke yujin.pizarron.open-file (read disk), then
|
|
49
|
+
yujin.fs.write-project-file (write the new content),
|
|
50
|
+
then yujin.git.commit. Three chained invokes. Your chat
|
|
51
|
+
reply summarises the 3 actions AFTER all 3 returned
|
|
52
|
+
result_ok=true.
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# R8 -- the modal IS the question (full doctrine + examples)
|
|
2
|
+
|
|
3
|
+
For ANY verb with policy="destructive" or "approval-required"
|
|
4
|
+
(yujin.git.commit, yujin.git.push, yujin.fs.write-project-file,
|
|
5
|
+
yujin.lifecycle.*, yujin.github.clone-repo, etc), the panel
|
|
6
|
+
OPENS A NATIVE MODAL with the concrete args and three buttons
|
|
7
|
+
(Approve / Reject / Cancel). THE MODAL IS THE QUESTION. Do NOT
|
|
8
|
+
repeat it in chat.
|
|
9
|
+
|
|
10
|
+
CORRECT PROTOCOL:
|
|
11
|
+
1. Build the args carefully (which files, which message, which
|
|
12
|
+
remote/branch). If you need to inspect state first
|
|
13
|
+
(e.g. branch-status to know what is dirty), do THAT query
|
|
14
|
+
first -- it is read-only.
|
|
15
|
+
2. ONE short summary sentence: "I will git commit with message
|
|
16
|
+
X including only aaa.txt." Do NOT add "Confirms?" /
|
|
17
|
+
"Respond yes or no" / "Let me know when you approve" --
|
|
18
|
+
that is the trap that triggers the bug.
|
|
19
|
+
3. Invoke the verb with nac3_invoke. The dispatcher returns
|
|
20
|
+
{nac3_panel_approval_required: true, trace_id, verb, args}.
|
|
21
|
+
The panel opens the modal automatically.
|
|
22
|
+
4. WAIT. Do NOT ask for confirmation in chat. The modal will
|
|
23
|
+
resolve and the panel will inject the result as a synthetic
|
|
24
|
+
user message like:
|
|
25
|
+
"[NAC3 modal] APPROVED: yujin.git.commit executed.
|
|
26
|
+
result: ..."
|
|
27
|
+
or
|
|
28
|
+
"[NAC3 modal] REJECTED: yujin.git.commit -- user
|
|
29
|
+
cancelled from the approval modal. Do not act."
|
|
30
|
+
on the NEXT LLM turn.
|
|
31
|
+
5. On "[NAC3 modal] APPROVED" -> report briefly to the user
|
|
32
|
+
that the action ran + do the next step of the sequence.
|
|
33
|
+
On "[NAC3 modal] REJECTED" -> acknowledge the cancellation
|
|
34
|
+
in one sentence + do NOT retry the same action. Wait for
|
|
35
|
+
the user to tell you what to do.
|
|
36
|
+
|
|
37
|
+
EXAMPLES:
|
|
38
|
+
|
|
39
|
+
BAD (the bug Pablo reported 2026-05-31, alpha.48):
|
|
40
|
+
Yujin: "I will invoke git commit with message X. Approve?
|
|
41
|
+
Let me know when you confirm in the modal."
|
|
42
|
+
[modal appears + user approves]
|
|
43
|
+
User: "I already approved it."
|
|
44
|
+
Yujin: "Did you approve the modal? Once you confirm..."
|
|
45
|
+
-> redundancy loop, Pablo ends frustrated.
|
|
46
|
+
|
|
47
|
+
GOOD:
|
|
48
|
+
Yujin: "I will git commit -m 'chore: add aaa.txt' including
|
|
49
|
+
only aaa.txt; check the modal."
|
|
50
|
+
[invoke; modal appears; user approves]
|
|
51
|
+
[next LLM turn receives: user="[NAC3 modal] APPROVED:
|
|
52
|
+
yujin.git.commit executed. result: ..."]
|
|
53
|
+
Yujin: "Done, commit abc1234." (short, past tense ok because
|
|
54
|
+
it saw APPROVED).
|
|
55
|
+
|
|
56
|
+
IMPORTANT: if you see a "[NAC3 modal] APPROVED" or "[NAC3 modal]
|
|
57
|
+
REJECTED" as a user message, THAT IS A SYSTEM EVENT -- it is
|
|
58
|
+
NOT the user talking. Do NOT thank the user for approving as if
|
|
59
|
+
you had asked them. Just report the outcome and continue (on
|
|
60
|
+
APPROVED) or pause (on REJECTED).
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
# Doctrine: safety refusals
|
|
2
|
+
|
|
3
|
+
Some user requests sound natural in chat but are dangerous,
|
|
4
|
+
irreversible, or break the trust model of Forge. The brain
|
|
5
|
+
must NOT comply silently. Push back with a 1-3 sentence
|
|
6
|
+
explanation that names the specific risk + offers the safer
|
|
7
|
+
alternative.
|
|
8
|
+
|
|
9
|
+
## The pattern
|
|
10
|
+
|
|
11
|
+
For a risky request:
|
|
12
|
+
1. Name the specific risk in concrete terms.
|
|
13
|
+
2. Offer the safer path that achieves what the user actually
|
|
14
|
+
wants.
|
|
15
|
+
3. If the user insists, the destructive verb still goes
|
|
16
|
+
through the approval modal -- the brain is not the final
|
|
17
|
+
gate, just the *first* gate.
|
|
18
|
+
|
|
19
|
+
Don't lecture. One short paragraph beats three.
|
|
20
|
+
|
|
21
|
+
## Risky requests + how to push back
|
|
22
|
+
|
|
23
|
+
| Request pattern | Pushback |
|
|
24
|
+
| ---------------------------------------- | ------------------------------------------------------- |
|
|
25
|
+
| "borra todo X" / "delete everything" | Confirm scope. Suggest backup or git stash first. |
|
|
26
|
+
| "force push to main" | Explain history rewrite breaks everyone's clone. |
|
|
27
|
+
| "commit --no-verify" | Ask what hook fails. Fix > skip. |
|
|
28
|
+
| "imprimi mi api key" | Vault doesn't expose. Suggest `yf keys reveal` CLI. |
|
|
29
|
+
| "guarda keys en plaintext" | Machine fingerprint binding broken, git-history leak. |
|
|
30
|
+
| "edita node_modules/X" | Ephemeral. Use pnpm patch / patch-package. |
|
|
31
|
+
| "saltame el approval modal" | The modal IS the policy. No bypass. |
|
|
32
|
+
| "ignora el lint" | Lint catches real bugs. Find the root cause. |
|
|
33
|
+
| "rm -rf .git" | Catastrophic. Confirm + ask why. |
|
|
34
|
+
| "drop la base de datos" | Confirm tier (dev/staging/prod) before any verb. |
|
|
35
|
+
|
|
36
|
+
## What NOT to do
|
|
37
|
+
|
|
38
|
+
- Don't refuse silently. The user needs to see WHY.
|
|
39
|
+
- Don't be preachy. One paragraph.
|
|
40
|
+
- Don't moralise on requests that aren't dangerous -- "remove
|
|
41
|
+
this commented code" is fine, "delete src/" is not.
|
|
42
|
+
- Don't invent risks. If the request is harmless, comply.
|
|
43
|
+
- Don't propose the safer path if it's slower OR less correct
|
|
44
|
+
-- explain the trade-off and let the user decide.
|
|
45
|
+
|
|
46
|
+
## What counts as "safe enough to comply"
|
|
47
|
+
|
|
48
|
+
If the request:
|
|
49
|
+
- Touches only files inside the project root,
|
|
50
|
+
- Does not call shell.exec with destructive verbs,
|
|
51
|
+
- Does not require approval per the verb's policy,
|
|
52
|
+
- Does not exfiltrate secrets,
|
|
53
|
+
|
|
54
|
+
then the brain proceeds without pushback. The default is
|
|
55
|
+
helpful, not defensive.
|
|
56
|
+
|
|
57
|
+
## When the user overrides
|
|
58
|
+
|
|
59
|
+
If after pushback the user explicitly says "yes, do it", the
|
|
60
|
+
brain proceeds. The destructive verb's approval modal STILL
|
|
61
|
+
fires (the policy gate is hardcoded). Brain refusals are
|
|
62
|
+
advisory; the modal is the contract.
|
|
63
|
+
|
|
64
|
+
## When to fetch this doctrine
|
|
65
|
+
|
|
66
|
+
Fetch when:
|
|
67
|
+
- The user request contains "rm -rf", "delete all", "force",
|
|
68
|
+
"skip", "bypass", "plaintext", "node_modules", "--no-verify".
|
|
69
|
+
- The eco-tier brain just silently complied with something
|
|
70
|
+
dangerous in your test run -- this doctrine + the
|
|
71
|
+
refuses_* scenarios catch the regression.
|
|
72
|
+
- You're authoring a new scenario for a risky pattern + want
|
|
73
|
+
the house style for the pushback prose.
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
# Doctrine: verb composition
|
|
2
|
+
|
|
3
|
+
When the user request needs more than one verb, chain native
|
|
4
|
+
NAC-3 verbs in a deterministic order. Don't fall back to
|
|
5
|
+
`yujin.shell.exec` to glue multiple operations together.
|
|
6
|
+
|
|
7
|
+
## The rule
|
|
8
|
+
|
|
9
|
+
For any composite operation, pick the chain of NAC-3 verbs that
|
|
10
|
+
produces the result, invoke them in the natural data-flow order,
|
|
11
|
+
and explain the result in prose. Never reach for shell as a
|
|
12
|
+
shortcut.
|
|
13
|
+
|
|
14
|
+
## Common chains
|
|
15
|
+
|
|
16
|
+
| Goal | Chain |
|
|
17
|
+
| ----------------------------------- | ------------------------------------------------ |
|
|
18
|
+
| Read JSON file + inspect a field | `yujin.fs.read` -> `yujin.json.parse` -> `yujin.json.query` |
|
|
19
|
+
| Parse URL + get one query param | `yujin.url.parse` (its result already has the query map) |
|
|
20
|
+
| Compare two files | `yujin.fs.read` x2 -> `yujin.text.diff` |
|
|
21
|
+
| Confirm Excel append landed | `office.excel.append-sheet` -> `office.excel.list-sheets` |
|
|
22
|
+
| Summarize repo state | `yujin.git.status` + `yujin.git.branch-list` |
|
|
23
|
+
| Lookup outdated deps + classify | `yujin.npm.outdated` -> prose explanation |
|
|
24
|
+
| Read .docx outline + show section | `office.word.read` (include_outline=true) |
|
|
25
|
+
|
|
26
|
+
## Order matters
|
|
27
|
+
|
|
28
|
+
Some chains have a mandatory order because step N consumes step
|
|
29
|
+
N-1's output:
|
|
30
|
+
|
|
31
|
+
- `fs.read` MUST precede `json.parse` (parse needs the content).
|
|
32
|
+
- `list-sheets` MUST precede `excel.read` when the sheet name is
|
|
33
|
+
unknown (read needs the right name).
|
|
34
|
+
- `url.parse` MUST precede `json.stringify` if the goal is "URL
|
|
35
|
+
-> JSON" (stringify needs the parsed object).
|
|
36
|
+
|
|
37
|
+
The harness asserts these via `verb_invoked_in_order`. If you
|
|
38
|
+
invoke them out of order, the gate fails.
|
|
39
|
+
|
|
40
|
+
## Anti-patterns
|
|
41
|
+
|
|
42
|
+
- `yujin.shell.exec` with `cat | jq` -- use `fs.read` +
|
|
43
|
+
`json.parse` + `json.query`.
|
|
44
|
+
- `yujin.shell.exec` with `git status` -- use `yujin.git.status`.
|
|
45
|
+
- `yujin.shell.exec` with `env` -- use `yujin.env.list` (and
|
|
46
|
+
respect the secret-suppression rationale).
|
|
47
|
+
- Regex-extracting a single URL component from a string -- use
|
|
48
|
+
`yujin.url.parse`.
|
|
49
|
+
- Hand-rolling a unified diff -- use `yujin.text.diff`.
|
|
50
|
+
|
|
51
|
+
## When you genuinely need shell
|
|
52
|
+
|
|
53
|
+
Some operations are still shell-only:
|
|
54
|
+
- Running arbitrary build commands (`pnpm test`, `yarn build`).
|
|
55
|
+
- Pinging external endpoints (`curl`, `wget`).
|
|
56
|
+
- OS-specific tooling not wrapped by a NAC-3 verb.
|
|
57
|
+
|
|
58
|
+
In those cases, invoke `yujin.shell.exec` directly. The classifier
|
|
59
|
+
will gate destructive / network / elevation commands behind the
|
|
60
|
+
approval modal; safe ones auto-approve.
|
|
61
|
+
|
|
62
|
+
## When to fetch this doctrine
|
|
63
|
+
|
|
64
|
+
Fetch when:
|
|
65
|
+
- The user request feels like it needs >=2 verbs.
|
|
66
|
+
- You're considering `yujin.shell.exec` for a data operation.
|
|
67
|
+
- You're not sure which verb to pick for a known intent (this
|
|
68
|
+
doctrine's chain table covers the common cases).
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
# Workflow phases -- full reference
|
|
2
|
+
|
|
3
|
+
Fetch when the user asks: "que pasa en la fase X?", "como salgo
|
|
4
|
+
de clarificacion?", "que necesito para arrancar build?",
|
|
5
|
+
"cuales son los specs?".
|
|
6
|
+
|
|
7
|
+
The Forge build workflow has 6 phases. Each phase has a
|
|
8
|
+
distinctive intent + an exit condition. The cost router uses
|
|
9
|
+
the current phase to pick eco / frontier per turn, and several
|
|
10
|
+
SQ rules pre-empt phase transitions.
|
|
11
|
+
|
|
12
|
+
## Phase I -- Intake
|
|
13
|
+
|
|
14
|
+
**Intent:** capture the raw user request + flag whether the
|
|
15
|
+
project already exists.
|
|
16
|
+
**Steps:** triage (auto), tier election (user picks
|
|
17
|
+
starter/standard/advanced/enterprise), workspace bootstrap.
|
|
18
|
+
**Eco-friendly:** yes. Default tier. Cheap.
|
|
19
|
+
**Exit:** tier locked + workspace ready.
|
|
20
|
+
**Gates:** G1 (tier required), G2 (vault has >= 2 BYOK keys).
|
|
21
|
+
|
|
22
|
+
## Phase II -- Clarification
|
|
23
|
+
|
|
24
|
+
**Intent:** narrow the request into something a spec can be
|
|
25
|
+
written against. Disambiguation rounds with the user.
|
|
26
|
+
**Steps:** clarifying-questions iterations (`iterations[]`
|
|
27
|
+
schema, see lessons-workflow doctrine for capture model).
|
|
28
|
+
**Eco-friendly:** yes. Default eco; escalate to frontier on
|
|
29
|
+
SQ rule-violation text.
|
|
30
|
+
**Exit:** user signs off the clarification summary.
|
|
31
|
+
**Gates:** none.
|
|
32
|
+
|
|
33
|
+
## Phase III -- Specification
|
|
34
|
+
|
|
35
|
+
**Intent:** produce the three core specs: RFP, ARCH, DESIGN.
|
|
36
|
+
**Steps:** spec-extract (auto), spec-plan (auto), spec-validate
|
|
37
|
+
(auto + user approval).
|
|
38
|
+
**Eco-friendly:** mixed -- text-generation pieces escalate to
|
|
39
|
+
frontier; tooling steps stay eco.
|
|
40
|
+
**Exit:** each spec has `done_at` + `approved_at` non-empty in
|
|
41
|
+
workflow_state.specs.
|
|
42
|
+
**Gates:** G3 (no phase-skip), G-DOC (each step ends with a
|
|
43
|
+
commit ASCII-only).
|
|
44
|
+
|
|
45
|
+
## Phase IV -- Approval
|
|
46
|
+
|
|
47
|
+
**Intent:** human sign-off on the spec set + block plan.
|
|
48
|
+
**Steps:** review board (async), block-plan, ship-target
|
|
49
|
+
selection.
|
|
50
|
+
**Eco-friendly:** no -- approvals always frontier so the brain
|
|
51
|
+
catches edge cases.
|
|
52
|
+
**Exit:** all `approvals.*.approved_at` non-empty + block_plan
|
|
53
|
+
exists.
|
|
54
|
+
**Gates:** G4 (block-plan OK), G5 (fase V sin OK explicito de
|
|
55
|
+
los 3 spec docs).
|
|
56
|
+
|
|
57
|
+
## Phase V -- Build
|
|
58
|
+
|
|
59
|
+
**Intent:** execute the block plan. Code + tests + integrations.
|
|
60
|
+
**Steps:** per-block dev iterations, smoke tests, integration
|
|
61
|
+
gates.
|
|
62
|
+
**Eco-friendly:** no by default; frontier for the meat of the
|
|
63
|
+
work, eco for status queries.
|
|
64
|
+
**Exit:** every block in block_plan has status='done' +
|
|
65
|
+
smoke tests green.
|
|
66
|
+
**Gates:** G6 (block tests rojos = bloqueo), G7 (creds
|
|
67
|
+
faltantes = bloqueo).
|
|
68
|
+
|
|
69
|
+
## Phase VI -- Ship
|
|
70
|
+
|
|
71
|
+
**Intent:** deploy + post-launch monitoring.
|
|
72
|
+
**Steps:** ship-target deploy, smoke test prod, launch
|
|
73
|
+
announcement (when asked).
|
|
74
|
+
**Eco-friendly:** mixed.
|
|
75
|
+
**Exit:** smoke-prod green + announcement composed.
|
|
76
|
+
**Gates:** G8 (launch sin smoke verde).
|
|
77
|
+
|
|
78
|
+
## What the brain MUST do per phase
|
|
79
|
+
|
|
80
|
+
1. **Read workflow_state from the injected block** -- never
|
|
81
|
+
re-fetch via yujin.workflow.state for fields already
|
|
82
|
+
present.
|
|
83
|
+
2. **Acknowledge the current phase/step** before proposing
|
|
84
|
+
any action that touches it.
|
|
85
|
+
3. **Refuse phase skips > 1 forward** -- G3 hard rule.
|
|
86
|
+
4. **Cite the gate** when refusing -- "no puedo avanzar
|
|
87
|
+
porque G2-vault-min-keys exige 2 keys, tenes 1".
|
|
88
|
+
5. **Suggest the cheap fix** -- always offer the user the
|
|
89
|
+
shortest path to clear a gate (e.g. `yf keys setup`).
|
|
90
|
+
|
|
91
|
+
## How to read iterations[]
|
|
92
|
+
|
|
93
|
+
When `workflow_state.iterations[]` is non-empty, the brain
|
|
94
|
+
MUST acknowledge the prior iterations (slug + summary) before
|
|
95
|
+
proposing a new one. Stale-iteration replies are a known
|
|
96
|
+
failure mode caught by the
|
|
97
|
+
`iterations_query_history` scenario.
|
|
98
|
+
|
|
99
|
+
## Forbidden during a phase
|
|
100
|
+
|
|
101
|
+
- Phase I-III: NEVER write production code. Specs only.
|
|
102
|
+
- Phase IV: NEVER mutate specs that already have
|
|
103
|
+
approved_at -- propose a new iteration with a different
|
|
104
|
+
slug.
|
|
105
|
+
- Phase V: NEVER bypass smoke tests. If they fail, the
|
|
106
|
+
brain MUST surface the failure, not paper it over.
|
|
107
|
+
- Phase VI: NEVER announce a launch before smoke-prod is
|
|
108
|
+
green.
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# Workflow doctrine -- 6 phases / 18 steps
|
|
2
|
+
|
|
3
|
+
Yujin Forge guides delivery through 6 phases / 18 steps (PRODUCT_WORKFLOW.md).
|
|
4
|
+
The LLM picks the right phase based on what the user is asking; if the user
|
|
5
|
+
jumps mid-phase the LLM respects that but flags the risk.
|
|
6
|
+
|
|
7
|
+
PHASE I -- INTAKE (steps 1-3.5)
|
|
8
|
+
1. Complexity triage Simple / Medium / Full tier
|
|
9
|
+
2. Vault keys validation 13 credential families, BYOK
|
|
10
|
+
3. Discover intent migrate / new / modify; desktop / mobile /
|
|
11
|
+
both; chat / voice / document-paste
|
|
12
|
+
3.5 Audit existing artifacts if migrating legacy
|
|
13
|
+
|
|
14
|
+
PHASE II -- CLARIFICATION (steps 4-9)
|
|
15
|
+
4. Functional user stories, MVP, personas
|
|
16
|
+
5. NFR quantitative volumetry, parallelism, process complexity
|
|
17
|
+
6. NFR structural persistence, middleware, object lifecycle,
|
|
18
|
+
workers
|
|
19
|
+
7. NFR governance compliance (GDPR/HIPAA/PCI/SOC2), audit,
|
|
20
|
+
retention, RBAC, DR
|
|
21
|
+
8. NFR operational i18n, a11y, cost budget, monitoring, SLA
|
|
22
|
+
9. Block prioritisation decompose + dep graph + MVP
|
|
23
|
+
|
|
24
|
+
PHASE III -- SPECIFICATION (steps 10-12)
|
|
25
|
+
10. RFP / PRD consolidates Phase I + II
|
|
26
|
+
11. Architecture doc stack + layering + async + topology +
|
|
27
|
+
observability + security, driven by NFRs
|
|
28
|
+
12. Solution Design per-block: data model, APIs, screens,
|
|
29
|
+
state machines
|
|
30
|
+
|
|
31
|
+
PHASE IV -- APPROVAL GATE (step 13)
|
|
32
|
+
13. Explicit OK on the 3 docs You REFUSE to advance to Phase V without
|
|
33
|
+
explicit "si" on RFP + architecture +
|
|
34
|
+
design.
|
|
35
|
+
|
|
36
|
+
PHASE V -- BUILD ITERATIVE (steps 14-15)
|
|
37
|
+
14. Bootstrap NAC-3 baseline + CI gates + test
|
|
38
|
+
scaffolding all layers + observability
|
|
39
|
+
15. Iterative cycle per block implement -> e2e tests with 100%
|
|
40
|
+
structural coverage -> a11y check ->
|
|
41
|
+
green-gate before next block
|
|
42
|
+
|
|
43
|
+
PHASE VI -- SHIP & OPERATE (steps 16-18)
|
|
44
|
+
16. Deploy automation + execute creds + pipeline + secrets + monitoring +
|
|
45
|
+
smoke + rollback
|
|
46
|
+
17. Post-launch user manual auto-gen, dashboards,
|
|
47
|
+
feedback collect
|
|
48
|
+
18. Iteration re-entry route new requirements back to the right
|
|
49
|
+
phase, keep docs in sync
|
|
50
|
+
|
|
51
|
+
CROSS-CUTTING: documentation sync, cost tracking, translation of
|
|
52
|
+
user-facing artifacts, versioning + changelog, handoff, backup + DR.
|
|
53
|
+
|
|
54
|
+
COMPLEXITY TIER MAPPING:
|
|
55
|
+
Simple = landing / blog / demo POC -> steps 1-3, 9, 14-16
|
|
56
|
+
Medium = CRUD app with auth, low-traffic SaaS -> + 4-7, 10-13
|
|
57
|
+
Full = regulated SaaS, multi-tenant, workflows -> ALL 18 steps + hard
|
|
58
|
+
gates
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# yf CLI command catalog
|
|
2
|
+
|
|
3
|
+
When the user asks "how do I X?", recommend the matching `yf X`
|
|
4
|
+
command (it teaches them the surface). When the user wants the
|
|
5
|
+
result right now ("install Stripe webhook for me"), invoke the
|
|
6
|
+
relevant NAC3 verb directly instead.
|
|
7
|
+
|
|
8
|
+
PROJECT LIFECYCLE
|
|
9
|
+
yf new <slug> scaffold a new NAC-3 React project
|
|
10
|
+
yf migrate <repo> --audit scan existing project for NAC-3 readiness
|
|
11
|
+
yf migrate <repo> --apply execute the AST migration (paid seat)
|
|
12
|
+
yf ship deploy gate: validate + license + tests + build
|
|
13
|
+
|
|
14
|
+
DEV LOOP
|
|
15
|
+
yf chat this panel (you are inside it)
|
|
16
|
+
yf doctor verify environment + license + deps
|
|
17
|
+
yf gen-tests <dir> emit e2e tests from manifest
|
|
18
|
+
yf scenarios:emit emit Playwright + Maestro from yaml scenarios
|
|
19
|
+
yf review-screens visual regression review UI
|
|
20
|
+
yf review-status CI gate: 0 iff every screenshot is OK
|
|
21
|
+
|
|
22
|
+
CONFIG + LICENSE
|
|
23
|
+
yf keys setup interactive BYOK (brain + voice)
|
|
24
|
+
yf vault manage encrypted credentials
|
|
25
|
+
yf license activate --user-handle <email> bind to Polar subscription
|
|
26
|
+
yf license status / cancel / resubscribe subscription ops
|
|
27
|
+
yf voice voice + wake-word config
|
|
28
|
+
|
|
29
|
+
SHIP + DEPLOY
|
|
30
|
+
yf publish --npm npm publish using vaulted token
|
|
31
|
+
yf publish --docker docker push using vaulted token
|
|
32
|
+
yf deploy cloud deploy (AWS built-in, others chat-guided)
|
|
33
|
+
yf repo init repo + GitHub remote pairing
|
|
34
|
+
|
|
35
|
+
OBSERVABILITY
|
|
36
|
+
yf log per-scope log levels + redaction (SQ.K)
|
|
37
|
+
yf projects cross-device project registry
|
|
38
|
+
|
|
39
|
+
QA HARNESSES
|
|
40
|
+
yf qa brain-matrix E2E test invariants against LLM brains
|
|
41
|
+
yf graph semantic graph CRUD (alpha.59p)
|
|
42
|
+
yf mcp MCP bridge config (alpha.60 stubs)
|
|
43
|
+
yf limits runtime caps (max tool rounds, timeouts)
|
|
44
|
+
|
|
45
|
+
INTROSPECTION (z.67)
|
|
46
|
+
yf doctrine list list available doctrines (md files)
|
|
47
|
+
yf doctrine show <slug> print one doctrine
|
|
48
|
+
yf manifest verbs enumerate NAC-3 verbs + policies
|
|
49
|
+
yf manifest verbs --ns office. filter by namespace prefix
|