@moreih29/nexus-core 0.16.2 → 0.18.2

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 (413) hide show
  1. package/README.md +101 -67
  2. package/dist/cli/sync.d.ts +3 -0
  3. package/dist/cli/sync.d.ts.map +1 -0
  4. package/dist/cli/sync.js +59 -0
  5. package/dist/cli/sync.js.map +1 -0
  6. package/dist/generate/index.d.ts +3 -0
  7. package/dist/generate/index.d.ts.map +1 -0
  8. package/dist/generate/index.js +2 -0
  9. package/dist/generate/index.js.map +1 -0
  10. package/dist/generate/load-data.d.ts +8 -0
  11. package/dist/generate/load-data.d.ts.map +1 -0
  12. package/dist/generate/load-data.js +45 -0
  13. package/dist/generate/load-data.js.map +1 -0
  14. package/dist/generate/load-spec.d.ts +3 -0
  15. package/dist/generate/load-spec.d.ts.map +1 -0
  16. package/dist/generate/load-spec.js +48 -0
  17. package/dist/generate/load-spec.js.map +1 -0
  18. package/dist/generate/macros/expand.d.ts +3 -0
  19. package/dist/generate/macros/expand.d.ts.map +1 -0
  20. package/dist/generate/macros/expand.js +48 -0
  21. package/dist/generate/macros/expand.js.map +1 -0
  22. package/dist/generate/macros/parse.d.ts +4 -0
  23. package/dist/generate/macros/parse.d.ts.map +1 -0
  24. package/dist/generate/macros/parse.js +142 -0
  25. package/dist/generate/macros/parse.js.map +1 -0
  26. package/dist/generate/macros/validate.d.ts +3 -0
  27. package/dist/generate/macros/validate.d.ts.map +1 -0
  28. package/dist/generate/macros/validate.js +23 -0
  29. package/dist/generate/macros/validate.js.map +1 -0
  30. package/dist/generate/renderers/claude.d.ts +3 -0
  31. package/dist/generate/renderers/claude.d.ts.map +1 -0
  32. package/dist/generate/renderers/claude.js +48 -0
  33. package/dist/generate/renderers/claude.js.map +1 -0
  34. package/dist/generate/renderers/codex.d.ts +3 -0
  35. package/dist/generate/renderers/codex.d.ts.map +1 -0
  36. package/dist/generate/renderers/codex.js +79 -0
  37. package/dist/generate/renderers/codex.js.map +1 -0
  38. package/dist/generate/renderers/markdown.d.ts +2 -0
  39. package/dist/generate/renderers/markdown.d.ts.map +1 -0
  40. package/dist/generate/renderers/markdown.js +6 -0
  41. package/dist/generate/renderers/markdown.js.map +1 -0
  42. package/dist/generate/renderers/opencode.d.ts +3 -0
  43. package/dist/generate/renderers/opencode.d.ts.map +1 -0
  44. package/dist/generate/renderers/opencode.js +69 -0
  45. package/dist/generate/renderers/opencode.js.map +1 -0
  46. package/dist/generate/sync.d.ts +4 -0
  47. package/dist/generate/sync.d.ts.map +1 -0
  48. package/dist/generate/sync.js +60 -0
  49. package/dist/generate/sync.js.map +1 -0
  50. package/dist/generate/types.d.ts +74 -0
  51. package/dist/generate/types.d.ts.map +1 -0
  52. package/dist/generate/types.js +2 -0
  53. package/dist/generate/types.js.map +1 -0
  54. package/dist/index.d.ts +4 -0
  55. package/dist/index.d.ts.map +1 -0
  56. package/dist/index.js +2 -0
  57. package/dist/index.js.map +1 -0
  58. package/dist/mcp/definitions/artifact.d.ts +20 -0
  59. package/dist/mcp/definitions/artifact.d.ts.map +1 -0
  60. package/dist/mcp/definitions/artifact.js +14 -0
  61. package/dist/mcp/definitions/artifact.js.map +1 -0
  62. package/dist/mcp/definitions/history.d.ts +20 -0
  63. package/dist/mcp/definitions/history.d.ts.map +1 -0
  64. package/dist/mcp/definitions/history.js +18 -0
  65. package/dist/mcp/definitions/history.js.map +1 -0
  66. package/dist/mcp/definitions/index.d.ts +276 -0
  67. package/dist/mcp/definitions/index.d.ts.map +1 -0
  68. package/dist/mcp/definitions/index.js +16 -0
  69. package/dist/mcp/definitions/index.js.map +1 -0
  70. package/dist/mcp/definitions/plan.d.ts +111 -0
  71. package/dist/mcp/definitions/plan.d.ts.map +1 -0
  72. package/dist/mcp/definitions/plan.js +89 -0
  73. package/dist/mcp/definitions/plan.js.map +1 -0
  74. package/dist/mcp/definitions/task.d.ts +138 -0
  75. package/dist/mcp/definitions/task.d.ts.map +1 -0
  76. package/dist/mcp/definitions/task.js +78 -0
  77. package/dist/mcp/definitions/task.js.map +1 -0
  78. package/dist/mcp/handlers/artifact.d.ts.map +1 -0
  79. package/dist/mcp/handlers/artifact.js +42 -0
  80. package/dist/mcp/handlers/artifact.js.map +1 -0
  81. package/dist/mcp/handlers/history.d.ts.map +1 -0
  82. package/dist/mcp/handlers/history.js +35 -0
  83. package/dist/mcp/handlers/history.js.map +1 -0
  84. package/dist/mcp/handlers/plan.d.ts.map +1 -0
  85. package/dist/mcp/handlers/plan.js +324 -0
  86. package/dist/mcp/handlers/plan.js.map +1 -0
  87. package/dist/mcp/handlers/task.d.ts.map +1 -0
  88. package/dist/mcp/handlers/task.js +216 -0
  89. package/dist/mcp/handlers/task.js.map +1 -0
  90. package/dist/{src/mcp → mcp}/server.d.ts +1 -1
  91. package/dist/mcp/server.d.ts.map +1 -0
  92. package/dist/mcp/server.js +58 -0
  93. package/dist/mcp/server.js.map +1 -0
  94. package/dist/shared/json-store.d.ts.map +1 -0
  95. package/dist/{src/shared → shared}/json-store.js +5 -4
  96. package/dist/shared/json-store.js.map +1 -0
  97. package/dist/shared/mcp-utils.d.ts.map +1 -0
  98. package/dist/shared/mcp-utils.js.map +1 -0
  99. package/dist/{src/shared → shared}/paths.d.ts +0 -4
  100. package/dist/shared/paths.d.ts.map +1 -0
  101. package/dist/shared/paths.js +62 -0
  102. package/dist/shared/paths.js.map +1 -0
  103. package/dist/shared/register-tool.d.ts +20 -0
  104. package/dist/shared/register-tool.d.ts.map +1 -0
  105. package/dist/shared/register-tool.js +15 -0
  106. package/dist/shared/register-tool.js.map +1 -0
  107. package/dist/{src/types → types}/state.d.ts +65 -65
  108. package/dist/types/state.d.ts.map +1 -0
  109. package/dist/{src/types → types}/state.js +1 -1
  110. package/dist/types/state.js.map +1 -0
  111. package/harness/claude/agent-rules.yml +21 -0
  112. package/harness/claude/invocations.yml +11 -0
  113. package/harness/claude/layout.yml +3 -0
  114. package/harness/codex/agent-rules.yml +28 -0
  115. package/harness/codex/invocations.yml +13 -0
  116. package/harness/codex/layout.yml +3 -0
  117. package/harness/opencode/agent-rules.yml +18 -0
  118. package/harness/opencode/invocations.yml +12 -0
  119. package/harness/opencode/layout.yml +3 -0
  120. package/package.json +38 -43
  121. package/{assets → spec}/agents/architect/body.ko.md +92 -84
  122. package/spec/agents/architect/body.md +185 -0
  123. package/spec/agents/designer/body.ko.md +330 -0
  124. package/spec/agents/designer/body.md +330 -0
  125. package/spec/agents/engineer/body.ko.md +166 -0
  126. package/spec/agents/engineer/body.md +166 -0
  127. package/spec/agents/lead/body.ko.md +276 -0
  128. package/spec/agents/lead/body.md +276 -0
  129. package/{assets → spec}/agents/postdoc/body.ko.md +116 -46
  130. package/spec/agents/postdoc/body.md +192 -0
  131. package/{assets → spec}/agents/researcher/body.ko.md +131 -45
  132. package/spec/agents/researcher/body.md +223 -0
  133. package/spec/agents/reviewer/body.ko.md +219 -0
  134. package/spec/agents/reviewer/body.md +219 -0
  135. package/{assets → spec}/agents/strategist/body.ko.md +108 -35
  136. package/spec/agents/strategist/body.md +187 -0
  137. package/spec/agents/tester/body.ko.md +272 -0
  138. package/spec/agents/tester/body.md +272 -0
  139. package/{assets → spec}/agents/writer/body.ko.md +109 -33
  140. package/spec/agents/writer/body.md +198 -0
  141. package/spec/skills/nx-auto-plan/body.ko.md +150 -0
  142. package/spec/skills/nx-auto-plan/body.md +150 -0
  143. package/spec/skills/nx-plan/body.ko.md +159 -0
  144. package/spec/skills/nx-plan/body.md +159 -0
  145. package/spec/skills/nx-run/body.ko.md +132 -0
  146. package/spec/skills/nx-run/body.md +132 -0
  147. package/vocabulary/enums/task-register-state.yml +4 -0
  148. package/vocabulary/invocations.yml +43 -0
  149. package/assets/agents/architect/body.md +0 -177
  150. package/assets/agents/designer/body.ko.md +0 -125
  151. package/assets/agents/designer/body.md +0 -125
  152. package/assets/agents/engineer/body.ko.md +0 -106
  153. package/assets/agents/engineer/body.md +0 -106
  154. package/assets/agents/lead/body.ko.md +0 -70
  155. package/assets/agents/lead/body.md +0 -70
  156. package/assets/agents/postdoc/body.md +0 -122
  157. package/assets/agents/researcher/body.md +0 -137
  158. package/assets/agents/reviewer/body.ko.md +0 -138
  159. package/assets/agents/reviewer/body.md +0 -138
  160. package/assets/agents/strategist/body.md +0 -116
  161. package/assets/agents/tester/body.ko.md +0 -195
  162. package/assets/agents/tester/body.md +0 -195
  163. package/assets/agents/writer/body.md +0 -122
  164. package/assets/capability-matrix.yml +0 -198
  165. package/assets/hooks/agent-bootstrap/handler.test.ts +0 -368
  166. package/assets/hooks/agent-bootstrap/handler.ts +0 -119
  167. package/assets/hooks/agent-bootstrap/meta.yml +0 -10
  168. package/assets/hooks/agent-finalize/handler.test.ts +0 -368
  169. package/assets/hooks/agent-finalize/handler.ts +0 -76
  170. package/assets/hooks/agent-finalize/meta.yml +0 -10
  171. package/assets/hooks/capability-matrix.yml +0 -313
  172. package/assets/hooks/post-tool-telemetry/handler.test.ts +0 -302
  173. package/assets/hooks/post-tool-telemetry/handler.ts +0 -49
  174. package/assets/hooks/post-tool-telemetry/meta.yml +0 -11
  175. package/assets/hooks/prompt-router/handler.test.ts +0 -801
  176. package/assets/hooks/prompt-router/handler.ts +0 -272
  177. package/assets/hooks/prompt-router/meta.yml +0 -11
  178. package/assets/hooks/session-init/handler.test.ts +0 -274
  179. package/assets/hooks/session-init/handler.ts +0 -30
  180. package/assets/hooks/session-init/meta.yml +0 -9
  181. package/assets/lsp-servers.json +0 -55
  182. package/assets/schema/lsp-servers.schema.json +0 -67
  183. package/assets/skills/nx-init/body.ko.md +0 -197
  184. package/assets/skills/nx-init/body.md +0 -197
  185. package/assets/skills/nx-plan/body.ko.md +0 -361
  186. package/assets/skills/nx-plan/body.md +0 -361
  187. package/assets/skills/nx-run/body.ko.md +0 -161
  188. package/assets/skills/nx-run/body.md +0 -160
  189. package/assets/skills/nx-sync/body.ko.md +0 -92
  190. package/assets/skills/nx-sync/body.md +0 -92
  191. package/assets/tools/tool-name-map.yml +0 -353
  192. package/dist/assets/hooks/agent-bootstrap/handler.d.ts +0 -4
  193. package/dist/assets/hooks/agent-bootstrap/handler.d.ts.map +0 -1
  194. package/dist/assets/hooks/agent-bootstrap/handler.js +0 -100
  195. package/dist/assets/hooks/agent-bootstrap/handler.js.map +0 -1
  196. package/dist/assets/hooks/agent-finalize/handler.d.ts +0 -4
  197. package/dist/assets/hooks/agent-finalize/handler.d.ts.map +0 -1
  198. package/dist/assets/hooks/agent-finalize/handler.js +0 -63
  199. package/dist/assets/hooks/agent-finalize/handler.js.map +0 -1
  200. package/dist/assets/hooks/post-tool-telemetry/handler.d.ts +0 -4
  201. package/dist/assets/hooks/post-tool-telemetry/handler.d.ts.map +0 -1
  202. package/dist/assets/hooks/post-tool-telemetry/handler.js +0 -40
  203. package/dist/assets/hooks/post-tool-telemetry/handler.js.map +0 -1
  204. package/dist/assets/hooks/prompt-router/handler.d.ts +0 -4
  205. package/dist/assets/hooks/prompt-router/handler.d.ts.map +0 -1
  206. package/dist/assets/hooks/prompt-router/handler.js +0 -214
  207. package/dist/assets/hooks/prompt-router/handler.js.map +0 -1
  208. package/dist/assets/hooks/session-init/handler.d.ts +0 -4
  209. package/dist/assets/hooks/session-init/handler.d.ts.map +0 -1
  210. package/dist/assets/hooks/session-init/handler.js +0 -23
  211. package/dist/assets/hooks/session-init/handler.js.map +0 -1
  212. package/dist/claude/.claude-plugin/marketplace.json +0 -75
  213. package/dist/claude/.claude-plugin/plugin.json +0 -67
  214. package/dist/claude/agents/architect.md +0 -172
  215. package/dist/claude/agents/designer.md +0 -120
  216. package/dist/claude/agents/engineer.md +0 -98
  217. package/dist/claude/agents/lead.md +0 -59
  218. package/dist/claude/agents/postdoc.md +0 -117
  219. package/dist/claude/agents/researcher.md +0 -132
  220. package/dist/claude/agents/reviewer.md +0 -133
  221. package/dist/claude/agents/strategist.md +0 -111
  222. package/dist/claude/agents/tester.md +0 -190
  223. package/dist/claude/agents/writer.md +0 -114
  224. package/dist/claude/dist/hooks/agent-bootstrap.js +0 -121
  225. package/dist/claude/dist/hooks/agent-finalize.js +0 -180
  226. package/dist/claude/dist/hooks/prompt-router.js +0 -7336
  227. package/dist/claude/dist/hooks/session-init.js +0 -37
  228. package/dist/claude/hooks/hooks.json +0 -52
  229. package/dist/claude/settings.json +0 -3
  230. package/dist/claude/skills/nx-init/SKILL.md +0 -189
  231. package/dist/claude/skills/nx-plan/SKILL.md +0 -353
  232. package/dist/claude/skills/nx-run/SKILL.md +0 -154
  233. package/dist/claude/skills/nx-sync/SKILL.md +0 -87
  234. package/dist/codex/agents/architect.toml +0 -175
  235. package/dist/codex/agents/designer.toml +0 -123
  236. package/dist/codex/agents/engineer.toml +0 -105
  237. package/dist/codex/agents/lead.toml +0 -64
  238. package/dist/codex/agents/postdoc.toml +0 -120
  239. package/dist/codex/agents/researcher.toml +0 -136
  240. package/dist/codex/agents/reviewer.toml +0 -137
  241. package/dist/codex/agents/strategist.toml +0 -114
  242. package/dist/codex/agents/tester.toml +0 -194
  243. package/dist/codex/agents/writer.toml +0 -121
  244. package/dist/codex/dist/hooks/agent-bootstrap.js +0 -121
  245. package/dist/codex/dist/hooks/agent-finalize.js +0 -180
  246. package/dist/codex/dist/hooks/prompt-router.js +0 -7336
  247. package/dist/codex/dist/hooks/session-init.js +0 -37
  248. package/dist/codex/hooks/hooks.json +0 -28
  249. package/dist/codex/install/AGENTS.fragment.md +0 -60
  250. package/dist/codex/install/config.fragment.toml +0 -5
  251. package/dist/codex/install/install.sh +0 -60
  252. package/dist/codex/package.json +0 -20
  253. package/dist/codex/plugin/.codex-plugin/plugin.json +0 -57
  254. package/dist/codex/plugin/skills/nx-init/SKILL.md +0 -189
  255. package/dist/codex/plugin/skills/nx-plan/SKILL.md +0 -353
  256. package/dist/codex/plugin/skills/nx-run/SKILL.md +0 -154
  257. package/dist/codex/plugin/skills/nx-sync/SKILL.md +0 -87
  258. package/dist/codex/prompts/architect.md +0 -166
  259. package/dist/codex/prompts/designer.md +0 -114
  260. package/dist/codex/prompts/engineer.md +0 -97
  261. package/dist/codex/prompts/lead.md +0 -60
  262. package/dist/codex/prompts/postdoc.md +0 -111
  263. package/dist/codex/prompts/researcher.md +0 -127
  264. package/dist/codex/prompts/reviewer.md +0 -128
  265. package/dist/codex/prompts/strategist.md +0 -105
  266. package/dist/codex/prompts/tester.md +0 -185
  267. package/dist/codex/prompts/writer.md +0 -113
  268. package/dist/hooks/agent-bootstrap.js +0 -121
  269. package/dist/hooks/agent-finalize.js +0 -180
  270. package/dist/hooks/prompt-router.js +0 -7336
  271. package/dist/hooks/session-init.js +0 -37
  272. package/dist/manifests/claude-hooks.json +0 -52
  273. package/dist/manifests/codex-hooks.json +0 -28
  274. package/dist/manifests/opencode-manifest.json +0 -44
  275. package/dist/manifests/portability-report.json +0 -87
  276. package/dist/opencode/.opencode/skills/nx-init/SKILL.md +0 -189
  277. package/dist/opencode/.opencode/skills/nx-plan/SKILL.md +0 -353
  278. package/dist/opencode/.opencode/skills/nx-run/SKILL.md +0 -154
  279. package/dist/opencode/.opencode/skills/nx-sync/SKILL.md +0 -87
  280. package/dist/opencode/package.json +0 -23
  281. package/dist/opencode/src/agents/architect.ts +0 -176
  282. package/dist/opencode/src/agents/designer.ts +0 -124
  283. package/dist/opencode/src/agents/engineer.ts +0 -105
  284. package/dist/opencode/src/agents/lead.ts +0 -66
  285. package/dist/opencode/src/agents/postdoc.ts +0 -121
  286. package/dist/opencode/src/agents/researcher.ts +0 -136
  287. package/dist/opencode/src/agents/reviewer.ts +0 -137
  288. package/dist/opencode/src/agents/strategist.ts +0 -115
  289. package/dist/opencode/src/agents/tester.ts +0 -194
  290. package/dist/opencode/src/agents/writer.ts +0 -121
  291. package/dist/opencode/src/index.ts +0 -25
  292. package/dist/opencode/src/plugin.ts +0 -6
  293. package/dist/scripts/build-agents.d.ts +0 -164
  294. package/dist/scripts/build-agents.d.ts.map +0 -1
  295. package/dist/scripts/build-agents.js +0 -890
  296. package/dist/scripts/build-agents.js.map +0 -1
  297. package/dist/scripts/build-hooks.d.ts +0 -57
  298. package/dist/scripts/build-hooks.d.ts.map +0 -1
  299. package/dist/scripts/build-hooks.js +0 -555
  300. package/dist/scripts/build-hooks.js.map +0 -1
  301. package/dist/scripts/cli.d.ts +0 -54
  302. package/dist/scripts/cli.d.ts.map +0 -1
  303. package/dist/scripts/cli.js +0 -504
  304. package/dist/scripts/cli.js.map +0 -1
  305. package/dist/scripts/smoke/smoke-claude.d.ts +0 -2
  306. package/dist/scripts/smoke/smoke-claude.d.ts.map +0 -1
  307. package/dist/scripts/smoke/smoke-claude.js +0 -58
  308. package/dist/scripts/smoke/smoke-claude.js.map +0 -1
  309. package/dist/scripts/smoke/smoke-codex.d.ts +0 -2
  310. package/dist/scripts/smoke/smoke-codex.d.ts.map +0 -1
  311. package/dist/scripts/smoke/smoke-codex.js +0 -50
  312. package/dist/scripts/smoke/smoke-codex.js.map +0 -1
  313. package/dist/scripts/smoke/smoke-consumer.d.ts +0 -2
  314. package/dist/scripts/smoke/smoke-consumer.d.ts.map +0 -1
  315. package/dist/scripts/smoke/smoke-consumer.js +0 -80
  316. package/dist/scripts/smoke/smoke-consumer.js.map +0 -1
  317. package/dist/scripts/smoke/smoke-opencode.d.ts +0 -2
  318. package/dist/scripts/smoke/smoke-opencode.d.ts.map +0 -1
  319. package/dist/scripts/smoke/smoke-opencode.js +0 -99
  320. package/dist/scripts/smoke/smoke-opencode.js.map +0 -1
  321. package/dist/src/hooks/opencode-mount.d.ts +0 -35
  322. package/dist/src/hooks/opencode-mount.d.ts.map +0 -1
  323. package/dist/src/hooks/opencode-mount.js +0 -352
  324. package/dist/src/hooks/opencode-mount.js.map +0 -1
  325. package/dist/src/hooks/runtime.d.ts +0 -37
  326. package/dist/src/hooks/runtime.d.ts.map +0 -1
  327. package/dist/src/hooks/runtime.js +0 -274
  328. package/dist/src/hooks/runtime.js.map +0 -1
  329. package/dist/src/hooks/types.d.ts +0 -196
  330. package/dist/src/hooks/types.d.ts.map +0 -1
  331. package/dist/src/hooks/types.js +0 -85
  332. package/dist/src/hooks/types.js.map +0 -1
  333. package/dist/src/lsp/cache.d.ts +0 -9
  334. package/dist/src/lsp/cache.d.ts.map +0 -1
  335. package/dist/src/lsp/cache.js +0 -216
  336. package/dist/src/lsp/cache.js.map +0 -1
  337. package/dist/src/lsp/client.d.ts +0 -24
  338. package/dist/src/lsp/client.d.ts.map +0 -1
  339. package/dist/src/lsp/client.js +0 -166
  340. package/dist/src/lsp/client.js.map +0 -1
  341. package/dist/src/lsp/detect.d.ts +0 -77
  342. package/dist/src/lsp/detect.d.ts.map +0 -1
  343. package/dist/src/lsp/detect.js +0 -116
  344. package/dist/src/lsp/detect.js.map +0 -1
  345. package/dist/src/mcp/server.d.ts.map +0 -1
  346. package/dist/src/mcp/server.js +0 -34
  347. package/dist/src/mcp/server.js.map +0 -1
  348. package/dist/src/mcp/tools/artifact.d.ts.map +0 -1
  349. package/dist/src/mcp/tools/artifact.js +0 -36
  350. package/dist/src/mcp/tools/artifact.js.map +0 -1
  351. package/dist/src/mcp/tools/history.d.ts.map +0 -1
  352. package/dist/src/mcp/tools/history.js +0 -29
  353. package/dist/src/mcp/tools/history.js.map +0 -1
  354. package/dist/src/mcp/tools/lsp.d.ts +0 -13
  355. package/dist/src/mcp/tools/lsp.d.ts.map +0 -1
  356. package/dist/src/mcp/tools/lsp.js +0 -225
  357. package/dist/src/mcp/tools/lsp.js.map +0 -1
  358. package/dist/src/mcp/tools/plan.d.ts.map +0 -1
  359. package/dist/src/mcp/tools/plan.js +0 -317
  360. package/dist/src/mcp/tools/plan.js.map +0 -1
  361. package/dist/src/mcp/tools/task.d.ts.map +0 -1
  362. package/dist/src/mcp/tools/task.js +0 -252
  363. package/dist/src/mcp/tools/task.js.map +0 -1
  364. package/dist/src/shared/invocations.d.ts +0 -74
  365. package/dist/src/shared/invocations.d.ts.map +0 -1
  366. package/dist/src/shared/invocations.js +0 -247
  367. package/dist/src/shared/invocations.js.map +0 -1
  368. package/dist/src/shared/json-store.d.ts.map +0 -1
  369. package/dist/src/shared/json-store.js.map +0 -1
  370. package/dist/src/shared/mcp-utils.d.ts.map +0 -1
  371. package/dist/src/shared/mcp-utils.js.map +0 -1
  372. package/dist/src/shared/package-root.d.ts +0 -6
  373. package/dist/src/shared/package-root.d.ts.map +0 -1
  374. package/dist/src/shared/package-root.js +0 -19
  375. package/dist/src/shared/package-root.js.map +0 -1
  376. package/dist/src/shared/paths.d.ts.map +0 -1
  377. package/dist/src/shared/paths.js +0 -81
  378. package/dist/src/shared/paths.js.map +0 -1
  379. package/dist/src/shared/tool-log.d.ts +0 -8
  380. package/dist/src/shared/tool-log.d.ts.map +0 -1
  381. package/dist/src/shared/tool-log.js +0 -22
  382. package/dist/src/shared/tool-log.js.map +0 -1
  383. package/dist/src/types/agent-config.d.ts +0 -22
  384. package/dist/src/types/agent-config.d.ts.map +0 -1
  385. package/dist/src/types/agent-config.js +0 -2
  386. package/dist/src/types/agent-config.js.map +0 -1
  387. package/dist/src/types/index.d.ts +0 -2
  388. package/dist/src/types/index.d.ts.map +0 -1
  389. package/dist/src/types/index.js +0 -2
  390. package/dist/src/types/index.js.map +0 -1
  391. package/dist/src/types/state.d.ts.map +0 -1
  392. package/dist/src/types/state.js.map +0 -1
  393. package/docs/consuming/codex-lead-merge.md +0 -106
  394. package/docs/contract/harness-io.md +0 -333
  395. package/docs/plugin-guide.md +0 -355
  396. package/docs/plugin-template/claude/.github/workflows/build.yml +0 -60
  397. package/docs/plugin-template/claude/README.md +0 -110
  398. package/docs/plugin-template/claude/package.json +0 -16
  399. package/docs/plugin-template/codex/.github/workflows/build.yml +0 -51
  400. package/docs/plugin-template/codex/README.md +0 -147
  401. package/docs/plugin-template/codex/install/install.sh +0 -60
  402. package/docs/plugin-template/codex/package.json +0 -17
  403. package/docs/plugin-template/opencode/.github/workflows/build.yml +0 -61
  404. package/docs/plugin-template/opencode/README.md +0 -121
  405. package/docs/plugin-template/opencode/package.json +0 -25
  406. package/docs/plugin-template/opencode/src/plugin.ts +0 -6
  407. /package/dist/{src/mcp/tools → mcp/handlers}/artifact.d.ts +0 -0
  408. /package/dist/{src/mcp/tools → mcp/handlers}/history.d.ts +0 -0
  409. /package/dist/{src/mcp/tools → mcp/handlers}/plan.d.ts +0 -0
  410. /package/dist/{src/mcp/tools → mcp/handlers}/task.d.ts +0 -0
  411. /package/dist/{src/shared → shared}/json-store.d.ts +0 -0
  412. /package/dist/{src/shared → shared}/mcp-utils.d.ts +0 -0
  413. /package/dist/{src/shared → shared}/mcp-utils.js +0 -0
