@nac3/forge-cli 0.2.0-alpha.8 → 0.2.1-alpha.60
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/bridge.d.ts +69 -0
- package/dist/agents/bridge.d.ts.map +1 -0
- package/dist/agents/bridge.js +295 -0
- package/dist/agents/bridge.js.map +1 -0
- package/dist/agents/cli_real.d.ts +38 -0
- package/dist/agents/cli_real.d.ts.map +1 -0
- package/dist/agents/cli_real.js +46 -0
- package/dist/agents/cli_real.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 +220 -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/delegate.d.ts +36 -0
- package/dist/agents/delegate.d.ts.map +1 -0
- package/dist/agents/delegate.js +68 -0
- package/dist/agents/delegate.js.map +1 -0
- package/dist/agents/iterative_step.d.ts +95 -0
- package/dist/agents/iterative_step.d.ts.map +1 -0
- package/dist/agents/iterative_step.js +249 -0
- package/dist/agents/iterative_step.js.map +1 -0
- package/dist/agents/llm_step.d.ts +50 -0
- package/dist/agents/llm_step.d.ts.map +1 -0
- package/dist/agents/llm_step.js +28 -0
- package/dist/agents/llm_step.js.map +1 -0
- package/dist/agents/real_step_factory.d.ts +95 -0
- package/dist/agents/real_step_factory.d.ts.map +1 -0
- package/dist/agents/real_step_factory.js +51 -0
- package/dist/agents/real_step_factory.js.map +1 -0
- package/dist/agents/runner.d.ts +108 -0
- package/dist/agents/runner.d.ts.map +1 -0
- package/dist/agents/runner.js +174 -0
- package/dist/agents/runner.js.map +1 -0
- package/dist/agents/runtime.d.ts +115 -0
- package/dist/agents/runtime.d.ts.map +1 -0
- package/dist/agents/runtime.js +429 -0
- package/dist/agents/runtime.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/system_prompt.d.ts +36 -0
- package/dist/agents/system_prompt.d.ts.map +1 -0
- package/dist/agents/system_prompt.js +101 -0
- package/dist/agents/system_prompt.js.map +1 -0
- package/dist/agents/types.d.ts +123 -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 +101 -2
- package/dist/bin/yf.js.map +1 -1
- package/dist/chat/claude.d.ts +89 -1
- package/dist/chat/claude.d.ts.map +1 -1
- package/dist/chat/claude.js +170 -30
- package/dist/chat/claude.js.map +1 -1
- package/dist/chat/claude_cli.d.ts +145 -0
- package/dist/chat/claude_cli.d.ts.map +1 -0
- package/dist/chat/claude_cli.js +598 -0
- package/dist/chat/claude_cli.js.map +1 -0
- package/dist/chat/completion_hallucination_detector.d.ts +40 -0
- package/dist/chat/completion_hallucination_detector.d.ts.map +1 -0
- package/dist/chat/completion_hallucination_detector.js +96 -0
- package/dist/chat/completion_hallucination_detector.js.map +1 -0
- package/dist/chat/doctrine_digest.d.ts +31 -0
- package/dist/chat/doctrine_digest.d.ts.map +1 -0
- package/dist/chat/doctrine_digest.js +117 -0
- package/dist/chat/doctrine_digest.js.map +1 -0
- 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 +177 -0
- package/dist/chat/graph_auto_ingest.js.map +1 -0
- package/dist/chat/graph_component_watcher.d.ts +34 -0
- package/dist/chat/graph_component_watcher.d.ts.map +1 -0
- package/dist/chat/graph_component_watcher.js +225 -0
- package/dist/chat/graph_component_watcher.js.map +1 -0
- package/dist/chat/graph_snapshot.d.ts +38 -0
- package/dist/chat/graph_snapshot.d.ts.map +1 -0
- package/dist/chat/graph_snapshot.js +159 -0
- package/dist/chat/graph_snapshot.js.map +1 -0
- package/dist/chat/ingest_session.d.ts +24 -4
- package/dist/chat/ingest_session.d.ts.map +1 -1
- package/dist/chat/ingest_session.js +143 -4
- package/dist/chat/ingest_session.js.map +1 -1
- package/dist/chat/panel.d.ts.map +1 -1
- package/dist/chat/panel.js +9640 -1455
- package/dist/chat/panel.js.map +1 -1
- package/dist/chat/panel_queue.d.ts +43 -0
- package/dist/chat/panel_queue.d.ts.map +1 -0
- package/dist/chat/panel_queue.js +46 -0
- package/dist/chat/panel_queue.js.map +1 -0
- package/dist/chat/project_context_inject.d.ts +10 -0
- package/dist/chat/project_context_inject.d.ts.map +1 -0
- package/dist/chat/project_context_inject.js +119 -0
- package/dist/chat/project_context_inject.js.map +1 -0
- package/dist/chat/project_slug.d.ts +17 -0
- package/dist/chat/project_slug.d.ts.map +1 -0
- package/dist/chat/project_slug.js +103 -0
- package/dist/chat/project_slug.js.map +1 -0
- package/dist/chat/refusal_detector.d.ts +14 -0
- package/dist/chat/refusal_detector.d.ts.map +1 -0
- package/dist/chat/refusal_detector.js +138 -0
- package/dist/chat/refusal_detector.js.map +1 -0
- package/dist/chat/semantic_graph_ingest.d.ts +39 -0
- package/dist/chat/semantic_graph_ingest.d.ts.map +1 -0
- package/dist/chat/semantic_graph_ingest.js +90 -0
- package/dist/chat/semantic_graph_ingest.js.map +1 -0
- package/dist/chat/semantic_graph_inject.d.ts +31 -0
- package/dist/chat/semantic_graph_inject.d.ts.map +1 -0
- package/dist/chat/semantic_graph_inject.js +63 -0
- package/dist/chat/semantic_graph_inject.js.map +1 -0
- package/dist/chat/server.d.ts +98 -2
- package/dist/chat/server.d.ts.map +1 -1
- package/dist/chat/server.js +3881 -337
- 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 +41 -56
- 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 +36 -57
- 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/graph.d.ts +43 -0
- package/dist/chat/tools/graph.d.ts.map +1 -0
- package/dist/chat/tools/graph.js +174 -0
- package/dist/chat/tools/graph.js.map +1 -0
- 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 +169 -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 +58 -0
- package/dist/chat/tools/nac3_invoke.d.ts.map +1 -0
- package/dist/chat/tools/nac3_invoke.js +887 -0
- package/dist/chat/tools/nac3_invoke.js.map +1 -0
- package/dist/chat/tools/pending.d.ts +69 -0
- package/dist/chat/tools/pending.d.ts.map +1 -0
- package/dist/chat/tools/pending.js +167 -0
- package/dist/chat/tools/pending.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 +212 -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/wiring.d.ts +28 -0
- package/dist/chat/tools/wiring.d.ts.map +1 -0
- package/dist/chat/tools/wiring.js +116 -0
- package/dist/chat/tools/wiring.js.map +1 -0
- package/dist/chat/tools/workflow.d.ts +55 -0
- package/dist/chat/tools/workflow.d.ts.map +1 -0
- package/dist/chat/tools/workflow.js +463 -0
- package/dist/chat/tools/workflow.js.map +1 -0
- package/dist/chat/tools.d.ts +42 -0
- package/dist/chat/tools.d.ts.map +1 -1
- package/dist/chat/tools.js +451 -13
- package/dist/chat/tools.js.map +1 -1
- package/dist/chat/wiring_inject.d.ts +18 -0
- package/dist/chat/wiring_inject.d.ts.map +1 -0
- package/dist/chat/wiring_inject.js +78 -0
- package/dist/chat/wiring_inject.js.map +1 -0
- 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/chat/yujin_splash.d.ts +27 -0
- package/dist/chat/yujin_splash.d.ts.map +1 -0
- package/dist/chat/yujin_splash.js +147 -0
- package/dist/chat/yujin_splash.js.map +1 -0
- package/dist/commands/agent.d.ts +33 -0
- package/dist/commands/agent.d.ts.map +1 -0
- package/dist/commands/agent.js +281 -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 +10 -0
- package/dist/commands/chat.d.ts.map +1 -1
- package/dist/commands/chat.js +209 -17
- 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/director.d.ts +37 -0
- package/dist/commands/director.d.ts.map +1 -0
- package/dist/commands/director.js +290 -0
- package/dist/commands/director.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.d.ts +18 -0
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +120 -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 +29 -0
- package/dist/commands/graph.d.ts.map +1 -0
- package/dist/commands/graph.js +362 -0
- package/dist/commands/graph.js.map +1 -0
- package/dist/commands/keys_setup.d.ts +18 -0
- package/dist/commands/keys_setup.d.ts.map +1 -1
- package/dist/commands/keys_setup.js +225 -11
- 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/mobile.d.ts +15 -0
- package/dist/commands/mobile.d.ts.map +1 -1
- package/dist/commands/mobile.js +27 -24
- package/dist/commands/mobile.js.map +1 -1
- 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/pending.d.ts +22 -0
- package/dist/commands/pending.d.ts.map +1 -0
- package/dist/commands/pending.js +341 -0
- package/dist/commands/pending.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/test_agent.d.ts +22 -0
- package/dist/commands/test_agent.d.ts.map +1 -0
- package/dist/commands/test_agent.js +100 -0
- package/dist/commands/test_agent.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/wiring.d.ts +19 -0
- package/dist/commands/wiring.d.ts.map +1 -0
- package/dist/commands/wiring.js +135 -0
- package/dist/commands/wiring.js.map +1 -0
- 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/atomic_write.d.ts +17 -0
- package/dist/core/atomic_write.d.ts.map +1 -0
- package/dist/core/atomic_write.js +51 -0
- package/dist/core/atomic_write.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 +50 -0
- package/dist/core/brain_config.d.ts.map +1 -0
- package/dist/core/brain_config.js +142 -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 +328 -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 +589 -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/keys_envelope.d.ts.map +1 -1
- package/dist/core/keys_envelope.js +14 -9
- package/dist/core/keys_envelope.js.map +1 -1
- 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/pairing.d.ts +1 -0
- package/dist/core/pairing.d.ts.map +1 -1
- package/dist/core/pairing.js +23 -12
- package/dist/core/pairing.js.map +1 -1
- package/dist/core/pilot_setup.d.ts +29 -3
- package/dist/core/pilot_setup.d.ts.map +1 -1
- package/dist/core/pilot_setup.js +130 -3
- package/dist/core/pilot_setup.js.map +1 -1
- 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 +267 -0
- package/dist/core/provider_keys.js.map +1 -0
- package/dist/core/provider_models.d.ts +27 -0
- package/dist/core/provider_models.d.ts.map +1 -0
- package/dist/core/provider_models.js +169 -0
- package/dist/core/provider_models.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 +205 -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 +70 -0
- package/dist/core/turn_classifier.d.ts.map +1 -0
- package/dist/core/turn_classifier.js +324 -0
- package/dist/core/turn_classifier.js.map +1 -0
- package/dist/core/vad_config.d.ts +34 -0
- package/dist/core/vad_config.d.ts.map +1 -0
- package/dist/core/vad_config.js +95 -0
- package/dist/core/vad_config.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/core/wizard_state.d.ts +15 -0
- package/dist/core/wizard_state.d.ts.map +1 -0
- package/dist/core/wizard_state.js +86 -0
- package/dist/core/wizard_state.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/design/yujin_design_resolver.d.ts +77 -0
- package/dist/design/yujin_design_resolver.d.ts.map +1 -0
- package/dist/design/yujin_design_resolver.js +113 -0
- package/dist/design/yujin_design_resolver.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 +103 -0
- package/dist/docs/doctrine/default-design-system.md +120 -0
- package/dist/docs/doctrine/explain-results.md +90 -0
- package/dist/docs/doctrine/expo-eas-builds.md +177 -0
- package/dist/docs/doctrine/g-doc.md +46 -0
- package/dist/docs/doctrine/gates.md +21 -0
- package/dist/docs/doctrine/language-sovereignty.md +143 -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/testing-policy.md +211 -0
- package/dist/docs/doctrine/verb-composition.md +68 -0
- package/dist/docs/doctrine/verification-honesty.md +95 -0
- package/dist/docs/doctrine/workflow-kinds.md +52 -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 +7 -0
- package/dist/license/hito4_client.d.ts.map +1 -1
- package/dist/license/hito4_client.js +52 -2
- 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 +59 -0
- package/dist/license/sync.d.ts.map +1 -0
- package/dist/license/sync.js +148 -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/blocklist.d.ts +19 -0
- package/dist/mcp/blocklist.d.ts.map +1 -0
- package/dist/mcp/blocklist.js +118 -0
- package/dist/mcp/blocklist.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/forge_panel_server.d.ts +46 -0
- package/dist/mcp/forge_panel_server.d.ts.map +1 -0
- package/dist/mcp/forge_panel_server.js +166 -0
- package/dist/mcp/forge_panel_server.js.map +1 -0
- package/dist/mcp/lan_scan.d.ts +36 -0
- package/dist/mcp/lan_scan.d.ts.map +1 -0
- package/dist/mcp/lan_scan.js +130 -0
- package/dist/mcp/lan_scan.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 +55 -143
- package/dist/migrate/ai-decorator.js.map +1 -1
- package/dist/nac3/approval_queue.d.ts +44 -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 +2461 -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 +132 -0
- package/dist/office/excel.d.ts.map +1 -0
- package/dist/office/excel.js +358 -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/pending/store.d.ts +72 -0
- package/dist/pending/store.d.ts.map +1 -0
- package/dist/pending/store.js +274 -0
- package/dist/pending/store.js.map +1 -0
- package/dist/pending/types.d.ts +111 -0
- package/dist/pending/types.d.ts.map +1 -0
- package/dist/pending/types.js +60 -0
- package/dist/pending/types.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_focus_after_open.json +22 -0
- package/dist/qa/brain_matrix/fixtures/scenario_a11y_label_unlabeled_button.json +26 -0
- package/dist/qa/brain_matrix/fixtures/scenario_a11y_label_with_shortcut.json +22 -0
- package/dist/qa/brain_matrix/fixtures/scenario_agent_director_consults_workflow_before_dispatch.json +42 -0
- package/dist/qa/brain_matrix/fixtures/scenario_analyst_extracts_then_returns.json +28 -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_coder_consults_nac_spec_before_writing.json +28 -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_default_design_system_override_shadcn.json +45 -0
- package/dist/qa/brain_matrix/fixtures/scenario_default_design_system_use_card_template.json +44 -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_director_delegates_to_analyst.json +26 -0
- package/dist/qa/brain_matrix/fixtures/scenario_director_no_self_delegation.json +20 -0
- package/dist/qa/brain_matrix/fixtures/scenario_director_terminal_done_marker.json +19 -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_default_design_system.json +50 -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_language_sovereignty.json +53 -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_testing_policy.json +55 -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_language_sovereignty_not_conducive_spa_python.json +61 -0
- package/dist/qa/brain_matrix/fixtures/scenario_language_sovereignty_user_picks_python.json +48 -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_destructive_pauses_for_r8.json +42 -0
- package/dist/qa/brain_matrix/fixtures/scenario_mcp_invoke_happy_path_writes_pizarron.json +76 -0
- package/dist/qa/brain_matrix/fixtures/scenario_mcp_invoke_network_timeout_graceful.json +41 -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_hardcoded_color_use_token.json +47 -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_update_cell_picks_right_verb.json +26 -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_scaffolder_destructive_pauses_for_approval.json +23 -0
- package/dist/qa/brain_matrix/fixtures/scenario_sq9b_deploy_checks_git_status.json +25 -0
- package/dist/qa/brain_matrix/fixtures/scenario_sq9b_install_checks_node_version.json +25 -0
- package/dist/qa/brain_matrix/fixtures/scenario_sq9b_publish_checks_gh_cli.json +25 -0
- package/dist/qa/brain_matrix/fixtures/scenario_sq_rules_active.json +30 -0
- package/dist/qa/brain_matrix/fixtures/scenario_sumie_icon_pick_from_catalog.json +56 -0
- package/dist/qa/brain_matrix/fixtures/scenario_tester_uses_shell_exec_only.json +27 -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/semantic_graph/ast_extract.d.ts +15 -0
- package/dist/semantic_graph/ast_extract.d.ts.map +1 -0
- package/dist/semantic_graph/ast_extract.js +162 -0
- package/dist/semantic_graph/ast_extract.js.map +1 -0
- package/dist/semantic_graph/derive.d.ts +36 -0
- package/dist/semantic_graph/derive.d.ts.map +1 -0
- package/dist/semantic_graph/derive.js +285 -0
- package/dist/semantic_graph/derive.js.map +1 -0
- package/dist/semantic_graph/llm_claim.d.ts +21 -0
- package/dist/semantic_graph/llm_claim.d.ts.map +1 -0
- package/dist/semantic_graph/llm_claim.js +164 -0
- package/dist/semantic_graph/llm_claim.js.map +1 -0
- package/dist/semantic_graph/npm_enrich.d.ts +49 -0
- package/dist/semantic_graph/npm_enrich.d.ts.map +1 -0
- package/dist/semantic_graph/npm_enrich.js +173 -0
- package/dist/semantic_graph/npm_enrich.js.map +1 -0
- package/dist/semantic_graph/render.d.ts +28 -0
- package/dist/semantic_graph/render.d.ts.map +1 -0
- package/dist/semantic_graph/render.js +70 -0
- package/dist/semantic_graph/render.js.map +1 -0
- package/dist/semantic_graph/store.d.ts +44 -0
- package/dist/semantic_graph/store.d.ts.map +1 -0
- package/dist/semantic_graph/store.js +360 -0
- package/dist/semantic_graph/store.js.map +1 -0
- package/dist/semantic_graph/types.d.ts +59 -0
- package/dist/semantic_graph/types.d.ts.map +1 -0
- package/dist/semantic_graph/types.js +17 -0
- package/dist/semantic_graph/types.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/test_agent/gemini_user.d.ts +9 -0
- package/dist/test_agent/gemini_user.d.ts.map +1 -0
- package/dist/test_agent/gemini_user.js +58 -0
- package/dist/test_agent/gemini_user.js.map +1 -0
- package/dist/test_agent/profiles.d.ts +23 -0
- package/dist/test_agent/profiles.d.ts.map +1 -0
- package/dist/test_agent/profiles.js +117 -0
- package/dist/test_agent/profiles.js.map +1 -0
- package/dist/test_agent/runner.d.ts +56 -0
- package/dist/test_agent/runner.d.ts.map +1 -0
- package/dist/test_agent/runner.js +134 -0
- package/dist/test_agent/runner.js.map +1 -0
- package/dist/test_agent/target_http.d.ts +22 -0
- package/dist/test_agent/target_http.d.ts.map +1 -0
- package/dist/test_agent/target_http.js +51 -0
- package/dist/test_agent/target_http.js.map +1 -0
- package/dist/test_agent/types.d.ts +117 -0
- package/dist/test_agent/types.d.ts.map +1 -0
- package/dist/test_agent/types.js +22 -0
- package/dist/test_agent/types.js.map +1 -0
- package/dist/vault/store.d.ts.map +1 -1
- package/dist/vault/store.js +14 -1
- package/dist/vault/store.js.map +1 -1
- 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 +152 -26
- 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/wiring/discover.d.ts +14 -0
- package/dist/wiring/discover.d.ts.map +1 -0
- package/dist/wiring/discover.js +383 -0
- package/dist/wiring/discover.js.map +1 -0
- package/dist/wiring/store.d.ts +19 -0
- package/dist/wiring/store.d.ts.map +1 -0
- package/dist/wiring/store.js +182 -0
- package/dist/wiring/store.js.map +1 -0
- package/dist/wiring/types.d.ts +61 -0
- package/dist/wiring/types.d.ts.map +1 -0
- package/dist/wiring/types.js +36 -0
- package/dist/wiring/types.js.map +1 -0
- package/dist/workflow/definitions.d.ts +60 -0
- package/dist/workflow/definitions.d.ts.map +1 -0
- package/dist/workflow/definitions.js +178 -0
- package/dist/workflow/definitions.js.map +1 -0
- package/dist/workflow/definitions_client.d.ts +12 -0
- package/dist/workflow/definitions_client.d.ts.map +1 -0
- package/dist/workflow/definitions_client.js +81 -0
- package/dist/workflow/definitions_client.js.map +1 -0
- package/dist/workflow/evolution.d.ts +10 -0
- package/dist/workflow/evolution.d.ts.map +1 -0
- package/dist/workflow/evolution.js +62 -0
- package/dist/workflow/evolution.js.map +1 -0
- package/dist/workflow/graph.d.ts +59 -0
- package/dist/workflow/graph.d.ts.map +1 -0
- package/dist/workflow/graph.js +137 -0
- package/dist/workflow/graph.js.map +1 -0
- 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/select.d.ts +28 -0
- package/dist/workflow/select.d.ts.map +1 -0
- package/dist/workflow/select.js +38 -0
- package/dist/workflow/select.js.map +1 -0
- package/dist/workflow/state.d.ts +290 -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/dist/workflow/view.d.ts +47 -0
- package/dist/workflow/view.d.ts.map +1 -0
- package/dist/workflow/view.js +103 -0
- package/dist/workflow/view.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 +103 -0
- package/docs/doctrine/default-design-system.md +120 -0
- package/docs/doctrine/explain-results.md +90 -0
- package/docs/doctrine/expo-eas-builds.md +177 -0
- package/docs/doctrine/g-doc.md +46 -0
- package/docs/doctrine/gates.md +21 -0
- package/docs/doctrine/language-sovereignty.md +143 -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/testing-policy.md +211 -0
- package/docs/doctrine/verb-composition.md +68 -0
- package/docs/doctrine/verification-honesty.md +95 -0
- package/docs/doctrine/workflow-kinds.md +52 -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 +19 -3
- package/src/i18n/catalogs/ar.json +134 -10
- package/src/i18n/catalogs/de.json +134 -10
- package/src/i18n/catalogs/en.json +134 -10
- package/src/i18n/catalogs/es.json +134 -10
- package/src/i18n/catalogs/fr.json +134 -10
- package/src/i18n/catalogs/hi.json +134 -10
- package/src/i18n/catalogs/it.json +134 -10
- package/src/i18n/catalogs/ja.json +134 -10
- package/src/i18n/catalogs/pt.json +134 -10
- package/src/i18n/catalogs/zh.json +134 -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/templates/sumi-context.template.md +57 -0
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
# Expo + EAS builds in a pnpm monorepo
|
|
2
|
+
|
|
3
|
+
Fetch when the user says: "el build mobile falla", "como buildeo
|
|
4
|
+
forge mobile", "configuro EAS", "Metro can't resolve X", "Hermes
|
|
5
|
+
crash", "expo install rompe pnpm", "que pongo en eas.json".
|
|
6
|
+
|
|
7
|
+
Hard-won from the 2026-06-09 Forge Mobile setup (~10 failed
|
|
8
|
+
builds, ~$5 USD wasted). These are not in Expo docs. Apply
|
|
9
|
+
all of them before the next build.
|
|
10
|
+
|
|
11
|
+
## 1. NEVER `npx expo install <pkg>` in pnpm workspaces
|
|
12
|
+
|
|
13
|
+
`expo install` shells out to `npm install` which chokes on
|
|
14
|
+
`workspace:*` deps. Use `pnpm add <pkg>` (from the app dir) or
|
|
15
|
+
`pnpm --filter @yujin/forge-mobile add <pkg>` (from repo root).
|
|
16
|
+
|
|
17
|
+
## 2. Match Expo dep versions to the installed SDK
|
|
18
|
+
|
|
19
|
+
`pnpm add expo-splash-screen` grabs LATEST (e.g. 56.x), not
|
|
20
|
+
the version compatible with your SDK. For SDK 51 expo-splash-
|
|
21
|
+
screen must be `~0.27.7`. Wrong version causes
|
|
22
|
+
"Plugin [id: 'expo-module-gradle-plugin'] was not found" in
|
|
23
|
+
Gradle config. Cross-check with `npx expo install --check` or
|
|
24
|
+
the official Expo SDK versions table BEFORE pinning.
|
|
25
|
+
|
|
26
|
+
## 3. `metro.config.js`: NEVER set `disableHierarchicalLookup = true`
|
|
27
|
+
|
|
28
|
+
This is poison with pnpm. Metro then cannot walk into
|
|
29
|
+
`.pnpm/<pkg>@.../node_modules/<dep>` where pnpm stores every
|
|
30
|
+
transitive dep. Every single "Unable to resolve module X"
|
|
31
|
+
EAS error in this project traced back to this line. Keep
|
|
32
|
+
it at default (false).
|
|
33
|
+
|
|
34
|
+
## 4. `extraNodeModules` is FALLBACK only
|
|
35
|
+
|
|
36
|
+
If Metro can resolve a package name from any `node_modules`,
|
|
37
|
+
the `extraNodeModules` alias for that name is IGNORED -- it
|
|
38
|
+
does not override. So an alias for `@nac3/forge-rn` will not
|
|
39
|
+
fire while a real `@nac3/forge-rn` package is also in
|
|
40
|
+
node_modules.
|
|
41
|
+
|
|
42
|
+
## 5. Workspace packages with `main: dist/...` need PRE-BUILD on EAS
|
|
43
|
+
|
|
44
|
+
If a workspace package's `package.json` `main` field points to
|
|
45
|
+
a compiled artifact (e.g. `./dist/index.js`), EAS won't compile
|
|
46
|
+
it for you. Add a pre-install hook that runs the package's build:
|
|
47
|
+
|
|
48
|
+
```json
|
|
49
|
+
"eas-build-pre-install":
|
|
50
|
+
"cd ../.. && npm install -g pnpm@<v> && pnpm install &&
|
|
51
|
+
pnpm --filter <workspace-pkg> build"
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
## 6. No `.js` suffix imports in code Metro bundles
|
|
55
|
+
|
|
56
|
+
`import { X } from './foo.js'` fails when `foo` is `.ts`. Metro
|
|
57
|
+
doesn't auto-swap `.js` -> `.ts`. Drop the suffix in app code.
|
|
58
|
+
(Inside libraries that ship via `tsc` to `dist/`, KEEP the `.js`
|
|
59
|
+
suffix -- ESM requires it; `tsc` emits valid `.js` files there.)
|
|
60
|
+
|
|
61
|
+
## 7. `.easignore` must INCLUDE `pnpm-lock.yaml`
|
|
62
|
+
|
|
63
|
+
An older comment said "EAS uses npm" and excluded the lockfile.
|
|
64
|
+
That was wrong. EAS reads `packageManager` from root `package.json`
|
|
65
|
+
and uses the right manager. The lockfile guarantees reproducible
|
|
66
|
+
installs.
|
|
67
|
+
|
|
68
|
+
## 8. Node version: must match the pnpm engine
|
|
69
|
+
|
|
70
|
+
pnpm@11.3.0 requires Node `>=22.13`. EAS default Node is 20.x.
|
|
71
|
+
Add to every `eas.json` profile: `"node": "22.16.0"`. Otherwise
|
|
72
|
+
the pre-install hook crashes with
|
|
73
|
+
"No such built-in module: node:sqlite" when pnpm runs.
|
|
74
|
+
|
|
75
|
+
## 9. Corepack on EAS images has stale signing keys
|
|
76
|
+
|
|
77
|
+
`corepack prepare pnpm@<v> --activate` fails with
|
|
78
|
+
"Cannot find matching keyid" on EAS Node 20.18.0. Sidestep:
|
|
79
|
+
install pnpm via plain npm in the pre-install hook:
|
|
80
|
+
```
|
|
81
|
+
npm install -g pnpm@<version>
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
## 10. Reproduce the Metro phase locally to save $1.20
|
|
85
|
+
|
|
86
|
+
Before pushing any "fix" for a Metro / RN / pnpm resolver error,
|
|
87
|
+
verify the bundle locally:
|
|
88
|
+
|
|
89
|
+
```powershell
|
|
90
|
+
cd C:\yujin-forge\apps\forge-mobile
|
|
91
|
+
npx expo export:embed --platform android `
|
|
92
|
+
--bundle-output /tmp/out.bundle `
|
|
93
|
+
--assets-dest /tmp/assets `
|
|
94
|
+
--entry-file node_modules/expo-router/entry.js `
|
|
95
|
+
--dev false
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
This runs the same Metro phase EAS does. Success here = success
|
|
99
|
+
on EAS for the bundle step. Failure reproduces the EAS error
|
|
100
|
+
message for free. ALWAYS run this before `eas-cli build`.
|
|
101
|
+
|
|
102
|
+
## 11. Hermes (RN 0.74) lacks TextDecoder as a global
|
|
103
|
+
|
|
104
|
+
Bundle compiles fine, APK installs cleanly, then crashes at first
|
|
105
|
+
launch with:
|
|
106
|
+
```
|
|
107
|
+
ReferenceError: Property 'TextDecoder' doesn't exist
|
|
108
|
+
js engine: hermes
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
Hermes in RN 0.74 doesn't include TextDecoder. Modules in
|
|
112
|
+
`@nac3/forge-rn` (`keys_envelope.ts`, `pairing.ts`) call
|
|
113
|
+
`new TextDecoder()` at module load time, so the crash fires
|
|
114
|
+
during bundle eval before any React renders.
|
|
115
|
+
|
|
116
|
+
Fix: install `text-encoding-polyfill` and import it AS THE
|
|
117
|
+
FIRST LINE of `app/_layout.tsx`:
|
|
118
|
+
```ts
|
|
119
|
+
import 'text-encoding-polyfill';
|
|
120
|
+
import * as React from 'react';
|
|
121
|
+
// ... rest
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
## 12. Hermes + dynamic `await import('uninstalled-pkg')` crashes
|
|
125
|
+
|
|
126
|
+
Pattern:
|
|
127
|
+
```ts
|
|
128
|
+
let Foo: any;
|
|
129
|
+
try { Foo = (await import('react-native-foo')).default; }
|
|
130
|
+
catch { Foo = null; }
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
Looks safe -- try/catch absorbs the missing-dep error, right?
|
|
134
|
+
**Wrong on Hermes.** Metro at bundle time emits a module ID for
|
|
135
|
+
the dynamic import target. At runtime the resolver returns
|
|
136
|
+
`undefined` (the dep was never installed) and Hermes throws
|
|
137
|
+
**outside** the try block with:
|
|
138
|
+
```
|
|
139
|
+
Error: Requiring unknown module "undefined", js engine: hermes
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
Fix: either (a) install the dep for real, or (b) remove the
|
|
143
|
+
dynamic import entirely and rely on the fallback. Don't try
|
|
144
|
+
to make `await import` "optional" -- in RN/Hermes the try/catch
|
|
145
|
+
doesn't help.
|
|
146
|
+
|
|
147
|
+
We hit this with `react-native-zeroconf` in
|
|
148
|
+
`apps/forge-mobile/components/lan_adapter.ts` (z.190): swapped
|
|
149
|
+
to the `pollingFallback` unconditionally until zeroconf is
|
|
150
|
+
adopted as a real dep.
|
|
151
|
+
|
|
152
|
+
## 13. Working setup reference (Forge Mobile)
|
|
153
|
+
|
|
154
|
+
- Owner / Expo username: `pkuschniroff`
|
|
155
|
+
- EAS project ID: `76fbb53e-701b-4630-9f08-179ebdafdc6f`
|
|
156
|
+
- Android keystore: "Build Credentials I4ycEkDKiE (default)",
|
|
157
|
+
generated 2026-06-08 on EAS Cloud, reused across builds.
|
|
158
|
+
- Working `eas-build-pre-install`:
|
|
159
|
+
```
|
|
160
|
+
cd ../.. && npm install -g pnpm@11.3.0 && pnpm install &&
|
|
161
|
+
pnpm --filter @nac3/forge-rn build
|
|
162
|
+
```
|
|
163
|
+
- Profiles in eas.json: `internal` (APK), `preview` (APK),
|
|
164
|
+
`production` (APK), `production-store` (AAB for Play).
|
|
165
|
+
|
|
166
|
+
## 14. Diagnostic flow for app-side crashes
|
|
167
|
+
|
|
168
|
+
When a release-built APK installs but crashes immediately:
|
|
169
|
+
1. Sometimes Android shows "App has stopped" without details.
|
|
170
|
+
2. On the phone: Settings -> About phone -> tap Build number 7x
|
|
171
|
+
to enable Developer mode -> open it -> "Take bug report".
|
|
172
|
+
3. Generates a ~100-150 MB .txt file in Downloads.
|
|
173
|
+
4. Grep that file for the app package name (`app.yujin.forge.mobile`)
|
|
174
|
+
to find the `AndroidRuntime: FATAL EXCEPTION` block with the
|
|
175
|
+
Hermes JS stack -- that's the actual JS error.
|
|
176
|
+
|
|
177
|
+
No need for ADB / USB / Android Studio for first-pass triage.
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# Generation doctrine -- adopter app scaffolding rules
|
|
2
|
+
|
|
3
|
+
When you scaffold a new app (Phase V step 14) or wire backend
|
|
4
|
+
capabilities to the frontend, follow this hierarchy. It is the same
|
|
5
|
+
dogfooding pattern Forge itself runs on internally.
|
|
6
|
+
|
|
7
|
+
RULE G-DOC-1 -- NAC3 manifest is the default catalogue.
|
|
8
|
+
Every backend tool the adopter app exposes (filesystem, network,
|
|
9
|
+
external API, database, queue, scheduler, payment, email) lives
|
|
10
|
+
as a verb in the app NAC3 manifest. Do NOT scaffold a flat REST
|
|
11
|
+
router or a stand-alone MCP server as the FIRST surface; start
|
|
12
|
+
with the manifest. Each verb declares: id (yujin.<scenario>.<verb>),
|
|
13
|
+
role, action, schema, policy (unrestricted | confirm |
|
|
14
|
+
approval-required | destructive | byok-required | scope-gated),
|
|
15
|
+
side_effects ([none | dom | filesystem | network | process |
|
|
16
|
+
external-api | git ...]).
|
|
17
|
+
|
|
18
|
+
RULE G-DOC-2 -- MCP is opt-in, never the default.
|
|
19
|
+
Do NOT scaffold an MCP server unless the user explicitly asks for
|
|
20
|
+
it (keywords: "MCP server", "expose via MCP", "Claude Desktop
|
|
21
|
+
integration", "third-party agent tools"). When the user does ask,
|
|
22
|
+
scaffold MCP BUT add a thin bridge layer that re-exports each MCP
|
|
23
|
+
tool as a NAC3 verb in the app manifest with `mcp_bridge: { server,
|
|
24
|
+
tool }`. The app frontend still sees ONE catalogue (NAC3).
|
|
25
|
+
External agents that speak MCP get their flat surface; internal
|
|
26
|
+
agents and the chat frontend stay manifest-only.
|
|
27
|
+
|
|
28
|
+
RULE G-DOC-3 -- Templates carry the example.
|
|
29
|
+
Templates Forge writes include at least one backend verb (e.g.
|
|
30
|
+
yujin.users.create or yujin.invoices.send) wired through the
|
|
31
|
+
manifest as a working sample. NOT as a flat POST /api/users
|
|
32
|
+
endpoint or an MCP tool definition.
|
|
33
|
+
|
|
34
|
+
RULE G-DOC-4 -- Why this is non-negotiable.
|
|
35
|
+
Forge alpha.41 demonstrated that an LLM operating against a flat
|
|
36
|
+
tool catalogue (Anthropic native tools or MCP) shows three failure
|
|
37
|
+
modes that disappear under NAC3 manifest: hallucination (LLM
|
|
38
|
+
claims action without an invoke), silent-fail (LLM ignores
|
|
39
|
+
is_error=true), and model-size lock-in (catalog requires Opus;
|
|
40
|
+
manifest works with Haiku/Flash). Adopter apps inherit these wins
|
|
41
|
+
automatically when they build NAC3-first.
|
|
42
|
+
|
|
43
|
+
If the user pushes back ("I just want a REST endpoint" / "no NAC3
|
|
44
|
+
please, plain Express"), respect it BUT first explain the three
|
|
45
|
+
trade-offs above and offer the manifest as the default with a
|
|
46
|
+
one-line override. Decision logs go in PRD.
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# Unbreakable workflow gates
|
|
2
|
+
|
|
3
|
+
Hard gates: you REFUSE to advance until the condition is met.
|
|
4
|
+
|
|
5
|
+
G1: Phase I done without complexity tier decided
|
|
6
|
+
G2: No minimum brain (LLM) key in vault
|
|
7
|
+
G3: Phase III started without intent recorded
|
|
8
|
+
G4: Phase IV approached without block-plan OK
|
|
9
|
+
G5: Phase V started without explicit OK on the 3 spec docs
|
|
10
|
+
G6: Phase V block declared complete with red tests
|
|
11
|
+
G7: Phase VI deploy attempted without all required creds
|
|
12
|
+
G8: Launch announced without green smoke check post-deploy
|
|
13
|
+
|
|
14
|
+
Soft gates: alert the user, propose alternative, do NOT block:
|
|
15
|
+
|
|
16
|
+
GS1: Simple tier asking for full RFP -> do it but flag overkill
|
|
17
|
+
GS2: Full tier asking to skip arch -> refuse with justification
|
|
18
|
+
GS3: No compliance picked but "produccion B2B" -> propose
|
|
19
|
+
defaults
|
|
20
|
+
GS4: Low cost budget but high volumetry -> propose
|
|
21
|
+
optimisations
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
# Language sovereignty -- the user picks, the Director suggests
|
|
2
|
+
|
|
3
|
+
Fetch when the user discusses programming language choice in
|
|
4
|
+
architecture / RFP / Arch / Design phases (workflow phases II
|
|
5
|
+
and III), OR when an Analyst extracts a spec that mentions a
|
|
6
|
+
language explicitly (signals: "in node", "with django", "react
|
|
7
|
+
native", "pure rust", "java backend", "swift app").
|
|
8
|
+
|
|
9
|
+
## Rule (single source of truth)
|
|
10
|
+
|
|
11
|
+
The user picks the programming language for each component. The
|
|
12
|
+
Director SUGGESTS during architecture (phase III specs / RFP)
|
|
13
|
+
but NEVER imposes. If the user insists on a language different
|
|
14
|
+
from the one the Director suggested, the Director performs a
|
|
15
|
+
SWITCH and persists the choice in `workflow.language_choices`
|
|
16
|
+
via `yujin.workflow.set`.
|
|
17
|
+
|
|
18
|
+
The ONLY exception is when the language the user requested is
|
|
19
|
+
not conducive to the component being developed (technical
|
|
20
|
+
incompatibility documentable from the table below). In that
|
|
21
|
+
case the Director replies with the exact row from this doctrine
|
|
22
|
+
+ the valid alternatives + waits for the next user decision. No
|
|
23
|
+
"I deny because I dislike", only "I deny because <component-kind>
|
|
24
|
+
cannot run on <language> because <technical reason>".
|
|
25
|
+
|
|
26
|
+
## Suitability table
|
|
27
|
+
|
|
28
|
+
The table is the single source of truth. The Director MUST read
|
|
29
|
+
from it and MUST NOT add opinions on top.
|
|
30
|
+
|
|
31
|
+
| Component kind | Conducive languages | NOT conducive (with reason) |
|
|
32
|
+
|-------------------------|-----------------------------------------------------------------|---------------------------------------------------------------------------------------------------|
|
|
33
|
+
| spa-web-frontend | ts, js, wasm-target (rust, go, c#), htmx-fragments | python, java, php, ruby (server-side runtimes, not a browser runtime) |
|
|
34
|
+
| mobile-native | swift (ios), kotlin (android), dart (flutter), ts+rn (expo) | python, php, c# (no fluid native mobile runtime); html-only (not native) |
|
|
35
|
+
| mobile-cross-platform | dart (flutter), ts+rn (expo), kotlin-multiplatform | jvm-only languages (not a mobile target), php, perl |
|
|
36
|
+
| backend-api | ts, js, python, go, rust, java, kotlin, c#, php, ruby, elixir | bash, asm (do not scale to productive HTTP servers); assembler (no http stack) |
|
|
37
|
+
| backend-realtime | go, rust, elixir, ts (node), kotlin, c# (signalr) | python (gil bottleneck for sustained ws), php (request-response model) |
|
|
38
|
+
| kernel-driver | c, rust, asm | ts, python, java, c# (managed runtimes do not touch metal) |
|
|
39
|
+
| embedded-firmware | c, rust, c++, micropython (mid-range), zig | java, ts, php (heavyweight runtimes for typical mcus) |
|
|
40
|
+
| data-pipeline | python, scala, java, go, sql, kotlin | js (poor batch ecosystem), php (no parallel data tooling) |
|
|
41
|
+
| ml-training | python, julia, r, c++ (kernels) | ts, php, ruby (no mature ml ecosystem comparable) |
|
|
42
|
+
| ml-inference | python, ts, c++, rust, go (onnx) | php, perl (no inference runtime) |
|
|
43
|
+
| db-stored-proc | sql, pl/pgsql, t-sql, pl/sql (oracle) | any general-purpose language (not the db engine model) |
|
|
44
|
+
| db-migration | sql + migration runner (any: rails, alembic, prisma, flyway) | -- |
|
|
45
|
+
| cli-tool | go, rust, ts (node), python, c (oneshot) | -- (almost any general-purpose lang works) |
|
|
46
|
+
| static-analysis-plugin | language of the target compiler | any unrelated language (no compiler integration point) |
|
|
47
|
+
| infra-as-code | terraform/hcl, pulumi (ts/python/go), cloudformation/yaml, cdk | bash one-offs (do not represent desired state) |
|
|
48
|
+
| iot-edge | rust, c, go, python (rpi-class), elixir (nerves) | jvm-only (mostly too heavy), php |
|
|
49
|
+
| build-system | go, rust, ts (node), make, bash | -- (almost any works; nuance is in ergonomics, not correctness) |
|
|
50
|
+
| docs-site | markdown + static site gen (any), mdx (react) | dynamic backends (overkill; not conducive to content-as-code) |
|
|
51
|
+
|
|
52
|
+
## Algorithm (Director executes this)
|
|
53
|
+
|
|
54
|
+
1. User input: "quiero X en LANG".
|
|
55
|
+
2. Director: `yujin.doctrine.discover({slugs:["language-sovereignty"]})`.
|
|
56
|
+
3. Director: lookup the row for `X` (component-kind). If
|
|
57
|
+
ambiguous, ASK the user one clarifying question (which kind
|
|
58
|
+
of component is X?) before proceeding. Do NOT guess.
|
|
59
|
+
4. If `LANG` is in `row.conducive`:
|
|
60
|
+
- switch: set `workflow.language_choices[X] = { lang: LANG,
|
|
61
|
+
decided_at: NOW, decided_by: "user" }` via
|
|
62
|
+
`yujin.workflow.set`.
|
|
63
|
+
- Reply briefly: "Listo, X en LANG. Sigo con el plan."
|
|
64
|
+
- Do NOT discuss the choice further unless the user asks.
|
|
65
|
+
5. If `LANG` is NOT in `row.conducive`:
|
|
66
|
+
- Reply with the exact row from this doctrine:
|
|
67
|
+
"LANG no es conducente para X porque <row.NOT_conducive_reason>.
|
|
68
|
+
Las opciones validas son: <row.conducive>. Cual preferis?"
|
|
69
|
+
- Do NOT switch. Wait for the next user decision.
|
|
70
|
+
6. If the user counter-argues with NEW technical information
|
|
71
|
+
("hay un transpiler de LANG a JS / WASM target / etc"):
|
|
72
|
+
- Director re-evaluates. If the new info is verifiable +
|
|
73
|
+
consistent with the table semantics (e.g. WASM target for
|
|
74
|
+
the kind), update the conducive set in memory for THIS
|
|
75
|
+
turn + switch.
|
|
76
|
+
- If the info is opinable / not verifiable, hold the negative
|
|
77
|
+
+ explain the gap (mismatched runtime model, no compiler
|
|
78
|
+
integration, etc).
|
|
79
|
+
|
|
80
|
+
## Defaults when the user has NOT expressed preference
|
|
81
|
+
|
|
82
|
+
When the user has not yet declared a language for a component
|
|
83
|
+
slot, the Director may suggest a default. Defaults are NOT
|
|
84
|
+
prescriptions; they exist so the conversation can move forward
|
|
85
|
+
without a 12-question survey.
|
|
86
|
+
|
|
87
|
+
| Slot | Default suggestion |
|
|
88
|
+
|---------------------|------------------------------|
|
|
89
|
+
| frontend | ts (react / typescript) |
|
|
90
|
+
| mobile | ts (react native + expo) |
|
|
91
|
+
| backend | ts (node) for crud-heavy; go for perf-sensitive; python for ml-heavy |
|
|
92
|
+
| data-pipeline | python |
|
|
93
|
+
| infra | terraform + hcl |
|
|
94
|
+
| db | postgres + sql migrations |
|
|
95
|
+
| ml | python |
|
|
96
|
+
|
|
97
|
+
The Director surfaces the default as a SUGGESTION ("propongo TS
|
|
98
|
+
para frontend y Python para el pipeline; te sirve?") and
|
|
99
|
+
proceeds if the user accepts or stays silent on it (silence is
|
|
100
|
+
acceptance of the default). The persisted `decided_by` field
|
|
101
|
+
records `"director_suggested"` so a future audit can distinguish
|
|
102
|
+
explicit choices from accepted defaults.
|
|
103
|
+
|
|
104
|
+
## Where the decision lives
|
|
105
|
+
|
|
106
|
+
```
|
|
107
|
+
yujin.forge.json -> workflow.language_choices: {
|
|
108
|
+
frontend: { lang: "ts", decided_at: "...", decided_by: "user" },
|
|
109
|
+
backend: { lang: "go", decided_at: "...", decided_by: "user" },
|
|
110
|
+
mobile: { lang: "dart", decided_at: "...", decided_by: "director_suggested" },
|
|
111
|
+
data_pipeline: { lang: "python", decided_at: "...", decided_by: "user" },
|
|
112
|
+
infra: { lang: "tf+hcl", decided_at: "...", decided_by: "director_suggested" }
|
|
113
|
+
}
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
Read via `yujin.workflow.state`. Write via `yujin.workflow.set
|
|
117
|
+
{path: "language_choices.<slot>", value: {...}}`.
|
|
118
|
+
|
|
119
|
+
## What this doctrine does NOT cover
|
|
120
|
+
|
|
121
|
+
- Frameworks within a language (vue vs react vs svelte for ts
|
|
122
|
+
frontend). That is a separate user decision the Director
|
|
123
|
+
surfaces but does not constrain via this doctrine.
|
|
124
|
+
- Library choices (express vs fastify vs hono for ts backend).
|
|
125
|
+
Same: user decides.
|
|
126
|
+
- Build tooling (vite vs webpack vs esbuild). Same.
|
|
127
|
+
|
|
128
|
+
## What the WORKERS (Analyst, Coder, Tester, Scaffolder) read from this doctrine
|
|
129
|
+
|
|
130
|
+
- **Analyst**: when extracting a spec, capture explicit language
|
|
131
|
+
signals into `plan.language_signals[]`. The Director processes
|
|
132
|
+
them via the algorithm above.
|
|
133
|
+
- **Coder**: read `workflow.language_choices` before proposing
|
|
134
|
+
files. Match the chosen language; do NOT default to TS if the
|
|
135
|
+
table chose Go.
|
|
136
|
+
- **Tester**: detect the test framework FROM the chosen language
|
|
137
|
+
+ project manifest (`package.json` -> Vitest/Jest, `pyproject.toml`
|
|
138
|
+
-> pytest, `go.mod` -> go test, `Cargo.toml` -> cargo test,
|
|
139
|
+
`composer.json` -> PHPUnit). Do NOT prompt the user for the
|
|
140
|
+
framework when the manifest already says.
|
|
141
|
+
- **Scaffolder**: respect file extensions + import statements of
|
|
142
|
+
the chosen language stack. Do not write `.ts` files into a Go
|
|
143
|
+
module.
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
# Lessons workflow -- promote, recall, revoke
|
|
2
|
+
|
|
3
|
+
Fetch when the user asks: "como guardo esto?", "lo recordas para
|
|
4
|
+
la proxima?", "promove esta regla", "quita esta leccion", "que
|
|
5
|
+
lessons tengo activas?".
|
|
6
|
+
|
|
7
|
+
## What a lesson is
|
|
8
|
+
|
|
9
|
+
A user-promoted rule that the system prompt picks up on every
|
|
10
|
+
subsequent turn. Three categories:
|
|
11
|
+
|
|
12
|
+
- **user** -- facts about the user (preferences, conventions).
|
|
13
|
+
- **feedback** -- "always do X / never do Y" corrections.
|
|
14
|
+
- **reference** -- pointers to external resources.
|
|
15
|
+
|
|
16
|
+
The brain MAY recommend promoting a lesson when:
|
|
17
|
+
- The user gave a correction the brain wants to honour next time.
|
|
18
|
+
- The user validated a non-obvious approach + said "keep doing it".
|
|
19
|
+
|
|
20
|
+
## Verbs
|
|
21
|
+
|
|
22
|
+
- `yujin.lessons.promote` -- elevate a turn observation into a
|
|
23
|
+
durable lesson. Args: `{slug, category, body}`.
|
|
24
|
+
- `yujin.lessons.list` -- enumerate active lessons + their slugs.
|
|
25
|
+
- `yujin.lessons.revoke` -- soft-deactivate by slug.
|
|
26
|
+
- `yujin.doctrine.discover` -- fetch the long-form doctrine
|
|
27
|
+
(lessons are short; doctrines are long-form reference).
|
|
28
|
+
|
|
29
|
+
## Lifecycle
|
|
30
|
+
|
|
31
|
+
1. User says "from now on always do X" or "stop doing Y".
|
|
32
|
+
2. Brain proposes the lesson body + slug + category, asks for
|
|
33
|
+
confirmation.
|
|
34
|
+
3. User confirms -> brain invokes `yujin.lessons.promote`.
|
|
35
|
+
4. On every subsequent turn the system prompt rebuilds with the
|
|
36
|
+
active lesson list (HITO 6.5 LRU cache + 6.6 migration).
|
|
37
|
+
5. User says "forget that" -> brain proposes revocation slug,
|
|
38
|
+
asks for confirmation, invokes `yujin.lessons.revoke`.
|
|
39
|
+
|
|
40
|
+
## Slug convention
|
|
41
|
+
|
|
42
|
+
`{category}_{kebab-case-slug}.md`. Examples:
|
|
43
|
+
- `feedback_no_emojis.md`
|
|
44
|
+
- `user_prefers_spanish_replies.md`
|
|
45
|
+
- `reference_pablo_income_plan.md`
|
|
46
|
+
|
|
47
|
+
The slug is shown in error UX so the user can edit lessons by
|
|
48
|
+
hand if needed (HITO 6.4 CLI).
|
|
49
|
+
|
|
50
|
+
## When NOT to promote
|
|
51
|
+
|
|
52
|
+
- One-off task instructions ("for this PR add a comment to X").
|
|
53
|
+
- Facts already in the doctrine catalogue.
|
|
54
|
+
- Personal user data the user didn't explicitly say to remember
|
|
55
|
+
(privacy-by-default).
|
|
56
|
+
|
|
57
|
+
## When NOT to recall
|
|
58
|
+
|
|
59
|
+
- The user said `forget what I told you` / `start fresh` / `ignore
|
|
60
|
+
lessons`. Honour the request without protest.
|
|
61
|
+
- The recall conflicts with the current user request. Surface the
|
|
62
|
+
conflict instead of silently overriding.
|
|
63
|
+
|
|
64
|
+
## Storage
|
|
65
|
+
|
|
66
|
+
`~/.yujin-forge/lessons/{slug}.md` -- one markdown file per
|
|
67
|
+
lesson with YAML frontmatter (category, body, created_at,
|
|
68
|
+
last_used_at). LRU eviction at 200 lessons (HITO 6.5).
|
|
@@ -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).
|