opensquid 0.5.441 → 0.5.449

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 (391) hide show
  1. package/README.md +1 -0
  2. package/dist/functions/arm_scope.d.ts +27 -0
  3. package/dist/functions/arm_scope.d.ts.map +1 -0
  4. package/dist/functions/arm_scope.js +52 -0
  5. package/dist/functions/arm_scope.js.map +1 -0
  6. package/dist/functions/index.d.ts +1 -0
  7. package/dist/functions/index.d.ts.map +1 -1
  8. package/dist/functions/index.js +1 -0
  9. package/dist/functions/index.js.map +1 -1
  10. package/dist/functions/recall_pre_inject.d.ts.map +1 -1
  11. package/dist/functions/recall_pre_inject.js +12 -0
  12. package/dist/functions/recall_pre_inject.js.map +1 -1
  13. package/dist/rag/store_git.d.ts +23 -0
  14. package/dist/rag/store_git.d.ts.map +1 -0
  15. package/dist/rag/store_git.js +57 -0
  16. package/dist/rag/store_git.js.map +1 -0
  17. package/dist/runtime/bootstrap.d.ts.map +1 -1
  18. package/dist/runtime/bootstrap.js +2 -0
  19. package/dist/runtime/bootstrap.js.map +1 -1
  20. package/dist/runtime/handoff/render.d.ts +5 -4
  21. package/dist/runtime/handoff/render.d.ts.map +1 -1
  22. package/dist/runtime/handoff/render.js +7 -7
  23. package/dist/runtime/handoff/render.js.map +1 -1
  24. package/dist/runtime/hooks/active_task_mirror.js +0 -0
  25. package/dist/runtime/hooks/apply_patch.js +0 -0
  26. package/dist/runtime/hooks/dispatch.js +0 -0
  27. package/dist/runtime/hooks/hook_output.js +0 -0
  28. package/dist/runtime/hooks/memory_reconcile.js +0 -0
  29. package/dist/runtime/hooks/new_project_detect.js +0 -0
  30. package/dist/runtime/hooks/profession_resolver.js +0 -0
  31. package/dist/runtime/hooks/scope_intent.js +0 -0
  32. package/dist/runtime/hooks/session-end.js +11 -0
  33. package/dist/runtime/hooks/session-end.js.map +1 -1
  34. package/dist/runtime/hooks/session_id.js +0 -0
  35. package/dist/runtime/hooks/session_liveness.js +0 -0
  36. package/dist/runtime/hooks/stop_drive.js +0 -0
  37. package/dist/runtime/hooks/stop_stream.js +0 -0
  38. package/dist/runtime/hooks/subagent_guard.js +0 -0
  39. package/dist/runtime/hooks/transcript.js +0 -0
  40. package/dist/runtime/hooks/transcript_tasks.js +0 -0
  41. package/dist/runtime/ralph/orchestrator.d.ts.map +1 -1
  42. package/dist/runtime/ralph/orchestrator.js +2 -1
  43. package/dist/runtime/ralph/orchestrator.js.map +1 -1
  44. package/dist/setup/cli/limits_state.d.ts.map +1 -1
  45. package/dist/setup/cli/limits_state.js +6 -40
  46. package/dist/setup/cli/limits_state.js.map +1 -1
  47. package/dist/setup/cli/pack_walk.d.ts +32 -0
  48. package/dist/setup/cli/pack_walk.d.ts.map +1 -0
  49. package/dist/setup/cli/pack_walk.js +76 -0
  50. package/dist/setup/cli/pack_walk.js.map +1 -0
  51. package/dist/setup/cli/permissions_state.d.ts.map +1 -1
  52. package/dist/setup/cli/permissions_state.js +6 -37
  53. package/dist/setup/cli/permissions_state.js.map +1 -1
  54. package/dist/setup/cli/triggers_state.d.ts.map +1 -1
  55. package/dist/setup/cli/triggers_state.js +3 -29
  56. package/dist/setup/cli/triggers_state.js.map +1 -1
  57. package/dist/workgraph/events.d.ts.map +1 -1
  58. package/dist/workgraph/events.js +10 -0
  59. package/dist/workgraph/events.js.map +1 -1
  60. package/dist/workgraph/store.d.ts.map +1 -1
  61. package/dist/workgraph/store.js +5 -0
  62. package/dist/workgraph/store.js.map +1 -1
  63. package/dist/workgraph/types.d.ts +2 -1
  64. package/dist/workgraph/types.d.ts.map +1 -1
  65. package/docs/ARCHITECTURE.md +268 -0
  66. package/docs/pack-runtime.md +15 -12
  67. package/docs/skill-grammar-guide.md +4 -4
  68. package/package.json +5 -3
  69. package/packs/builtin/coding-flow/skills/entry-and-handoffs/skill.yaml +13 -17
  70. package/dist/anti-drift/evaluator.d.ts +0 -88
  71. package/dist/anti-drift/evaluator.d.ts.map +0 -1
  72. package/dist/anti-drift/evaluator.js +0 -417
  73. package/dist/anti-drift/evaluator.js.map +0 -1
  74. package/dist/anti-drift/evaluator.test.js +0 -78
  75. package/dist/anti-drift/rules.d.ts +0 -80
  76. package/dist/anti-drift/rules.d.ts.map +0 -1
  77. package/dist/anti-drift/rules.js +0 -368
  78. package/dist/anti-drift/rules.js.map +0 -1
  79. package/dist/anti-drift/rules.test.js +0 -213
  80. package/dist/anti-drift/state.d.ts +0 -107
  81. package/dist/anti-drift/state.d.ts.map +0 -1
  82. package/dist/anti-drift/state.js +0 -177
  83. package/dist/anti-drift/state.js.map +0 -1
  84. package/dist/anti-drift/state.test.js +0 -120
  85. package/dist/chat/adapters/discord.d.ts +0 -41
  86. package/dist/chat/adapters/discord.d.ts.map +0 -1
  87. package/dist/chat/adapters/discord.js +0 -176
  88. package/dist/chat/adapters/discord.js.map +0 -1
  89. package/dist/chat/adapters/discord.test.js +0 -25
  90. package/dist/chat/adapters/slack.d.ts +0 -43
  91. package/dist/chat/adapters/slack.d.ts.map +0 -1
  92. package/dist/chat/adapters/slack.js +0 -172
  93. package/dist/chat/adapters/slack.js.map +0 -1
  94. package/dist/chat/adapters/slack.test.js +0 -30
  95. package/dist/chat/adapters/telegram.d.ts +0 -148
  96. package/dist/chat/adapters/telegram.d.ts.map +0 -1
  97. package/dist/chat/adapters/telegram.js +0 -498
  98. package/dist/chat/adapters/telegram.js.map +0 -1
  99. package/dist/chat/adapters/telegram.test.js +0 -94
  100. package/dist/chat/config.d.ts +0 -98
  101. package/dist/chat/config.d.ts.map +0 -1
  102. package/dist/chat/config.js +0 -185
  103. package/dist/chat/config.js.map +0 -1
  104. package/dist/chat/daemon/active-project.d.ts +0 -17
  105. package/dist/chat/daemon/active-project.d.ts.map +0 -1
  106. package/dist/chat/daemon/active-project.js +0 -23
  107. package/dist/chat/daemon/active-project.js.map +0 -1
  108. package/dist/chat/daemon/autospawn.d.ts +0 -40
  109. package/dist/chat/daemon/autospawn.d.ts.map +0 -1
  110. package/dist/chat/daemon/autospawn.js +0 -129
  111. package/dist/chat/daemon/autospawn.js.map +0 -1
  112. package/dist/chat/daemon/autospawn.test.js +0 -112
  113. package/dist/chat/daemon/cli.d.ts +0 -18
  114. package/dist/chat/daemon/cli.d.ts.map +0 -1
  115. package/dist/chat/daemon/cli.js +0 -71
  116. package/dist/chat/daemon/cli.js.map +0 -1
  117. package/dist/chat/daemon/collisions.js +0 -384
  118. package/dist/chat/daemon/health-check.d.ts +0 -69
  119. package/dist/chat/daemon/health-check.d.ts.map +0 -1
  120. package/dist/chat/daemon/health-check.js +0 -112
  121. package/dist/chat/daemon/health-check.js.map +0 -1
  122. package/dist/chat/daemon/inbox-read.d.ts +0 -35
  123. package/dist/chat/daemon/inbox-read.d.ts.map +0 -1
  124. package/dist/chat/daemon/inbox-read.js +0 -75
  125. package/dist/chat/daemon/inbox-read.js.map +0 -1
  126. package/dist/chat/daemon/inbox-read.test.js +0 -97
  127. package/dist/chat/daemon/inbox.d.ts +0 -63
  128. package/dist/chat/daemon/inbox.d.ts.map +0 -1
  129. package/dist/chat/daemon/inbox.js +0 -56
  130. package/dist/chat/daemon/inbox.js.map +0 -1
  131. package/dist/chat/daemon/inbox.test.js +0 -110
  132. package/dist/chat/daemon/lifecycle.d.ts +0 -71
  133. package/dist/chat/daemon/lifecycle.d.ts.map +0 -1
  134. package/dist/chat/daemon/lifecycle.js +0 -221
  135. package/dist/chat/daemon/lifecycle.js.map +0 -1
  136. package/dist/chat/daemon/lifecycle.test.js +0 -163
  137. package/dist/chat/daemon/protocol.d.ts +0 -107
  138. package/dist/chat/daemon/protocol.d.ts.map +0 -1
  139. package/dist/chat/daemon/protocol.js +0 -54
  140. package/dist/chat/daemon/protocol.js.map +0 -1
  141. package/dist/chat/daemon/routing.d.ts +0 -140
  142. package/dist/chat/daemon/routing.d.ts.map +0 -1
  143. package/dist/chat/daemon/routing.js +0 -198
  144. package/dist/chat/daemon/routing.js.map +0 -1
  145. package/dist/chat/daemon/routing.test.js +0 -259
  146. package/dist/chat/daemon/rpc-client.d.ts +0 -45
  147. package/dist/chat/daemon/rpc-client.d.ts.map +0 -1
  148. package/dist/chat/daemon/rpc-client.js +0 -133
  149. package/dist/chat/daemon/rpc-client.js.map +0 -1
  150. package/dist/chat/daemon/rpc-server.d.ts +0 -39
  151. package/dist/chat/daemon/rpc-server.d.ts.map +0 -1
  152. package/dist/chat/daemon/rpc-server.js +0 -385
  153. package/dist/chat/daemon/rpc-server.js.map +0 -1
  154. package/dist/chat/daemon/rpc.test.js +0 -177
  155. package/dist/chat/daemon/subscribers.js +0 -257
  156. package/dist/chat/daemon/worker.d.ts +0 -27
  157. package/dist/chat/daemon/worker.d.ts.map +0 -1
  158. package/dist/chat/daemon/worker.js +0 -313
  159. package/dist/chat/daemon/worker.js.map +0 -1
  160. package/dist/chat/daemon/workspace-topic.js +0 -324
  161. package/dist/chat/env-token.d.ts +0 -60
  162. package/dist/chat/env-token.d.ts.map +0 -1
  163. package/dist/chat/env-token.js +0 -137
  164. package/dist/chat/env-token.js.map +0 -1
  165. package/dist/chat/env-token.test.js +0 -160
  166. package/dist/chat/factory.d.ts +0 -30
  167. package/dist/chat/factory.d.ts.map +0 -1
  168. package/dist/chat/factory.js +0 -50
  169. package/dist/chat/factory.js.map +0 -1
  170. package/dist/chat/factory.test.js +0 -55
  171. package/dist/chat/gateway.d.ts +0 -176
  172. package/dist/chat/gateway.d.ts.map +0 -1
  173. package/dist/chat/gateway.js +0 -146
  174. package/dist/chat/gateway.js.map +0 -1
  175. package/dist/chat/gateway.test.js +0 -192
  176. package/dist/claude-md.d.ts +0 -39
  177. package/dist/claude-md.d.ts.map +0 -1
  178. package/dist/claude-md.js +0 -113
  179. package/dist/claude-md.js.map +0 -1
  180. package/dist/claude-md.test.js +0 -91
  181. package/dist/codex/activate.d.ts +0 -66
  182. package/dist/codex/activate.d.ts.map +0 -1
  183. package/dist/codex/activate.js +0 -329
  184. package/dist/codex/activate.js.map +0 -1
  185. package/dist/codex/activate.test.js +0 -229
  186. package/dist/codex/bundled-default/bundled-default.test.js +0 -161
  187. package/dist/codex/cli-publish.test.js +0 -133
  188. package/dist/codex/cli.d.ts +0 -35
  189. package/dist/codex/cli.d.ts.map +0 -1
  190. package/dist/codex/cli.js +0 -554
  191. package/dist/codex/cli.js.map +0 -1
  192. package/dist/codex/cli.test.js +0 -277
  193. package/dist/codex/import-skill-md.d.ts +0 -53
  194. package/dist/codex/import-skill-md.d.ts.map +0 -1
  195. package/dist/codex/import-skill-md.js +0 -236
  196. package/dist/codex/import-skill-md.js.map +0 -1
  197. package/dist/codex/import-skill-md.test.js +0 -225
  198. package/dist/codex/loader.d.ts +0 -27
  199. package/dist/codex/loader.d.ts.map +0 -1
  200. package/dist/codex/loader.js +0 -86
  201. package/dist/codex/loader.js.map +0 -1
  202. package/dist/codex/loader.test.js +0 -75
  203. package/dist/codex/parse.d.ts +0 -28
  204. package/dist/codex/parse.d.ts.map +0 -1
  205. package/dist/codex/parse.js +0 -309
  206. package/dist/codex/parse.js.map +0 -1
  207. package/dist/codex/parse.test.js +0 -241
  208. package/dist/codex/store.d.ts +0 -87
  209. package/dist/codex/store.d.ts.map +0 -1
  210. package/dist/codex/store.js +0 -205
  211. package/dist/codex/store.js.map +0 -1
  212. package/dist/codex/store.test.js +0 -242
  213. package/dist/codex/types.d.ts +0 -398
  214. package/dist/codex/types.d.ts.map +0 -1
  215. package/dist/codex/types.js +0 -21
  216. package/dist/codex/types.js.map +0 -1
  217. package/dist/config.d.ts +0 -53
  218. package/dist/config.d.ts.map +0 -1
  219. package/dist/config.js +0 -202
  220. package/dist/config.js.map +0 -1
  221. package/dist/config.test.js +0 -117
  222. package/dist/engine/cli.d.ts +0 -14
  223. package/dist/engine/cli.d.ts.map +0 -1
  224. package/dist/engine/cli.js +0 -171
  225. package/dist/engine/cli.js.map +0 -1
  226. package/dist/engine/client.d.ts +0 -219
  227. package/dist/engine/client.d.ts.map +0 -1
  228. package/dist/engine/client.js +0 -312
  229. package/dist/engine/client.js.map +0 -1
  230. package/dist/engine/config.d.ts +0 -62
  231. package/dist/engine/config.d.ts.map +0 -1
  232. package/dist/engine/config.js +0 -223
  233. package/dist/engine/config.js.map +0 -1
  234. package/dist/engine/index.d.ts +0 -17
  235. package/dist/engine/index.d.ts.map +0 -1
  236. package/dist/engine/index.js +0 -16
  237. package/dist/engine/index.js.map +0 -1
  238. package/dist/engine/resolver.d.ts +0 -62
  239. package/dist/engine/resolver.d.ts.map +0 -1
  240. package/dist/engine/resolver.js +0 -103
  241. package/dist/engine/resolver.js.map +0 -1
  242. package/dist/engine/singleton.d.ts +0 -95
  243. package/dist/engine/singleton.d.ts.map +0 -1
  244. package/dist/engine/singleton.js +0 -325
  245. package/dist/engine/singleton.js.map +0 -1
  246. package/dist/engine/types.d.ts +0 -402
  247. package/dist/engine/types.d.ts.map +0 -1
  248. package/dist/engine/types.js +0 -22
  249. package/dist/engine/types.js.map +0 -1
  250. package/dist/engine-binary-resolver.js +0 -110
  251. package/dist/engine-binary-resolver.test.js +0 -61
  252. package/dist/engine-cli.js +0 -60
  253. package/dist/engine-client.js +0 -301
  254. package/dist/engine-client.test.js +0 -118
  255. package/dist/functions/chain_state.d.ts +0 -51
  256. package/dist/functions/chain_state.d.ts.map +0 -1
  257. package/dist/functions/chain_state.js +0 -59
  258. package/dist/functions/chain_state.js.map +0 -1
  259. package/dist/hooks/drift-catalog.d.ts +0 -68
  260. package/dist/hooks/drift-catalog.d.ts.map +0 -1
  261. package/dist/hooks/drift-catalog.js +0 -184
  262. package/dist/hooks/drift-catalog.js.map +0 -1
  263. package/dist/hooks/drift-catalog.test.js +0 -154
  264. package/dist/hooks/drift-patterns.d.ts +0 -110
  265. package/dist/hooks/drift-patterns.d.ts.map +0 -1
  266. package/dist/hooks/drift-patterns.js +0 -289
  267. package/dist/hooks/drift-patterns.js.map +0 -1
  268. package/dist/hooks/drift-patterns.test.js +0 -325
  269. package/dist/hooks/engine-vocab-gate.d.ts +0 -108
  270. package/dist/hooks/engine-vocab-gate.d.ts.map +0 -1
  271. package/dist/hooks/engine-vocab-gate.js +0 -225
  272. package/dist/hooks/engine-vocab-gate.js.map +0 -1
  273. package/dist/hooks/engine-vocab-gate.test.js +0 -170
  274. package/dist/hooks/heartbeat.d.ts +0 -107
  275. package/dist/hooks/heartbeat.d.ts.map +0 -1
  276. package/dist/hooks/heartbeat.js +0 -316
  277. package/dist/hooks/heartbeat.js.map +0 -1
  278. package/dist/hooks/heartbeat.test.js +0 -393
  279. package/dist/hooks/honesty-ledger-session-scope.test.js +0 -100
  280. package/dist/hooks/honesty-ledger.d.ts +0 -123
  281. package/dist/hooks/honesty-ledger.d.ts.map +0 -1
  282. package/dist/hooks/honesty-ledger.js +0 -226
  283. package/dist/hooks/honesty-ledger.js.map +0 -1
  284. package/dist/hooks/honesty-ledger.test.js +0 -466
  285. package/dist/hooks/inline-report-check.d.ts +0 -63
  286. package/dist/hooks/inline-report-check.d.ts.map +0 -1
  287. package/dist/hooks/inline-report-check.js +0 -88
  288. package/dist/hooks/inline-report-check.js.map +0 -1
  289. package/dist/hooks/inline-report-check.test.js +0 -96
  290. package/dist/hooks/pre-tool-use.d.ts +0 -62
  291. package/dist/hooks/pre-tool-use.d.ts.map +0 -1
  292. package/dist/hooks/pre-tool-use.js +0 -342
  293. package/dist/hooks/pre-tool-use.js.map +0 -1
  294. package/dist/hooks/pre-tool-use.test.js +0 -134
  295. package/dist/hooks/session-end.d.ts +0 -15
  296. package/dist/hooks/session-end.d.ts.map +0 -1
  297. package/dist/hooks/session-end.js +0 -60
  298. package/dist/hooks/session-end.js.map +0 -1
  299. package/dist/hooks/session-end.test.js +0 -52
  300. package/dist/hooks/stop.d.ts +0 -35
  301. package/dist/hooks/stop.d.ts.map +0 -1
  302. package/dist/hooks/stop.js +0 -136
  303. package/dist/hooks/stop.js.map +0 -1
  304. package/dist/hooks/transcript-active-task.test.js +0 -342
  305. package/dist/hooks/transcript.d.ts +0 -26
  306. package/dist/hooks/transcript.d.ts.map +0 -1
  307. package/dist/hooks/transcript.js +0 -266
  308. package/dist/hooks/transcript.js.map +0 -1
  309. package/dist/hooks/transcript.test.js +0 -103
  310. package/dist/hooks/user-prompt-submit.d.ts +0 -74
  311. package/dist/hooks/user-prompt-submit.d.ts.map +0 -1
  312. package/dist/hooks/user-prompt-submit.js +0 -256
  313. package/dist/hooks/user-prompt-submit.js.map +0 -1
  314. package/dist/hooks/user-prompt-submit.test.js +0 -118
  315. package/dist/hooks/versioning-gate.d.ts +0 -101
  316. package/dist/hooks/versioning-gate.d.ts.map +0 -1
  317. package/dist/hooks/versioning-gate.js +0 -245
  318. package/dist/hooks/versioning-gate.js.map +0 -1
  319. package/dist/hooks/versioning-gate.test.js +0 -368
  320. package/dist/hooks/workflow-gate.d.ts +0 -64
  321. package/dist/hooks/workflow-gate.d.ts.map +0 -1
  322. package/dist/hooks/workflow-gate.js +0 -152
  323. package/dist/hooks/workflow-gate.js.map +0 -1
  324. package/dist/hooks/workflow-gate.test.js +0 -197
  325. package/dist/hooks-cli.d.ts +0 -25
  326. package/dist/hooks-cli.d.ts.map +0 -1
  327. package/dist/hooks-cli.js +0 -286
  328. package/dist/hooks-cli.js.map +0 -1
  329. package/dist/hooks-cli.test.js +0 -148
  330. package/dist/origin.d.ts +0 -16
  331. package/dist/origin.d.ts.map +0 -1
  332. package/dist/origin.js +0 -92
  333. package/dist/origin.js.map +0 -1
  334. package/dist/packs/seed_lessons_ingest.d.ts +0 -30
  335. package/dist/packs/seed_lessons_ingest.d.ts.map +0 -1
  336. package/dist/packs/seed_lessons_ingest.js +0 -107
  337. package/dist/packs/seed_lessons_ingest.js.map +0 -1
  338. package/dist/project-cli.d.ts +0 -7
  339. package/dist/project-cli.d.ts.map +0 -1
  340. package/dist/project-cli.js +0 -145
  341. package/dist/project-cli.js.map +0 -1
  342. package/dist/project.d.ts +0 -127
  343. package/dist/project.d.ts.map +0 -1
  344. package/dist/project.js +0 -281
  345. package/dist/project.js.map +0 -1
  346. package/dist/project.test.js +0 -287
  347. package/dist/rag/backends/loop_engine.d.ts +0 -61
  348. package/dist/rag/backends/loop_engine.d.ts.map +0 -1
  349. package/dist/rag/backends/loop_engine.js +0 -160
  350. package/dist/rag/backends/loop_engine.js.map +0 -1
  351. package/dist/recall.d.ts +0 -82
  352. package/dist/recall.d.ts.map +0 -1
  353. package/dist/recall.js +0 -81
  354. package/dist/recall.js.map +0 -1
  355. package/dist/runtime/agent_bridge/autospawn.d.ts +0 -131
  356. package/dist/runtime/agent_bridge/autospawn.d.ts.map +0 -1
  357. package/dist/runtime/agent_bridge/autospawn.js +0 -251
  358. package/dist/runtime/agent_bridge/autospawn.js.map +0 -1
  359. package/dist/runtime/chain_state.d.ts +0 -124
  360. package/dist/runtime/chain_state.d.ts.map +0 -1
  361. package/dist/runtime/chain_state.js +0 -189
  362. package/dist/runtime/chain_state.js.map +0 -1
  363. package/dist/runtime/hooks/permission_decision.d.ts +0 -34
  364. package/dist/runtime/hooks/permission_decision.d.ts.map +0 -1
  365. package/dist/runtime/hooks/permission_decision.js +0 -39
  366. package/dist/runtime/hooks/permission_decision.js.map +0 -1
  367. package/dist/runtime/workflow_fsm.d.ts +0 -21
  368. package/dist/runtime/workflow_fsm.d.ts.map +0 -1
  369. package/dist/runtime/workflow_fsm.js +0 -25
  370. package/dist/runtime/workflow_fsm.js.map +0 -1
  371. package/dist/runtime/workflow_map.d.ts +0 -26
  372. package/dist/runtime/workflow_map.d.ts.map +0 -1
  373. package/dist/runtime/workflow_map.js +0 -38
  374. package/dist/runtime/workflow_map.js.map +0 -1
  375. package/dist/scope.d.ts +0 -48
  376. package/dist/scope.d.ts.map +0 -1
  377. package/dist/scope.js +0 -111
  378. package/dist/scope.js.map +0 -1
  379. package/dist/setup/cli/topic_create_step.d.ts +0 -84
  380. package/dist/setup/cli/topic_create_step.d.ts.map +0 -1
  381. package/dist/setup/cli/topic_create_step.js +0 -213
  382. package/dist/setup/cli/topic_create_step.js.map +0 -1
  383. package/dist/system-export.d.ts +0 -65
  384. package/dist/system-export.d.ts.map +0 -1
  385. package/dist/system-export.js +0 -194
  386. package/dist/system-export.js.map +0 -1
  387. package/dist/utterance/classifier.d.ts +0 -53
  388. package/dist/utterance/classifier.d.ts.map +0 -1
  389. package/dist/utterance/classifier.js +0 -184
  390. package/dist/utterance/classifier.js.map +0 -1
  391. package/dist/utterance/classifier.test.js +0 -147