package/README.md CHANGED
@@ -1,106 +1,140 @@
1
- # nexus-core
1
+ # @moreih29/nexus-core
2
2
 
3
- 3 하네스(Claude Code, OpenCode, Codex)의 Nexus 플러그인을 위한 공통 라이브러리.
4
- 에이전트 조율 계층, 공통 빌드 도구, MCP 서버, 스킬·훅 자산을 단일 패키지로 제공합니다.
3
+ Claude Code · Codex · OpenCode 하네스 위에서 멀티 에이전트 오케스트레이션을 돌리기 위한 canonical 스펙과 도구.
5
4
 
6
- ## 제공하는 것
5
+ ## 무엇인가
7
6
 
8
- 1. **에이전트 조율 계층** HOW / DO / CHECK 분류 + Lead 주재 (10 에이전트)
9
- 2. **공통 빌드 도구** — `nexus-core sync` / `init` / `validate` CLI
10
- 3. **MCP 서버** — 14개 도구를 stdio 서버로 제공 (`nexus-mcp`)
11
- 4. **하네스별 자산** — 스킬·훅·에이전트 정의, capability-matrix SSOT
7
+ `nexus-core`는 "Lead가 역할별 서브에이전트를 조합해 plan run 사이클을 돌리는" 에이전트 오케스트레이션 모델을 하네스(Claude Code, Codex, OpenCode)에서 동일하게 구현하도록 뒷받침한다. 핵심은 세 축이다.
12
8
 
