@moreih29/nexus-core 0.17.0 → 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 (415) 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 -6
  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 -200
  165. package/assets/hooks/agent-bootstrap/handler.test.ts +0 -369
  166. package/assets/hooks/agent-bootstrap/handler.ts +0 -132
  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 -10
  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 -31
  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 -114
  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 -22
  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 -238
  225. package/dist/claude/dist/hooks/agent-finalize.js +0 -180
  226. package/dist/claude/dist/hooks/post-tool-telemetry.js +0 -71
  227. package/dist/claude/dist/hooks/prompt-router.js +0 -7336
  228. package/dist/claude/dist/hooks/session-init.js +0 -50
  229. package/dist/claude/hooks/hooks.json +0 -64
  230. package/dist/claude/settings.json +0 -3
  231. package/dist/claude/skills/nx-init/SKILL.md +0 -189
  232. package/dist/claude/skills/nx-plan/SKILL.md +0 -353
  233. package/dist/claude/skills/nx-run/SKILL.md +0 -154
  234. package/dist/claude/skills/nx-sync/SKILL.md +0 -87
  235. package/dist/codex/agents/architect.toml +0 -175
  236. package/dist/codex/agents/designer.toml +0 -123
  237. package/dist/codex/agents/engineer.toml +0 -105
  238. package/dist/codex/agents/lead.toml +0 -64
  239. package/dist/codex/agents/postdoc.toml +0 -120
  240. package/dist/codex/agents/researcher.toml +0 -136
  241. package/dist/codex/agents/reviewer.toml +0 -137
  242. package/dist/codex/agents/strategist.toml +0 -114
  243. package/dist/codex/agents/tester.toml +0 -194
  244. package/dist/codex/agents/writer.toml +0 -121
  245. package/dist/codex/dist/hooks/agent-bootstrap.js +0 -238
  246. package/dist/codex/dist/hooks/agent-finalize.js +0 -180
  247. package/dist/codex/dist/hooks/prompt-router.js +0 -7336
  248. package/dist/codex/dist/hooks/session-init.js +0 -50
  249. package/dist/codex/hooks/hooks.json +0 -28
  250. package/dist/codex/install/AGENTS.fragment.md +0 -60
  251. package/dist/codex/install/config.fragment.toml +0 -5
  252. package/dist/codex/install/install.sh +0 -60
  253. package/dist/codex/package.json +0 -20
  254. package/dist/codex/plugin/.codex-plugin/plugin.json +0 -57
  255. package/dist/codex/plugin/skills/nx-init/SKILL.md +0 -189
  256. package/dist/codex/plugin/skills/nx-plan/SKILL.md +0 -353
  257. package/dist/codex/plugin/skills/nx-run/SKILL.md +0 -154
  258. package/dist/codex/plugin/skills/nx-sync/SKILL.md +0 -87
  259. package/dist/codex/prompts/architect.md +0 -166
  260. package/dist/codex/prompts/designer.md +0 -114
  261. package/dist/codex/prompts/engineer.md +0 -97
  262. package/dist/codex/prompts/lead.md +0 -60
  263. package/dist/codex/prompts/postdoc.md +0 -111
  264. package/dist/codex/prompts/researcher.md +0 -127
  265. package/dist/codex/prompts/reviewer.md +0 -128
  266. package/dist/codex/prompts/strategist.md +0 -105
  267. package/dist/codex/prompts/tester.md +0 -185
  268. package/dist/codex/prompts/writer.md +0 -113
  269. package/dist/hooks/agent-bootstrap.js +0 -238
  270. package/dist/hooks/agent-finalize.js +0 -180
  271. package/dist/hooks/post-tool-telemetry.js +0 -71
  272. package/dist/hooks/prompt-router.js +0 -7336
  273. package/dist/hooks/session-init.js +0 -50
  274. package/dist/manifests/claude-hooks.json +0 -64
  275. package/dist/manifests/codex-hooks.json +0 -28
  276. package/dist/manifests/opencode-manifest.json +0 -54
  277. package/dist/manifests/portability-report.json +0 -75
  278. package/dist/opencode/.opencode/skills/nx-init/SKILL.md +0 -189
  279. package/dist/opencode/.opencode/skills/nx-plan/SKILL.md +0 -353
  280. package/dist/opencode/.opencode/skills/nx-run/SKILL.md +0 -154
  281. package/dist/opencode/.opencode/skills/nx-sync/SKILL.md +0 -87
  282. package/dist/opencode/package.json +0 -23
  283. package/dist/opencode/src/agents/architect.ts +0 -176
  284. package/dist/opencode/src/agents/designer.ts +0 -124
  285. package/dist/opencode/src/agents/engineer.ts +0 -105
  286. package/dist/opencode/src/agents/lead.ts +0 -66
  287. package/dist/opencode/src/agents/postdoc.ts +0 -121
  288. package/dist/opencode/src/agents/researcher.ts +0 -136
  289. package/dist/opencode/src/agents/reviewer.ts +0 -137
  290. package/dist/opencode/src/agents/strategist.ts +0 -115
  291. package/dist/opencode/src/agents/tester.ts +0 -194
  292. package/dist/opencode/src/agents/writer.ts +0 -121
  293. package/dist/opencode/src/index.ts +0 -25
  294. package/dist/opencode/src/plugin.ts +0 -6
  295. package/dist/scripts/build-agents.d.ts +0 -170
  296. package/dist/scripts/build-agents.d.ts.map +0 -1
  297. package/dist/scripts/build-agents.js +0 -907
  298. package/dist/scripts/build-agents.js.map +0 -1
  299. package/dist/scripts/build-hooks.d.ts +0 -57
  300. package/dist/scripts/build-hooks.d.ts.map +0 -1
  301. package/dist/scripts/build-hooks.js +0 -562
  302. package/dist/scripts/build-hooks.js.map +0 -1
  303. package/dist/scripts/cli.d.ts +0 -54
  304. package/dist/scripts/cli.d.ts.map +0 -1
  305. package/dist/scripts/cli.js +0 -504
  306. package/dist/scripts/cli.js.map +0 -1
  307. package/dist/scripts/smoke/smoke-claude.d.ts +0 -2
  308. package/dist/scripts/smoke/smoke-claude.d.ts.map +0 -1
  309. package/dist/scripts/smoke/smoke-claude.js +0 -58
  310. package/dist/scripts/smoke/smoke-claude.js.map +0 -1
  311. package/dist/scripts/smoke/smoke-codex.d.ts +0 -2
  312. package/dist/scripts/smoke/smoke-codex.d.ts.map +0 -1
  313. package/dist/scripts/smoke/smoke-codex.js +0 -50
  314. package/dist/scripts/smoke/smoke-codex.js.map +0 -1
  315. package/dist/scripts/smoke/smoke-consumer.d.ts +0 -2
  316. package/dist/scripts/smoke/smoke-consumer.d.ts.map +0 -1
  317. package/dist/scripts/smoke/smoke-consumer.js +0 -230
  318. package/dist/scripts/smoke/smoke-consumer.js.map +0 -1
  319. package/dist/scripts/smoke/smoke-opencode.d.ts +0 -2
  320. package/dist/scripts/smoke/smoke-opencode.d.ts.map +0 -1
  321. package/dist/scripts/smoke/smoke-opencode.js +0 -99
  322. package/dist/scripts/smoke/smoke-opencode.js.map +0 -1
  323. package/dist/src/hooks/opencode-mount.d.ts +0 -35
  324. package/dist/src/hooks/opencode-mount.d.ts.map +0 -1
  325. package/dist/src/hooks/opencode-mount.js +0 -352
  326. package/dist/src/hooks/opencode-mount.js.map +0 -1
  327. package/dist/src/hooks/runtime.d.ts +0 -37
  328. package/dist/src/hooks/runtime.d.ts.map +0 -1
  329. package/dist/src/hooks/runtime.js +0 -274
  330. package/dist/src/hooks/runtime.js.map +0 -1
  331. package/dist/src/hooks/types.d.ts +0 -196
  332. package/dist/src/hooks/types.d.ts.map +0 -1
  333. package/dist/src/hooks/types.js +0 -85
  334. package/dist/src/hooks/types.js.map +0 -1
  335. package/dist/src/lsp/cache.d.ts +0 -9
  336. package/dist/src/lsp/cache.d.ts.map +0 -1
  337. package/dist/src/lsp/cache.js +0 -216
  338. package/dist/src/lsp/cache.js.map +0 -1
  339. package/dist/src/lsp/client.d.ts +0 -24
  340. package/dist/src/lsp/client.d.ts.map +0 -1
  341. package/dist/src/lsp/client.js +0 -166
  342. package/dist/src/lsp/client.js.map +0 -1
  343. package/dist/src/lsp/detect.d.ts +0 -77
  344. package/dist/src/lsp/detect.d.ts.map +0 -1
  345. package/dist/src/lsp/detect.js +0 -116
  346. package/dist/src/lsp/detect.js.map +0 -1
  347. package/dist/src/mcp/server.d.ts.map +0 -1
  348. package/dist/src/mcp/server.js +0 -34
  349. package/dist/src/mcp/server.js.map +0 -1
  350. package/dist/src/mcp/tools/artifact.d.ts.map +0 -1
  351. package/dist/src/mcp/tools/artifact.js +0 -36
  352. package/dist/src/mcp/tools/artifact.js.map +0 -1
  353. package/dist/src/mcp/tools/history.d.ts.map +0 -1
  354. package/dist/src/mcp/tools/history.js +0 -29
  355. package/dist/src/mcp/tools/history.js.map +0 -1
  356. package/dist/src/mcp/tools/lsp.d.ts +0 -13
  357. package/dist/src/mcp/tools/lsp.d.ts.map +0 -1
  358. package/dist/src/mcp/tools/lsp.js +0 -225
  359. package/dist/src/mcp/tools/lsp.js.map +0 -1
  360. package/dist/src/mcp/tools/plan.d.ts.map +0 -1
  361. package/dist/src/mcp/tools/plan.js +0 -317
  362. package/dist/src/mcp/tools/plan.js.map +0 -1
  363. package/dist/src/mcp/tools/task.d.ts.map +0 -1
  364. package/dist/src/mcp/tools/task.js +0 -252
  365. package/dist/src/mcp/tools/task.js.map +0 -1
  366. package/dist/src/shared/invocations.d.ts +0 -74
  367. package/dist/src/shared/invocations.d.ts.map +0 -1
  368. package/dist/src/shared/invocations.js +0 -247
  369. package/dist/src/shared/invocations.js.map +0 -1
  370. package/dist/src/shared/json-store.d.ts.map +0 -1
  371. package/dist/src/shared/json-store.js.map +0 -1
  372. package/dist/src/shared/mcp-utils.d.ts.map +0 -1
  373. package/dist/src/shared/mcp-utils.js.map +0 -1
  374. package/dist/src/shared/package-root.d.ts +0 -6
  375. package/dist/src/shared/package-root.d.ts.map +0 -1
  376. package/dist/src/shared/package-root.js +0 -19
  377. package/dist/src/shared/package-root.js.map +0 -1
  378. package/dist/src/shared/paths.d.ts.map +0 -1
  379. package/dist/src/shared/paths.js +0 -117
  380. package/dist/src/shared/paths.js.map +0 -1
  381. package/dist/src/shared/tool-log.d.ts +0 -8
  382. package/dist/src/shared/tool-log.d.ts.map +0 -1
  383. package/dist/src/shared/tool-log.js +0 -22
  384. package/dist/src/shared/tool-log.js.map +0 -1
  385. package/dist/src/types/agent-config.d.ts +0 -22
  386. package/dist/src/types/agent-config.d.ts.map +0 -1
  387. package/dist/src/types/agent-config.js +0 -2
  388. package/dist/src/types/agent-config.js.map +0 -1
  389. package/dist/src/types/index.d.ts +0 -2
  390. package/dist/src/types/index.d.ts.map +0 -1
  391. package/dist/src/types/index.js +0 -2
  392. package/dist/src/types/index.js.map +0 -1
  393. package/dist/src/types/state.d.ts.map +0 -1
  394. package/dist/src/types/state.js.map +0 -1
  395. package/docs/consuming/codex-lead-merge.md +0 -106
  396. package/docs/contract/harness-io.md +0 -333
  397. package/docs/plugin-guide.md +0 -355
  398. package/docs/plugin-template/claude/.github/workflows/build.yml +0 -60
  399. package/docs/plugin-template/claude/README.md +0 -110
  400. package/docs/plugin-template/claude/package.json +0 -16
  401. package/docs/plugin-template/codex/.github/workflows/build.yml +0 -51
  402. package/docs/plugin-template/codex/README.md +0 -147
  403. package/docs/plugin-template/codex/install/install.sh +0 -60
  404. package/docs/plugin-template/codex/package.json +0 -17
  405. package/docs/plugin-template/opencode/.github/workflows/build.yml +0 -61
  406. package/docs/plugin-template/opencode/README.md +0 -121
  407. package/docs/plugin-template/opencode/package.json +0 -25
  408. package/docs/plugin-template/opencode/src/plugin.ts +0 -6
  409. /package/dist/{src/mcp/tools → mcp/handlers}/artifact.d.ts +0 -0
  410. /package/dist/{src/mcp/tools → mcp/handlers}/history.d.ts +0 -0
  411. /package/dist/{src/mcp/tools → mcp/handlers}/plan.d.ts +0 -0
  412. /package/dist/{src/mcp/tools → mcp/handlers}/task.d.ts +0 -0
  413. /package/dist/{src/shared → shared}/json-store.d.ts +0 -0
  414. /package/dist/{src/shared → shared}/mcp-utils.d.ts +0 -0
  415. /package/dist/{src/shared → shared}/mcp-utils.js +0 -0
