opensquid 0.5.441 → 0.5.447

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 (380) 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/runtime/bootstrap.d.ts.map +1 -1
  11. package/dist/runtime/bootstrap.js +2 -0
  12. package/dist/runtime/bootstrap.js.map +1 -1
  13. package/dist/runtime/handoff/render.d.ts +5 -4
  14. package/dist/runtime/handoff/render.d.ts.map +1 -1
  15. package/dist/runtime/handoff/render.js +7 -7
  16. package/dist/runtime/handoff/render.js.map +1 -1
  17. package/dist/runtime/hooks/active_task_mirror.js +0 -0
  18. package/dist/runtime/hooks/apply_patch.js +0 -0
  19. package/dist/runtime/hooks/dispatch.js +0 -0
  20. package/dist/runtime/hooks/hook_output.js +0 -0
  21. package/dist/runtime/hooks/memory_reconcile.js +0 -0
  22. package/dist/runtime/hooks/new_project_detect.js +0 -0
  23. package/dist/runtime/hooks/profession_resolver.js +0 -0
  24. package/dist/runtime/hooks/scope_intent.js +0 -0
  25. package/dist/runtime/hooks/session_id.js +0 -0
  26. package/dist/runtime/hooks/session_liveness.js +0 -0
  27. package/dist/runtime/hooks/stop_drive.js +0 -0
  28. package/dist/runtime/hooks/stop_stream.js +0 -0
  29. package/dist/runtime/hooks/subagent_guard.js +0 -0
  30. package/dist/runtime/hooks/transcript.js +0 -0
  31. package/dist/runtime/hooks/transcript_tasks.js +0 -0
  32. package/dist/runtime/ralph/orchestrator.d.ts.map +1 -1
  33. package/dist/runtime/ralph/orchestrator.js +2 -1
  34. package/dist/runtime/ralph/orchestrator.js.map +1 -1
  35. package/dist/setup/cli/limits_state.d.ts.map +1 -1
  36. package/dist/setup/cli/limits_state.js +6 -40
  37. package/dist/setup/cli/limits_state.js.map +1 -1
  38. package/dist/setup/cli/pack_walk.d.ts +32 -0
  39. package/dist/setup/cli/pack_walk.d.ts.map +1 -0
  40. package/dist/setup/cli/pack_walk.js +76 -0
  41. package/dist/setup/cli/pack_walk.js.map +1 -0
  42. package/dist/setup/cli/permissions_state.d.ts.map +1 -1
  43. package/dist/setup/cli/permissions_state.js +6 -37
  44. package/dist/setup/cli/permissions_state.js.map +1 -1
  45. package/dist/setup/cli/triggers_state.d.ts.map +1 -1
  46. package/dist/setup/cli/triggers_state.js +3 -29
  47. package/dist/setup/cli/triggers_state.js.map +1 -1
  48. package/dist/workgraph/events.d.ts.map +1 -1
  49. package/dist/workgraph/events.js +10 -0
  50. package/dist/workgraph/events.js.map +1 -1
  51. package/dist/workgraph/store.d.ts.map +1 -1
  52. package/dist/workgraph/store.js +5 -0
  53. package/dist/workgraph/store.js.map +1 -1
  54. package/dist/workgraph/types.d.ts +2 -1
  55. package/dist/workgraph/types.d.ts.map +1 -1
  56. package/docs/ARCHITECTURE.md +268 -0
  57. package/package.json +5 -3
  58. package/packs/builtin/coding-flow/skills/entry-and-handoffs/skill.yaml +13 -17
  59. package/dist/anti-drift/evaluator.d.ts +0 -88
  60. package/dist/anti-drift/evaluator.d.ts.map +0 -1
  61. package/dist/anti-drift/evaluator.js +0 -417
  62. package/dist/anti-drift/evaluator.js.map +0 -1
  63. package/dist/anti-drift/evaluator.test.js +0 -78
  64. package/dist/anti-drift/rules.d.ts +0 -80
  65. package/dist/anti-drift/rules.d.ts.map +0 -1
  66. package/dist/anti-drift/rules.js +0 -368
  67. package/dist/anti-drift/rules.js.map +0 -1
  68. package/dist/anti-drift/rules.test.js +0 -213
  69. package/dist/anti-drift/state.d.ts +0 -107
  70. package/dist/anti-drift/state.d.ts.map +0 -1
  71. package/dist/anti-drift/state.js +0 -177
  72. package/dist/anti-drift/state.js.map +0 -1
  73. package/dist/anti-drift/state.test.js +0 -120
  74. package/dist/chat/adapters/discord.d.ts +0 -41
  75. package/dist/chat/adapters/discord.d.ts.map +0 -1
  76. package/dist/chat/adapters/discord.js +0 -176
  77. package/dist/chat/adapters/discord.js.map +0 -1
  78. package/dist/chat/adapters/discord.test.js +0 -25
  79. package/dist/chat/adapters/slack.d.ts +0 -43
  80. package/dist/chat/adapters/slack.d.ts.map +0 -1
  81. package/dist/chat/adapters/slack.js +0 -172
  82. package/dist/chat/adapters/slack.js.map +0 -1
  83. package/dist/chat/adapters/slack.test.js +0 -30
  84. package/dist/chat/adapters/telegram.d.ts +0 -148
  85. package/dist/chat/adapters/telegram.d.ts.map +0 -1
  86. package/dist/chat/adapters/telegram.js +0 -498
  87. package/dist/chat/adapters/telegram.js.map +0 -1
  88. package/dist/chat/adapters/telegram.test.js +0 -94
  89. package/dist/chat/config.d.ts +0 -98
  90. package/dist/chat/config.d.ts.map +0 -1
  91. package/dist/chat/config.js +0 -185
  92. package/dist/chat/config.js.map +0 -1
  93. package/dist/chat/daemon/active-project.d.ts +0 -17
  94. package/dist/chat/daemon/active-project.d.ts.map +0 -1
  95. package/dist/chat/daemon/active-project.js +0 -23
  96. package/dist/chat/daemon/active-project.js.map +0 -1
  97. package/dist/chat/daemon/autospawn.d.ts +0 -40
  98. package/dist/chat/daemon/autospawn.d.ts.map +0 -1
  99. package/dist/chat/daemon/autospawn.js +0 -129
  100. package/dist/chat/daemon/autospawn.js.map +0 -1
  101. package/dist/chat/daemon/autospawn.test.js +0 -112
  102. package/dist/chat/daemon/cli.d.ts +0 -18
  103. package/dist/chat/daemon/cli.d.ts.map +0 -1
  104. package/dist/chat/daemon/cli.js +0 -71
  105. package/dist/chat/daemon/cli.js.map +0 -1
  106. package/dist/chat/daemon/collisions.js +0 -384
  107. package/dist/chat/daemon/health-check.d.ts +0 -69
  108. package/dist/chat/daemon/health-check.d.ts.map +0 -1
  109. package/dist/chat/daemon/health-check.js +0 -112
  110. package/dist/chat/daemon/health-check.js.map +0 -1
  111. package/dist/chat/daemon/inbox-read.d.ts +0 -35
  112. package/dist/chat/daemon/inbox-read.d.ts.map +0 -1
  113. package/dist/chat/daemon/inbox-read.js +0 -75
  114. package/dist/chat/daemon/inbox-read.js.map +0 -1
  115. package/dist/chat/daemon/inbox-read.test.js +0 -97
  116. package/dist/chat/daemon/inbox.d.ts +0 -63
  117. package/dist/chat/daemon/inbox.d.ts.map +0 -1
  118. package/dist/chat/daemon/inbox.js +0 -56
  119. package/dist/chat/daemon/inbox.js.map +0 -1
  120. package/dist/chat/daemon/inbox.test.js +0 -110
  121. package/dist/chat/daemon/lifecycle.d.ts +0 -71
  122. package/dist/chat/daemon/lifecycle.d.ts.map +0 -1
  123. package/dist/chat/daemon/lifecycle.js +0 -221
  124. package/dist/chat/daemon/lifecycle.js.map +0 -1
  125. package/dist/chat/daemon/lifecycle.test.js +0 -163
  126. package/dist/chat/daemon/protocol.d.ts +0 -107
  127. package/dist/chat/daemon/protocol.d.ts.map +0 -1
  128. package/dist/chat/daemon/protocol.js +0 -54
  129. package/dist/chat/daemon/protocol.js.map +0 -1
  130. package/dist/chat/daemon/routing.d.ts +0 -140
  131. package/dist/chat/daemon/routing.d.ts.map +0 -1
  132. package/dist/chat/daemon/routing.js +0 -198
  133. package/dist/chat/daemon/routing.js.map +0 -1
  134. package/dist/chat/daemon/routing.test.js +0 -259
  135. package/dist/chat/daemon/rpc-client.d.ts +0 -45
  136. package/dist/chat/daemon/rpc-client.d.ts.map +0 -1
  137. package/dist/chat/daemon/rpc-client.js +0 -133
  138. package/dist/chat/daemon/rpc-client.js.map +0 -1
  139. package/dist/chat/daemon/rpc-server.d.ts +0 -39
  140. package/dist/chat/daemon/rpc-server.d.ts.map +0 -1
  141. package/dist/chat/daemon/rpc-server.js +0 -385
  142. package/dist/chat/daemon/rpc-server.js.map +0 -1
  143. package/dist/chat/daemon/rpc.test.js +0 -177
  144. package/dist/chat/daemon/subscribers.js +0 -257
  145. package/dist/chat/daemon/worker.d.ts +0 -27
  146. package/dist/chat/daemon/worker.d.ts.map +0 -1
  147. package/dist/chat/daemon/worker.js +0 -313
  148. package/dist/chat/daemon/worker.js.map +0 -1
  149. package/dist/chat/daemon/workspace-topic.js +0 -324
  150. package/dist/chat/env-token.d.ts +0 -60
  151. package/dist/chat/env-token.d.ts.map +0 -1
  152. package/dist/chat/env-token.js +0 -137
  153. package/dist/chat/env-token.js.map +0 -1
  154. package/dist/chat/env-token.test.js +0 -160
  155. package/dist/chat/factory.d.ts +0 -30
  156. package/dist/chat/factory.d.ts.map +0 -1
  157. package/dist/chat/factory.js +0 -50
  158. package/dist/chat/factory.js.map +0 -1
  159. package/dist/chat/factory.test.js +0 -55
  160. package/dist/chat/gateway.d.ts +0 -176
  161. package/dist/chat/gateway.d.ts.map +0 -1
  162. package/dist/chat/gateway.js +0 -146
  163. package/dist/chat/gateway.js.map +0 -1
  164. package/dist/chat/gateway.test.js +0 -192
  165. package/dist/claude-md.d.ts +0 -39
  166. package/dist/claude-md.d.ts.map +0 -1
  167. package/dist/claude-md.js +0 -113
  168. package/dist/claude-md.js.map +0 -1
  169. package/dist/claude-md.test.js +0 -91
  170. package/dist/codex/activate.d.ts +0 -66
  171. package/dist/codex/activate.d.ts.map +0 -1
  172. package/dist/codex/activate.js +0 -329
  173. package/dist/codex/activate.js.map +0 -1
  174. package/dist/codex/activate.test.js +0 -229
  175. package/dist/codex/bundled-default/bundled-default.test.js +0 -161
  176. package/dist/codex/cli-publish.test.js +0 -133
  177. package/dist/codex/cli.d.ts +0 -35
  178. package/dist/codex/cli.d.ts.map +0 -1
  179. package/dist/codex/cli.js +0 -554
  180. package/dist/codex/cli.js.map +0 -1
  181. package/dist/codex/cli.test.js +0 -277
  182. package/dist/codex/import-skill-md.d.ts +0 -53
  183. package/dist/codex/import-skill-md.d.ts.map +0 -1
  184. package/dist/codex/import-skill-md.js +0 -236
  185. package/dist/codex/import-skill-md.js.map +0 -1
  186. package/dist/codex/import-skill-md.test.js +0 -225
  187. package/dist/codex/loader.d.ts +0 -27
  188. package/dist/codex/loader.d.ts.map +0 -1
  189. package/dist/codex/loader.js +0 -86
  190. package/dist/codex/loader.js.map +0 -1
  191. package/dist/codex/loader.test.js +0 -75
  192. package/dist/codex/parse.d.ts +0 -28
  193. package/dist/codex/parse.d.ts.map +0 -1
  194. package/dist/codex/parse.js +0 -309
  195. package/dist/codex/parse.js.map +0 -1
  196. package/dist/codex/parse.test.js +0 -241
  197. package/dist/codex/store.d.ts +0 -87
  198. package/dist/codex/store.d.ts.map +0 -1
  199. package/dist/codex/store.js +0 -205
  200. package/dist/codex/store.js.map +0 -1
  201. package/dist/codex/store.test.js +0 -242
  202. package/dist/codex/types.d.ts +0 -398
  203. package/dist/codex/types.d.ts.map +0 -1
  204. package/dist/codex/types.js +0 -21
  205. package/dist/codex/types.js.map +0 -1
  206. package/dist/config.d.ts +0 -53
  207. package/dist/config.d.ts.map +0 -1
  208. package/dist/config.js +0 -202
  209. package/dist/config.js.map +0 -1
  210. package/dist/config.test.js +0 -117
  211. package/dist/engine/cli.d.ts +0 -14
  212. package/dist/engine/cli.d.ts.map +0 -1
  213. package/dist/engine/cli.js +0 -171
  214. package/dist/engine/cli.js.map +0 -1
  215. package/dist/engine/client.d.ts +0 -219
  216. package/dist/engine/client.d.ts.map +0 -1
  217. package/dist/engine/client.js +0 -312
  218. package/dist/engine/client.js.map +0 -1
  219. package/dist/engine/config.d.ts +0 -62
  220. package/dist/engine/config.d.ts.map +0 -1
  221. package/dist/engine/config.js +0 -223
  222. package/dist/engine/config.js.map +0 -1
  223. package/dist/engine/index.d.ts +0 -17
  224. package/dist/engine/index.d.ts.map +0 -1
  225. package/dist/engine/index.js +0 -16
  226. package/dist/engine/index.js.map +0 -1
  227. package/dist/engine/resolver.d.ts +0 -62
  228. package/dist/engine/resolver.d.ts.map +0 -1
  229. package/dist/engine/resolver.js +0 -103
  230. package/dist/engine/resolver.js.map +0 -1
  231. package/dist/engine/singleton.d.ts +0 -95
  232. package/dist/engine/singleton.d.ts.map +0 -1
  233. package/dist/engine/singleton.js +0 -325
  234. package/dist/engine/singleton.js.map +0 -1
  235. package/dist/engine/types.d.ts +0 -402
  236. package/dist/engine/types.d.ts.map +0 -1
  237. package/dist/engine/types.js +0 -22
  238. package/dist/engine/types.js.map +0 -1
  239. package/dist/engine-binary-resolver.js +0 -110
  240. package/dist/engine-binary-resolver.test.js +0 -61
  241. package/dist/engine-cli.js +0 -60
  242. package/dist/engine-client.js +0 -301
  243. package/dist/engine-client.test.js +0 -118
  244. package/dist/functions/chain_state.d.ts +0 -51
  245. package/dist/functions/chain_state.d.ts.map +0 -1
  246. package/dist/functions/chain_state.js +0 -59
  247. package/dist/functions/chain_state.js.map +0 -1
  248. package/dist/hooks/drift-catalog.d.ts +0 -68
  249. package/dist/hooks/drift-catalog.d.ts.map +0 -1
  250. package/dist/hooks/drift-catalog.js +0 -184
  251. package/dist/hooks/drift-catalog.js.map +0 -1
  252. package/dist/hooks/drift-catalog.test.js +0 -154
  253. package/dist/hooks/drift-patterns.d.ts +0 -110
  254. package/dist/hooks/drift-patterns.d.ts.map +0 -1
  255. package/dist/hooks/drift-patterns.js +0 -289
  256. package/dist/hooks/drift-patterns.js.map +0 -1
  257. package/dist/hooks/drift-patterns.test.js +0 -325
  258. package/dist/hooks/engine-vocab-gate.d.ts +0 -108
  259. package/dist/hooks/engine-vocab-gate.d.ts.map +0 -1
  260. package/dist/hooks/engine-vocab-gate.js +0 -225
  261. package/dist/hooks/engine-vocab-gate.js.map +0 -1
  262. package/dist/hooks/engine-vocab-gate.test.js +0 -170
  263. package/dist/hooks/heartbeat.d.ts +0 -107
  264. package/dist/hooks/heartbeat.d.ts.map +0 -1
  265. package/dist/hooks/heartbeat.js +0 -316
  266. package/dist/hooks/heartbeat.js.map +0 -1
  267. package/dist/hooks/heartbeat.test.js +0 -393
  268. package/dist/hooks/honesty-ledger-session-scope.test.js +0 -100
  269. package/dist/hooks/honesty-ledger.d.ts +0 -123
  270. package/dist/hooks/honesty-ledger.d.ts.map +0 -1
  271. package/dist/hooks/honesty-ledger.js +0 -226
  272. package/dist/hooks/honesty-ledger.js.map +0 -1
  273. package/dist/hooks/honesty-ledger.test.js +0 -466
  274. package/dist/hooks/inline-report-check.d.ts +0 -63
  275. package/dist/hooks/inline-report-check.d.ts.map +0 -1
  276. package/dist/hooks/inline-report-check.js +0 -88
  277. package/dist/hooks/inline-report-check.js.map +0 -1
  278. package/dist/hooks/inline-report-check.test.js +0 -96
  279. package/dist/hooks/pre-tool-use.d.ts +0 -62
  280. package/dist/hooks/pre-tool-use.d.ts.map +0 -1
  281. package/dist/hooks/pre-tool-use.js +0 -342
  282. package/dist/hooks/pre-tool-use.js.map +0 -1
  283. package/dist/hooks/pre-tool-use.test.js +0 -134
  284. package/dist/hooks/session-end.d.ts +0 -15
  285. package/dist/hooks/session-end.d.ts.map +0 -1
  286. package/dist/hooks/session-end.js +0 -60
  287. package/dist/hooks/session-end.js.map +0 -1
  288. package/dist/hooks/session-end.test.js +0 -52
  289. package/dist/hooks/stop.d.ts +0 -35
  290. package/dist/hooks/stop.d.ts.map +0 -1
  291. package/dist/hooks/stop.js +0 -136
  292. package/dist/hooks/stop.js.map +0 -1
  293. package/dist/hooks/transcript-active-task.test.js +0 -342
  294. package/dist/hooks/transcript.d.ts +0 -26
  295. package/dist/hooks/transcript.d.ts.map +0 -1
  296. package/dist/hooks/transcript.js +0 -266
  297. package/dist/hooks/transcript.js.map +0 -1
  298. package/dist/hooks/transcript.test.js +0 -103
  299. package/dist/hooks/user-prompt-submit.d.ts +0 -74
  300. package/dist/hooks/user-prompt-submit.d.ts.map +0 -1
  301. package/dist/hooks/user-prompt-submit.js +0 -256
  302. package/dist/hooks/user-prompt-submit.js.map +0 -1
  303. package/dist/hooks/user-prompt-submit.test.js +0 -118
  304. package/dist/hooks/versioning-gate.d.ts +0 -101
  305. package/dist/hooks/versioning-gate.d.ts.map +0 -1
  306. package/dist/hooks/versioning-gate.js +0 -245
  307. package/dist/hooks/versioning-gate.js.map +0 -1
  308. package/dist/hooks/versioning-gate.test.js +0 -368
  309. package/dist/hooks/workflow-gate.d.ts +0 -64
  310. package/dist/hooks/workflow-gate.d.ts.map +0 -1
  311. package/dist/hooks/workflow-gate.js +0 -152
  312. package/dist/hooks/workflow-gate.js.map +0 -1
  313. package/dist/hooks/workflow-gate.test.js +0 -197
  314. package/dist/hooks-cli.d.ts +0 -25
  315. package/dist/hooks-cli.d.ts.map +0 -1
  316. package/dist/hooks-cli.js +0 -286
  317. package/dist/hooks-cli.js.map +0 -1
  318. package/dist/hooks-cli.test.js +0 -148
  319. package/dist/origin.d.ts +0 -16
  320. package/dist/origin.d.ts.map +0 -1
  321. package/dist/origin.js +0 -92
  322. package/dist/origin.js.map +0 -1
  323. package/dist/packs/seed_lessons_ingest.d.ts +0 -30
  324. package/dist/packs/seed_lessons_ingest.d.ts.map +0 -1
  325. package/dist/packs/seed_lessons_ingest.js +0 -107
  326. package/dist/packs/seed_lessons_ingest.js.map +0 -1
  327. package/dist/project-cli.d.ts +0 -7
  328. package/dist/project-cli.d.ts.map +0 -1
  329. package/dist/project-cli.js +0 -145
  330. package/dist/project-cli.js.map +0 -1
  331. package/dist/project.d.ts +0 -127
  332. package/dist/project.d.ts.map +0 -1
  333. package/dist/project.js +0 -281
  334. package/dist/project.js.map +0 -1
  335. package/dist/project.test.js +0 -287
  336. package/dist/rag/backends/loop_engine.d.ts +0 -61
  337. package/dist/rag/backends/loop_engine.d.ts.map +0 -1
  338. package/dist/rag/backends/loop_engine.js +0 -160
  339. package/dist/rag/backends/loop_engine.js.map +0 -1
  340. package/dist/recall.d.ts +0 -82
  341. package/dist/recall.d.ts.map +0 -1
  342. package/dist/recall.js +0 -81
  343. package/dist/recall.js.map +0 -1
  344. package/dist/runtime/agent_bridge/autospawn.d.ts +0 -131
  345. package/dist/runtime/agent_bridge/autospawn.d.ts.map +0 -1
  346. package/dist/runtime/agent_bridge/autospawn.js +0 -251
  347. package/dist/runtime/agent_bridge/autospawn.js.map +0 -1
  348. package/dist/runtime/chain_state.d.ts +0 -124
  349. package/dist/runtime/chain_state.d.ts.map +0 -1
  350. package/dist/runtime/chain_state.js +0 -189
  351. package/dist/runtime/chain_state.js.map +0 -1
  352. package/dist/runtime/hooks/permission_decision.d.ts +0 -34
  353. package/dist/runtime/hooks/permission_decision.d.ts.map +0 -1
  354. package/dist/runtime/hooks/permission_decision.js +0 -39
  355. package/dist/runtime/hooks/permission_decision.js.map +0 -1
  356. package/dist/runtime/workflow_fsm.d.ts +0 -21
  357. package/dist/runtime/workflow_fsm.d.ts.map +0 -1
  358. package/dist/runtime/workflow_fsm.js +0 -25
  359. package/dist/runtime/workflow_fsm.js.map +0 -1
  360. package/dist/runtime/workflow_map.d.ts +0 -26
  361. package/dist/runtime/workflow_map.d.ts.map +0 -1
  362. package/dist/runtime/workflow_map.js +0 -38
  363. package/dist/runtime/workflow_map.js.map +0 -1
  364. package/dist/scope.d.ts +0 -48
  365. package/dist/scope.d.ts.map +0 -1
  366. package/dist/scope.js +0 -111
  367. package/dist/scope.js.map +0 -1
  368. package/dist/setup/cli/topic_create_step.d.ts +0 -84
  369. package/dist/setup/cli/topic_create_step.d.ts.map +0 -1
  370. package/dist/setup/cli/topic_create_step.js +0 -213
  371. package/dist/setup/cli/topic_create_step.js.map +0 -1
  372. package/dist/system-export.d.ts +0 -65
  373. package/dist/system-export.d.ts.map +0 -1
  374. package/dist/system-export.js +0 -194
  375. package/dist/system-export.js.map +0 -1
  376. package/dist/utterance/classifier.d.ts +0 -53
  377. package/dist/utterance/classifier.d.ts.map +0 -1
  378. package/dist/utterance/classifier.js +0 -184
  379. package/dist/utterance/classifier.js.map +0 -1
  380. package/dist/utterance/classifier.test.js +0 -147
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "opensquid",
3
- "version": "0.5.441",
3
+ "version": "0.5.447",
4
4
  "description": "Continuity layer for coding agents: durable memory, dependency-aware task state, workflow gates, and inspectable packs over MCP.",
