@nac3/forge-cli 0.2.0-alpha.5 → 0.2.0-alpha.59z.118
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +16 -1
- package/dist/a11y/helpers.d.ts +88 -0
- package/dist/a11y/helpers.d.ts.map +1 -0
- package/dist/a11y/helpers.js +109 -0
- package/dist/a11y/helpers.js.map +1 -0
- package/dist/agents/config_resolver.d.ts +16 -0
- package/dist/agents/config_resolver.d.ts.map +1 -0
- package/dist/agents/config_resolver.js +133 -0
- package/dist/agents/config_resolver.js.map +1 -0
- package/dist/agents/config_schema.d.ts +42 -0
- package/dist/agents/config_schema.d.ts.map +1 -0
- package/dist/agents/config_schema.js +204 -0
- package/dist/agents/config_schema.js.map +1 -0
- package/dist/agents/defaults.d.ts +21 -0
- package/dist/agents/defaults.d.ts.map +1 -0
- package/dist/agents/defaults.js +56 -0
- package/dist/agents/defaults.js.map +1 -0
- package/dist/agents/runner.d.ts +94 -0
- package/dist/agents/runner.d.ts.map +1 -0
- package/dist/agents/runner.js +165 -0
- package/dist/agents/runner.js.map +1 -0
- package/dist/agents/store.d.ts +33 -0
- package/dist/agents/store.d.ts.map +1 -0
- package/dist/agents/store.js +210 -0
- package/dist/agents/store.js.map +1 -0
- package/dist/agents/types.d.ts +112 -0
- package/dist/agents/types.d.ts.map +1 -0
- package/dist/agents/types.js +39 -0
- package/dist/agents/types.js.map +1 -0
- package/dist/bin/yf.d.ts.map +1 -1
- package/dist/bin/yf.js +86 -2
- package/dist/bin/yf.js.map +1 -1
- package/dist/chat/claude.d.ts +53 -15
- package/dist/chat/claude.d.ts.map +1 -1
- package/dist/chat/claude.js +152 -27
- package/dist/chat/claude.js.map +1 -1
- package/dist/chat/graph_auto_ingest.d.ts +46 -0
- package/dist/chat/graph_auto_ingest.d.ts.map +1 -0
- package/dist/chat/graph_auto_ingest.js +162 -0
- package/dist/chat/graph_auto_ingest.js.map +1 -0
- package/dist/chat/graph_component_watcher.d.ts +30 -0
- package/dist/chat/graph_component_watcher.d.ts.map +1 -0
- package/dist/chat/graph_component_watcher.js +220 -0
- package/dist/chat/graph_component_watcher.js.map +1 -0
- package/dist/chat/panel.d.ts.map +1 -1
- package/dist/chat/panel.js +5815 -1455
- package/dist/chat/panel.js.map +1 -1
- package/dist/chat/project_slug.d.ts +6 -0
- package/dist/chat/project_slug.d.ts.map +1 -0
- package/dist/chat/project_slug.js +78 -0
- package/dist/chat/project_slug.js.map +1 -0
- package/dist/chat/semantic_graph_ingest.d.ts +31 -0
- package/dist/chat/semantic_graph_ingest.d.ts.map +1 -0
- package/dist/chat/semantic_graph_ingest.js +84 -0
- package/dist/chat/semantic_graph_ingest.js.map +1 -0
- package/dist/chat/semantic_graph_inject.d.ts +25 -0
- package/dist/chat/semantic_graph_inject.d.ts.map +1 -0
- package/dist/chat/semantic_graph_inject.js +64 -0
- package/dist/chat/semantic_graph_inject.js.map +1 -0
- package/dist/chat/server.d.ts +50 -0
- package/dist/chat/server.d.ts.map +1 -1
- package/dist/chat/server.js +1905 -54
- package/dist/chat/server.js.map +1 -1
- package/dist/chat/spec_extract.d.ts +1 -2
- package/dist/chat/spec_extract.d.ts.map +1 -1
- package/dist/chat/spec_extract.js +18 -59
- package/dist/chat/spec_extract.js.map +1 -1
- package/dist/chat/spec_plan.d.ts +1 -2
- package/dist/chat/spec_plan.d.ts.map +1 -1
- package/dist/chat/spec_plan.js +15 -60
- package/dist/chat/spec_plan.js.map +1 -1
- package/dist/chat/tools/app_backend_dispatch.d.ts +39 -0
- package/dist/chat/tools/app_backend_dispatch.d.ts.map +1 -0
- package/dist/chat/tools/app_backend_dispatch.js +239 -0
- package/dist/chat/tools/app_backend_dispatch.js.map +1 -0
- package/dist/chat/tools/audit_consumers.d.ts +66 -0
- package/dist/chat/tools/audit_consumers.d.ts.map +1 -0
- package/dist/chat/tools/audit_consumers.js +231 -0
- package/dist/chat/tools/audit_consumers.js.map +1 -0
- package/dist/chat/tools/fs_editor.d.ts +11 -0
- package/dist/chat/tools/fs_editor.d.ts.map +1 -0
- package/dist/chat/tools/fs_editor.js +162 -0
- package/dist/chat/tools/fs_editor.js.map +1 -0
- package/dist/chat/tools/git.d.ts +24 -0
- package/dist/chat/tools/git.d.ts.map +1 -1
- package/dist/chat/tools/git.js +78 -0
- package/dist/chat/tools/git.js.map +1 -1
- package/dist/chat/tools/keys.d.ts +9 -0
- package/dist/chat/tools/keys.d.ts.map +1 -0
- package/dist/chat/tools/keys.js +152 -0
- package/dist/chat/tools/keys.js.map +1 -0
- package/dist/chat/tools/misc_verbs.d.ts +36 -0
- package/dist/chat/tools/misc_verbs.d.ts.map +1 -0
- package/dist/chat/tools/misc_verbs.js +405 -0
- package/dist/chat/tools/misc_verbs.js.map +1 -0
- package/dist/chat/tools/nac3_invoke.d.ts +53 -0
- package/dist/chat/tools/nac3_invoke.d.ts.map +1 -0
- package/dist/chat/tools/nac3_invoke.js +886 -0
- package/dist/chat/tools/nac3_invoke.js.map +1 -0
- package/dist/chat/tools/pizarron.d.ts +40 -0
- package/dist/chat/tools/pizarron.d.ts.map +1 -0
- package/dist/chat/tools/pizarron.js +123 -0
- package/dist/chat/tools/pizarron.js.map +1 -0
- package/dist/chat/tools/project_lifecycle.d.ts +24 -0
- package/dist/chat/tools/project_lifecycle.d.ts.map +1 -0
- package/dist/chat/tools/project_lifecycle.js +184 -0
- package/dist/chat/tools/project_lifecycle.js.map +1 -0
- package/dist/chat/tools/reader.d.ts.map +1 -1
- package/dist/chat/tools/reader.js +144 -1
- package/dist/chat/tools/reader.js.map +1 -1
- package/dist/chat/tools/shell.d.ts +58 -0
- package/dist/chat/tools/shell.d.ts.map +1 -0
- package/dist/chat/tools/shell.js +253 -0
- package/dist/chat/tools/shell.js.map +1 -0
- package/dist/chat/tools/workflow.d.ts +45 -0
- package/dist/chat/tools/workflow.d.ts.map +1 -0
- package/dist/chat/tools/workflow.js +404 -0
- package/dist/chat/tools/workflow.js.map +1 -0
- package/dist/chat/tools.d.ts +27 -0
- package/dist/chat/tools.d.ts.map +1 -1
- package/dist/chat/tools.js +362 -13
- package/dist/chat/tools.js.map +1 -1
- package/dist/chat/workflow_inject.d.ts +52 -0
- package/dist/chat/workflow_inject.d.ts.map +1 -0
- package/dist/chat/workflow_inject.js +346 -0
- package/dist/chat/workflow_inject.js.map +1 -0
- package/dist/commands/agent.d.ts +22 -0
- package/dist/commands/agent.d.ts.map +1 -0
- package/dist/commands/agent.js +190 -0
- package/dist/commands/agent.js.map +1 -0
- package/dist/commands/approve.d.ts +32 -0
- package/dist/commands/approve.d.ts.map +1 -0
- package/dist/commands/approve.js +198 -0
- package/dist/commands/approve.js.map +1 -0
- package/dist/commands/block.d.ts +28 -0
- package/dist/commands/block.d.ts.map +1 -0
- package/dist/commands/block.js +189 -0
- package/dist/commands/block.js.map +1 -0
- package/dist/commands/bootstrap.d.ts +35 -0
- package/dist/commands/bootstrap.d.ts.map +1 -0
- package/dist/commands/bootstrap.js +205 -0
- package/dist/commands/bootstrap.js.map +1 -0
- package/dist/commands/brain.d.ts +17 -0
- package/dist/commands/brain.d.ts.map +1 -0
- package/dist/commands/brain.js +129 -0
- package/dist/commands/brain.js.map +1 -0
- package/dist/commands/chat.d.ts +3 -0
- package/dist/commands/chat.d.ts.map +1 -1
- package/dist/commands/chat.js +112 -1
- package/dist/commands/chat.js.map +1 -1
- package/dist/commands/clarify.d.ts +30 -0
- package/dist/commands/clarify.d.ts.map +1 -0
- package/dist/commands/clarify.js +671 -0
- package/dist/commands/clarify.js.map +1 -0
- package/dist/commands/discover.d.ts +30 -0
- package/dist/commands/discover.d.ts.map +1 -0
- package/dist/commands/discover.js +178 -0
- package/dist/commands/discover.js.map +1 -0
- package/dist/commands/doctor.js +26 -4
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/doctrine.d.ts +24 -0
- package/dist/commands/doctrine.d.ts.map +1 -0
- package/dist/commands/doctrine.js +106 -0
- package/dist/commands/doctrine.js.map +1 -0
- package/dist/commands/doctrines.d.ts +21 -0
- package/dist/commands/doctrines.d.ts.map +1 -0
- package/dist/commands/doctrines.js +158 -0
- package/dist/commands/doctrines.js.map +1 -0
- package/dist/commands/graph.d.ts +21 -0
- package/dist/commands/graph.d.ts.map +1 -0
- package/dist/commands/graph.js +363 -0
- package/dist/commands/graph.js.map +1 -0
- package/dist/commands/keys_setup.d.ts.map +1 -1
- package/dist/commands/keys_setup.js +80 -0
- package/dist/commands/keys_setup.js.map +1 -1
- package/dist/commands/legacy-audit.d.ts +34 -0
- package/dist/commands/legacy-audit.d.ts.map +1 -0
- package/dist/commands/legacy-audit.js +270 -0
- package/dist/commands/legacy-audit.js.map +1 -0
- package/dist/commands/lessons.d.ts +28 -0
- package/dist/commands/lessons.d.ts.map +1 -0
- package/dist/commands/lessons.js +309 -0
- package/dist/commands/lessons.js.map +1 -0
- package/dist/commands/license.d.ts.map +1 -1
- package/dist/commands/license.js +56 -1
- package/dist/commands/license.js.map +1 -1
- package/dist/commands/limits.d.ts +15 -0
- package/dist/commands/limits.d.ts.map +1 -0
- package/dist/commands/limits.js +51 -0
- package/dist/commands/limits.js.map +1 -0
- package/dist/commands/manifest-cli.d.ts +12 -0
- package/dist/commands/manifest-cli.d.ts.map +1 -0
- package/dist/commands/manifest-cli.js +42 -0
- package/dist/commands/manifest-cli.js.map +1 -0
- package/dist/commands/mcp.d.ts +24 -0
- package/dist/commands/mcp.d.ts.map +1 -0
- package/dist/commands/mcp.js +163 -0
- package/dist/commands/mcp.js.map +1 -0
- package/dist/commands/nac3.d.ts +22 -0
- package/dist/commands/nac3.d.ts.map +1 -0
- package/dist/commands/nac3.js +125 -0
- package/dist/commands/nac3.js.map +1 -0
- package/dist/commands/operate.d.ts +22 -0
- package/dist/commands/operate.d.ts.map +1 -0
- package/dist/commands/operate.js +523 -0
- package/dist/commands/operate.js.map +1 -0
- package/dist/commands/qa.d.ts +24 -0
- package/dist/commands/qa.d.ts.map +1 -0
- package/dist/commands/qa.js +349 -0
- package/dist/commands/qa.js.map +1 -0
- package/dist/commands/spec.d.ts +38 -0
- package/dist/commands/spec.d.ts.map +1 -0
- package/dist/commands/spec.js +256 -0
- package/dist/commands/spec.js.map +1 -0
- package/dist/commands/support.d.ts +22 -0
- package/dist/commands/support.d.ts.map +1 -0
- package/dist/commands/support.js +165 -0
- package/dist/commands/support.js.map +1 -0
- package/dist/commands/triage.d.ts +34 -0
- package/dist/commands/triage.d.ts.map +1 -0
- package/dist/commands/triage.js +228 -0
- package/dist/commands/triage.js.map +1 -0
- package/dist/commands/vault-inventory.d.ts +30 -0
- package/dist/commands/vault-inventory.d.ts.map +1 -0
- package/dist/commands/vault-inventory.js +222 -0
- package/dist/commands/vault-inventory.js.map +1 -0
- package/dist/commands/vault.d.ts.map +1 -1
- package/dist/commands/vault.js +5 -0
- package/dist/commands/vault.js.map +1 -1
- package/dist/commands/voice.d.ts.map +1 -1
- package/dist/commands/voice.js +47 -4
- package/dist/commands/voice.js.map +1 -1
- package/dist/commands/workflow-coverage.d.ts +30 -0
- package/dist/commands/workflow-coverage.d.ts.map +1 -0
- package/dist/commands/workflow-coverage.js +138 -0
- package/dist/commands/workflow-coverage.js.map +1 -0
- package/dist/core/ansi_strip.d.ts +39 -0
- package/dist/core/ansi_strip.d.ts.map +1 -0
- package/dist/core/ansi_strip.js +71 -0
- package/dist/core/ansi_strip.js.map +1 -0
- package/dist/core/audit_log.d.ts +43 -0
- package/dist/core/audit_log.d.ts.map +1 -0
- package/dist/core/audit_log.js +80 -0
- package/dist/core/audit_log.js.map +1 -0
- package/dist/core/brain_config.d.ts +33 -0
- package/dist/core/brain_config.d.ts.map +1 -0
- package/dist/core/brain_config.js +132 -0
- package/dist/core/brain_config.js.map +1 -0
- package/dist/core/budget.d.ts +96 -0
- package/dist/core/budget.d.ts.map +1 -0
- package/dist/core/budget.js +300 -0
- package/dist/core/budget.js.map +1 -0
- package/dist/core/cost_meter.d.ts +35 -0
- package/dist/core/cost_meter.d.ts.map +1 -0
- package/dist/core/cost_meter.js +111 -0
- package/dist/core/cost_meter.js.map +1 -0
- package/dist/core/cost_router.d.ts +106 -0
- package/dist/core/cost_router.d.ts.map +1 -0
- package/dist/core/cost_router.js +465 -0
- package/dist/core/cost_router.js.map +1 -0
- package/dist/core/doctrine_resolver.d.ts +23 -0
- package/dist/core/doctrine_resolver.d.ts.map +1 -0
- package/dist/core/doctrine_resolver.js +108 -0
- package/dist/core/doctrine_resolver.js.map +1 -0
- package/dist/core/error_catalog.d.ts +80 -0
- package/dist/core/error_catalog.d.ts.map +1 -0
- package/dist/core/error_catalog.js +168 -0
- package/dist/core/error_catalog.js.map +1 -0
- package/dist/core/error_formatter.d.ts +30 -0
- package/dist/core/error_formatter.d.ts.map +1 -0
- package/dist/core/error_formatter.js +155 -0
- package/dist/core/error_formatter.js.map +1 -0
- package/dist/core/incomplete_detector.d.ts +51 -0
- package/dist/core/incomplete_detector.d.ts.map +1 -0
- package/dist/core/incomplete_detector.js +140 -0
- package/dist/core/incomplete_detector.js.map +1 -0
- package/dist/core/learnings_client.d.ts +104 -0
- package/dist/core/learnings_client.d.ts.map +1 -0
- package/dist/core/learnings_client.js +262 -0
- package/dist/core/learnings_client.js.map +1 -0
- package/dist/core/limits_config.d.ts +76 -0
- package/dist/core/limits_config.d.ts.map +1 -0
- package/dist/core/limits_config.js +297 -0
- package/dist/core/limits_config.js.map +1 -0
- package/dist/core/provider_keys.d.ts +35 -0
- package/dist/core/provider_keys.d.ts.map +1 -0
- package/dist/core/provider_keys.js +260 -0
- package/dist/core/provider_keys.js.map +1 -0
- package/dist/core/reasoning_gate.d.ts +72 -0
- package/dist/core/reasoning_gate.d.ts.map +1 -0
- package/dist/core/reasoning_gate.js +192 -0
- package/dist/core/reasoning_gate.js.map +1 -0
- package/dist/core/shell_classifier.d.ts +49 -0
- package/dist/core/shell_classifier.d.ts.map +1 -0
- package/dist/core/shell_classifier.js +159 -0
- package/dist/core/shell_classifier.js.map +1 -0
- package/dist/core/sq_resolver.d.ts +14 -0
- package/dist/core/sq_resolver.d.ts.map +1 -0
- package/dist/core/sq_resolver.js +230 -0
- package/dist/core/sq_resolver.js.map +1 -0
- package/dist/core/truncation_detector.d.ts +68 -0
- package/dist/core/truncation_detector.d.ts.map +1 -0
- package/dist/core/truncation_detector.js +115 -0
- package/dist/core/truncation_detector.js.map +1 -0
- package/dist/core/turn_classifier.d.ts +62 -0
- package/dist/core/turn_classifier.d.ts.map +1 -0
- package/dist/core/turn_classifier.js +213 -0
- package/dist/core/turn_classifier.js.map +1 -0
- package/dist/core/whats_new.d.ts +42 -0
- package/dist/core/whats_new.d.ts.map +1 -0
- package/dist/core/whats_new.js +214 -0
- package/dist/core/whats_new.js.map +1 -0
- package/dist/deploy/adapter.d.ts +93 -0
- package/dist/deploy/adapter.d.ts.map +1 -0
- package/dist/deploy/adapter.js +42 -0
- package/dist/deploy/adapter.js.map +1 -0
- package/dist/deploy/aws_adapter.d.ts +28 -0
- package/dist/deploy/aws_adapter.d.ts.map +1 -0
- package/dist/deploy/aws_adapter.js +98 -0
- package/dist/deploy/aws_adapter.js.map +1 -0
- package/dist/deploy/cloudflare.d.ts +24 -0
- package/dist/deploy/cloudflare.d.ts.map +1 -0
- package/dist/deploy/cloudflare.js +169 -0
- package/dist/deploy/cloudflare.js.map +1 -0
- package/dist/docs/LIMITED_RESPONSIBILITY.md +216 -0
- package/dist/docs/PRIVACY_POLICY.md +169 -0
- package/dist/docs/SQ.md +1397 -0
- package/dist/docs/SQ_BY_STEP.yaml +147 -0
- package/dist/docs/doctrine/accessibility.md +78 -0
- package/dist/docs/doctrine/agent-orchestrator.md +76 -0
- package/dist/docs/doctrine/byok-vs-managed.md +81 -0
- package/dist/docs/doctrine/cost-router-escalation.md +73 -0
- package/dist/docs/doctrine/explain-results.md +90 -0
- package/dist/docs/doctrine/g-doc.md +46 -0
- package/dist/docs/doctrine/gates.md +21 -0
- package/dist/docs/doctrine/lessons-workflow.md +68 -0
- package/dist/docs/doctrine/mcp-bridge-lifecycle.md +75 -0
- package/dist/docs/doctrine/nac3-attrs.md +23 -0
- package/dist/docs/doctrine/office-tools.md +102 -0
- package/dist/docs/doctrine/pizarron.md +52 -0
- package/dist/docs/doctrine/r8-modal.md +60 -0
- package/dist/docs/doctrine/safety-refusals.md +73 -0
- package/dist/docs/doctrine/verb-composition.md +68 -0
- package/dist/docs/doctrine/workflow-phases.md +108 -0
- package/dist/docs/doctrine/workflow.md +58 -0
- package/dist/docs/doctrine/yf-commands.md +49 -0
- package/dist/json/query.d.ts +38 -0
- package/dist/json/query.d.ts.map +1 -0
- package/dist/json/query.js +177 -0
- package/dist/json/query.js.map +1 -0
- package/dist/license/hito4_client.d.ts +19 -0
- package/dist/license/hito4_client.d.ts.map +1 -1
- package/dist/license/hito4_client.js +110 -0
- package/dist/license/hito4_client.js.map +1 -1
- package/dist/license/index.d.ts.map +1 -1
- package/dist/license/index.js +7 -0
- package/dist/license/index.js.map +1 -1
- package/dist/license/sync.d.ts +54 -0
- package/dist/license/sync.d.ts.map +1 -0
- package/dist/license/sync.js +138 -0
- package/dist/license/sync.js.map +1 -0
- package/dist/llm/cohere_client.d.ts +81 -0
- package/dist/llm/cohere_client.d.ts.map +1 -0
- package/dist/llm/cohere_client.js +195 -0
- package/dist/llm/cohere_client.js.map +1 -0
- package/dist/llm/deepseek_client.d.ts +63 -0
- package/dist/llm/deepseek_client.d.ts.map +1 -0
- package/dist/llm/deepseek_client.js +188 -0
- package/dist/llm/deepseek_client.js.map +1 -0
- package/dist/llm/gemini_client.d.ts +78 -0
- package/dist/llm/gemini_client.d.ts.map +1 -0
- package/dist/llm/gemini_client.js +189 -0
- package/dist/llm/gemini_client.js.map +1 -0
- package/dist/llm/managed_client.d.ts +70 -0
- package/dist/llm/managed_client.d.ts.map +1 -0
- package/dist/llm/managed_client.js +251 -0
- package/dist/llm/managed_client.js.map +1 -0
- package/dist/llm/mistral_client.d.ts +54 -0
- package/dist/llm/mistral_client.d.ts.map +1 -0
- package/dist/llm/mistral_client.js +174 -0
- package/dist/llm/mistral_client.js.map +1 -0
- package/dist/llm/multi_provider_client.d.ts +57 -0
- package/dist/llm/multi_provider_client.d.ts.map +1 -0
- package/dist/llm/multi_provider_client.js +109 -0
- package/dist/llm/multi_provider_client.js.map +1 -0
- package/dist/llm/openai_client.d.ts +77 -0
- package/dist/llm/openai_client.d.ts.map +1 -0
- package/dist/llm/openai_client.js +200 -0
- package/dist/llm/openai_client.js.map +1 -0
- package/dist/llm/xai_client.d.ts +51 -0
- package/dist/llm/xai_client.d.ts.map +1 -0
- package/dist/llm/xai_client.js +174 -0
- package/dist/llm/xai_client.js.map +1 -0
- package/dist/mcp/bridge_registry.d.ts +77 -0
- package/dist/mcp/bridge_registry.d.ts.map +1 -0
- package/dist/mcp/bridge_registry.js +220 -0
- package/dist/mcp/bridge_registry.js.map +1 -0
- package/dist/mcp/config.d.ts +25 -0
- package/dist/mcp/config.d.ts.map +1 -0
- package/dist/mcp/config.js +116 -0
- package/dist/mcp/config.js.map +1 -0
- package/dist/mcp/protocol_client.d.ts +63 -0
- package/dist/mcp/protocol_client.d.ts.map +1 -0
- package/dist/mcp/protocol_client.js +340 -0
- package/dist/mcp/protocol_client.js.map +1 -0
- package/dist/mcp/state.d.ts +38 -0
- package/dist/mcp/state.d.ts.map +1 -0
- package/dist/mcp/state.js +144 -0
- package/dist/mcp/state.js.map +1 -0
- package/dist/migrate/ai-decorator.d.ts.map +1 -1
- package/dist/migrate/ai-decorator.js +33 -145
- package/dist/migrate/ai-decorator.js.map +1 -1
- package/dist/nac3/approval_queue.d.ts +36 -0
- package/dist/nac3/approval_queue.d.ts.map +1 -0
- package/dist/nac3/approval_queue.js +105 -0
- package/dist/nac3/approval_queue.js.map +1 -0
- package/dist/nac3/backend_tools.d.ts +89 -0
- package/dist/nac3/backend_tools.d.ts.map +1 -0
- package/dist/nac3/backend_tools.js +271 -0
- package/dist/nac3/backend_tools.js.map +1 -0
- package/dist/nac3/dispatch_log.d.ts +35 -0
- package/dist/nac3/dispatch_log.d.ts.map +1 -0
- package/dist/nac3/dispatch_log.js +126 -0
- package/dist/nac3/dispatch_log.js.map +1 -0
- package/dist/nac3/internal_manifest.d.ts +62 -0
- package/dist/nac3/internal_manifest.d.ts.map +1 -0
- package/dist/nac3/internal_manifest.js +1846 -0
- package/dist/nac3/internal_manifest.js.map +1 -0
- package/dist/nac3/manifest_lazy.d.ts +71 -0
- package/dist/nac3/manifest_lazy.d.ts.map +1 -0
- package/dist/nac3/manifest_lazy.js +141 -0
- package/dist/nac3/manifest_lazy.js.map +1 -0
- package/dist/nac3/verb_tier_map.d.ts +80 -0
- package/dist/nac3/verb_tier_map.d.ts.map +1 -0
- package/dist/nac3/verb_tier_map.js +159 -0
- package/dist/nac3/verb_tier_map.js.map +1 -0
- package/dist/office/excel.d.ts +110 -0
- package/dist/office/excel.d.ts.map +1 -0
- package/dist/office/excel.js +276 -0
- package/dist/office/excel.js.map +1 -0
- package/dist/office/pdf.d.ts +35 -0
- package/dist/office/pdf.d.ts.map +1 -0
- package/dist/office/pdf.js +70 -0
- package/dist/office/pdf.js.map +1 -0
- package/dist/office/word.d.ts +64 -0
- package/dist/office/word.d.ts.map +1 -0
- package/dist/office/word.js +243 -0
- package/dist/office/word.js.map +1 -0
- package/dist/qa/brain_matrix/ab_runner.d.ts +44 -0
- package/dist/qa/brain_matrix/ab_runner.d.ts.map +1 -0
- package/dist/qa/brain_matrix/ab_runner.js +144 -0
- package/dist/qa/brain_matrix/ab_runner.js.map +1 -0
- package/dist/qa/brain_matrix/brains.json +80 -0
- package/dist/qa/brain_matrix/compare.d.ts +27 -0
- package/dist/qa/brain_matrix/compare.d.ts.map +1 -0
- package/dist/qa/brain_matrix/compare.js +122 -0
- package/dist/qa/brain_matrix/compare.js.map +1 -0
- package/dist/qa/brain_matrix/fake_brain.d.ts +36 -0
- package/dist/qa/brain_matrix/fake_brain.d.ts.map +1 -0
- package/dist/qa/brain_matrix/fake_brain.js +27 -0
- package/dist/qa/brain_matrix/fake_brain.js.map +1 -0
- package/dist/qa/brain_matrix/fixtures/scenario_a11y_announce_intent.json +22 -0
- package/dist/qa/brain_matrix/fixtures/scenario_a11y_announce_no_speak_default.json +23 -0
- package/dist/qa/brain_matrix/fixtures/scenario_a11y_consecutive_announces.json +37 -0
- package/dist/qa/brain_matrix/fixtures/scenario_a11y_focus_after_action.json +22 -0
- package/dist/qa/brain_matrix/fixtures/scenario_a11y_label_with_shortcut.json +22 -0
- package/dist/qa/brain_matrix/fixtures/scenario_announce_min_tool_calls.json +23 -0
- package/dist/qa/brain_matrix/fixtures/scenario_app_invoke_happy_path.json +65 -0
- package/dist/qa/brain_matrix/fixtures/scenario_app_no_invent_without_backend.json +18 -0
- package/dist/qa/brain_matrix/fixtures/scenario_app_schema_fail_recover.json +48 -0
- package/dist/qa/brain_matrix/fixtures/scenario_approval_modal_no_redundancy.json +21 -0
- package/dist/qa/brain_matrix/fixtures/scenario_args_redacted_in_audit.json +17 -0
- package/dist/qa/brain_matrix/fixtures/scenario_audit_consumers_intent.json +19 -0
- package/dist/qa/brain_matrix/fixtures/scenario_audit_consumers_intent_en.json +19 -0
- package/dist/qa/brain_matrix/fixtures/scenario_audit_log_on_destructive.json +18 -0
- package/dist/qa/brain_matrix/fixtures/scenario_brain_explains_after_invoke.json +28 -0
- package/dist/qa/brain_matrix/fixtures/scenario_byok_on_managed_brain_overflow.json +28 -0
- package/dist/qa/brain_matrix/fixtures/scenario_byok_required_policy.json +35 -0
- package/dist/qa/brain_matrix/fixtures/scenario_concise_no_loop.json +23 -0
- package/dist/qa/brain_matrix/fixtures/scenario_consult_nac_spec_intent.json +19 -0
- package/dist/qa/brain_matrix/fixtures/scenario_contradiction_rfp_cost.json +38 -0
- package/dist/qa/brain_matrix/fixtures/scenario_cost_router_attachment_frontier.json +24 -0
- package/dist/qa/brain_matrix/fixtures/scenario_cost_router_escalation_explicit.json +23 -0
- package/dist/qa/brain_matrix/fixtures/scenario_cost_router_idle_reset.json +24 -0
- package/dist/qa/brain_matrix/fixtures/scenario_csv_via_excel_read.json +22 -0
- package/dist/qa/brain_matrix/fixtures/scenario_destructive_no_text_confirm.json +20 -0
- package/dist/qa/brain_matrix/fixtures/scenario_diff_explains_changes.json +32 -0
- package/dist/qa/brain_matrix/fixtures/scenario_doctrine_after_unknown_intent.json +17 -0
- package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_a11y.json +24 -0
- package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_agent_orchestrator.json +24 -0
- package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_byok_vs_managed.json +24 -0
- package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_cost_router.json +24 -0
- package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_g_doc.json +24 -0
- package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_gates.json +23 -0
- package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_intent_en.json +19 -0
- package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_lessons_workflow.json +24 -0
- package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_mcp_lifecycle.json +24 -0
- package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_nac3_attrs.json +24 -0
- package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_office.json +24 -0
- package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_pizarron.json +23 -0
- package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_r8_modal.json +23 -0
- package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_workflow.json +23 -0
- package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_workflow_phases.json +24 -0
- package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_yf_commands.json +24 -0
- package/dist/qa/brain_matrix/fixtures/scenario_doctrine_explain_results.json +22 -0
- package/dist/qa/brain_matrix/fixtures/scenario_doctrine_safety_refusals.json +22 -0
- package/dist/qa/brain_matrix/fixtures/scenario_doctrine_verb_composition.json +22 -0
- package/dist/qa/brain_matrix/fixtures/scenario_eco_defers_complex.json +17 -0
- package/dist/qa/brain_matrix/fixtures/scenario_eco_short_query.json +27 -0
- package/dist/qa/brain_matrix/fixtures/scenario_env_list_intent.json +20 -0
- package/dist/qa/brain_matrix/fixtures/scenario_env_list_intent_en.json +20 -0
- package/dist/qa/brain_matrix/fixtures/scenario_env_no_secret_leak.json +21 -0
- package/dist/qa/brain_matrix/fixtures/scenario_env_secret_suppression.json +35 -0
- package/dist/qa/brain_matrix/fixtures/scenario_env_secret_suppression_en.json +21 -0
- package/dist/qa/brain_matrix/fixtures/scenario_excel_append_handles_csv_refusal.json +28 -0
- package/dist/qa/brain_matrix/fixtures/scenario_excel_append_sheet_intent.json +20 -0
- package/dist/qa/brain_matrix/fixtures/scenario_excel_append_sheet_intent_en.json +20 -0
- package/dist/qa/brain_matrix/fixtures/scenario_excel_append_then_list.json +34 -0
- package/dist/qa/brain_matrix/fixtures/scenario_excel_list_sheets_first.json +22 -0
- package/dist/qa/brain_matrix/fixtures/scenario_excel_sheet_named.json +23 -0
- package/dist/qa/brain_matrix/fixtures/scenario_explain_voice_yes.json +22 -0
- package/dist/qa/brain_matrix/fixtures/scenario_explains_forge_error.json +39 -0
- package/dist/qa/brain_matrix/fixtures/scenario_focus_after_modal_open.json +29 -0
- package/dist/qa/brain_matrix/fixtures/scenario_fs_find_intent.json +21 -0
- package/dist/qa/brain_matrix/fixtures/scenario_fs_find_intent_en.json +20 -0
- package/dist/qa/brain_matrix/fixtures/scenario_fs_find_with_glob.json +22 -0
- package/dist/qa/brain_matrix/fixtures/scenario_fs_mkdir_intent.json +20 -0
- package/dist/qa/brain_matrix/fixtures/scenario_fs_move_intent.json +20 -0
- package/dist/qa/brain_matrix/fixtures/scenario_fs_read_handles_missing.json +28 -0
- package/dist/qa/brain_matrix/fixtures/scenario_fs_stat_before_read.json +22 -0
- package/dist/qa/brain_matrix/fixtures/scenario_generated_app_nac3_default.json +24 -0
- package/dist/qa/brain_matrix/fixtures/scenario_git_branch_list_intent.json +20 -0
- package/dist/qa/brain_matrix/fixtures/scenario_git_diff_intent.json +20 -0
- package/dist/qa/brain_matrix/fixtures/scenario_git_log_intent.json +20 -0
- package/dist/qa/brain_matrix/fixtures/scenario_git_log_intent_en.json +20 -0
- package/dist/qa/brain_matrix/fixtures/scenario_git_pull_intent.json +19 -0
- package/dist/qa/brain_matrix/fixtures/scenario_git_push_intent.json +20 -0
- package/dist/qa/brain_matrix/fixtures/scenario_git_show_metadata_only.json +22 -0
- package/dist/qa/brain_matrix/fixtures/scenario_git_status_branch_combo.json +44 -0
- package/dist/qa/brain_matrix/fixtures/scenario_git_status_intent.json +20 -0
- package/dist/qa/brain_matrix/fixtures/scenario_git_status_intent_en.json +20 -0
- package/dist/qa/brain_matrix/fixtures/scenario_github_clone_repo_intent.json +20 -0
- package/dist/qa/brain_matrix/fixtures/scenario_github_create_repo_intent.json +20 -0
- package/dist/qa/brain_matrix/fixtures/scenario_id_format_in_reply.json +27 -0
- package/dist/qa/brain_matrix/fixtures/scenario_iterations_idempotent_adenda.json +27 -0
- package/dist/qa/brain_matrix/fixtures/scenario_iterations_query_history.json +29 -0
- package/dist/qa/brain_matrix/fixtures/scenario_iterations_tracker_acknowledge.json +28 -0
- package/dist/qa/brain_matrix/fixtures/scenario_json_parse_handles_malformed.json +34 -0
- package/dist/qa/brain_matrix/fixtures/scenario_json_parse_intent.json +30 -0
- package/dist/qa/brain_matrix/fixtures/scenario_json_parse_intent_en.json +30 -0
- package/dist/qa/brain_matrix/fixtures/scenario_json_query_extract.json +23 -0
- package/dist/qa/brain_matrix/fixtures/scenario_json_stringify_intent.json +20 -0
- package/dist/qa/brain_matrix/fixtures/scenario_json_stringify_intent_en.json +20 -0
- package/dist/qa/brain_matrix/fixtures/scenario_keys_set_intent.json +20 -0
- package/dist/qa/brain_matrix/fixtures/scenario_keys_status_intent.json +20 -0
- package/dist/qa/brain_matrix/fixtures/scenario_keys_status_intent_en.json +20 -0
- package/dist/qa/brain_matrix/fixtures/scenario_lazy_complex_verb.json +27 -0
- package/dist/qa/brain_matrix/fixtures/scenario_lazy_doctrine_only_when_needed.json +17 -0
- package/dist/qa/brain_matrix/fixtures/scenario_lazy_simple_verb.json +21 -0
- package/dist/qa/brain_matrix/fixtures/scenario_lesson_recall_overrides.json +22 -0
- package/dist/qa/brain_matrix/fixtures/scenario_lifecycle_restart_app_intent.json +19 -0
- package/dist/qa/brain_matrix/fixtures/scenario_lifecycle_run_app_intent.json +19 -0
- package/dist/qa/brain_matrix/fixtures/scenario_lifecycle_run_app_intent_en.json +19 -0
- package/dist/qa/brain_matrix/fixtures/scenario_lifecycle_stop_app_intent.json +20 -0
- package/dist/qa/brain_matrix/fixtures/scenario_lifecycle_stop_app_intent_en.json +20 -0
- package/dist/qa/brain_matrix/fixtures/scenario_long_doctrine_no_truncate.json +23 -0
- package/dist/qa/brain_matrix/fixtures/scenario_manifest_read_intent.json +19 -0
- package/dist/qa/brain_matrix/fixtures/scenario_manual_open_intent.json +19 -0
- package/dist/qa/brain_matrix/fixtures/scenario_mcp_bridge_unreachable_graceful.json +39 -0
- package/dist/qa/brain_matrix/fixtures/scenario_mcp_disabled_bridge_no_verbs.json +18 -0
- package/dist/qa/brain_matrix/fixtures/scenario_mcp_discover_tools_intent.json +19 -0
- package/dist/qa/brain_matrix/fixtures/scenario_mcp_invariant_1_no_verbs.json +19 -0
- package/dist/qa/brain_matrix/fixtures/scenario_mcp_invoke_two_hop.json +68 -0
- package/dist/qa/brain_matrix/fixtures/scenario_mcp_invoke_with_auth_loaded.json +76 -0
- package/dist/qa/brain_matrix/fixtures/scenario_mcp_revoked_token_graceful.json +33 -0
- package/dist/qa/brain_matrix/fixtures/scenario_mcp_set_creds_intent.json +21 -0
- package/dist/qa/brain_matrix/fixtures/scenario_mcp_set_creds_no_token_arg.json +27 -0
- package/dist/qa/brain_matrix/fixtures/scenario_mcp_show_tools_before_invoke.json +44 -0
- package/dist/qa/brain_matrix/fixtures/scenario_mcp_toggle_intent.json +20 -0
- package/dist/qa/brain_matrix/fixtures/scenario_multi_turn_clarify_then_act.json +24 -0
- package/dist/qa/brain_matrix/fixtures/scenario_nac3_attrs_doctrine.json +53 -0
- package/dist/qa/brain_matrix/fixtures/scenario_nac3_discover_schemas_intent.json +19 -0
- package/dist/qa/brain_matrix/fixtures/scenario_nac3_required_attr_missing.json +19 -0
- package/dist/qa/brain_matrix/fixtures/scenario_no_bare_ok_after_destructive.json +27 -0
- package/dist/qa/brain_matrix/fixtures/scenario_no_global_learnings_no_recall.json +20 -0
- package/dist/qa/brain_matrix/fixtures/scenario_no_id_leak_in_reply.json +24 -0
- package/dist/qa/brain_matrix/fixtures/scenario_no_invent_verb.json +18 -0
- package/dist/qa/brain_matrix/fixtures/scenario_no_loop_after_repeated_fail.json +42 -0
- package/dist/qa/brain_matrix/fixtures/scenario_no_password_echo.json +28 -0
- package/dist/qa/brain_matrix/fixtures/scenario_npm_outdated_all_current.json +28 -0
- package/dist/qa/brain_matrix/fixtures/scenario_npm_outdated_intent.json +20 -0
- package/dist/qa/brain_matrix/fixtures/scenario_npm_outdated_intent_en.json +20 -0
- package/dist/qa/brain_matrix/fixtures/scenario_npm_outdated_then_explain.json +35 -0
- package/dist/qa/brain_matrix/fixtures/scenario_office_excel_read_intent.json +24 -0
- package/dist/qa/brain_matrix/fixtures/scenario_office_excel_write_required_args.json +23 -0
- package/dist/qa/brain_matrix/fixtures/scenario_office_overwrite_explicit.json +23 -0
- package/dist/qa/brain_matrix/fixtures/scenario_office_word_write_intent.json +27 -0
- package/dist/qa/brain_matrix/fixtures/scenario_panel_open_settings_intent.json +19 -0
- package/dist/qa/brain_matrix/fixtures/scenario_panel_send_message_intent.json +19 -0
- package/dist/qa/brain_matrix/fixtures/scenario_pdf_read_intent.json +22 -0
- package/dist/qa/brain_matrix/fixtures/scenario_pizarron_clear_tab_explicit_close.json +17 -0
- package/dist/qa/brain_matrix/fixtures/scenario_pizarron_for_chart.json +30 -0
- package/dist/qa/brain_matrix/fixtures/scenario_pizarron_for_long_table.json +28 -0
- package/dist/qa/brain_matrix/fixtures/scenario_pizarron_read_tab_intent.json +20 -0
- package/dist/qa/brain_matrix/fixtures/scenario_pizarron_render_not_inline.json +20 -0
- package/dist/qa/brain_matrix/fixtures/scenario_prefer_native_read_file.json +28 -0
- package/dist/qa/brain_matrix/fixtures/scenario_prefer_native_verb_over_shell.json +22 -0
- package/dist/qa/brain_matrix/fixtures/scenario_prefer_native_workflow_state.json +28 -0
- package/dist/qa/brain_matrix/fixtures/scenario_project_init_intent.json +20 -0
- package/dist/qa/brain_matrix/fixtures/scenario_project_set_root_intent.json +20 -0
- package/dist/qa/brain_matrix/fixtures/scenario_promote_lesson_after_correction.json +17 -0
- package/dist/qa/brain_matrix/fixtures/scenario_r8_destructive_shell_exec.json +21 -0
- package/dist/qa/brain_matrix/fixtures/scenario_read_then_parse_order.json +36 -0
- package/dist/qa/brain_matrix/fixtures/scenario_reader_bookmark_jump_intent.json +19 -0
- package/dist/qa/brain_matrix/fixtures/scenario_reader_bookmark_set_intent.json +19 -0
- package/dist/qa/brain_matrix/fixtures/scenario_reader_for_long_doc.json +21 -0
- package/dist/qa/brain_matrix/fixtures/scenario_reader_list_docs_intent.json +19 -0
- package/dist/qa/brain_matrix/fixtures/scenario_reader_next_block_intent.json +19 -0
- package/dist/qa/brain_matrix/fixtures/scenario_reader_read_section_intent.json +19 -0
- package/dist/qa/brain_matrix/fixtures/scenario_reader_recap_intent.json +19 -0
- package/dist/qa/brain_matrix/fixtures/scenario_reader_search_intent.json +20 -0
- package/dist/qa/brain_matrix/fixtures/scenario_reader_search_intent_en.json +20 -0
- package/dist/qa/brain_matrix/fixtures/scenario_refuses_blanket_chmod_777.json +17 -0
- package/dist/qa/brain_matrix/fixtures/scenario_refuses_bypass_approval_modal.json +18 -0
- package/dist/qa/brain_matrix/fixtures/scenario_refuses_delete_critical_en.json +18 -0
- package/dist/qa/brain_matrix/fixtures/scenario_refuses_disable_vault_encryption.json +18 -0
- package/dist/qa/brain_matrix/fixtures/scenario_refuses_drop_database.json +17 -0
- package/dist/qa/brain_matrix/fixtures/scenario_refuses_force_push_main.json +17 -0
- package/dist/qa/brain_matrix/fixtures/scenario_refuses_force_push_main_en.json +17 -0
- package/dist/qa/brain_matrix/fixtures/scenario_refuses_leak_vault_en.json +18 -0
- package/dist/qa/brain_matrix/fixtures/scenario_refuses_modify_node_modules.json +17 -0
- package/dist/qa/brain_matrix/fixtures/scenario_refuses_skip_hooks.json +17 -0
- package/dist/qa/brain_matrix/fixtures/scenario_refuses_skip_hooks_en.json +17 -0
- package/dist/qa/brain_matrix/fixtures/scenario_refuses_to_delete_critical.json +18 -0
- package/dist/qa/brain_matrix/fixtures/scenario_refuses_to_leak_vault.json +18 -0
- package/dist/qa/brain_matrix/fixtures/scenario_respects_global_learnings.json +28 -0
- package/dist/qa/brain_matrix/fixtures/scenario_respects_workflow_gate_g2.json +39 -0
- package/dist/qa/brain_matrix/fixtures/scenario_revoke_lesson_request.json +21 -0
- package/dist/qa/brain_matrix/fixtures/scenario_sq_rules_active.json +30 -0
- package/dist/qa/brain_matrix/fixtures/scenario_text_diff_intent.json +20 -0
- package/dist/qa/brain_matrix/fixtures/scenario_text_diff_intent_en.json +20 -0
- package/dist/qa/brain_matrix/fixtures/scenario_truncated_response_retry.json +22 -0
- package/dist/qa/brain_matrix/fixtures/scenario_unknown_command_clarify.json +23 -0
- package/dist/qa/brain_matrix/fixtures/scenario_url_parse_compose.json +23 -0
- package/dist/qa/brain_matrix/fixtures/scenario_url_parse_handles_invalid.json +27 -0
- package/dist/qa/brain_matrix/fixtures/scenario_url_parse_intent.json +20 -0
- package/dist/qa/brain_matrix/fixtures/scenario_url_parse_intent_en.json +20 -0
- package/dist/qa/brain_matrix/fixtures/scenario_url_parse_then_inspect_query.json +28 -0
- package/dist/qa/brain_matrix/fixtures/scenario_url_then_stringify_order.json +34 -0
- package/dist/qa/brain_matrix/fixtures/scenario_user_just_greets.json +17 -0
- package/dist/qa/brain_matrix/fixtures/scenario_user_overrides_proceeds.json +24 -0
- package/dist/qa/brain_matrix/fixtures/scenario_user_revokes_in_middle.json +22 -0
- package/dist/qa/brain_matrix/fixtures/scenario_voice_open_pizarron.json +21 -0
- package/dist/qa/brain_matrix/fixtures/scenario_word_outline_extraction.json +22 -0
- package/dist/qa/brain_matrix/fixtures/scenario_word_overwrite_explicit.json +20 -0
- package/dist/qa/brain_matrix/fixtures/scenario_word_section_count.json +28 -0
- package/dist/qa/brain_matrix/fixtures/scenario_workflow_doctrine.json +53 -0
- package/dist/qa/brain_matrix/fixtures/scenario_workflow_done_specs.json +32 -0
- package/dist/qa/brain_matrix/fixtures/scenario_workflow_intent_capture.json +22 -0
- package/dist/qa/brain_matrix/fixtures/scenario_workflow_phase_jump_block.json +26 -0
- package/dist/qa/brain_matrix/fixtures/scenario_workflow_phase_v_step_15.json +41 -0
- package/dist/qa/brain_matrix/fixtures/scenario_workflow_run_step_intent.json +19 -0
- package/dist/qa/brain_matrix/fixtures/scenario_workflow_set_intent.json +20 -0
- package/dist/qa/brain_matrix/fixtures/scenario_workflow_state_injection.json +32 -0
- package/dist/qa/brain_matrix/fixtures/scenario_workflow_state_recovers_after_clarify.json +25 -0
- package/dist/qa/brain_matrix/fixtures/scenario_workflow_step_1_intake.json +24 -0
- package/dist/qa/brain_matrix/fixtures/scenario_yf_command_doctrine.json +56 -0
- package/dist/qa/brain_matrix/fixtures/scenario_yf_doctrine_list_intent.json +19 -0
- package/dist/qa/brain_matrix/fixtures/scenario_yf_qa_compare_intent.json +17 -0
- package/dist/qa/brain_matrix/invariants.d.ts +18 -0
- package/dist/qa/brain_matrix/invariants.d.ts.map +1 -0
- package/dist/qa/brain_matrix/invariants.js +333 -0
- package/dist/qa/brain_matrix/invariants.js.map +1 -0
- package/dist/qa/brain_matrix/report.d.ts +12 -0
- package/dist/qa/brain_matrix/report.d.ts.map +1 -0
- package/dist/qa/brain_matrix/report.js +131 -0
- package/dist/qa/brain_matrix/report.js.map +1 -0
- package/dist/qa/brain_matrix/runner.d.ts +31 -0
- package/dist/qa/brain_matrix/runner.d.ts.map +1 -0
- package/dist/qa/brain_matrix/runner.js +561 -0
- package/dist/qa/brain_matrix/runner.js.map +1 -0
- package/dist/qa/brain_matrix/types.d.ts +180 -0
- package/dist/qa/brain_matrix/types.d.ts.map +1 -0
- package/dist/qa/brain_matrix/types.js +2 -0
- package/dist/qa/brain_matrix/types.js.map +1 -0
- package/dist/qa/brain_matrix/validate_scenario.d.ts +23 -0
- package/dist/qa/brain_matrix/validate_scenario.d.ts.map +1 -0
- package/dist/qa/brain_matrix/validate_scenario.js +128 -0
- package/dist/qa/brain_matrix/validate_scenario.js.map +1 -0
- package/dist/support/github_dispatcher.d.ts +36 -0
- package/dist/support/github_dispatcher.d.ts.map +1 -0
- package/dist/support/github_dispatcher.js +292 -0
- package/dist/support/github_dispatcher.js.map +1 -0
- package/dist/support/reports.d.ts +31 -0
- package/dist/support/reports.d.ts.map +1 -0
- package/dist/support/reports.js +162 -0
- package/dist/support/reports.js.map +1 -0
- package/dist/telemetry/usage.d.ts +67 -0
- package/dist/telemetry/usage.d.ts.map +1 -0
- package/dist/telemetry/usage.js +208 -0
- package/dist/telemetry/usage.js.map +1 -0
- package/dist/version.d.ts +1 -1
- package/dist/version.d.ts.map +1 -1
- package/dist/version.js +1 -1
- package/dist/version.js.map +1 -1
- package/dist/voice/config.d.ts +12 -0
- package/dist/voice/config.d.ts.map +1 -1
- package/dist/voice/config.js +25 -2
- package/dist/voice/config.js.map +1 -1
- package/dist/voice/providers/google.d.ts +9 -0
- package/dist/voice/providers/google.d.ts.map +1 -1
- package/dist/voice/providers/google.js +197 -28
- package/dist/voice/providers/google.js.map +1 -1
- package/dist/voice/router.d.ts +10 -0
- package/dist/voice/router.d.ts.map +1 -1
- package/dist/voice/router.js +39 -20
- package/dist/voice/router.js.map +1 -1
- package/dist/voice/types.d.ts +5 -2
- package/dist/voice/types.d.ts.map +1 -1
- package/dist/voice/types.js.map +1 -1
- package/dist/workflow/phase_inference.d.ts +56 -0
- package/dist/workflow/phase_inference.d.ts.map +1 -0
- package/dist/workflow/phase_inference.js +107 -0
- package/dist/workflow/phase_inference.js.map +1 -0
- package/dist/workflow/state.d.ts +238 -0
- package/dist/workflow/state.d.ts.map +1 -0
- package/dist/workflow/state.js +213 -0
- package/dist/workflow/state.js.map +1 -0
- package/docs/SQ.md +1397 -0
- package/docs/SQ_BY_STEP.yaml +147 -0
- package/docs/doctrine/accessibility.md +78 -0
- package/docs/doctrine/agent-orchestrator.md +76 -0
- package/docs/doctrine/byok-vs-managed.md +81 -0
- package/docs/doctrine/cost-router-escalation.md +73 -0
- package/docs/doctrine/explain-results.md +90 -0
- package/docs/doctrine/g-doc.md +46 -0
- package/docs/doctrine/gates.md +21 -0
- package/docs/doctrine/lessons-workflow.md +68 -0
- package/docs/doctrine/mcp-bridge-lifecycle.md +75 -0
- package/docs/doctrine/nac3-attrs.md +23 -0
- package/docs/doctrine/office-tools.md +102 -0
- package/docs/doctrine/pizarron.md +52 -0
- package/docs/doctrine/r8-modal.md +60 -0
- package/docs/doctrine/safety-refusals.md +73 -0
- package/docs/doctrine/verb-composition.md +68 -0
- package/docs/doctrine/workflow-phases.md +108 -0
- package/docs/doctrine/workflow.md +58 -0
- package/docs/doctrine/yf-commands.md +49 -0
- package/package.json +20 -14
- package/src/i18n/catalogs/ar.json +55 -10
- package/src/i18n/catalogs/de.json +55 -10
- package/src/i18n/catalogs/en.json +66 -1
- package/src/i18n/catalogs/es.json +66 -1
- package/src/i18n/catalogs/fr.json +55 -10
- package/src/i18n/catalogs/hi.json +55 -10
- package/src/i18n/catalogs/it.json +55 -10
- package/src/i18n/catalogs/ja.json +55 -10
- package/src/i18n/catalogs/pt.json +55 -10
- package/src/i18n/catalogs/zh.json +55 -10
- package/templates/nextjs-app/README.md +48 -0
- package/templates/nextjs-app/next.config.js +8 -0
- package/templates/nextjs-app/package.json +33 -0
- package/templates/nextjs-app/src/app/globals.css +43 -0
- package/templates/nextjs-app/src/app/layout.tsx +29 -0
- package/templates/nextjs-app/src/app/page.tsx +63 -0
- package/templates/nextjs-app/src/nac/manifest.ts +36 -0
- package/templates/nextjs-app/tsconfig.json +21 -0
- package/templates/nextjs-app/yujin.forge.json +11 -0
package/README.md
CHANGED
|
@@ -7,7 +7,22 @@ loop: read design specs by voice, generate code scaffolds from
|
|
|
7
7
|
those specs, decorate vanilla HTML into NAC-3, drive existing apps
|
|
8
8
|
via voice + chat.
|
|
9
9
|
|
|
10
|
-
> Status: **v0.2.0-alpha (
|
|
10
|
+
> Status: **v0.2.0-alpha.59z.92** (2026-06-04). **100% manifest
|
|
11
|
+
> verb coverage**: every one of the 72 declared NAC-3 verbs has
|
|
12
|
+
> at least one fake-scripted scenario asserting it gets invoked
|
|
13
|
+
> (or refuses to) in the right intent. Brain matrix QA harness
|
|
14
|
+
> at 168 scenarios (+68 since z.61); 22 new verbs in the arc
|
|
15
|
+
> (8 misc + git.status/branch-list + office.excel.append-sheet
|
|
16
|
+
> + 12 others); 8 helper CLIs under `yf qa` (run, scenarios
|
|
17
|
+
> list/show/validate/stats, verbs coverage/sample,
|
|
18
|
+
> brain-matrix-compare); 5 ops docs (SECURITY, CONTRIBUTING,
|
|
19
|
+
> TESTING_GUIDE, DEPLOYMENT, CI_PIPELINE); 2 new doctrines
|
|
20
|
+
> (verb-composition, explain-results); 2 new invariant kinds
|
|
21
|
+
> (min_text_length, verb_invoked_in_order) + structural
|
|
22
|
+
> fixture validator + lefthook pre-commit gate. F101 MCP
|
|
23
|
+
> bridge backend complete (slice 3 panel UI pending); F106
|
|
24
|
+
> office.* + F107 a11y.* verbs shipped; HITO 5 agent
|
|
25
|
+
> orchestrator design draft awaiting Pablo clarification.
|
|
11
26
|
>
|
|
12
27
|
> **HITO 0 -- credentials vault.** AES-256-GCM at-rest encryption
|
|
13
28
|
> with machine fingerprint binding, atomic writes (0o600), one-shot
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* F107 accessibility helpers -- screen-reader + voice-first hooks
|
|
3
|
+
* for adopter apps generated by Forge.
|
|
4
|
+
*
|
|
5
|
+
* These are pure helpers (no DOM dependency at this layer) that the
|
|
6
|
+
* panel + mobile adapters consume. They translate semantic intents
|
|
7
|
+
* ("announce this", "focus that element", "describe this element")
|
|
8
|
+
* into payloads the rendering layer can route to:
|
|
9
|
+
* - ARIA live regions for screen readers
|
|
10
|
+
* - Voice TTS for the Forge voice loop
|
|
11
|
+
* - Mobile screen-reader bridges (VoiceOver / TalkBack)
|
|
12
|
+
*
|
|
13
|
+
* The verbs operate on NAC-3 element slugs (declared via
|
|
14
|
+
* data-nac-* attrs in the adopter app) so the brain never has to
|
|
15
|
+
* know about raw DOM identifiers.
|
|
16
|
+
*
|
|
17
|
+
* ASCII-only.
|
|
18
|
+
*/
|
|
19
|
+
export type Politeness = 'polite' | 'assertive';
|
|
20
|
+
export interface AnnounceRequest {
|
|
21
|
+
/** Text to announce. */
|
|
22
|
+
text: string;
|
|
23
|
+
/** ARIA live-region politeness. Default 'polite'. */
|
|
24
|
+
politeness?: Politeness;
|
|
25
|
+
/** When set, also speak via TTS (voice loop). Default false. */
|
|
26
|
+
speak?: boolean;
|
|
27
|
+
/** Locale hint (BCP47). Default inherits the user's voice config. */
|
|
28
|
+
locale?: string;
|
|
29
|
+
}
|
|
30
|
+
export interface AnnouncePayload {
|
|
31
|
+
type: 'aria-live';
|
|
32
|
+
text: string;
|
|
33
|
+
politeness: Politeness;
|
|
34
|
+
/** Set when the runtime should also speak the text. */
|
|
35
|
+
speak: boolean;
|
|
36
|
+
locale: string | null;
|
|
37
|
+
}
|
|
38
|
+
export interface FocusRequest {
|
|
39
|
+
/** NAC-3 element slug (the value of data-nac-slug). */
|
|
40
|
+
slug: string;
|
|
41
|
+
/** When set, scrolls the element into view. Default true. */
|
|
42
|
+
scroll?: boolean;
|
|
43
|
+
/** Announce the focus change via screen reader. Default true. */
|
|
44
|
+
announce?: boolean;
|
|
45
|
+
}
|
|
46
|
+
export interface FocusPayload {
|
|
47
|
+
type: 'focus';
|
|
48
|
+
slug: string;
|
|
49
|
+
scroll: boolean;
|
|
50
|
+
announce: boolean;
|
|
51
|
+
}
|
|
52
|
+
export interface LabelRequest {
|
|
53
|
+
/** NAC-3 element slug. */
|
|
54
|
+
slug: string;
|
|
55
|
+
/** Human-readable description (will become aria-label /
|
|
56
|
+
* aria-describedby depending on field). */
|
|
57
|
+
description: string;
|
|
58
|
+
/** Optional shortcut hint (e.g. 'Ctrl+S'). */
|
|
59
|
+
shortcut?: string;
|
|
60
|
+
/** Optional role hint (e.g. 'button', 'textbox'). */
|
|
61
|
+
role?: string;
|
|
62
|
+
}
|
|
63
|
+
export interface LabelPayload {
|
|
64
|
+
type: 'label';
|
|
65
|
+
slug: string;
|
|
66
|
+
/** Sanitised description -- max 500 chars, single line. */
|
|
67
|
+
description: string;
|
|
68
|
+
shortcut: string | null;
|
|
69
|
+
role: string | null;
|
|
70
|
+
}
|
|
71
|
+
export declare function buildAnnouncePayload(req: AnnounceRequest): AnnouncePayload | {
|
|
72
|
+
ok: false;
|
|
73
|
+
error: string;
|
|
74
|
+
};
|
|
75
|
+
export declare function buildFocusPayload(req: FocusRequest): FocusPayload | {
|
|
76
|
+
ok: false;
|
|
77
|
+
error: string;
|
|
78
|
+
};
|
|
79
|
+
export declare function buildLabelPayload(req: LabelRequest): LabelPayload | {
|
|
80
|
+
ok: false;
|
|
81
|
+
error: string;
|
|
82
|
+
};
|
|
83
|
+
/** NAC-3 data-nac-* attr -> ARIA attribute mapping. Used by the
|
|
84
|
+
* panel renderer + mobile adapter to project the semantic layer
|
|
85
|
+
* onto the native a11y tree. */
|
|
86
|
+
export declare const NAC3_TO_ARIA: Record<string, string>;
|
|
87
|
+
export declare function mapNac3ToAria(attrs: Record<string, string>): Record<string, string>;
|
|
88
|
+
//# sourceMappingURL=helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/a11y/helpers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,WAAW,CAAC;AAEhD,MAAM,WAAW,eAAe;IAC9B,wBAAwB;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,qDAAqD;IACrD,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,gEAAgE;IAChE,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,qEAAqE;IACrE,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,WAAW,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,UAAU,CAAC;IACvB,uDAAuD;IACvD,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAED,MAAM,WAAW,YAAY;IAC3B,uDAAuD;IACvD,IAAI,EAAE,MAAM,CAAC;IACb,6DAA6D;IAC7D,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,iEAAiE;IACjE,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,0BAA0B;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb;gDAC4C;IAC5C,WAAW,EAAE,MAAM,CAAC;IACpB,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,qDAAqD;IACrD,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,2DAA2D;IAC3D,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CACrB;AAOD,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,eAAe,GAAG,eAAe,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAiBzG;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,YAAY,GAAG,YAAY,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAchG;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,YAAY,GAAG,YAAY,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAmBhG;AAED;;iCAEiC;AACjC,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAU/C,CAAC;AAEF,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAOnF"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* F107 accessibility helpers -- screen-reader + voice-first hooks
|
|
3
|
+
* for adopter apps generated by Forge.
|
|
4
|
+
*
|
|
5
|
+
* These are pure helpers (no DOM dependency at this layer) that the
|
|
6
|
+
* panel + mobile adapters consume. They translate semantic intents
|
|
7
|
+
* ("announce this", "focus that element", "describe this element")
|
|
8
|
+
* into payloads the rendering layer can route to:
|
|
9
|
+
* - ARIA live regions for screen readers
|
|
10
|
+
* - Voice TTS for the Forge voice loop
|
|
11
|
+
* - Mobile screen-reader bridges (VoiceOver / TalkBack)
|
|
12
|
+
*
|
|
13
|
+
* The verbs operate on NAC-3 element slugs (declared via
|
|
14
|
+
* data-nac-* attrs in the adopter app) so the brain never has to
|
|
15
|
+
* know about raw DOM identifiers.
|
|
16
|
+
*
|
|
17
|
+
* ASCII-only.
|
|
18
|
+
*/
|
|
19
|
+
const MAX_TEXT = 1000;
|
|
20
|
+
const MAX_DESCRIPTION = 500;
|
|
21
|
+
const MAX_SLUG = 120;
|
|
22
|
+
const SLUG_RE = /^[a-z0-9][a-z0-9._-]*$/i;
|
|
23
|
+
export function buildAnnouncePayload(req) {
|
|
24
|
+
if (typeof req.text !== 'string') {
|
|
25
|
+
return { ok: false, error: 'text must be a string' };
|
|
26
|
+
}
|
|
27
|
+
const t = req.text.trim();
|
|
28
|
+
if (!t)
|
|
29
|
+
return { ok: false, error: 'text is empty' };
|
|
30
|
+
if (t.length > MAX_TEXT) {
|
|
31
|
+
return { ok: false, error: 'text exceeds ' + MAX_TEXT + ' chars' };
|
|
32
|
+
}
|
|
33
|
+
const politeness = req.politeness === 'assertive' ? 'assertive' : 'polite';
|
|
34
|
+
return {
|
|
35
|
+
type: 'aria-live',
|
|
36
|
+
text: t,
|
|
37
|
+
politeness,
|
|
38
|
+
speak: req.speak === true,
|
|
39
|
+
locale: typeof req.locale === 'string' && req.locale ? req.locale : null,
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
export function buildFocusPayload(req) {
|
|
43
|
+
if (typeof req.slug !== 'string') {
|
|
44
|
+
return { ok: false, error: 'slug must be a string' };
|
|
45
|
+
}
|
|
46
|
+
const s = req.slug.trim();
|
|
47
|
+
if (!s)
|
|
48
|
+
return { ok: false, error: 'slug is empty' };
|
|
49
|
+
if (s.length > MAX_SLUG)
|
|
50
|
+
return { ok: false, error: 'slug too long' };
|
|
51
|
+
if (!SLUG_RE.test(s))
|
|
52
|
+
return { ok: false, error: 'slug must match [a-z0-9._-]' };
|
|
53
|
+
return {
|
|
54
|
+
type: 'focus',
|
|
55
|
+
slug: s,
|
|
56
|
+
scroll: req.scroll !== false,
|
|
57
|
+
announce: req.announce !== false,
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
export function buildLabelPayload(req) {
|
|
61
|
+
if (typeof req.slug !== 'string')
|
|
62
|
+
return { ok: false, error: 'slug must be a string' };
|
|
63
|
+
const s = req.slug.trim();
|
|
64
|
+
if (!s)
|
|
65
|
+
return { ok: false, error: 'slug is empty' };
|
|
66
|
+
if (s.length > MAX_SLUG)
|
|
67
|
+
return { ok: false, error: 'slug too long' };
|
|
68
|
+
if (!SLUG_RE.test(s))
|
|
69
|
+
return { ok: false, error: 'slug must match [a-z0-9._-]' };
|
|
70
|
+
if (typeof req.description !== 'string')
|
|
71
|
+
return { ok: false, error: 'description must be a string' };
|
|
72
|
+
const d = req.description.replace(/\s+/g, ' ').trim();
|
|
73
|
+
if (!d)
|
|
74
|
+
return { ok: false, error: 'description is empty' };
|
|
75
|
+
if (d.length > MAX_DESCRIPTION) {
|
|
76
|
+
return { ok: false, error: 'description exceeds ' + MAX_DESCRIPTION + ' chars' };
|
|
77
|
+
}
|
|
78
|
+
return {
|
|
79
|
+
type: 'label',
|
|
80
|
+
slug: s,
|
|
81
|
+
description: d,
|
|
82
|
+
shortcut: typeof req.shortcut === 'string' && req.shortcut ? req.shortcut : null,
|
|
83
|
+
role: typeof req.role === 'string' && req.role ? req.role : null,
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
/** NAC-3 data-nac-* attr -> ARIA attribute mapping. Used by the
|
|
87
|
+
* panel renderer + mobile adapter to project the semantic layer
|
|
88
|
+
* onto the native a11y tree. */
|
|
89
|
+
export const NAC3_TO_ARIA = {
|
|
90
|
+
'data-nac-slug': 'data-yujin-slug',
|
|
91
|
+
'data-nac-role': 'role',
|
|
92
|
+
'data-nac-label': 'aria-label',
|
|
93
|
+
'data-nac-desc': 'aria-describedby',
|
|
94
|
+
'data-nac-busy': 'aria-busy',
|
|
95
|
+
'data-nac-pressed': 'aria-pressed',
|
|
96
|
+
'data-nac-checked': 'aria-checked',
|
|
97
|
+
'data-nac-hidden': 'aria-hidden',
|
|
98
|
+
'data-nac-live': 'aria-live',
|
|
99
|
+
};
|
|
100
|
+
export function mapNac3ToAria(attrs) {
|
|
101
|
+
const out = {};
|
|
102
|
+
for (const [k, v] of Object.entries(attrs)) {
|
|
103
|
+
const target = NAC3_TO_ARIA[k];
|
|
104
|
+
if (target)
|
|
105
|
+
out[target] = v;
|
|
106
|
+
}
|
|
107
|
+
return out;
|
|
108
|
+
}
|
|
109
|
+
//# sourceMappingURL=helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/a11y/helpers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AA6DH,MAAM,QAAQ,GAAY,IAAI,CAAC;AAC/B,MAAM,eAAe,GAAK,GAAG,CAAC;AAC9B,MAAM,QAAQ,GAAY,GAAG,CAAC;AAC9B,MAAM,OAAO,GAAa,yBAAyB,CAAC;AAEpD,MAAM,UAAU,oBAAoB,CAAC,GAAoB;IACvD,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QACjC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,uBAAuB,EAAE,CAAC;IACvD,CAAC;IACD,MAAM,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IAC1B,IAAI,CAAC,CAAC;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC;IACrD,IAAI,CAAC,CAAC,MAAM,GAAG,QAAQ,EAAE,CAAC;QACxB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,eAAe,GAAG,QAAQ,GAAG,QAAQ,EAAE,CAAC;IACrE,CAAC;IACD,MAAM,UAAU,GAAe,GAAG,CAAC,UAAU,KAAK,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC;IACvF,OAAO;QACL,IAAI,EAAE,WAAW;QACjB,IAAI,EAAE,CAAC;QACP,UAAU;QACV,KAAK,EAAE,GAAG,CAAC,KAAK,KAAK,IAAI;QACzB,MAAM,EAAE,OAAO,GAAG,CAAC,MAAM,KAAK,QAAQ,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI;KACzE,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,GAAiB;IACjD,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QACjC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,uBAAuB,EAAE,CAAC;IACvD,CAAC;IACD,MAAM,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IAC1B,IAAI,CAAC,CAAC;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC;IACrD,IAAI,CAAC,CAAC,MAAM,GAAG,QAAQ;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC;IACtE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,6BAA6B,EAAE,CAAC;IACjF,OAAO;QACL,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,CAAC;QACP,MAAM,EAAI,GAAG,CAAC,MAAM,KAAO,KAAK;QAChC,QAAQ,EAAE,GAAG,CAAC,QAAQ,KAAK,KAAK;KACjC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,GAAiB;IACjD,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,uBAAuB,EAAE,CAAC;IACvF,MAAM,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IAC1B,IAAI,CAAC,CAAC;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC;IACrD,IAAI,CAAC,CAAC,MAAM,GAAG,QAAQ;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC;IACtE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,6BAA6B,EAAE,CAAC;IACjF,IAAI,OAAO,GAAG,CAAC,WAAW,KAAK,QAAQ;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,8BAA8B,EAAE,CAAC;IACrG,MAAM,CAAC,GAAG,GAAG,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IACtD,IAAI,CAAC,CAAC;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,sBAAsB,EAAE,CAAC;IAC5D,IAAI,CAAC,CAAC,MAAM,GAAG,eAAe,EAAE,CAAC;QAC/B,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,sBAAsB,GAAG,eAAe,GAAG,QAAQ,EAAE,CAAC;IACnF,CAAC;IACD,OAAO;QACL,IAAI,EAAS,OAAO;QACpB,IAAI,EAAS,CAAC;QACd,WAAW,EAAE,CAAC;QACd,QAAQ,EAAK,OAAO,GAAG,CAAC,QAAQ,KAAK,QAAQ,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI;QACnF,IAAI,EAAS,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI;KACxE,CAAC;AACJ,CAAC;AAED;;iCAEiC;AACjC,MAAM,CAAC,MAAM,YAAY,GAA2B;IAClD,eAAe,EAAK,iBAAiB;IACrC,eAAe,EAAK,MAAM;IAC1B,gBAAgB,EAAI,YAAY;IAChC,eAAe,EAAK,kBAAkB;IACtC,eAAe,EAAK,WAAW;IAC/B,kBAAkB,EAAE,cAAc;IAClC,kBAAkB,EAAE,cAAc;IAClC,iBAAiB,EAAG,aAAa;IACjC,eAAe,EAAK,WAAW;CAChC,CAAC;AAEF,MAAM,UAAU,aAAa,CAAC,KAA6B;IACzD,MAAM,GAAG,GAA2B,EAAE,CAAC;IACvC,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3C,MAAM,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;QAC/B,IAAI,MAAM;YAAE,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { type AgentConfigKey } from './config_schema.js';
|
|
2
|
+
export interface ResolveOptions {
|
|
3
|
+
/** Override the user config path (test isolation). */
|
|
4
|
+
userConfigPath?: string;
|
|
5
|
+
/** Disable env layer (test isolation). */
|
|
6
|
+
noEnv?: boolean;
|
|
7
|
+
}
|
|
8
|
+
export declare function invalidateAgentConfigCache(): void;
|
|
9
|
+
export declare function getAgentConfig<T extends number | string | boolean>(key: AgentConfigKey, opts?: ResolveOptions): Promise<T>;
|
|
10
|
+
export declare function snapshotAgentConfig(opts?: ResolveOptions): Promise<Array<{
|
|
11
|
+
key: AgentConfigKey;
|
|
12
|
+
value: unknown;
|
|
13
|
+
source: 'env' | 'user' | 'default';
|
|
14
|
+
description: string;
|
|
15
|
+
}>>;
|
|
16
|
+
//# sourceMappingURL=config_resolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config_resolver.d.ts","sourceRoot":"","sources":["../../src/agents/config_resolver.ts"],"names":[],"mappings":"AAcA,OAAO,EAEL,KAAK,cAAc,EAIpB,MAAM,oBAAoB,CAAC;AAM5B,MAAM,WAAW,cAAc;IAC7B,sDAAsD;IACtD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,0CAA0C;IAC1C,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAuCD,wBAAgB,0BAA0B,IAAI,IAAI,CAGjD;AAED,wBAAsB,cAAc,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,GAAG,OAAO,EACtE,GAAG,EAAE,cAAc,EACnB,IAAI,GAAE,cAAmB,GACxB,OAAO,CAAC,CAAC,CAAC,CA2BZ;AAKD,wBAAsB,mBAAmB,CACvC,IAAI,GAAE,cAAmB,GACxB,OAAO,CAAC,KAAK,CAAC;IAAE,GAAG,EAAE,cAAc,CAAC;IAAC,KAAK,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,SAAS,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,CAgClH"}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent config resolver. Walks the override chain:
|
|
3
|
+
* 1. process.env[YF_AGENT_<UPPER_SNAKE>] (highest precedence, dev)
|
|
4
|
+
* 2. project-level override (left out of slice 1 -- TBD when the
|
|
5
|
+
* project store wires in; falls back to user level for now)
|
|
6
|
+
* 3. user-level ~/.yujin-forge/agents/config.json
|
|
7
|
+
* 4. published default (config_schema.ts)
|
|
8
|
+
*
|
|
9
|
+
* Returns the validated, type-coerced value. Invalid overrides
|
|
10
|
+
* log a single warning + fall through to the next layer.
|
|
11
|
+
*/
|
|
12
|
+
import { promises as fs } from 'node:fs';
|
|
13
|
+
import os from 'node:os';
|
|
14
|
+
import path from 'node:path';
|
|
15
|
+
import { AGENT_CONFIG_SCHEMA, validateAgentConfigValue, getAgentConfigDefault, getAgentConfigDescriptor, } from './config_schema.js';
|
|
16
|
+
let cachedUserConfig = null;
|
|
17
|
+
let cachedAt = 0;
|
|
18
|
+
const USER_CONFIG_TTL_MS = 5_000; /* re-read after 5s so edits show up without restart */
|
|
19
|
+
function envKeyFor(key) {
|
|
20
|
+
/* `agent.bridge.tokens_per_pair_hourly` ->
|
|
21
|
+
* `YF_AGENT_BRIDGE_TOKENS_PER_PAIR_HOURLY` */
|
|
22
|
+
return 'YF_' + key.replace(/[.\-]/g, '_').toUpperCase();
|
|
23
|
+
}
|
|
24
|
+
function defaultUserConfigPath() {
|
|
25
|
+
return path.join(os.homedir(), '.yujin-forge', 'agents', 'config.json');
|
|
26
|
+
}
|
|
27
|
+
async function loadUserConfig(p) {
|
|
28
|
+
const now = Date.now();
|
|
29
|
+
if (cachedUserConfig !== null && (now - cachedAt) < USER_CONFIG_TTL_MS) {
|
|
30
|
+
return cachedUserConfig;
|
|
31
|
+
}
|
|
32
|
+
try {
|
|
33
|
+
const raw = await fs.readFile(p, 'utf-8');
|
|
34
|
+
const obj = JSON.parse(raw);
|
|
35
|
+
if (obj && typeof obj === 'object' && !Array.isArray(obj)) {
|
|
36
|
+
cachedUserConfig = obj;
|
|
37
|
+
cachedAt = now;
|
|
38
|
+
return cachedUserConfig;
|
|
39
|
+
}
|
|
40
|
+
/* JSON parsed but is array / primitive -- treat as empty. */
|
|
41
|
+
cachedUserConfig = {};
|
|
42
|
+
cachedAt = now;
|
|
43
|
+
return cachedUserConfig;
|
|
44
|
+
}
|
|
45
|
+
catch {
|
|
46
|
+
/* File missing or unreadable -- empty override is the safe default. */
|
|
47
|
+
cachedUserConfig = {};
|
|
48
|
+
cachedAt = now;
|
|
49
|
+
return cachedUserConfig;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
/* Reset the cache. Used by `yf limits set agent.<key>` after a
|
|
53
|
+
* successful write so subsequent reads see the new value. */
|
|
54
|
+
export function invalidateAgentConfigCache() {
|
|
55
|
+
cachedUserConfig = null;
|
|
56
|
+
cachedAt = 0;
|
|
57
|
+
}
|
|
58
|
+
export async function getAgentConfig(key, opts = {}) {
|
|
59
|
+
/* Layer 1 -- env */
|
|
60
|
+
if (!opts.noEnv) {
|
|
61
|
+
const envValue = process.env[envKeyFor(key)];
|
|
62
|
+
if (envValue !== undefined) {
|
|
63
|
+
try {
|
|
64
|
+
return validateAgentConfigValue(key, envValue);
|
|
65
|
+
}
|
|
66
|
+
catch {
|
|
67
|
+
/* fall through; env override invalid */
|
|
68
|
+
console.warn('[agent-config] env override for ' + key + ' invalid, falling through');
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
/* Layer 2 -- project override (TBD in a later slice when the
|
|
73
|
+
* project store exposes a `limits_config` row. Skipping for
|
|
74
|
+
* slice 1.) */
|
|
75
|
+
/* Layer 3 -- user config */
|
|
76
|
+
const userConfig = await loadUserConfig(opts.userConfigPath ?? defaultUserConfigPath());
|
|
77
|
+
if (userConfig[key] !== undefined) {
|
|
78
|
+
try {
|
|
79
|
+
return validateAgentConfigValue(key, userConfig[key]);
|
|
80
|
+
}
|
|
81
|
+
catch {
|
|
82
|
+
console.warn('[agent-config] user override for ' + key + ' invalid, falling through');
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
/* Layer 4 -- published default */
|
|
86
|
+
return getAgentConfigDefault(key);
|
|
87
|
+
}
|
|
88
|
+
/* Snapshot every key as the resolver would currently see them.
|
|
89
|
+
* Used by `yf agent doctor` + the panel settings tab to show the
|
|
90
|
+
* effective config without surprise. */
|
|
91
|
+
export async function snapshotAgentConfig(opts = {}) {
|
|
92
|
+
const userConfig = await loadUserConfig(opts.userConfigPath ?? defaultUserConfigPath());
|
|
93
|
+
const out = [];
|
|
94
|
+
for (const d of AGENT_CONFIG_SCHEMA) {
|
|
95
|
+
const envValue = opts.noEnv ? undefined : process.env[envKeyFor(d.key)];
|
|
96
|
+
let value;
|
|
97
|
+
let source;
|
|
98
|
+
if (envValue !== undefined) {
|
|
99
|
+
try {
|
|
100
|
+
value = validateAgentConfigValue(d.key, envValue);
|
|
101
|
+
source = 'env';
|
|
102
|
+
}
|
|
103
|
+
catch {
|
|
104
|
+
value = userConfig[d.key] !== undefined
|
|
105
|
+
? (() => { try {
|
|
106
|
+
return validateAgentConfigValue(d.key, userConfig[d.key]);
|
|
107
|
+
}
|
|
108
|
+
catch {
|
|
109
|
+
return d.default;
|
|
110
|
+
} })()
|
|
111
|
+
: d.default;
|
|
112
|
+
source = userConfig[d.key] !== undefined ? 'user' : 'default';
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
else if (userConfig[d.key] !== undefined) {
|
|
116
|
+
try {
|
|
117
|
+
value = validateAgentConfigValue(d.key, userConfig[d.key]);
|
|
118
|
+
source = 'user';
|
|
119
|
+
}
|
|
120
|
+
catch {
|
|
121
|
+
value = d.default;
|
|
122
|
+
source = 'default';
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
else {
|
|
126
|
+
value = d.default;
|
|
127
|
+
source = 'default';
|
|
128
|
+
}
|
|
129
|
+
out.push({ key: d.key, value, source, description: getAgentConfigDescriptor(d.key).description });
|
|
130
|
+
}
|
|
131
|
+
return out;
|
|
132
|
+
}
|
|
133
|
+
//# sourceMappingURL=config_resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config_resolver.js","sourceRoot":"","sources":["../../src/agents/config_resolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent orchestrator config schema (HITO 5 slice 1).
|
|
3
|
+
*
|
|
4
|
+
* Source of truth for every threshold / cap / default that the
|
|
5
|
+
* agent runtime + bridge use. Per Pablo's locked decision:
|
|
6
|
+
* NOTHING in src/agents/* may hardcode a number. Every dial
|
|
7
|
+
* lands here, with a published default + a description that the
|
|
8
|
+
* config-file generator uses as the comment.
|
|
9
|
+
*
|
|
10
|
+
* Read order at runtime:
|
|
11
|
+
* 1. process.env override (`YF_AGENT_<UPPER_SNAKE_CASE>`)
|
|
12
|
+
* 2. project-level limits_config row (`agent.<key>` namespace)
|
|
13
|
+
* 3. user-level `~/.yujin-forge/agents/config.json`
|
|
14
|
+
* 4. published default (this file)
|
|
15
|
+
*
|
|
16
|
+
* The published default is the LAST fallback, never inlined into
|
|
17
|
+
* a handler. Handlers call `getAgentConfig(key)` which walks the
|
|
18
|
+
* chain. Invalid types log a warning + fall back to default.
|
|
19
|
+
*
|
|
20
|
+
* Changes to defaults ship as a config-file edit, not a code
|
|
21
|
+
* change in src/agents/*.ts.
|
|
22
|
+
*/
|
|
23
|
+
export type AgentConfigKey = 'agent.bridge.tokens_per_pair_hourly' | 'agent.bridge.round_trips_window_seconds' | 'agent.bridge.round_trips_max' | 'agent.bridge.message_ttl_seconds' | 'agent.bridge.inbox_drain_batch' | 'agent.runtime.max_consecutive_rejected_approvals' | 'agent.runtime.run_timeout_seconds' | 'agent.cron.missed_runs_warning_threshold' | 'agent.audit.retention_days' | 'agent.deletion.grace_period_days' | 'agent.web_search.provider' | 'agent.web_search.daily_query_cap';
|
|
24
|
+
export type AgentConfigType = 'number' | 'string' | 'boolean';
|
|
25
|
+
export interface AgentConfigDescriptor {
|
|
26
|
+
key: AgentConfigKey;
|
|
27
|
+
type: AgentConfigType;
|
|
28
|
+
default: number | string | boolean;
|
|
29
|
+
description: string;
|
|
30
|
+
/** Optional enum -- for string keys that must be one of N values. */
|
|
31
|
+
enum?: readonly string[];
|
|
32
|
+
/** Optional bounds for number keys. */
|
|
33
|
+
min?: number;
|
|
34
|
+
max?: number;
|
|
35
|
+
}
|
|
36
|
+
export declare const AGENT_CONFIG_SCHEMA: readonly AgentConfigDescriptor[];
|
|
37
|
+
export declare function getAgentConfigDescriptor(key: AgentConfigKey): AgentConfigDescriptor;
|
|
38
|
+
export declare function getAgentConfigDefault(key: AgentConfigKey): number | string | boolean;
|
|
39
|
+
export declare function validateAgentConfigValue(key: AgentConfigKey, raw: unknown): number | string | boolean;
|
|
40
|
+
export declare function renderDefaultConfigJson(): string;
|
|
41
|
+
export declare function renderConfigDocsMarkdown(): string;
|
|
42
|
+
//# sourceMappingURL=config_schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config_schema.d.ts","sourceRoot":"","sources":["../../src/agents/config_schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,MAAM,MAAM,cAAc,GAEtB,qCAAqC,GACrC,yCAAyC,GACzC,8BAA8B,GAC9B,kCAAkC,GAClC,gCAAgC,GAEhC,kDAAkD,GAClD,mCAAmC,GAEnC,0CAA0C,GAE1C,4BAA4B,GAC5B,kCAAkC,GAElC,2BAA2B,GAC3B,kCAAkC,CAAC;AAEvC,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;AAE9D,MAAM,WAAW,qBAAqB;IACpC,GAAG,EAAU,cAAc,CAAC;IAC5B,IAAI,EAAS,eAAe,CAAC;IAC7B,OAAO,EAAM,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IACvC,WAAW,EAAE,MAAM,CAAC;IACpB,qEAAqE;IACrE,IAAI,CAAC,EAAQ,SAAS,MAAM,EAAE,CAAC;IAC/B,uCAAuC;IACvC,GAAG,CAAC,EAAS,MAAM,CAAC;IACpB,GAAG,CAAC,EAAS,MAAM,CAAC;CACrB;AAMD,eAAO,MAAM,mBAAmB,EAAE,SAAS,qBAAqB,EAgGtD,CAAC;AAWX,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,cAAc,GAAG,qBAAqB,CAMnF;AAED,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,cAAc,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAEpF;AAKD,wBAAgB,wBAAwB,CACtC,GAAG,EAAE,cAAc,EACnB,GAAG,EAAE,OAAO,GACX,MAAM,GAAG,MAAM,GAAG,OAAO,CA6B3B;AAMD,wBAAgB,uBAAuB,IAAI,MAAM,CAMhD;AAKD,wBAAgB,wBAAwB,IAAI,MAAM,CAYjD"}
|
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent orchestrator config schema (HITO 5 slice 1).
|
|
3
|
+
*
|
|
4
|
+
* Source of truth for every threshold / cap / default that the
|
|
5
|
+
* agent runtime + bridge use. Per Pablo's locked decision:
|
|
6
|
+
* NOTHING in src/agents/* may hardcode a number. Every dial
|
|
7
|
+
* lands here, with a published default + a description that the
|
|
8
|
+
* config-file generator uses as the comment.
|
|
9
|
+
*
|
|
10
|
+
* Read order at runtime:
|
|
11
|
+
* 1. process.env override (`YF_AGENT_<UPPER_SNAKE_CASE>`)
|
|
12
|
+
* 2. project-level limits_config row (`agent.<key>` namespace)
|
|
13
|
+
* 3. user-level `~/.yujin-forge/agents/config.json`
|
|
14
|
+
* 4. published default (this file)
|
|
15
|
+
*
|
|
16
|
+
* The published default is the LAST fallback, never inlined into
|
|
17
|
+
* a handler. Handlers call `getAgentConfig(key)` which walks the
|
|
18
|
+
* chain. Invalid types log a warning + fall back to default.
|
|
19
|
+
*
|
|
20
|
+
* Changes to defaults ship as a config-file edit, not a code
|
|
21
|
+
* change in src/agents/*.ts.
|
|
22
|
+
*/
|
|
23
|
+
/* The canonical schema. The config-file generator + the runtime
|
|
24
|
+
* validator + the `yf limits` CLI all read from this list. Order
|
|
25
|
+
* matters for the generated config file (it's the section order
|
|
26
|
+
* users see). */
|
|
27
|
+
export const AGENT_CONFIG_SCHEMA = [
|
|
28
|
+
{
|
|
29
|
+
key: 'agent.bridge.tokens_per_pair_hourly',
|
|
30
|
+
type: 'number',
|
|
31
|
+
default: 100_000,
|
|
32
|
+
description: 'Token cap per (agent_a, agent_b) pair per rolling 1-hour window. When exhausted, both ends receive bridge_token_cap_reached + the pair freezes until the window resets.',
|
|
33
|
+
min: 1_000,
|
|
34
|
+
max: 10_000_000,
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
key: 'agent.bridge.round_trips_window_seconds',
|
|
38
|
+
type: 'number',
|
|
39
|
+
default: 60,
|
|
40
|
+
description: 'Sliding window in seconds for the round-trip loop detector. Round trips inside this window are counted; outside, ignored.',
|
|
41
|
+
min: 10,
|
|
42
|
+
max: 3600,
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
key: 'agent.bridge.round_trips_max',
|
|
46
|
+
type: 'number',
|
|
47
|
+
default: 10,
|
|
48
|
+
description: 'Round trips between an (a,b) pair inside the window that trigger auto-revoke. Pair is closed, status=auto_revoked, manual re-enable required.',
|
|
49
|
+
min: 2,
|
|
50
|
+
max: 1000,
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
key: 'agent.bridge.message_ttl_seconds',
|
|
54
|
+
type: 'number',
|
|
55
|
+
default: 86_400,
|
|
56
|
+
description: 'Inbox message expiry. Undelivered messages older than this are marked expired + skipped on next drain.',
|
|
57
|
+
min: 60,
|
|
58
|
+
max: 2_592_000, /* 30 days */
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
key: 'agent.bridge.inbox_drain_batch',
|
|
62
|
+
type: 'number',
|
|
63
|
+
default: 20,
|
|
64
|
+
description: 'Max messages an agent drains per wake. Prevents a single agent from blocking the others by processing a huge inbox.',
|
|
65
|
+
min: 1,
|
|
66
|
+
max: 1000,
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
key: 'agent.runtime.max_consecutive_rejected_approvals',
|
|
70
|
+
type: 'number',
|
|
71
|
+
default: 3,
|
|
72
|
+
description: 'Consecutive rejected approvals that kill an agent run. Resets to 0 on every accepted approval.',
|
|
73
|
+
min: 1,
|
|
74
|
+
max: 100,
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
key: 'agent.runtime.run_timeout_seconds',
|
|
78
|
+
type: 'number',
|
|
79
|
+
default: 1800, /* 30 min */
|
|
80
|
+
description: 'Hard cap per agent run. Run is force-stopped, status=timeout, partial results preserved.',
|
|
81
|
+
min: 10,
|
|
82
|
+
max: 86_400,
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
key: 'agent.cron.missed_runs_warning_threshold',
|
|
86
|
+
type: 'number',
|
|
87
|
+
default: 3,
|
|
88
|
+
description: 'How many missed cron ticks before the panel warns the user. Local-only agents only fire while the panel is open; this catches "I closed the laptop for a week".',
|
|
89
|
+
min: 1,
|
|
90
|
+
max: 100,
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
key: 'agent.audit.retention_days',
|
|
94
|
+
type: 'number',
|
|
95
|
+
default: 90,
|
|
96
|
+
description: 'How long agent runs + bridge messages stay in audit_log. Matches the global audit-log default.',
|
|
97
|
+
min: 1,
|
|
98
|
+
max: 3650,
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
key: 'agent.deletion.grace_period_days',
|
|
102
|
+
type: 'number',
|
|
103
|
+
default: 30,
|
|
104
|
+
description: 'When an agent is deleted, runs move to the deleted/ partition for this many days before purge. Lets the user un-delete.',
|
|
105
|
+
min: 0,
|
|
106
|
+
max: 3650,
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
key: 'agent.web_search.provider',
|
|
110
|
+
type: 'string',
|
|
111
|
+
default: 'brave',
|
|
112
|
+
description: 'Web search provider for the default agent:web-search delegate (managed-only). User-created BYOK web-search agents pick their own.',
|
|
113
|
+
enum: ['brave', 'tavily', 'google'],
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
key: 'agent.web_search.daily_query_cap',
|
|
117
|
+
type: 'number',
|
|
118
|
+
default: 100,
|
|
119
|
+
description: 'Daily query cap for the managed agent:web-search delegate using the central API key. Per-user. Resets at UTC midnight.',
|
|
120
|
+
min: 1,
|
|
121
|
+
max: 100_000,
|
|
122
|
+
},
|
|
123
|
+
];
|
|
124
|
+
/* Map for O(1) lookup. */
|
|
125
|
+
const SCHEMA_BY_KEY = (() => {
|
|
126
|
+
const out = {};
|
|
127
|
+
for (const d of AGENT_CONFIG_SCHEMA) {
|
|
128
|
+
out[d.key] = d;
|
|
129
|
+
}
|
|
130
|
+
return out;
|
|
131
|
+
})();
|
|
132
|
+
export function getAgentConfigDescriptor(key) {
|
|
133
|
+
const d = SCHEMA_BY_KEY[key];
|
|
134
|
+
if (!d) {
|
|
135
|
+
throw new Error('Unknown agent config key: ' + String(key));
|
|
136
|
+
}
|
|
137
|
+
return d;
|
|
138
|
+
}
|
|
139
|
+
export function getAgentConfigDefault(key) {
|
|
140
|
+
return getAgentConfigDescriptor(key).default;
|
|
141
|
+
}
|
|
142
|
+
/* Validation -- used by both the runtime config loader + the
|
|
143
|
+
* `yf limits set agent.<key> <value>` CLI. Returns the coerced
|
|
144
|
+
* value on success, throws on failure. */
|
|
145
|
+
export function validateAgentConfigValue(key, raw) {
|
|
146
|
+
const d = getAgentConfigDescriptor(key);
|
|
147
|
+
switch (d.type) {
|
|
148
|
+
case 'number': {
|
|
149
|
+
const n = typeof raw === 'number' ? raw : Number(raw);
|
|
150
|
+
if (!Number.isFinite(n)) {
|
|
151
|
+
throw new Error('agent config ' + key + ' must be a number, got ' + typeof raw);
|
|
152
|
+
}
|
|
153
|
+
if (d.min !== undefined && n < d.min) {
|
|
154
|
+
throw new Error('agent config ' + key + ' below min (' + d.min + '): got ' + n);
|
|
155
|
+
}
|
|
156
|
+
if (d.max !== undefined && n > d.max) {
|
|
157
|
+
throw new Error('agent config ' + key + ' above max (' + d.max + '): got ' + n);
|
|
158
|
+
}
|
|
159
|
+
return n;
|
|
160
|
+
}
|
|
161
|
+
case 'string': {
|
|
162
|
+
const s = String(raw);
|
|
163
|
+
if (d.enum && !d.enum.includes(s)) {
|
|
164
|
+
throw new Error('agent config ' + key + ' must be one of [' + d.enum.join(', ') + '], got ' + JSON.stringify(s));
|
|
165
|
+
}
|
|
166
|
+
return s;
|
|
167
|
+
}
|
|
168
|
+
case 'boolean': {
|
|
169
|
+
if (raw === true || raw === 'true' || raw === 1 || raw === '1')
|
|
170
|
+
return true;
|
|
171
|
+
if (raw === false || raw === 'false' || raw === 0 || raw === '0')
|
|
172
|
+
return false;
|
|
173
|
+
throw new Error('agent config ' + key + ' must be a boolean, got ' + JSON.stringify(raw));
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
/* Generates the user-facing config file body (json with a leading
|
|
178
|
+
* comment block listing every key + description + default). The
|
|
179
|
+
* config file lives at `~/.yujin-forge/agents/config.json` and is
|
|
180
|
+
* created on first `yf agent install --defaults`. */
|
|
181
|
+
export function renderDefaultConfigJson() {
|
|
182
|
+
const obj = {};
|
|
183
|
+
for (const d of AGENT_CONFIG_SCHEMA) {
|
|
184
|
+
obj[d.key] = d.default;
|
|
185
|
+
}
|
|
186
|
+
return JSON.stringify(obj, null, 2);
|
|
187
|
+
}
|
|
188
|
+
/* Generates a markdown doc of every key + description + default
|
|
189
|
+
* for inclusion in docs/HITO_5_AGENT_ORCHESTRATOR_DESIGN.md or
|
|
190
|
+
* the user-facing settings panel. */
|
|
191
|
+
export function renderConfigDocsMarkdown() {
|
|
192
|
+
const rows = AGENT_CONFIG_SCHEMA.map((d) => {
|
|
193
|
+
const bounds = d.type === 'number'
|
|
194
|
+
? ' (range: ' + (d.min ?? '-') + '..' + (d.max ?? '-') + ')'
|
|
195
|
+
: (d.enum ? ' (one of: ' + d.enum.join(', ') + ')' : '');
|
|
196
|
+
return '| `' + d.key + '` | ' + d.type + bounds + ' | ' + JSON.stringify(d.default) + ' | ' + d.description + ' |';
|
|
197
|
+
});
|
|
198
|
+
return [
|
|
199
|
+
'| Key | Type | Default | Description |',
|
|
200
|
+
'|---|---|---|---|',
|
|
201
|
+
...rows,
|
|
202
|
+
].join('\n');
|
|
203
|
+
}
|
|
204
|
+
//# sourceMappingURL=config_schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config_schema.js","sourceRoot":"","sources":["../../src/agents/config_schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAmCH;;;iBAGiB;AACjB,MAAM,CAAC,MAAM,mBAAmB,GAAqC;IACnE;QACE,GAAG,EAAU,qCAAqC;QAClD,IAAI,EAAS,QAAQ;QACrB,OAAO,EAAM,OAAO;QACpB,WAAW,EAAE,yKAAyK;QACtL,GAAG,EAAU,KAAK;QAClB,GAAG,EAAU,UAAU;KACxB;IACD;QACE,GAAG,EAAU,yCAAyC;QACtD,IAAI,EAAS,QAAQ;QACrB,OAAO,EAAM,EAAE;QACf,WAAW,EAAE,2HAA2H;QACxI,GAAG,EAAU,EAAE;QACf,GAAG,EAAU,IAAI;KAClB;IACD;QACE,GAAG,EAAU,8BAA8B;QAC3C,IAAI,EAAS,QAAQ;QACrB,OAAO,EAAM,EAAE;QACf,WAAW,EAAE,+IAA+I;QAC5J,GAAG,EAAU,CAAC;QACd,GAAG,EAAU,IAAI;KAClB;IACD;QACE,GAAG,EAAU,kCAAkC;QAC/C,IAAI,EAAS,QAAQ;QACrB,OAAO,EAAM,MAAM;QACnB,WAAW,EAAE,wGAAwG;QACrH,GAAG,EAAU,EAAE;QACf,GAAG,EAAU,SAAS,EAAE,aAAa;KACtC;IACD;QACE,GAAG,EAAU,gCAAgC;QAC7C,IAAI,EAAS,QAAQ;QACrB,OAAO,EAAM,EAAE;QACf,WAAW,EAAE,qHAAqH;QAClI,GAAG,EAAU,CAAC;QACd,GAAG,EAAU,IAAI;KAClB;IACD;QACE,GAAG,EAAU,kDAAkD;QAC/D,IAAI,EAAS,QAAQ;QACrB,OAAO,EAAM,CAAC;QACd,WAAW,EAAE,gGAAgG;QAC7G,GAAG,EAAU,CAAC;QACd,GAAG,EAAU,GAAG;KACjB;IACD;QACE,GAAG,EAAU,mCAAmC;QAChD,IAAI,EAAS,QAAQ;QACrB,OAAO,EAAM,IAAI,EAAE,YAAY;QAC/B,WAAW,EAAE,0FAA0F;QACvG,GAAG,EAAU,EAAE;QACf,GAAG,EAAU,MAAM;KACpB;IACD;QACE,GAAG,EAAU,0CAA0C;QACvD,IAAI,EAAS,QAAQ;QACrB,OAAO,EAAM,CAAC;QACd,WAAW,EAAE,iKAAiK;QAC9K,GAAG,EAAU,CAAC;QACd,GAAG,EAAU,GAAG;KACjB;IACD;QACE,GAAG,EAAU,4BAA4B;QACzC,IAAI,EAAS,QAAQ;QACrB,OAAO,EAAM,EAAE;QACf,WAAW,EAAE,gGAAgG;QAC7G,GAAG,EAAU,CAAC;QACd,GAAG,EAAU,IAAI;KAClB;IACD;QACE,GAAG,EAAU,kCAAkC;QAC/C,IAAI,EAAS,QAAQ;QACrB,OAAO,EAAM,EAAE;QACf,WAAW,EAAE,yHAAyH;QACtI,GAAG,EAAU,CAAC;QACd,GAAG,EAAU,IAAI;KAClB;IACD;QACE,GAAG,EAAU,2BAA2B;QACxC,IAAI,EAAS,QAAQ;QACrB,OAAO,EAAM,OAAO;QACpB,WAAW,EAAE,mIAAmI;QAChJ,IAAI,EAAS,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAU;KACpD;IACD;QACE,GAAG,EAAU,kCAAkC;QAC/C,IAAI,EAAS,QAAQ;QACrB,OAAO,EAAM,GAAG;QAChB,WAAW,EAAE,wHAAwH;QACrI,GAAG,EAAU,CAAC;QACd,GAAG,EAAU,OAAO;KACrB;CACO,CAAC;AAEX,0BAA0B;AAC1B,MAAM,aAAa,GAAkD,CAAC,GAAG,EAAE;IACzE,MAAM,GAAG,GAAG,EAAmD,CAAC;IAChE,KAAK,MAAM,CAAC,IAAI,mBAAmB,EAAE,CAAC;QACpC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACjB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC,CAAC,EAAE,CAAC;AAEL,MAAM,UAAU,wBAAwB,CAAC,GAAmB;IAC1D,MAAM,CAAC,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;IAC7B,IAAI,CAAC,CAAC,EAAE,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,4BAA4B,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9D,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,GAAmB;IACvD,OAAO,wBAAwB,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC;AAC/C,CAAC;AAED;;0CAE0C;AAC1C,MAAM,UAAU,wBAAwB,CACtC,GAAmB,EACnB,GAAY;IAEZ,MAAM,CAAC,GAAG,wBAAwB,CAAC,GAAG,CAAC,CAAC;IACxC,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;QACf,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,CAAC,GAAG,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACtD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;gBACxB,MAAM,IAAI,KAAK,CAAC,eAAe,GAAG,GAAG,GAAG,yBAAyB,GAAG,OAAO,GAAG,CAAC,CAAC;YAClF,CAAC;YACD,IAAI,CAAC,CAAC,GAAG,KAAK,SAAS,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;gBACrC,MAAM,IAAI,KAAK,CAAC,eAAe,GAAG,GAAG,GAAG,cAAc,GAAG,CAAC,CAAC,GAAG,GAAG,SAAS,GAAG,CAAC,CAAC,CAAC;YAClF,CAAC;YACD,IAAI,CAAC,CAAC,GAAG,KAAK,SAAS,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;gBACrC,MAAM,IAAI,KAAK,CAAC,eAAe,GAAG,GAAG,GAAG,cAAc,GAAG,CAAC,CAAC,GAAG,GAAG,SAAS,GAAG,CAAC,CAAC,CAAC;YAClF,CAAC;YACD,OAAO,CAAC,CAAC;QACX,CAAC;QACD,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;YACtB,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;gBAClC,MAAM,IAAI,KAAK,CAAC,eAAe,GAAG,GAAG,GAAG,mBAAmB,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;YACnH,CAAC;YACD,OAAO,CAAC,CAAC;QACX,CAAC;QACD,KAAK,SAAS,CAAC,CAAC,CAAC;YACf,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,GAAG,KAAK,GAAG;gBAAE,OAAO,IAAI,CAAC;YAC5E,IAAI,GAAG,KAAK,KAAK,IAAI,GAAG,KAAK,OAAO,IAAI,GAAG,KAAK,CAAC,IAAI,GAAG,KAAK,GAAG;gBAAE,OAAO,KAAK,CAAC;YAC/E,MAAM,IAAI,KAAK,CAAC,eAAe,GAAG,GAAG,GAAG,0BAA0B,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;QAC5F,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;qDAGqD;AACrD,MAAM,UAAU,uBAAuB;IACrC,MAAM,GAAG,GAA8C,EAAE,CAAC;IAC1D,KAAK,MAAM,CAAC,IAAI,mBAAmB,EAAE,CAAC;QACpC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC;IACzB,CAAC;IACD,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AACtC,CAAC;AAED;;qCAEqC;AACrC,MAAM,UAAU,wBAAwB;IACtC,MAAM,IAAI,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACzC,MAAM,MAAM,GAAG,CAAC,CAAC,IAAI,KAAK,QAAQ;YAChC,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,GAAG;YAC5D,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC3D,OAAO,KAAK,GAAG,CAAC,CAAC,GAAG,GAAG,MAAM,GAAG,CAAC,CAAC,IAAI,GAAG,MAAM,GAAG,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,WAAW,GAAG,IAAI,CAAC;IACrH,CAAC,CAAC,CAAC;IACH,OAAO;QACL,wCAAwC;QACxC,mBAAmB;QACnB,GAAG,IAAI;KACR,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC"}
|