@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.
Files changed (802) hide show
  1. package/bin/aria.js +236 -34
  2. package/dist/aria-connector/src/action-ledger-core.d.ts +387 -0
  3. package/dist/aria-connector/src/action-ledger-core.d.ts.map +1 -0
  4. package/dist/aria-connector/src/action-ledger-core.js +638 -0
  5. package/dist/aria-connector/src/action-ledger-core.js.map +1 -0
  6. package/dist/aria-connector/src/chat.d.ts.map +1 -1
  7. package/dist/aria-connector/src/chat.js +5 -6
  8. package/dist/aria-connector/src/chat.js.map +1 -1
  9. package/dist/aria-connector/src/codebase-scanner.d.ts +1 -1
  10. package/dist/aria-connector/src/codebase-scanner.d.ts.map +1 -1
  11. package/dist/aria-connector/src/connectors/claude-code.d.ts +1 -0
  12. package/dist/aria-connector/src/connectors/claude-code.d.ts.map +1 -1
  13. package/dist/aria-connector/src/connectors/claude-code.js +152 -14
  14. package/dist/aria-connector/src/connectors/claude-code.js.map +1 -1
  15. package/dist/aria-connector/src/connectors/codebase-awareness.d.ts +10 -0
  16. package/dist/aria-connector/src/connectors/codebase-awareness.d.ts.map +1 -1
  17. package/dist/aria-connector/src/connectors/codebase-awareness.js +276 -27
  18. package/dist/aria-connector/src/connectors/codebase-awareness.js.map +1 -1
  19. package/dist/aria-connector/src/connectors/codex.d.ts +3 -1
  20. package/dist/aria-connector/src/connectors/codex.d.ts.map +1 -1
  21. package/dist/aria-connector/src/connectors/codex.js +1223 -41
  22. package/dist/aria-connector/src/connectors/codex.js.map +1 -1
  23. package/dist/aria-connector/src/connectors/cursor.d.ts.map +1 -1
  24. package/dist/aria-connector/src/connectors/cursor.js +7 -0
  25. package/dist/aria-connector/src/connectors/cursor.js.map +1 -1
  26. package/dist/aria-connector/src/connectors/governed-adapter.d.ts +30 -0
  27. package/dist/aria-connector/src/connectors/governed-adapter.d.ts.map +1 -0
  28. package/dist/aria-connector/src/connectors/governed-adapter.js +132 -0
  29. package/dist/aria-connector/src/connectors/governed-adapter.js.map +1 -0
  30. package/dist/aria-connector/src/connectors/opencode.d.ts +3 -1
  31. package/dist/aria-connector/src/connectors/opencode.d.ts.map +1 -1
  32. package/dist/aria-connector/src/connectors/opencode.js +18 -2
  33. package/dist/aria-connector/src/connectors/opencode.js.map +1 -1
  34. package/dist/aria-connector/src/connectors/repo-guard.d.ts.map +1 -1
  35. package/dist/aria-connector/src/connectors/repo-guard.js +25 -14
  36. package/dist/aria-connector/src/connectors/repo-guard.js.map +1 -1
  37. package/dist/aria-connector/src/connectors/runtime.d.ts.map +1 -1
  38. package/dist/aria-connector/src/connectors/runtime.js +92 -2
  39. package/dist/aria-connector/src/connectors/runtime.js.map +1 -1
  40. package/dist/aria-connector/src/connectors/shell.d.ts.map +1 -1
  41. package/dist/aria-connector/src/connectors/shell.js +123 -7
  42. package/dist/aria-connector/src/connectors/shell.js.map +1 -1
  43. package/dist/aria-connector/src/cross-cli-hive-binding.d.ts +63 -0
  44. package/dist/aria-connector/src/cross-cli-hive-binding.d.ts.map +1 -0
  45. package/dist/aria-connector/src/cross-cli-hive-binding.js +205 -0
  46. package/dist/aria-connector/src/cross-cli-hive-binding.js.map +1 -0
  47. package/dist/aria-connector/src/garden-control-plane.d.ts +6 -1
  48. package/dist/aria-connector/src/garden-control-plane.d.ts.map +1 -1
  49. package/dist/aria-connector/src/garden-control-plane.js +8 -2
  50. package/dist/aria-connector/src/garden-control-plane.js.map +1 -1
  51. package/dist/aria-connector/src/governed-surface-runner.d.ts +189 -0
  52. package/dist/aria-connector/src/governed-surface-runner.d.ts.map +1 -0
  53. package/dist/aria-connector/src/governed-surface-runner.js +1022 -0
  54. package/dist/aria-connector/src/governed-surface-runner.js.map +1 -0
  55. package/dist/aria-connector/src/index.d.ts +10 -1
  56. package/dist/aria-connector/src/index.d.ts.map +1 -1
  57. package/dist/aria-connector/src/index.js +5 -0
  58. package/dist/aria-connector/src/index.js.map +1 -1
  59. package/dist/aria-connector/src/task-runner.d.ts +3 -0
  60. package/dist/aria-connector/src/task-runner.d.ts.map +1 -0
  61. package/dist/aria-connector/src/task-runner.js +3526 -0
  62. package/dist/aria-connector/src/task-runner.js.map +1 -0
  63. package/dist/aria-web/src/lib/codebase-scanner.d.ts +21 -2
  64. package/dist/aria-web/src/lib/codebase-scanner.d.ts.map +1 -1
  65. package/dist/aria-web/src/lib/codebase-scanner.js +59 -14
  66. package/dist/aria-web/src/lib/codebase-scanner.js.map +1 -1
  67. package/dist/assets/hooks/README.md +58 -0
  68. package/dist/assets/hooks/aria-agent-handoff.mjs +147 -2
  69. package/dist/assets/hooks/aria-agent-ledger-merge.mjs +31 -7
  70. package/dist/assets/hooks/aria-architect-fallback.mjs +10 -2
  71. package/dist/assets/hooks/aria-claim-evidence-stop-gate.mjs +240 -0
  72. package/dist/assets/hooks/aria-cognition-substrate-binding.mjs +84 -10
  73. package/dist/assets/hooks/aria-first-class-coach.mjs +305 -10
  74. package/dist/assets/hooks/aria-harness-via-sdk.mjs +93 -16
  75. package/dist/assets/hooks/aria-import-resolution-gate.mjs +106 -20
  76. package/dist/assets/hooks/aria-outcome-record.mjs +56 -20
  77. package/dist/assets/hooks/aria-pre-emit-autoload.mjs +1809 -0
  78. package/dist/assets/hooks/aria-pre-emit-autoload.mjs.before-orchestration-redesign +1400 -0
  79. package/dist/assets/hooks/aria-pre-emit-dryrun.mjs +22 -3
  80. package/dist/assets/hooks/aria-pre-text-gate.mjs +11 -2
  81. package/dist/assets/hooks/aria-pre-tool-gate.mjs +477 -81
  82. package/dist/assets/hooks/aria-pre-tool-use.mjs +70 -6
  83. package/dist/assets/hooks/aria-preprompt-consult.mjs +23 -4
  84. package/dist/assets/hooks/aria-repo-doctrine-gate.mjs +29 -3
  85. package/dist/assets/hooks/aria-stop-gate.mjs +585 -76
  86. package/dist/assets/hooks/aria-trigger-autolearn.mjs +17 -3
  87. package/dist/assets/hooks/aria-universal-turn-packet.mjs +1165 -0
  88. package/dist/assets/hooks/aria-userprompt-abandon-detect.mjs +9 -1
  89. package/dist/assets/hooks/canonical-settings-block.json +172 -0
  90. package/dist/assets/hooks/codex-native/aria-harness-ticker-sidecar.mjs +92 -0
  91. package/dist/assets/hooks/codex-native/aria-hive-wal-consumer.mjs +86 -0
  92. package/dist/assets/hooks/codex-native/aria-live-ticker.mjs +38 -0
  93. package/dist/assets/hooks/codex-native/aria-post-tool-use.mjs +236 -0
  94. package/dist/assets/hooks/codex-native/aria-pre-tool-use.mjs +362 -0
  95. package/dist/assets/hooks/codex-native/aria-stop.mjs +691 -0
  96. package/dist/assets/hooks/codex-native/aria-userprompt-submit.mjs +623 -0
  97. package/dist/assets/hooks/codex-native/atlas-session-context.mjs +121 -0
  98. package/dist/assets/hooks/codex-native/lib/evaluate-with-kernel.mjs +257 -0
  99. package/dist/assets/hooks/codex-native/lib/hive-wal-consumer.mjs +452 -0
  100. package/dist/assets/hooks/codex-native/lib/kernel/deterministic-cognitive-kernel.mjs +914 -0
  101. package/dist/assets/hooks/codex-native/lib/project-boundary-cognition.mjs +143 -0
  102. package/dist/assets/hooks/codex-native/lib/runtime-client.mjs +3567 -0
  103. package/dist/assets/hooks/codex-native/lib/task-project-ledger.mjs +294 -0
  104. package/dist/assets/hooks/doctrine_trigger_map.json +236 -25
  105. package/dist/assets/hooks/doctrine_trigger_map.schema.json +46 -0
  106. package/dist/assets/hooks/install.sh +84 -0
  107. package/dist/assets/hooks/lib/action-ledger-core.mjs +269 -0
  108. package/dist/assets/hooks/lib/aria-gate-ledger.mjs +143 -0
  109. package/dist/assets/hooks/lib/ast-stub-shape-detector.mjs +107 -0
  110. package/dist/assets/hooks/lib/atlas-dossier-client.mjs +151 -0
  111. package/dist/assets/hooks/lib/atlas-orchestrator-postwire.mjs +221 -0
  112. package/dist/assets/hooks/lib/canonical-lenses.mjs +83 -6
  113. package/dist/assets/hooks/lib/coach-intent-classifier.mjs +248 -0
  114. package/dist/assets/hooks/lib/cognitive-block-parser.mjs +111 -0
  115. package/dist/assets/hooks/lib/doctrine-trigger-map-loader.mjs +137 -0
  116. package/dist/assets/hooks/lib/domain-output-quality.mjs +132 -3
  117. package/dist/assets/hooks/lib/empty-catch-scanner.mjs +91 -0
  118. package/dist/assets/hooks/lib/end-phase-qa-autofire.mjs +426 -0
  119. package/dist/assets/hooks/lib/evaluate-with-kernel.mjs +133 -0
  120. package/dist/assets/hooks/lib/first-class-coach.mjs +454 -19
  121. package/dist/assets/hooks/lib/gate-audit.mjs +12 -2
  122. package/dist/assets/hooks/lib/gate-loop-state.mjs +11 -2
  123. package/dist/assets/hooks/lib/goal-contract-quality.mjs +302 -0
  124. package/dist/assets/hooks/lib/hook-message-window.mjs +101 -9
  125. package/dist/assets/hooks/lib/invocation-required-verifier.mjs +184 -0
  126. package/dist/assets/hooks/lib/kernel/deterministic-cognitive-kernel.mjs +906 -0
  127. package/dist/assets/hooks/lib/obligation-ledger.mjs +147 -0
  128. package/dist/assets/hooks/lib/orchestration-manifest-extract.mjs +217 -0
  129. package/dist/assets/hooks/lib/owner-authorizations.mjs +269 -0
  130. package/dist/assets/hooks/lib/probe-discipline-scanner.mjs +142 -0
  131. package/dist/assets/hooks/lib/project-boundary-cognition.mjs +143 -0
  132. package/dist/assets/hooks/lib/recovery-context.mjs +151 -0
  133. package/dist/assets/hooks/lib/recovery-template-loader.mjs +154 -0
  134. package/dist/assets/hooks/lib/self-doctrine-check.mjs +321 -0
  135. package/dist/assets/hooks/lib/sensitive-shape-detector.mjs +64 -0
  136. package/dist/assets/hooks/lib/skill-autoload-gate-impl.mjs +226 -1
  137. package/dist/assets/hooks/lib/stop-hook-protocol.mjs +166 -0
  138. package/dist/assets/hooks/lib/surface-caught.mjs +94 -0
  139. package/dist/assets/hooks/recovery-templates/force-reauthor.md +67 -0
  140. package/dist/assets/hooks/recovery-templates/handoff-recovery.md +25 -0
  141. package/dist/assets/hooks/scripts/check-hard-risk-prefix.mjs +99 -0
  142. package/dist/assets/hooks/skills/aria-conversational-doctrine-discipline/SKILL.md +101 -0
  143. package/dist/assets/hooks/test-aria-preturn-memory-gate.mjs +2 -2
  144. package/dist/assets/hooks/test-tier-lens-labeling.mjs +14 -3
  145. package/dist/assets/opencode-plugins/harness-context/index.js +39 -6
  146. package/dist/assets/opencode-plugins/harness-context/task-project-ledger.mjs +5 -1
  147. package/dist/assets/opencode-plugins/harness-gate/index.js +36 -0
  148. package/dist/assets/opencode-plugins/harness-gate/lib/atlas-dossier-client.js +1 -0
  149. package/dist/assets/opencode-plugins/harness-gate/lib/recovery-grants.js +79 -0
  150. package/dist/assets/opencode-plugins/harness-outcome/index.js +12 -0
  151. package/dist/assets/opencode-plugins/harness-stop/index.js +97 -2
  152. package/dist/assets/opencode-plugins/harness-stop/lib/atlas-dossier-client.js +1 -0
  153. package/dist/assets/opencode-plugins/harness-stop/lib/domain-output-quality.js +15 -2
  154. package/dist/assets/opencode-plugins/lib/coach.js +148 -0
  155. package/dist/runtime/coach-kernel.mjs +144 -7
  156. package/dist/runtime/codex-bridge.mjs +254 -8
  157. package/dist/runtime/discipline/doctrine_trigger_map.json +236 -25
  158. package/dist/runtime/discipline/skills/aria-cognition/34-frameworks-unified/SKILL.md +42 -0
  159. package/dist/runtime/discipline/skills/aria-cognition/aria-aristotle-cognitives/SKILL.md +128 -0
  160. package/dist/runtime/discipline/skills/aria-cognition/aria-aristotle-intra-phase/SKILL.md +99 -0
  161. package/dist/runtime/discipline/skills/aria-cognition/aria-aristotle-post-phase/SKILL.md +118 -0
  162. package/dist/runtime/discipline/skills/aria-cognition/aria-aristotle-pre-phase/SKILL.md +117 -0
  163. package/dist/runtime/discipline/skills/aria-cognition/aria-axioms-first-principles/SKILL.md +202 -0
  164. package/dist/runtime/discipline/skills/aria-cognition/aria-axioms-first-principles/agents/openai.yaml +4 -0
  165. package/dist/runtime/discipline/skills/aria-cognition/aria-axioms-first-principles/references/source-map.md +130 -0
  166. package/dist/runtime/discipline/skills/aria-cognition/aria-backend-architect/SKILL.md +124 -0
  167. package/dist/runtime/discipline/skills/aria-cognition/aria-backend-architect/references/backend-cookbook.md +417 -0
  168. package/dist/runtime/discipline/skills/aria-cognition/aria-business-audit/SKILL.md +133 -0
  169. package/dist/runtime/discipline/skills/aria-cognition/aria-business-audit/references/audit-cookbook.md +247 -0
  170. package/dist/runtime/discipline/skills/aria-cognition/aria-business-frame/SKILL.md +138 -0
  171. package/dist/runtime/discipline/skills/aria-cognition/aria-business-frame/references/business-cookbook.md +154 -0
  172. package/dist/runtime/discipline/skills/aria-cognition/aria-chat/SKILL.md +84 -0
  173. package/dist/runtime/discipline/skills/aria-cognition/aria-chat/scripts/aria-chat.sh +57 -0
  174. package/dist/runtime/discipline/skills/aria-cognition/aria-cognition-autofire/SKILL.md +137 -0
  175. package/dist/runtime/discipline/skills/aria-cognition/aria-cognition-batch/SKILL.md +264 -0
  176. package/dist/runtime/discipline/skills/aria-cognition/aria-decision-mizan/SKILL.md +136 -0
  177. package/dist/runtime/discipline/skills/aria-cognition/aria-decision-mizan/references/decision-frameworks.md +287 -0
  178. package/dist/runtime/discipline/skills/aria-cognition/aria-first-class-operating-contract/SKILL.md +104 -0
  179. package/dist/runtime/discipline/skills/aria-cognition/aria-frontend-architect/SKILL.md +123 -0
  180. package/dist/runtime/discipline/skills/aria-cognition/aria-frontend-architect/references/frontend-cookbook.md +358 -0
  181. package/dist/runtime/discipline/skills/aria-cognition/aria-fullstack-orchestrator/SKILL.md +127 -0
  182. package/dist/runtime/discipline/skills/aria-cognition/aria-fullstack-orchestrator/references/fullstack-cookbook.md +383 -0
  183. package/dist/runtime/discipline/skills/aria-cognition/aria-gtm-architect/SKILL.md +126 -0
  184. package/dist/runtime/discipline/skills/aria-cognition/aria-gtm-architect/references/gtm-cookbook.md +235 -0
  185. package/dist/runtime/discipline/skills/aria-cognition/aria-harness-deploy/SKILL.md +145 -0
  186. package/dist/runtime/discipline/skills/aria-cognition/aria-harness-no-stripping/SKILL.md +135 -0
  187. package/dist/runtime/discipline/skills/aria-cognition/aria-harness-onboarding/SKILL.md +130 -0
  188. package/dist/runtime/discipline/skills/aria-cognition/aria-harness-output-discipline/SKILL.md +120 -0
  189. package/dist/runtime/discipline/skills/aria-cognition/aria-harness-substrate-binding/SKILL.md +139 -0
  190. package/dist/runtime/discipline/skills/aria-cognition/aria-http-harness-client/SKILL.md +85 -0
  191. package/dist/runtime/discipline/skills/aria-cognition/aria-http-harness-client/scripts/smoke.mjs +47 -0
  192. package/dist/runtime/discipline/skills/aria-cognition/aria-k8s-deploy/SKILL.md +174 -0
  193. package/dist/runtime/discipline/skills/aria-cognition/aria-k8s-deploy/agents/openai.yaml +3 -0
  194. package/dist/runtime/discipline/skills/aria-cognition/aria-ladduniframe/SKILL.md +60 -0
  195. package/dist/runtime/discipline/skills/aria-cognition/aria-ledger-fleet-execution/SKILL.md +126 -0
  196. package/dist/runtime/discipline/skills/aria-cognition/aria-live-ops/SKILL.md +54 -0
  197. package/dist/runtime/discipline/skills/aria-cognition/aria-mac-ssh-ops/SKILL.md +100 -0
  198. package/dist/runtime/discipline/skills/aria-cognition/aria-memory-index/SKILL.md +42 -0
  199. package/dist/runtime/discipline/skills/aria-cognition/aria-noor-cognitives/SKILL.md +120 -0
  200. package/dist/runtime/discipline/skills/aria-cognition/aria-ops/SKILL.md +60 -0
  201. package/dist/runtime/discipline/skills/aria-cognition/aria-ops/references/live-endpoints.md +59 -0
  202. package/dist/runtime/discipline/skills/aria-cognition/aria-quality-audit/SKILL.md +133 -0
  203. package/dist/runtime/discipline/skills/aria-cognition/aria-readable-output/SKILL.md +239 -0
  204. package/dist/runtime/discipline/skills/aria-cognition/aria-readable-output/references/layout-cookbook.md +366 -0
  205. package/dist/runtime/discipline/skills/aria-cognition/aria-reasoning/SKILL.md +67 -0
  206. package/dist/runtime/discipline/skills/aria-cognition/aria-reasoning/references/core-principles.md +42 -0
  207. package/dist/runtime/discipline/skills/aria-cognition/aria-repo-audit/SKILL.md +135 -0
  208. package/dist/runtime/discipline/skills/aria-cognition/aria-repo-audit/references/repo-audit-cookbook.md +375 -0
  209. package/dist/runtime/discipline/skills/aria-cognition/aria-research-orchestrator/SKILL.md +138 -0
  210. package/dist/runtime/discipline/skills/aria-cognition/aria-research-orchestrator/references/research-patterns.md +270 -0
  211. package/dist/runtime/discipline/skills/aria-cognition/aria-retention-engine/SKILL.md +120 -0
  212. package/dist/runtime/discipline/skills/aria-cognition/aria-retention-engine/references/retention-cookbook.md +271 -0
  213. package/dist/runtime/discipline/skills/aria-cognition/aria-revenue-engine/SKILL.md +128 -0
  214. package/dist/runtime/discipline/skills/aria-cognition/aria-revenue-engine/references/revenue-cookbook.md +227 -0
  215. package/dist/runtime/discipline/skills/aria-cognition/aria-senior-code-audit/SKILL.md +233 -0
  216. package/dist/runtime/discipline/skills/aria-cognition/aria-senior-code-audit/references/audit-checklist.md +369 -0
  217. package/dist/runtime/discipline/skills/aria-cognition/aria-senior-code-cookbook/SKILL.md +288 -0
  218. package/dist/runtime/discipline/skills/aria-cognition/aria-senior-code-cookbook/references/engineering-cookbook.md +489 -0
  219. package/dist/runtime/discipline/skills/aria-cognition/aria-soul-principles/SKILL.md +42 -0
  220. package/dist/runtime/discipline/skills/aria-cognition/aria-task-codex-executor/SKILL.md +86 -0
  221. package/dist/runtime/discipline/skills/aria-cognition/aristotle-engine/SKILL.md +42 -0
  222. package/dist/runtime/discipline/skills/aria-cognition/cross-domain-24/SKILL.md +42 -0
  223. package/dist/runtime/discipline/skills/aria-cognition/deepsoul-emotional/SKILL.md +42 -0
  224. package/dist/runtime/discipline/skills/aria-cognition/fitrah-guard/SKILL.md +78 -0
  225. package/dist/runtime/discipline/skills/aria-cognition/ghazali-8lens/SKILL.md +227 -29
  226. package/dist/runtime/discipline/skills/aria-cognition/ghazali-8lens/references/ghazali-8lens-cookbook.md +797 -0
  227. package/dist/runtime/discipline/skills/aria-cognition/ijtihad-novel/SKILL.md +42 -0
  228. package/dist/runtime/discipline/skills/aria-cognition/ilham-intuition/SKILL.md +42 -0
  229. package/dist/runtime/discipline/skills/aria-cognition/never-guess/SKILL.md +77 -0
  230. package/dist/runtime/discipline/skills/aria-cognition/noor-recognition/SKILL.md +45 -0
  231. package/dist/runtime/discipline/skills/aria-cognition/qiyas-analogy/SKILL.md +174 -14
  232. package/dist/runtime/discipline/skills/aria-cognition/ruh-basis/SKILL.md +42 -0
  233. package/dist/runtime/discipline/skills/aria-cognition/tadabbur/SKILL.md +506 -0
  234. package/dist/runtime/discipline/skills/aria-cognition/tadabbur/references/tadabbur-cookbook.md +921 -0
  235. package/dist/runtime/discipline/skills/aria-cognition/tadabbur-ops/SKILL.md +42 -0
  236. package/dist/runtime/discipline/skills/aria-cognition/tafakkur/SKILL.md +104 -0
  237. package/dist/runtime/doctrine_trigger_map.json +236 -25
  238. package/dist/runtime/embedded-public-key.mjs +27 -0
  239. package/dist/runtime/gated-ledger.mjs +41 -14
  240. package/dist/runtime/harness-daemon.mjs +85 -10
  241. package/dist/runtime/hive-wal-publisher.mjs +292 -0
  242. package/dist/runtime/hooks/README.md +58 -0
  243. package/dist/runtime/hooks/aria-agent-handoff.mjs +147 -2
  244. package/dist/runtime/hooks/aria-agent-ledger-merge.mjs +31 -7
  245. package/dist/runtime/hooks/aria-architect-fallback.mjs +10 -2
  246. package/dist/runtime/hooks/aria-claim-evidence-stop-gate.mjs +240 -0
  247. package/dist/runtime/hooks/aria-cognition-substrate-binding.mjs +84 -10
  248. package/dist/runtime/hooks/aria-first-class-coach.mjs +305 -10
  249. package/dist/runtime/hooks/aria-harness-via-sdk.mjs +93 -16
  250. package/dist/runtime/hooks/aria-import-resolution-gate.mjs +106 -20
  251. package/dist/runtime/hooks/aria-outcome-record.mjs +56 -20
  252. package/dist/runtime/hooks/aria-pre-emit-autoload.mjs +1809 -0
  253. package/dist/runtime/hooks/aria-pre-emit-autoload.mjs.before-orchestration-redesign +1400 -0
  254. package/dist/runtime/hooks/aria-pre-emit-dryrun.mjs +22 -3
  255. package/dist/runtime/hooks/aria-pre-text-gate.mjs +11 -2
  256. package/dist/runtime/hooks/aria-pre-tool-gate.mjs +477 -81
  257. package/dist/runtime/hooks/aria-pre-tool-use.mjs +70 -6
  258. package/dist/runtime/hooks/aria-preprompt-consult.mjs +23 -4
  259. package/dist/runtime/hooks/aria-repo-doctrine-gate.mjs +29 -3
  260. package/dist/runtime/hooks/aria-stop-gate.mjs +585 -76
  261. package/dist/runtime/hooks/aria-trigger-autolearn.mjs +17 -3
  262. package/dist/runtime/hooks/aria-universal-turn-packet.mjs +1165 -0
  263. package/dist/runtime/hooks/aria-userprompt-abandon-detect.mjs +9 -1
  264. package/dist/runtime/hooks/canonical-settings-block.json +172 -0
  265. package/dist/runtime/hooks/codex-native/aria-harness-ticker-sidecar.mjs +92 -0
  266. package/dist/runtime/hooks/codex-native/aria-hive-wal-consumer.mjs +86 -0
  267. package/dist/runtime/hooks/codex-native/aria-live-ticker.mjs +38 -0
  268. package/dist/runtime/hooks/codex-native/aria-post-tool-use.mjs +236 -0
  269. package/dist/runtime/hooks/codex-native/aria-pre-tool-use.mjs +362 -0
  270. package/dist/runtime/hooks/codex-native/aria-stop.mjs +691 -0
  271. package/dist/runtime/hooks/codex-native/aria-userprompt-submit.mjs +623 -0
  272. package/dist/runtime/hooks/codex-native/atlas-session-context.mjs +121 -0
  273. package/dist/runtime/hooks/codex-native/lib/evaluate-with-kernel.mjs +257 -0
  274. package/dist/runtime/hooks/codex-native/lib/hive-wal-consumer.mjs +452 -0
  275. package/dist/runtime/hooks/codex-native/lib/kernel/deterministic-cognitive-kernel.mjs +914 -0
  276. package/dist/runtime/hooks/codex-native/lib/project-boundary-cognition.mjs +143 -0
  277. package/dist/runtime/hooks/codex-native/lib/runtime-client.mjs +3567 -0
  278. package/dist/runtime/hooks/codex-native/lib/task-project-ledger.mjs +294 -0
  279. package/dist/runtime/hooks/doctrine_trigger_map.json +236 -25
  280. package/dist/runtime/hooks/doctrine_trigger_map.schema.json +46 -0
  281. package/dist/runtime/hooks/install.sh +84 -0
  282. package/dist/runtime/hooks/lib/action-ledger-core.mjs +269 -0
  283. package/dist/runtime/hooks/lib/aria-gate-ledger.mjs +143 -0
  284. package/dist/runtime/hooks/lib/ast-stub-shape-detector.mjs +107 -0
  285. package/dist/runtime/hooks/lib/atlas-dossier-client.mjs +151 -0
  286. package/dist/runtime/hooks/lib/atlas-orchestrator-postwire.mjs +221 -0
  287. package/dist/runtime/hooks/lib/canonical-lenses.mjs +83 -6
  288. package/dist/runtime/hooks/lib/coach-intent-classifier.mjs +248 -0
  289. package/dist/runtime/hooks/lib/cognitive-block-parser.mjs +111 -0
  290. package/dist/runtime/hooks/lib/doctrine-trigger-map-loader.mjs +137 -0
  291. package/dist/runtime/hooks/lib/domain-output-quality.mjs +132 -3
  292. package/dist/runtime/hooks/lib/empty-catch-scanner.mjs +91 -0
  293. package/dist/runtime/hooks/lib/end-phase-qa-autofire.mjs +426 -0
  294. package/dist/runtime/hooks/lib/evaluate-with-kernel.mjs +133 -0
  295. package/dist/runtime/hooks/lib/first-class-coach.mjs +454 -19
  296. package/dist/runtime/hooks/lib/gate-audit.mjs +12 -2
  297. package/dist/runtime/hooks/lib/gate-loop-state.mjs +11 -2
  298. package/dist/runtime/hooks/lib/goal-contract-quality.mjs +302 -0
  299. package/dist/runtime/hooks/lib/hook-message-window.mjs +101 -9
  300. package/dist/runtime/hooks/lib/invocation-required-verifier.mjs +184 -0
  301. package/dist/runtime/hooks/lib/kernel/deterministic-cognitive-kernel.mjs +906 -0
  302. package/dist/runtime/hooks/lib/obligation-ledger.mjs +147 -0
  303. package/dist/runtime/hooks/lib/orchestration-manifest-extract.mjs +217 -0
  304. package/dist/runtime/hooks/lib/owner-authorizations.mjs +269 -0
  305. package/dist/runtime/hooks/lib/probe-discipline-scanner.mjs +142 -0
  306. package/dist/runtime/hooks/lib/project-boundary-cognition.mjs +143 -0
  307. package/dist/runtime/hooks/lib/recovery-context.mjs +151 -0
  308. package/dist/runtime/hooks/lib/recovery-template-loader.mjs +154 -0
  309. package/dist/runtime/hooks/lib/self-doctrine-check.mjs +321 -0
  310. package/dist/runtime/hooks/lib/sensitive-shape-detector.mjs +64 -0
  311. package/dist/runtime/hooks/lib/skill-autoload-gate-impl.mjs +226 -1
  312. package/dist/runtime/hooks/lib/stop-hook-protocol.mjs +166 -0
  313. package/dist/runtime/hooks/lib/surface-caught.mjs +94 -0
  314. package/dist/runtime/hooks/recovery-templates/force-reauthor.md +67 -0
  315. package/dist/runtime/hooks/recovery-templates/handoff-recovery.md +25 -0
  316. package/dist/runtime/hooks/scripts/check-hard-risk-prefix.mjs +99 -0
  317. package/dist/runtime/hooks/skills/aria-conversational-doctrine-discipline/SKILL.md +101 -0
  318. package/dist/runtime/hooks/test-aria-preturn-memory-gate.mjs +2 -2
  319. package/dist/runtime/hooks/test-tier-lens-labeling.mjs +14 -3
  320. package/dist/runtime/lib/evaluate-with-kernel.mjs +133 -0
  321. package/dist/runtime/lib/kernel/deterministic-cognitive-kernel.mjs +906 -0
  322. package/dist/runtime/local-phase.mjs +10 -5
  323. package/dist/runtime/manifest.json +8 -8
  324. package/dist/runtime/packet-verifier.mjs +166 -0
  325. package/dist/runtime/provider-proxy.mjs +13 -0
  326. package/dist/runtime/quality-enforcer.mjs +40 -23
  327. package/dist/runtime/runtime-rails/registry.mjs +252 -0
  328. package/dist/runtime/sdk/BUNDLED.json +2 -2
  329. package/dist/runtime/sdk/index.d.ts +119 -4
  330. package/dist/runtime/sdk/index.js +138 -12
  331. package/dist/runtime/sdk/index.js.map +1 -1
  332. package/dist/runtime/service.mjs +8036 -764
  333. package/dist/runtime/sub-agent-enforcer.mjs +201 -0
  334. package/dist/runtime/task-project-ledger.mjs +5 -1
  335. package/dist/sdk/BUNDLED.json +2 -2
  336. package/dist/sdk/index.d.ts +119 -4
  337. package/dist/sdk/index.js +138 -12
  338. package/dist/sdk/index.js.map +1 -1
  339. package/hooks/README.md +58 -0
  340. package/hooks/aria-agent-handoff.mjs +147 -2
  341. package/hooks/aria-agent-ledger-merge.mjs +31 -7
  342. package/hooks/aria-architect-fallback.mjs +10 -2
  343. package/hooks/aria-claim-evidence-stop-gate.mjs +240 -0
  344. package/hooks/aria-cognition-substrate-binding.mjs +84 -10
  345. package/hooks/aria-first-class-coach.mjs +305 -10
  346. package/hooks/aria-harness-via-sdk.mjs +93 -16
  347. package/hooks/aria-import-resolution-gate.mjs +106 -20
  348. package/hooks/aria-outcome-record.mjs +56 -20
  349. package/hooks/aria-pre-emit-autoload.mjs +1809 -0
  350. package/hooks/aria-pre-emit-autoload.mjs.before-orchestration-redesign +1400 -0
  351. package/hooks/aria-pre-emit-dryrun.mjs +22 -3
  352. package/hooks/aria-pre-text-gate.mjs +11 -2
  353. package/hooks/aria-pre-tool-gate.mjs +477 -81
  354. package/hooks/aria-pre-tool-use.mjs +70 -6
  355. package/hooks/aria-preprompt-consult.mjs +23 -4
  356. package/hooks/aria-repo-doctrine-gate.mjs +29 -3
  357. package/hooks/aria-stop-gate.mjs +585 -76
  358. package/hooks/aria-trigger-autolearn.mjs +17 -3
  359. package/hooks/aria-universal-turn-packet.mjs +1165 -0
  360. package/hooks/aria-userprompt-abandon-detect.mjs +9 -1
  361. package/hooks/canonical-settings-block.json +172 -0
  362. package/hooks/codex-native/aria-harness-ticker-sidecar.mjs +92 -0
  363. package/hooks/codex-native/aria-hive-wal-consumer.mjs +86 -0
  364. package/hooks/codex-native/aria-live-ticker.mjs +38 -0
  365. package/hooks/codex-native/aria-post-tool-use.mjs +236 -0
  366. package/hooks/codex-native/aria-pre-tool-use.mjs +362 -0
  367. package/hooks/codex-native/aria-stop.mjs +691 -0
  368. package/hooks/codex-native/aria-userprompt-submit.mjs +623 -0
  369. package/hooks/codex-native/atlas-session-context.mjs +121 -0
  370. package/hooks/codex-native/lib/evaluate-with-kernel.mjs +257 -0
  371. package/hooks/codex-native/lib/hive-wal-consumer.mjs +452 -0
  372. package/hooks/codex-native/lib/kernel/deterministic-cognitive-kernel.mjs +914 -0
  373. package/hooks/codex-native/lib/project-boundary-cognition.mjs +143 -0
  374. package/hooks/codex-native/lib/runtime-client.mjs +3567 -0
  375. package/hooks/codex-native/lib/task-project-ledger.mjs +294 -0
  376. package/hooks/doctrine_trigger_map.json +236 -25
  377. package/hooks/doctrine_trigger_map.schema.json +46 -0
  378. package/hooks/install.sh +84 -0
  379. package/hooks/lib/action-ledger-core.mjs +269 -0
  380. package/hooks/lib/aria-gate-ledger.mjs +143 -0
  381. package/hooks/lib/ast-stub-shape-detector.mjs +107 -0
  382. package/hooks/lib/atlas-dossier-client.mjs +151 -0
  383. package/hooks/lib/atlas-orchestrator-postwire.mjs +221 -0
  384. package/hooks/lib/canonical-lenses.mjs +83 -6
  385. package/hooks/lib/coach-intent-classifier.mjs +248 -0
  386. package/hooks/lib/cognitive-block-parser.mjs +111 -0
  387. package/hooks/lib/doctrine-trigger-map-loader.mjs +137 -0
  388. package/hooks/lib/domain-output-quality.mjs +132 -3
  389. package/hooks/lib/empty-catch-scanner.mjs +91 -0
  390. package/hooks/lib/end-phase-qa-autofire.mjs +426 -0
  391. package/hooks/lib/evaluate-with-kernel.mjs +133 -0
  392. package/hooks/lib/first-class-coach.mjs +454 -19
  393. package/hooks/lib/gate-audit.mjs +12 -2
  394. package/hooks/lib/gate-loop-state.mjs +11 -2
  395. package/hooks/lib/goal-contract-quality.mjs +302 -0
  396. package/hooks/lib/hook-message-window.mjs +101 -9
  397. package/hooks/lib/invocation-required-verifier.mjs +184 -0
  398. package/hooks/lib/kernel/deterministic-cognitive-kernel.mjs +906 -0
  399. package/hooks/lib/obligation-ledger.mjs +147 -0
  400. package/hooks/lib/orchestration-manifest-extract.mjs +217 -0
  401. package/hooks/lib/owner-authorizations.mjs +269 -0
  402. package/hooks/lib/probe-discipline-scanner.mjs +142 -0
  403. package/hooks/lib/project-boundary-cognition.mjs +143 -0
  404. package/hooks/lib/recovery-context.mjs +151 -0
  405. package/hooks/lib/recovery-template-loader.mjs +154 -0
  406. package/hooks/lib/self-doctrine-check.mjs +321 -0
  407. package/hooks/lib/sensitive-shape-detector.mjs +64 -0
  408. package/hooks/lib/skill-autoload-gate-impl.mjs +226 -1
  409. package/hooks/lib/stop-hook-protocol.mjs +166 -0
  410. package/hooks/lib/surface-caught.mjs +94 -0
  411. package/hooks/recovery-templates/force-reauthor.md +67 -0
  412. package/hooks/recovery-templates/handoff-recovery.md +25 -0
  413. package/hooks/scripts/check-hard-risk-prefix.mjs +99 -0
  414. package/hooks/skills/aria-conversational-doctrine-discipline/SKILL.md +101 -0
  415. package/hooks/test-aria-preturn-memory-gate.mjs +2 -2
  416. package/hooks/test-tier-lens-labeling.mjs +14 -3
  417. package/opencode-plugins/harness-context/index.js +39 -6
  418. package/opencode-plugins/harness-context/task-project-ledger.mjs +5 -1
  419. package/opencode-plugins/harness-gate/index.js +36 -0
  420. package/opencode-plugins/harness-gate/lib/atlas-dossier-client.js +1 -0
  421. package/opencode-plugins/harness-gate/lib/recovery-grants.js +79 -0
  422. package/opencode-plugins/harness-outcome/index.js +12 -0
  423. package/opencode-plugins/harness-stop/index.js +97 -2
  424. package/opencode-plugins/harness-stop/lib/atlas-dossier-client.js +1 -0
  425. package/opencode-plugins/harness-stop/lib/domain-output-quality.js +15 -2
  426. package/opencode-plugins/lib/coach.js +148 -0
  427. package/package.json +71 -5
  428. package/runtime-src/coach-kernel.mjs +144 -7
  429. package/runtime-src/codex-bridge.mjs +254 -8
  430. package/runtime-src/embedded-public-key.mjs +27 -0
  431. package/runtime-src/gated-ledger.mjs +41 -14
  432. package/runtime-src/harness-daemon.mjs +85 -10
  433. package/runtime-src/hive-wal-publisher.mjs +292 -0
  434. package/runtime-src/lib/evaluate-with-kernel.mjs +133 -0
  435. package/runtime-src/lib/kernel/deterministic-cognitive-kernel.mjs +906 -0
  436. package/runtime-src/local-phase.mjs +10 -5
  437. package/runtime-src/packet-verifier.mjs +166 -0
  438. package/runtime-src/provider-proxy.mjs +13 -0
  439. package/runtime-src/quality-enforcer.mjs +40 -23
  440. package/runtime-src/runtime-rails/registry.mjs +252 -0
  441. package/runtime-src/service.mjs +8036 -764
  442. package/runtime-src/sub-agent-enforcer.mjs +201 -0
  443. package/scripts/aria-ledger-append.mjs +337 -0
  444. package/scripts/aria-task-cheap-worker-dispatch.mjs +234 -0
  445. package/scripts/audit-of-audit-prior-tasks.mjs +194 -0
  446. package/scripts/audit-of-audit-this-turn.mjs +116 -0
  447. package/scripts/bundle-sdk.mjs +31 -5
  448. package/scripts/check-cli-wrapper-provider-contract.mjs +160 -0
  449. package/scripts/check-client-compatibility.mjs +15 -5
  450. package/scripts/check-client-smoke.mjs +297 -0
  451. package/scripts/check-codex-orchestrator-adoption.mjs +150 -0
  452. package/scripts/check-glm-env-wired.mjs +131 -0
  453. package/scripts/check-hive-local-storage-contract.mjs +91 -0
  454. package/scripts/check-hook-mirror.mjs +150 -0
  455. package/scripts/check-install-sh-drift.mjs +152 -0
  456. package/scripts/check-kernel-sync.mjs +101 -0
  457. package/scripts/check-package-artifact.mjs +152 -0
  458. package/scripts/check-registry-mirror.mjs +71 -0
  459. package/scripts/drain-owner-airtable-sync-queue.mjs +287 -0
  460. package/scripts/export-owner-status-sheets.mjs +589 -0
  461. package/scripts/live-sidecar-receipt-canary.mjs +347 -0
  462. package/scripts/qiyas-tadabbur-model-matrix.mjs +970 -0
  463. package/scripts/quality-ab-live-provider.mjs +913 -0
  464. package/scripts/self-test-action-ledger-core.mjs +190 -0
  465. package/scripts/self-test-approval-receipt-binding.mjs +122 -0
  466. package/scripts/self-test-autofire-quality-output.mjs +110 -0
  467. package/scripts/self-test-claude-code-action-ledger.mjs +132 -0
  468. package/scripts/self-test-claude-code-mechanical-autofire-hive.mjs +138 -0
  469. package/scripts/self-test-claude-code-mechanical-autofire.mjs +234 -0
  470. package/scripts/self-test-codebase-awareness-atlas-delta.mjs +159 -0
  471. package/scripts/self-test-codebase-awareness-delta-ingest.mjs +179 -0
  472. package/scripts/self-test-codex-live-hook-parity.mjs +84 -0
  473. package/scripts/self-test-codex-native-action-ledger.mjs +167 -0
  474. package/scripts/self-test-codex-native-hook-json-contract.mjs +74 -0
  475. package/scripts/self-test-codex-orchestrator-continuity.mjs +113 -0
  476. package/scripts/self-test-codex-readable-recovery.mjs +94 -0
  477. package/scripts/self-test-codex-self-harness.mjs +538 -0
  478. package/scripts/self-test-compiled-workunit.mjs +214 -0
  479. package/scripts/self-test-continuation-output-smoke.mjs +101 -0
  480. package/scripts/self-test-cross-cli-fleet-ticker.mjs +85 -0
  481. package/scripts/self-test-cross-cli-hive-adoption.mjs +125 -0
  482. package/scripts/self-test-cross-cli-hive-learning.mjs +146 -0
  483. package/scripts/self-test-cross-phase-tool-failure.mjs +110 -0
  484. package/scripts/self-test-cross-surface-action-ledger.mjs +149 -0
  485. package/scripts/self-test-end-of-phase-qa-court.mjs +616 -0
  486. package/scripts/self-test-evaluate-with-kernel.mjs +111 -0
  487. package/scripts/self-test-first-class-output-delta-proof.mjs +307 -0
  488. package/scripts/self-test-goal-contract-output-qa.mjs +73 -0
  489. package/scripts/self-test-goal-contract.mjs +35 -0
  490. package/scripts/self-test-governed-adapters.mjs +105 -0
  491. package/scripts/self-test-governed-surface-runner.mjs +198 -0
  492. package/scripts/self-test-harness-gates.mjs +15 -12
  493. package/scripts/self-test-harness-ticker-sidecar.mjs +153 -0
  494. package/scripts/self-test-hive-org-kernel.mjs +233 -0
  495. package/scripts/self-test-hive-session-coordination.mjs +156 -0
  496. package/scripts/self-test-hive-wal-consumer.mjs +111 -0
  497. package/scripts/self-test-kernel-a3-a4-selection.mjs +179 -0
  498. package/scripts/self-test-ledger-append.mjs +175 -0
  499. package/scripts/self-test-live-codex-posttool-packet-smoke.mjs +111 -0
  500. package/scripts/self-test-live-codex-pretool-packet-smoke.mjs +101 -0
  501. package/scripts/self-test-live-codex-stop-qa-kernel-smoke.mjs +43 -0
  502. package/scripts/self-test-live-wrapper-substrate-inventory.mjs +149 -0
  503. package/scripts/self-test-local-main-sync-script.mjs +47 -0
  504. package/scripts/self-test-mechanical-autofire-resolver.mjs +296 -0
  505. package/scripts/self-test-no-consult-cognitive-skills-output.mjs +135 -0
  506. package/scripts/self-test-owner-airtable-sync-queue.mjs +196 -0
  507. package/scripts/self-test-owner-airtable-sync.mjs +181 -0
  508. package/scripts/self-test-owner-sheets-action-ledger.mjs +100 -0
  509. package/scripts/self-test-production-preflight.mjs +78 -0
  510. package/scripts/self-test-project-boundary-cognition.mjs +79 -0
  511. package/scripts/self-test-qa-exec-kernel.mjs +34 -0
  512. package/scripts/self-test-qa-recovery-learning-loop.mjs +113 -0
  513. package/scripts/self-test-qiyas-label-alignment.mjs +94 -0
  514. package/scripts/self-test-recovery-context.mjs +110 -0
  515. package/scripts/self-test-repo-guard.mjs +10 -0
  516. package/scripts/self-test-runtime-health-self-heal.mjs +161 -0
  517. package/scripts/self-test-runtime-postcondition.mjs +70 -0
  518. package/scripts/self-test-soul-precommit-hook.mjs +39 -0
  519. package/scripts/self-test-stop-gate-kernel-guards.mjs +185 -0
  520. package/scripts/self-test-stop-gate.mjs +128 -0
  521. package/scripts/self-test-substrate-kernel-execution-receipt.mjs +130 -0
  522. package/scripts/self-test-substrate-open-skill-floor.mjs +87 -0
  523. package/scripts/self-test-substrate-output-quality-eval.mjs +171 -0
  524. package/scripts/self-test-task-closeout-drift.mjs +97 -0
  525. package/scripts/self-test-task-project-ledger-readiness.mjs +43 -0
  526. package/scripts/self-test-task-runner-phase-consumer.mjs +134 -0
  527. package/scripts/self-test-task-worker-lane.mjs +256 -0
  528. package/scripts/self-test-turn-substrate-qa-kernel.mjs +188 -0
  529. package/scripts/self-test-universal-action-capture.mjs +153 -0
  530. package/scripts/self-test-universal-turn-packet-entrypoints.mjs +252 -0
  531. package/scripts/self-test-universal-turn-packet.mjs +320 -0
  532. package/scripts/session-quality-backfill.mjs +253 -0
  533. package/scripts/smoke-autofire-100-prompts.mjs +481 -0
  534. package/scripts/sync-local-main-on-task-complete.mjs +278 -0
  535. package/scripts/sync-owner-status-airtable.mjs +1158 -0
  536. package/scripts/validate-skill-prompts.mjs +12 -1
  537. package/scripts/verify-codex-native-mirror.mjs +262 -0
  538. package/skills/34-frameworks-unified/SKILL.md +42 -0
  539. package/skills/api-design/SKILL.md +123 -0
  540. package/skills/architecture-decision/SKILL.md +105 -0
  541. package/skills/aria-aristotle-cognitives/SKILL.md +128 -0
  542. package/skills/aria-aristotle-intra-phase/SKILL.md +99 -0
  543. package/skills/aria-aristotle-post-phase/SKILL.md +116 -0
  544. package/skills/aria-aristotle-pre-phase/SKILL.md +117 -0
  545. package/skills/aria-axioms-first-principles/SKILL.md +202 -0
  546. package/skills/aria-axioms-first-principles/agents/openai.yaml +4 -0
  547. package/skills/aria-axioms-first-principles/references/source-map.md +130 -0
  548. package/skills/aria-chat/SKILL.md +84 -0
  549. package/skills/aria-chat/scripts/aria-chat.sh +57 -0
  550. package/skills/aria-cognition/34-frameworks-unified/SKILL.md +42 -0
  551. package/skills/aria-cognition/aria-aristotle-cognitives/SKILL.md +128 -0
  552. package/skills/aria-cognition/aria-aristotle-intra-phase/SKILL.md +99 -0
  553. package/skills/aria-cognition/aria-aristotle-post-phase/SKILL.md +118 -0
  554. package/skills/aria-cognition/aria-aristotle-pre-phase/SKILL.md +117 -0
  555. package/skills/aria-cognition/aria-axioms-first-principles/SKILL.md +202 -0
  556. package/skills/aria-cognition/aria-axioms-first-principles/agents/openai.yaml +4 -0
  557. package/skills/aria-cognition/aria-axioms-first-principles/references/source-map.md +130 -0
  558. package/skills/aria-cognition/aria-backend-architect/SKILL.md +124 -0
  559. package/skills/aria-cognition/aria-backend-architect/references/backend-cookbook.md +417 -0
  560. package/skills/aria-cognition/aria-business-audit/SKILL.md +133 -0
  561. package/skills/aria-cognition/aria-business-audit/references/audit-cookbook.md +247 -0
  562. package/skills/aria-cognition/aria-business-frame/SKILL.md +138 -0
  563. package/skills/aria-cognition/aria-business-frame/references/business-cookbook.md +154 -0
  564. package/skills/aria-cognition/aria-chat/SKILL.md +84 -0
  565. package/skills/aria-cognition/aria-chat/scripts/aria-chat.sh +57 -0
  566. package/skills/aria-cognition/aria-cognition-autofire/SKILL.md +137 -0
  567. package/skills/aria-cognition/aria-cognition-batch/SKILL.md +264 -0
  568. package/skills/aria-cognition/aria-decision-mizan/SKILL.md +136 -0
  569. package/skills/aria-cognition/aria-decision-mizan/references/decision-frameworks.md +287 -0
  570. package/skills/aria-cognition/aria-first-class-operating-contract/SKILL.md +104 -0
  571. package/skills/aria-cognition/aria-frontend-architect/SKILL.md +123 -0
  572. package/skills/aria-cognition/aria-frontend-architect/references/frontend-cookbook.md +358 -0
  573. package/skills/aria-cognition/aria-fullstack-orchestrator/SKILL.md +127 -0
  574. package/skills/aria-cognition/aria-fullstack-orchestrator/references/fullstack-cookbook.md +383 -0
  575. package/skills/aria-cognition/aria-gtm-architect/SKILL.md +126 -0
  576. package/skills/aria-cognition/aria-gtm-architect/references/gtm-cookbook.md +235 -0
  577. package/skills/aria-cognition/aria-harness-deploy/SKILL.md +145 -0
  578. package/skills/aria-cognition/aria-harness-no-stripping/SKILL.md +135 -0
  579. package/skills/aria-cognition/aria-harness-onboarding/SKILL.md +130 -0
  580. package/skills/aria-cognition/aria-harness-output-discipline/SKILL.md +120 -0
  581. package/skills/aria-cognition/aria-harness-substrate-binding/SKILL.md +139 -0
  582. package/skills/aria-cognition/aria-http-harness-client/SKILL.md +85 -0
  583. package/skills/aria-cognition/aria-http-harness-client/scripts/smoke.mjs +47 -0
  584. package/skills/aria-cognition/aria-k8s-deploy/SKILL.md +174 -0
  585. package/skills/aria-cognition/aria-k8s-deploy/agents/openai.yaml +3 -0
  586. package/skills/aria-cognition/aria-ladduniframe/SKILL.md +60 -0
  587. package/skills/aria-cognition/aria-ledger-fleet-execution/SKILL.md +126 -0
  588. package/skills/aria-cognition/aria-live-ops/SKILL.md +54 -0
  589. package/skills/aria-cognition/aria-mac-ssh-ops/SKILL.md +100 -0
  590. package/skills/aria-cognition/aria-memory-index/SKILL.md +42 -0
  591. package/skills/aria-cognition/aria-noor-cognitives/SKILL.md +120 -0
  592. package/skills/aria-cognition/aria-ops/SKILL.md +60 -0
  593. package/skills/aria-cognition/aria-ops/references/live-endpoints.md +59 -0
  594. package/skills/aria-cognition/aria-quality-audit/SKILL.md +133 -0
  595. package/skills/aria-cognition/aria-readable-output/SKILL.md +239 -0
  596. package/skills/aria-cognition/aria-readable-output/references/layout-cookbook.md +366 -0
  597. package/skills/aria-cognition/aria-reasoning/SKILL.md +67 -0
  598. package/skills/aria-cognition/aria-reasoning/references/core-principles.md +42 -0
  599. package/skills/aria-cognition/aria-repo-audit/SKILL.md +135 -0
  600. package/skills/aria-cognition/aria-repo-audit/references/repo-audit-cookbook.md +375 -0
  601. package/skills/aria-cognition/aria-research-orchestrator/SKILL.md +138 -0
  602. package/skills/aria-cognition/aria-research-orchestrator/references/research-patterns.md +270 -0
  603. package/skills/aria-cognition/aria-retention-engine/SKILL.md +120 -0
  604. package/skills/aria-cognition/aria-retention-engine/references/retention-cookbook.md +271 -0
  605. package/skills/aria-cognition/aria-revenue-engine/SKILL.md +128 -0
  606. package/skills/aria-cognition/aria-revenue-engine/references/revenue-cookbook.md +227 -0
  607. package/skills/aria-cognition/aria-senior-code-audit/SKILL.md +233 -0
  608. package/skills/aria-cognition/aria-senior-code-audit/references/audit-checklist.md +369 -0
  609. package/skills/aria-cognition/aria-senior-code-cookbook/SKILL.md +288 -0
  610. package/skills/aria-cognition/aria-senior-code-cookbook/references/engineering-cookbook.md +489 -0
  611. package/skills/aria-cognition/aria-soul-principles/SKILL.md +42 -0
  612. package/skills/aria-cognition/aria-task-codex-executor/SKILL.md +86 -0
  613. package/skills/aria-cognition/aristotle-engine/SKILL.md +42 -0
  614. package/skills/aria-cognition/cross-domain-24/SKILL.md +42 -0
  615. package/skills/aria-cognition/deepsoul-emotional/SKILL.md +42 -0
  616. package/skills/aria-cognition/fitrah-guard/SKILL.md +78 -0
  617. package/skills/aria-cognition/ghazali-8lens/SKILL.md +227 -29
  618. package/skills/aria-cognition/ghazali-8lens/references/ghazali-8lens-cookbook.md +797 -0
  619. package/skills/aria-cognition/ijtihad-novel/SKILL.md +42 -0
  620. package/skills/aria-cognition/ilham-intuition/SKILL.md +42 -0
  621. package/skills/aria-cognition/never-guess/SKILL.md +77 -0
  622. package/skills/aria-cognition/noor-recognition/SKILL.md +45 -0
  623. package/skills/aria-cognition/qiyas-analogy/SKILL.md +174 -14
  624. package/skills/aria-cognition/ruh-basis/SKILL.md +42 -0
  625. package/skills/aria-cognition/tadabbur/SKILL.md +506 -0
  626. package/skills/aria-cognition/tadabbur/references/tadabbur-cookbook.md +921 -0
  627. package/skills/aria-cognition/tadabbur-ops/SKILL.md +42 -0
  628. package/skills/aria-cognition/tafakkur/SKILL.md +104 -0
  629. package/skills/aria-cognition-autofire/SKILL.md +109 -0
  630. package/skills/aria-cognition-batch/SKILL.md +264 -0
  631. package/skills/aria-conversational-doctrine-discipline/SKILL.md +125 -0
  632. package/skills/aria-essence/SKILL.md +81 -0
  633. package/skills/aria-essence/references/domain-matrix.md +80 -0
  634. package/skills/aria-essence/references/evolution-loop.md +30 -0
  635. package/skills/aria-essence/references/readable-cognition.md +27 -0
  636. package/skills/aria-first-class-operating-contract/SKILL.md +104 -0
  637. package/skills/aria-forge-guardrails/SKILL.md +53 -0
  638. package/skills/aria-forge-guardrails/references/checklist.md +31 -0
  639. package/skills/aria-harness-deploy/SKILL.md +145 -0
  640. package/skills/aria-harness-no-stripping/SKILL.md +135 -0
  641. package/skills/aria-harness-onboarding/SKILL.md +130 -0
  642. package/skills/aria-harness-output-discipline/SKILL.md +120 -0
  643. package/skills/aria-harness-substrate-binding/SKILL.md +139 -0
  644. package/skills/aria-http-harness-client/SKILL.md +85 -0
  645. package/skills/aria-http-harness-client/scripts/smoke.mjs +47 -0
  646. package/skills/aria-k8s-deploy/SKILL.md +174 -0
  647. package/skills/aria-k8s-deploy/agents/openai.yaml +3 -0
  648. package/skills/aria-ladduniframe/SKILL.md +60 -0
  649. package/skills/aria-ledger-fleet-execution/SKILL.md +126 -0
  650. package/skills/aria-live-ops/SKILL.md +54 -0
  651. package/skills/aria-mac-ssh-ops/SKILL.md +100 -0
  652. package/skills/aria-memory-index/SKILL.md +42 -0
  653. package/skills/aria-noor-cognitives/SKILL.md +120 -0
  654. package/skills/aria-ops/SKILL.md +60 -0
  655. package/skills/aria-ops/references/live-endpoints.md +59 -0
  656. package/skills/aria-quality-audit/SKILL.md +133 -0
  657. package/skills/aria-reasoning/SKILL.md +67 -0
  658. package/skills/aria-reasoning/references/core-principles.md +42 -0
  659. package/skills/aria-repo-doctrine/SKILL.md +57 -0
  660. package/skills/aria-soul-principles/SKILL.md +42 -0
  661. package/skills/aria-task-codex-executor/SKILL.md +86 -0
  662. package/skills/aristotle-engine/SKILL.md +42 -0
  663. package/skills/ci-cd-pipeline/SKILL.md +116 -0
  664. package/skills/code-review/SKILL.md +131 -0
  665. package/skills/cross-domain-24/SKILL.md +42 -0
  666. package/skills/database-design/SKILL.md +124 -0
  667. package/skills/deepsoul-emotional/SKILL.md +42 -0
  668. package/skills/deno-kv-raft-pubsub/SKILL.md +561 -0
  669. package/skills/deno-kv-raft-pubsub/reference/maelstrom-integration.md +393 -0
  670. package/skills/deno-kv-raft-pubsub/reference/pubsub-api.md +376 -0
  671. package/skills/deno-kv-raft-pubsub/reference/raft-spec.md +402 -0
  672. package/skills/deno-kv-raft-pubsub/reference/state-machine.md +182 -0
  673. package/skills/error-handling/SKILL.md +159 -0
  674. package/skills/firecrawl/SKILL.md +165 -0
  675. package/skills/firecrawl/rules/install.md +82 -0
  676. package/skills/firecrawl/rules/security.md +26 -0
  677. package/skills/firecrawl-agent/SKILL.md +86 -0
  678. package/skills/firecrawl-build-interact/SKILL.md +96 -0
  679. package/skills/firecrawl-build-onboarding/SKILL.md +131 -0
  680. package/skills/firecrawl-build-onboarding/references/auth-flow.md +39 -0
  681. package/skills/firecrawl-build-onboarding/references/project-setup.md +20 -0
  682. package/skills/firecrawl-build-onboarding/references/sdk-installation.md +17 -0
  683. package/skills/firecrawl-build-scrape/SKILL.md +97 -0
  684. package/skills/firecrawl-build-search/SKILL.md +97 -0
  685. package/skills/firecrawl-clone/SKILL.md +419 -0
  686. package/skills/firecrawl-crawl/SKILL.md +87 -0
  687. package/skills/firecrawl-download/SKILL.md +98 -0
  688. package/skills/firecrawl-interact/SKILL.md +112 -0
  689. package/skills/firecrawl-map/SKILL.md +79 -0
  690. package/skills/firecrawl-scrape/SKILL.md +97 -0
  691. package/skills/firecrawl-search/SKILL.md +88 -0
  692. package/skills/fitrah-guard/SKILL.md +78 -0
  693. package/skills/forge-quality-rules/SKILL.md +61 -0
  694. package/skills/ghazali-8lens/SKILL.md +56 -0
  695. package/skills/ijtihad-novel/SKILL.md +42 -0
  696. package/skills/ilham-intuition/SKILL.md +42 -0
  697. package/skills/imagegen/LICENSE.txt +201 -0
  698. package/skills/imagegen/SKILL.md +374 -0
  699. package/skills/imagegen/agents/openai.yaml +6 -0
  700. package/skills/imagegen/assets/imagegen-small.svg +5 -0
  701. package/skills/imagegen/assets/imagegen.png +0 -0
  702. package/skills/imagegen/references/cli.md +242 -0
  703. package/skills/imagegen/references/codex-network.md +33 -0
  704. package/skills/imagegen/references/image-api.md +90 -0
  705. package/skills/imagegen/references/prompting.md +118 -0
  706. package/skills/imagegen/references/sample-prompts.md +433 -0
  707. package/skills/imagegen/scripts/image_gen.py +995 -0
  708. package/skills/imagegen/scripts/remove_chroma_key.py +440 -0
  709. package/skills/istiqra-induction/SKILL.md +44 -0
  710. package/skills/ladunni-22/SKILL.md +53 -0
  711. package/skills/mizan/SKILL.md +90 -0
  712. package/skills/nadia/SKILL.md +56 -0
  713. package/skills/nadia-psi/SKILL.md +56 -0
  714. package/skills/never-guess/SKILL.md +75 -0
  715. package/skills/noor-recognition/SKILL.md +45 -0
  716. package/skills/observability/SKILL.md +133 -0
  717. package/skills/openai-docs/LICENSE.txt +201 -0
  718. package/skills/openai-docs/SKILL.md +100 -0
  719. package/skills/openai-docs/agents/openai.yaml +14 -0
  720. package/skills/openai-docs/assets/openai-small.svg +3 -0
  721. package/skills/openai-docs/assets/openai.png +0 -0
  722. package/skills/openai-docs/references/latest-model.md +37 -0
  723. package/skills/openai-docs/references/prompting-guide.md +244 -0
  724. package/skills/openai-docs/references/upgrade-guide.md +181 -0
  725. package/skills/openai-docs/scripts/resolve-latest-model-info.js +147 -0
  726. package/skills/pdf/LICENSE.txt +201 -0
  727. package/skills/pdf/SKILL.md +85 -0
  728. package/skills/pdf/agents/openai.yaml +5 -0
  729. package/skills/pdf/assets/pdf.png +0 -0
  730. package/skills/playwright/LICENSE.txt +201 -0
  731. package/skills/playwright/NOTICE.txt +14 -0
  732. package/skills/playwright/SKILL.md +165 -0
  733. package/skills/playwright/agents/openai.yaml +6 -0
  734. package/skills/playwright/assets/playwright-small.svg +3 -0
  735. package/skills/playwright/assets/playwright.png +0 -0
  736. package/skills/playwright/references/cli.md +116 -0
  737. package/skills/playwright/references/workflows.md +95 -0
  738. package/skills/playwright/scripts/playwright_cli.sh +25 -0
  739. package/skills/plugin-creator/SKILL.md +178 -0
  740. package/skills/plugin-creator/agents/openai.yaml +6 -0
  741. package/skills/plugin-creator/assets/plugin-creator-small.svg +3 -0
  742. package/skills/plugin-creator/assets/plugin-creator.png +0 -0
  743. package/skills/plugin-creator/references/plugin-json-spec.md +170 -0
  744. package/skills/plugin-creator/scripts/create_basic_plugin.py +301 -0
  745. package/skills/predictor/SKILL.md +43 -0
  746. package/skills/qiyas-analogy/SKILL.md +204 -0
  747. package/skills/refactoring/SKILL.md +137 -0
  748. package/skills/ruh-basis/SKILL.md +42 -0
  749. package/skills/security-review/SKILL.md +129 -0
  750. package/skills/skill-creator/SKILL.md +434 -0
  751. package/skills/skill-creator/agents/openai.yaml +5 -0
  752. package/skills/skill-creator/assets/skill-creator-small.svg +3 -0
  753. package/skills/skill-creator/assets/skill-creator.png +0 -0
  754. package/skills/skill-creator/license.txt +202 -0
  755. package/skills/skill-creator/references/openai_yaml.md +49 -0
  756. package/skills/skill-creator/scripts/generate_openai_yaml.py +226 -0
  757. package/skills/skill-creator/scripts/init_skill.py +400 -0
  758. package/skills/skill-creator/scripts/quick_validate.py +101 -0
  759. package/skills/skill-installer/LICENSE.txt +202 -0
  760. package/skills/skill-installer/SKILL.md +76 -0
  761. package/skills/skill-installer/agents/openai.yaml +5 -0
  762. package/skills/skill-installer/assets/skill-installer-small.svg +3 -0
  763. package/skills/skill-installer/assets/skill-installer.png +0 -0
  764. package/skills/skill-installer/scripts/github_utils.py +21 -0
  765. package/skills/skill-installer/scripts/install-skill-from-github.py +308 -0
  766. package/skills/skill-installer/scripts/list-skills.py +107 -0
  767. package/skills/skills-and-hooks-reference/SKILL.md +196 -0
  768. package/skills/soul-domains/SKILL.md +43 -0
  769. package/skills/tadabbur/SKILL.md +232 -0
  770. package/skills/tadabbur-ops/SKILL.md +42 -0
  771. package/skills/tafakkur/SKILL.md +104 -0
  772. package/skills/testing-strategy/SKILL.md +122 -0
  773. package/src/action-ledger-core.ts +1054 -0
  774. package/src/chat.ts +5 -6
  775. package/src/codebase-scanner.ts +2 -0
  776. package/src/connectors/claude-code.ts +149 -12
  777. package/src/connectors/codebase-awareness.ts +325 -25
  778. package/src/connectors/codex.ts +1225 -41
  779. package/src/connectors/cursor.ts +8 -0
  780. package/src/connectors/governed-adapter.ts +174 -0
  781. package/src/connectors/opencode.ts +18 -2
  782. package/src/connectors/repo-guard.ts +24 -12
  783. package/src/connectors/runtime.ts +99 -2
  784. package/src/connectors/shell.ts +125 -7
  785. package/src/cross-cli-hive-binding.ts +290 -0
  786. package/src/garden-control-plane.ts +24 -1
  787. package/src/governed-surface-runner.ts +1227 -0
  788. package/src/index.ts +104 -1
  789. package/src/task-runner.ts +3794 -0
  790. package/dist/aria-connector/src/install-hooks.d.ts +0 -18
  791. package/dist/aria-connector/src/install-hooks.d.ts.map +0 -1
  792. package/dist/aria-connector/src/install-hooks.js +0 -224
  793. package/dist/aria-connector/src/install-hooks.js.map +0 -1
  794. package/dist/aria-connector/src/onboarding-wizard.d.ts +0 -5
  795. package/dist/aria-connector/src/onboarding-wizard.d.ts.map +0 -1
  796. package/dist/aria-connector/src/onboarding-wizard.js +0 -188
  797. package/dist/aria-connector/src/onboarding-wizard.js.map +0 -1
  798. package/dist/cli-0.2.38.tgz +0 -0
  799. package/dist/install.sh +0 -13
  800. package/src/__tests__/anthropic-oauth.test.ts +0 -186
  801. package/src/__tests__/auth-commands.test.ts +0 -132
  802. package/src/__tests__/owner-login.test.ts +0 -311