13
- ## 제공하지 않는
9
+ 1. **Canonical 스펙** — 10개 에이전트와 3개 스킬의 하네스 중립 정의
10
+ 2. **Sync 파이프라인** (`nexus-sync`) — 스펙을 각 하네스 네이티브 포맷으로 렌더링
11
+ 3. **MCP 서버** (`nexus-mcp`) — 플래닝·태스크·이력·아티팩트 상태 관리 도구 노출
14
12
 
15
- 실제 플러그인 빌드 배포는 개별 하네스 플러그인 repo의 책임입니다.
13
+ 제공하지 않는 런타임, 메인 세션 와이어링, 플러그인 설치 스크립트, 하네스 부트스트랩. 이들은 컨슈머(각 하네스용 플러그인·저장소)가 `nexus-core` 산출물을 받아 자체 구현한다.
16
14
 
17
- ---
18
-
19
- ## Installation
20
-
21
- **요구사항: Node.js 22 이상** (`import ... with { type: "json" }` 구문이 Node 22에서 stable입니다.)
15
+ ## 설치
22
16
 
23
17
  ```bash
24
- node --version # v22.0.0 이상 확인
25
- bun add -D @moreih29/nexus-core
18
+ npm install @moreih29/nexus-core
19
+ # 또는
20
+ bun add @moreih29/nexus-core
26
21
  ```