@@ -1,106 +0,0 @@
1
- # Codex Lead Agent 수동 머지 가이드
2
-
3
- Codex 하네스에서 nexus-core의 lead agent system prompt를 AGENTS.md에 주입하는 수동 절차를 설명합니다.
4
-
5
- ## 배경
6
-
7
- Codex는 main agent의 system prompt를 주입하는 공식 경로를 제공하지 않습니다. `~/.codex/AGENTS.md`(글로벌) 또는 레포 루트 `AGENTS.md`(프로젝트)만 자동 로드됩니다.
8
-
9
- nexus-core는 플러그인 배포자이므로 사용자의 `AGENTS.md`를 자동으로 수정하지 않습니다. lead agent body를 AGENTS.md에 반영하는 것은 **consumer의 책임**입니다.
10
-
11
- ## 산출물 위치
12
-
13
- `nexus-core sync` 실행 후 다음 경로에 fragment 파일이 생성됩니다.
14
-
15
- ```
16
- dist/codex/install/AGENTS.fragment.md
17
- ```
18
-
19
- 이 파일은 **Managed** 경로입니다. 빌드 시마다 덮어씁니다. 직접 편집하지 마세요.
20
-
21
- ## Fragment 포맷
22
-
23
- fragment 파일은 primary agent(`mode: primary`)마다 다음 구조의 블록을 포함합니다.
24
-
25
- ```markdown
26
- <!-- nexus-core:lead:start -->
27
- # lead
28
-
29
- (lead agent body 전문)
30
- <!-- nexus-core:lead:end -->
31
- ```
32
-
33
- 마커 형식: `<!-- nexus-core:<agent-id>:start -->` / `<!-- nexus-core:<agent-id>:end -->`
34
-
35
- - **마커**: agent frontmatter의 `id` 필드 값을 사용합니다.
36
- - **헤딩**: agent frontmatter의 `name` 필드 값을 사용합니다.
37
- - `id`와 `name`은 대개 동일하지만 두 필드는 별개 소스입니다.
38
-
39
- 마커는 이후 업데이트 시 교체 구역을 식별하는 데 사용합니다.
40
-
41
- ## 수동 머지 절차
42
-
43
- ### 1. Fragment 확인
44
-
45
- ```bash
46
- bunx @moreih29/nexus-core sync --harness=codex --target=./
47
- ```
48
-
49
- sync 완료 후 `dist/codex/install/AGENTS.fragment.md`가 생성되었는지 확인합니다.
50
-
51
- ### 2. 대상 AGENTS.md 선택
52
-
53
- | 범위 | 경로 | 용도 |
54
- |---|---|---|
55
- | 글로벌 | `~/.codex/AGENTS.md` | 모든 프로젝트에 적용 |
56
- | 프로젝트 | `<repo-root>/AGENTS.md` | 해당 레포에만 적용 |
57
-
58
- 용도에 맞는 파일을 선택합니다. 파일이 없으면 새로 생성합니다.
59
-
60
- ### 3. Fragment 내용 복사
61
-
62
- `dist/codex/install/AGENTS.fragment.md`의 내용 전체(마커 포함)를 선택한 AGENTS.md에 붙여 넣습니다.
63
-
64
- ```markdown
65
- # (기존 AGENTS.md 내용)
66
-
67
- <!-- nexus-core:lead:start -->
68
- # lead
69
-
70
- (fragment 내용)
71
- <!-- nexus-core:lead:end -->
72
- ```
73
-
74
- 마커를 포함해 복사해야 이후 업데이트 시 구역을 정확히 식별할 수 있습니다.
75
-
76
- ### 4. 이후 업데이트 시
77
-
78
- nexus-core를 업데이트한 후 sync를 재실행하면 fragment 파일이 새 버전으로 덮어써집니다.
79
- AGENTS.md에서 기존 마커 구역(`<!-- nexus-core:lead:start -->` ~ `<!-- nexus-core:lead:end -->`)을 새 fragment 내용으로 교체합니다.
80
-
81
- ## 자동화 옵션
82
-
83
- consumer 플러그인이 install 스크립트에서 이 머지 작업을 자동화할 수 있습니다. nexus-core는 자동 머지 스크립트를 제공하지 않습니다.
84
-
85
- 자동화 예시 (install 스크립트에서 구현):
86
-
87
- ```bash
88
- FRAGMENT="dist/codex/install/AGENTS.fragment.md"
89
- TARGET="$HOME/.codex/AGENTS.md"
90
- MARKER_BEGIN="<!-- nexus-core:lead:start -->"
91
- MARKER_END="<!-- nexus-core:lead:end -->"
92
-
93
- # 기존 마커 구역 제거 후 새 내용 삽입
94
- if grep -q "${MARKER_BEGIN}" "$TARGET" 2>/dev/null; then
95
- sed -i.bak "/${MARKER_BEGIN}/,/${MARKER_END}/d" "$TARGET"
96
- fi
97
-
98
- cat "$FRAGMENT" >> "$TARGET"
99
- ```
100
-
101
- 이 패턴은 `docs/plugin-template/codex/README.md`의 block-marker 패턴과 동일한 방식입니다.
102
-
103
- ## 관련 문서
104
-
105
- - `docs/plugin-template/codex/README.md` — Codex 플러그인 전체 설치 흐름
106
- - `.nexus/context/architecture.md` §2-1 — dist/ 하네스별 출력 트리
@@ -1,333 +0,0 @@
1
- # harness-io 계약
2
-
3
- > **규범 문서 (Normative).** `@moreih29/nexus-core`와 3 하네스 consumer plugin repo 간 I/O 계약의 SSOT.
4
- > 튜토리얼·사용법은 [`docs/plugin-guide.md`](../plugin-guide.md) 참조.
5
-
6
- ---
7
-
8
- ## 1. 스코프와 버전 정책
9
-
10
- ### 1-1. 문서 역할
11
-
12
- 본 문서는 nexus-core가 외부 consumer(3 하네스 plugin repo)에게 보장하는 **계약**을 정의한다. 하네스별 설치 절차·코드 예시·온보딩 흐름은 이 문서의 범위 밖이다.
13
-
14
- ### 1-2. semver 3축 분리
15
-
16
- | 축 | 대상 | 변경 등급 |
17
- |---|---|---|
18
- | (i) Runtime exports | §2 전체 — 서브패스 API, 타입 시그니처 | 추가: minor / 제거·타입 축소: major |
19
- | (ii) sync 출력 set | §4 전체 — 경로·파일명·Managed/Template 분류 | 추가: minor / 제거·이동·분류 전환: major |
20
- | (iii) bin 인터페이스 | §3 전체 — 서브커맨드명·주요 플래그 시맨틱 | 추가: minor / 제거·시맨틱 변경: major |
21
-
22
- 세 축의 변경 등급은 독립적으로 산출한다. 파일 콘텐츠 내부 구조(프론트매터 스키마 등)는 향후 `assets/schema/`에 별도 버전 문서로 기술될 예정이며, 본 계약은 해당 디렉터리를 스키마 호환 주소로 지정한다. 현재는 agent·skill frontmatter 스키마 파일이 미작성 상태로, 작성 시점에 §8-4 참조.
23
-
24
- ---
25
-
26
- ## 2. Runtime exports 계약
27
-
28
- 소비자가 `@moreih29/nexus-core`의 서브패스로 import할 수 있는 런타임 API 전수. `package.json exports` 필드가 기계 판독 SSOT이며 본 섹션은 그 해석을 제공한다.
29
-
30
- ### 2-1. 루트 (`"."`)
31
-
32
- ```
33
- null
34
- ```
35
-
36
- barrel 파일이 존재하지 않는다. `import "@moreih29/nexus-core"`는 항상 오류다. 서브패스를 통해서만 접근 가능하다.
37
-
38
- ### 2-2. 공개 API 서브패스
39
-
40
- | 서브패스 | 형태 | 제공 내용 |
41
- |---|---|---|
42
- | `@moreih29/nexus-core/mcp` | types + import | MCP stdio 서버 모듈 |
43
- | `@moreih29/nexus-core/types` | types + import | `AgentConfig` 등 generator 산출물이 참조하는 타입 (#36) |
44
- | `@moreih29/nexus-core/hooks/opencode-mount` | types + import | `mountHooks` 함수 및 관련 타입 |
45
- | `@moreih29/nexus-core/hooks/runtime` | types + import | dispatcher helpers 및 관련 타입 |
46
- | `@moreih29/nexus-core/hooks/opencode-manifest` | JSON 단일 경로 | hook manifest JSON (Node 22+ `with { type: "json" }` import) |
47
-
48
- `hooks/opencode-manifest`는 조건부 export 객체가 아닌 단일 문자열 경로로 선언된다. 소비자는 반드시 `with { type: "json" }` import attribute와 함께 사용해야 한다. 이는 Node.js 22 이상을 요구한다(§3 참조).
49
-
50
- ### 2-3. 자산 와일드카드 서브패스 (read-only)
51
-
52
- | 서브패스 패턴 | 실제 경로 | 용도 |
53
- |---|---|---|
54
- | `@moreih29/nexus-core/agents/*` | `assets/agents/*` | 에이전트 원본 |
55
- | `@moreih29/nexus-core/skills/*` | `assets/skills/*` | 스킬 원본 |
56
- | `@moreih29/nexus-core/assets/*` | `assets/*` | 기타 자산 |
57
- | `@moreih29/nexus-core/docs/*` | `docs/*` | 문서 |
58
-
59
- 와일드카드 서브패스는 읽기 전용 참조 용도다. 소비자가 이 경로의 파일을 수정하면 다음 패키지 업그레이드 시 변경이 소실된다.
60
-
61
- ---
62
-
63
- ## 3. bin 계약
64
-
65
- | 실행 파일 | 진입점 | 역할 |
66
- |---|---|---|
67
- | `nexus-core` | `./dist/scripts/cli.js` | 빌드 타임 CLI |
68
- | `nexus-mcp` | `./dist/src/mcp/server.js` | 런타임 stdio MCP 서버 |
69
-
70
- ### 3-1. `nexus-core` 서브커맨드
71
-
72
- | 서브커맨드 | 역할 |
73
- |---|---|
74
- | `sync` | 하네스별 자산 동기화 (§4 참조) |
75
- | `init` | 신규 plugin repo 스캐폴드 초기화 |
76
- | `list` | 에이전트·스킬·훅 목록 출력 |
77
- | `validate` | `assets/` frontmatter 및 YAML 유효성 검사 |
78
- | `mcp` | MCP stdio 서버 직접 실행 (`nexus-mcp`와 동일) |
79
-
80
- 서브커맨드 시맨틱 변경 및 제거는 major breaking이다.
81
-
82
- ### 3-2. engines 요구사항
83
-
84
- `engines.node >= 22` — `import ... with { type: "json" }` (import attributes) 지원 최소 버전. 이 요구사항은 runtime exports §2와 연동되며 하향 조정은 major breaking이다.
85
-
86
- ---
87
-
88
- ## 4. sync 출력 set — 3 하네스별 규범
89
-
90
- **공통 규칙**: `nexus-core sync --harness=<x> --target=<dir>` 실행 시 `<dir>` 직속에 자산을 기록한다. harness 이름 prefix를 붙이지 않는다. flat 출력이 기본값이며 별도 플래그 없이 적용된다.
91
-
92
- multi-harness 빌드가 필요한 경우 소비자가 `--harness`와 `--target`을 조합해 3회 호출한다.
93
-
94
- ---
95
-
96
- ### 4-1. Claude
97
-
98
- **하네스 루트 = plugin 루트.** Claude Code marketplace의 `source: "./"` 직접 정합.
99
-
100
- | 경로 (target 루트 기준) | 분류 | 용도 |
101
- |---|---|---|
102
- | `.claude-plugin/plugin.json` | Template | 플러그인 메타 — 저자 편집 허용 |
103
- | `.claude-plugin/marketplace.json` | Template | 마켓플레이스 메타 |
104
- | `agents/<name>.md` | Managed | 하네스 네이티브 에이전트 마크다운 |
105
- | `skills/<name>/SKILL.md` | Managed | 스킬 마크다운 |
106
- | `settings.json`[^claude-primary] | Managed | `{ "agent": "<primary>" }` — main thread 시스템 프롬프트 주입 fragment |
107
- | `hooks/hooks.json`[^claude-hooks] | Managed | Claude Code hooks manifest (prebuilt `dist/manifests/claude-hooks.json` 복사) |
108
- | `dist/hooks/<name>.js`[^claude-hooks] | Managed | 사전 번들된 hook handler 바이너리 (prebuilt `dist/hooks/<name>.js` 복사, 하네스에 등록된 hook만) |
109
-
110
- [^claude-primary]: primary agent가 1개 이상 있을 때만 생성. primary 에이전트 부재 시 파일을 생성하지 않으며 기존 파일도 삭제하지 않는다. §6-1 Managed 정의의 조건부 생성 예외 참조.
111
- [^claude-hooks]: consumer `sync` 경로는 절대 `assets/hooks/*/handler.ts`를 재컴파일하지 않는다. 모든 handler는 publish 시점에 `bun build`로 self-contained ESM으로 번들링되어 tarball의 `dist/hooks/`·`dist/manifests/`에 탑재되며, `sync`는 단순 복사만 수행한다 (#34·#35·#36 Bug 2·#37).
112
-
113
- **fragment 경로**: `settings.json`은 core가 생성하는 fragment다. `{ "agent": "<primary>" }` 키 하나를 포함한다.
114
-
115
- **hooks 경로**: `hooks/hooks.json`의 `command` 필드는 `node ${CLAUDE_PLUGIN_ROOT}/dist/hooks/<name>.js` 형태다. `CLAUDE_PLUGIN_ROOT`는 Claude Code 런타임이 플러그인 설치 디렉터리로 바인딩하는 환경 변수로, 본 계약이 기록하는 상대 경로 `dist/hooks/<name>.js`와 정확히 정합한다. consumer sync가 두 파일 집합을 같은 target 루트에 배치하므로 런타임 해석이 성립한다.
116
-
117
- **Consumer(claude-nexus wrapper) 책임**: marketplace 등록 · version bump · git push. core는 `settings.json`·`hooks/hooks.json`·`dist/hooks/*.js` 생성까지만 담당한다. fragment의 consumer 환경 실제 적용은 Claude Code 런타임이 처리하며 wrapper가 그 경로를 보장한다.
118
-
119
- ---
120
-
121
- ### 4-2. OpenCode
122
-
123
- **npm 패키지 루트 = repo 루트.**
124
-
125
- | 경로 (target 루트 기준) | 분류 | 용도 |
126
- |---|---|---|
127
- | `package.json` | Template | npm 패키지 메타 — 저자 name·version 편집 |
128
- | `src/plugin.ts` | **Template (신규)** | mountHooks 진입점 보일러플레이트 |
129
- | `src/index.ts` | Managed | 에이전트 export 인덱스 (`export const agents = [...]` 포함) |
130
- | `src/agents/<name>.ts` | Managed | 에이전트 TS 모듈 |
131
- | `.opencode/skills/<name>/SKILL.md` | Managed | 스킬 마크다운 |
132
-
133
- #### Consumer 설정 가이드 (canonical 경로)
134
-
135
- **1단계 — 의존성 설치**
136
-
137
- ```bash
138
- bun add -d @moreih29/nexus-core @opencode-ai/plugin typescript
139
- ```
140
-
141
- **2단계 — sync 실행**
142
-
143
- `bun run sync`를 실행하면 `src/index.ts`에 `export const agents = [...]`가 생성되고, `src/plugin.ts`에 `mountHooks` 기반 Plugin export 보일러플레이트가 생성된다. 이 두 파일이 OpenCode plugin auto-register의 canonical 진입점이다.
144
-
145
- **3단계 — consumer 워크스페이스 `.opencode/opencode.json` 구성**
146
-
147
- ```json
148
- {
149
- "$schema": "https://opencode.ai/config.json",
150
- "plugin": ["<your-plugin-name>"],
151
- "default_agent": "<primary-agent-id>",
152
- "mcp": { "nx": { "type": "local", "command": ["nexus-mcp"] } }
153
- }
154
- ```
155
-
156
- `agent` 객체는 optional이다. 특정 agent의 model 또는 permission을 개별 override해야 할 때만 추가한다.
157
-
158
- > **주의**: `{ "agents": [...] }` 형태로 config에 agents를 직접 나열하면 OpenCode가 `Unrecognized key: "agents"` 오류로 기동에 실패한다. agents 등록은 반드시 `plugin: ["<name>"]` 경로(plugin auto-register)를 통해야 한다.
159
-
160
- **4단계 — postinstall 허용 (Bun 1.3+)**
161
-
162
- ```bash
163
- bun pm trust <your-plugin-name>
164
- ```
165
-
166
- Bun 1.3+에서 plugin의 postinstall 스크립트를 허용하기 위해 필요하다.
167
-
168
- **hooks 경로**: OpenCode는 Claude/Codex와 달리 `hooks/hooks.json` 파일을 target에 기록하지 않는다. 대신 `src/plugin.ts`의 `mountHooks(ctx, manifest)`가 런타임에 `@moreih29/nexus-core/hooks/opencode-manifest` JSON과 `@moreih29/nexus-core/hooks/opencode-mount` 함수를 import해 consume하며, handler 경로는 node_modules 내부 패키지 기준으로 해석된다. consumer target에는 물리 복사가 발생하지 않는다.
169
-
170
- **Skill discovery 경계 (결정 #7)**: core는 consumer 프로젝트의 `.opencode/skills/<name>/SKILL.md` 파일 존재를 보장한다. `node_modules/<plugin>/.opencode/skills/` 자동 감지 여부는 OpenCode 런타임 영역으로 본 계약 외부다. wrapper(opencode-nexus)는 postinstall 스크립트로 패키지 내부 `.opencode/skills/`를 consumer 경로로 복사할 책임을 진다.
171
-
172
- **Consumer(opencode-nexus wrapper) 책임**: `src/plugin.ts` 실 진입점 유지 · plugin auto-register 경로(`src/index.ts` export) 유지 · postinstall skill copy · npm publish.
173
-
174
- ---
175
-
176
- ### 4-3. Codex
177
-
178
- **wrapper repo 루트 = installer + plugin body 번들.**
179
-
180
- | 경로 (target 루트 기준) | 분류 | 용도 |
181
- |---|---|---|
182
- | `package.json` | **Template (신규)** | wrapper 메타 |
183
- | `install/install.sh` | **Template (신규)** | block-marker 머지 설치 스크립트 |
184
- | `plugin/.codex-plugin/plugin.json` | Managed | plugin body 메타 (`~/.codex/plugins/<name>/`로 설치) |
185
- | `plugin/skills/<name>/SKILL.md` | Managed | 스킬 마크다운 (plugin body 내부) |
186
- | `agents/<name>.toml` | Managed | native agent TOML (`~/.codex/agents/`로 설치) |
187
- | `prompts/<name>.md` | Managed | 에이전트 프롬프트 마크다운 |
188
- | `install/config.fragment.toml` | Managed | `~/.codex/config.toml`에 merge될 `[mcp_servers]` fragment |
189
- | `install/AGENTS.fragment.md`[^codex-primary] | Managed | `~/.codex/AGENTS.md`에 merge될 primary agent body (block-marker) |
190
- | `hooks/hooks.json`[^codex-hooks] | Managed | Codex hooks manifest (prebuilt `dist/manifests/codex-hooks.json` 복사) |
191
- | `dist/hooks/<name>.js`[^codex-hooks] | Managed | 사전 번들된 hook handler 바이너리 (Codex에 등록된 hook만) |
192
-
193
- [^codex-hooks]: Claude와 동일한 self-contained pre-bundle 정책을 따른다. consumer sync는 재컴파일하지 않고 tarball의 prebuilt 산출물을 단순 복사한다.
194
-
195
- [^codex-primary]: primary agent가 1개 이상 있을 때만 생성. primary 에이전트 부재 시 파일을 생성하지 않으며 기존 파일도 삭제하지 않는다. §6-1 Managed 정의의 조건부 생성 예외 참조.
196
-
197
- **fragment 경로**:
198
- - `install/config.fragment.toml` — MCP 서버 등록 TOML fragment
199
- - `install/AGENTS.fragment.md` — primary agent body를 `<!-- nexus-core:<agent-id>:start -->` / `<!-- nexus-core:<agent-id>:end -->` 마커로 감싼 fragment. `<agent-id>`는 primary agent의 frontmatter `id`이며 기본값은 `lead`이다
200
-
201
- **`agents/*.toml` — standalone role file 스키마**: `agents/<name>.toml`은 Codex의 `~/.codex/agents/`에 **standalone role file**로 직접 설치된다. 파일 스키마는 root-level 필드를 사용한다.
202
-
203
- ```toml
204
- name = "<agent-id>"
205
- description = "..."
206
- developer_instructions = """<body>"""
207
- model = "..."
208
- sandbox_mode = "..."
209
-
210
- [mcp_servers.nx]
211
- command = "nexus-mcp"
212
- disabled_tools = ["nx_task_add"] # 예시 — 실제 항목은 capability-matrix 조합에 따라 다름
213
- ```
214
-
215
- > **주의 1**: `[agents.<id>]` nested 구조는 `~/.codex/config.toml`(global config)의 agent 정의용이며, standalone role file과 혼용하면 안 된다. standalone 파일에는 반드시 root-level `name`·`developer_instructions` 형식을 사용한다.
216
-
217
- > **주의 2**: `disabled_tools`는 `[mcp_servers.<id>]` 블록 하위에만 배치한다. root-level에 배치하면 Codex 0.121+ `RawAgentRoleFileToml`의 `deny_unknown_fields`에 걸려 role 전체가 reject된다. `disabled_tools`가 비어 있을 때는 `[mcp_servers.nx]` 블록 자체를 생략한다.
218
-
219
- **도메인 서브디렉터리 구조**: Codex 내부 `plugin/`·`agents/`·`install/` 서브디렉터리는 Codex 생태계가 `~/.codex/plugins/`·`~/.codex/agents/`·`~/.codex/config.toml` 3곳에 분리 설치되는 구조를 반영한다. 이 도메인 prefix는 flat 출력 규칙(§4 공통 규칙)과 직교하며 유지된다.
220
-
221
- **Consumer(codex-nexus wrapper) 책임**: `install.sh` 편집·실행 · block-marker merge(`config.toml`·`AGENTS.md`) · npm 혹은 GitHub source 배포 선택.
222
-
223
- ---
224
-
225
- ## 5. Ownership line (Model 2 통일)
226
-
227
- 3 하네스 모두 동일한 ownership 모델을 따른다. 철학 §3 비목표("플러그인 자체의 빌드·배포·실행 — 하네스 책임")의 규범화다.
228
-
229
- ### 5-1. core 책임
230
-
231
- 1. agents·skills 원본 생성 (`assets/agents/*`, `assets/skills/*`)
232
- 2. 하네스 네이티브 자산 빌드 — agents (`.md`/`.ts`/`.toml`), skills (`SKILL.md`), plugin manifest
233
- 3. Integration fragment 제공:
234
- - Claude: `settings.json`
235
- - OpenCode: `src/index.ts`의 `export const agents` (plugin auto-register — fragment 없음)
236
- - Codex: `install/config.fragment.toml`·`install/AGENTS.fragment.md`
237
- 4. Runtime exports (`mountHooks`, manifest JSON, mcp 서버)
238
-
239
- ### 5-2. wrapper 책임
240
-
241
- 1. Fragment의 consumer 환경 실제 머지 로직 — block-marker·conditional merge·OS 경로 해석 (Claude `settings.json`, Codex `config.fragment.toml`·`AGENTS.fragment.md`)
242
- 2. 배포 — marketplace 등록·npm publish·`install.sh` 실행
243
- 3. Plugin 진입점 코드 — OpenCode `src/plugin.ts`·Codex `install/install.sh`
244
- 4. Version·changelog 관리
245
-
246
- core는 merge 로직·배포·OS별 경로 해석을 떠안지 않는다.
247
-
248
- ---
249
-
250
- ## 6. Template vs Managed 정책
251
-
252
- ### 6-1. 분류 정의
253
-
254
- | 분류 | 쓰기 시점 | 소비자 편집 보존 여부 |
255
- |---|---|---|
256
- | **Managed** | 매 `sync` 실행마다 덮어씀 | 보존되지 않음 |
257
- | **Template** | 파일 부재 시에만 생성. 존재 시 skip | 보존됨 (`--force` 지정 시 제외) |
258
-
259
- **조건부 생성 예외**: §4에서 각주로 명시한 Managed 파일(`settings.json`, `install/AGENTS.fragment.md`)은 primary agent가 1개 이상 존재할 때만 생성된다. primary 부재 시 생성 자체가 일어나지 않으며, 기존 파일이 있어도 삭제하지 않는다. 이 파일들은 "생성되면 Managed" 규칙을 따른다.
260
-
261
- ### 6-2. 플래그 시맨틱
262
-
263
- | 플래그 | 동작 |
264
- |---|---|
265
- | `--dry-run` | 실제 쓰기 없이 변경될 파일 목록과 summary만 출력 |
266
- | `--force` | Template 파일도 강제 덮어씀 |
267
- | `--strict` | Managed 파일에 로컬 drift가 있으면 exit 1. Template skip은 정상 통과(exit 0) |
268
-
269
- ### 6-3. dry-run 출력 포맷
270
-
271
- 파일별 prefix:
272
-
273
- | prefix | 의미 |
274
- |---|---|
275
- | `[M]` | Managed — 이번 sync에서 쓰여짐 |
276
- | `[T]` | Template — 신규 생성 |
277
- | `[T]{skip}` | Template — 파일 존재로 건너뜀 |
278
- | `[T]{force}` | Template — `--force`로 덮어씀 |
279
-
280
- Summary 라인 포맷:
281
-
282
- ```
283
- [build-agents] N managed, M template-create, K template-skipped, L template-force-overwrite
284
- ```
285
-
286
- ### 6-4. Managed·Template 분류 변경 정책
287
-
288
- Managed에서 Template으로, 또는 Template에서 Managed로의 분류 전환은 major breaking이다(§8 참조).
289
-
290
- ---
291
-
292
- ## 7. 예약된 확장점
293
-
294
- ### 7-1. consumer-manifest.json (현재 미도입, 결정 #2 유보)
295
-
296
- 현재 3 wrapper 어느 쪽도 `managed_outputs`·`requires`·`primary_agents` 등 기계 판독 필드를 소비하는 코드가 없다. 소비처가 없는 상태에서 스키마를 동결하면 형식적 1.0 고정과 드리프트 위험이 발생한다.
297
-
298
- **현재 SSOT**: `package.json exports`(runtime 계약) + 본 문서 `docs/contract/harness-io.md`(빌드 산출물 계약) 두 축으로 충분하다.
299
-
300
- **재검토 조건**: 자동화가 `managed_outputs`·`requires` 등 필드를 실제로 기계 소비하기 시작하는 시점에 별도 안건으로 재검토한다. 그 전에는 본 문서가 SSOT 역할을 유지한다.
301
-
302
- ---
303
-
304
- ## 8. 변경 관리
305
-
306
- ### 8-1. sync 출력 set (§4) 변경 등급
307
-
308
- | 변경 유형 | 등급 |
309
- |---|---|
310
- | 경로 추가 | minor |
311
- | 경로 제거·이동 | major breaking |
312
- | Managed ↔ Template 분류 전환 | major breaking |
313
-
314
- ### 8-2. Runtime exports (§2) 변경 등급
315
-
316
- | 변경 유형 | 등급 |
317
- |---|---|
318
- | 새 서브패스 추가 | minor |
319
- | 서브패스 제거 | major breaking |
320
- | 타입 시그니처 축소·호환 불가 변경 | major breaking |
321
- | 타입 확장(호환 유지) | minor 또는 patch |
322
-
323
- ### 8-3. bin 인터페이스 (§3) 변경 등급
324
-
325
- | 변경 유형 | 등급 |
326
- |---|---|
327
- | 새 서브커맨드·플래그 추가 | minor |
328
- | 서브커맨드·플래그 제거 | major breaking |
329
- | 주요 플래그 시맨틱 변경 | major breaking |
330
-
331
- ### 8-4. 프론트매터 스키마
332
-
333
- `assets/agents/*/body.md`·`assets/skills/*/body.md` frontmatter 스키마 변경은 `assets/schema/` 버전 문서에서 관리될 예정이다. 현재는 agent·skill frontmatter 전용 스키마 파일이 미작성 상태이며, 작성 시 `assets/schema/` 디렉터리에 위치한다. 본 문서에는 "스키마 호환 주소: `assets/schema/`" 만 명시한다.