5
5
  "type": "module",
6
6
  "exports": {
@@ -24,6 +24,7 @@
24
24
  "dist",
25
25
  "schemas",
26
26
  "packs/builtin",
27
+ "docs/ARCHITECTURE.md",
27
28
  "docs/pack-runtime.md",
28
29
  "docs/skill-grammar-guide.md",
29
30
  "docs/load-budget.md",
@@ -34,7 +35,8 @@
34
35
  },
35
36
  "packageManager": "pnpm@10.33.2",
36
37
  "scripts": {
37
- "build": "tsc -p tsconfig.build.json",
38
+ "clean": "rm -rf dist",
39
+ "build": "tsc -p tsconfig.build.json && chmod +x dist/cli.js dist/runtime/hooks/*.js dist/mcp/server.js dist/mcp/chat-bridge-server.js",
38
40
  "typecheck": "tsc --noEmit",
39
41
  "test": "vitest run",
40
42
  "test:watch": "vitest",
@@ -46,7 +48,7 @@
46
48
  "prepare": "bash scripts/install-git-hooks.sh",
47
49
  "schemas": "tsx scripts/emit-schemas.ts && prettier --write 'schemas/*.json'",
48
50
  "sync-fixtures": "tsx scripts/sync-fixtures-from-live.ts",
49
- "prepublishOnly": "pnpm schemas && pnpm build"
51
+ "prepublishOnly": "pnpm clean && pnpm schemas && pnpm build"
50
52
  },