@@ -1,417 +0,0 @@
1
- /**
2
- * Anti-drift evaluator (0.7.34 — unified-evaluator track).
3
- *
4
- * Single orchestrator that replaces the per-file hook handlers in
5
- * src/hooks/. Binds the 4 Claude Code hook events (PreToolUse, Stop,
6
- * UserPromptSubmit, SessionEnd) to the declarative RULES list from
7
- * rules.ts.
8
- *
9
- * Each runner:
10
- * 1. Reads JSON from stdin (Claude Code's hook payload)
11
- * 2. Builds a HookContext from the payload + transcript scan
12
- * 3. Calls evaluateRules(ctx) to walk applicable rules
13
- * 4. Aggregates verdicts per event semantic:
14
- * PreToolUse → exit 2 on first block; warns → stderr + exit 0
15
- * Stop → surfaces → violations.log (UPS picks up); +
16
- * honesty-reconcile + heartbeat-arm legacy
17
- * UPS → surfaces → stdout (Claude Code injects);
18
- * + resume detection + broken-promises +
19
- * heartbeat-pending consume (preexisting)
20
- * SessionEnd → auto-actions only (catalog + cleanup)
21
- *
22
- * Lives alongside src/hooks/ until the 0.7.35 cutover deletes the
23
- * old per-file handlers and points hooks-cli at this entrypoint.
24
- */
25
- import * as crypto from "node:crypto";
26
- import { promises as fs } from "node:fs";
27
- import * as path from "node:path";
28
- import { resolveDataRoot } from "../codex/store.js";
29
- import { evaluateRules } from "./rules.js";
30
- import { appendViolation } from "./state.js";
31
- // =====================================================================
32
- // Stdin helpers
33
- // =====================================================================
34
- async function readStdin() {
35
- let raw = "";
36
- for await (const chunk of process.stdin) {
37
- raw += chunk;
38
- }
39
- return raw;
40
- }
41
- function parsePayload(raw) {
42
- if (!raw.trim())
43
- return null;
44
- try {
45
- return JSON.parse(raw);
46
- }
47
- catch {
48
- return null;
49
- }
50
- }
51
- // =====================================================================
52
- // PreToolUse runner
53
- // =====================================================================
54
- /**
55
- * PreToolUse: walk PreToolUse rules. First block-verdict short-circuits
56
- * exit 2; warns accumulate to stderr; pass through otherwise.
57
- *
58
- * Exported for direct testing.
59
- */
60
- export async function runPreToolUseEvaluator(payload) {
61
- if (!payload.tool_name)
62
- return { exit: 0, stderr: "" };
63
- // Preserve legacy turn-ledger side effect (honesty reconciliation
64
- // needs the turn-ledger populated for Stop hook). Best-effort.
65
- if (payload.session_id) {
66
- try {
67
- const { recordToolCall } = await import("../hooks/honesty-ledger.js");
68
- const summary = summarizeToolInput(payload.tool_name, payload.tool_input ?? {});
69
- await recordToolCall(payload.session_id, payload.tool_name, summary);
70
- }
71
- catch {
72
- /* non-fatal */
73
- }
74
- }
75
- const ctx = {
76
- hookEvent: "PreToolUse",
77
- sessionId: payload.session_id,
78
- transcriptPath: payload.transcript_path,
79
- cwd: payload.cwd,
80
- toolName: payload.tool_name,
81
- toolInput: payload.tool_input ?? {},
82
- };
83
- const verdicts = await evaluateRules(ctx);
84
- return aggregatePreToolUse(verdicts);
85
- }
86
- /** Tight summary of tool input for the honesty ledger (matches legacy). */
87
- function summarizeToolInput(tool, input) {
88
- if (tool === "Bash") {
89
- const cmd = input.command;
90
- return typeof cmd === "string" ? cmd.slice(0, 500) : "";
91
- }
92
- if (tool === "Edit" || tool === "Write" || tool === "Read") {
93
- const fp = input.file_path;
94
- return typeof fp === "string" ? fp : "";
95
- }
96
- if (tool === "Agent") {
97
- const desc = input.description ?? input.subagent_type ?? "";
98
- return typeof desc === "string" ? desc.slice(0, 200) : "";
99
- }
100
- try {
101
- return JSON.stringify(input).slice(0, 200);
102
- }
103
- catch {
104
- return "";
105
- }
106
- }
107
- export function aggregatePreToolUse(verdicts) {
108
- const blocks = [];
109
- const warns = [];
110
- for (const v of verdicts) {
111
- if (v.kind === "block")
112
- blocks.push(v);
113
- else if (v.kind === "warn")
114
- warns.push(v);
115
- }
116
- const messages = [];
117
- for (const b of blocks)
118
- messages.push(b.kind === "block" ? b.message : "");
119
- for (const w of warns)
120
- messages.push(w.kind === "warn" ? w.message : "");
121
- const stderr = messages.filter(Boolean).join("\n");
122
- return {
123
- exit: blocks.length > 0 ? 2 : 0,
124
- stderr: stderr ? stderr + (stderr.endsWith("\n") ? "" : "\n") : "",
125
- };
126
- }
127
- // =====================================================================
128
- // Stop runner
129
- // =====================================================================
130
- /**
131
- * Stop: walk Stop rules. Surfaces → violations.log (next UPS picks up).
132
- * Always exit 0 (Stop is observational, not blocking — exit 2 would
133
- * trigger Claude Code's re-prompt loop which is D9 territory).
134
- *
135
- * Exported for direct testing.
136
- */
137
- export async function runStopEvaluator(payload) {
138
- if (!payload.session_id)
139
- return { stderr: "" };
140
- // Read the last assistant text from the transcript (delegated to
141
- // the existing helper).
142
- let assistantText = "";
143
- if (payload.transcript_path) {
144
- try {
145
- const { readLastAssistantText } = await import("../hooks/transcript.js");
146
- assistantText = await readLastAssistantText(payload.transcript_path);
147
- }
148
- catch {
149
- /* fail-open */
150
- }
151
- }
152
- const stderrLines = [];
153
- // ---- Legacy side effect 1: honesty-ledger reconciliation ----
154
- try {
155
- const ledger = await import("../hooks/honesty-ledger.js");
156
- const turnLedger = await ledger.readTurnLedger(payload.session_id);
157
- const broken = ledger.reconcile(assistantText, turnLedger);
158
- const existing = await ledger.readBrokenPromises(payload.session_id);
159
- const existingKeys = new Set(existing.map((p) => `${p.claim_id}|${p.matched_text}`));
160
- for (const p of broken) {
161
- if (existingKeys.has(`${p.claim_id}|${p.matched_text}`))
162
- continue;
163
- try {
164
- await ledger.recordBrokenPromise(payload.session_id, p);
165
- stderrLines.push(`🦑 [opensquid honesty] ${p.claim_id}: ${p.reason}`);
166
- }
167
- catch {
168
- /* non-fatal */
169
- }
170
- }
171
- try {
172
- await ledger.clearTurnLedger(payload.session_id);
173
- }
174
- catch {
175
- /* non-fatal */
176
- }
177
- }
178
- catch {
179
- /* fail-open */
180
- }
181
- // ---- Rule walk (inline-report-missing-phases + future Stop rules) ----
182
- const ctx = {
183
- hookEvent: "Stop",
184
- sessionId: payload.session_id,
185
- transcriptPath: payload.transcript_path,
186
- cwd: payload.cwd,
187
- assistantText,
188
- };
189
- const verdicts = await evaluateRules(ctx);
190
- for (const v of verdicts) {
191
- if (v.kind === "surface") {
192
- try {
193
- await appendViolation(payload.session_id, {
194
- ts: new Date().toISOString(),
195
- rule_id: "stop-surface",
196
- verdict: "surface",
197
- reason: v.message,
198
- });
199
- // ALSO route to the legacy broken-promises stream so the
200
- // existing UPS surface pipeline picks it up.
201
- const ledger = await import("../hooks/honesty-ledger.js");
202
- await ledger.recordBrokenPromise(payload.session_id, {
203
- ts: new Date().toISOString(),
204
- claim_id: "inline-report-missing-phases",
205
- claim_label: "PHASES block per feedback_telegram_reports",
206
- matched_text: v.message.slice(0, 200),
207
- reason: v.message,
208
- });
209
- }
210
- catch {
211
- /* best-effort */
212
- }
213
- stderrLines.push(`🦑 [opensquid] ${v.message}`);
214
- }
215
- else if (v.kind === "warn") {
216
- stderrLines.push(v.message);
217
- }
218
- }
219
- // ---- Legacy side effect 2: heartbeat arm ----
220
- if (payload.transcript_path) {
221
- try {
222
- const { checkAndMaybeArm } = await import("../hooks/heartbeat.js");
223
- const armed = await checkAndMaybeArm(payload.session_id, payload.transcript_path);
224
- if (armed)
225
- stderrLines.push(`🦑 [opensquid heartbeat-armed] ${armed}`);
226
- }
227
- catch {
228
- /* non-fatal */
229
- }
230
- }
231
- return { stderr: stderrLines.join("\n") + (stderrLines.length > 0 ? "\n" : "") };
232
- }
233
- // =====================================================================
234
- // UserPromptSubmit runner
235
- // =====================================================================
236
- /**
237
- * UserPromptSubmit: walk UPS rules. Surfaces → stdout (Claude Code
238
- * injects into agent context). Always exit 0.
239
- *
240
- * Exported for direct testing.
241
- */
242
- export async function runUserPromptSubmitEvaluator(payload) {
243
- if (!payload.session_id)
244
- return { stdout: "" };
245
- const stdoutLines = [];
246
- // ---- Legacy 1: resumed-session detection ----
247
- try {
248
- const { detectResumeAndUpdateMarker } = await import("../hooks/user-prompt-submit.js");
249
- const resumeMsg = await detectResumeAndUpdateMarker(payload.session_id);
250
- if (resumeMsg)
251
- stdoutLines.push(resumeMsg);
252
- }
253
- catch {
254
- /* non-fatal */
255
- }
256
- // ---- Legacy 2: broken-promises consume + surface ----
257
- try {
258
- const broken = await consumeBrokenPromises(payload.session_id);
259
- if (broken.length > 0) {
260
- stdoutLines.push("🦑 [opensquid honesty-ledger] unresolved claims from the previous turn:");
261
- for (const p of broken) {
262
- stdoutLines.push(` 🦑 ${p.claim_id}: "${p.matched_text}" — needed ${p.claim_label}`);
263
- }
264
- stdoutLines.push("Acknowledge these in your reply: either do the missing action now, or " +
265
- "retract the claim explicitly. Don't repeat the pattern.");
266
- }
267
- }
268
- catch {
269
- /* non-fatal */
270
- }
271
- // ---- Legacy 3: heartbeat-pending consume + mark recall required ----
272
- try {
273
- const { consumePendingHeartbeat, markRecallRequired } = await import("../hooks/heartbeat.js");
274
- const heartbeat = await consumePendingHeartbeat(payload.session_id);
275
- if (heartbeat) {
276
- if (stdoutLines.length > 0)
277
- stdoutLines.push("");
278
- stdoutLines.push(heartbeat);
279
- await markRecallRequired(payload.session_id);
280
- }
281
- }
282
- catch {
283
- /* non-fatal */
284
- }
285
- // ---- Rule walk (multi-task-plan-injection + future UPS rules) ----
286
- const ctx = {
287
- hookEvent: "UserPromptSubmit",
288
- sessionId: payload.session_id,
289
- transcriptPath: payload.transcript_path,
290
- cwd: payload.cwd,
291
- userPrompt: payload.prompt,
292
- };
293
- const verdicts = await evaluateRules(ctx);
294
- for (const v of verdicts) {
295
- if (v.kind === "surface" || v.kind === "warn") {
296
- stdoutLines.push(v.message);
297
- }
298
- }
299
- return { stdout: stdoutLines.length > 0 ? stdoutLines.join("\n") + "\n" : "" };
300
- }
301
- /**
302
- * Atomically claim broken-promises.jsonl content (rename-then-read-
303
- * then-delete). Mirrors the legacy UPS handler's `consumeJsonl`
304
- * pattern.
305
- */
306
- async function consumeBrokenPromises(sessionId) {
307
- const root = resolveDataRoot();
308
- const filePath = path.join(root, "sessions", sessionId, "broken-promises.jsonl");
309
- const claimed = `${filePath}.consuming.${crypto.randomUUID()}`;
310
- try {
311
- await fs.rename(filePath, claimed);
312
- }
313
- catch {
314
- return [];
315
- }
316
- let raw;
317
- try {
318
- raw = await fs.readFile(claimed, "utf8");
319
- }
320
- catch {
321
- raw = "";
322
- }
323
- try {
324
- await fs.rm(claimed);
325
- }
326
- catch {
327
- /* already gone */
328
- }
329
- if (!raw.trim())
330
- return [];
331
- const items = [];
332
- for (const line of raw.split("\n")) {
333
- const t = line.trim();
334
- if (!t)
335
- continue;
336
- try {
337
- items.push(JSON.parse(t));
338
- }
339
- catch {
340
- /* skip malformed */
341
- }
342
- }
343
- return items;
344
- }
345
- // =====================================================================
346
- // SessionEnd runner
347
- // =====================================================================
348
- /**
349
- * SessionEnd: walk SessionEnd rules (auto-actions like drift-catalog
350
- * scan + state cleanup). Always exit 0.
351
- *
352
- * Exported for direct testing.
353
- */
354
- export async function runSessionEndEvaluator(payload) {
355
- if (!payload.session_id)
356
- return { stderr: "" };
357
- const ctx = {
358
- hookEvent: "SessionEnd",
359
- sessionId: payload.session_id,
360
- transcriptPath: payload.transcript_path,
361
- cwd: payload.cwd,
362
- };
363
- const verdicts = await evaluateRules(ctx);
364
- const stderrLines = [];
365
- for (const v of verdicts) {
366
- if (v.kind === "warn" || v.kind === "surface") {
367
- stderrLines.push(v.message);
368
- }
369
- }
370
- return { stderr: stderrLines.join("\n") + (stderrLines.length > 0 ? "\n" : "") };
371
- }
372
- /**
373
- * Run the evaluator for the specified hook event by reading stdin,
374
- * dispatching to the right runner, writing the output, and exiting.
375
- *
376
- * Wired into the CLI as `opensquid anti-drift <event>` at the 0.7.35
377
- * cutover; until then, the existing `opensquid hook <event>` handlers
378
- * in src/hooks/* run.
379
- */
380
- export async function runEvaluator(event) {
381
- const raw = await readStdin();
382
- const payload = parsePayload(raw);
383
- if (!payload) {
384
- process.exit(0);
385
- }
386
- switch (event) {
387
- case "pre-tool-use": {
388
- const { exit, stderr } = await runPreToolUseEvaluator(payload);
389
- if (stderr)
390
- process.stderr.write(stderr);
391
- process.exit(exit);
392
- break;
393
- }
394
- case "stop": {
395
- const { stderr } = await runStopEvaluator(payload);
396
- if (stderr)
397
- process.stderr.write(stderr);
398
- process.exit(0);
399
- break;
400
- }
401
- case "user-prompt-submit": {
402
- const { stdout } = await runUserPromptSubmitEvaluator(payload);
403
- if (stdout)
404
- process.stdout.write(stdout);
405
- process.exit(0);
406
- break;
407
- }
408
- case "session-end": {
409
- const { stderr } = await runSessionEndEvaluator(payload);
410
- if (stderr)
411
- process.stderr.write(stderr);
412
- process.exit(0);
413
- break;
414
- }
415
- }
416
- }
417
- //# sourceMappingURL=evaluator.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"evaluator.js","sourceRoot":"","sources":["../../src.legacy/anti-drift/evaluator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AACtC,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,EAAE,aAAa,EAAkC,MAAM,YAAY,CAAC;AAC3E,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE7C,wEAAwE;AACxE,gBAAgB;AAChB,wEAAwE;AAExE,KAAK,UAAU,SAAS;IACtB,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QACxC,GAAG,IAAI,KAAK,CAAC;IACf,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAYD,SAAS,YAAY,CAAC,GAAW;IAC/B,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE;QAAE,OAAO,IAAI,CAAC;IAC7B,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAgB,CAAC;IACxC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,wEAAwE;AACxE,oBAAoB;AACpB,wEAAwE;AAExE;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,OAAoB;IAI/D,IAAI,CAAC,OAAO,CAAC,SAAS;QAAE,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;IAEvD,kEAAkE;IAClE,+DAA+D;IAC/D,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;QACvB,IAAI,CAAC;YACH,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,4BAA4B,CAAC,CAAC;YACtE,MAAM,OAAO,GAAG,kBAAkB,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC;YAChF,MAAM,cAAc,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACvE,CAAC;QAAC,MAAM,CAAC;YACP,eAAe;QACjB,CAAC;IACH,CAAC;IAED,MAAM,GAAG,GAAgB;QACvB,SAAS,EAAE,YAAY;QACvB,SAAS,EAAE,OAAO,CAAC,UAAU;QAC7B,cAAc,EAAE,OAAO,CAAC,eAAe;QACvC,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,QAAQ,EAAE,OAAO,CAAC,SAAS;QAC3B,SAAS,EAAE,OAAO,CAAC,UAAU,IAAI,EAAE;KACpC,CAAC;IAEF,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,GAAG,CAAC,CAAC;IAC1C,OAAO,mBAAmB,CAAC,QAAQ,CAAC,CAAC;AACvC,CAAC;AAED,2EAA2E;AAC3E,SAAS,kBAAkB,CAAC,IAAY,EAAE,KAA8B;IACtE,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;QACpB,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC;QAC1B,OAAO,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1D,CAAC;IACD,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;QAC3D,MAAM,EAAE,GAAG,KAAK,CAAC,SAAS,CAAC;QAC3B,OAAO,OAAO,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1C,CAAC;IACD,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QACrB,MAAM,IAAI,GAAG,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,aAAa,IAAI,EAAE,CAAC;QAC5D,OAAO,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5D,CAAC;IACD,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC7C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,QAAmB;IACrD,MAAM,MAAM,GAAc,EAAE,CAAC;IAC7B,MAAM,KAAK,GAAc,EAAE,CAAC;IAC5B,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO;YAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;aAClC,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM;YAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC5C,CAAC;IACD,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,KAAK,MAAM,CAAC,IAAI,MAAM;QAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC3E,KAAK,MAAM,CAAC,IAAI,KAAK;QAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACzE,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnD,OAAO;QACL,IAAI,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/B,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;KACnE,CAAC;AACJ,CAAC;AAED,wEAAwE;AACxE,cAAc;AACd,wEAAwE;AAExE;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,OAAoB;IACzD,IAAI,CAAC,OAAO,CAAC,UAAU;QAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;IAE/C,iEAAiE;IACjE,wBAAwB;IACxB,IAAI,aAAa,GAAG,EAAE,CAAC;IACvB,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;QAC5B,IAAI,CAAC;YACH,MAAM,EAAE,qBAAqB,EAAE,GAAG,MAAM,MAAM,CAAC,wBAAwB,CAAC,CAAC;YACzE,aAAa,GAAG,MAAM,qBAAqB,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;QACvE,CAAC;QAAC,MAAM,CAAC;YACP,eAAe;QACjB,CAAC;IACH,CAAC;IAED,MAAM,WAAW,GAAa,EAAE,CAAC;IAEjC,gEAAgE;IAChE,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,4BAA4B,CAAC,CAAC;QAC1D,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QACnE,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;QAC3D,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QACrE,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;QACrF,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;YACvB,IAAI,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,YAAY,EAAE,CAAC;gBAAE,SAAS;YAClE,IAAI,CAAC;gBACH,MAAM,MAAM,CAAC,mBAAmB,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;gBACxD,WAAW,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;YACxE,CAAC;YAAC,MAAM,CAAC;gBACP,eAAe;YACjB,CAAC;QACH,CAAC;QACD,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,eAAe,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QACnD,CAAC;QAAC,MAAM,CAAC;YACP,eAAe;QACjB,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,eAAe;IACjB,CAAC;IAED,yEAAyE;IACzE,MAAM,GAAG,GAAgB;QACvB,SAAS,EAAE,MAAM;QACjB,SAAS,EAAE,OAAO,CAAC,UAAU;QAC7B,cAAc,EAAE,OAAO,CAAC,eAAe;QACvC,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,aAAa;KACd,CAAC;IACF,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,GAAG,CAAC,CAAC;IAC1C,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YACzB,IAAI,CAAC;gBACH,MAAM,eAAe,CAAC,OAAO,CAAC,UAAU,EAAE;oBACxC,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;oBAC5B,OAAO,EAAE,cAAc;oBACvB,OAAO,EAAE,SAAS;oBAClB,MAAM,EAAE,CAAC,CAAC,OAAO;iBAClB,CAAC,CAAC;gBACH,yDAAyD;gBACzD,6CAA6C;gBAC7C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,4BAA4B,CAAC,CAAC;gBAC1D,MAAM,MAAM,CAAC,mBAAmB,CAAC,OAAO,CAAC,UAAU,EAAE;oBACnD,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;oBAC5B,QAAQ,EAAE,8BAA8B;oBACxC,WAAW,EAAE,4CAA4C;oBACzD,YAAY,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;oBACrC,MAAM,EAAE,CAAC,CAAC,OAAO;iBAClB,CAAC,CAAC;YACL,CAAC;YAAC,MAAM,CAAC;gBACP,iBAAiB;YACnB,CAAC;YACD,WAAW,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QAClD,CAAC;aAAM,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC7B,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IAED,gDAAgD;IAChD,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;QAC5B,IAAI,CAAC;YACH,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,MAAM,CAAC,uBAAuB,CAAC,CAAC;YACnE,MAAM,KAAK,GAAG,MAAM,gBAAgB,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;YAClF,IAAI,KAAK;gBAAE,WAAW,CAAC,IAAI,CAAC,kCAAkC,KAAK,EAAE,CAAC,CAAC;QACzE,CAAC;QAAC,MAAM,CAAC;YACP,eAAe;QACjB,CAAC;IACH,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;AACnF,CAAC;AAED,wEAAwE;AACxE,0BAA0B;AAC1B,wEAAwE;AAExE;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAChD,OAAoB;IAEpB,IAAI,CAAC,OAAO,CAAC,UAAU;QAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;IAE/C,MAAM,WAAW,GAAa,EAAE,CAAC;IAEjC,gDAAgD;IAChD,IAAI,CAAC;QACH,MAAM,EAAE,2BAA2B,EAAE,GAAG,MAAM,MAAM,CAAC,gCAAgC,CAAC,CAAC;QACvF,MAAM,SAAS,GAAG,MAAM,2BAA2B,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QACxE,IAAI,SAAS;YAAE,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC7C,CAAC;IAAC,MAAM,CAAC;QACP,eAAe;IACjB,CAAC;IAED,wDAAwD;IACxD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,qBAAqB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC/D,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,WAAW,CAAC,IAAI,CAAC,yEAAyE,CAAC,CAAC;YAC5F,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;gBACvB,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ,MAAM,CAAC,CAAC,YAAY,cAAc,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;YACxF,CAAC;YACD,WAAW,CAAC,IAAI,CACd,wEAAwE;gBACtE,yDAAyD,CAC5D,CAAC;QACJ,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,eAAe;IACjB,CAAC;IAED,uEAAuE;IACvE,IAAI,CAAC;QACH,MAAM,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,GAAG,MAAM,MAAM,CAAC,uBAAuB,CAAC,CAAC;QAC9F,MAAM,SAAS,GAAG,MAAM,uBAAuB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QACpE,IAAI,SAAS,EAAE,CAAC;YACd,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC;gBAAE,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACjD,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC5B,MAAM,kBAAkB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,eAAe;IACjB,CAAC;IAED,qEAAqE;IACrE,MAAM,GAAG,GAAgB;QACvB,SAAS,EAAE,kBAAkB;QAC7B,SAAS,EAAE,OAAO,CAAC,UAAU;QAC7B,cAAc,EAAE,OAAO,CAAC,eAAe;QACvC,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,UAAU,EAAE,OAAO,CAAC,MAAM;KAC3B,CAAC;IACF,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,GAAG,CAAC,CAAC;IAC1C,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC9C,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AACjF,CAAC;AAQD;;;;GAIG;AACH,KAAK,UAAU,qBAAqB,CAAC,SAAiB;IACpD,MAAM,IAAI,GAAG,eAAe,EAAE,CAAC;IAC/B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,uBAAuB,CAAC,CAAC;IACjF,MAAM,OAAO,GAAG,GAAG,QAAQ,cAAc,MAAM,CAAC,UAAU,EAAE,EAAE,CAAC;IAC/D,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACrC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,IAAI,GAAW,CAAC;IAChB,IAAI,CAAC;QACH,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC3C,CAAC;IAAC,MAAM,CAAC;QACP,GAAG,GAAG,EAAE,CAAC;IACX,CAAC;IACD,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;IACvB,CAAC;IAAC,MAAM,CAAC;QACP,kBAAkB;IACpB,CAAC;IACD,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,CAAC;IAC3B,MAAM,KAAK,GAAwB,EAAE,CAAC;IACtC,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACnC,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QACtB,IAAI,CAAC,CAAC;YAAE,SAAS;QACjB,IAAI,CAAC;YACH,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAsB,CAAC,CAAC;QACjD,CAAC;QAAC,MAAM,CAAC;YACP,oBAAoB;QACtB,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,wEAAwE;AACxE,oBAAoB;AACpB,wEAAwE;AAExE;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,OAAoB;IAC/D,IAAI,CAAC,OAAO,CAAC,UAAU;QAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;IAE/C,MAAM,GAAG,GAAgB;QACvB,SAAS,EAAE,YAAY;QACvB,SAAS,EAAE,OAAO,CAAC,UAAU;QAC7B,cAAc,EAAE,OAAO,CAAC,eAAe;QACvC,GAAG,EAAE,OAAO,CAAC,GAAG;KACjB,CAAC;IAEF,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,GAAG,CAAC,CAAC;IAC1C,MAAM,WAAW,GAAa,EAAE,CAAC;IACjC,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC9C,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;AACnF,CAAC;AAQD;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,KAAoB;IACrD,MAAM,GAAG,GAAG,MAAM,SAAS,EAAE,CAAC;IAC9B,MAAM,OAAO,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;IAClC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,QAAQ,KAAK,EAAE,CAAC;QACd,KAAK,cAAc,CAAC,CAAC,CAAC;YACpB,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,sBAAsB,CAAC,OAAO,CAAC,CAAC;YAC/D,IAAI,MAAM;gBAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACzC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnB,MAAM;QACR,CAAC;QACD,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,gBAAgB,CAAC,OAAO,CAAC,CAAC;YACnD,IAAI,MAAM;gBAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACzC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAChB,MAAM;QACR,CAAC;QACD,KAAK,oBAAoB,CAAC,CAAC,CAAC;YAC1B,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,4BAA4B,CAAC,OAAO,CAAC,CAAC;YAC/D,IAAI,MAAM;gBAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACzC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAChB,MAAM;QACR,CAAC;QACD,KAAK,aAAa,CAAC,CAAC,CAAC;YACnB,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,sBAAsB,CAAC,OAAO,CAAC,CAAC;YACzD,IAAI,MAAM;gBAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACzC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAChB,MAAM;QACR,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -1,78 +0,0 @@
1
- /**
2
- * Tests for anti-drift/evaluator.ts (0.7.34 unified-evaluator track).
3
- *
4
- * Focused on aggregation semantics (PreToolUse short-circuit on block,
5
- * Stop+UPS surface/warn pass-through). End-to-end runner tests would
6
- * need stdin fixtures; covered by the existing src/hooks/*.test.ts
7
- * suites which exercise the same code paths via the legacy entry
8
- * points. 0.7.35 cutover migrates those tests.
9
- */
10
- import { describe, expect, it } from "vitest";
11
- import { aggregatePreToolUse } from "./evaluator.js";
12
- describe("aggregatePreToolUse", () => {
13
- it("returns exit 0 + empty stderr when no verdicts fired", () => {
14
- const r = aggregatePreToolUse([]);
15
- expect(r.exit).toBe(0);
16
- expect(r.stderr).toBe("");
17
- });
18
- it("returns exit 0 + empty stderr when all verdicts are pass", () => {
19
- const verdicts = [{ kind: "pass" }, { kind: "pass" }];
20
- const r = aggregatePreToolUse(verdicts);
21
- expect(r.exit).toBe(0);
22
- expect(r.stderr).toBe("");
23
- });
24
- it("returns exit 2 when any verdict is block", () => {
25
- const verdicts = [{ kind: "pass" }, { kind: "block", message: "blocked because X" }];
26
- const r = aggregatePreToolUse(verdicts);
27
- expect(r.exit).toBe(2);
28
- expect(r.stderr).toContain("blocked because X");
29
- });
30
- it("returns exit 0 + stderr when only warns fired", () => {
31
- const verdicts = [
32
- { kind: "warn", message: "warn-A" },
33
- { kind: "warn", message: "warn-B" },
34
- ];
35
- const r = aggregatePreToolUse(verdicts);
36
- expect(r.exit).toBe(0);
37
- expect(r.stderr).toContain("warn-A");
38
- expect(r.stderr).toContain("warn-B");
39
- });
40
- it("blocks listed BEFORE warns in the combined stderr (most-restrictive surfaces first)", () => {
41
- const verdicts = [
42
- { kind: "warn", message: "warn-first-in-input" },
43
- { kind: "block", message: "block-second-in-input" },
44
- ];
45
- const r = aggregatePreToolUse(verdicts);
46
- const blockIdx = r.stderr.indexOf("block-second-in-input");
47
- const warnIdx = r.stderr.indexOf("warn-first-in-input");
48
- expect(blockIdx).toBeGreaterThan(-1);
49
- expect(warnIdx).toBeGreaterThan(-1);
50
- expect(blockIdx).toBeLessThan(warnIdx);
51
- });
52
- it("appends trailing newline to stderr when non-empty", () => {
53
- const verdicts = [{ kind: "warn", message: "x" }];
54
- const r = aggregatePreToolUse(verdicts);
55
- expect(r.stderr.endsWith("\n")).toBe(true);
56
- });
57
- });
58
- describe("runner semantics — block/warn aggregation contract", () => {
59
- it("multiple blocks all appear in stderr", () => {
60
- const verdicts = [
61
- { kind: "block", message: "first block" },
62
- { kind: "block", message: "second block" },
63
- ];
64
- const r = aggregatePreToolUse(verdicts);
65
- expect(r.exit).toBe(2);
66
- expect(r.stderr).toContain("first block");
67
- expect(r.stderr).toContain("second block");
68
- });
69
- it("surface verdicts are NOT included in PreToolUse stderr (those route via Stop/UPS)", () => {
70
- const verdicts = [
71
- { kind: "surface", message: "stop-surface should not appear" },
72
- { kind: "warn", message: "real warn appears" },
73
- ];
74
- const r = aggregatePreToolUse(verdicts);
75
- expect(r.stderr).not.toContain("stop-surface should not appear");
76
- expect(r.stderr).toContain("real warn appears");
77
- });
78
- });
@@ -1,80 +0,0 @@
1
- /**
2
- * Anti-drift declarative rule list (0.7.33 — unified-evaluator track).
3
- *
4
- * Per loop/docs/opensquid-anti-drift-unified-evaluator-design.md: one
5
- * declarative `Rule[]` list replaces the per-file hook handlers in
6
- * src/hooks/*. Each rule:
7
- *
8
- * - `id` stable identifier
9
- * - `catches` which D-entry (or "preexisting") this rule covers
10
- * - `hook` which lifecycle event this rule binds to
11
- * - `when` (cheap, synchronous) gate — short-circuits before
12
- * expensive `check` work
13
- * - `check` (async) returns a Verdict
14
- * - `bypass` optional env var that emergency-disables the rule
15
- * - `rationale` one-line agent-facing reason (used in error messages)
16
- *
17
- * Today the check functions DELEGATE to existing src/hooks/* helpers
18
- * (engine-vocab-gate, versioning-gate, workflow-gate, drift-patterns,
19
- * inline-report-check, etc.) so this patch ships the declarative
20
- * SURFACE without re-implementing every gate. The 0.7.35 cutover
21
- * moves the helper bodies into src/anti-drift/* and deletes the old
22
- * per-hook files.
23
- *
24
- * The evaluator (0.7.34) walks this list at each hook event, runs
25
- * applicable rules, aggregates verdicts (most-restrictive wins for
26
- * PreToolUse permissions; all surfaces accumulate at Stop/UPS).
27
- */
28
- export type HookEvent = "PreToolUse" | "Stop" | "UserPromptSubmit" | "SessionEnd";
29
- export type Verdict = {
30
- kind: "pass";
31
- } | {
32
- kind: "block";
33
- message: string;
34
- } | {
35
- kind: "warn";
36
- message: string;
37
- } | {
38
- kind: "surface";
39
- message: string;
40
- };
41
- export interface HookContext {
42
- /** Lifecycle event this hook fire represents. */
43
- hookEvent: HookEvent;
44
- /** Claude Code session id. */
45
- sessionId?: string;
46
- /** Path to the session's JSONL transcript. */
47
- transcriptPath?: string;
48
- /** Working directory the tool will execute in. */
49
- cwd?: string;
50
- /** PreToolUse only: name of the tool about to be called. */
51
- toolName?: string;
52
- /** PreToolUse only: input object for the tool call. */
53
- toolInput?: Record<string, unknown>;
54
- /** Stop only: the just-completed assistant message text. */
55
- assistantText?: string;
56
- /** UserPromptSubmit only: the user's prompt text. */
57
- userPrompt?: string;
58
- }
59
- export interface Rule {
60
- id: string;
61
- catches: string;
62
- hook: HookEvent;
63
- when: (ctx: HookContext) => boolean;
64
- check: (ctx: HookContext) => Promise<Verdict>;
65
- bypass?: string;
66
- rationale: string;
67
- }
68
- export declare const RULES: Rule[];
69
- /**
70
- * Pick the rules that apply to a given hook event AND that aren't
71
- * bypassed. Exported so the evaluator and tests share the same filter.
72
- */
73
- export declare function rulesForEvent(event: HookEvent): Rule[];
74
- /**
75
- * Walk applicable rules and collect verdicts. Stops at the first
76
- * `block` for PreToolUse events; aggregates all surfaces/warns for
77
- * Stop/UPS/SessionEnd events.
78
- */
79
- export declare function evaluateRules(ctx: HookContext): Promise<Verdict[]>;
80
- //# sourceMappingURL=rules.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"rules.d.ts","sourceRoot":"","sources":["../../src.legacy/anti-drift/rules.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAcH,MAAM,MAAM,SAAS,GAAG,YAAY,GAAG,MAAM,GAAG,kBAAkB,GAAG,YAAY,CAAC;AAElF,MAAM,MAAM,OAAO,GACf;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAClC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACjC;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzC,MAAM,WAAW,WAAW;IAC1B,iDAAiD;IACjD,SAAS,EAAE,SAAS,CAAC;IACrB,8BAA8B;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8CAA8C;IAC9C,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,kDAAkD;IAClD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,4DAA4D;IAC5D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,uDAAuD;IACvD,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,4DAA4D;IAC5D,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,qDAAqD;IACrD,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,SAAS,CAAC;IAChB,IAAI,EAAE,CAAC,GAAG,EAAE,WAAW,KAAK,OAAO,CAAC;IACpC,KAAK,EAAE,CAAC,GAAG,EAAE,WAAW,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC9C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAuBD,eAAO,MAAM,KAAK,EAAE,IAAI,EAwRvB,CAAC;AAMF;;;GAGG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,EAAE,CAEtD;AAED;;;;GAIG;AACH,wBAAsB,aAAa,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAWxE"}