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,225 +0,0 @@
1
- import { promises as fs } from "node:fs";
2
- import * as path from "node:path";
3
- import { fileURLToPath } from "node:url";
4
- import { describe, expect, it } from "vitest";
5
- import { SkillMdImportError, convertSkillMdToCodex, detectVariant, parseSkillMd, slugify, } from "./import-skill-md.js";
6
- import { isFocusedCodex } from "./types.js";
7
- const __dirname = path.dirname(fileURLToPath(import.meta.url));
8
- const FIXTURES = path.resolve(__dirname, "../../test/fixtures/skill-md");
9
- async function loadFixture(name) {
10
- return fs.readFile(path.join(FIXTURES, name), "utf8");
11
- }
12
- // ---------------------------------------------------------------------
13
- // slugify
14
- // ---------------------------------------------------------------------
15
- describe("slugify", () => {
16
- it("lowercases ASCII", () => {
17
- expect(slugify("HelloWorld")).toBe("helloworld");
18
- });
19
- it("replaces underscores with dashes", () => {
20
- expect(slugify("google_meet")).toBe("google-meet");
21
- });
22
- it("collapses runs of non-alphanumerics", () => {
23
- expect(slugify("foo bar___baz")).toBe("foo-bar-baz");
24
- });
25
- it("trims leading/trailing dashes", () => {
26
- expect(slugify("---foo---")).toBe("foo");
27
- });
28
- it("caps at 64 chars", () => {
29
- const long = "a".repeat(200);
30
- expect(slugify(long).length).toBe(64);
31
- });
32
- it("throws on empty after stripping", () => {
33
- expect(() => slugify("!!!")).toThrow(SkillMdImportError);
34
- });
35
- });
36
- // ---------------------------------------------------------------------
37
- // parseSkillMd
38
- // ---------------------------------------------------------------------
39
- describe("parseSkillMd", () => {
40
- it("rejects empty input", () => {
41
- expect(() => parseSkillMd("")).toThrow(/empty/);
42
- });
43
- it("rejects missing frontmatter", () => {
44
- expect(() => parseSkillMd("just a body, no fences")).toThrow(/frontmatter/);
45
- });
46
- it("rejects missing name", () => {
47
- expect(() => parseSkillMd("---\ndescription: x\n---\nbody")).toThrow(/name/);
48
- });
49
- it("rejects missing description", () => {
50
- expect(() => parseSkillMd("---\nname: foo\n---\nbody")).toThrow(/description/);
51
- });
52
- it("parses minimal valid SKILL.md", () => {
53
- const { frontmatter, body } = parseSkillMd("---\nname: foo\ndescription: bar\n---\nhello");
54
- expect(frontmatter.name).toBe("foo");
55
- expect(frontmatter.description).toBe("bar");
56
- expect(body).toBe("hello");
57
- });
58
- it("handles CRLF line endings", () => {
59
- const { frontmatter } = parseSkillMd("---\r\nname: foo\r\ndescription: bar\r\n---\r\nbody\r\n");
60
- expect(frontmatter.name).toBe("foo");
61
- });
62
- it("strips UTF-8 BOM at start of file (v0.6d audit L1)", () => {
63
- const bom = "";
64
- const { frontmatter, body } = parseSkillMd(`${bom}---\nname: bom-test\ndescription: leading BOM\n---\nbody\n`);
65
- expect(frontmatter.name).toBe("bom-test");
66
- expect(body).toBe("body");
67
- });
68
- });
69
- // ---------------------------------------------------------------------
70
- // detectVariant
71
- // ---------------------------------------------------------------------
72
- describe("detectVariant", () => {
73
- it("detects ECC by origin", () => {
74
- expect(detectVariant({ name: "x", description: "y", origin: "ECC" })).toBe("ecc");
75
- });
76
- it("detects Hermes by platforms array", () => {
77
- expect(detectVariant({ name: "x", description: "y", platforms: ["claude-code"] })).toBe("hermes");
78
- });
79
- it("detects Hermes by metadata.hermes block", () => {
80
- expect(detectVariant({ name: "x", description: "y", metadata: { hermes: { tags: [] } } })).toBe("hermes");
81
- });
82
- it("detects superpowers by path", () => {
83
- expect(detectVariant({ name: "x", description: "y" }, "/repo/superpowers/skills/foo/SKILL.md")).toBe("superpowers");
84
- });
85
- it("does NOT detect superpowers from CSO description alone (Anthropic skills use it too)", () => {
86
- expect(detectVariant({ name: "x", description: "Use when writing tests" })).toBe("anthropic");
87
- });
88
- it("detects pure Anthropic (only known fields)", () => {
89
- expect(detectVariant({ name: "x", description: "extracts text", license: "MIT" })).toBe("anthropic");
90
- });
91
- it("falls back to unknown for unrecognized non-standard fields", () => {
92
- expect(detectVariant({ name: "x", description: "extracts text", randomField: 1 })).toBe("unknown");
93
- });
94
- });
95
- // ---------------------------------------------------------------------
96
- // convertSkillMdToCodex — fixture round-trip
97
- // ---------------------------------------------------------------------
98
- describe("convertSkillMdToCodex — fixtures", () => {
99
- it("converts Anthropic skill-creator (minimal)", async () => {
100
- const raw = await loadFixture("anthropic-skill-creator.md");
101
- const { codex, lessons, variant } = convertSkillMdToCodex(raw, {
102
- originalPath: "/fake/skill-creator/SKILL.md",
103
- now: "2026-05-16T00:00:00.000Z",
104
- });
105
- expect(variant).toBe("anthropic");
106
- expect(codex.id).toBe("skill-creator");
107
- expect(codex.version).toBe("1.0.0");
108
- expect(isFocusedCodex(codex)).toBe(true);
109
- if (!isFocusedCodex(codex))
110
- throw new Error("unreachable");
111
- expect(codex.evolves).toBe(true);
112
- expect(codex.source?.kind).toBe("skill_md");
113
- expect(codex.source?.original_variant).toBe("anthropic");
114
- expect(codex.source?.original_name).toBe("skill-creator");
115
- expect(codex.source?.imported_at).toBe("2026-05-16T00:00:00.000Z");
116
- expect(codex.metadata?.imported_from).toBe("skill_md");
117
- expect(codex.metadata?.imported).toEqual({ synthesized_version: true });
118
- expect(codex.seed_lessons).toHaveLength(1);
119
- expect(codex.seed_lessons?.[0]?.id).toBe("skill-creator");
120
- expect(codex.seed_lessons?.[0]?.body_path).toBe("lessons/skill-creator/lesson.md");
121
- expect(lessons).toHaveLength(1);
122
- expect(lessons[0].body).toContain("# Skill Creator");
123
- });
124
- it("converts Anthropic pdf — preserves license", async () => {
125
- const raw = await loadFixture("anthropic-pdf.md");
126
- const { codex } = convertSkillMdToCodex(raw, { originalPath: "/fake/pdf/SKILL.md" });
127
- expect(codex.id).toBe("pdf");
128
- expect(codex.license).toBe("Apache-2.0");
129
- });
130
- it("converts superpowers TDD — path-based detection", async () => {
131
- const raw = await loadFixture("superpowers-tdd.md");
132
- const { codex, variant } = convertSkillMdToCodex(raw, {
133
- originalPath: "/home/u/repos/superpowers/skills/test-driven-development/SKILL.md",
134
- });
135
- expect(variant).toBe("superpowers");
136
- expect(codex.id).toBe("test-driven-development");
137
- });
138
- it("converts ECC tdd-workflow — preserves origin in metadata", async () => {
139
- const raw = await loadFixture("ecc-tdd-workflow.md");
140
- const { codex, variant } = convertSkillMdToCodex(raw, {
141
- originalPath: "/fake/ecc/SKILL.md",
142
- });
143
- expect(variant).toBe("ecc");
144
- expect(codex.metadata?.origin).toBe("ECC");
145
- });
146
- it("converts Hermes dogfood — preserves version + author + extensions", async () => {
147
- const raw = await loadFixture("hermes-dogfood.md");
148
- const { codex, variant } = convertSkillMdToCodex(raw, {
149
- originalPath: "/fake/hermes/dogfood/SKILL.md",
150
- });
151
- expect(variant).toBe("hermes");
152
- if (!isFocusedCodex(codex))
153
- throw new Error("unreachable");
154
- expect(codex.version).toBe("0.3.1");
155
- expect(codex.author?.name).toBe("Hermes Team");
156
- expect(codex.metadata?.platforms).toEqual(["claude-code", "cursor", "hermes"]);
157
- const hermesMeta = codex.metadata?.hermes;
158
- expect(hermesMeta?.tags).toContain("testing");
159
- expect(hermesMeta?.related_skills).toContain("publish-skill");
160
- // synthesized_version marker MUST NOT be set when Hermes supplied a version
161
- expect(codex.metadata?.imported).toBeUndefined();
162
- });
163
- it("converts Hermes google_meet — underscore rewrites to hyphen", async () => {
164
- const raw = await loadFixture("hermes-google-meet.md");
165
- const { codex } = convertSkillMdToCodex(raw, {
166
- originalPath: "/fake/hermes/google_meet/SKILL.md",
167
- });
168
- expect(codex.id).toBe("google-meet");
169
- if (!isFocusedCodex(codex))
170
- throw new Error("unreachable");
171
- expect(codex.source?.original_name).toBe("google_meet");
172
- expect(codex.seed_lessons?.[0]?.body_path).toBe("lessons/google-meet/lesson.md");
173
- });
174
- });
175
- // ---------------------------------------------------------------------
176
- // allowed-tools mapping (Anthropic experimental field)
177
- // ---------------------------------------------------------------------
178
- describe("convertSkillMdToCodex — allowed-tools", () => {
179
- it("maps `allowed-tools` array to foundation.tools[]", () => {
180
- const src = `---
181
- name: tooled
182
- description: uses specific tools
183
- allowed-tools:
184
- - Read
185
- - Bash
186
- - Edit
187
- ---
188
-
189
- body`;
190
- const { codex } = convertSkillMdToCodex(src);
191
- if (!isFocusedCodex(codex))
192
- throw new Error("unreachable");
193
- expect(codex.foundation?.tools?.map((t) => t.name)).toEqual(["Read", "Bash", "Edit"]);
194
- });
195
- it("omits foundation when allowed-tools is empty", () => {
196
- const src = `---
197
- name: untooled
198
- description: no tool restrictions
199
- ---
200
-
201
- body`;
202
- const { codex } = convertSkillMdToCodex(src);
203
- if (!isFocusedCodex(codex))
204
- throw new Error("unreachable");
205
- expect(codex.foundation).toBeUndefined();
206
- });
207
- });
208
- // ---------------------------------------------------------------------
209
- // Unknown frontmatter keys → metadata catch-all
210
- // ---------------------------------------------------------------------
211
- describe("convertSkillMdToCodex — extensibility bucket", () => {
212
- it("preserves unknown top-level keys under metadata", () => {
213
- const src = `---
214
- name: custom
215
- description: has random fields
216
- custom_field: hello
217
- another: 42
218
- ---
219
-
220
- body`;
221
- const { codex } = convertSkillMdToCodex(src);
222
- expect(codex.metadata?.custom_field).toBe("hello");
223
- expect(codex.metadata?.another).toBe(42);
224
- });
225
- });
@@ -1,27 +0,0 @@
1
- /**
2
- * Bundled-default codex loader (drift-as-codex chunk 2).
3
- *
4
- * Reads `bundled-default/codex.yaml` once per process and returns the
5
- * parsed FocusedCodex. Downstream hooks (workflow-gate, honesty-ledger,
6
- * versioning-gate — see chunks 3a/3b) call this to source their rules
7
- * from the codex instead of having them hard-coded in TypeScript.
8
- *
9
- * Singleton cache: the YAML is small and unchanging across a process
10
- * lifetime; computing the path + parsing once is cheap and avoids
11
- * surprising the test suite with stale state.
12
- */
13
- import { FocusedCodex } from "./types.js";
14
- /**
15
- * Load the bundled-default codex once per process and return it.
16
- *
17
- * Throws if the file is missing, malformed, or parses to a
18
- * CompositeCodex (the bundled-default is always focused — composite
19
- * codexes are a separate consumer pattern).
20
- */
21
- export declare function loadBundledDefaultCodex(): FocusedCodex;
22
- /**
23
- * Clear the loader cache. Test-only — production code should never
24
- * need to invalidate the bundled-default codex within a process.
25
- */
26
- export declare function __resetCachedCodexForTesting(): void;
27
- //# sourceMappingURL=loader.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src.legacy/codex/loader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAOH,OAAO,EAAE,YAAY,EAAkB,MAAM,YAAY,CAAC;AAgD1D;;;;;;GAMG;AACH,wBAAgB,uBAAuB,IAAI,YAAY,CAqBtD;AAED;;;GAGG;AACH,wBAAgB,4BAA4B,IAAI,IAAI,CAEnD"}
@@ -1,86 +0,0 @@
1
- /**
2
- * Bundled-default codex loader (drift-as-codex chunk 2).
3
- *
4
- * Reads `bundled-default/codex.yaml` once per process and returns the
5
- * parsed FocusedCodex. Downstream hooks (workflow-gate, honesty-ledger,
6
- * versioning-gate — see chunks 3a/3b) call this to source their rules
7
- * from the codex instead of having them hard-coded in TypeScript.
8
- *
9
- * Singleton cache: the YAML is small and unchanging across a process
10
- * lifetime; computing the path + parsing once is cheap and avoids
11
- * surprising the test suite with stale state.
12
- */
13
- import { readFileSync } from "node:fs";
14
- import * as path from "node:path";
15
- import { fileURLToPath } from "node:url";
16
- import { parseCodexYaml } from "./parse.js";
17
- import { isFocusedCodex } from "./types.js";
18
- const __filename = fileURLToPath(import.meta.url);
19
- const __dirname = path.dirname(__filename);
20
- /**
21
- * Path to the bundled-default codex YAML. Resolved relative to this
22
- * file's location, so it works in both `src/` (vitest direct execution)
23
- * and `dist/` (built + published npm package, since
24
- * `src/codex/bundled-default/codex.yaml` is listed in `package.json`
25
- * `files[]`).
26
- *
27
- * The relative layout is identical in both worlds:
28
- * src/codex/loader.ts + src/codex/bundled-default/codex.yaml
29
- * dist/codex/loader.js + src/codex/bundled-default/codex.yaml
30
- *
31
- * Wait — the `dist/` build only includes the loader.js. The YAML
32
- * stays at its `src/codex/bundled-default/codex.yaml` location because
33
- * that's what package.json `files[]` ships. We resolve from
34
- * `loader.{ts,js}` up to the package root then back down to the YAML.
35
- */
36
- function resolveBundledCodexPath() {
37
- // From `dist/codex/loader.js` or `src/codex/loader.ts`, the YAML is
38
- // at `../../src/codex/bundled-default/codex.yaml` relative to the
39
- // dist build, or `./bundled-default/codex.yaml` in the src tree.
40
- // Try the src-tree path first (works in test runs); fall back to
41
- // the dist-relative path (works in published npm package).
42
- const srcRelative = path.resolve(__dirname, "bundled-default", "codex.yaml");
43
- // Distinguish dist vs src by checking whether __dirname ends with
44
- // .../dist/codex. In `dist/`, the bundled YAML is one level higher.
45
- const distRelative = path.resolve(__dirname, "..", "..", "src", "codex", "bundled-default", "codex.yaml");
46
- // When running from src/, srcRelative resolves correctly; when
47
- // running from dist/, only distRelative does (the YAML stays in
48
- // src/codex/bundled-default/ per package.json files[]). Branch on
49
- // whether __dirname is inside /dist/.
50
- return srcRelative.includes(`${path.sep}dist${path.sep}`) ? distRelative : srcRelative;
51
- }
52
- let cachedCodex = null;
53
- /**
54
- * Load the bundled-default codex once per process and return it.
55
- *
56
- * Throws if the file is missing, malformed, or parses to a
57
- * CompositeCodex (the bundled-default is always focused — composite
58
- * codexes are a separate consumer pattern).
59
- */
60
- export function loadBundledDefaultCodex() {
61
- if (cachedCodex !== null) {
62
- return cachedCodex;
63
- }
64
- const yamlPath = resolveBundledCodexPath();
65
- let yaml;
66
- try {
67
- yaml = readFileSync(yamlPath, "utf-8");
68
- }
69
- catch (err) {
70
- throw new Error(`[opensquid loader] bundled-default codex not found at ${yamlPath}: ${err instanceof Error ? err.message : err}`);
71
- }
72
- const parsed = parseCodexYaml(yaml);
73
- if (!isFocusedCodex(parsed)) {
74
- throw new Error(`[opensquid loader] bundled-default codex must be focused, got composite (id=${parsed.id})`);
75
- }
76
- cachedCodex = parsed;
77
- return cachedCodex;
78
- }
79
- /**
80
- * Clear the loader cache. Test-only — production code should never
81
- * need to invalidate the bundled-default codex within a process.
82
- */
83
- export function __resetCachedCodexForTesting() {
84
- cachedCodex = null;
85
- }
86
- //# sourceMappingURL=loader.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src.legacy/codex/loader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAgB,cAAc,EAAE,MAAM,YAAY,CAAC;AAE1D,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAE3C;;;;;;;;;;;;;;;GAeG;AACH,SAAS,uBAAuB;IAC9B,oEAAoE;IACpE,kEAAkE;IAClE,iEAAiE;IACjE,iEAAiE;IACjE,2DAA2D;IAC3D,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,iBAAiB,EAAE,YAAY,CAAC,CAAC;IAC7E,kEAAkE;IAClE,oEAAoE;IACpE,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAC/B,SAAS,EACT,IAAI,EACJ,IAAI,EACJ,KAAK,EACL,OAAO,EACP,iBAAiB,EACjB,YAAY,CACb,CAAC;IACF,+DAA+D;IAC/D,gEAAgE;IAChE,kEAAkE;IAClE,sCAAsC;IACtC,OAAO,WAAW,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,GAAG,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC;AACzF,CAAC;AAED,IAAI,WAAW,GAAwB,IAAI,CAAC;AAE5C;;;;;;GAMG;AACH,MAAM,UAAU,uBAAuB;IACrC,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;QACzB,OAAO,WAAW,CAAC;IACrB,CAAC;IACD,MAAM,QAAQ,GAAG,uBAAuB,EAAE,CAAC;IAC3C,IAAI,IAAY,CAAC;IACjB,IAAI,CAAC;QACH,IAAI,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACzC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CACb,yDAAyD,QAAQ,KAAK,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,CACjH,CAAC;IACJ,CAAC;IACD,MAAM,MAAM,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;IACpC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CACb,+EAA+E,MAAM,CAAC,EAAE,GAAG,CAC5F,CAAC;IACJ,CAAC;IACD,WAAW,GAAG,MAAM,CAAC;IACrB,OAAO,WAAW,CAAC;AACrB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,4BAA4B;IAC1C,WAAW,GAAG,IAAI,CAAC;AACrB,CAAC"}
@@ -1,75 +0,0 @@
1
- import { describe, expect, it, beforeEach } from "vitest";
2
- import { __resetCachedCodexForTesting, loadBundledDefaultCodex } from "./loader.js";
3
- import { isFocusedCodex } from "./types.js";
4
- describe("loadBundledDefaultCodex", () => {
5
- beforeEach(() => {
6
- __resetCachedCodexForTesting();
7
- });
8
- it("loads the bundled-default codex and returns a focused codex", () => {
9
- const codex = loadBundledDefaultCodex();
10
- expect(codex.id).toBe("opensquid-default");
11
- expect(isFocusedCodex(codex)).toBe(true);
12
- });
13
- it("exposes the drift, workflow, claim, and policy sections (chunk 1 content)", () => {
14
- const codex = loadBundledDefaultCodex();
15
- expect(codex.drifts).toBeDefined();
16
- expect((codex.drifts ?? []).length).toBeGreaterThanOrEqual(4);
17
- expect(codex.workflows).toBeDefined();
18
- expect((codex.workflows ?? []).length).toBeGreaterThanOrEqual(1);
19
- expect(codex.default_workflow_id).toBe("standard-7-phase");
20
- expect(codex.claims).toBeDefined();
21
- expect((codex.claims ?? []).length).toBeGreaterThanOrEqual(5);
22
- expect(codex.policies).toBeDefined();
23
- expect((codex.policies ?? []).length).toBeGreaterThanOrEqual(2);
24
- });
25
- it("caches across calls (returns the same object instance on repeated calls)", () => {
26
- const first = loadBundledDefaultCodex();
27
- const second = loadBundledDefaultCodex();
28
- expect(first).toBe(second);
29
- });
30
- it("re-parses after __resetCachedCodexForTesting (fresh object instance)", () => {
31
- const first = loadBundledDefaultCodex();
32
- __resetCachedCodexForTesting();
33
- const second = loadBundledDefaultCodex();
34
- // Same content, different reference because cache was cleared.
35
- expect(first).not.toBe(second);
36
- expect(first.id).toBe(second.id);
37
- });
38
- it("exposes the standard-7-phase workflow with all 7 phases", () => {
39
- const codex = loadBundledDefaultCodex();
40
- const workflow = (codex.workflows ?? []).find((w) => w.id === "standard-7-phase");
41
- expect(workflow).toBeDefined();
42
- const phaseNames = (workflow?.phases ?? []).map((p) => p.name);
43
- expect(phaseNames).toEqual([
44
- "pre_research",
45
- "learn",
46
- "code",
47
- "test",
48
- "audit",
49
- "post_research",
50
- "fix",
51
- ]);
52
- // `fix` is the only soft phase (required: false). The other 6 are required.
53
- const requiredPhases = (workflow?.phases ?? []).filter((p) => p.required).map((p) => p.name);
54
- expect(requiredPhases).toEqual([
55
- "pre_research",
56
- "learn",
57
- "code",
58
- "test",
59
- "audit",
60
- "post_research",
61
- ]);
62
- });
63
- it("exposes versioning-pre1-patch-only policy with allowed_slots = [patch]", () => {
64
- const codex = loadBundledDefaultCodex();
65
- const policy = (codex.policies ?? []).find((p) => p.id === "versioning-pre1-patch-only");
66
- expect(policy).toBeDefined();
67
- if (policy?.kind === "versioning") {
68
- expect(policy.params.per_commit_required).toBe(true);
69
- expect(policy.params.allowed_slots).toEqual(["patch"]);
70
- }
71
- else {
72
- throw new Error("versioning-pre1-patch-only policy is not of kind=versioning");
73
- }
74
- });
75
- });
@@ -1,28 +0,0 @@
1
- /**
2
- * Codex YAML parsing + runtime validation.
3
- *
4
- * Authoritative parse for codex.yaml files. Used by `opensquid codex
5
- * install <path>` to validate before storing locally. Foreign-format
6
- * imports (superpowers SKILL.md, ECC, etc.) come pre-converted to
7
- * native codex YAML via LLM at install time — this parser sees the
8
- * native shape only.
9
- */
10
- import { z } from "zod";
11
- import type { Codex } from "./types.js";
12
- export declare class CodexParseError extends Error {
13
- readonly issues?: z.ZodIssue[] | undefined;
14
- constructor(message: string, issues?: z.ZodIssue[] | undefined);
15
- }
16
- /**
17
- * Parse + validate a codex from a raw object (already-parsed YAML/JSON).
18
- *
19
- * Throws `CodexParseError` on schema violations with detailed issues.
20
- */
21
- export declare function parseCodex(raw: unknown): Codex;
22
- /**
23
- * Parse a codex from a YAML string.
24
- *
25
- * Throws `CodexParseError` on YAML syntax error or schema violation.
26
- */
27
- export declare function parseCodexYaml(source: string): Codex;
28
- //# sourceMappingURL=parse.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../../src.legacy/codex/parse.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EACV,KAAK,EAeN,MAAM,YAAY,CAAC;AAiSpB,qBAAa,eAAgB,SAAQ,KAAK;aAGtB,MAAM,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE;gBADrC,OAAO,EAAE,MAAM,EACC,MAAM,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,YAAA;CAKxC;AAMD;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,OAAO,GAAG,KAAK,CAgB9C;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,CAepD"}