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
@@ -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"}