27
22
 
28
- 전역 설치 시 `nexus-core` CLI와 `nexus-mcp` MCP 서버가 PATH에 추가됩니다.
23
+ 패키지는 다음을 번들한다.
29
24
 
30
- ```bash
31
- bun add -g @moreih29/nexus-core
32
- nexus-core --help
25
+ ```
26
+ node_modules/@moreih29/nexus-core/
27
+ ├── spec/ # canonical 에이전트·스킬 정의
28
+ ├── vocabulary/ # 도구 호출식 스키마
29
+ ├── harness/ # 하네스별 invocations + layout
30
+ └── dist/ # 빌드 산출물 (MCP 서버, sync CLI)
33
31
  ```
34
32
 
35
- ---
33
+ 바이너리: `nexus-sync`, `nexus-mcp`. 프로그램적 API: `@moreih29/nexus-core/generate`, `@moreih29/nexus-core/mcp`.
36
34
 
37
- ## Quick Start
35
+ ## 하네스 컨슈머가 해야 할 세 가지
38
36
 
39
- 플러그인 repo를 시작하는 기본 흐름입니다.
37
+ ### 1. 에이전트·스킬 아티팩트 생성
40
38
 
41
39
  ```bash
42
- # 1. 플러그인 스캐폴드 생성
43
- bunx @moreih29/nexus-core init --harness=claude --target=./my-claude-plugin
40
+ nexus-sync --harness=claude --target=./out/claude
41
+ nexus-sync --harness=codex --target=./out/codex
42
+ nexus-sync --harness=opencode --target=./out/opencode
43
+ ```
44
44
 
45
- # 2. 의존성 설치 자산 동기화
46
- cd my-claude-plugin && bun install
47
- bunx @moreih29/nexus-core sync --harness=claude --target=./
45
+ `--target` 아래 하네스 레이아웃대로 파일이 생성된다.
48
46
 
49
- # 3. 변경 사항 확인 커밋
50
- bunx @moreih29/nexus-core sync --harness=claude --target=./ --dry-run
51
- git add . && git commit -m "Initial plugin scaffold"
52
- ```
47
+ | 하네스 | 에이전트 출력 | 스킬 출력 |
48
+ |---|---|---|
49
+ | `claude` | `agents/{id}.md` | `skills/{id}/SKILL.md` |
50
+ | `codex` | `.codex/agents/{id}.toml` | `.codex/skills/{id}/SKILL.md` |
51
+ | `opencode` | `src/agents/{id}.ts` | `skills/{id}/SKILL.md` |
53
52
 