51
53
  "keywords": [
52
54
  "mcp",
@@ -24,20 +24,14 @@ rules:
24
24
  - '\bdesign\b'
25
25
  - '\bplan\b'
26
26
  as: intent
27
- # RTC.2 (wg-3d175ec06767): consult the persistent request-type record. A research-classified
28
- # prompt (understand-only / a question) must NOT arm scope even if it matches a scope keyword
29
- # ("what's the plan here?" matches \bplan\b but is a question) — that arm-on-question is cause-3
30
- # of the codex-pause-wedge. Null-safe: an absent record rt.type is undefined `undefined !=
31
- # "research"` is true arms as before (backward-compat; member access on null short-circuits to
32
- # undefined, interpreter.ts:177-187).
33
- - call: read_state
34
- args:
35
- key: request-type
36
- as: rt
37
- - call: advance_fsm
38
- if: 'len(intent.matched) > 0 && rt.type != "research"'
39
- args:
40
- event: scope_start
27
+ # RTC (wg-649d80e78e64): the request-type veto now lives in the arm_scope CHOKEPOINT — the
28
+ # single owner shared by BOTH arm producers (this rule + rearm-on-depletion), so a research-
29
+ # classified prompt (understand-only / a question — "what's the plan here?" matches \bplan\b but
30
+ # is a question) can never arm scope and no producer can reintroduce the bypass. enter-scoping
31
+ # just supplies its keyword-intent condition; arm_scope reads request-type and vetoes research.
32
+ # (Supersedes the inline RTC.2 gate, wg-3d175ec06767.)
33
+ - call: arm_scope
34
+ if: 'len(intent.matched) > 0'
41
35
  # FU.3: record the track-type so the AUTHOR gate can consult it. RESET to the
42
36
  # strict default (feature) on every scope entry FIRST — so a stale fix/doc/
43
37
  # trivial value from a prior track can never under-gate a later feature task —
@@ -270,10 +264,12 @@ rules:
270
264
  as: st
271
265
  - call: open_task_count
272
266
  as: open
273
- - call: advance_fsm
267
+ # RTC (wg-649d80e78e64): the SECOND arm producer routes through the SAME arm_scope chokepoint,
268
+ # so a research/docs turn after a completed track can no longer spuriously re-arm scoping (the
269
+ # gate-fighting class). arm_scope owns the research veto; this rule supplies only the structural
270
+ # depletion condition.
271
+ - call: arm_scope
274
272
  if: 'st == "phases_complete" && open.count == 0'
275
- args:
276
- event: scope_start
277
273
  # Strict default for the re-armed track: a plain-language track can't be classified,
278
274
  # so gate it at the strictest profile (feature). Mirrors enter-scoping's reset.
279
275
  - call: write_state
@@ -1,88 +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 { type Verdict } from "./rules.js";
26
- interface HookPayload {
27
- hook_event_name?: string;
28
- session_id?: string;
29
- transcript_path?: string;
30
- cwd?: string;
31
- tool_name?: string;
32
- tool_input?: Record<string, unknown>;
33
- prompt?: string;
34
- }
35
- /**
36
- * PreToolUse: walk PreToolUse rules. First block-verdict short-circuits
37
- * exit 2; warns accumulate to stderr; pass through otherwise.
38
- *
39
- * Exported for direct testing.
40
- */
41
- export declare function runPreToolUseEvaluator(payload: HookPayload): Promise<{
42
- exit: 0 | 2;
43
- stderr: string;
44
- }>;
45
- export declare function aggregatePreToolUse(verdicts: Verdict[]): {
46
- exit: 0 | 2;
47
- stderr: string;
48
- };
49
- /**
50
- * Stop: walk Stop rules. Surfaces → violations.log (next UPS picks up).
51
- * Always exit 0 (Stop is observational, not blocking — exit 2 would
52
- * trigger Claude Code's re-prompt loop which is D9 territory).
53
- *
54
- * Exported for direct testing.
55
- */
56
- export declare function runStopEvaluator(payload: HookPayload): Promise<{
57
- stderr: string;
58
- }>;
59
- /**
60
- * UserPromptSubmit: walk UPS rules. Surfaces → stdout (Claude Code
61
- * injects into agent context). Always exit 0.
62
- *
63
- * Exported for direct testing.
64
- */
65
- export declare function runUserPromptSubmitEvaluator(payload: HookPayload): Promise<{
66
- stdout: string;
67
- }>;
68
- /**
69
- * SessionEnd: walk SessionEnd rules (auto-actions like drift-catalog
70
- * scan + state cleanup). Always exit 0.
71
- *
72
- * Exported for direct testing.
73
- */
74
- export declare function runSessionEndEvaluator(payload: HookPayload): Promise<{
75
- stderr: string;
76
- }>;
77
- export type HookEventName = "pre-tool-use" | "stop" | "user-prompt-submit" | "session-end";
78
- /**
79
- * Run the evaluator for the specified hook event by reading stdin,
80
- * dispatching to the right runner, writing the output, and exiting.
81
- *
82
- * Wired into the CLI as `opensquid anti-drift <event>` at the 0.7.35
83
- * cutover; until then, the existing `opensquid hook <event>` handlers
84
- * in src/hooks/* run.
85
- */
86
- export declare function runEvaluator(event: HookEventName): Promise<void>;
87
- export {};
88
- //# sourceMappingURL=evaluator.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"evaluator.d.ts","sourceRoot":"","sources":["../../src.legacy/anti-drift/evaluator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAQH,OAAO,EAAmC,KAAK,OAAO,EAAE,MAAM,YAAY,CAAC;AAe3E,UAAU,WAAW;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAeD;;;;;GAKG;AACH,wBAAsB,sBAAsB,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC;IAC1E,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,CA0BD;AAuBD,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG;IAAE,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAexF;AAMD;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CA2FxF;AAMD;;;;;GAKG;AACH,wBAAsB,4BAA4B,CAChD,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CA2D7B;AAmDD;;;;;GAKG;AACH,wBAAsB,sBAAsB,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAkB9F;AAMD,MAAM,MAAM,aAAa,GAAG,cAAc,GAAG,MAAM,GAAG,oBAAoB,GAAG,aAAa,CAAC;AAE3F;;;;;;;GAOG;AACH,wBAAsB,YAAY,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAiCtE"}
@@ -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":"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"}