@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,221 @@
|
|
|
1
|
+
// atlas-orchestrator-postwire — post-turn enrichment writeback for the
|
|
2
|
+
// atlas-as-orchestrator pre/intra/post wire.
|
|
3
|
+
//
|
|
4
|
+
// Called from aria-stop-gate.mjs (and any other Stop-class surface) BEFORE
|
|
5
|
+
// the emergency-gateoff check so adherence/QA data is persisted on every
|
|
6
|
+
// non-empty turn regardless of gates-on/off state. The hive WAL append is
|
|
7
|
+
// substrate enrichment, not gate enforcement — gates-off should not silence
|
|
8
|
+
// the learning loop.
|
|
9
|
+
//
|
|
10
|
+
// Operates on:
|
|
11
|
+
// 1. event.transcript_path → walk for Skill tool_use invocations.
|
|
12
|
+
// 2. ~/.claude/.aria-current-turn-context.json → sidecar carries the
|
|
13
|
+
// atlas selections persisted by the pre-emit autoload.
|
|
14
|
+
// 3. runEndOfPhaseQaAutofire → full Qiyas-15 + Tadabbur-12 court receipt
|
|
15
|
+
// anchored to the adherence observation.
|
|
16
|
+
//
|
|
17
|
+
// Schemas emitted (next turn's pre-emit reads these as substrate):
|
|
18
|
+
// aria.atlas_orchestrator_turn_outcome.v1
|
|
19
|
+
// aria.end_of_phase_qa_court.v1 (when court ran)
|
|
20
|
+
// aria.atlas_orchestrator_hardening_directive.v1 (conditional on gap or
|
|
21
|
+
// non-verified court verdict; pre-emit autoload consumes this to
|
|
22
|
+
// force-add the missed skills to invocationRequired)
|
|
23
|
+
//
|
|
24
|
+
// LOUD-stderr on every error path per
|
|
25
|
+
// feedback_no_silent_fail_open_in_hooks.md. Returns a summary object the
|
|
26
|
+
// caller can include in its own telemetry; the WAL is the durable receipt.
|
|
27
|
+
|
|
28
|
+
import { readFileSync, existsSync, appendFileSync, mkdirSync } from 'node:fs';
|
|
29
|
+
import { dirname } from 'node:path';
|
|
30
|
+
import { homedir } from 'node:os';
|
|
31
|
+
import { runEndOfPhaseQaAutofire } from './end-phase-qa-autofire.mjs';
|
|
32
|
+
|
|
33
|
+
const HOME = homedir();
|
|
34
|
+
const HIVE_WAL_PATH = `${HOME}/.aria/runtime/state/hive-ledger-wal.jsonl`;
|
|
35
|
+
const SIDECAR_TURN_CONTEXT_PATH = `${HOME}/.claude/.aria-current-turn-context.json`;
|
|
36
|
+
const LOG = '[atlas-orchestrator-postwire]';
|
|
37
|
+
|
|
38
|
+
function loudErr(reason, detail) {
|
|
39
|
+
try {
|
|
40
|
+
process.stderr.write(`${LOG}:${reason} ${detail}\n`);
|
|
41
|
+
} catch { /* stderr may be closed */ }
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
export function runAtlasOrchestratorPostWire({ event }) {
|
|
45
|
+
const summary = {
|
|
46
|
+
selected: 0,
|
|
47
|
+
honored: 0,
|
|
48
|
+
gap: 0,
|
|
49
|
+
adherenceRatio: 1,
|
|
50
|
+
invoked: 0,
|
|
51
|
+
qaVerdict: null,
|
|
52
|
+
walAppended: false,
|
|
53
|
+
hardeningEmitted: false,
|
|
54
|
+
};
|
|
55
|
+
try {
|
|
56
|
+
const transcriptPath = event?.transcript_path ?? event?.transcriptPath ?? null;
|
|
57
|
+
const sessionId = String(event?.session_id || 'unknown');
|
|
58
|
+
|
|
59
|
+
// 1. Walk transcript for invoked Skill names.
|
|
60
|
+
const invokedSkillsSet = new Set();
|
|
61
|
+
if (transcriptPath && existsSync(transcriptPath)) {
|
|
62
|
+
try {
|
|
63
|
+
const lines = readFileSync(transcriptPath, 'utf-8').split('\n').filter(Boolean);
|
|
64
|
+
for (const line of lines) {
|
|
65
|
+
try {
|
|
66
|
+
const m = JSON.parse(line);
|
|
67
|
+
const role = m.message?.role ?? m.role;
|
|
68
|
+
if (role !== 'assistant') continue;
|
|
69
|
+
const content = m.message?.content ?? m.content ?? [];
|
|
70
|
+
if (!Array.isArray(content)) continue;
|
|
71
|
+
for (const block of content) {
|
|
72
|
+
if (block && block.type === 'tool_use' && block.name === 'Skill') {
|
|
73
|
+
const skillName = block.input?.skill || block.input?.name || null;
|
|
74
|
+
if (typeof skillName === 'string' && skillName.trim()) {
|
|
75
|
+
invokedSkillsSet.add(skillName.trim());
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
} catch { /* line-parse fail acceptable on partial jsonl */ }
|
|
80
|
+
}
|
|
81
|
+
} catch (transcriptErr) {
|
|
82
|
+
loudErr('transcript_read', transcriptErr instanceof Error ? transcriptErr.message : String(transcriptErr));
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
const invokedSkills = [...invokedSkillsSet];
|
|
86
|
+
|
|
87
|
+
// 2. Read sidecar atlas selections persisted by pre-emit.
|
|
88
|
+
let sidecarOrchestrator = null;
|
|
89
|
+
let sidecarSelection = null;
|
|
90
|
+
let sidecarInvocationRequired = [];
|
|
91
|
+
if (existsSync(SIDECAR_TURN_CONTEXT_PATH)) {
|
|
92
|
+
try {
|
|
93
|
+
const sidecarRaw = readFileSync(SIDECAR_TURN_CONTEXT_PATH, 'utf8');
|
|
94
|
+
const sidecarParsed = JSON.parse(sidecarRaw);
|
|
95
|
+
sidecarOrchestrator = sidecarParsed?.atlasOrchestrator || null;
|
|
96
|
+
sidecarSelection = sidecarParsed?.atlasSelection || null;
|
|
97
|
+
sidecarInvocationRequired = Array.isArray(sidecarParsed?.invocationRequired)
|
|
98
|
+
? sidecarParsed.invocationRequired
|
|
99
|
+
: [];
|
|
100
|
+
} catch (sidecarErr) {
|
|
101
|
+
loudErr('sidecar_parse', sidecarErr instanceof Error ? sidecarErr.message : String(sidecarErr));
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
const selectedByDossier = Array.isArray(sidecarOrchestrator?.governingSkills)
|
|
105
|
+
? sidecarOrchestrator.governingSkills.filter((s) => typeof s === 'string')
|
|
106
|
+
: [];
|
|
107
|
+
const selectedByKernel = Array.isArray(sidecarSelection?.selectedSkillIds)
|
|
108
|
+
? sidecarSelection.selectedSkillIds.filter((s) => typeof s === 'string')
|
|
109
|
+
: [];
|
|
110
|
+
const selectedSet = new Set([...selectedByDossier, ...selectedByKernel]);
|
|
111
|
+
const selected = [...selectedSet];
|
|
112
|
+
const gap = selected.filter((s) => !invokedSkillsSet.has(s));
|
|
113
|
+
const honored = selected.filter((s) => invokedSkillsSet.has(s));
|
|
114
|
+
const adherenceRatio = selected.length > 0 ? Number((honored.length / selected.length).toFixed(3)) : 1;
|
|
115
|
+
|
|
116
|
+
summary.selected = selected.length;
|
|
117
|
+
summary.honored = honored.length;
|
|
118
|
+
summary.gap = gap.length;
|
|
119
|
+
summary.adherenceRatio = adherenceRatio;
|
|
120
|
+
summary.invoked = invokedSkills.length;
|
|
121
|
+
|
|
122
|
+
// 3. Run end-of-phase QA court on the adherence observation. The court
|
|
123
|
+
// generates full Qiyas-15 + Tadabbur-12 evidence anchored to a kernel
|
|
124
|
+
// verdict. Gate-off does NOT skip the court — substrate enrichment runs.
|
|
125
|
+
// runEndOfPhaseQaAutofire returns {ok, receipt, latestPath, eventPath};
|
|
126
|
+
// the actual court receipt is nested under .receipt.
|
|
127
|
+
const adherenceSummary = `Atlas orchestrator adherence: ${honored.length}/${selected.length} skills honored, ${gap.length} gap. Invoked: [${invokedSkills.join(', ')}]. Selected-by-atlas: [${selected.join(', ')}].`;
|
|
128
|
+
let qaResult = null;
|
|
129
|
+
let qaCourtReceipt = null;
|
|
130
|
+
try {
|
|
131
|
+
qaResult = runEndOfPhaseQaAutofire({
|
|
132
|
+
sessionId,
|
|
133
|
+
phase: 'atlas_orchestrator_adherence',
|
|
134
|
+
trigger: 'stop_gate_atlas_postwire',
|
|
135
|
+
text: adherenceSummary,
|
|
136
|
+
source: 'aria-stop-gate-atlas-postwire',
|
|
137
|
+
autoRecoverPartial: false,
|
|
138
|
+
});
|
|
139
|
+
qaCourtReceipt = qaResult?.receipt || null;
|
|
140
|
+
} catch (qaErr) {
|
|
141
|
+
loudErr('qa_court_error', qaErr instanceof Error ? qaErr.message : String(qaErr));
|
|
142
|
+
}
|
|
143
|
+
// claim-gate verdict lives at receipt.claim_gate.verdict (top-level on
|
|
144
|
+
// the receipt — autofire is a sibling key, not the parent).
|
|
145
|
+
const qaVerdict = qaCourtReceipt?.claim_gate?.verdict
|
|
146
|
+
|| qaCourtReceipt?.autofire?.claim_gate?.verdict
|
|
147
|
+
|| qaCourtReceipt?.verdict
|
|
148
|
+
|| null;
|
|
149
|
+
const qaHardBlock = qaCourtReceipt?.hardBlock === true;
|
|
150
|
+
summary.qaVerdict = qaVerdict;
|
|
151
|
+
|
|
152
|
+
// 4. Build outcome event + append to hive WAL.
|
|
153
|
+
const at = new Date().toISOString();
|
|
154
|
+
const walEvent = {
|
|
155
|
+
schema: 'aria.atlas_orchestrator_turn_outcome.v1',
|
|
156
|
+
at,
|
|
157
|
+
session_id: sessionId,
|
|
158
|
+
surface: 'claude-code',
|
|
159
|
+
selectedByAtlas: {
|
|
160
|
+
dossier: selectedByDossier,
|
|
161
|
+
kernelClass: selectedByKernel,
|
|
162
|
+
total: selected.length,
|
|
163
|
+
},
|
|
164
|
+
invokedSkills,
|
|
165
|
+
honored,
|
|
166
|
+
gap,
|
|
167
|
+
adherenceRatio,
|
|
168
|
+
invocationRequiredCount: sidecarInvocationRequired.length,
|
|
169
|
+
kernelObservationKind: sidecarSelection?.observationKind || null,
|
|
170
|
+
kernelCompilationHash: sidecarSelection?.compilation_hash || null,
|
|
171
|
+
dossierTargetsHarvested: sidecarOrchestrator?.targetsHarvested ?? 0,
|
|
172
|
+
dossierTargetsResolved: sidecarOrchestrator?.targetsResolved ?? 0,
|
|
173
|
+
qaCourt: qaCourtReceipt
|
|
174
|
+
? {
|
|
175
|
+
verdict: qaVerdict,
|
|
176
|
+
hardBlock: qaHardBlock,
|
|
177
|
+
qiyasPerspectives: Array.isArray(qaCourtReceipt?.qiyas_15_pass) ? qaCourtReceipt.qiyas_15_pass.length : 15,
|
|
178
|
+
tadabburStages: Array.isArray(qaCourtReceipt?.tadabbur_12_pass) ? qaCourtReceipt.tadabbur_12_pass.length : 12,
|
|
179
|
+
receiptHash: qaCourtReceipt?.receipt_hash || null,
|
|
180
|
+
}
|
|
181
|
+
: { error: 'qa-court-did-not-run' },
|
|
182
|
+
};
|
|
183
|
+
|
|
184
|
+
try {
|
|
185
|
+
mkdirSync(dirname(HIVE_WAL_PATH), { recursive: true });
|
|
186
|
+
appendFileSync(HIVE_WAL_PATH, JSON.stringify(walEvent) + '\n', 'utf8');
|
|
187
|
+
if (qaCourtReceipt) {
|
|
188
|
+
appendFileSync(HIVE_WAL_PATH, JSON.stringify(qaCourtReceipt) + '\n', 'utf8');
|
|
189
|
+
}
|
|
190
|
+
summary.walAppended = true;
|
|
191
|
+
|
|
192
|
+
// 5. First-class hardening loop: gap or non-verified QA verdict
|
|
193
|
+
// triggers a directive the next pre-emit autoload reads and
|
|
194
|
+
// force-adds to invocationRequired.
|
|
195
|
+
if (gap.length > 0 || (qaVerdict && qaVerdict !== 'verified' && qaVerdict !== 'verified_narrowly')) {
|
|
196
|
+
const hardeningEvent = {
|
|
197
|
+
schema: 'aria.atlas_orchestrator_hardening_directive.v1',
|
|
198
|
+
at,
|
|
199
|
+
session_id: sessionId,
|
|
200
|
+
surface: 'claude-code',
|
|
201
|
+
reason: gap.length > 0
|
|
202
|
+
? `adherence_gap: ${gap.length}/${selected.length} skills selected-by-atlas not invoked`
|
|
203
|
+
: `qa_verdict_below_threshold: ${qaVerdict}`,
|
|
204
|
+
forceInvokeNextTurn: gap,
|
|
205
|
+
qaVerdict,
|
|
206
|
+
adherenceRatio,
|
|
207
|
+
sourceTurnOutcomeAt: at,
|
|
208
|
+
};
|
|
209
|
+
appendFileSync(HIVE_WAL_PATH, JSON.stringify(hardeningEvent) + '\n', 'utf8');
|
|
210
|
+
summary.hardeningEmitted = true;
|
|
211
|
+
process.stderr.write(`${LOG}:hardening reason="${hardeningEvent.reason}" forceInvokeNextTurn=[${gap.join(',')}] qaVerdict=${qaVerdict}\n`);
|
|
212
|
+
}
|
|
213
|
+
process.stderr.write(`${LOG}:emit selected=${selected.length} honored=${honored.length} gap=${gap.length} adherence=${adherenceRatio} invoked=${invokedSkills.length} qaVerdict=${qaVerdict || 'none'} session=${sessionId}\n`);
|
|
214
|
+
} catch (walErr) {
|
|
215
|
+
loudErr('wal_write', `${walErr instanceof Error ? walErr.message : String(walErr)} path=${HIVE_WAL_PATH}`);
|
|
216
|
+
}
|
|
217
|
+
} catch (outer) {
|
|
218
|
+
loudErr('outer_error', outer instanceof Error ? outer.message : String(outer));
|
|
219
|
+
}
|
|
220
|
+
return summary;
|
|
221
|
+
}
|
|
@@ -38,28 +38,105 @@ export function extractLensTexts(cognitionInner, lensNames = ALL_LENS_NAMES) {
|
|
|
38
38
|
return out;
|
|
39
39
|
}
|
|
40
40
|
|
|
41
|
+
// M9.DRIFT.10u — credential-shape redaction for diagnostic content_preview
|
|
42
|
+
// fields. Local copy so this lib has no dependency on coach-kernel
|
|
43
|
+
// (avoids circular imports across hook libs).
|
|
44
|
+
function redactPotentialSecretsInPreview(text) {
|
|
45
|
+
return String(text || '')
|
|
46
|
+
.replace(/Bearer\s+[A-Za-z0-9._~+\/-]{12,}/gi, 'Bearer [redacted]')
|
|
47
|
+
.replace(/\bsk-[A-Za-z0-9_-]{12,}\b/g, '[redacted-secret]')
|
|
48
|
+
.replace(/\bgh[pousr]_[A-Za-z0-9_]{12,}\b/g, '[redacted-secret]')
|
|
49
|
+
.replace(/\bxox[baprs]-[A-Za-z0-9-]{12,}\b/g, '[redacted-secret]')
|
|
50
|
+
.replace(/\bAKIA[0-9A-Z]{16}\b/g, '[redacted-secret]');
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
// M9.DRIFT.10u — find "<word>:" patterns inside the cognition block
|
|
54
|
+
// that look like lens declarations but are NOT in any canonical set.
|
|
55
|
+
// Surfaces operator-emitted non-canonical lens names for self-correction
|
|
56
|
+
// (the agent emitting sirat/adl/rahma/sabr finds out exactly which
|
|
57
|
+
// names fell outside the canonical sets, instead of getting 0/8 with
|
|
58
|
+
// no breakdown).
|
|
59
|
+
function findUnrecognizedTokens(searchSpace, knownLensNames) {
|
|
60
|
+
const knownLower = new Set(knownLensNames.map((n) => n.toLowerCase()));
|
|
61
|
+
const out = new Set();
|
|
62
|
+
const rx = /(?:^|\n)\s*([A-Za-z][A-Za-z_-]{1,40})\s*:/g;
|
|
63
|
+
let m;
|
|
64
|
+
while ((m = rx.exec(searchSpace)) !== null) {
|
|
65
|
+
const token = m[1].toLowerCase();
|
|
66
|
+
if (!knownLower.has(token)) out.add(token);
|
|
67
|
+
}
|
|
68
|
+
return [...out];
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* Detect cognition lenses in the given text.
|
|
73
|
+
*
|
|
74
|
+
* BACKWARDS-COMPATIBLE: existing top-level fields {count, names,
|
|
75
|
+
* matchedSet} preserved at root for callers destructuring those.
|
|
76
|
+
*
|
|
77
|
+
* M9.DRIFT.10u additive fields:
|
|
78
|
+
* blockFound: boolean — whether a <cognition>...</cognition> block was found
|
|
79
|
+
* perLens: [{lens, present, charCount, content_preview}] — one entry per
|
|
80
|
+
* iterated canonical lens; content_preview is 50-char redacted slice
|
|
81
|
+
* unrecognizedTokens: string[] — "<word>:" patterns inside the cognition
|
|
82
|
+
* block that look like lens declarations but are NOT in any canonical set
|
|
83
|
+
* canonicalSets: { older: string[], newer: string[] } — the canonical
|
|
84
|
+
* sets the parser attempted, surfaced for operator visibility
|
|
85
|
+
*/
|
|
41
86
|
export function detectCognitionLenses(text, {
|
|
42
87
|
minChars = 0,
|
|
43
88
|
placeholderRx = null,
|
|
44
89
|
cognitionBlockRx = /<cognition>([\s\S]*?)<\/cognition>/i,
|
|
45
90
|
lensNames = ALL_LENS_NAMES,
|
|
46
91
|
} = {}) {
|
|
47
|
-
if (!text)
|
|
92
|
+
if (!text) {
|
|
93
|
+
return {
|
|
94
|
+
count: 0,
|
|
95
|
+
names: [],
|
|
96
|
+
matchedSet: null,
|
|
97
|
+
blockFound: false,
|
|
98
|
+
perLens: [],
|
|
99
|
+
unrecognizedTokens: [],
|
|
100
|
+
canonicalSets: { older: [...LENS_NAMES_OLDER], newer: [...LENS_NAMES_NEWER] },
|
|
101
|
+
};
|
|
102
|
+
}
|
|
48
103
|
const block = text.match(cognitionBlockRx);
|
|
104
|
+
const blockFound = Boolean(block);
|
|
49
105
|
const searchSpace = block ? block[1] : text;
|
|
50
106
|
const lensTexts = extractLensTexts(searchSpace, lensNames);
|
|
51
107
|
const names = [];
|
|
108
|
+
const perLens = [];
|
|
52
109
|
for (const lens of lensNames) {
|
|
53
110
|
const content = (lensTexts[lens] || '').trim();
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
names.push(lens);
|
|
111
|
+
const passesMin = !content || (minChars > 0 ? content.length >= minChars : true);
|
|
112
|
+
const passesPlaceholder = !content || !placeholderRx || !placeholderRx.test(content);
|
|
113
|
+
const present = Boolean(content) && passesMin && passesPlaceholder;
|
|
114
|
+
if (present) names.push(lens);
|
|
115
|
+
perLens.push({
|
|
116
|
+
lens,
|
|
117
|
+
present,
|
|
118
|
+
charCount: content.length,
|
|
119
|
+
content_preview: content
|
|
120
|
+
? redactPotentialSecretsInPreview(content).slice(0, 50)
|
|
121
|
+
: '',
|
|
122
|
+
});
|
|
58
123
|
}
|
|
59
124
|
|
|
60
125
|
const matchedSet =
|
|
61
126
|
[LENS_NAMES_OLDER, LENS_NAMES_NEWER]
|
|
62
127
|
.find((candidateSet) => candidateSet.every((name) => names.includes(name))) || null;
|
|
63
128
|
|
|
64
|
-
|
|
129
|
+
const unrecognizedTokens = blockFound
|
|
130
|
+
? findUnrecognizedTokens(searchSpace, lensNames)
|
|
131
|
+
: [];
|
|
132
|
+
|
|
133
|
+
return {
|
|
134
|
+
count: names.length,
|
|
135
|
+
names,
|
|
136
|
+
matchedSet,
|
|
137
|
+
blockFound,
|
|
138
|
+
perLens,
|
|
139
|
+
unrecognizedTokens,
|
|
140
|
+
canonicalSets: { older: [...LENS_NAMES_OLDER], newer: [...LENS_NAMES_NEWER] },
|
|
141
|
+
};
|
|
65
142
|
}
|
|
@@ -0,0 +1,248 @@
|
|
|
1
|
+
// coach-intent-classifier.mjs
|
|
2
|
+
//
|
|
3
|
+
// Hybrid intent classifier for the runtime coach's
|
|
4
|
+
// `unverified_deploy_or_infra_mutation` block reason.
|
|
5
|
+
//
|
|
6
|
+
// Per Hamza directive 2026-05-09: deterministic-first-pass with LLM
|
|
7
|
+
// fallback for ambiguous cases — not deterministic alone. The remote
|
|
8
|
+
// runtime coach pattern-matches prose vocabulary regardless of whether
|
|
9
|
+
// the prose actually CLAIMS that a mutation occurred. This wrapper
|
|
10
|
+
// adds intent discrimination so legitimate proposals/reports/descriptions
|
|
11
|
+
// don't trigger the block.
|
|
12
|
+
//
|
|
13
|
+
// Intent taxonomy:
|
|
14
|
+
// CLAIM — asserts that a mutation HAS occurred ("I deployed X", "X was rolled out")
|
|
15
|
+
// PROPOSE — recommends a future action ("we should deploy", "the next step would be")
|
|
16
|
+
// REPORT — describes work without claiming done ("source corrections recorded", "fix prepared")
|
|
17
|
+
// DESCRIBE — meta-discussion of mutation as a topic ("the deploy step", "rollout patterns")
|
|
18
|
+
//
|
|
19
|
+
// Only CLAIM intent without backing evidence triggers a real block.
|
|
20
|
+
// PROPOSE/REPORT/DESCRIBE are valid prose that the dumb regex
|
|
21
|
+
// false-positives. The hybrid downgrades those to warn-only.
|
|
22
|
+
|
|
23
|
+
import { readFileSync } from 'node:fs';
|
|
24
|
+
|
|
25
|
+
const FLASH_MODEL_DEFAULTS = {
|
|
26
|
+
endpoint: process.env.ARIA_FLASH_ENDPOINT || 'http://localhost:30080/api/aria/speak',
|
|
27
|
+
model: process.env.ARIA_FLASH_MODEL || 'deepseek-v4-flash',
|
|
28
|
+
timeoutMs: Math.max(2000, Math.min(15000, Number(process.env.ARIA_FLASH_TIMEOUT_MS || '8000'))),
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
// Vocabulary the upstream coach pattern-matches as deploy/infra mutation.
|
|
32
|
+
// Used by deterministic pass to identify which prose substrings would
|
|
33
|
+
// have triggered the upstream regex.
|
|
34
|
+
const MUTATION_VOCAB_RX = /\b(?:deploy|deployed|deploys|rollout|rolling|rolled|rebuild|rebuilt|build|built|kubectl|docker|push|pushed|image|imaged|pod|pods|set image|apply|applied|mutate|mutation|infrastructure|infra|provision|provisioned|migrate|migrated|patch|patched|restart|restarted)\b/i;
|
|
35
|
+
|
|
36
|
+
// Past-tense completion verbs that, paired with mutation vocab, signal CLAIM intent.
|
|
37
|
+
const COMPLETION_PAST_TENSE_RX = /\b(?:was|were|has been|have been|got|is now|are now|just|already|successfully)\s+(?:deployed|rolled out|rebuilt|pushed|set|applied|restarted|patched|live|active|running)\b/i;
|
|
38
|
+
|
|
39
|
+
// First-person past-tense action claims.
|
|
40
|
+
const FIRST_PERSON_CLAIM_RX = /\bI\s+(?:deployed|rolled out|rebuilt|pushed|set the image|applied|restarted|patched|published|shipped|landed)\b/i;
|
|
41
|
+
|
|
42
|
+
// Modal/proposal markers — future or conditional, not claim.
|
|
43
|
+
const PROPOSE_MARKER_RX = /\b(?:will|would|could|might|may|recommend|recommended|suggest|suggested|propose|proposed|next step|next steps|going to|plan to|intend|consider|let'?s|let us|should|need to)\b/i;
|
|
44
|
+
|
|
45
|
+
// Authorization-pending markers — explicitly waiting on external action.
|
|
46
|
+
const PENDING_AUTH_RX = /\b(?:awaiting|pending|held|holding|queued|staged|prepared|ready to|authoriz|authorisation|owner authoriz|owner word|your nod|your direction|after your|once you|with your)\b/i;
|
|
47
|
+
|
|
48
|
+
// Past-tense reporting markers — describing work done WITHOUT mutation claim.
|
|
49
|
+
const REPORT_MARKER_RX = /\b(?:source corrections recorded|source edits applied|source fix(?:es)? (?:landed|in source|in place|recorded)|fix prepared|edited the source|edited the file|wrote (?:the|to) source|wrote the file|recorded in (?:source|the ledger)|justification (?:written|prepared|accepted)|sweep (?:returned|confirms|cleaned))\b/i;
|
|
50
|
+
|
|
51
|
+
// Evidence anchors — when a claim has these nearby, it's a verified claim, not unverified.
|
|
52
|
+
const EVIDENCE_ANCHOR_RX = /\b(?:exit\s*code|HTTP\s+\d{3}|status\s*=\s*\d|sha256:[a-f0-9]+|line\s+\d+|log shows|log shows that|returned|returns|received\s+\d|response\s+(?:body|payload|code)|verified by|probe (?:returned|showed)|grep (?:found|returned)|test (?:passed|failed))\b/i;
|
|
53
|
+
|
|
54
|
+
// Meta-discussion markers — topic-level discussion, not action.
|
|
55
|
+
const META_DISCUSSION_RX = /\b(?:the (?:deploy|rollout|build|rebuild) (?:step|action|phase|process|pattern|mechanism|approach)|deploy[- ]?(?:class|gating|authorization|justification|pattern)|how (?:we|to) deploy|what (?:happens|happened) (?:on|during) (?:deploy|rollout))\b/i;
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* Deterministic intent classification.
|
|
59
|
+
*
|
|
60
|
+
* Returns:
|
|
61
|
+
* { intent: 'CLAIM' | 'PROPOSE' | 'REPORT' | 'DESCRIBE' | 'AMBIGUOUS',
|
|
62
|
+
* confidence: 0.0-1.0,
|
|
63
|
+
* features: [list of matched feature names],
|
|
64
|
+
* evidenceAnchored: bool,
|
|
65
|
+
* mutationVocabPresent: bool }
|
|
66
|
+
*/
|
|
67
|
+
export function classifyIntentDeterministic(prose) {
|
|
68
|
+
const text = String(prose || '');
|
|
69
|
+
const features = [];
|
|
70
|
+
if (!text.trim()) {
|
|
71
|
+
return { intent: 'DESCRIBE', confidence: 1.0, features: ['empty'], evidenceAnchored: false, mutationVocabPresent: false };
|
|
72
|
+
}
|
|
73
|
+
const mutationVocabPresent = MUTATION_VOCAB_RX.test(text);
|
|
74
|
+
if (!mutationVocabPresent) {
|
|
75
|
+
return { intent: 'DESCRIBE', confidence: 0.95, features: ['no-mutation-vocab'], evidenceAnchored: false, mutationVocabPresent: false };
|
|
76
|
+
}
|
|
77
|
+
if (FIRST_PERSON_CLAIM_RX.test(text)) features.push('first-person-claim');
|
|
78
|
+
if (COMPLETION_PAST_TENSE_RX.test(text)) features.push('completion-past-tense');
|
|
79
|
+
if (PROPOSE_MARKER_RX.test(text)) features.push('propose-marker');
|
|
80
|
+
if (PENDING_AUTH_RX.test(text)) features.push('pending-auth');
|
|
81
|
+
if (REPORT_MARKER_RX.test(text)) features.push('report-marker');
|
|
82
|
+
if (EVIDENCE_ANCHOR_RX.test(text)) features.push('evidence-anchor');
|
|
83
|
+
if (META_DISCUSSION_RX.test(text)) features.push('meta-discussion');
|
|
84
|
+
const evidenceAnchored = features.includes('evidence-anchor');
|
|
85
|
+
|
|
86
|
+
// Strong CLAIM signals: first-person past-tense action without evidence anchor and without pending-auth.
|
|
87
|
+
const claimStrong = features.includes('first-person-claim') && !evidenceAnchored && !features.includes('pending-auth');
|
|
88
|
+
if (claimStrong) {
|
|
89
|
+
return { intent: 'CLAIM', confidence: 0.85, features, evidenceAnchored, mutationVocabPresent };
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
// Strong PROPOSE: propose marker AND no first-person-claim AND no completion-past-tense.
|
|
93
|
+
const proposeStrong = features.includes('propose-marker') && !features.includes('first-person-claim') && !features.includes('completion-past-tense');
|
|
94
|
+
if (proposeStrong) {
|
|
95
|
+
return { intent: 'PROPOSE', confidence: 0.85, features, evidenceAnchored, mutationVocabPresent };
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
// Strong REPORT: report-marker present, NOT first-person-claim with mutation completion verb.
|
|
99
|
+
const reportStrong = features.includes('report-marker') && !features.includes('first-person-claim');
|
|
100
|
+
if (reportStrong) {
|
|
101
|
+
return { intent: 'REPORT', confidence: 0.85, features, evidenceAnchored, mutationVocabPresent };
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
// Strong DESCRIBE: meta-discussion or pending-auth without first-person-claim.
|
|
105
|
+
const describeStrong = (features.includes('meta-discussion') || features.includes('pending-auth')) && !features.includes('first-person-claim');
|
|
106
|
+
if (describeStrong) {
|
|
107
|
+
return { intent: 'DESCRIBE', confidence: 0.80, features, evidenceAnchored, mutationVocabPresent };
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
// Weak CLAIM (completion-past-tense without first-person but no pending-auth or evidence)
|
|
111
|
+
if (features.includes('completion-past-tense') && !evidenceAnchored && !features.includes('pending-auth')) {
|
|
112
|
+
return { intent: 'CLAIM', confidence: 0.65, features, evidenceAnchored, mutationVocabPresent };
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
// Verified CLAIM (completion + evidence)
|
|
116
|
+
if (features.includes('completion-past-tense') && evidenceAnchored) {
|
|
117
|
+
return { intent: 'CLAIM', confidence: 0.85, features: [...features, 'verified-claim'], evidenceAnchored, mutationVocabPresent };
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
// AI-11803-QA-GAP2 (2026-05-12): first-person CLAIM with evidence anchor
|
|
121
|
+
// even without the aux-verb completion pattern ("was deployed", "has been
|
|
122
|
+
// rolled out"). The first-person form ("I deployed X — exit 0") doesn't
|
|
123
|
+
// match COMPLETION_PAST_TENSE_RX because that regex requires an auxiliary
|
|
124
|
+
// verb. Without this branch, verified first-person claims fall to AMBIGUOUS
|
|
125
|
+
// and the posture downgrade preserves the hard_block — over-conservative.
|
|
126
|
+
// Route to CLAIM(evidenceAnchored=true) so decisionFromIntent → WARN (allow).
|
|
127
|
+
if (features.includes('first-person-claim') && evidenceAnchored) {
|
|
128
|
+
return { intent: 'CLAIM', confidence: 0.85, features: [...features, 'verified-claim-first-person'], evidenceAnchored, mutationVocabPresent };
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
return { intent: 'AMBIGUOUS', confidence: 0.5, features, evidenceAnchored, mutationVocabPresent };
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
/**
|
|
135
|
+
* LLM-backed intent classification via deepseek-v4-flash (or configured model).
|
|
136
|
+
* Used as fallback when deterministic returns AMBIGUOUS.
|
|
137
|
+
*
|
|
138
|
+
* Returns same shape as classifyIntentDeterministic, but with `source: 'llm'`
|
|
139
|
+
* and adds a `rationale` field from the model.
|
|
140
|
+
*
|
|
141
|
+
* Falls back to AMBIGUOUS with source: 'llm-error' if the call fails.
|
|
142
|
+
*/
|
|
143
|
+
export async function classifyIntentLLM(prose, { endpoint = FLASH_MODEL_DEFAULTS.endpoint, model = FLASH_MODEL_DEFAULTS.model, timeoutMs = FLASH_MODEL_DEFAULTS.timeoutMs, apiKey = null } = {}) {
|
|
144
|
+
const text = String(prose || '').slice(0, 6000);
|
|
145
|
+
if (!text.trim()) {
|
|
146
|
+
return { intent: 'DESCRIBE', confidence: 0.9, features: ['empty'], evidenceAnchored: false, mutationVocabPresent: false, source: 'llm-skipped-empty' };
|
|
147
|
+
}
|
|
148
|
+
const systemPrompt = `You are an intent classifier for assistant prose. Output STRICT JSON only, no prose, no markdown.
|
|
149
|
+
|
|
150
|
+
Classify the prose intent regarding infrastructure mutation language (deploy, rollout, rebuild, push, kubectl, etc).
|
|
151
|
+
|
|
152
|
+
Categories:
|
|
153
|
+
- CLAIM: asserts a mutation HAS occurred (past tense + first-person OR third-person completion). Triggers a real block ONLY when no evidence anchor is present in the prose.
|
|
154
|
+
- PROPOSE: recommends a future or conditional action. Modal verbs (will, would, should, could, recommend, suggest, next step). Not a real block.
|
|
155
|
+
- REPORT: describes work done at the SOURCE level WITHOUT claiming runtime mutation (source corrections recorded, fix prepared, edits applied to file). Not a real block.
|
|
156
|
+
- DESCRIBE: meta-discussion of mutation as a topic, OR pending authorization framing. Not a real block.
|
|
157
|
+
|
|
158
|
+
Output schema (strict JSON):
|
|
159
|
+
{
|
|
160
|
+
"intent": "CLAIM" | "PROPOSE" | "REPORT" | "DESCRIBE",
|
|
161
|
+
"confidence": 0.0..1.0,
|
|
162
|
+
"evidenceAnchored": boolean,
|
|
163
|
+
"rationale": "one sentence why"
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
Do NOT include the prose in your output. Do NOT include any other fields.`;
|
|
167
|
+
const body = {
|
|
168
|
+
message: `Classify this prose:\n\n---PROSE_START---\n${text}\n---PROSE_END---`,
|
|
169
|
+
systemPrompt,
|
|
170
|
+
model,
|
|
171
|
+
metadata: {
|
|
172
|
+
platform: 'aria-coach-intent-classifier',
|
|
173
|
+
use_case: 'block_decision_second_look',
|
|
174
|
+
},
|
|
175
|
+
};
|
|
176
|
+
const headers = { 'Content-Type': 'application/json' };
|
|
177
|
+
if (apiKey) headers['Authorization'] = `Bearer ${apiKey}`;
|
|
178
|
+
try {
|
|
179
|
+
const ctrl = new AbortController();
|
|
180
|
+
const timer = setTimeout(() => ctrl.abort(), timeoutMs);
|
|
181
|
+
const resp = await fetch(endpoint, {
|
|
182
|
+
method: 'POST',
|
|
183
|
+
headers,
|
|
184
|
+
body: JSON.stringify(body),
|
|
185
|
+
signal: ctrl.signal,
|
|
186
|
+
});
|
|
187
|
+
clearTimeout(timer);
|
|
188
|
+
if (!resp.ok) {
|
|
189
|
+
return { intent: 'AMBIGUOUS', confidence: 0.4, features: ['llm-http-' + resp.status], evidenceAnchored: false, mutationVocabPresent: true, source: 'llm-error', rationale: `HTTP ${resp.status}` };
|
|
190
|
+
}
|
|
191
|
+
const json = await resp.json();
|
|
192
|
+
const raw = String(json?.response || json?.message || json?.text || '').trim();
|
|
193
|
+
// Extract JSON from possibly noisy response.
|
|
194
|
+
const match = raw.match(/\{[\s\S]*\}/);
|
|
195
|
+
if (!match) {
|
|
196
|
+
return { intent: 'AMBIGUOUS', confidence: 0.4, features: ['llm-no-json'], evidenceAnchored: false, mutationVocabPresent: true, source: 'llm-error', rationale: 'no JSON in LLM response' };
|
|
197
|
+
}
|
|
198
|
+
const parsed = JSON.parse(match[0]);
|
|
199
|
+
const intent = ['CLAIM', 'PROPOSE', 'REPORT', 'DESCRIBE'].includes(parsed.intent) ? parsed.intent : 'AMBIGUOUS';
|
|
200
|
+
return {
|
|
201
|
+
intent,
|
|
202
|
+
confidence: typeof parsed.confidence === 'number' ? Math.max(0, Math.min(1, parsed.confidence)) : 0.6,
|
|
203
|
+
features: ['llm-classified'],
|
|
204
|
+
evidenceAnchored: parsed.evidenceAnchored === true,
|
|
205
|
+
mutationVocabPresent: true,
|
|
206
|
+
source: 'llm',
|
|
207
|
+
rationale: typeof parsed.rationale === 'string' ? parsed.rationale.slice(0, 280) : '',
|
|
208
|
+
};
|
|
209
|
+
} catch (err) {
|
|
210
|
+
return { intent: 'AMBIGUOUS', confidence: 0.4, features: ['llm-exception'], evidenceAnchored: false, mutationVocabPresent: true, source: 'llm-error', rationale: err instanceof Error ? err.message : String(err) };
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
/**
|
|
215
|
+
* Hybrid classifier: deterministic first, LLM fallback only for AMBIGUOUS.
|
|
216
|
+
*
|
|
217
|
+
* Returns:
|
|
218
|
+
* { ...classification, decision: 'BLOCK' | 'OVERRIDE' | 'WARN', source: 'deterministic' | 'llm-fallback' }
|
|
219
|
+
*
|
|
220
|
+
* Decision rules:
|
|
221
|
+
* - CLAIM (high confidence) without evidence → BLOCK
|
|
222
|
+
* - CLAIM with evidence → WARN (verified)
|
|
223
|
+
* - PROPOSE / REPORT / DESCRIBE → OVERRIDE (downgrade upstream block)
|
|
224
|
+
* - AMBIGUOUS at deterministic layer → call LLM, then re-evaluate
|
|
225
|
+
*/
|
|
226
|
+
export async function hybridClassify(prose, opts = {}) {
|
|
227
|
+
const det = classifyIntentDeterministic(prose);
|
|
228
|
+
if (det.intent !== 'AMBIGUOUS') {
|
|
229
|
+
return decisionFromIntent(det, 'deterministic');
|
|
230
|
+
}
|
|
231
|
+
// LLM fallback path
|
|
232
|
+
const llm = await classifyIntentLLM(prose, opts);
|
|
233
|
+
return decisionFromIntent(llm, llm.source === 'llm' ? 'llm-fallback' : 'llm-error-fallback');
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
function decisionFromIntent(classification, source) {
|
|
237
|
+
let decision;
|
|
238
|
+
if (classification.intent === 'CLAIM' && !classification.evidenceAnchored) {
|
|
239
|
+
decision = 'BLOCK'; // real unverified claim
|
|
240
|
+
} else if (classification.intent === 'CLAIM' && classification.evidenceAnchored) {
|
|
241
|
+
decision = 'WARN'; // verified claim, log but allow
|
|
242
|
+
} else if (classification.intent === 'AMBIGUOUS') {
|
|
243
|
+
decision = 'WARN'; // can't tell — be conservative, log but allow with warning
|
|
244
|
+
} else {
|
|
245
|
+
decision = 'OVERRIDE'; // PROPOSE / REPORT / DESCRIBE — false-positive of upstream regex
|
|
246
|
+
}
|
|
247
|
+
return { ...classification, decision, source };
|
|
248
|
+
}
|