54
- 전체 흐름과 하네스별 install 구현 가이드는 [`docs/plugin-guide.md`](./docs/plugin-guide.md)를 참조하세요.
53
+ 생성된 lead를 메인 세션에 어떻게 연결할지는 하네스마다 다르며 컨슈머의 몫이다. 상세는 [docs/agent-skill-sync.md](docs/agent-skill-sync.md).
55
54
 
56
- ---
55
+ ### 2. MCP 서버 등록
57
56
 
58
- ## Documentation
57
+ 하네스의 MCP 설정에 `nexus-mcp` 명령을 등록한다. 전송 방식은 stdio, 서버 이름은 `nexus-core`.
59
58
 
60
- | 문서 | 내용 |
59
+ | 도구 그룹 | 용도 |
61
60
  |---|---|
62
- | [`docs/plugin-guide.md`](./docs/plugin-guide.md) | 플러그인 저자용 end-to-end 통합 가이드 (sync · init · 하네스별 install · Lead 주입) |
63
- | [`docs/consuming/`](./docs/consuming/) | 컨슈머 구현 가이드 (Claude · OpenCode · Codex 설치 절차) |
64
- | [`docs/consuming/codex-lead-merge.md`](./docs/consuming/codex-lead-merge.md) | Codex AGENTS.md 수동 머지 절차 |
65
- | [`.nexus/context/architecture.md`](./.nexus/context/architecture.md) | 패키지 구조 · 빌드 파이프라인 · Lead vs Hook 책임 경계 |
61
+ | `nx_plan_*` | 플래닝 세션 수명주기 |
62
+ | `nx_task_*` | 태스크 수명주기 |
63
+ | `nx_history_search` | 과거 사이클 조회 |
64
+ | `nx_artifact_write` | 아티팩트 쓰기 |
66
65
 
67
- ---
66
+ MCP 서버는 컨슈머 프로젝트 루트 기준 `.nexus/state/`와 `.nexus/history.json`만 읽고 쓴다. 상세는 [docs/mcp-server-tools.md](docs/mcp-server-tools.md).
68
67
 
69
- ## Consumer 통합 가이드
68
+ ### 3. 와이어링
70
69
 
71
- ### 서브패스 경유 정책
70
+ Nexus 런타임이 기대하는 세 가지 역할을 각 하네스에서 와이어링한다.
72
71
 
73
- `@moreih29/nexus-core`의 bare import(`import "@moreih29/nexus-core"`)는 의도적으로 비활성화되어 있습니다 (`"."` export = `null`). 모든 기능은 서브패스를 통해 접근해야 합니다.
72
+ 1. 세션 진입 시 `.nexus/` 폴더 구조와 `.gitignore` 화이트리스트 보장
73
+ 2. 사용자 프롬프트에서 Nexus 태그(`[plan]`·`[auto-plan]`·`[run]`·`[m]`·`[m:gc]`) 감지해 스킬/지시 활성화
74
+ 3. (선택) Nexus 규칙 위반 Bash 명령 차단
74
75
 
75
- | 서브패스 | 노출 내용 |
76
- |---|---|
77
- | `@moreih29/nexus-core/hooks/opencode-mount` | `mountHooks` 함수 |
78
- | `@moreih29/nexus-core/hooks/runtime` | 런타임 유틸리티 |
79
- | `@moreih29/nexus-core/hooks/opencode-manifest` | OpenCode hook JSON manifest |
76
+ 하네스별 권장 훅과 이벤트 매핑은 [docs/harness-hooks.md](docs/harness-hooks.md).
80
77
 
81
- ### OpenCode 플러그인 thin-wrapper 예제
78
+ ## 에이전트 모델
82
79
 
83
- OpenCode 플러그인을 구축하는 가장 간단한 패턴은 다음과 같습니다.
80
+ 카테고리로 역할이 분리된다.
84
81
 
85
- ```typescript
86
- import type { Plugin } from "@opencode-ai/plugin";
87
- import { mountHooks } from "@moreih29/nexus-core/hooks/opencode-mount";
88
- import manifest from "@moreih29/nexus-core/hooks/opencode-manifest" with { type: "json" };
82
+ | 카테고리 | 역할 | 에이전트 |
83
+ |---|---|---|
84
+ | HOW | 기술 설계·분석·전략 자문 | architect, designer, postdoc, strategist |
85
+ | DO | 실행 | engineer, writer, researcher |
86
+ | CHECK | 검증 | reviewer, tester |
89
87
 
90
- export const OpencodeNexus: Plugin = async (ctx) => mountHooks(ctx, manifest);
91
- ```
88
+ `lead`는 메인 세션에서 사용자와 대화하고, 서브에이전트를 조합하며, plan/task 수명주기를 주도한다. 재개가 필요한 시점에 스폰 때 받은 `agent_id`를 `nx_plan_analysis_add` / `nx_task_update`에 기록해두고, 나중에 `nx_plan_resume` / `nx_task_resume`로 되찾아 `{{subagent_resume}}`로 재개한다.
92
89
 
93
- - `manifest`는 `./hooks/opencode-manifest` 서브패스를 통해 JSON으로 임포트합니다. Node 22의 `import ... with { type: "json" }` 구문이 필요합니다.
94
- - `mountHooks(ctx, manifest)`는 manifest에 정의된 훅을 OpenCode context에 등록합니다.
90
+ ## 스킬과 태그
95
91
 