@@ -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 { return false; }
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
- const GATE_LABEL_RX = /\b(?:personal_mouth_[a-z_]+\b|code_no_tests\b|code_fake_implementation\b|code_type_safety\b|ip_infrastructure\b|8lens_[a-z_]+\b|voice_cold_[a-z_]+\b|harness_output_gate_block\b|auto_fix:\s|personal_mouth_harness_[a-z_]+\b|personal_mouth_unsupported_[a-z_]+\b)/i;
48
- const COLLAPSE_RX = /I need to pause and reconsider\.?/i;
49
- const COMPLETION_CLAIM_RX = /\b(?:done|complete|completed|ready|verified|fixed|shipped|production-ready|passing|passed|all phases|all done)\b/i;
50
- const TEMPLATE_RX = /\b(?:Decision: use Owner Runtime kernels|Sequence: contract, Garden Service snapshot|Repair context loaded|Research context loaded|Action kernel engaged|I'm here with you\.\s*No fixing,\s*no task pressure)\b/i;
51
- const MINIMUM_CHARS = 50;
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
- const SAFE_FALLBACKS = {
84
- emotional_presence: "I'm here. Tell me what's with you right now.",
85
- architect: "I need more context for a proper architecture answer.",
86
- repair: "Let me trace the root cause. What's the specific error?",
87
- action: "Action kernel requires confirmation. What would you like to execute?",
88
- research: "Let me gather relevant information. What should I research?",
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
- for (const field of ['stage', 'actor', 'system']) {
136
- const expected = stableIdentityValue(body[field] || body.packetRequest?.[field]);
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, field);
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
- await refreshInFlight.catch(() => {});
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: error instanceof Error ? error.message : String(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
  });
@@ -0,0 +1,292 @@
1
+ #!/usr/bin/env node
2
+ import { existsSync, mkdirSync, readFileSync, appendFileSync } from 'node:fs';
3
+ import { dirname, join } from 'node:path';
4
+ import { homedir } from 'node:os';
5
+ import { spawnSync } from 'node:child_process';
6
+
7
+ const STATE_DIR = process.env.ARIA_RUNTIME_STATE_DIR || join(homedir(), '.aria', 'runtime', 'state');
8
+ const WAL_PATH = process.env.ARIA_HIVE_WAL_PATH || join(STATE_DIR, 'hive-ledger-wal.jsonl');
9
+ const PUBLISH_LEDGER_PATH = process.env.ARIA_HIVE_PUBLISH_LEDGER_PATH || join(STATE_DIR, 'hive-ledger-publish.jsonl');
10
+ const QUERY_TIMEOUT_MS = Math.max(250, Number(process.env.ARIA_HIVE_POSTGRES_QUERY_TIMEOUT_MS || 750));
11
+ const LIMIT = Math.max(1, Math.min(500, Number(process.env.ARIA_HIVE_WAL_PUBLISH_LIMIT || process.argv[2] || 100)));
12
+ const POSTGRES_URL =
13
+ process.env.ARIA_HIVE_POSTGRES_URL ||
14
+ process.env.DATABASE_URL ||
15
+ process.env.POSTGRES_URL ||
16
+ 'postgresql://postgres:postgres@127.0.0.1:5432/aria';
17
+
18
+ function readJsonl(path) {
19
+ if (!existsSync(path)) return [];
20
+ return readFileSync(path, 'utf8')
21
+ .split('\n')
22
+ .filter(Boolean)
23
+ .map((line) => {
24
+ try {
25
+ return JSON.parse(line);
26
+ } catch {
27
+ return null;
28
+ }
29
+ })
30
+ .filter(Boolean);
31
+ }
32
+
33
+ function appendPublish(row, status, detail = {}) {
34
+ mkdirSync(dirname(PUBLISH_LEDGER_PATH), { recursive: true });
35
+ appendFileSync(PUBLISH_LEDGER_PATH, `${JSON.stringify({
36
+ schema: 'aria.hive_ledger_publish.v1',
37
+ wal_id: row?.wal_id || null,
38
+ kind: row?.kind || null,
39
+ status,
40
+ at: new Date().toISOString(),
41
+ publisher: 'hive-wal-publisher-sidecar',
42
+ detail,
43
+ })}\n`, { mode: 0o600 });
44
+ }
45
+
46
+ function sqlLiteral(value) {
47
+ if (value === null || value === undefined) return 'NULL';
48
+ return `'${String(value).replaceAll("'", "''")}'`;
49
+ }
50
+
51
+ function sqlJson(value) {
52
+ return `${sqlLiteral(JSON.stringify(value ?? null))}::jsonb`;
53
+ }
54
+
55
+ function psql(sql) {
56
+ const result = spawnSync('psql', ['-X', '-v', 'ON_ERROR_STOP=1', POSTGRES_URL], {
57
+ input: sql,
58
+ encoding: 'utf8',
59
+ timeout: QUERY_TIMEOUT_MS,
60
+ maxBuffer: 1024 * 1024,
61
+ });
62
+ if (result.error || result.signal || result.status !== 0) {
63
+ const detail = String(result.stderr || result.stdout || result.error?.message || result.signal || `exit ${result.status}`).trim();
64
+ throw new Error(detail.slice(0, 1000) || 'psql failed');
65
+ }
66
+ return result.stdout;
67
+ }
68
+
69
+ function ensureSchema() {
70
+ psql(`
71
+ CREATE TABLE IF NOT EXISTS hive_file_touches (
72
+ touch_id text PRIMARY KEY,
73
+ session_id text,
74
+ thread_id text,
75
+ message_id text,
76
+ event text,
77
+ source text,
78
+ files jsonb NOT NULL DEFAULT '[]'::jsonb,
79
+ body jsonb NOT NULL DEFAULT '{}'::jsonb,
80
+ client_identity jsonb,
81
+ created_at timestamptz NOT NULL DEFAULT now()
82
+ );
83
+ CREATE INDEX IF NOT EXISTS hive_file_touches_session_idx ON hive_file_touches(session_id);
84
+ CREATE INDEX IF NOT EXISTS hive_file_touches_thread_idx ON hive_file_touches(thread_id);
85
+ CREATE INDEX IF NOT EXISTS hive_file_touches_created_idx ON hive_file_touches(created_at DESC);
86
+ CREATE INDEX IF NOT EXISTS hive_file_touches_files_gin_idx ON hive_file_touches USING gin(files);
87
+
88
+ CREATE TABLE IF NOT EXISTS hive_session_messages (
89
+ message_id text PRIMARY KEY,
90
+ thread_id text,
91
+ from_session_id text,
92
+ to_session_id text,
93
+ topic text,
94
+ body jsonb NOT NULL DEFAULT '{}'::jsonb,
95
+ client_identity jsonb,
96
+ created_at timestamptz NOT NULL DEFAULT now(),
97
+ read_at timestamptz,
98
+ read_by_session_ids jsonb NOT NULL DEFAULT '[]'::jsonb,
99
+ last_read_at timestamptz,
100
+ source text
101
+ );
102
+ CREATE INDEX IF NOT EXISTS hive_session_messages_thread_idx ON hive_session_messages(thread_id);
103
+ CREATE INDEX IF NOT EXISTS hive_session_messages_to_session_idx ON hive_session_messages(to_session_id);
104
+ CREATE INDEX IF NOT EXISTS hive_session_messages_from_session_idx ON hive_session_messages(from_session_id);
105
+ CREATE INDEX IF NOT EXISTS hive_session_messages_topic_idx ON hive_session_messages(topic);
106
+ CREATE INDEX IF NOT EXISTS hive_session_messages_created_idx ON hive_session_messages(created_at DESC);
107
+
108
+ CREATE TABLE IF NOT EXISTS hive_session_threads (
109
+ thread_id text PRIMARY KEY,
110
+ topic text,
111
+ status text,
112
+ intent_summary text,
113
+ source_artifact text,
114
+ participants jsonb NOT NULL DEFAULT '[]'::jsonb,
115
+ file_claims jsonb NOT NULL DEFAULT '[]'::jsonb,
116
+ latest_client_identity jsonb,
117
+ latest_message_id text,
118
+ created_at timestamptz NOT NULL DEFAULT now(),
119
+ updated_at timestamptz NOT NULL DEFAULT now(),
120
+ source text
121
+ );
122
+ CREATE INDEX IF NOT EXISTS hive_session_threads_topic_idx ON hive_session_threads(topic);
123
+ CREATE INDEX IF NOT EXISTS hive_session_threads_status_idx ON hive_session_threads(status);
124
+ CREATE INDEX IF NOT EXISTS hive_session_threads_updated_idx ON hive_session_threads(updated_at DESC);
125
+ CREATE INDEX IF NOT EXISTS hive_session_threads_participants_gin_idx ON hive_session_threads USING gin(participants);
126
+ `);
127
+ }
128
+
129
+ function uniqueStrings(values) {
130
+ return [...new Set(values.filter((value) => typeof value === 'string' && value.trim()).map((value) => value.trim()))];
131
+ }
132
+
133
+ function publishFileTouch(row) {
134
+ const payload = row.payload || {};
135
+ const touchId = `${row.wal_id}_touch`;
136
+ psql(`
137
+ INSERT INTO hive_file_touches (touch_id, session_id, thread_id, message_id, event, source, files, body, client_identity, created_at)
138
+ VALUES (
139
+ ${sqlLiteral(touchId)},
140
+ ${sqlLiteral(payload.sessionId)},
141
+ ${sqlLiteral(payload.threadId || null)},
142
+ ${sqlLiteral(payload.messageId || null)},
143
+ ${sqlLiteral(payload.event || 'touch')},
144
+ ${sqlLiteral(payload.source || 'hive-wal-publisher-sidecar')},
145
+ ${sqlJson(Array.isArray(payload.files) ? payload.files : [])},
146
+ ${sqlJson(payload.body || {})},
147
+ ${sqlJson(payload.identity || null)},
148
+ ${sqlLiteral(payload.createdAt || row.created_at || new Date().toISOString())}::timestamptz
149
+ )
150
+ ON CONFLICT (touch_id) DO UPDATE SET
151
+ session_id = EXCLUDED.session_id,
152
+ thread_id = EXCLUDED.thread_id,
153
+ message_id = EXCLUDED.message_id,
154
+ event = EXCLUDED.event,
155
+ source = EXCLUDED.source,
156
+ files = EXCLUDED.files,
157
+ body = EXCLUDED.body,
158
+ client_identity = EXCLUDED.client_identity,
159
+ created_at = EXCLUDED.created_at;
160
+ `);
161
+ appendPublish(row, 'published', { touch_id: touchId });
162
+ }
163
+
164
+ function publishLifecycle(row) {
165
+ const payload = row.payload || {};
166
+ const messageId = payload.messageId || `${row.wal_id}_message`;
167
+ const threadId = payload.threadId || `thread-${row.wal_id}`;
168
+ const participants = uniqueStrings([payload.fromSessionId, payload.toSessionId]);
169
+ const fileClaims = Array.isArray(payload.fileClaims) ? payload.fileClaims : [];
170
+
171
+ psql(`
172
+ INSERT INTO hive_session_messages (message_id, thread_id, from_session_id, to_session_id, topic, body, client_identity, created_at, read_at, read_by_session_ids, last_read_at, source)
173
+ VALUES (
174
+ ${sqlLiteral(messageId)},
175
+ ${sqlLiteral(threadId)},
176
+ ${sqlLiteral(payload.fromSessionId || null)},
177
+ ${sqlLiteral(payload.toSessionId || null)},
178
+ ${sqlLiteral(payload.topic || 'session.lifecycle')},
179
+ ${sqlJson(payload.normalizedBody || {})},
180
+ ${sqlJson(payload.identity || null)},
181
+ ${sqlLiteral(payload.createdAt || row.created_at || new Date().toISOString())}::timestamptz,
182
+ NULL,
183
+ '[]'::jsonb,
184
+ NULL,
185
+ ${sqlLiteral(payload.source || 'aria-mounted-runtime')}
186
+ )
187
+ ON CONFLICT (message_id) DO UPDATE SET
188
+ thread_id = EXCLUDED.thread_id,
189
+ from_session_id = EXCLUDED.from_session_id,
190
+ to_session_id = EXCLUDED.to_session_id,
191
+ topic = EXCLUDED.topic,
192
+ body = EXCLUDED.body,
193
+ client_identity = EXCLUDED.client_identity,
194
+ created_at = EXCLUDED.created_at,
195
+ source = EXCLUDED.source;
196
+
197
+ INSERT INTO hive_session_threads (thread_id, topic, status, intent_summary, source_artifact, participants, file_claims, latest_client_identity, latest_message_id, created_at, updated_at, source)
198
+ VALUES (
199
+ ${sqlLiteral(threadId)},
200
+ ${sqlLiteral(payload.topic || 'session.lifecycle')},
201
+ ${sqlLiteral(payload.threadStatus || payload.lifecycleStatus || 'active')},
202
+ ${sqlLiteral(payload.intentSummary || null)},
203
+ ${sqlLiteral(payload.sourceArtifact || null)},
204
+ ${sqlJson(participants)},
205
+ ${sqlJson(fileClaims)},
206
+ ${sqlJson(payload.identity || null)},
207
+ ${sqlLiteral(messageId)},
208
+ ${sqlLiteral(payload.createdAt || row.created_at || new Date().toISOString())}::timestamptz,
209
+ now(),
210
+ ${sqlLiteral(payload.source || 'aria-mounted-runtime')}
211
+ )
212
+ ON CONFLICT (thread_id) DO UPDATE SET
213
+ topic = EXCLUDED.topic,
214
+ status = EXCLUDED.status,
215
+ intent_summary = EXCLUDED.intent_summary,
216
+ source_artifact = EXCLUDED.source_artifact,
217
+ participants = (
218
+ SELECT COALESCE(jsonb_agg(DISTINCT value), '[]'::jsonb)
219
+ FROM jsonb_array_elements_text(hive_session_threads.participants || EXCLUDED.participants) AS value
220
+ ),
221
+ file_claims = EXCLUDED.file_claims,
222
+ latest_client_identity = EXCLUDED.latest_client_identity,
223
+ latest_message_id = EXCLUDED.latest_message_id,
224
+ updated_at = now(),
225
+ source = EXCLUDED.source;
226
+ `);
227
+
228
+ if (fileClaims.length) {
229
+ publishFileTouch({
230
+ ...row,
231
+ kind: 'file_touch',
232
+ payload: {
233
+ sessionId: payload.fromSessionId,
234
+ threadId,
235
+ messageId,
236
+ event: payload.event || 'session.lifecycle',
237
+ source: 'hive-session-lifecycle-sidecar',
238
+ files: fileClaims,
239
+ body: {
240
+ lifecycle_event: payload.event || null,
241
+ lifecycle_status: payload.lifecycleStatus || null,
242
+ intent_summary: payload.intentSummary || null,
243
+ source_artifact: payload.sourceArtifact || null,
244
+ message_id: messageId,
245
+ },
246
+ identity: payload.identity || null,
247
+ createdAt: payload.createdAt || row.created_at,
248
+ },
249
+ });
250
+ }
251
+
252
+ appendPublish(row, 'published', { message_id: messageId, thread_id: threadId, file_claim_count: fileClaims.length });
253
+ }
254
+
255
+ function main() {
256
+ const published = new Set(
257
+ readJsonl(PUBLISH_LEDGER_PATH)
258
+ .filter((row) => row.status === 'published')
259
+ .map((row) => row.wal_id)
260
+ .filter(Boolean),
261
+ );
262
+ const rows = readJsonl(WAL_PATH)
263
+ .filter((row) => row?.schema === 'aria.hive_ledger_wal.v1')
264
+ .filter((row) => row.wal_id && !published.has(row.wal_id))
265
+ .slice(0, LIMIT);
266
+
267
+ if (!rows.length) {
268
+ console.log(JSON.stringify({ ok: true, published: 0, skipped: 0, limit: LIMIT }));
269
+ return;
270
+ }
271
+
272
+ ensureSchema();
273
+ let publishedCount = 0;
274
+ let failedCount = 0;
275
+ for (const row of rows) {
276
+ try {
277
+ if (row.kind === 'file_touch') publishFileTouch(row);
278
+ else if (row.kind === 'session_lifecycle') publishLifecycle(row);
279
+ else appendPublish(row, 'skipped', { reason: 'unknown_wal_kind' });
280
+ publishedCount += row.kind === 'file_touch' || row.kind === 'session_lifecycle' ? 1 : 0;
281
+ } catch (error) {
282
+ failedCount += 1;
283
+ appendPublish(row, 'failed', {
284
+ error: error instanceof Error ? error.message : String(error),
285
+ queryTimeoutMs: QUERY_TIMEOUT_MS,
286
+ });
287
+ }
288
+ }
289
+ console.log(JSON.stringify({ ok: failedCount === 0, published: publishedCount, failed: failedCount, scanned: rows.length, limit: LIMIT }));
290
+ }
291
+
292
+ main();
@@ -0,0 +1,58 @@
1
+ # Claude Code hooks (canonical source of truth)
2
+
3
+ This directory replaces `~/.claude/hooks/` as the canonical home for
4
+ Claude Code hook scripts. Previously the active hooks lived only on a
5
+ single workstation under `~/.claude/hooks/` and weren't git-tracked,
6
+ so improvements landed by one session never reached other sessions or
7
+ new machines.
8
+
9
+ ## What's here
10
+
11
+ - `aria-harness-via-sdk.mjs` — SessionStart + UserPromptSubmit hook.
12
+ Fetches the canonical Aria harness packet from `aria-soul`'s
13
+ `/api/harness/codex` endpoint via the canonical
14
+ `@aria_asi/harness-http-client` SDK and injects it into the model's
15
+ context as `additionalContext`.
16
+
17
+ Doctrine-aligned design (refactored 2026-04-26):
18
+ - **No policy timeouts.** Per `axiom: truth_over_deception` +
19
+ Hamza's directive that timeouts kill long-running tasks. Real
20
+ network errors (ECONNREFUSED / ENOTFOUND / EHOSTUNREACH) drive
21
+ control flow.
22
+ - **TCP probe per URL** before HTTP fetch — filters dead URLs by
23
+ actual reachability, not by deadline.
24
+ - **Parallel race** across all probed-OK URLs via `Promise.any` —
25
+ fastest healthy responder wins; hung URLs don't block others.
26
+ - **Stale-cache fallback with no age cutoff** — if the cached
27
+ packet exists, it's always injected when fresh fetch fails. The
28
+ header surfaces `(stale Ns — fresh fetch failed: <reason>)` so
29
+ the model can read its own world-view freshness, but identity /
30
+ cognition / gates never get stripped to a stub.
31
+
32
+ ## Install
33
+
34
+ ```bash
35
+ bash ops/claude-hooks/install.sh
36
+ ```
37
+
38
+ Idempotent. Symlinks (not copies) into `~/.claude/hooks/` so future
39
+ edits in the repo are picked up automatically. Pre-existing real
40
+ files at the target path are backed up before replacement.
41
+
42
+ ## Wiring
43
+
44
+ The active wire is in `~/.claude/settings.json`:
45
+
46
+ ```json
47
+ "hooks": {
48
+ "SessionStart": [{ "hooks": [{
49
+ "command": "HOOK_EVENT_NAME=SessionStart node $HOME/.claude/hooks/aria-harness-via-sdk.mjs --mode session"
50
+ }] }],
51
+ "UserPromptSubmit": [{ "hooks": [{
52
+ "command": "HOOK_EVENT_NAME=UserPromptSubmit node $HOME/.claude/hooks/aria-harness-via-sdk.mjs --mode turn"
53
+ }] }]
54
+ }
55
+ ```
56
+
57
+ The `~/.claude/settings.json` file itself is currently per-machine.
58
+ Ship that to the repo separately if/when desired.