@aria_asi/cli 0.2.40 → 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 +1223 -41
- 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 +477 -81
- 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 +477 -81
- 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 +477 -81
- 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 +1225 -41
- 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
|
@@ -13,7 +13,7 @@ const require = createRequire(import.meta.url);
|
|
|
13
13
|
const { WebSocketServer, WebSocket } = require('ws');
|
|
14
14
|
|
|
15
15
|
const HOME = homedir();
|
|
16
|
-
const LOG_PATH = `${HOME}/.aria/runtime/logs/codex-bridge.log`;
|
|
16
|
+
const LOG_PATH = process.env.ARIA_CODEX_BRIDGE_LOG_PATH || `${HOME}/.aria/runtime/logs/codex-bridge.log`;
|
|
17
17
|
const RUNTIME_BASE_URL = (process.env.ARIA_RUNTIME_URL || 'http://127.0.0.1:4319').replace(/\/+$/, '');
|
|
18
18
|
const BRIDGE_PORT = Number(process.env.ARIA_CODEX_BRIDGE_PORT || '4320');
|
|
19
19
|
const DOWNSTREAM_PORT = Number(process.env.ARIA_CODEX_DOWNSTREAM_PORT || '4321');
|
|
@@ -21,6 +21,36 @@ const BRIDGE_HOST = process.env.ARIA_CODEX_BRIDGE_HOST || '127.0.0.1';
|
|
|
21
21
|
const DOWNSTREAM_URL = process.env.ARIA_CODEX_DOWNSTREAM_URL || `ws://${BRIDGE_HOST}:${DOWNSTREAM_PORT}`;
|
|
22
22
|
const DOWNSTREAM_STARTUP_GRACE_MS = Number(process.env.ARIA_CODEX_DOWNSTREAM_STARTUP_GRACE_MS || '5000');
|
|
23
23
|
const BRIDGE_WARNING_METHOD = 'guardianWarning';
|
|
24
|
+
const CODEX_FORCED_SKILLS = Object.freeze([
|
|
25
|
+
'aria-cognition-autofire',
|
|
26
|
+
'aria-first-class-operating-contract',
|
|
27
|
+
'aria-cognition-batch',
|
|
28
|
+
'aria-quality-audit',
|
|
29
|
+
'aria-repo-doctrine',
|
|
30
|
+
'aria-http-harness-client',
|
|
31
|
+
'aria-harness-substrate-binding',
|
|
32
|
+
'aria-axioms-first-principles',
|
|
33
|
+
'never-guess',
|
|
34
|
+
'tadabbur',
|
|
35
|
+
'tadabbur-ops',
|
|
36
|
+
'tafakkur',
|
|
37
|
+
'qiyas-analogy',
|
|
38
|
+
'forge-quality-rules',
|
|
39
|
+
'aria-task-codex-executor',
|
|
40
|
+
'aria-backend-architect',
|
|
41
|
+
'aria-harness-no-stripping',
|
|
42
|
+
'aria-readable-output',
|
|
43
|
+
'aria-ledger-fleet-execution',
|
|
44
|
+
'predictor',
|
|
45
|
+
'aria-aristotle-pre-phase',
|
|
46
|
+
'aria-aristotle-intra-phase',
|
|
47
|
+
'aria-aristotle-post-phase',
|
|
48
|
+
'mizan',
|
|
49
|
+
'ghazali-8lens',
|
|
50
|
+
'aria-noor-cognitives',
|
|
51
|
+
]);
|
|
52
|
+
|
|
53
|
+
const CODEX_FORCED_SKILL_FLOOR = 50;
|
|
24
54
|
|
|
25
55
|
let downstreamProcess = null;
|
|
26
56
|
let downstreamProcessStarting = null;
|
|
@@ -126,6 +156,19 @@ async function postRuntime(pathname, body) {
|
|
|
126
156
|
return parsed;
|
|
127
157
|
}
|
|
128
158
|
|
|
159
|
+
function remoteCoachEnabled() {
|
|
160
|
+
return /^(?:1|true|yes|on)$/i.test(String(
|
|
161
|
+
process.env.ARIA_REMOTE_COACH_ENABLED ||
|
|
162
|
+
process.env.ARIA_RUNTIME_COACH_ENABLED ||
|
|
163
|
+
process.env.ARIA_COACH_REMOTE_ENABLED ||
|
|
164
|
+
''
|
|
165
|
+
));
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
function externalDownstreamEnabled() {
|
|
169
|
+
return /^(?:1|true|yes|on)$/i.test(String(process.env.ARIA_CODEX_BRIDGE_EXTERNAL_DOWNSTREAM || ''));
|
|
170
|
+
}
|
|
171
|
+
|
|
129
172
|
function ensureTurnState(threadId, turnId) {
|
|
130
173
|
const key = `${threadId}:${turnId}`;
|
|
131
174
|
let state = turnState.get(key);
|
|
@@ -139,6 +182,7 @@ function ensureTurnState(threadId, turnId) {
|
|
|
139
182
|
bufferedAgentNotifications: [],
|
|
140
183
|
firstAgentItemId: null,
|
|
141
184
|
preRecorded: false,
|
|
185
|
+
forcedSkillReceipt: null,
|
|
142
186
|
traceId: `trace_${randomUUID()}`,
|
|
143
187
|
};
|
|
144
188
|
turnState.set(key, state);
|
|
@@ -170,6 +214,102 @@ function extractInputText(input) {
|
|
|
170
214
|
return parts.join('\n\n').trim();
|
|
171
215
|
}
|
|
172
216
|
|
|
217
|
+
function prependForcedPromptToInput(input, forcedPrompt, userText) {
|
|
218
|
+
const current = Array.isArray(input) ? input.map((item) => {
|
|
219
|
+
if (!item || typeof item !== 'object' || Array.isArray(item)) return item;
|
|
220
|
+
return { ...item };
|
|
221
|
+
}) : [];
|
|
222
|
+
const originalText = String(userText || extractInputText(current) || '').trim();
|
|
223
|
+
const bridgedText = [
|
|
224
|
+
'--- ARIA CODEX FORCED COGNITION PACKET ---',
|
|
225
|
+
forcedPrompt,
|
|
226
|
+
'--- /ARIA CODEX FORCED COGNITION PACKET ---',
|
|
227
|
+
'',
|
|
228
|
+
'--- CURRENT USER REQUEST ---',
|
|
229
|
+
originalText || '(no explicit user text)',
|
|
230
|
+
].join('\n');
|
|
231
|
+
|
|
232
|
+
const textIndex = current.findIndex((item) => item && typeof item === 'object' && typeof item.text === 'string');
|
|
233
|
+
if (textIndex >= 0) {
|
|
234
|
+
current[textIndex] = {
|
|
235
|
+
...current[textIndex],
|
|
236
|
+
text: bridgedText,
|
|
237
|
+
ariaOriginalText: current[textIndex].text,
|
|
238
|
+
};
|
|
239
|
+
return current;
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
return [
|
|
243
|
+
{ type: 'text', text: bridgedText, ariaOriginalText: originalText },
|
|
244
|
+
...current,
|
|
245
|
+
];
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
async function buildForcedSkillPromptForTurn(threadId, turnId, userText, params = {}) {
|
|
249
|
+
const state = ensureTurnState(threadId, turnId);
|
|
250
|
+
const message = String(userText || 'codex turn start').trim();
|
|
251
|
+
const result = await postRuntime('/build-system-prompt', {
|
|
252
|
+
sessionId: `codex:${threadId}:${turnId}`,
|
|
253
|
+
surface: 'codex',
|
|
254
|
+
message,
|
|
255
|
+
requiredSkills: CODEX_FORCED_SKILLS,
|
|
256
|
+
allowOwnerBypass: true,
|
|
257
|
+
injection: {
|
|
258
|
+
harness: {
|
|
259
|
+
packet: {
|
|
260
|
+
harness: [
|
|
261
|
+
'surface=codex-bridge',
|
|
262
|
+
'namespace=live-codex-turn',
|
|
263
|
+
'purpose=force skill firing before cognition, before tool use, during tool use, after tool use, QA correction, and learning integration',
|
|
264
|
+
].join('\n'),
|
|
265
|
+
sessionId: `codex:${threadId}:${turnId}`,
|
|
266
|
+
threadId,
|
|
267
|
+
turnId,
|
|
268
|
+
traceId: state.traceId,
|
|
269
|
+
},
|
|
270
|
+
},
|
|
271
|
+
task: message,
|
|
272
|
+
docs: [
|
|
273
|
+
{
|
|
274
|
+
title: 'Codex bridge forced cognition contract',
|
|
275
|
+
content: 'Apply these loaded skill bodies as binding pre-cognition, intra-cognition, post-cognition, QA, correction, verification, and learning-loop instructions before answering or using tools.',
|
|
276
|
+
},
|
|
277
|
+
],
|
|
278
|
+
files: {},
|
|
279
|
+
loadedAt: new Date().toISOString(),
|
|
280
|
+
},
|
|
281
|
+
metadata: {
|
|
282
|
+
threadId,
|
|
283
|
+
turnId,
|
|
284
|
+
traceId: state.traceId,
|
|
285
|
+
cwd: params.cwd || null,
|
|
286
|
+
bridge: 'codex',
|
|
287
|
+
},
|
|
288
|
+
});
|
|
289
|
+
|
|
290
|
+
const missingSkills = Array.isArray(result?.missingSkillIds) ? result.missingSkillIds : [];
|
|
291
|
+
const missingCookbooks = Array.isArray(result?.missingCookbooks) ? result.missingCookbooks : [];
|
|
292
|
+
const loadedSkillIds = Array.isArray(result?.loadedSkillIds) ? result.loadedSkillIds : [];
|
|
293
|
+
if (result?.ok !== true || typeof result?.prompt !== 'string' || loadedSkillIds.length < CODEX_FORCED_SKILL_FLOOR || missingSkills.length > 0 || missingCookbooks.length > 0) {
|
|
294
|
+
throw new Error(`forced skill prompt build failed: loaded=${loadedSkillIds.length} missingSkills=${missingSkills.join(',') || 'none'} missingCookbooks=${missingCookbooks.length}`);
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
state.forcedSkillReceipt = {
|
|
298
|
+
promptHash: createHash('sha256').update(result.prompt).digest('hex'),
|
|
299
|
+
promptChars: result.prompt.length,
|
|
300
|
+
loadedSkillIds,
|
|
301
|
+
loadedSkillHashes: Array.isArray(result.loadedSkillHashes) ? result.loadedSkillHashes : [],
|
|
302
|
+
loadedCookbooks: Array.isArray(result.loadedCookbooks) ? result.loadedCookbooks.map((cookbook) => ({
|
|
303
|
+
skillId: cookbook.skillId,
|
|
304
|
+
cookbookName: cookbook.cookbookName,
|
|
305
|
+
hash: cookbook.hash,
|
|
306
|
+
chars: cookbook.chars,
|
|
307
|
+
})) : [],
|
|
308
|
+
builtAt: new Date().toISOString(),
|
|
309
|
+
};
|
|
310
|
+
return result.prompt;
|
|
311
|
+
}
|
|
312
|
+
|
|
173
313
|
function inferThreadId(params = {}) {
|
|
174
314
|
return params.threadId || params.thread_id || params.turn?.threadId || params.turn?.thread_id || params.item?.threadId || params.item?.thread_id || null;
|
|
175
315
|
}
|
|
@@ -479,6 +619,16 @@ async function checkActionAgainstRuntime(action, target, threadId, turnId, metad
|
|
|
479
619
|
|
|
480
620
|
async function recordCoachPhaseForTurn(threadId, turnId, phase, patch = {}) {
|
|
481
621
|
const state = ensureTurnState(threadId, turnId);
|
|
622
|
+
if (!remoteCoachEnabled()) {
|
|
623
|
+
return {
|
|
624
|
+
ok: true,
|
|
625
|
+
skipped: true,
|
|
626
|
+
permitted: true,
|
|
627
|
+
decision: 'allow',
|
|
628
|
+
phase,
|
|
629
|
+
reasons: ['remote_coach_disabled'],
|
|
630
|
+
};
|
|
631
|
+
}
|
|
482
632
|
try {
|
|
483
633
|
return await postRuntime('/coach/phase', {
|
|
484
634
|
phase,
|
|
@@ -509,13 +659,24 @@ async function recordCoachPhaseForTurn(threadId, turnId, phase, patch = {}) {
|
|
|
509
659
|
async function recordMizanPre(threadId, turnId) {
|
|
510
660
|
const state = ensureTurnState(threadId, turnId);
|
|
511
661
|
try {
|
|
662
|
+
const preEvidenceRefs = [
|
|
663
|
+
makeEvidenceRef('user_input', state.userText, { threadId, turnId, traceId: state.traceId }),
|
|
664
|
+
...(state.forcedSkillReceipt
|
|
665
|
+
? [makeEvidenceRef('codex_forced_skill_prompt', state.forcedSkillReceipt, { threadId, turnId, traceId: state.traceId })]
|
|
666
|
+
: []),
|
|
667
|
+
];
|
|
512
668
|
await recordCoachPhaseForTurn(threadId, turnId, 'pre_turn', {
|
|
513
669
|
text: state.userText || 'codex turn start',
|
|
514
|
-
evidenceRefs:
|
|
670
|
+
evidenceRefs: preEvidenceRefs,
|
|
671
|
+
metadata: { forced_skill_receipt: state.forcedSkillReceipt },
|
|
515
672
|
});
|
|
516
673
|
await recordCoachPhaseForTurn(threadId, turnId, 'pre_cognition', {
|
|
517
674
|
text: state.userText || 'codex pre-cognition',
|
|
518
|
-
evidenceRefs: [
|
|
675
|
+
evidenceRefs: [
|
|
676
|
+
makeEvidenceRef('codex_pre_cognition_request', state.userText, { threadId, turnId, traceId: state.traceId }),
|
|
677
|
+
...preEvidenceRefs.slice(1),
|
|
678
|
+
],
|
|
679
|
+
metadata: { forced_skill_receipt: state.forcedSkillReceipt },
|
|
519
680
|
});
|
|
520
681
|
const result = await postRuntime('/mizan/pre', {
|
|
521
682
|
sessionId: `codex:${threadId}:${turnId}`,
|
|
@@ -533,7 +694,8 @@ async function recordMizanPre(threadId, turnId) {
|
|
|
533
694
|
platform: 'codex',
|
|
534
695
|
userText: state.userText,
|
|
535
696
|
traceId: state.traceId,
|
|
536
|
-
evidenceRefs:
|
|
697
|
+
evidenceRefs: preEvidenceRefs,
|
|
698
|
+
forcedSkillReceipt: state.forcedSkillReceipt,
|
|
537
699
|
},
|
|
538
700
|
});
|
|
539
701
|
state.preReceiptId = result?.receipt?.receiptId || null;
|
|
@@ -541,8 +703,9 @@ async function recordMizanPre(threadId, turnId) {
|
|
|
541
703
|
text: state.userText || 'codex post-cognition',
|
|
542
704
|
evidenceRefs: [
|
|
543
705
|
makeEvidenceRef('mizan_pre_receipt', result?.receipt || null, { threadId, turnId, traceId: state.traceId }),
|
|
706
|
+
...preEvidenceRefs.slice(1),
|
|
544
707
|
],
|
|
545
|
-
metadata: { pre_receipt_id: state.preReceiptId },
|
|
708
|
+
metadata: { pre_receipt_id: state.preReceiptId, forced_skill_receipt: state.forcedSkillReceipt },
|
|
546
709
|
});
|
|
547
710
|
} catch (error) {
|
|
548
711
|
log(`warn mizan/pre thread=${threadId} turn=${turnId} error="${error instanceof Error ? error.message : String(error)}"`);
|
|
@@ -824,6 +987,25 @@ async function releaseTurnOutput(upstream, notification) {
|
|
|
824
987
|
}
|
|
825
988
|
|
|
826
989
|
async function ensureDownstreamReady() {
|
|
990
|
+
if (externalDownstreamEnabled()) {
|
|
991
|
+
for (let attempt = 0; attempt < 50; attempt += 1) {
|
|
992
|
+
try {
|
|
993
|
+
await new Promise((resolvePromise, rejectPromise) => {
|
|
994
|
+
const socket = new WebSocket(DOWNSTREAM_URL);
|
|
995
|
+
socket.once('open', () => {
|
|
996
|
+
socket.terminate();
|
|
997
|
+
resolvePromise();
|
|
998
|
+
});
|
|
999
|
+
socket.once('error', rejectPromise);
|
|
1000
|
+
});
|
|
1001
|
+
return;
|
|
1002
|
+
} catch {
|
|
1003
|
+
await sleep(100);
|
|
1004
|
+
}
|
|
1005
|
+
}
|
|
1006
|
+
throw new Error(`external downstream codex app-server not reachable at ${DOWNSTREAM_URL}`);
|
|
1007
|
+
}
|
|
1008
|
+
|
|
827
1009
|
if (downstreamProcess && !downstreamProcess.killed) return;
|
|
828
1010
|
if (downstreamProcessStarting) {
|
|
829
1011
|
await downstreamProcessStarting;
|
|
@@ -904,6 +1086,11 @@ async function startBridge() {
|
|
|
904
1086
|
});
|
|
905
1087
|
|
|
906
1088
|
wss.on('connection', async (upstream) => {
|
|
1089
|
+
const earlyUpstreamMessages = [];
|
|
1090
|
+
const earlyUpstreamMessageHandler = (data) => {
|
|
1091
|
+
earlyUpstreamMessages.push(data);
|
|
1092
|
+
};
|
|
1093
|
+
upstream.on('message', earlyUpstreamMessageHandler);
|
|
907
1094
|
await ensureDownstreamReady();
|
|
908
1095
|
const downstream = new WebSocket(DOWNSTREAM_URL);
|
|
909
1096
|
const pendingDownstreamMessages = [];
|
|
@@ -916,9 +1103,45 @@ async function startBridge() {
|
|
|
916
1103
|
pendingTurnStarts.set(String(message.id), {
|
|
917
1104
|
threadId,
|
|
918
1105
|
userText: extractInputText(params.input),
|
|
1106
|
+
forcedSkillReceipt: null,
|
|
919
1107
|
});
|
|
920
1108
|
}
|
|
921
1109
|
|
|
1110
|
+
async function forceSkillPromptOnTurnStart(message) {
|
|
1111
|
+
if (message?.method !== 'turn/start' || !message?.params?.threadId) return { ok: true, message };
|
|
1112
|
+
const params = message.params;
|
|
1113
|
+
const threadId = params.threadId;
|
|
1114
|
+
const turnId = params.turnId || params.turn_id || `pending-${message.id ?? Date.now()}`;
|
|
1115
|
+
const userText = extractInputText(params.input);
|
|
1116
|
+
const state = ensureTurnState(threadId, turnId);
|
|
1117
|
+
if (!state.userText && userText) state.userText = userText;
|
|
1118
|
+
try {
|
|
1119
|
+
const forcedPrompt = await buildForcedSkillPromptForTurn(threadId, turnId, userText, params);
|
|
1120
|
+
const pending = message?.id == null ? null : pendingTurnStarts.get(String(message.id));
|
|
1121
|
+
if (pending) pending.forcedSkillReceipt = state.forcedSkillReceipt;
|
|
1122
|
+
return {
|
|
1123
|
+
ok: true,
|
|
1124
|
+
message: {
|
|
1125
|
+
...message,
|
|
1126
|
+
params: {
|
|
1127
|
+
...params,
|
|
1128
|
+
input: prependForcedPromptToInput(params.input, forcedPrompt, userText),
|
|
1129
|
+
ariaForcedSkillIds: CODEX_FORCED_SKILLS,
|
|
1130
|
+
ariaForcedSkillPromptHash: state.forcedSkillReceipt?.promptHash || null,
|
|
1131
|
+
},
|
|
1132
|
+
},
|
|
1133
|
+
};
|
|
1134
|
+
} catch (error) {
|
|
1135
|
+
const reason = error instanceof Error ? error.message : String(error);
|
|
1136
|
+
log(`block turn/start thread=${threadId} reason="${reason}"`);
|
|
1137
|
+
return {
|
|
1138
|
+
ok: false,
|
|
1139
|
+
threadId,
|
|
1140
|
+
reason: formatCodexRecoveryBlock('codex-bridge-forced-skill-prompt', reason),
|
|
1141
|
+
};
|
|
1142
|
+
}
|
|
1143
|
+
}
|
|
1144
|
+
|
|
922
1145
|
function takePendingTurnStart(threadId) {
|
|
923
1146
|
for (const [requestId, pending] of pendingTurnStarts.entries()) {
|
|
924
1147
|
if (pending.threadId === threadId) {
|
|
@@ -945,7 +1168,10 @@ async function startBridge() {
|
|
|
945
1168
|
const turnId = turn?.id || result.turnId || result.turn_id;
|
|
946
1169
|
if (!turnId) return;
|
|
947
1170
|
pendingTurnStarts.delete(String(message.id));
|
|
948
|
-
|
|
1171
|
+
const state = ensureTurnState(pending.threadId, turnId);
|
|
1172
|
+
if (!state.userText && pending.userText) state.userText = pending.userText;
|
|
1173
|
+
if (pending.forcedSkillReceipt && !state.forcedSkillReceipt) state.forcedSkillReceipt = pending.forcedSkillReceipt;
|
|
1174
|
+
void recordMizanPreOnce(pending.threadId, turnId);
|
|
949
1175
|
}
|
|
950
1176
|
|
|
951
1177
|
function sendDownstream(payload) {
|
|
@@ -973,7 +1199,7 @@ async function startBridge() {
|
|
|
973
1199
|
try { upstream.close(); } catch {}
|
|
974
1200
|
});
|
|
975
1201
|
|
|
976
|
-
|
|
1202
|
+
async function handleUpstreamMessage(data) {
|
|
977
1203
|
const raw = typeof data === 'string' ? data : data.toString();
|
|
978
1204
|
let message;
|
|
979
1205
|
try {
|
|
@@ -988,10 +1214,29 @@ async function startBridge() {
|
|
|
988
1214
|
if (!message.params.approvalPolicy) {
|
|
989
1215
|
message.params.approvalPolicy = 'untrusted';
|
|
990
1216
|
}
|
|
1217
|
+
const forced = await forceSkillPromptOnTurnStart(message);
|
|
1218
|
+
if (!forced.ok) {
|
|
1219
|
+
safeSendJson(upstream, makeGuardianWarning(forced.threadId || message.params.threadId, forced.reason), 'forced skill prompt warning');
|
|
1220
|
+
safeSendJson(upstream, {
|
|
1221
|
+
id: message.id,
|
|
1222
|
+
error: {
|
|
1223
|
+
code: -32000,
|
|
1224
|
+
message: forced.reason,
|
|
1225
|
+
},
|
|
1226
|
+
}, 'forced skill prompt error');
|
|
1227
|
+
return;
|
|
1228
|
+
}
|
|
1229
|
+
message = forced.message;
|
|
991
1230
|
}
|
|
992
1231
|
|
|
993
1232
|
sendDownstream(JSON.stringify(message));
|
|
994
|
-
}
|
|
1233
|
+
}
|
|
1234
|
+
|
|
1235
|
+
upstream.off('message', earlyUpstreamMessageHandler);
|
|
1236
|
+
upstream.on('message', handleUpstreamMessage);
|
|
1237
|
+
for (const earlyMessage of earlyUpstreamMessages.splice(0)) {
|
|
1238
|
+
void handleUpstreamMessage(earlyMessage);
|
|
1239
|
+
}
|
|
995
1240
|
|
|
996
1241
|
downstream.on('message', async (data) => {
|
|
997
1242
|
const raw = typeof data === 'string' ? data : data.toString();
|
|
@@ -1050,6 +1295,7 @@ async function startBridge() {
|
|
|
1050
1295
|
if (threadId && turnId) {
|
|
1051
1296
|
const pending = takePendingTurnStart(threadId);
|
|
1052
1297
|
const state = ensureTurnState(threadId, turnId);
|
|
1298
|
+
if (pending?.forcedSkillReceipt && !state.forcedSkillReceipt) state.forcedSkillReceipt = pending.forcedSkillReceipt;
|
|
1053
1299
|
if (!state.userText) {
|
|
1054
1300
|
state.userText = message?.params?.turn?.input?.map?.((entry) => entry?.text).filter(Boolean).join('\n\n') || pending?.userText || '';
|
|
1055
1301
|
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
// embedded-public-key.mjs — Phase 2 Step 3.
|
|
2
|
+
//
|
|
3
|
+
// Linear: AI-11803-VNEXT-2-REDESIGN — Step 3.
|
|
4
|
+
// Ledger spec: EXECUTION_LEDGER.md:1079-1085.
|
|
5
|
+
//
|
|
6
|
+
// The connector ships a frozen public key string at install time so the
|
|
7
|
+
// verifier can validate signed packets offline (no live key-fetch in the
|
|
8
|
+
// hot path; cluster outage doesn't brick the verifier).
|
|
9
|
+
//
|
|
10
|
+
// Doctrine:
|
|
11
|
+
// - Public key is PUBLIC by design. Embedding it in the npm package is
|
|
12
|
+
// correct — it is the verification half, not the signing half.
|
|
13
|
+
// - The private half lives ONLY in cluster env ARIA_PACKET_SIGNING_KEY_PRIVATE
|
|
14
|
+
// delivered via scripts/sync-local-env-to-cluster.sh. Never committed.
|
|
15
|
+
// - Quarterly rotation per owner decision LANDED 2026-05-12. When key rotates,
|
|
16
|
+
// publish a new connector version with the new PEM here; clients on old
|
|
17
|
+
// versions reject packets signed by the new key until they upgrade. The
|
|
18
|
+
// rotation procedure + transition-window design is Phase 2.5 work.
|
|
19
|
+
// - key_id matches the signer's default key_id constant. If they drift,
|
|
20
|
+
// verify() reports key_mismatch — that's the structural canary.
|
|
21
|
+
|
|
22
|
+
export const KEY_ID = 'aria-packet-2026-q2';
|
|
23
|
+
|
|
24
|
+
export const EMBEDDED_PUBLIC_KEY_PEM =
|
|
25
|
+
'-----BEGIN PUBLIC KEY-----\n' +
|
|
26
|
+
'MCowBQYDK2VwAyEAo3J8Zj61M55WFyfggKsSAmbN0/t02feFI8zK99BaJY8=\n' +
|
|
27
|
+
'-----END PUBLIC KEY-----\n';
|
|
@@ -1,4 +1,10 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
+
// ── doctrine-self-check-file: M0.SELFREVIEW.1+2 (2026-05-06) ──
|
|
3
|
+
// Session added comments describing prior antipatterns being migrated.
|
|
4
|
+
// Each comment names a trigger pattern; file-level ack covers them all.
|
|
5
|
+
// doctrine-self-check-file: deterministic|one.?attempt session-added-comments-describing-prior-state-or-migration
|
|
6
|
+
// doctrine-self-check-file: eventually|for now session-added-comments-describing-prior-state-or-migration
|
|
7
|
+
|
|
2
8
|
/**
|
|
3
9
|
* Gated Ledger — End-to-End Runtime Enforcement
|
|
4
10
|
*
|
|
@@ -22,6 +28,18 @@ import { appendFileSync, existsSync, mkdirSync, readFileSync } from 'node:fs';
|
|
|
22
28
|
import { createHash, randomUUID } from 'node:crypto';
|
|
23
29
|
import { homedir } from 'node:os';
|
|
24
30
|
import { dirname, join } from 'node:path';
|
|
31
|
+
// M0.F.X2 step 8 (2026-05-06): connector-side runtime-rails registry mirror.
|
|
32
|
+
// Byte-identical to apps/arias-soul/api/lib/runtime-rails/registry.mjs
|
|
33
|
+
// (verified via diff). Mirror enforced via M0.F.X2 step 7 CI guard's
|
|
34
|
+
// allowlist policy + a future check-runtime-rails-connector-mirror step.
|
|
35
|
+
import {
|
|
36
|
+
INTERNAL_GATE_LABEL_PATTERN,
|
|
37
|
+
COLLAPSE_PLACEHOLDER_PATTERN,
|
|
38
|
+
COMPLETION_CLAIM_PATTERN,
|
|
39
|
+
TEMPLATE_PHRASES_PATTERN,
|
|
40
|
+
KERNEL_FALLBACK_VOICE,
|
|
41
|
+
minCharsFor,
|
|
42
|
+
} from './runtime-rails/registry.mjs';
|
|
25
43
|
|
|
26
44
|
const HOME = homedir();
|
|
27
45
|
const STATE_DIR = join(HOME, '.aria', 'runtime', 'state');
|
|
@@ -37,18 +55,29 @@ function appendRecord(record) {
|
|
|
37
55
|
try {
|
|
38
56
|
appendFileSync(GATED_LEDGER_PATH, `${JSON.stringify(record)}\n`, { mode: 0o600 });
|
|
39
57
|
return true;
|
|
40
|
-
} catch {
|
|
58
|
+
} catch (err) {
|
|
59
|
+
// M0.H.X3: connector gated-ledger write failure now surfaces.
|
|
60
|
+
process.stderr.write(`[connector:gated-ledger:append-record] caught: ${err instanceof Error ? err.message : String(err)}\n`);
|
|
61
|
+
return false;
|
|
62
|
+
}
|
|
41
63
|
}
|
|
42
64
|
|
|
43
65
|
function hash(text) {
|
|
44
66
|
return createHash('sha256').update(String(text)).digest('hex').slice(0, 16);
|
|
45
67
|
}
|
|
46
68
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
const
|
|
50
|
-
const
|
|
51
|
-
const
|
|
69
|
+
// M0.F.X2 (2026-05-06): patterns sourced from registry. Local aliases for
|
|
70
|
+
// readable downstream references.
|
|
71
|
+
const GATE_LABEL_RX = INTERNAL_GATE_LABEL_PATTERN;
|
|
72
|
+
const COLLAPSE_RX = COLLAPSE_PLACEHOLDER_PATTERN;
|
|
73
|
+
const COMPLETION_CLAIM_RX = COMPLETION_CLAIM_PATTERN;
|
|
74
|
+
const TEMPLATE_RX = TEMPLATE_PHRASES_PATTERN;
|
|
75
|
+
// MINIMUM_CHARS preserved here as the connector code still uses the global
|
|
76
|
+
// constant in checkQuality / isTemplateOutput. Per Phase 0 audit M0.F.X2,
|
|
77
|
+
// this is a connector-side legacy check (kernel-aware floor lives on the
|
|
78
|
+
// pod-side gated-ledger). Connector-tier client traffic is bounded by
|
|
79
|
+
// the registry's MIN_CHARS_BY_KERNEL.default (20) — keep both for now.
|
|
80
|
+
const MINIMUM_CHARS = minCharsFor('default');
|
|
52
81
|
|
|
53
82
|
/** Detect deterministic/templated kernel output */
|
|
54
83
|
function isTemplateOutput(text, kernel) {
|
|
@@ -80,14 +109,12 @@ function checkQuality(text) {
|
|
|
80
109
|
return { passed: reasons.length === 0, reasons };
|
|
81
110
|
}
|
|
82
111
|
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
default: "Let me try again — that last response wasn't right.",
|
|
90
|
-
};
|
|
112
|
+
// M0.F.X2 (2026-05-06): SAFE_FALLBACKS sourced from canonical registry.
|
|
113
|
+
// Same reconciled Aria-voice strings as apps-side gated-ledger; closes
|
|
114
|
+
// the cross-package drift between apps/arias-soul/api/lib/gated-ledger.mjs
|
|
115
|
+
// and packages/aria-connector/runtime-src/gated-ledger.mjs (which had
|
|
116
|
+
// drifted to slightly different voices for the same kernels).
|
|
117
|
+
const SAFE_FALLBACKS = KERNEL_FALLBACK_VOICE;
|
|
91
118
|
|
|
92
119
|
/**
|
|
93
120
|
* Enforce all gates on a kernel output.
|
|
@@ -132,10 +132,36 @@ function extractPacketField(packet, field) {
|
|
|
132
132
|
function cachedPacketMatchesRequest(envelope, body = {}) {
|
|
133
133
|
const packet = envelope?.packet;
|
|
134
134
|
if (!packet || typeof packet !== 'object') return false;
|
|
135
|
-
|
|
136
|
-
|
|
135
|
+
// Identity dimensions on which a cached packet must match the request body.
|
|
136
|
+
// Each pair maps a request-body field name to the packet-field name written
|
|
137
|
+
// into externalLines (the body uses camelCase, the packet uses snake_case).
|
|
138
|
+
//
|
|
139
|
+
// Pre-2026-05-17 this list was [stage, actor, system] only; that permissive
|
|
140
|
+
// match allowed a request for one surface to receive a packet templated for
|
|
141
|
+
// a different surface during cache hits — see
|
|
142
|
+
// memory:reference_codex_adapter_is_surface_templated.md (cache-match defect).
|
|
143
|
+
// Platform + delivery_surface are added so cross-surface consumers refresh
|
|
144
|
+
// instead of serving a stale per-surface fill from a different consumer.
|
|
145
|
+
const dims = [
|
|
146
|
+
{ body: 'stage', packet: 'stage' },
|
|
147
|
+
{ body: 'actor', packet: 'actor' },
|
|
148
|
+
{ body: 'system', packet: 'system' },
|
|
149
|
+
{ body: 'platform', packet: 'platform' },
|
|
150
|
+
{ body: 'deliverySurface', packet: 'delivery_surface' },
|
|
151
|
+
// codex.ts narrows surface from three aliases:
|
|
152
|
+
// body.deliverySurface || body.surface || body.platform
|
|
153
|
+
// Map both alternates also to packet.delivery_surface so a request that
|
|
154
|
+
// only sets body.surface OR body.platform-as-surface still rejects a
|
|
155
|
+
// cached envelope templated for a different delivery_surface. The
|
|
156
|
+
// separate 'platform → platform' check above stays for legitimate
|
|
157
|
+
// platform-as-platform tracking (e.g., body.platform=kubernetes).
|
|
158
|
+
{ body: 'surface', packet: 'delivery_surface' },
|
|
159
|
+
{ body: 'platform', packet: 'delivery_surface' },
|
|
160
|
+
];
|
|
161
|
+
for (const { body: bodyField, packet: packetField } of dims) {
|
|
162
|
+
const expected = stableIdentityValue(body[bodyField] || body.packetRequest?.[bodyField]);
|
|
137
163
|
if (!expected) continue;
|
|
138
|
-
const actual = extractPacketField(packet,
|
|
164
|
+
const actual = extractPacketField(packet, packetField);
|
|
139
165
|
if (actual && actual !== expected) return false;
|
|
140
166
|
}
|
|
141
167
|
return true;
|
|
@@ -149,7 +175,12 @@ function loadCachedPacketEnvelope() {
|
|
|
149
175
|
const parsed = JSON.parse(readFileSync(candidate, 'utf8'));
|
|
150
176
|
const envelope = sanitizePacketEnvelope(parsed);
|
|
151
177
|
if (envelope) return envelope;
|
|
152
|
-
} catch {
|
|
178
|
+
} catch (err) {
|
|
179
|
+
// Cache file unreadable or corrupt — try the next candidate, but log
|
|
180
|
+
// so a silently-bad cache file shows up in logs per
|
|
181
|
+
// feedback_non_blocking_errors_unacceptable.md.
|
|
182
|
+
console.warn('[aria-harnessd] cached packet candidate unreadable', candidate, err?.message);
|
|
183
|
+
}
|
|
153
184
|
}
|
|
154
185
|
return null;
|
|
155
186
|
}
|
|
@@ -195,7 +226,11 @@ function persistCachedPacketEnvelope(envelope) {
|
|
|
195
226
|
for (const candidate of LEGACY_PACKET_CACHE_CANDIDATES) {
|
|
196
227
|
try {
|
|
197
228
|
writeFileSync(candidate, JSON.stringify(envelope) + '\n', { mode: 0o600 });
|
|
198
|
-
} catch {
|
|
229
|
+
} catch (err) {
|
|
230
|
+
// Legacy-path write is best-effort (canonical write at LOCAL_PACKET_CACHE_PATH
|
|
231
|
+
// already succeeded). Log so dir-not-exist / perm issues are visible.
|
|
232
|
+
console.warn('[aria-harnessd] legacy cache write failed', candidate, err?.message);
|
|
233
|
+
}
|
|
199
234
|
}
|
|
200
235
|
}
|
|
201
236
|
|
|
@@ -265,7 +300,13 @@ async function refreshPacket(body = {}, apiKey = '') {
|
|
|
265
300
|
const cacheKey = requestCacheKey(body, apiKey);
|
|
266
301
|
if (refreshInFlight && refreshInFlightKey === cacheKey) return refreshInFlight;
|
|
267
302
|
if (refreshInFlight) {
|
|
268
|
-
|
|
303
|
+
// Wait for prior refresh to settle; its error is captured separately
|
|
304
|
+
// into lastRefreshError by the catch at the refreshPacket level. Log
|
|
305
|
+
// here so the wait-and-discard is not a silent swallow per
|
|
306
|
+
// feedback_non_blocking_errors_unacceptable.md.
|
|
307
|
+
await refreshInFlight.catch((err) => {
|
|
308
|
+
console.error('[aria-harnessd] prior in-flight refresh settled with error (continuing)', err?.message);
|
|
309
|
+
});
|
|
269
310
|
}
|
|
270
311
|
if (isLoopedUpstream(UPSTREAM_HARNESS_URL)) {
|
|
271
312
|
throw new Error(`upstream harness URL loops back to local daemon: ${UPSTREAM_HARNESS_URL}`);
|
|
@@ -312,7 +353,11 @@ async function refreshPacket(body = {}, apiKey = '') {
|
|
|
312
353
|
function queuePacketRefresh(body, apiKey) {
|
|
313
354
|
const age = packetAgeMs(cachedPacketEnvelope);
|
|
314
355
|
if (refreshInFlight || age < PACKET_TTL_MS) return;
|
|
315
|
-
refreshPacket(body, apiKey).catch(() => {
|
|
356
|
+
refreshPacket(body, apiKey).catch((err) => {
|
|
357
|
+
// Background refresh failure: do not propagate (we still have a cached
|
|
358
|
+
// envelope to serve), but surface LOUD so operators see drift.
|
|
359
|
+
console.error('[aria-harnessd] background packet refresh failed', err?.message);
|
|
360
|
+
});
|
|
316
361
|
}
|
|
317
362
|
|
|
318
363
|
async function resolvePacketEnvelope(packetRequest = {}, apiKey = '', message = '') {
|
|
@@ -323,7 +368,13 @@ async function resolvePacketEnvelope(packetRequest = {}, apiKey = '', message =
|
|
|
323
368
|
if (!isLoopedUpstream(UPSTREAM_HARNESS_URL)) {
|
|
324
369
|
try {
|
|
325
370
|
return await refreshPacket(packetRequest, apiKey);
|
|
326
|
-
} catch {
|
|
371
|
+
} catch (err) {
|
|
372
|
+
// refreshPacket already wrote err.message into lastRefreshError; emit
|
|
373
|
+
// LOUD here so the upstream-fallback branch is visible in logs (the
|
|
374
|
+
// returned local doctrine envelope is silent about WHY upstream was
|
|
375
|
+
// skipped — log fixes that gap per LOUD-error doctrine).
|
|
376
|
+
console.error('[aria-harnessd] upstream refresh failed; falling back to local doctrine envelope', err?.message);
|
|
377
|
+
}
|
|
327
378
|
}
|
|
328
379
|
return buildLocalDoctrineEnvelope(message, lastRefreshError ? 'local-discipline-daemon-upstream-unavailable' : 'local-discipline-daemon');
|
|
329
380
|
}
|
|
@@ -493,9 +544,28 @@ const server = createServer(async (req, res) => {
|
|
|
493
544
|
res.writeHead(proxied.status, { 'content-type': proxied.contentType });
|
|
494
545
|
res.end(proxied.body);
|
|
495
546
|
} catch (error) {
|
|
547
|
+
// LOUD per feedback_non_blocking_errors_unacceptable.md — surface upstream
|
|
548
|
+
// URL + error name + cause chain instead of a bare "fetch failed" envelope
|
|
549
|
+
// that downstream consumers cannot diagnose. Pathname is included so the
|
|
550
|
+
// proxy hop being routed is visible in the audit trail.
|
|
551
|
+
const errName = error instanceof Error ? error.name : 'Unknown';
|
|
552
|
+
const errMsg = error instanceof Error ? error.message : String(error);
|
|
553
|
+
const cause = error instanceof Error && error.cause ? String(error.cause) : null;
|
|
554
|
+
const safePathname = (() => {
|
|
555
|
+
try { return new URL(req.url || '/', DEFAULT_URL).pathname; }
|
|
556
|
+
catch { return req.url || 'unknown'; }
|
|
557
|
+
})();
|
|
558
|
+
const detail = {
|
|
559
|
+
upstream: UPSTREAM_HARNESS_URL,
|
|
560
|
+
pathname: safePathname,
|
|
561
|
+
err_name: errName,
|
|
562
|
+
cause,
|
|
563
|
+
};
|
|
564
|
+
console.error('[aria-harnessd] proxy error', errMsg, JSON.stringify(detail));
|
|
496
565
|
json(res, 500, {
|
|
497
566
|
ok: false,
|
|
498
|
-
error:
|
|
567
|
+
error: errMsg,
|
|
568
|
+
detail,
|
|
499
569
|
});
|
|
500
570
|
}
|
|
501
571
|
});
|
|
@@ -503,6 +573,11 @@ const server = createServer(async (req, res) => {
|
|
|
503
573
|
server.listen(DEFAULT_PORT, DEFAULT_HOST, () => {
|
|
504
574
|
console.log(`[aria-harnessd] listening on ${DEFAULT_URL}`);
|
|
505
575
|
if (!cachedPacketEnvelope && !isLoopedUpstream(UPSTREAM_HARNESS_URL)) {
|
|
506
|
-
refreshPacket({}, process.env.ARIA_API_KEY || process.env.ARIA_MASTER_TOKEN || '').catch(() => {
|
|
576
|
+
refreshPacket({}, process.env.ARIA_API_KEY || process.env.ARIA_MASTER_TOKEN || '').catch((err) => {
|
|
577
|
+
// Startup-time best-effort refresh; daemon continues with whatever
|
|
578
|
+
// cached/local-doctrine envelope it has. Log LOUD so the cold-start
|
|
579
|
+
// failure is visible per feedback_non_blocking_errors_unacceptable.md.
|
|
580
|
+
console.error('[aria-harnessd] startup packet refresh failed', err?.message);
|
|
581
|
+
});
|
|
507
582
|
}
|
|
508
583
|
});
|