96
- 전체 하네스별 통합 절차는 [`docs/plugin-guide.md`](./docs/plugin-guide.md)를 참조하세요.
92
+ | 태그 | 스킬/동작 | 목적 |
93
+ |---|---|---|
94
+ | `[plan]` | nx-plan | 사용자 결정 중심의 구조적 분석 |
95
+ | `[auto-plan]` | nx-auto-plan | Lead 자율 결정 |
96
+ | `[run]` | nx-run | 태스크 실행 오케스트레이션 |
97
+ | `[d]` | 결정 기록 | 활성 plan 세션의 현재 안건에 `nx_plan_decide` |
98
+ | `[m]` | memory 저장 | `.nexus/memory/`에 누적 |
99
+ | `[m:gc]` | memory 정리 | `.nexus/memory/` 병합·제거 |
97
100
 
98
- ---
101
+ ## 도구 호출식
99
102
 
100
- ## Consumer 하네스
103
+ 스펙 본문에서 이중 중괄호 표기로 호출하는 도구. sync 시점에 각 하네스 네이티브 문법으로 확장된다.
101
104
 
102
- | 하네스 | 플러그인 repo |
105
+ | 호출식 | 용도 |
103
106
  |---|---|
104
- | Claude Code | claude-nexus |
105
- | OpenCode | opencode-nexus |
106
- | Codex | codex-nexus |
107
+ | `{{subagent_spawn}}` | 서브에이전트 스폰 |
108
+ | `{{subagent_resume}}` | 기존 서브에이전트 재개 |
109
+ | `{{skill_activation}}` | 스킬 활성화 |
110
+ | `{{task_register}}` | 태스크 진행 추적 등록 |
111
+ | `{{user_question}}` | 사용자에게 선택지 질문 |
112
+
113
+ 스키마는 `vocabulary/invocations.yml`, 하네스별 확장 템플릿은 `harness/<name>/invocations.yml`에 있다.
114
+
115
+ ## 파일 레이아웃 (컨슈머 프로젝트 기준)
116
+
117
+ ```
118
+ .nexus/
119
+ ├── .gitignore # 화이트리스트 — context, memory, history만 추적
120
+ ├── context/ # 설계 원칙·아키텍처
121
+ ├── memory/ # empirical-·external-·pattern- prefix 교훈
122
+ ├── state/
123
+ │ ├── plan.json # 현재 plan 세션
124
+ │ ├── tasks.json # 현재 태스크 목록
125
+ │ └── artifacts/ # 사이클 산출물
126
+ └── history.json # 종료된 사이클 아카이브
127
+ ```
128
+
129
+ - `state/*`·`history.json` — MCP 도구만 편집
130
+ - `context/`·`memory/` — Lead가 사용자 태그로 관리
131
+
132
+ ## 관련 문서
133
+
134
+ - [에이전트·스킬 명세 동기화](docs/agent-skill-sync.md)
135
+ - [MCP 서버 도구](docs/mcp-server-tools.md)
136
+ - [하네스 훅 권장](docs/harness-hooks.md)
137
+
138
+ ## 라이선스
139
+
140
+ MIT
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env bun
2
+ export declare function main(argv?: string[]): void;
3
+ //# sourceMappingURL=sync.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/cli/sync.ts"],"names":[],"mappings":";AAgDA,wBAAgB,IAAI,CAAC,IAAI,GAAE,MAAM,EAA0B,GAAG,IAAI,CAiBjE"}
@@ -0,0 +1,59 @@
1
+ #!/usr/bin/env bun
2
+ import { resolve } from "node:path";
3
+ import { syncSpecsToTarget } from "../generate/sync.js";
4
+ function parseArgs(argv) {
5
+ let harness = null;
6
+ let target = null;
7
+ let dryRun = false;
8
+ for (const arg of argv) {
9
+ if (arg === "--dry-run") {
10
+ dryRun = true;
11
+ continue;
12
+ }
13
+ if (arg.startsWith("--harness=")) {
14
+ const value = arg.slice("--harness=".length);
15
+ if (value === "claude" || value === "codex" || value === "opencode") {
16
+ harness = value;
17
+ continue;
18
+ }
19
+ throw new Error(`Unsupported harness "${value}"`);
20
+ }
21
+ if (arg.startsWith("--target=")) {
22
+ target = arg.slice("--target=".length);
23
+ }
24
+ }
25
+ if (!harness) {
26
+ throw new Error(`Missing required flag --harness=<claude|codex|opencode>`);
27
+ }
28
+ if (!target) {
29
+ throw new Error(`Missing required flag --target=<directory>`);
30
+ }
31
+ return {
32
+ harness,
33
+ target: resolve(target),
34
+ dryRun,
35
+ };
36
+ }
37
+ export function main(argv = process.argv.slice(2)) {
38
+ const parsed = parseArgs(argv);
39
+ const result = syncSpecsToTarget(parsed);
40
+ if (parsed.dryRun) {
41
+ console.log(`[nexus-sync] dry-run: ${result.files.length} files would be generated`);
42
+ for (const file of result.files) {
43
+ console.log(file.targetPath);
44
+ }
45
+ return;
46
+ }
47
+ console.log(`[nexus-sync] harness=${result.harness} wrote ${result.writtenFiles.length}/${result.files.length} files to ${result.targetRoot}`);
48
+ }
49
+ const isDirectRun = import.meta.url === `file://${process.argv[1]}`;
50
+ if (isDirectRun) {
51
+ try {
52
+ main();
53
+ }
54
+ catch (error) {
55
+ console.error("[nexus-sync] fatal:", error);
56
+ process.exit(1);
57
+ }
58
+ }
59
+ //# sourceMappingURL=sync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/cli/sync.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AASxD,SAAS,SAAS,CAAC,IAAc;IAC/B,IAAI,OAAO,GAAmB,IAAI,CAAC;IACnC,IAAI,MAAM,GAAkB,IAAI,CAAC;IACjC,IAAI,MAAM,GAAG,KAAK,CAAC;IAEnB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,GAAG,KAAK,WAAW,EAAE,CAAC;YACxB,MAAM,GAAG,IAAI,CAAC;YACd,SAAS;QACX,CAAC;QACD,IAAI,GAAG,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YACjC,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;YAC7C,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,UAAU,EAAE,CAAC;gBACpE,OAAO,GAAG,KAAK,CAAC;gBAChB,SAAS;YACX,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,wBAAwB,KAAK,GAAG,CAAC,CAAC;QACpD,CAAC;QACD,IAAI,GAAG,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YAChC,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QACzC,CAAC;IACH,CAAC;IAED,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;IAC7E,CAAC;IACD,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAChE,CAAC;IAED,OAAO;QACL,OAAO;QACP,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC;QACvB,MAAM;KACP,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,IAAI,CAAC,OAAiB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IACzD,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAC/B,MAAM,MAAM,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAEzC,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClB,OAAO,CAAC,GAAG,CACT,yBAAyB,MAAM,CAAC,KAAK,CAAC,MAAM,2BAA2B,CACxE,CAAC;QACF,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YAChC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC/B,CAAC;QACD,OAAO;IACT,CAAC;IAED,OAAO,CAAC,GAAG,CACT,wBAAwB,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,YAAY,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,aAAa,MAAM,CAAC,UAAU,EAAE,CAClI,CAAC;AACJ,CAAC;AAED,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,UAAU,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;AACpE,IAAI,WAAW,EAAE,CAAC;IAChB,IAAI,CAAC;QACH,IAAI,EAAE,CAAC;IACT,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,qBAAqB,EAAE,KAAK,CAAC,CAAC;QAC5C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { buildGeneratedFiles, syncSpecsToTarget } from "./sync.js";
2
+ export type { AssetKind, GeneratedFile, Harness, SpecDocument, SyncOptions, SyncResult, } from "./types.js";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/generate/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AACnE,YAAY,EACV,SAAS,EACT,aAAa,EACb,OAAO,EACP,YAAY,EACZ,WAAW,EACX,UAAU,GACX,MAAM,YAAY,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { buildGeneratedFiles, syncSpecsToTarget } from "./sync.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/generate/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { ClaudeAgentRules, CodexAgentRules, Harness, HarnessInvocationMap, HarnessLayout, InvocationSchema, OpencodeAgentRules } from "./types.js";
2
+ export declare function loadInvocationCatalog(): Map<string, InvocationSchema>;
3
+ export declare function loadHarnessInvocationMap(harness: Harness): HarnessInvocationMap["invocation_map"];
4
+ export declare function loadHarnessLayout(harness: Harness): HarnessLayout;
5
+ export declare function loadClaudeAgentRules(): ClaudeAgentRules;
6
+ export declare function loadCodexAgentRules(): CodexAgentRules;
7
+ export declare function loadOpencodeAgentRules(): OpencodeAgentRules;
8
+ //# sourceMappingURL=load-data.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"load-data.d.ts","sourceRoot":"","sources":["../../src/generate/load-data.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,gBAAgB,EAChB,eAAe,EAEf,OAAO,EACP,oBAAoB,EACpB,aAAa,EAEb,gBAAgB,EAChB,kBAAkB,EACnB,MAAM,YAAY,CAAC;AASpB,wBAAgB,qBAAqB,IAAI,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAyBrE;AAED,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,OAAO,GACf,oBAAoB,CAAC,gBAAgB,CAAC,CAKxC;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,aAAa,CAEjE;AAED,wBAAgB,oBAAoB,IAAI,gBAAgB,CAEvD;AAED,wBAAgB,mBAAmB,IAAI,eAAe,CAErD;AAED,wBAAgB,sBAAsB,IAAI,kBAAkB,CAE3D"}
@@ -0,0 +1,45 @@
1
+ import { readFileSync } from "node:fs";
2
+ import { join } from "node:path";
3
+ import { parse as parseYaml } from "yaml";
4
+ const PACKAGE_ROOT = new URL("../../", import.meta.url);
5
+ function readYamlFile(relativePath) {
6
+ const absolutePath = new URL(relativePath, PACKAGE_ROOT);
7
+ return parseYaml(readFileSync(absolutePath, "utf8"));
8
+ }
9
+ export function loadInvocationCatalog() {
10
+ const catalog = readYamlFile("vocabulary/invocations.yml");
11
+ const result = new Map();
12
+ for (const invocation of catalog.invocations) {
13
+ const params = {};
14
+ for (const [name, schema] of Object.entries(invocation.params)) {
15
+ const resolved = { ...schema };
16
+ if (schema.type === "enum" && schema.values_ref) {
17
+ const enumValues = readYamlFile(join("vocabulary", schema.values_ref));
18
+ resolved.values = enumValues.values;
19
+ }
20
+ params[name] = resolved;
21
+ }
22
+ result.set(invocation.id, {
23
+ id: invocation.id,
24
+ params,
25
+ });
26
+ }
27
+ return result;
28
+ }
29
+ export function loadHarnessInvocationMap(harness) {
30
+ const data = readYamlFile(`harness/${harness}/invocations.yml`);
31
+ return data.invocation_map;
32
+ }
33
+ export function loadHarnessLayout(harness) {
34
+ return readYamlFile(`harness/${harness}/layout.yml`);
35
+ }
36
+ export function loadClaudeAgentRules() {
37
+ return readYamlFile("harness/claude/agent-rules.yml");
38
+ }
39
+ export function loadCodexAgentRules() {
40
+ return readYamlFile("harness/codex/agent-rules.yml");
41
+ }
42
+ export function loadOpencodeAgentRules() {
43
+ return readYamlFile("harness/opencode/agent-rules.yml");
44
+ }
45
+ //# sourceMappingURL=load-data.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"load-data.js","sourceRoot":"","sources":["../../src/generate/load-data.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,MAAM,CAAC;AAa1C,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAExD,SAAS,YAAY,CAAI,YAAoB;IAC3C,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;IACzD,OAAO,SAAS,CAAC,YAAY,CAAC,YAAY,EAAE,MAAM,CAAC,CAAM,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,qBAAqB;IACnC,MAAM,OAAO,GAAG,YAAY,CAAoB,4BAA4B,CAAC,CAAC;IAC9E,MAAM,MAAM,GAAG,IAAI,GAAG,EAA4B,CAAC;IAEnD,KAAK,MAAM,UAAU,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;QAC7C,MAAM,MAAM,GAA+B,EAAE,CAAC;QAE9C,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YAC/D,MAAM,QAAQ,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC;YAC/B,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;gBAChD,MAAM,UAAU,GAAG,YAAY,CAC7B,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,UAAU,CAAC,CACtC,CAAC;gBACF,QAAQ,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;YACtC,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC;QAC1B,CAAC;QAED,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,EAAE;YACxB,EAAE,EAAE,UAAU,CAAC,EAAE;YACjB,MAAM;SACP,CAAC,CAAC;IACL,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,OAAgB;IAEhB,MAAM,IAAI,GAAG,YAAY,CACvB,WAAW,OAAO,kBAAkB,CACrC,CAAC;IACF,OAAO,IAAI,CAAC,cAAc,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,OAAgB;IAChD,OAAO,YAAY,CAAgB,WAAW,OAAO,aAAa,CAAC,CAAC;AACtE,CAAC;AAED,MAAM,UAAU,oBAAoB;IAClC,OAAO,YAAY,CAAmB,gCAAgC,CAAC,CAAC;AAC1E,CAAC;AAED,MAAM,UAAU,mBAAmB;IACjC,OAAO,YAAY,CAAkB,+BAA+B,CAAC,CAAC;AACxE,CAAC;AAED,MAAM,UAAU,sBAAsB;IACpC,OAAO,YAAY,CAAqB,kCAAkC,CAAC,CAAC;AAC9E,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { SpecDocument } from "./types.js";
2
+ export declare function loadSpecDocuments(): SpecDocument[];
3
+ //# sourceMappingURL=load-spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"load-spec.d.ts","sourceRoot":"","sources":["../../src/generate/load-spec.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAa,YAAY,EAAE,MAAM,YAAY,CAAC;AAuD1D,wBAAgB,iBAAiB,IAAI,YAAY,EAAE,CAElD"}
@@ -0,0 +1,48 @@
1
+ import { readdirSync, readFileSync } from "node:fs";
2
+ import { join } from "node:path";
3
+ import { parse as parseYaml } from "yaml";
4
+ const SPEC_ROOT = new URL("../../spec/", import.meta.url);
5
+ function parseFrontmatter(raw, sourcePath) {
6
+ if (!raw.startsWith("---\n")) {
7
+ throw new Error(`Missing frontmatter in ${sourcePath}`);
8
+ }
9
+ const end = raw.indexOf("\n---\n", 4);
10
+ if (end === -1) {
11
+ throw new Error(`Unterminated frontmatter in ${sourcePath}`);
12
+ }
13
+ const frontmatterRaw = raw.slice(4, end);
14
+ const body = raw.slice(end + 5).replace(/^\n/, "");
15
+ return {
16
+ frontmatter: parseYaml(frontmatterRaw),
17
+ body,
18
+ };
19
+ }
20
+ function loadKind(kind) {
21
+ const dir = new URL(`${kind}s/`, SPEC_ROOT);
22
+ const absoluteDir = dir.pathname;
23
+ const results = [];
24
+ for (const entry of readdirSync(absoluteDir, { withFileTypes: true })) {
25
+ if (!entry.isDirectory())
26
+ continue;
27
+ const sourcePath = join(absoluteDir, entry.name, "body.md");
28
+ const raw = readFileSync(sourcePath, "utf8");
29
+ const { frontmatter, body } = parseFrontmatter(raw, sourcePath);
30
+ const id = String(frontmatter.id ?? entry.name);
31
+ const name = String(frontmatter.name ?? id);
32
+ const description = String(frontmatter.description ?? "");
33
+ results.push({
34
+ kind,
35
+ id,
36
+ name,
37
+ description,
38
+ frontmatter,
39
+ body,
40
+ sourcePath,
41
+ });
42
+ }
43
+ return results.sort((a, b) => a.id.localeCompare(b.id));
44
+ }
45
+ export function loadSpecDocuments() {
46
+ return [...loadKind("agent"), ...loadKind("skill")];
47
+ }
48
+ //# sourceMappingURL=load-spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"load-spec.js","sourceRoot":"","sources":["../../src/generate/load-spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,MAAM,CAAC;AAG1C,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,aAAa,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAE1D,SAAS,gBAAgB,CACvB,GAAW,EACX,UAAkB;IAElB,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,0BAA0B,UAAU,EAAE,CAAC,CAAC;IAC1D,CAAC;IAED,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;IACtC,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,+BAA+B,UAAU,EAAE,CAAC,CAAC;IAC/D,CAAC;IAED,MAAM,cAAc,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACzC,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACnD,OAAO;QACL,WAAW,EAAE,SAAS,CAAC,cAAc,CAA4B;QACjE,IAAI;KACL,CAAC;AACJ,CAAC;AAED,SAAS,QAAQ,CAAC,IAAe;IAC/B,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,IAAI,EAAE,SAAS,CAAC,CAAC;IAC5C,MAAM,WAAW,GAAG,GAAG,CAAC,QAAQ,CAAC;IACjC,MAAM,OAAO,GAAmB,EAAE,CAAC;IAEnC,KAAK,MAAM,KAAK,IAAI,WAAW,CAAC,WAAW,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;QACtE,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE;YAAE,SAAS;QAEnC,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAC5D,MAAM,GAAG,GAAG,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QAC7C,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,gBAAgB,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;QAEhE,MAAM,EAAE,GAAG,MAAM,CAAC,WAAW,CAAC,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC;QAChD,MAAM,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;QAC5C,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC;QAE1D,OAAO,CAAC,IAAI,CAAC;YACX,IAAI;YACJ,EAAE;YACF,IAAI;YACJ,WAAW;YACX,WAAW;YACX,IAAI;YACJ,UAAU;SACX,CAAC,CAAC;IACL,CAAC;IAED,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC1D,CAAC;AAED,MAAM,UAAU,iBAAiB;IAC/B,OAAO,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,EAAE,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;AACtD,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { Harness, InvocationSchema } from "../types.js";
2
+ export declare function expandMacrosForHarness(body: string, _harness: Harness, catalog: Map<string, InvocationSchema>, invocationMap: Record<string, Record<string, unknown>>): string;
3
+ //# sourceMappingURL=expand.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"expand.d.ts","sourceRoot":"","sources":["../../../src/generate/macros/expand.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAe,MAAM,aAAa,CAAC;AAwD1E,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,OAAO,EACjB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,EACtC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GACrD,MAAM,CAWR"}
@@ -0,0 +1,48 @@
1
+ import { expandMacroExpressions } from "./parse.js";
2
+ import { validateMacro } from "./validate.js";
3
+ function stringifyParam(value) {
4
+ if (typeof value === "string") {
5
+ return value;
6
+ }
7
+ return `>>${value.heredoc}`;
8
+ }
9
+ function normalizeMacroParams(macro, config) {
10
+ const params = {};
11
+ for (const [key, value] of Object.entries(macro.params)) {
12
+ params[key] = stringifyParam(value);
13
+ }
14
+ const aliases = typeof config.role_aliases === "object" && config.role_aliases !== null
15
+ ? config.role_aliases
16
+ : {};
17
+ if (params.target_role) {
18
+ params.target_role = aliases[params.target_role] ?? params.target_role;
19
+ }
20
+ if (!params.name &&
21
+ config.name_fallback === "target_role" &&
22
+ params.target_role) {
23
+ params.name = params.target_role;
24
+ }
25
+ return params;
26
+ }
27
+ function applyTemplate(template, params) {
28
+ let result = template;
29
+ for (const [key, value] of Object.entries(params)) {
30
+ result = result.replace(new RegExp(`\\{${key}\\}`, "g"), value);
31
+ }
32
+ result = result.replace(/,?\s*\w+:\s*"\{[^}]+\}"/g, "");
33
+ result = result.replace(/,?\s*\w+:\s*\{[^}]+\}/g, "");
34
+ return result;
35
+ }
36
+ export function expandMacrosForHarness(body, _harness, catalog, invocationMap) {
37
+ return expandMacroExpressions(body, (macro) => {
38
+ validateMacro(macro, catalog);
39
+ const config = invocationMap[macro.id] ?? {};
40
+ const template = config.template;
41
+ if (typeof template !== "string" || template.length === 0) {
42
+ throw new Error(`Missing template for macro "${macro.id}"`);
43
+ }
44
+ const params = normalizeMacroParams(macro, config);
45
+ return applyTemplate(template, params);
46
+ });
47
+ }
48
+ //# sourceMappingURL=expand.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"expand.js","sourceRoot":"","sources":["../../../src/generate/macros/expand.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE9C,SAAS,cAAc,CAAC,KAAmC;IACzD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC;AAC9B,CAAC;AAED,SAAS,oBAAoB,CAC3B,KAAkB,EAClB,MAA+B;IAE/B,MAAM,MAAM,GAA2B,EAAE,CAAC;IAE1C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;QACxD,MAAM,CAAC,GAAG,CAAC,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;IACtC,CAAC;IAED,MAAM,OAAO,GACX,OAAO,MAAM,CAAC,YAAY,KAAK,QAAQ,IAAI,MAAM,CAAC,YAAY,KAAK,IAAI;QACrE,CAAC,CAAE,MAAM,CAAC,YAAuC;QACjD,CAAC,CAAC,EAAE,CAAC;IAET,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;QACvB,MAAM,CAAC,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,MAAM,CAAC,WAAW,CAAC;IACzE,CAAC;IAED,IACE,CAAC,MAAM,CAAC,IAAI;QACZ,MAAM,CAAC,aAAa,KAAK,aAAa;QACtC,MAAM,CAAC,WAAW,EAClB,CAAC;QACD,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC;IACnC,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,aAAa,CACpB,QAAgB,EAChB,MAA8B;IAE9B,IAAI,MAAM,GAAG,QAAQ,CAAC;IAEtB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAClD,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,MAAM,GAAG,KAAK,EAAE,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;IAClE,CAAC;IAED,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,0BAA0B,EAAE,EAAE,CAAC,CAAC;IACxD,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,wBAAwB,EAAE,EAAE,CAAC,CAAC;IACtD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,IAAY,EACZ,QAAiB,EACjB,OAAsC,EACtC,aAAsD;IAEtD,OAAO,sBAAsB,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE;QAC5C,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAC9B,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;QAC7C,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QACjC,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1D,MAAM,IAAI,KAAK,CAAC,+BAA+B,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC;QAC9D,CAAC;QACD,MAAM,MAAM,GAAG,oBAAoB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACnD,OAAO,aAAa,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { ParsedMacro } from "../types.js";
2
+ export declare function parseMacroExpression(expression: string): ParsedMacro;
3
+ export declare function expandMacroExpressions(input: string, replacer: (macro: ParsedMacro) => string): string;
4
+ //# sourceMappingURL=parse.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../../../src/generate/macros/parse.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAgG/C,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,WAAW,CAepE;AAED,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,MAAM,GACvC,MAAM,CA8CR"}