@aria_asi/cli 0.2.39 → 0.2.41
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/bin/aria.js +236 -34
- package/dist/aria-connector/src/action-ledger-core.d.ts +387 -0
- package/dist/aria-connector/src/action-ledger-core.d.ts.map +1 -0
- package/dist/aria-connector/src/action-ledger-core.js +638 -0
- package/dist/aria-connector/src/action-ledger-core.js.map +1 -0
- package/dist/aria-connector/src/chat.d.ts.map +1 -1
- package/dist/aria-connector/src/chat.js +5 -6
- package/dist/aria-connector/src/chat.js.map +1 -1
- package/dist/aria-connector/src/codebase-scanner.d.ts +1 -1
- package/dist/aria-connector/src/codebase-scanner.d.ts.map +1 -1
- package/dist/aria-connector/src/connectors/claude-code.d.ts +1 -0
- package/dist/aria-connector/src/connectors/claude-code.d.ts.map +1 -1
- package/dist/aria-connector/src/connectors/claude-code.js +152 -14
- package/dist/aria-connector/src/connectors/claude-code.js.map +1 -1
- package/dist/aria-connector/src/connectors/codebase-awareness.d.ts +10 -0
- package/dist/aria-connector/src/connectors/codebase-awareness.d.ts.map +1 -1
- package/dist/aria-connector/src/connectors/codebase-awareness.js +276 -27
- package/dist/aria-connector/src/connectors/codebase-awareness.js.map +1 -1
- package/dist/aria-connector/src/connectors/codex.d.ts +3 -1
- package/dist/aria-connector/src/connectors/codex.d.ts.map +1 -1
- package/dist/aria-connector/src/connectors/codex.js +1271 -40
- package/dist/aria-connector/src/connectors/codex.js.map +1 -1
- package/dist/aria-connector/src/connectors/cursor.d.ts.map +1 -1
- package/dist/aria-connector/src/connectors/cursor.js +7 -0
- package/dist/aria-connector/src/connectors/cursor.js.map +1 -1
- package/dist/aria-connector/src/connectors/governed-adapter.d.ts +30 -0
- package/dist/aria-connector/src/connectors/governed-adapter.d.ts.map +1 -0
- package/dist/aria-connector/src/connectors/governed-adapter.js +132 -0
- package/dist/aria-connector/src/connectors/governed-adapter.js.map +1 -0
- package/dist/aria-connector/src/connectors/opencode.d.ts +3 -1
- package/dist/aria-connector/src/connectors/opencode.d.ts.map +1 -1
- package/dist/aria-connector/src/connectors/opencode.js +18 -2
- package/dist/aria-connector/src/connectors/opencode.js.map +1 -1
- package/dist/aria-connector/src/connectors/repo-guard.d.ts.map +1 -1
- package/dist/aria-connector/src/connectors/repo-guard.js +25 -14
- package/dist/aria-connector/src/connectors/repo-guard.js.map +1 -1
- package/dist/aria-connector/src/connectors/runtime.d.ts.map +1 -1
- package/dist/aria-connector/src/connectors/runtime.js +92 -2
- package/dist/aria-connector/src/connectors/runtime.js.map +1 -1
- package/dist/aria-connector/src/connectors/shell.d.ts.map +1 -1
- package/dist/aria-connector/src/connectors/shell.js +123 -7
- package/dist/aria-connector/src/connectors/shell.js.map +1 -1
- package/dist/aria-connector/src/cross-cli-hive-binding.d.ts +63 -0
- package/dist/aria-connector/src/cross-cli-hive-binding.d.ts.map +1 -0
- package/dist/aria-connector/src/cross-cli-hive-binding.js +205 -0
- package/dist/aria-connector/src/cross-cli-hive-binding.js.map +1 -0
- package/dist/aria-connector/src/garden-control-plane.d.ts +6 -1
- package/dist/aria-connector/src/garden-control-plane.d.ts.map +1 -1
- package/dist/aria-connector/src/garden-control-plane.js +8 -2
- package/dist/aria-connector/src/garden-control-plane.js.map +1 -1
- package/dist/aria-connector/src/governed-surface-runner.d.ts +189 -0
- package/dist/aria-connector/src/governed-surface-runner.d.ts.map +1 -0
- package/dist/aria-connector/src/governed-surface-runner.js +1022 -0
- package/dist/aria-connector/src/governed-surface-runner.js.map +1 -0
- package/dist/aria-connector/src/index.d.ts +10 -1
- package/dist/aria-connector/src/index.d.ts.map +1 -1
- package/dist/aria-connector/src/index.js +5 -0
- package/dist/aria-connector/src/index.js.map +1 -1
- package/dist/aria-connector/src/task-runner.d.ts +3 -0
- package/dist/aria-connector/src/task-runner.d.ts.map +1 -0
- package/dist/aria-connector/src/task-runner.js +3526 -0
- package/dist/aria-connector/src/task-runner.js.map +1 -0
- package/dist/aria-web/src/lib/codebase-scanner.d.ts +21 -2
- package/dist/aria-web/src/lib/codebase-scanner.d.ts.map +1 -1
- package/dist/aria-web/src/lib/codebase-scanner.js +59 -14
- package/dist/aria-web/src/lib/codebase-scanner.js.map +1 -1
- package/dist/assets/hooks/README.md +58 -0
- package/dist/assets/hooks/aria-agent-handoff.mjs +147 -2
- package/dist/assets/hooks/aria-agent-ledger-merge.mjs +31 -7
- package/dist/assets/hooks/aria-architect-fallback.mjs +10 -2
- package/dist/assets/hooks/aria-claim-evidence-stop-gate.mjs +240 -0
- package/dist/assets/hooks/aria-cognition-substrate-binding.mjs +84 -10
- package/dist/assets/hooks/aria-first-class-coach.mjs +305 -10
- package/dist/assets/hooks/aria-harness-via-sdk.mjs +93 -16
- package/dist/assets/hooks/aria-import-resolution-gate.mjs +106 -20
- package/dist/assets/hooks/aria-outcome-record.mjs +56 -20
- package/dist/assets/hooks/aria-pre-emit-autoload.mjs +1809 -0
- package/dist/assets/hooks/aria-pre-emit-autoload.mjs.before-orchestration-redesign +1400 -0
- package/dist/assets/hooks/aria-pre-emit-dryrun.mjs +22 -3
- package/dist/assets/hooks/aria-pre-text-gate.mjs +11 -2
- package/dist/assets/hooks/aria-pre-tool-gate.mjs +516 -92
- package/dist/assets/hooks/aria-pre-tool-use.mjs +70 -6
- package/dist/assets/hooks/aria-preprompt-consult.mjs +23 -4
- package/dist/assets/hooks/aria-repo-doctrine-gate.mjs +29 -3
- package/dist/assets/hooks/aria-stop-gate.mjs +585 -76
- package/dist/assets/hooks/aria-trigger-autolearn.mjs +17 -3
- package/dist/assets/hooks/aria-universal-turn-packet.mjs +1165 -0
- package/dist/assets/hooks/aria-userprompt-abandon-detect.mjs +9 -1
- package/dist/assets/hooks/canonical-settings-block.json +172 -0
- package/dist/assets/hooks/codex-native/aria-harness-ticker-sidecar.mjs +92 -0
- package/dist/assets/hooks/codex-native/aria-hive-wal-consumer.mjs +86 -0
- package/dist/assets/hooks/codex-native/aria-live-ticker.mjs +38 -0
- package/dist/assets/hooks/codex-native/aria-post-tool-use.mjs +236 -0
- package/dist/assets/hooks/codex-native/aria-pre-tool-use.mjs +362 -0
- package/dist/assets/hooks/codex-native/aria-stop.mjs +691 -0
- package/dist/assets/hooks/codex-native/aria-userprompt-submit.mjs +623 -0
- package/dist/assets/hooks/codex-native/atlas-session-context.mjs +121 -0
- package/dist/assets/hooks/codex-native/lib/evaluate-with-kernel.mjs +257 -0
- package/dist/assets/hooks/codex-native/lib/hive-wal-consumer.mjs +452 -0
- package/dist/assets/hooks/codex-native/lib/kernel/deterministic-cognitive-kernel.mjs +914 -0
- package/dist/assets/hooks/codex-native/lib/project-boundary-cognition.mjs +143 -0
- package/dist/assets/hooks/codex-native/lib/runtime-client.mjs +3567 -0
- package/dist/assets/hooks/codex-native/lib/task-project-ledger.mjs +294 -0
- package/dist/assets/hooks/doctrine_trigger_map.json +236 -25
- package/dist/assets/hooks/doctrine_trigger_map.schema.json +46 -0
- package/dist/assets/hooks/install.sh +84 -0
- package/dist/assets/hooks/lib/action-ledger-core.mjs +269 -0
- package/dist/assets/hooks/lib/aria-gate-ledger.mjs +143 -0
- package/dist/assets/hooks/lib/ast-stub-shape-detector.mjs +107 -0
- package/dist/assets/hooks/lib/atlas-dossier-client.mjs +151 -0
- package/dist/assets/hooks/lib/atlas-orchestrator-postwire.mjs +221 -0
- package/dist/assets/hooks/lib/canonical-lenses.mjs +83 -6
- package/dist/assets/hooks/lib/coach-intent-classifier.mjs +248 -0
- package/dist/assets/hooks/lib/cognitive-block-parser.mjs +111 -0
- package/dist/assets/hooks/lib/doctrine-trigger-map-loader.mjs +137 -0
- package/dist/assets/hooks/lib/domain-output-quality.mjs +132 -3
- package/dist/assets/hooks/lib/empty-catch-scanner.mjs +91 -0
- package/dist/assets/hooks/lib/end-phase-qa-autofire.mjs +426 -0
- package/dist/assets/hooks/lib/evaluate-with-kernel.mjs +133 -0
- package/dist/assets/hooks/lib/first-class-coach.mjs +454 -19
- package/dist/assets/hooks/lib/gate-audit.mjs +12 -2
- package/dist/assets/hooks/lib/gate-loop-state.mjs +11 -2
- package/dist/assets/hooks/lib/goal-contract-quality.mjs +302 -0
- package/dist/assets/hooks/lib/hook-message-window.mjs +101 -9
- package/dist/assets/hooks/lib/invocation-required-verifier.mjs +184 -0
- package/dist/assets/hooks/lib/kernel/deterministic-cognitive-kernel.mjs +906 -0
- package/dist/assets/hooks/lib/obligation-ledger.mjs +147 -0
- package/dist/assets/hooks/lib/orchestration-manifest-extract.mjs +217 -0
- package/dist/assets/hooks/lib/owner-authorizations.mjs +269 -0
- package/dist/assets/hooks/lib/probe-discipline-scanner.mjs +142 -0
- package/dist/assets/hooks/lib/project-boundary-cognition.mjs +143 -0
- package/dist/assets/hooks/lib/recovery-context.mjs +151 -0
- package/dist/assets/hooks/lib/recovery-template-loader.mjs +154 -0
- package/dist/assets/hooks/lib/self-doctrine-check.mjs +321 -0
- package/dist/assets/hooks/lib/sensitive-shape-detector.mjs +64 -0
- package/dist/assets/hooks/lib/skill-autoload-gate-impl.mjs +226 -1
- package/dist/assets/hooks/lib/stop-hook-protocol.mjs +166 -0
- package/dist/assets/hooks/lib/surface-caught.mjs +94 -0
- package/dist/assets/hooks/recovery-templates/force-reauthor.md +67 -0
- package/dist/assets/hooks/recovery-templates/handoff-recovery.md +25 -0
- package/dist/assets/hooks/scripts/check-hard-risk-prefix.mjs +99 -0
- package/dist/assets/hooks/skills/aria-conversational-doctrine-discipline/SKILL.md +101 -0
- package/dist/assets/hooks/test-aria-preturn-memory-gate.mjs +2 -2
- package/dist/assets/hooks/test-tier-lens-labeling.mjs +14 -3
- package/dist/assets/opencode-plugins/harness-context/index.js +39 -6
- package/dist/assets/opencode-plugins/harness-context/task-project-ledger.mjs +5 -1
- package/dist/assets/opencode-plugins/harness-gate/index.js +36 -0
- package/dist/assets/opencode-plugins/harness-gate/lib/atlas-dossier-client.js +1 -0
- package/dist/assets/opencode-plugins/harness-gate/lib/recovery-grants.js +79 -0
- package/dist/assets/opencode-plugins/harness-outcome/index.js +12 -0
- package/dist/assets/opencode-plugins/harness-stop/index.js +97 -2
- package/dist/assets/opencode-plugins/harness-stop/lib/atlas-dossier-client.js +1 -0
- package/dist/assets/opencode-plugins/harness-stop/lib/domain-output-quality.js +15 -2
- package/dist/assets/opencode-plugins/lib/coach.js +148 -0
- package/dist/runtime/coach-kernel.mjs +144 -7
- package/dist/runtime/codex-bridge.mjs +254 -8
- package/dist/runtime/discipline/doctrine_trigger_map.json +236 -25
- package/dist/runtime/discipline/skills/aria-cognition/34-frameworks-unified/SKILL.md +42 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-aristotle-cognitives/SKILL.md +128 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-aristotle-intra-phase/SKILL.md +99 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-aristotle-post-phase/SKILL.md +118 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-aristotle-pre-phase/SKILL.md +117 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-axioms-first-principles/SKILL.md +202 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-axioms-first-principles/agents/openai.yaml +4 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-axioms-first-principles/references/source-map.md +130 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-backend-architect/SKILL.md +124 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-backend-architect/references/backend-cookbook.md +417 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-business-audit/SKILL.md +133 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-business-audit/references/audit-cookbook.md +247 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-business-frame/SKILL.md +138 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-business-frame/references/business-cookbook.md +154 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-chat/SKILL.md +84 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-chat/scripts/aria-chat.sh +57 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-cognition-autofire/SKILL.md +137 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-cognition-batch/SKILL.md +264 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-decision-mizan/SKILL.md +136 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-decision-mizan/references/decision-frameworks.md +287 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-first-class-operating-contract/SKILL.md +104 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-frontend-architect/SKILL.md +123 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-frontend-architect/references/frontend-cookbook.md +358 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-fullstack-orchestrator/SKILL.md +127 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-fullstack-orchestrator/references/fullstack-cookbook.md +383 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-gtm-architect/SKILL.md +126 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-gtm-architect/references/gtm-cookbook.md +235 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-harness-deploy/SKILL.md +145 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-harness-no-stripping/SKILL.md +135 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-harness-onboarding/SKILL.md +130 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-harness-output-discipline/SKILL.md +120 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-harness-substrate-binding/SKILL.md +139 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-http-harness-client/SKILL.md +85 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-http-harness-client/scripts/smoke.mjs +47 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-k8s-deploy/SKILL.md +174 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-k8s-deploy/agents/openai.yaml +3 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-ladduniframe/SKILL.md +60 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-ledger-fleet-execution/SKILL.md +126 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-live-ops/SKILL.md +54 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-mac-ssh-ops/SKILL.md +100 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-memory-index/SKILL.md +42 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-noor-cognitives/SKILL.md +120 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-ops/SKILL.md +60 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-ops/references/live-endpoints.md +59 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-quality-audit/SKILL.md +133 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-readable-output/SKILL.md +239 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-readable-output/references/layout-cookbook.md +366 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-reasoning/SKILL.md +67 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-reasoning/references/core-principles.md +42 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-repo-audit/SKILL.md +135 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-repo-audit/references/repo-audit-cookbook.md +375 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-research-orchestrator/SKILL.md +138 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-research-orchestrator/references/research-patterns.md +270 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-retention-engine/SKILL.md +120 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-retention-engine/references/retention-cookbook.md +271 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-revenue-engine/SKILL.md +128 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-revenue-engine/references/revenue-cookbook.md +227 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-senior-code-audit/SKILL.md +233 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-senior-code-audit/references/audit-checklist.md +369 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-senior-code-cookbook/SKILL.md +288 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-senior-code-cookbook/references/engineering-cookbook.md +489 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-soul-principles/SKILL.md +42 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-task-codex-executor/SKILL.md +86 -0
- package/dist/runtime/discipline/skills/aria-cognition/aristotle-engine/SKILL.md +42 -0
- package/dist/runtime/discipline/skills/aria-cognition/cross-domain-24/SKILL.md +42 -0
- package/dist/runtime/discipline/skills/aria-cognition/deepsoul-emotional/SKILL.md +42 -0
- package/dist/runtime/discipline/skills/aria-cognition/fitrah-guard/SKILL.md +78 -0
- package/dist/runtime/discipline/skills/aria-cognition/ghazali-8lens/SKILL.md +227 -29
- package/dist/runtime/discipline/skills/aria-cognition/ghazali-8lens/references/ghazali-8lens-cookbook.md +797 -0
- package/dist/runtime/discipline/skills/aria-cognition/ijtihad-novel/SKILL.md +42 -0
- package/dist/runtime/discipline/skills/aria-cognition/ilham-intuition/SKILL.md +42 -0
- package/dist/runtime/discipline/skills/aria-cognition/never-guess/SKILL.md +77 -0
- package/dist/runtime/discipline/skills/aria-cognition/noor-recognition/SKILL.md +45 -0
- package/dist/runtime/discipline/skills/aria-cognition/qiyas-analogy/SKILL.md +174 -14
- package/dist/runtime/discipline/skills/aria-cognition/ruh-basis/SKILL.md +42 -0
- package/dist/runtime/discipline/skills/aria-cognition/tadabbur/SKILL.md +506 -0
- package/dist/runtime/discipline/skills/aria-cognition/tadabbur/references/tadabbur-cookbook.md +921 -0
- package/dist/runtime/discipline/skills/aria-cognition/tadabbur-ops/SKILL.md +42 -0
- package/dist/runtime/discipline/skills/aria-cognition/tafakkur/SKILL.md +104 -0
- package/dist/runtime/doctrine_trigger_map.json +236 -25
- package/dist/runtime/embedded-public-key.mjs +27 -0
- package/dist/runtime/gated-ledger.mjs +41 -14
- package/dist/runtime/harness-daemon.mjs +85 -10
- package/dist/runtime/hive-wal-publisher.mjs +292 -0
- package/dist/runtime/hooks/README.md +58 -0
- package/dist/runtime/hooks/aria-agent-handoff.mjs +147 -2
- package/dist/runtime/hooks/aria-agent-ledger-merge.mjs +31 -7
- package/dist/runtime/hooks/aria-architect-fallback.mjs +10 -2
- package/dist/runtime/hooks/aria-claim-evidence-stop-gate.mjs +240 -0
- package/dist/runtime/hooks/aria-cognition-substrate-binding.mjs +84 -10
- package/dist/runtime/hooks/aria-first-class-coach.mjs +305 -10
- package/dist/runtime/hooks/aria-harness-via-sdk.mjs +93 -16
- package/dist/runtime/hooks/aria-import-resolution-gate.mjs +106 -20
- package/dist/runtime/hooks/aria-outcome-record.mjs +56 -20
- package/dist/runtime/hooks/aria-pre-emit-autoload.mjs +1809 -0
- package/dist/runtime/hooks/aria-pre-emit-autoload.mjs.before-orchestration-redesign +1400 -0
- package/dist/runtime/hooks/aria-pre-emit-dryrun.mjs +22 -3
- package/dist/runtime/hooks/aria-pre-text-gate.mjs +11 -2
- package/dist/runtime/hooks/aria-pre-tool-gate.mjs +516 -92
- package/dist/runtime/hooks/aria-pre-tool-use.mjs +70 -6
- package/dist/runtime/hooks/aria-preprompt-consult.mjs +23 -4
- package/dist/runtime/hooks/aria-repo-doctrine-gate.mjs +29 -3
- package/dist/runtime/hooks/aria-stop-gate.mjs +585 -76
- package/dist/runtime/hooks/aria-trigger-autolearn.mjs +17 -3
- package/dist/runtime/hooks/aria-universal-turn-packet.mjs +1165 -0
- package/dist/runtime/hooks/aria-userprompt-abandon-detect.mjs +9 -1
- package/dist/runtime/hooks/canonical-settings-block.json +172 -0
- package/dist/runtime/hooks/codex-native/aria-harness-ticker-sidecar.mjs +92 -0
- package/dist/runtime/hooks/codex-native/aria-hive-wal-consumer.mjs +86 -0
- package/dist/runtime/hooks/codex-native/aria-live-ticker.mjs +38 -0
- package/dist/runtime/hooks/codex-native/aria-post-tool-use.mjs +236 -0
- package/dist/runtime/hooks/codex-native/aria-pre-tool-use.mjs +362 -0
- package/dist/runtime/hooks/codex-native/aria-stop.mjs +691 -0
- package/dist/runtime/hooks/codex-native/aria-userprompt-submit.mjs +623 -0
- package/dist/runtime/hooks/codex-native/atlas-session-context.mjs +121 -0
- package/dist/runtime/hooks/codex-native/lib/evaluate-with-kernel.mjs +257 -0
- package/dist/runtime/hooks/codex-native/lib/hive-wal-consumer.mjs +452 -0
- package/dist/runtime/hooks/codex-native/lib/kernel/deterministic-cognitive-kernel.mjs +914 -0
- package/dist/runtime/hooks/codex-native/lib/project-boundary-cognition.mjs +143 -0
- package/dist/runtime/hooks/codex-native/lib/runtime-client.mjs +3567 -0
- package/dist/runtime/hooks/codex-native/lib/task-project-ledger.mjs +294 -0
- package/dist/runtime/hooks/doctrine_trigger_map.json +236 -25
- package/dist/runtime/hooks/doctrine_trigger_map.schema.json +46 -0
- package/dist/runtime/hooks/install.sh +84 -0
- package/dist/runtime/hooks/lib/action-ledger-core.mjs +269 -0
- package/dist/runtime/hooks/lib/aria-gate-ledger.mjs +143 -0
- package/dist/runtime/hooks/lib/ast-stub-shape-detector.mjs +107 -0
- package/dist/runtime/hooks/lib/atlas-dossier-client.mjs +151 -0
- package/dist/runtime/hooks/lib/atlas-orchestrator-postwire.mjs +221 -0
- package/dist/runtime/hooks/lib/canonical-lenses.mjs +83 -6
- package/dist/runtime/hooks/lib/coach-intent-classifier.mjs +248 -0
- package/dist/runtime/hooks/lib/cognitive-block-parser.mjs +111 -0
- package/dist/runtime/hooks/lib/doctrine-trigger-map-loader.mjs +137 -0
- package/dist/runtime/hooks/lib/domain-output-quality.mjs +132 -3
- package/dist/runtime/hooks/lib/empty-catch-scanner.mjs +91 -0
- package/dist/runtime/hooks/lib/end-phase-qa-autofire.mjs +426 -0
- package/dist/runtime/hooks/lib/evaluate-with-kernel.mjs +133 -0
- package/dist/runtime/hooks/lib/first-class-coach.mjs +454 -19
- package/dist/runtime/hooks/lib/gate-audit.mjs +12 -2
- package/dist/runtime/hooks/lib/gate-loop-state.mjs +11 -2
- package/dist/runtime/hooks/lib/goal-contract-quality.mjs +302 -0
- package/dist/runtime/hooks/lib/hook-message-window.mjs +101 -9
- package/dist/runtime/hooks/lib/invocation-required-verifier.mjs +184 -0
- package/dist/runtime/hooks/lib/kernel/deterministic-cognitive-kernel.mjs +906 -0
- package/dist/runtime/hooks/lib/obligation-ledger.mjs +147 -0
- package/dist/runtime/hooks/lib/orchestration-manifest-extract.mjs +217 -0
- package/dist/runtime/hooks/lib/owner-authorizations.mjs +269 -0
- package/dist/runtime/hooks/lib/probe-discipline-scanner.mjs +142 -0
- package/dist/runtime/hooks/lib/project-boundary-cognition.mjs +143 -0
- package/dist/runtime/hooks/lib/recovery-context.mjs +151 -0
- package/dist/runtime/hooks/lib/recovery-template-loader.mjs +154 -0
- package/dist/runtime/hooks/lib/self-doctrine-check.mjs +321 -0
- package/dist/runtime/hooks/lib/sensitive-shape-detector.mjs +64 -0
- package/dist/runtime/hooks/lib/skill-autoload-gate-impl.mjs +226 -1
- package/dist/runtime/hooks/lib/stop-hook-protocol.mjs +166 -0
- package/dist/runtime/hooks/lib/surface-caught.mjs +94 -0
- package/dist/runtime/hooks/recovery-templates/force-reauthor.md +67 -0
- package/dist/runtime/hooks/recovery-templates/handoff-recovery.md +25 -0
- package/dist/runtime/hooks/scripts/check-hard-risk-prefix.mjs +99 -0
- package/dist/runtime/hooks/skills/aria-conversational-doctrine-discipline/SKILL.md +101 -0
- package/dist/runtime/hooks/test-aria-preturn-memory-gate.mjs +2 -2
- package/dist/runtime/hooks/test-tier-lens-labeling.mjs +14 -3
- package/dist/runtime/lib/evaluate-with-kernel.mjs +133 -0
- package/dist/runtime/lib/kernel/deterministic-cognitive-kernel.mjs +906 -0
- package/dist/runtime/local-phase.mjs +10 -5
- package/dist/runtime/manifest.json +8 -8
- package/dist/runtime/packet-verifier.mjs +166 -0
- package/dist/runtime/provider-proxy.mjs +13 -0
- package/dist/runtime/quality-enforcer.mjs +40 -23
- package/dist/runtime/runtime-rails/registry.mjs +252 -0
- package/dist/runtime/sdk/BUNDLED.json +2 -2
- package/dist/runtime/sdk/index.d.ts +119 -4
- package/dist/runtime/sdk/index.js +138 -12
- package/dist/runtime/sdk/index.js.map +1 -1
- package/dist/runtime/service.mjs +8036 -764
- package/dist/runtime/sub-agent-enforcer.mjs +201 -0
- package/dist/runtime/task-project-ledger.mjs +5 -1
- package/dist/sdk/BUNDLED.json +2 -2
- package/dist/sdk/index.d.ts +119 -4
- package/dist/sdk/index.js +138 -12
- package/dist/sdk/index.js.map +1 -1
- package/hooks/README.md +58 -0
- package/hooks/aria-agent-handoff.mjs +147 -2
- package/hooks/aria-agent-ledger-merge.mjs +31 -7
- package/hooks/aria-architect-fallback.mjs +10 -2
- package/hooks/aria-claim-evidence-stop-gate.mjs +240 -0
- package/hooks/aria-cognition-substrate-binding.mjs +84 -10
- package/hooks/aria-first-class-coach.mjs +305 -10
- package/hooks/aria-harness-via-sdk.mjs +93 -16
- package/hooks/aria-import-resolution-gate.mjs +106 -20
- package/hooks/aria-outcome-record.mjs +56 -20
- package/hooks/aria-pre-emit-autoload.mjs +1809 -0
- package/hooks/aria-pre-emit-autoload.mjs.before-orchestration-redesign +1400 -0
- package/hooks/aria-pre-emit-dryrun.mjs +22 -3
- package/hooks/aria-pre-text-gate.mjs +11 -2
- package/hooks/aria-pre-tool-gate.mjs +516 -92
- package/hooks/aria-pre-tool-use.mjs +70 -6
- package/hooks/aria-preprompt-consult.mjs +23 -4
- package/hooks/aria-repo-doctrine-gate.mjs +29 -3
- package/hooks/aria-stop-gate.mjs +585 -76
- package/hooks/aria-trigger-autolearn.mjs +17 -3
- package/hooks/aria-universal-turn-packet.mjs +1165 -0
- package/hooks/aria-userprompt-abandon-detect.mjs +9 -1
- package/hooks/canonical-settings-block.json +172 -0
- package/hooks/codex-native/aria-harness-ticker-sidecar.mjs +92 -0
- package/hooks/codex-native/aria-hive-wal-consumer.mjs +86 -0
- package/hooks/codex-native/aria-live-ticker.mjs +38 -0
- package/hooks/codex-native/aria-post-tool-use.mjs +236 -0
- package/hooks/codex-native/aria-pre-tool-use.mjs +362 -0
- package/hooks/codex-native/aria-stop.mjs +691 -0
- package/hooks/codex-native/aria-userprompt-submit.mjs +623 -0
- package/hooks/codex-native/atlas-session-context.mjs +121 -0
- package/hooks/codex-native/lib/evaluate-with-kernel.mjs +257 -0
- package/hooks/codex-native/lib/hive-wal-consumer.mjs +452 -0
- package/hooks/codex-native/lib/kernel/deterministic-cognitive-kernel.mjs +914 -0
- package/hooks/codex-native/lib/project-boundary-cognition.mjs +143 -0
- package/hooks/codex-native/lib/runtime-client.mjs +3567 -0
- package/hooks/codex-native/lib/task-project-ledger.mjs +294 -0
- package/hooks/doctrine_trigger_map.json +236 -25
- package/hooks/doctrine_trigger_map.schema.json +46 -0
- package/hooks/install.sh +84 -0
- package/hooks/lib/action-ledger-core.mjs +269 -0
- package/hooks/lib/aria-gate-ledger.mjs +143 -0
- package/hooks/lib/ast-stub-shape-detector.mjs +107 -0
- package/hooks/lib/atlas-dossier-client.mjs +151 -0
- package/hooks/lib/atlas-orchestrator-postwire.mjs +221 -0
- package/hooks/lib/canonical-lenses.mjs +83 -6
- package/hooks/lib/coach-intent-classifier.mjs +248 -0
- package/hooks/lib/cognitive-block-parser.mjs +111 -0
- package/hooks/lib/doctrine-trigger-map-loader.mjs +137 -0
- package/hooks/lib/domain-output-quality.mjs +132 -3
- package/hooks/lib/empty-catch-scanner.mjs +91 -0
- package/hooks/lib/end-phase-qa-autofire.mjs +426 -0
- package/hooks/lib/evaluate-with-kernel.mjs +133 -0
- package/hooks/lib/first-class-coach.mjs +454 -19
- package/hooks/lib/gate-audit.mjs +12 -2
- package/hooks/lib/gate-loop-state.mjs +11 -2
- package/hooks/lib/goal-contract-quality.mjs +302 -0
- package/hooks/lib/hook-message-window.mjs +101 -9
- package/hooks/lib/invocation-required-verifier.mjs +184 -0
- package/hooks/lib/kernel/deterministic-cognitive-kernel.mjs +906 -0
- package/hooks/lib/obligation-ledger.mjs +147 -0
- package/hooks/lib/orchestration-manifest-extract.mjs +217 -0
- package/hooks/lib/owner-authorizations.mjs +269 -0
- package/hooks/lib/probe-discipline-scanner.mjs +142 -0
- package/hooks/lib/project-boundary-cognition.mjs +143 -0
- package/hooks/lib/recovery-context.mjs +151 -0
- package/hooks/lib/recovery-template-loader.mjs +154 -0
- package/hooks/lib/self-doctrine-check.mjs +321 -0
- package/hooks/lib/sensitive-shape-detector.mjs +64 -0
- package/hooks/lib/skill-autoload-gate-impl.mjs +226 -1
- package/hooks/lib/stop-hook-protocol.mjs +166 -0
- package/hooks/lib/surface-caught.mjs +94 -0
- package/hooks/recovery-templates/force-reauthor.md +67 -0
- package/hooks/recovery-templates/handoff-recovery.md +25 -0
- package/hooks/scripts/check-hard-risk-prefix.mjs +99 -0
- package/hooks/skills/aria-conversational-doctrine-discipline/SKILL.md +101 -0
- package/hooks/test-aria-preturn-memory-gate.mjs +2 -2
- package/hooks/test-tier-lens-labeling.mjs +14 -3
- package/opencode-plugins/harness-context/index.js +39 -6
- package/opencode-plugins/harness-context/task-project-ledger.mjs +5 -1
- package/opencode-plugins/harness-gate/index.js +36 -0
- package/opencode-plugins/harness-gate/lib/atlas-dossier-client.js +1 -0
- package/opencode-plugins/harness-gate/lib/recovery-grants.js +79 -0
- package/opencode-plugins/harness-outcome/index.js +12 -0
- package/opencode-plugins/harness-stop/index.js +97 -2
- package/opencode-plugins/harness-stop/lib/atlas-dossier-client.js +1 -0
- package/opencode-plugins/harness-stop/lib/domain-output-quality.js +15 -2
- package/opencode-plugins/lib/coach.js +148 -0
- package/package.json +71 -5
- package/runtime-src/coach-kernel.mjs +144 -7
- package/runtime-src/codex-bridge.mjs +254 -8
- package/runtime-src/embedded-public-key.mjs +27 -0
- package/runtime-src/gated-ledger.mjs +41 -14
- package/runtime-src/harness-daemon.mjs +85 -10
- package/runtime-src/hive-wal-publisher.mjs +292 -0
- package/runtime-src/lib/evaluate-with-kernel.mjs +133 -0
- package/runtime-src/lib/kernel/deterministic-cognitive-kernel.mjs +906 -0
- package/runtime-src/local-phase.mjs +10 -5
- package/runtime-src/packet-verifier.mjs +166 -0
- package/runtime-src/provider-proxy.mjs +13 -0
- package/runtime-src/quality-enforcer.mjs +40 -23
- package/runtime-src/runtime-rails/registry.mjs +252 -0
- package/runtime-src/service.mjs +8036 -764
- package/runtime-src/sub-agent-enforcer.mjs +201 -0
- package/scripts/aria-ledger-append.mjs +337 -0
- package/scripts/aria-task-cheap-worker-dispatch.mjs +234 -0
- package/scripts/audit-of-audit-prior-tasks.mjs +194 -0
- package/scripts/audit-of-audit-this-turn.mjs +116 -0
- package/scripts/bundle-sdk.mjs +31 -5
- package/scripts/check-cli-wrapper-provider-contract.mjs +160 -0
- package/scripts/check-client-compatibility.mjs +15 -5
- package/scripts/check-client-smoke.mjs +297 -0
- package/scripts/check-codex-orchestrator-adoption.mjs +150 -0
- package/scripts/check-glm-env-wired.mjs +131 -0
- package/scripts/check-hive-local-storage-contract.mjs +91 -0
- package/scripts/check-hook-mirror.mjs +150 -0
- package/scripts/check-install-sh-drift.mjs +152 -0
- package/scripts/check-kernel-sync.mjs +101 -0
- package/scripts/check-package-artifact.mjs +152 -0
- package/scripts/check-registry-mirror.mjs +71 -0
- package/scripts/drain-owner-airtable-sync-queue.mjs +287 -0
- package/scripts/export-owner-status-sheets.mjs +589 -0
- package/scripts/live-sidecar-receipt-canary.mjs +347 -0
- package/scripts/qiyas-tadabbur-model-matrix.mjs +970 -0
- package/scripts/quality-ab-live-provider.mjs +913 -0
- package/scripts/self-test-action-ledger-core.mjs +190 -0
- package/scripts/self-test-approval-receipt-binding.mjs +122 -0
- package/scripts/self-test-autofire-quality-output.mjs +110 -0
- package/scripts/self-test-claude-code-action-ledger.mjs +132 -0
- package/scripts/self-test-claude-code-mechanical-autofire-hive.mjs +138 -0
- package/scripts/self-test-claude-code-mechanical-autofire.mjs +234 -0
- package/scripts/self-test-codebase-awareness-atlas-delta.mjs +159 -0
- package/scripts/self-test-codebase-awareness-delta-ingest.mjs +179 -0
- package/scripts/self-test-codex-live-hook-parity.mjs +84 -0
- package/scripts/self-test-codex-native-action-ledger.mjs +167 -0
- package/scripts/self-test-codex-native-hook-json-contract.mjs +74 -0
- package/scripts/self-test-codex-orchestrator-continuity.mjs +113 -0
- package/scripts/self-test-codex-readable-recovery.mjs +94 -0
- package/scripts/self-test-codex-self-harness.mjs +538 -0
- package/scripts/self-test-compiled-workunit.mjs +214 -0
- package/scripts/self-test-continuation-output-smoke.mjs +101 -0
- package/scripts/self-test-cross-cli-fleet-ticker.mjs +85 -0
- package/scripts/self-test-cross-cli-hive-adoption.mjs +125 -0
- package/scripts/self-test-cross-cli-hive-learning.mjs +146 -0
- package/scripts/self-test-cross-phase-tool-failure.mjs +110 -0
- package/scripts/self-test-cross-surface-action-ledger.mjs +149 -0
- package/scripts/self-test-end-of-phase-qa-court.mjs +616 -0
- package/scripts/self-test-evaluate-with-kernel.mjs +111 -0
- package/scripts/self-test-first-class-output-delta-proof.mjs +307 -0
- package/scripts/self-test-goal-contract-output-qa.mjs +73 -0
- package/scripts/self-test-goal-contract.mjs +35 -0
- package/scripts/self-test-governed-adapters.mjs +105 -0
- package/scripts/self-test-governed-surface-runner.mjs +198 -0
- package/scripts/self-test-harness-gates.mjs +15 -12
- package/scripts/self-test-harness-ticker-sidecar.mjs +153 -0
- package/scripts/self-test-hive-org-kernel.mjs +233 -0
- package/scripts/self-test-hive-session-coordination.mjs +156 -0
- package/scripts/self-test-hive-wal-consumer.mjs +111 -0
- package/scripts/self-test-kernel-a3-a4-selection.mjs +179 -0
- package/scripts/self-test-ledger-append.mjs +175 -0
- package/scripts/self-test-live-codex-posttool-packet-smoke.mjs +111 -0
- package/scripts/self-test-live-codex-pretool-packet-smoke.mjs +101 -0
- package/scripts/self-test-live-codex-stop-qa-kernel-smoke.mjs +43 -0
- package/scripts/self-test-live-wrapper-substrate-inventory.mjs +149 -0
- package/scripts/self-test-local-main-sync-script.mjs +47 -0
- package/scripts/self-test-mechanical-autofire-resolver.mjs +296 -0
- package/scripts/self-test-no-consult-cognitive-skills-output.mjs +135 -0
- package/scripts/self-test-owner-airtable-sync-queue.mjs +196 -0
- package/scripts/self-test-owner-airtable-sync.mjs +181 -0
- package/scripts/self-test-owner-sheets-action-ledger.mjs +100 -0
- package/scripts/self-test-production-preflight.mjs +78 -0
- package/scripts/self-test-project-boundary-cognition.mjs +79 -0
- package/scripts/self-test-qa-exec-kernel.mjs +34 -0
- package/scripts/self-test-qa-recovery-learning-loop.mjs +113 -0
- package/scripts/self-test-qiyas-label-alignment.mjs +94 -0
- package/scripts/self-test-recovery-context.mjs +110 -0
- package/scripts/self-test-repo-guard.mjs +10 -0
- package/scripts/self-test-runtime-health-self-heal.mjs +161 -0
- package/scripts/self-test-runtime-postcondition.mjs +70 -0
- package/scripts/self-test-soul-precommit-hook.mjs +39 -0
- package/scripts/self-test-stop-gate-kernel-guards.mjs +185 -0
- package/scripts/self-test-stop-gate.mjs +128 -0
- package/scripts/self-test-substrate-kernel-execution-receipt.mjs +130 -0
- package/scripts/self-test-substrate-open-skill-floor.mjs +87 -0
- package/scripts/self-test-substrate-output-quality-eval.mjs +171 -0
- package/scripts/self-test-task-closeout-drift.mjs +97 -0
- package/scripts/self-test-task-project-ledger-readiness.mjs +43 -0
- package/scripts/self-test-task-runner-phase-consumer.mjs +134 -0
- package/scripts/self-test-task-worker-lane.mjs +256 -0
- package/scripts/self-test-turn-substrate-qa-kernel.mjs +188 -0
- package/scripts/self-test-universal-action-capture.mjs +153 -0
- package/scripts/self-test-universal-turn-packet-entrypoints.mjs +252 -0
- package/scripts/self-test-universal-turn-packet.mjs +320 -0
- package/scripts/session-quality-backfill.mjs +253 -0
- package/scripts/smoke-autofire-100-prompts.mjs +481 -0
- package/scripts/sync-local-main-on-task-complete.mjs +278 -0
- package/scripts/sync-owner-status-airtable.mjs +1158 -0
- package/scripts/validate-skill-prompts.mjs +12 -1
- package/scripts/verify-codex-native-mirror.mjs +262 -0
- package/skills/34-frameworks-unified/SKILL.md +42 -0
- package/skills/api-design/SKILL.md +123 -0
- package/skills/architecture-decision/SKILL.md +105 -0
- package/skills/aria-aristotle-cognitives/SKILL.md +128 -0
- package/skills/aria-aristotle-intra-phase/SKILL.md +99 -0
- package/skills/aria-aristotle-post-phase/SKILL.md +116 -0
- package/skills/aria-aristotle-pre-phase/SKILL.md +117 -0
- package/skills/aria-axioms-first-principles/SKILL.md +202 -0
- package/skills/aria-axioms-first-principles/agents/openai.yaml +4 -0
- package/skills/aria-axioms-first-principles/references/source-map.md +130 -0
- package/skills/aria-chat/SKILL.md +84 -0
- package/skills/aria-chat/scripts/aria-chat.sh +57 -0
- package/skills/aria-cognition/34-frameworks-unified/SKILL.md +42 -0
- package/skills/aria-cognition/aria-aristotle-cognitives/SKILL.md +128 -0
- package/skills/aria-cognition/aria-aristotle-intra-phase/SKILL.md +99 -0
- package/skills/aria-cognition/aria-aristotle-post-phase/SKILL.md +118 -0
- package/skills/aria-cognition/aria-aristotle-pre-phase/SKILL.md +117 -0
- package/skills/aria-cognition/aria-axioms-first-principles/SKILL.md +202 -0
- package/skills/aria-cognition/aria-axioms-first-principles/agents/openai.yaml +4 -0
- package/skills/aria-cognition/aria-axioms-first-principles/references/source-map.md +130 -0
- package/skills/aria-cognition/aria-backend-architect/SKILL.md +124 -0
- package/skills/aria-cognition/aria-backend-architect/references/backend-cookbook.md +417 -0
- package/skills/aria-cognition/aria-business-audit/SKILL.md +133 -0
- package/skills/aria-cognition/aria-business-audit/references/audit-cookbook.md +247 -0
- package/skills/aria-cognition/aria-business-frame/SKILL.md +138 -0
- package/skills/aria-cognition/aria-business-frame/references/business-cookbook.md +154 -0
- package/skills/aria-cognition/aria-chat/SKILL.md +84 -0
- package/skills/aria-cognition/aria-chat/scripts/aria-chat.sh +57 -0
- package/skills/aria-cognition/aria-cognition-autofire/SKILL.md +137 -0
- package/skills/aria-cognition/aria-cognition-batch/SKILL.md +264 -0
- package/skills/aria-cognition/aria-decision-mizan/SKILL.md +136 -0
- package/skills/aria-cognition/aria-decision-mizan/references/decision-frameworks.md +287 -0
- package/skills/aria-cognition/aria-first-class-operating-contract/SKILL.md +104 -0
- package/skills/aria-cognition/aria-frontend-architect/SKILL.md +123 -0
- package/skills/aria-cognition/aria-frontend-architect/references/frontend-cookbook.md +358 -0
- package/skills/aria-cognition/aria-fullstack-orchestrator/SKILL.md +127 -0
- package/skills/aria-cognition/aria-fullstack-orchestrator/references/fullstack-cookbook.md +383 -0
- package/skills/aria-cognition/aria-gtm-architect/SKILL.md +126 -0
- package/skills/aria-cognition/aria-gtm-architect/references/gtm-cookbook.md +235 -0
- package/skills/aria-cognition/aria-harness-deploy/SKILL.md +145 -0
- package/skills/aria-cognition/aria-harness-no-stripping/SKILL.md +135 -0
- package/skills/aria-cognition/aria-harness-onboarding/SKILL.md +130 -0
- package/skills/aria-cognition/aria-harness-output-discipline/SKILL.md +120 -0
- package/skills/aria-cognition/aria-harness-substrate-binding/SKILL.md +139 -0
- package/skills/aria-cognition/aria-http-harness-client/SKILL.md +85 -0
- package/skills/aria-cognition/aria-http-harness-client/scripts/smoke.mjs +47 -0
- package/skills/aria-cognition/aria-k8s-deploy/SKILL.md +174 -0
- package/skills/aria-cognition/aria-k8s-deploy/agents/openai.yaml +3 -0
- package/skills/aria-cognition/aria-ladduniframe/SKILL.md +60 -0
- package/skills/aria-cognition/aria-ledger-fleet-execution/SKILL.md +126 -0
- package/skills/aria-cognition/aria-live-ops/SKILL.md +54 -0
- package/skills/aria-cognition/aria-mac-ssh-ops/SKILL.md +100 -0
- package/skills/aria-cognition/aria-memory-index/SKILL.md +42 -0
- package/skills/aria-cognition/aria-noor-cognitives/SKILL.md +120 -0
- package/skills/aria-cognition/aria-ops/SKILL.md +60 -0
- package/skills/aria-cognition/aria-ops/references/live-endpoints.md +59 -0
- package/skills/aria-cognition/aria-quality-audit/SKILL.md +133 -0
- package/skills/aria-cognition/aria-readable-output/SKILL.md +239 -0
- package/skills/aria-cognition/aria-readable-output/references/layout-cookbook.md +366 -0
- package/skills/aria-cognition/aria-reasoning/SKILL.md +67 -0
- package/skills/aria-cognition/aria-reasoning/references/core-principles.md +42 -0
- package/skills/aria-cognition/aria-repo-audit/SKILL.md +135 -0
- package/skills/aria-cognition/aria-repo-audit/references/repo-audit-cookbook.md +375 -0
- package/skills/aria-cognition/aria-research-orchestrator/SKILL.md +138 -0
- package/skills/aria-cognition/aria-research-orchestrator/references/research-patterns.md +270 -0
- package/skills/aria-cognition/aria-retention-engine/SKILL.md +120 -0
- package/skills/aria-cognition/aria-retention-engine/references/retention-cookbook.md +271 -0
- package/skills/aria-cognition/aria-revenue-engine/SKILL.md +128 -0
- package/skills/aria-cognition/aria-revenue-engine/references/revenue-cookbook.md +227 -0
- package/skills/aria-cognition/aria-senior-code-audit/SKILL.md +233 -0
- package/skills/aria-cognition/aria-senior-code-audit/references/audit-checklist.md +369 -0
- package/skills/aria-cognition/aria-senior-code-cookbook/SKILL.md +288 -0
- package/skills/aria-cognition/aria-senior-code-cookbook/references/engineering-cookbook.md +489 -0
- package/skills/aria-cognition/aria-soul-principles/SKILL.md +42 -0
- package/skills/aria-cognition/aria-task-codex-executor/SKILL.md +86 -0
- package/skills/aria-cognition/aristotle-engine/SKILL.md +42 -0
- package/skills/aria-cognition/cross-domain-24/SKILL.md +42 -0
- package/skills/aria-cognition/deepsoul-emotional/SKILL.md +42 -0
- package/skills/aria-cognition/fitrah-guard/SKILL.md +78 -0
- package/skills/aria-cognition/ghazali-8lens/SKILL.md +227 -29
- package/skills/aria-cognition/ghazali-8lens/references/ghazali-8lens-cookbook.md +797 -0
- package/skills/aria-cognition/ijtihad-novel/SKILL.md +42 -0
- package/skills/aria-cognition/ilham-intuition/SKILL.md +42 -0
- package/skills/aria-cognition/never-guess/SKILL.md +77 -0
- package/skills/aria-cognition/noor-recognition/SKILL.md +45 -0
- package/skills/aria-cognition/qiyas-analogy/SKILL.md +174 -14
- package/skills/aria-cognition/ruh-basis/SKILL.md +42 -0
- package/skills/aria-cognition/tadabbur/SKILL.md +506 -0
- package/skills/aria-cognition/tadabbur/references/tadabbur-cookbook.md +921 -0
- package/skills/aria-cognition/tadabbur-ops/SKILL.md +42 -0
- package/skills/aria-cognition/tafakkur/SKILL.md +104 -0
- package/skills/aria-cognition-autofire/SKILL.md +109 -0
- package/skills/aria-cognition-batch/SKILL.md +264 -0
- package/skills/aria-conversational-doctrine-discipline/SKILL.md +125 -0
- package/skills/aria-essence/SKILL.md +81 -0
- package/skills/aria-essence/references/domain-matrix.md +80 -0
- package/skills/aria-essence/references/evolution-loop.md +30 -0
- package/skills/aria-essence/references/readable-cognition.md +27 -0
- package/skills/aria-first-class-operating-contract/SKILL.md +104 -0
- package/skills/aria-forge-guardrails/SKILL.md +53 -0
- package/skills/aria-forge-guardrails/references/checklist.md +31 -0
- package/skills/aria-harness-deploy/SKILL.md +145 -0
- package/skills/aria-harness-no-stripping/SKILL.md +135 -0
- package/skills/aria-harness-onboarding/SKILL.md +130 -0
- package/skills/aria-harness-output-discipline/SKILL.md +120 -0
- package/skills/aria-harness-substrate-binding/SKILL.md +139 -0
- package/skills/aria-http-harness-client/SKILL.md +85 -0
- package/skills/aria-http-harness-client/scripts/smoke.mjs +47 -0
- package/skills/aria-k8s-deploy/SKILL.md +174 -0
- package/skills/aria-k8s-deploy/agents/openai.yaml +3 -0
- package/skills/aria-ladduniframe/SKILL.md +60 -0
- package/skills/aria-ledger-fleet-execution/SKILL.md +126 -0
- package/skills/aria-live-ops/SKILL.md +54 -0
- package/skills/aria-mac-ssh-ops/SKILL.md +100 -0
- package/skills/aria-memory-index/SKILL.md +42 -0
- package/skills/aria-noor-cognitives/SKILL.md +120 -0
- package/skills/aria-ops/SKILL.md +60 -0
- package/skills/aria-ops/references/live-endpoints.md +59 -0
- package/skills/aria-quality-audit/SKILL.md +133 -0
- package/skills/aria-reasoning/SKILL.md +67 -0
- package/skills/aria-reasoning/references/core-principles.md +42 -0
- package/skills/aria-repo-doctrine/SKILL.md +57 -0
- package/skills/aria-soul-principles/SKILL.md +42 -0
- package/skills/aria-task-codex-executor/SKILL.md +86 -0
- package/skills/aristotle-engine/SKILL.md +42 -0
- package/skills/ci-cd-pipeline/SKILL.md +116 -0
- package/skills/code-review/SKILL.md +131 -0
- package/skills/cross-domain-24/SKILL.md +42 -0
- package/skills/database-design/SKILL.md +124 -0
- package/skills/deepsoul-emotional/SKILL.md +42 -0
- package/skills/deno-kv-raft-pubsub/SKILL.md +561 -0
- package/skills/deno-kv-raft-pubsub/reference/maelstrom-integration.md +393 -0
- package/skills/deno-kv-raft-pubsub/reference/pubsub-api.md +376 -0
- package/skills/deno-kv-raft-pubsub/reference/raft-spec.md +402 -0
- package/skills/deno-kv-raft-pubsub/reference/state-machine.md +182 -0
- package/skills/error-handling/SKILL.md +159 -0
- package/skills/firecrawl/SKILL.md +165 -0
- package/skills/firecrawl/rules/install.md +82 -0
- package/skills/firecrawl/rules/security.md +26 -0
- package/skills/firecrawl-agent/SKILL.md +86 -0
- package/skills/firecrawl-build-interact/SKILL.md +96 -0
- package/skills/firecrawl-build-onboarding/SKILL.md +131 -0
- package/skills/firecrawl-build-onboarding/references/auth-flow.md +39 -0
- package/skills/firecrawl-build-onboarding/references/project-setup.md +20 -0
- package/skills/firecrawl-build-onboarding/references/sdk-installation.md +17 -0
- package/skills/firecrawl-build-scrape/SKILL.md +97 -0
- package/skills/firecrawl-build-search/SKILL.md +97 -0
- package/skills/firecrawl-clone/SKILL.md +419 -0
- package/skills/firecrawl-crawl/SKILL.md +87 -0
- package/skills/firecrawl-download/SKILL.md +98 -0
- package/skills/firecrawl-interact/SKILL.md +112 -0
- package/skills/firecrawl-map/SKILL.md +79 -0
- package/skills/firecrawl-scrape/SKILL.md +97 -0
- package/skills/firecrawl-search/SKILL.md +88 -0
- package/skills/fitrah-guard/SKILL.md +78 -0
- package/skills/forge-quality-rules/SKILL.md +61 -0
- package/skills/ghazali-8lens/SKILL.md +56 -0
- package/skills/ijtihad-novel/SKILL.md +42 -0
- package/skills/ilham-intuition/SKILL.md +42 -0
- package/skills/imagegen/LICENSE.txt +201 -0
- package/skills/imagegen/SKILL.md +374 -0
- package/skills/imagegen/agents/openai.yaml +6 -0
- package/skills/imagegen/assets/imagegen-small.svg +5 -0
- package/skills/imagegen/assets/imagegen.png +0 -0
- package/skills/imagegen/references/cli.md +242 -0
- package/skills/imagegen/references/codex-network.md +33 -0
- package/skills/imagegen/references/image-api.md +90 -0
- package/skills/imagegen/references/prompting.md +118 -0
- package/skills/imagegen/references/sample-prompts.md +433 -0
- package/skills/imagegen/scripts/image_gen.py +995 -0
- package/skills/imagegen/scripts/remove_chroma_key.py +440 -0
- package/skills/istiqra-induction/SKILL.md +44 -0
- package/skills/ladunni-22/SKILL.md +53 -0
- package/skills/mizan/SKILL.md +90 -0
- package/skills/nadia/SKILL.md +56 -0
- package/skills/nadia-psi/SKILL.md +56 -0
- package/skills/never-guess/SKILL.md +75 -0
- package/skills/noor-recognition/SKILL.md +45 -0
- package/skills/observability/SKILL.md +133 -0
- package/skills/openai-docs/LICENSE.txt +201 -0
- package/skills/openai-docs/SKILL.md +100 -0
- package/skills/openai-docs/agents/openai.yaml +14 -0
- package/skills/openai-docs/assets/openai-small.svg +3 -0
- package/skills/openai-docs/assets/openai.png +0 -0
- package/skills/openai-docs/references/latest-model.md +37 -0
- package/skills/openai-docs/references/prompting-guide.md +244 -0
- package/skills/openai-docs/references/upgrade-guide.md +181 -0
- package/skills/openai-docs/scripts/resolve-latest-model-info.js +147 -0
- package/skills/pdf/LICENSE.txt +201 -0
- package/skills/pdf/SKILL.md +85 -0
- package/skills/pdf/agents/openai.yaml +5 -0
- package/skills/pdf/assets/pdf.png +0 -0
- package/skills/playwright/LICENSE.txt +201 -0
- package/skills/playwright/NOTICE.txt +14 -0
- package/skills/playwright/SKILL.md +165 -0
- package/skills/playwright/agents/openai.yaml +6 -0
- package/skills/playwright/assets/playwright-small.svg +3 -0
- package/skills/playwright/assets/playwright.png +0 -0
- package/skills/playwright/references/cli.md +116 -0
- package/skills/playwright/references/workflows.md +95 -0
- package/skills/playwright/scripts/playwright_cli.sh +25 -0
- package/skills/plugin-creator/SKILL.md +178 -0
- package/skills/plugin-creator/agents/openai.yaml +6 -0
- package/skills/plugin-creator/assets/plugin-creator-small.svg +3 -0
- package/skills/plugin-creator/assets/plugin-creator.png +0 -0
- package/skills/plugin-creator/references/plugin-json-spec.md +170 -0
- package/skills/plugin-creator/scripts/create_basic_plugin.py +301 -0
- package/skills/predictor/SKILL.md +43 -0
- package/skills/qiyas-analogy/SKILL.md +204 -0
- package/skills/refactoring/SKILL.md +137 -0
- package/skills/ruh-basis/SKILL.md +42 -0
- package/skills/security-review/SKILL.md +129 -0
- package/skills/skill-creator/SKILL.md +434 -0
- package/skills/skill-creator/agents/openai.yaml +5 -0
- package/skills/skill-creator/assets/skill-creator-small.svg +3 -0
- package/skills/skill-creator/assets/skill-creator.png +0 -0
- package/skills/skill-creator/license.txt +202 -0
- package/skills/skill-creator/references/openai_yaml.md +49 -0
- package/skills/skill-creator/scripts/generate_openai_yaml.py +226 -0
- package/skills/skill-creator/scripts/init_skill.py +400 -0
- package/skills/skill-creator/scripts/quick_validate.py +101 -0
- package/skills/skill-installer/LICENSE.txt +202 -0
- package/skills/skill-installer/SKILL.md +76 -0
- package/skills/skill-installer/agents/openai.yaml +5 -0
- package/skills/skill-installer/assets/skill-installer-small.svg +3 -0
- package/skills/skill-installer/assets/skill-installer.png +0 -0
- package/skills/skill-installer/scripts/github_utils.py +21 -0
- package/skills/skill-installer/scripts/install-skill-from-github.py +308 -0
- package/skills/skill-installer/scripts/list-skills.py +107 -0
- package/skills/skills-and-hooks-reference/SKILL.md +196 -0
- package/skills/soul-domains/SKILL.md +43 -0
- package/skills/tadabbur/SKILL.md +232 -0
- package/skills/tadabbur-ops/SKILL.md +42 -0
- package/skills/tafakkur/SKILL.md +104 -0
- package/skills/testing-strategy/SKILL.md +122 -0
- package/src/action-ledger-core.ts +1054 -0
- package/src/chat.ts +5 -6
- package/src/codebase-scanner.ts +2 -0
- package/src/connectors/claude-code.ts +149 -12
- package/src/connectors/codebase-awareness.ts +325 -25
- package/src/connectors/codex.ts +1273 -40
- package/src/connectors/cursor.ts +8 -0
- package/src/connectors/governed-adapter.ts +174 -0
- package/src/connectors/opencode.ts +18 -2
- package/src/connectors/repo-guard.ts +24 -12
- package/src/connectors/runtime.ts +99 -2
- package/src/connectors/shell.ts +125 -7
- package/src/cross-cli-hive-binding.ts +290 -0
- package/src/garden-control-plane.ts +24 -1
- package/src/governed-surface-runner.ts +1227 -0
- package/src/index.ts +104 -1
- package/src/task-runner.ts +3794 -0
- package/dist/aria-connector/src/install-hooks.d.ts +0 -18
- package/dist/aria-connector/src/install-hooks.d.ts.map +0 -1
- package/dist/aria-connector/src/install-hooks.js +0 -224
- package/dist/aria-connector/src/install-hooks.js.map +0 -1
- package/dist/aria-connector/src/onboarding-wizard.d.ts +0 -5
- package/dist/aria-connector/src/onboarding-wizard.d.ts.map +0 -1
- package/dist/aria-connector/src/onboarding-wizard.js +0 -188
- package/dist/aria-connector/src/onboarding-wizard.js.map +0 -1
- package/dist/cli-0.2.38.tgz +0 -0
- package/dist/install.sh +0 -13
- package/src/__tests__/anthropic-oauth.test.ts +0 -186
- package/src/__tests__/auth-commands.test.ts +0 -132
- package/src/__tests__/owner-login.test.ts +0 -311
|
@@ -0,0 +1,321 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* self-doctrine-check.mjs — scan text against doctrine_trigger_map.
|
|
4
|
+
*
|
|
5
|
+
* Phase 0 audit Tier 0 M0.SELFREVIEW.X1 + Phase 7 QA Pass M7.0.X7:
|
|
6
|
+
* the scanner that pre-commit hooks (and on-demand CLI) use to detect
|
|
7
|
+
* trip-vocab the doctrine_trigger_map counters. The scanner returns
|
|
8
|
+
* structured violations; the caller decides whether to block, warn,
|
|
9
|
+
* or allow with acknowledgment.
|
|
10
|
+
*
|
|
11
|
+
* Hamza caught (2026-05-06) that I'd shipped 35 commits with cognition-
|
|
12
|
+
* lattice labels in commit messages without actually running the
|
|
13
|
+
* lattice — the labels were performing the work. Real doctrine scan
|
|
14
|
+
* surfaced 2 unambiguous violations in my own committed code
|
|
15
|
+
* (the trip-vocab phrase × 2). This scanner is the load-bearing
|
|
16
|
+
* fix that prevents the recurrence: ceremony cannot substitute for
|
|
17
|
+
* doctrine-self-check: best.?effort describing-the-finding-the-scanner-detects
|
|
18
|
+
* substance when the substance check runs at commit time.
|
|
19
|
+
*
|
|
20
|
+
* Design principles applied (via REAL qiyas + predictor this time):
|
|
21
|
+
*
|
|
22
|
+
* Qiyas — analogous to ESLint + lint-staged + husky pre-commit. Same
|
|
23
|
+
* shape: scan staged content, match against rules, allow explicit
|
|
24
|
+
* acknowledgment as escape hatch. Failure modes of that pattern:
|
|
25
|
+
* - doctrine-self-check: use the override|skip the gate|emergency flag|temporarily bypass|use the env disable|force through|DEPLOY_ALLOW_NO_ADMISSION_POLICY|ARIA_BINDING_ENABLED=false|--no-verify|--force documenting-bypass-class-explicitly-out-of-scope-for-this-hook
|
|
26
|
+
* - Bypass via --no-verify (git allows; outside our control here)
|
|
27
|
+
* - Habituation if false-positive rate too high
|
|
28
|
+
* - Self-reference: scanner code itself contains trip-vocab
|
|
29
|
+
* strings (it has to, to detect them) — must be allowlisted
|
|
30
|
+
* - Description-of-antipattern vs invocation-of-antipattern —
|
|
31
|
+
* strict scan flags both; we allow per-line acknowledgment
|
|
32
|
+
*
|
|
33
|
+
* Predictor — the falsifiable claim:
|
|
34
|
+
* "scanForTripVocab(MY_35_COMMIT_DIFF) returns at least 2 violations
|
|
35
|
+
* with trigger='best.?effort'. If not, the scanner is broken."
|
|
36
|
+
* The included regression test runs this exact assertion.
|
|
37
|
+
*
|
|
38
|
+
* Tadabbur — 4th-order consequence: commit history accumulates
|
|
39
|
+
* explicit `doctrine-self-check:` markers as audit trail. Operator
|
|
40
|
+
* can grep for "doctrine-self-check:" to see every intentional
|
|
41
|
+
* acknowledgment over time. Discipline-by-construction.
|
|
42
|
+
*
|
|
43
|
+
* Doctrine self-bind — this scanner ITSELF is on the no-graceful-
|
|
44
|
+
* degradation path: if doctrine_trigger_map.json is missing or
|
|
45
|
+
* malformed, the scanner THROWS (does NOT silently return zero
|
|
46
|
+
* violations). Silent-zero would be the antipattern.
|
|
47
|
+
*
|
|
48
|
+
* Usage:
|
|
49
|
+
* import { scanForTripVocab, formatViolations, loadDoctrineTriggers } from './self-doctrine-check.mjs';
|
|
50
|
+
* const triggers = loadDoctrineTriggers();
|
|
51
|
+
* const violations = scanForTripVocab(text, { triggers });
|
|
52
|
+
* if (violations.length > 0) console.error(formatViolations(violations));
|
|
53
|
+
*
|
|
54
|
+
* The acknowledgment-marker contract for callers:
|
|
55
|
+
* - In a commit message: a line `doctrine-self-check: <trigger> <counter-applied>`
|
|
56
|
+
* allows the named trigger across the entire commit.
|
|
57
|
+
* - On a per-line basis (in code): a comment containing
|
|
58
|
+
* `doctrine-self-check: <trigger>` adjacent (within 3 lines) to
|
|
59
|
+
* the trip-vocab match allows that specific match.
|
|
60
|
+
*
|
|
61
|
+
* Doctrine bind:
|
|
62
|
+
* - feedback_no_graceful_degradation.md — scanner fails LOUD on
|
|
63
|
+
* malformed trigger map (vs returning zero violations).
|
|
64
|
+
* - axiom_runtime_rule.admit_ignorance — every match is surfaced;
|
|
65
|
+
* acknowledgment is explicit not implicit.
|
|
66
|
+
* - clean_cognition — single scanner library; one place for the rules.
|
|
67
|
+
*
|
|
68
|
+
* Mirror: this file MUST be byte-identical between
|
|
69
|
+
* ops/claude-hooks/lib/self-doctrine-check.mjs
|
|
70
|
+
* packages/aria-connector/hooks/lib/self-doctrine-check.mjs
|
|
71
|
+
*/
|
|
72
|
+
|
|
73
|
+
import { readFileSync, existsSync } from 'node:fs';
|
|
74
|
+
import { homedir } from 'node:os';
|
|
75
|
+
import { join, dirname, resolve } from 'node:path';
|
|
76
|
+
import { fileURLToPath } from 'node:url';
|
|
77
|
+
|
|
78
|
+
const HERE = dirname(fileURLToPath(import.meta.url));
|
|
79
|
+
|
|
80
|
+
// Search order for the canonical doctrine trigger map. The runtime/state
|
|
81
|
+
// copy (synced by doctrine-trigger-map-sync.mjs) takes precedence — that's
|
|
82
|
+
// the live form gates use. Falls back to the canonical ops/ source.
|
|
83
|
+
const TRIGGER_MAP_SEARCH_PATHS = [
|
|
84
|
+
join(homedir(), '.aria', 'runtime', 'state', 'doctrine_trigger_map.json'),
|
|
85
|
+
resolve(HERE, '..', 'doctrine_trigger_map.json'),
|
|
86
|
+
// Repo-root fallback for CI / on-demand runs from non-installed locations.
|
|
87
|
+
resolve(HERE, '..', '..', '..', 'ops', 'claude-hooks', 'doctrine_trigger_map.json'),
|
|
88
|
+
];
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* Load the canonical doctrine trigger map.
|
|
92
|
+
* Throws if no map can be found OR if the JSON is malformed — never
|
|
93
|
+
* returns a silently-empty trigger list (that would be the silent-fail
|
|
94
|
+
* antipattern this scanner exists to detect elsewhere).
|
|
95
|
+
*
|
|
96
|
+
* @returns {Array<{ trigger: string, memory: string, teaching: string, counter_action: string, regex: RegExp }>}
|
|
97
|
+
*/
|
|
98
|
+
export function loadDoctrineTriggers() {
|
|
99
|
+
let path = null;
|
|
100
|
+
for (const candidate of TRIGGER_MAP_SEARCH_PATHS) {
|
|
101
|
+
if (existsSync(candidate)) { path = candidate; break; }
|
|
102
|
+
}
|
|
103
|
+
if (!path) {
|
|
104
|
+
throw new Error(
|
|
105
|
+
`[self-doctrine-check] doctrine_trigger_map.json not found. ` +
|
|
106
|
+
`Searched: ${TRIGGER_MAP_SEARCH_PATHS.join(', ')}`,
|
|
107
|
+
);
|
|
108
|
+
}
|
|
109
|
+
let raw;
|
|
110
|
+
try {
|
|
111
|
+
raw = readFileSync(path, 'utf8');
|
|
112
|
+
} catch (err) {
|
|
113
|
+
throw new Error(`[self-doctrine-check] failed to read ${path}: ${err.message}`);
|
|
114
|
+
}
|
|
115
|
+
let parsed;
|
|
116
|
+
try {
|
|
117
|
+
parsed = JSON.parse(raw);
|
|
118
|
+
} catch (err) {
|
|
119
|
+
throw new Error(`[self-doctrine-check] doctrine map at ${path} is malformed JSON: ${err.message}`);
|
|
120
|
+
}
|
|
121
|
+
const triggers = Array.isArray(parsed?.triggers) ? parsed.triggers : [];
|
|
122
|
+
if (triggers.length === 0) {
|
|
123
|
+
throw new Error(`[self-doctrine-check] doctrine map at ${path} has no triggers`);
|
|
124
|
+
}
|
|
125
|
+
// Pre-compile regex per entry. Malformed regex surfaces with a named
|
|
126
|
+
// entry (was: silent skip in collectDriftHits per M0.H.6).
|
|
127
|
+
return triggers.map((entry, index) => {
|
|
128
|
+
let regex;
|
|
129
|
+
try {
|
|
130
|
+
regex = new RegExp(entry.trigger, 'gi');
|
|
131
|
+
} catch (err) {
|
|
132
|
+
throw new Error(
|
|
133
|
+
`[self-doctrine-check] doctrine map entry ${index} (${entry.trigger}) has invalid regex: ${err.message}`,
|
|
134
|
+
);
|
|
135
|
+
}
|
|
136
|
+
return {
|
|
137
|
+
trigger: String(entry.trigger || ''),
|
|
138
|
+
memory: String(entry.memory || ''),
|
|
139
|
+
teaching: String(entry.teaching || ''),
|
|
140
|
+
counter_action: String(entry.counter_action || ''),
|
|
141
|
+
regex,
|
|
142
|
+
};
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
/**
|
|
147
|
+
* Scan text for trip-vocab matches against the doctrine trigger map.
|
|
148
|
+
*
|
|
149
|
+
* @param {string} text the input to scan (diff content, commit message, etc.)
|
|
150
|
+
* @param {Object} opts
|
|
151
|
+
* @param {Array} opts.triggers pre-loaded triggers (from loadDoctrineTriggers)
|
|
152
|
+
* @param {string[]} [opts.acknowledged] list of trigger strings the caller
|
|
153
|
+
* has already acknowledged (e.g., from a commit-message `doctrine-self-check:`
|
|
154
|
+
* line). Matches against acknowledged triggers are filtered from output.
|
|
155
|
+
* @returns {Array<{
|
|
156
|
+
* trigger: string, memory: string, teaching: string, counter_action: string,
|
|
157
|
+
* match: string, line_number: number, line_text: string,
|
|
158
|
+
* has_inline_acknowledgment: boolean,
|
|
159
|
+
* }>}
|
|
160
|
+
*/
|
|
161
|
+
export function scanForTripVocab(text, opts = {}) {
|
|
162
|
+
const triggers = opts.triggers;
|
|
163
|
+
if (!Array.isArray(triggers) || triggers.length === 0) {
|
|
164
|
+
throw new Error('[self-doctrine-check] scanForTripVocab requires opts.triggers (load via loadDoctrineTriggers)');
|
|
165
|
+
}
|
|
166
|
+
const acknowledged = (opts.acknowledged || []).map(String);
|
|
167
|
+
let src = String(text || '');
|
|
168
|
+
if (!src) return [];
|
|
169
|
+
|
|
170
|
+
// Auto-detect unified-diff format and filter to added lines only.
|
|
171
|
+
// Heuristic: presence of `diff --git` header OR `^@@ ` hunk header anywhere.
|
|
172
|
+
// When detected, keep only `+`-prefix lines (excluding the `+++` file
|
|
173
|
+
// headers). Context lines (` `-prefix) are repo content NOT being added by
|
|
174
|
+
// this commit — flagging them would be a false positive for the staged
|
|
175
|
+
// commit. Removed lines (`-`-prefix) are being removed and are not in
|
|
176
|
+
// the post-commit state, so they don't apply either.
|
|
177
|
+
const looksLikeDiff = /(^|\n)(?:diff --git |@@ )/.test(src);
|
|
178
|
+
if (looksLikeDiff) {
|
|
179
|
+
const filteredLines = [];
|
|
180
|
+
for (const line of src.split('\n')) {
|
|
181
|
+
if (line.startsWith('+++ ')) continue; // file header, not content
|
|
182
|
+
if (line.startsWith('+')) {
|
|
183
|
+
filteredLines.push(line.slice(1)); // strip the `+` prefix
|
|
184
|
+
} else {
|
|
185
|
+
filteredLines.push(''); // preserve line numbering
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
src = filteredLines.join('\n');
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
const lines = src.split('\n');
|
|
192
|
+
const violations = [];
|
|
193
|
+
|
|
194
|
+
for (const t of triggers) {
|
|
195
|
+
// Reset regex lastIndex (we share regex across scans with /g).
|
|
196
|
+
t.regex.lastIndex = 0;
|
|
197
|
+
let m;
|
|
198
|
+
while ((m = t.regex.exec(src)) !== null) {
|
|
199
|
+
const matchedText = m[0];
|
|
200
|
+
// Compute line number from match index.
|
|
201
|
+
const upToMatch = src.slice(0, m.index);
|
|
202
|
+
const lineNumber = upToMatch.split('\n').length;
|
|
203
|
+
const lineText = lines[lineNumber - 1] || '';
|
|
204
|
+
// Per-commit acknowledgment: any acknowledgment line whose text
|
|
205
|
+
// contains the trigger pattern (case-insensitive substring match)
|
|
206
|
+
// applies to all matches of that trigger across this commit.
|
|
207
|
+
const tLower = t.trigger.toLowerCase();
|
|
208
|
+
const isAcknowledged = acknowledged.some((a) => {
|
|
209
|
+
const aLower = String(a).toLowerCase();
|
|
210
|
+
return aLower.includes(tLower);
|
|
211
|
+
});
|
|
212
|
+
if (isAcknowledged) continue;
|
|
213
|
+
// Per-line acknowledgment: search ±3 lines around the match for
|
|
214
|
+
// `doctrine-self-check: <trigger>` comment.
|
|
215
|
+
const windowStart = Math.max(0, lineNumber - 4);
|
|
216
|
+
const windowEnd = Math.min(lines.length, lineNumber + 3);
|
|
217
|
+
const windowText = lines.slice(windowStart, windowEnd).join('\n').toLowerCase();
|
|
218
|
+
const inlineAckRx = /doctrine-self-check:\s*(.+?)(?:$|\n)/gim;
|
|
219
|
+
let hasInlineAck = false;
|
|
220
|
+
let am;
|
|
221
|
+
while ((am = inlineAckRx.exec(windowText)) !== null) {
|
|
222
|
+
if (am[1].toLowerCase().includes(tLower)) { hasInlineAck = true; break; }
|
|
223
|
+
}
|
|
224
|
+
if (hasInlineAck) continue;
|
|
225
|
+
// Self-reference allowlist: lines that ARE the trigger map itself
|
|
226
|
+
// (the trigger string is present in JSON form for legitimate reasons).
|
|
227
|
+
// Heuristic: skip lines containing `"trigger":` JSON syntax.
|
|
228
|
+
if (/"trigger":\s*"/.test(lineText)) continue;
|
|
229
|
+
|
|
230
|
+
violations.push({
|
|
231
|
+
trigger: t.trigger,
|
|
232
|
+
memory: t.memory,
|
|
233
|
+
teaching: t.teaching,
|
|
234
|
+
counter_action: t.counter_action,
|
|
235
|
+
match: matchedText,
|
|
236
|
+
line_number: lineNumber,
|
|
237
|
+
line_text: lineText.slice(0, 200),
|
|
238
|
+
has_inline_acknowledgment: false,
|
|
239
|
+
});
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
return violations;
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
/**
|
|
247
|
+
* Extract `doctrine-self-check: <trigger-expression> <counter-action>`
|
|
248
|
+
* markers from a commit message. Returns the list of acknowledgment
|
|
249
|
+
* lines (the full text after `doctrine-self-check:` up to end-of-line).
|
|
250
|
+
*
|
|
251
|
+
* Acknowledgment matches a trigger when the ack line contains the
|
|
252
|
+
* trigger's literal text as a substring (case-insensitive) — this lets
|
|
253
|
+
* multi-word triggers (e.g. the literal phrase the doctrine map counters)
|
|
254
|
+
* or regex-source triggers be acknowledged with the literal trigger
|
|
255
|
+
* doctrine-self-check: graceful degradation describing-the-trigger-shape-the-API-supports
|
|
256
|
+
* string in the ack line.
|
|
257
|
+
*/
|
|
258
|
+
export function parseAcknowledgments(commitMessage) {
|
|
259
|
+
const src = String(commitMessage || '');
|
|
260
|
+
const ack = [];
|
|
261
|
+
const rx = /doctrine-self-check:\s*(.+?)\s*$/gim;
|
|
262
|
+
let m;
|
|
263
|
+
while ((m = rx.exec(src)) !== null) {
|
|
264
|
+
ack.push(m[1].trim());
|
|
265
|
+
}
|
|
266
|
+
return ack;
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
/**
|
|
270
|
+
* Format violations for human-readable output.
|
|
271
|
+
*/
|
|
272
|
+
export function formatViolations(violations) {
|
|
273
|
+
if (!violations || violations.length === 0) return '';
|
|
274
|
+
const lines = [];
|
|
275
|
+
lines.push('');
|
|
276
|
+
lines.push('=== ARIA SELF-DOCTRINE-CHECK ===');
|
|
277
|
+
lines.push(`${violations.length} doctrine trip-vocab match(es) detected:`);
|
|
278
|
+
lines.push('');
|
|
279
|
+
// Group by trigger for readability.
|
|
280
|
+
const byTrigger = new Map();
|
|
281
|
+
for (const v of violations) {
|
|
282
|
+
if (!byTrigger.has(v.trigger)) byTrigger.set(v.trigger, []);
|
|
283
|
+
byTrigger.get(v.trigger).push(v);
|
|
284
|
+
}
|
|
285
|
+
let i = 0;
|
|
286
|
+
for (const [trigger, group] of byTrigger.entries()) {
|
|
287
|
+
i++;
|
|
288
|
+
const sample = group[0];
|
|
289
|
+
lines.push(`${i}. trigger: ${trigger} (${group.length} match${group.length === 1 ? '' : 'es'})`);
|
|
290
|
+
if (sample.memory) lines.push(` memory: ${sample.memory}`);
|
|
291
|
+
if (sample.teaching) lines.push(` teaching: ${sample.teaching}`);
|
|
292
|
+
if (sample.counter_action) lines.push(` counter: ${sample.counter_action}`);
|
|
293
|
+
lines.push(` first match: line ${sample.line_number}: "${sample.line_text}"`);
|
|
294
|
+
if (group.length > 1) {
|
|
295
|
+
lines.push(` other lines: ${group.slice(1).map((v) => v.line_number).join(', ')}`);
|
|
296
|
+
}
|
|
297
|
+
lines.push('');
|
|
298
|
+
}
|
|
299
|
+
lines.push('To proceed:');
|
|
300
|
+
lines.push(' (a) REWRITE the trip-vocab — remove the phrase, surface the failure, apply the counter-action.');
|
|
301
|
+
lines.push(' (b) ACKNOWLEDGE the trigger explicitly: add a line to your commit message:');
|
|
302
|
+
lines.push(' doctrine-self-check: <trigger-pattern> <counter-action-applied>');
|
|
303
|
+
lines.push(' OR add a comment near the trip-vocab line:');
|
|
304
|
+
lines.push(' # doctrine-self-check: <trigger-pattern>');
|
|
305
|
+
lines.push(' (c) Per-line description-of-antipattern (e.g., comments naming what was');
|
|
306
|
+
lines.push(' replaced) is allowed — add the inline acknowledgment to mark it.');
|
|
307
|
+
lines.push('');
|
|
308
|
+
lines.push('See ops/claude-hooks/doctrine_trigger_map.json for full counter-doctrine details.');
|
|
309
|
+
return lines.join('\n');
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
function escapeForRegex(str) {
|
|
313
|
+
return String(str).replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
export default {
|
|
317
|
+
loadDoctrineTriggers,
|
|
318
|
+
scanForTripVocab,
|
|
319
|
+
parseAcknowledgments,
|
|
320
|
+
formatViolations,
|
|
321
|
+
};
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
// Shape-based detector for sealed-material artifacts (PEM blocks, vendor
|
|
2
|
+
// prefixes, JWT bearer shapes, env assignments with high-entropy values).
|
|
3
|
+
//
|
|
4
|
+
// Replaces the bare-word regex at runtime-client.mjs that fired on benign
|
|
5
|
+
// mentions of vocabulary in code comments / variable names / error messages.
|
|
6
|
+
// Per feedback_break_action_class_loops.md the path-fix moves detection to
|
|
7
|
+
// a fresh file with structural matchers, instead of bare lexical words.
|
|
8
|
+
|
|
9
|
+
const SHAPE_PATTERNS = Object.freeze([
|
|
10
|
+
// PEM block opener — RFC 7468 framing, any label.
|
|
11
|
+
/-----BEGIN [A-Z]+( [A-Z]+)*-----/,
|
|
12
|
+
|
|
13
|
+
// Anthropic-style sealed prefix (visible vendor framing only).
|
|
14
|
+
/\bsk-ant-api0[0-9]-[A-Za-z0-9_\-]{40,}/,
|
|
15
|
+
|
|
16
|
+
// OpenAI-style sealed prefix.
|
|
17
|
+
/\bsk-(?:proj|live|test)-[A-Za-z0-9_\-]{30,}/,
|
|
18
|
+
|
|
19
|
+
// AWS access-id shape (long-lived + temporary forms).
|
|
20
|
+
/\bAKIA[0-9A-Z]{16}\b/,
|
|
21
|
+
/\bASIA[0-9A-Z]{16}\b/,
|
|
22
|
+
|
|
23
|
+
// GitHub fine-grained / server prefixes.
|
|
24
|
+
/\bghp_[A-Za-z0-9]{30,}\b/,
|
|
25
|
+
/\bghs_[A-Za-z0-9]{30,}\b/,
|
|
26
|
+
|
|
27
|
+
// Slack workspace prefixes.
|
|
28
|
+
/\bxox[abprs]-[0-9A-Za-z\-]{10,}/,
|
|
29
|
+
|
|
30
|
+
// Stripe vendor prefixes (live + test, restricted + standard).
|
|
31
|
+
/\bsk_(?:live|test)_[A-Za-z0-9]{20,}/,
|
|
32
|
+
/\brk_(?:live|test)_[A-Za-z0-9]{20,}/,
|
|
33
|
+
|
|
34
|
+
// Twilio account-SID + auth-SID shape.
|
|
35
|
+
/\bAC[0-9a-f]{32}\b/,
|
|
36
|
+
/\bSK[0-9a-f]{32}\b/,
|
|
37
|
+
|
|
38
|
+
// SendGrid full-key prefix.
|
|
39
|
+
/\bSG\.[A-Za-z0-9_\-]{22}\.[A-Za-z0-9_\-]{43}/,
|
|
40
|
+
|
|
41
|
+
// Google API-key shape (39 chars, AIza prefix).
|
|
42
|
+
/\bAIza[0-9A-Za-z_\-]{35}\b/,
|
|
43
|
+
|
|
44
|
+
// JWT bearer shape (header.payload, base64url segments).
|
|
45
|
+
/\bBearer\s+eyJ[A-Za-z0-9_\-]{15,}\.[A-Za-z0-9_\-]{15,}/,
|
|
46
|
+
|
|
47
|
+
// ENV-style assignment with high-entropy value (≥32 chars base64-ish).
|
|
48
|
+
/^[A-Z_][A-Z0-9_]{3,}\s*=\s*[A-Za-z0-9+/=_\-]{32,}\s*$/m,
|
|
49
|
+
]);
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* Returns true when the source body contains at least one structural shape
|
|
53
|
+
* matching a sealed-material artifact. Bare lexical mentions of vocabulary
|
|
54
|
+
* in comments or variable names do NOT match — only structural shapes do.
|
|
55
|
+
*/
|
|
56
|
+
export function hasSensitiveMaterialShape(source) {
|
|
57
|
+
if (typeof source !== 'string' || source.length === 0) return false;
|
|
58
|
+
for (const rx of SHAPE_PATTERNS) {
|
|
59
|
+
if (rx.test(source)) return true;
|
|
60
|
+
}
|
|
61
|
+
return false;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
export const __SHAPE_PATTERNS_FOR_TEST = SHAPE_PATTERNS;
|
|
@@ -83,11 +83,198 @@ export function classifyRequiredSkills({ text = '', action = '', toolName = '',
|
|
|
83
83
|
required.add('aria-forge-guardrails');
|
|
84
84
|
reasons.push('advisory/fail-open gate language requires fail-closed hardening discipline');
|
|
85
85
|
}
|
|
86
|
+
|
|
87
|
+
// ── Business-intent branch (Aria 2026-05-09 expansion) ───────────────────
|
|
88
|
+
// All business-shaped intents fire in advisory/teach mode (redirectOnly:true).
|
|
89
|
+
// Per owner doctrine 2026-05-09: deadlocks are anti-pattern; recovery + teaching is the lever.
|
|
90
|
+
// Skills referenced are net-new and ship to ~/.codex/skills/ via cognitive-skills.ts.
|
|
91
|
+
if (/\b(?:price|pricing|package|tier|discount|paywall|monetize|monetization|arpu|gross margin|deal|contract redline|term sheet|refund|expansion|upsell|cross-sell|cac|ltv|payback|nrr|mrr|arr)\b/i.test(c)) {
|
|
92
|
+
required.add('aria-revenue-engine');
|
|
93
|
+
required.add('aria-business-frame');
|
|
94
|
+
required.add('aria-readable-output');
|
|
95
|
+
redirectOnly = true;
|
|
96
|
+
reasons.push('revenue/pricing intent — load business-frame + revenue-engine in advisory mode');
|
|
97
|
+
}
|
|
98
|
+
if (/\b(?:gtm|go-to-market|launch|channel|distribution|positioning|message|campaign|icp|persona|audience|brand|copy|hook|headline|landing page|seo|paid|organic|referral|virality|plg|sales-led)\b/i.test(c)) {
|
|
99
|
+
required.add('aria-gtm-architect');
|
|
100
|
+
required.add('aria-business-frame');
|
|
101
|
+
required.add('aria-readable-output');
|
|
102
|
+
redirectOnly = true;
|
|
103
|
+
reasons.push('gtm/positioning intent — load business-frame + gtm-architect in advisory mode');
|
|
104
|
+
}
|
|
105
|
+
if (/\b(?:churn|retention|renewal|nps|csat|onboarding|activation|escalation|win-back|account health|customer success)\b/i.test(c)) {
|
|
106
|
+
required.add('aria-retention-engine');
|
|
107
|
+
required.add('aria-business-frame');
|
|
108
|
+
required.add('aria-readable-output');
|
|
109
|
+
redirectOnly = true;
|
|
110
|
+
reasons.push('retention/cs intent — load business-frame + retention-engine in advisory mode');
|
|
111
|
+
}
|
|
112
|
+
if (/\b(?:hire|fire|layoff|rif|comp|equity|promotion|reorg|fundraise|fundraising|valuation|board|press|public statement|category|rebrand|m&a|partnership|joint venture)\b/i.test(c)) {
|
|
113
|
+
required.add('aria-decision-mizan');
|
|
114
|
+
required.add('aria-business-frame');
|
|
115
|
+
required.add('aria-readable-output');
|
|
116
|
+
redirectOnly = true;
|
|
117
|
+
reasons.push('owner-must-decide intent — load decision-mizan in advisory mode');
|
|
118
|
+
}
|
|
119
|
+
if (/\b(?:business audit|health check|kpi review|growth diagnostic|financial diagnostic|whats?\s+broken|what should we fix)\b/i.test(c)) {
|
|
120
|
+
required.add('aria-business-audit');
|
|
121
|
+
required.add('aria-business-frame');
|
|
122
|
+
required.add('aria-readable-output');
|
|
123
|
+
redirectOnly = true;
|
|
124
|
+
reasons.push('business-audit intent — load business-audit in advisory mode');
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
// ── Build-intent branch (FE / BE / fullstack) ─────────────────────────────
|
|
128
|
+
if (/\b(?:react|vue|svelte|next\.?js|tailwind|shadcn|component|hook|landing page|design system|core web vitals|lcp|inp|cls|wcag|accessibility|ssr|rsc|ssg|isr|hydration|frontend|front-end|web ui|mobile web|responsive|dark mode|i18n|pwa)\b/i.test(c)) {
|
|
129
|
+
required.add('aria-frontend-architect');
|
|
130
|
+
required.add('aria-readable-output');
|
|
131
|
+
redirectOnly = true;
|
|
132
|
+
reasons.push('frontend intent — load frontend-architect in advisory mode');
|
|
133
|
+
}
|
|
134
|
+
if (/\b(?:api|endpoint|handler|microservice|monolith|schema|migration|orm|query|index|queue|worker|webhook|cron|idempotency|circuit breaker|rate limit|cache|jwt|oauth|rbac|multi-tenancy|slo|sli|error budget|grpc|graphql|websocket|backend|back-end|database|postgres|mysql|redis)\b/i.test(c)) {
|
|
135
|
+
required.add('aria-backend-architect');
|
|
136
|
+
required.add('aria-readable-output');
|
|
137
|
+
redirectOnly = true;
|
|
138
|
+
reasons.push('backend intent — load backend-architect in advisory mode');
|
|
139
|
+
}
|
|
140
|
+
if (/\b(?:end-to-end|e2e feature|user story|epic|prd|full-stack|fullstack|spans? both|ship.*feature|build.*feature)\b/i.test(c)) {
|
|
141
|
+
required.add('aria-fullstack-orchestrator');
|
|
142
|
+
required.add('aria-readable-output');
|
|
143
|
+
redirectOnly = true;
|
|
144
|
+
reasons.push('fullstack intent — load fullstack-orchestrator in advisory mode');
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
// ── Code-cognition pre/post branches (cookbook + audit) ──────────────────
|
|
148
|
+
if (/\b(?:write|implement|build|scaffold|refactor|extract|split).{0,40}(?:handler|endpoint|function|class|hook|component|module|service|test|migration|schema)\b/i.test(c)) {
|
|
149
|
+
required.add('aria-senior-code-cookbook');
|
|
150
|
+
required.add('aria-readable-output');
|
|
151
|
+
redirectOnly = true;
|
|
152
|
+
reasons.push('pre-code intent — load senior-code-cookbook for cookbook patterns in advisory mode');
|
|
153
|
+
}
|
|
154
|
+
if (/\bgit\s+commit\b|\bgit\s+add\b|\bgit\s+push\b|\bcommit\b.{0,80}\b(?:diff|change|patch|edit)\b/i.test(c)) {
|
|
155
|
+
required.add('aria-senior-code-audit');
|
|
156
|
+
required.add('aria-readable-output');
|
|
157
|
+
redirectOnly = true;
|
|
158
|
+
reasons.push('pre-commit intent — load senior-code-audit; recovery-grant pattern, never blocks');
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
// ── Audit & research intents ─────────────────────────────────────────────
|
|
162
|
+
if (/\b(?:repo audit|code health audit|debt audit|dependency audit|security audit|performance audit|architecture audit|drift audit|whats?.{0,5}broken in this repo)\b/i.test(c)) {
|
|
163
|
+
required.add('aria-repo-audit');
|
|
164
|
+
required.add('aria-readable-output');
|
|
165
|
+
redirectOnly = true;
|
|
166
|
+
reasons.push('repo-audit intent — load repo-audit in advisory mode');
|
|
167
|
+
}
|
|
168
|
+
if (/\b(?:research|look up|find current|what.s? the (?:latest|current)|competitive research|market sizing|benchmark|comp(?:etitor)? analysis|vendor evaluation)\b/i.test(c)) {
|
|
169
|
+
required.add('aria-research-orchestrator');
|
|
170
|
+
required.add('aria-readable-output');
|
|
171
|
+
redirectOnly = true;
|
|
172
|
+
reasons.push('research intent — load research-orchestrator in advisory mode');
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
// ── Prose-shape trigger expansion (2026-05-12 substrate-provisioning upgrade) ──
|
|
176
|
+
// Foundation layer per the three-layer architecture (substrate provisioning →
|
|
177
|
+
// substrate binding → enforcement). The tool-class triggers above cover
|
|
178
|
+
// explicit-action prompts (deploy/edit/etc.); these five classes cover
|
|
179
|
+
// prose-shape prompts where the doctrine routing must happen by intent
|
|
180
|
+
// recognition not keyword matching.
|
|
181
|
+
//
|
|
182
|
+
// Diagnosed across the 2026-05-12 session: every audit-retraction cycle
|
|
183
|
+
// traced back to autoload not firing the right substrate (aria-repo-audit
|
|
184
|
+
// + aria-quality-audit + never-guess) because the prompts didn't match
|
|
185
|
+
// the narrow tool-class triggers. The five classes below cover the
|
|
186
|
+
// doctrine-needs the prior session demonstrated.
|
|
187
|
+
//
|
|
188
|
+
// Audit-class — owner asks for a review, diagnostic, or "what's broken"
|
|
189
|
+
if (/\baudit\b|\breview\s+(?:the\s+)?(?:code|repo|deploy|architecture|design|prs?|pr\b)|\bwhat(?:'s| is)? broken\b|\bcode review\b|\bhealth check\b|\bdiagnostic\b|\bdrift audit\b|\bdebt audit\b|\bsecurity review\b|\bquality audit\b/i.test(c)) {
|
|
190
|
+
required.add('aria-repo-audit');
|
|
191
|
+
required.add('aria-quality-audit');
|
|
192
|
+
required.add('never-guess');
|
|
193
|
+
reasons.push('audit/review/diagnostic prompt requires audit substrate before drafting (repo-audit + quality-audit + never-guess for content reads not name-matching)');
|
|
194
|
+
}
|
|
195
|
+
// Research-class — owner asks for external evidence acquisition
|
|
196
|
+
if (/\bresearch\b|\blook(?:\s+up)?\b|\bfind out\b|\binvestigate\b|\bcompetitive analysis\b|\bmarket sizing\b|\bvendor evaluation\b|\bbenchmark\b|\bsource verification\b|\bdig into\b/i.test(c)) {
|
|
197
|
+
required.add('aria-research-orchestrator');
|
|
198
|
+
required.add('never-guess');
|
|
199
|
+
reasons.push('research/evidence-acquisition prompt requires research-orchestrator + never-guess to anchor every claim to a source');
|
|
200
|
+
}
|
|
201
|
+
// Decision-class — owner-must-decide turn type per aria-decision-mizan doctrine
|
|
202
|
+
if (/\bshould (?:we|i)\b|\bhire\b|\bfire\b|\blayoff\b|\brif\b|\bpric(?:e|ing|er)\b|\bdiscount\b|\bfundrais(?:e|ing)\b|\bvaluation\b|\bterm sheet\b|\bequity grant\b|\brefund\b|\brebrand\b|\bm&a\b|\bjoint venture\b|\bcontract redline\b|\bpublic statement\b/i.test(c)) {
|
|
203
|
+
required.add('aria-decision-mizan');
|
|
204
|
+
required.add('aria-business-frame');
|
|
205
|
+
reasons.push('owner-must-decide intent requires decision-mizan (refuse-to-choose-for-owner) + business-frame');
|
|
206
|
+
}
|
|
207
|
+
// Prose-drift class — language patterns that signal the agent slipping
|
|
208
|
+
// into recommendation/dismissal mode without doctrine; drift scanner in
|
|
209
|
+
// aria-harness-output-discipline catches these but must be loaded first.
|
|
210
|
+
if (/\bi'?ll\s+(?:recommend|create|file|author|track|draft|propose|suggest)\b|\bwant me to\b|\bshould i\b|\bi\s+(?:recommend|propose|suggest)\b|\bunrelated to (?:my|the|the)\s|\bpre[- ]?existing\b|\bout of scope\b|\bnot blocking\b|\bside (?:concern|issue)\b|\bnot my (?:problem|issue|concern)\b/i.test(c)) {
|
|
211
|
+
required.add('aria-harness-output-discipline');
|
|
212
|
+
required.add('aria-conversational-doctrine-discipline');
|
|
213
|
+
reasons.push('prose-drift phrasing (recommendation/dismissal/asking) requires output-discipline + conversational-doctrine to police the slip');
|
|
214
|
+
}
|
|
215
|
+
// Repair-class — fix/debug/diagnose intent; loads doctrine that prevents
|
|
216
|
+
// band-aid fixes and forces root-cause reads instead of guessing.
|
|
217
|
+
if (/\bfix the\b|\brepair the\b|\brestore the\b|\bdebug\b|\bdiagnose\b|\broot cause\b|\bwhy (?:is|isn'?t|did|doesn'?t) (?:it|this|that)\b|\btroubleshoot\b/i.test(c)) {
|
|
218
|
+
required.add('never-guess');
|
|
219
|
+
required.add('aria-forge-guardrails');
|
|
220
|
+
reasons.push('repair/debug intent requires never-guess (read state first) + forge-guardrails (no fake fixes)');
|
|
221
|
+
}
|
|
86
222
|
return { requiredSkills: [...required].sort(), recoveryMissing: [...new Set(recoveryMissing)], reasons, redirectOnly };
|
|
87
223
|
}
|
|
88
224
|
|
|
89
225
|
export function evaluateSkillGate(options = {}) {
|
|
90
|
-
const
|
|
226
|
+
const hasRequiredSkillsOverride = Array.isArray(options.requiredSkillsOverride);
|
|
227
|
+
const c = hasRequiredSkillsOverride
|
|
228
|
+
? {
|
|
229
|
+
requiredSkills: [...new Set(options.requiredSkillsOverride.filter((skill) => typeof skill === 'string' && skill.trim()).map((skill) => skill.trim()))].sort(),
|
|
230
|
+
recoveryMissing: [],
|
|
231
|
+
reasons: [options.requiredSkillsReason || 'orchestration manifest intent.workflow_skills_to_invoke supplied required skills'],
|
|
232
|
+
redirectOnly: false,
|
|
233
|
+
}
|
|
234
|
+
: classifyRequiredSkills(options);
|
|
235
|
+
// additionalRequiredSkills augments (does not replace) the classifier/override
|
|
236
|
+
// output. Used by the pre-tool gate to layer Atlas dossier governing_skills
|
|
237
|
+
// on top of the keyword classifier — explicit per-file bindings AND
|
|
238
|
+
// intent-shape inference, not one or the other.
|
|
239
|
+
//
|
|
240
|
+
// Payload cap (Qiyas Q15 finding, 2026-05-17): once Phase 2D concept-keyword
|
|
241
|
+
// matching lands, a single file may collect 100+ governing skills via
|
|
242
|
+
// semantic overlap. The autoload manifest is hot-path content injected on
|
|
243
|
+
// every prompt — an uncapped merge would balloon it. Cap to top-N and
|
|
244
|
+
// surface the truncation LOUDly so it never silently drops important
|
|
245
|
+
// skills (per feedback_no_silent_fail_open_in_hooks.md). The cap is high
|
|
246
|
+
// enough that today's sparse GOVERNS (≤5 skills/file) is unaffected;
|
|
247
|
+
// future concept-match growth surfaces the cap with a LOUD stderr line
|
|
248
|
+
// instead of silently truncating.
|
|
249
|
+
const ADDITIONAL_SKILLS_CAP = Number.isFinite(options.additionalRequiredSkillsCap)
|
|
250
|
+
? Math.max(1, Math.min(100, options.additionalRequiredSkillsCap))
|
|
251
|
+
: 20;
|
|
252
|
+
if (Array.isArray(options.additionalRequiredSkills) && options.additionalRequiredSkills.length > 0) {
|
|
253
|
+
const cleaned = options.additionalRequiredSkills
|
|
254
|
+
.filter((skill) => typeof skill === 'string' && skill.trim())
|
|
255
|
+
.map((skill) => skill.trim());
|
|
256
|
+
const dedupedInOrder = [...new Set(cleaned)];
|
|
257
|
+
const overCap = dedupedInOrder.length > ADDITIONAL_SKILLS_CAP;
|
|
258
|
+
const extras = overCap ? dedupedInOrder.slice(0, ADDITIONAL_SKILLS_CAP) : dedupedInOrder;
|
|
259
|
+
if (overCap) {
|
|
260
|
+
// LOUD per feedback_no_silent_fail_open_in_hooks.md — truncation must
|
|
261
|
+
// be visible to next-turn substrate scanners so the cap can be tuned
|
|
262
|
+
// if it ever drops a load-bearing skill.
|
|
263
|
+
try {
|
|
264
|
+
process.stderr.write(
|
|
265
|
+
`[skill-autoload-gate:additional_skills_capped] cap=${ADDITIONAL_SKILLS_CAP} ` +
|
|
266
|
+
`received=${dedupedInOrder.length} dropped=${dedupedInOrder.length - extras.length} ` +
|
|
267
|
+
`dropped_names=${dedupedInOrder.slice(ADDITIONAL_SKILLS_CAP).join(',')}\n`,
|
|
268
|
+
);
|
|
269
|
+
} catch { /* stderr unavailable; cap still applied */ }
|
|
270
|
+
}
|
|
271
|
+
if (extras.length > 0) {
|
|
272
|
+
const merged = new Set([...c.requiredSkills, ...extras]);
|
|
273
|
+
c.requiredSkills = [...merged].sort();
|
|
274
|
+
const capNote = overCap ? ` (capped from ${dedupedInOrder.length})` : '';
|
|
275
|
+
c.reasons = [...(c.reasons || []), `atlas dossier supplied ${extras.length} governing skill(s)${capNote} for target file: ${extras.join(', ')}`];
|
|
276
|
+
}
|
|
277
|
+
}
|
|
91
278
|
const body = [options.text, options.action].filter(Boolean).join('\n');
|
|
92
279
|
const loaded = collectLoadedSkills(options, body);
|
|
93
280
|
const contractEvidence = collectContractEvidence(options, body);
|
|
@@ -97,6 +284,44 @@ export function evaluateSkillGate(options = {}) {
|
|
|
97
284
|
return { ok: c.redirectOnly === true || (missingSkills.length === 0 && recoveryMissing.length === 0), redirectOnly: c.redirectOnly === true, surface: options.surface || 'unknown', sessionId: options.sessionId || 'unknown', requiredSkills: c.requiredSkills, loadedSkills: [...loaded].sort(), contractEvidence: [...contractEvidence].sort(), missingSkills, recoveryMissing, reasons: c.reasons, autoLoadAvailable: options.autoLoadAvailable === true };
|
|
98
285
|
}
|
|
99
286
|
|
|
287
|
+
// AI-11803-LOOP1 (2026-05-12): cascade autoload primitive.
|
|
288
|
+
// Parses a skill body for sections that declare downstream skill dependencies
|
|
289
|
+
// (Load First / Mode Selection / Load Order / Ta'aqqul Autofire Pattern), and
|
|
290
|
+
// returns the candidate skill names extracted from backtick-quoted tokens.
|
|
291
|
+
// The autoload hook is responsible for filtering against actual skill-dir
|
|
292
|
+
// existence — this function does not touch the filesystem.
|
|
293
|
+
const CASCADE_HEADINGS = [
|
|
294
|
+
'load first',
|
|
295
|
+
'mode selection',
|
|
296
|
+
'load order',
|
|
297
|
+
"ta'aqqul autofire pattern",
|
|
298
|
+
];
|
|
299
|
+
|
|
300
|
+
export function parseLoadFirstSection(skillBody) {
|
|
301
|
+
if (typeof skillBody !== 'string' || !skillBody) return [];
|
|
302
|
+
const skills = new Set();
|
|
303
|
+
const headingPattern = CASCADE_HEADINGS
|
|
304
|
+
.map((h) => h.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'))
|
|
305
|
+
.join('|');
|
|
306
|
+
const sectionRx = new RegExp(
|
|
307
|
+
`^##\\s+(?:${headingPattern})\\b[^\\n]*\\n([\\s\\S]*?)(?=\\n##\\s)`,
|
|
308
|
+
'gim',
|
|
309
|
+
);
|
|
310
|
+
const tokenRx = /`([a-z][a-z0-9_-]*)`/g;
|
|
311
|
+
for (const m of skillBody.matchAll(sectionRx)) {
|
|
312
|
+
const section = m[1] || '';
|
|
313
|
+
for (const t of section.matchAll(tokenRx)) {
|
|
314
|
+
const name = t[1];
|
|
315
|
+
if (!name) continue;
|
|
316
|
+
// Lib stays a pure candidate extractor. Mode-label noise (`light`, `qa`,
|
|
317
|
+
// `batch`, `fleet`, `hard-stop`) flows through here; the autoload's
|
|
318
|
+
// existsSync(SKILLS_DIR/<name>/SKILL.md) is the canonical filter.
|
|
319
|
+
skills.add(name);
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
return [...skills];
|
|
323
|
+
}
|
|
324
|
+
|
|
100
325
|
export function formatSkillGateBlock(result = {}) {
|
|
101
326
|
const m = result.missingSkills || [], r = result.recoveryMissing || [], reasons = result.reasons || [];
|
|
102
327
|
return ['=== ARIA SKILL AUTOLOAD GATE BLOCK ===', `surface: ${result.surface || 'unknown'}`, `missing_skills: ${m.length ? m.join(', ') : '(none)'}`, `missing_recovery_cycle: ${r.length ? r.join(', ') : '(none)'}`, `required_skills: ${(result.requiredSkills || []).join(', ') || '(none)'}`, reasons.length ? `reasons: ${reasons.join(' | ')}` : 'reasons: no classifier reason recorded', 'Recovery contract:', '1. Do not retry the same blocked text.', `2. Load missing skills first: ${m.length ? m.join(', ') : '(none)'}`, `3. Repair missing recovery cycle items: ${r.length ? r.join(', ') : '(none)'}`, '4. Re-write with concrete proof and an applied_cognition block:', '<applied_cognition>', 'decision_delta: <what changed after the block>', 'dominant_domain: <deploy|code|security|testing|ops|product|writing>', 'binds_to: <specific file, command, endpoint, or user instruction>', 'expected_predicate: <measurable condition such as exit=0, status=healthy, count=N>', 'artifact_change: <exact artifact changed or none>', '</applied_cognition>', '5. Re-test using the concrete command/probe named in the block.', '6. Re-submit only after the proof exists; if blocked twice, escalate through ARIA console/MCP with this full block.'].join('\n');
|