@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
@@ -1 +0,0 @@
1
- {"version":3,"file":"smoke-consumer.d.ts","sourceRoot":"","sources":["../../../scripts/smoke/smoke-consumer.ts"],"names":[],"mappings":""}
@@ -1,80 +0,0 @@
1
- // Issue #46 — prompt-router runtime asset lookup 회귀 감지 (fresh consumer target 모사)
2
- import { execSync, spawn } from "node:child_process";
3
- import { mkdtempSync, rmSync, existsSync } from "node:fs";
4
- import { join } from "node:path";
5
- import { tmpdir } from "node:os";
6
- import { fileURLToPath } from "node:url";
7
- import { findPackageRoot } from "../../src/shared/package-root.js";
8
- const __dirname = fileURLToPath(new URL(".", import.meta.url));
9
- const ROOT = findPackageRoot(__dirname);
10
- function fail(msg) {
11
- process.stderr.write(`[smoke-consumer] FAIL: ${msg}\n`);
12
- process.exit(1);
13
- }
14
- function spawnWithStdin(handlerPath, payload) {
15
- return new Promise((resolve) => {
16
- const child = spawn("node", [handlerPath], { stdio: ["pipe", "pipe", "pipe"] });
17
- let stdout = "";
18
- let stderr = "";
19
- child.stdout.on("data", (d) => { stdout += d.toString(); });
20
- child.stderr.on("data", (d) => { stderr += d.toString(); });
21
- child.stdin.write(payload);
22
- child.stdin.end();
23
- child.on("exit", (c) => resolve({ code: c ?? 1, stdout, stderr }));
24
- child.on("error", () => resolve({ code: 1, stdout, stderr }));
25
- });
26
- }
27
- const tmpDir = mkdtempSync(join(tmpdir(), "nexus-smoke-consumer-"));
28
- try {
29
- // 1. Sync to fresh consumer target — simulates downstream consumer install
30
- execSync(`node ${join(ROOT, "dist/scripts/cli.js")} sync --harness=claude --target=${tmpDir}`, { stdio: "ignore" });
31
- const handlerPath = join(tmpDir, "dist/hooks/prompt-router.js");
32
- if (!existsSync(handlerPath)) {
33
- fail(`prompt-router.js not found at ${handlerPath} — sync may have failed or bundle name changed`);
34
- }
35
- // Case A: [run] tag → exit 0 + stdout contains <system-notice>
36
- const payloadA = JSON.stringify({
37
- hook_event_name: "UserPromptSubmit",
38
- session_id: "smoke-run",
39
- cwd: tmpDir,
40
- prompt: "[run] smoke",
41
- });
42
- const resultA = await spawnWithStdin(handlerPath, payloadA);
43
- if (resultA.code !== 0) {
44
- fail(`case A ([run]) exited with code ${resultA.code}\n` +
45
- ` stdout: ${resultA.stdout.slice(0, 300)}\n` +
46
- ` stderr: ${resultA.stderr.slice(0, 300)}`);
47
- }
48
- if (!resultA.stdout.includes("<system-notice>")) {
49
- fail(`case A ([run]) stdout missing <system-notice>\n` +
50
- ` stdout: ${resultA.stdout.slice(0, 300)}\n` +
51
- ` stderr: ${resultA.stderr.slice(0, 300)}`);
52
- }
53
- // Case B: [rule] tag → exit 0 + stdout contains "Valid targets:" + at least one name
54
- const payloadB = JSON.stringify({
55
- hook_event_name: "UserPromptSubmit",
56
- session_id: "smoke-rule",
57
- cwd: tmpDir,
58
- prompt: "[rule] store this convention",
59
- });
60
- const resultB = await spawnWithStdin(handlerPath, payloadB);
61
- if (resultB.code !== 0) {
62
- fail(`case B ([rule]) exited with code ${resultB.code}\n` +
63
- ` stdout: ${resultB.stdout.slice(0, 300)}\n` +
64
- ` stderr: ${resultB.stderr.slice(0, 300)}`);
65
- }
66
- if (!resultB.stdout.includes("Valid targets:")) {
67
- fail(`case B ([rule]) stdout missing "Valid targets:"\n` +
68
- ` stdout: ${resultB.stdout.slice(0, 300)}\n` +
69
- ` stderr: ${resultB.stderr.slice(0, 300)}`);
70
- }
71
- if (!/Valid targets:[^.]*[a-zA-Z0-9_-]+/.test(resultB.stdout)) {
72
- fail(`case B ([rule]) "Valid targets:" not followed by at least one name\n` +
73
- ` stdout: ${resultB.stdout.slice(0, 300)}`);
74
- }
75
- console.log("[smoke-consumer] PASS — prompt-router emits system-notice for [run] + [rule] tags in fresh consumer target");
76
- }
77
- finally {
78
- rmSync(tmpDir, { recursive: true, force: true });
79
- }
80
- //# sourceMappingURL=smoke-consumer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"smoke-consumer.js","sourceRoot":"","sources":["../../../scripts/smoke/smoke-consumer.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=smoke-opencode.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"smoke-opencode.d.ts","sourceRoot":"","sources":["../../../scripts/smoke/smoke-opencode.ts"],"names":[],"mappings":""}
@@ -1,99 +0,0 @@
1
- // Issue #39 OpenCode 경로 — spawnHandler stdout null 회귀 감지
2
- // Verifies opencode-manifest.json has session-init entry and spawning its handler produces side-effects.
3
- import { spawn } from "node:child_process";
4
- import { readFileSync, mkdtempSync, rmSync, existsSync } from "node:fs";
5
- import { join } from "node:path";
6
- import { tmpdir } from "node:os";
7
- import { randomUUID } from "node:crypto";
8
- import { fileURLToPath } from "node:url";
9
- import { findPackageRoot } from "../../src/shared/package-root.js";
10
- const __dirname = fileURLToPath(new URL(".", import.meta.url));
11
- const ROOT = findPackageRoot(__dirname);
12
- const MANIFEST_PATH = join(ROOT, "dist/manifests/opencode-manifest.json");
13
- function fail(msg) {
14
- process.stderr.write(`[smoke-opencode] FAIL: ${msg}\n`);
15
- process.exit(1);
16
- }
17
- // --- 1. Load manifest and find session-init entry ---
18
- if (!existsSync(MANIFEST_PATH)) {
19
- fail(`manifest not found: ${MANIFEST_PATH} — run \`bun run build\` first`);
20
- }
21
- const manifest = JSON.parse(readFileSync(MANIFEST_PATH, "utf-8"));
22
- if (!Array.isArray(manifest.hooks)) {
23
- fail(`manifest.hooks is not an array`);
24
- }
25
- const entry = manifest.hooks.find((h) => h.events.includes("SessionStart"));
26
- if (!entry) {
27
- fail(`no SessionStart hook found in manifest`);
28
- }
29
- // --- 2. Resolve handler path ---
30
- // Resolve handlerPath the same way opencode-mount.ts does:
31
- // relative to the manifest file location.
32
- const manifestUrl = new URL(`file://${MANIFEST_PATH}`);
33
- const resolvedPath = fileURLToPath(new URL(entry.handlerPath, manifestUrl));
34
- // Fall back to the compiled dist bundle if the manifest-relative path doesn't exist.
35
- // This allows smoke to detect path mismatches (Issue #43) while still validating
36
- // spawn + side-effect behavior against the known-good compiled bundle.
37
- const handlerPath = existsSync(resolvedPath)
38
- ? resolvedPath
39
- : join(ROOT, "dist/hooks", `${entry.name}.js`);
40
- if (!existsSync(handlerPath)) {
41
- fail(`handler not found at either:\n manifest-resolved: ${resolvedPath}\n dist bundle: ${join(ROOT, "dist/hooks", `${entry.name}.js`)}`);
42
- }
43
- // Warn when manifest path doesn't resolve — this is the Issue #43 symptom
44
- if (!existsSync(resolvedPath)) {
45
- process.stderr.write(`[smoke-opencode] WARN: manifest handlerPath "${entry.handlerPath}" resolved to non-existent ` +
46
- `"${resolvedPath}"; falling back to dist bundle. Fix manifest to resolve Issue #43.\n`);
47
- }
48
- // --- 3. Spawn handler with SessionStart payload ---
49
- const tmpDir = mkdtempSync(join(tmpdir(), "nexus-smoke-opencode-"));
50
- const sid = randomUUID();
51
- const payload = JSON.stringify({
52
- hook_event_name: "SessionStart",
53
- session_id: sid,
54
- cwd: tmpDir,
55
- source: "startup",
56
- });
57
- try {
58
- const child = spawn("node", [handlerPath], {
59
- env: { ...process.env, NEXUS_HARNESS: "opencode" },
60
- stdio: ["pipe", "pipe", "pipe"],
61
- });
62
- let stdout = "";
63
- let stderr = "";
64
- child.stdout.on("data", (d) => { stdout += d.toString(); });
65
- child.stderr.on("data", (d) => { stderr += d.toString(); });
66
- child.stdin.write(payload);
67
- child.stdin.end();
68
- const code = await new Promise((resolve) => {
69
- child.on("exit", (c) => resolve(c ?? 1));
70
- child.on("error", () => resolve(1));
71
- });
72
- // --- 4. Assert exit 0 ---
73
- if (code !== 0) {
74
- fail(`handler exited with code ${code}. stderr:\n${stderr}`);
75
- }
76
- // Assert stdout is empty or valid JSON (not corrupted)
77
- if (stdout.trim() && stdout.trim() !== "null") {
78
- try {
79
- JSON.parse(stdout);
80
- }
81
- catch {
82
- fail(`stdout is non-empty and not valid JSON: ${stdout.slice(0, 200)}`);
83
- }
84
- }
85
- // --- 5. Assert side-effects ---
86
- const stateDir = join(tmpDir, ".nexus/state", sid);
87
- if (!existsSync(stateDir)) {
88
- fail(`state directory not created: ${stateDir} — handler ran but produced no side-effects (Issue #39 regression)\n` +
89
- ` handlerPath: ${handlerPath}\n` +
90
- ` code: ${code}\n` +
91
- ` stdout: ${JSON.stringify(stdout)}\n` +
92
- ` stderr: ${JSON.stringify(stderr)}`);
93
- }
94
- console.log("[smoke-opencode] PASS — manifest valid, handler spawned, side-effects confirmed");
95
- }
96
- finally {
97
- rmSync(tmpDir, { recursive: true, force: true });
98
- }
99
- //# sourceMappingURL=smoke-opencode.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"smoke-opencode.js","sourceRoot":"","sources":["../../../scripts/smoke/smoke-opencode.ts"],"names":[],"mappings":"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"}
@@ -1,35 +0,0 @@
1
- /**
2
- * OpenCode plugin adapter — mounts nexus hooks into OpenCode's plugin API.
3
- *
4
- * 결정 참조: plan.json Issue #1 (3-레이어 책임 분담),
5
- * Issue #3 (OpenCode 2단 처리 — SubagentStart/Stop, agent-tracker),
6
- * Issue #6 (additional_context 주입 우회 — SubagentStop output.output append)
7
- */
8
- export interface OpenCodeHookManifestEntry {
9
- name: string;
10
- /** Nexus standard event names (PascalCase). */
11
- events: string[];
12
- /** Glob/regex pattern matched against tool_name or source. */
13
- matcher: string;
14
- /** Absolute path to the compiled handler .js shell wrapper. */
15
- handlerPath: string;
16
- priority: number;
17
- /** Timeout in seconds; defaults to 30. */
18
- timeout?: number;
19
- }
20
- export interface OpenCodeHookManifest {
21
- hooks: OpenCodeHookManifestEntry[];
22
- }
23
- /**
24
- * Mount nexus hooks into OpenCode's plugin API.
25
- *
26
- * Returns an object whose keys are OpenCode plugin hook names. Each value is
27
- * the async handler function OpenCode calls when the corresponding event fires.
28
- *
29
- * @param pluginCtx OpenCode plugin context (must expose `.directory: string`)
30
- * @param manifest Hook manifest produced by build-hooks.ts
31
- */
32
- export declare function mountHooks(pluginCtx: {
33
- directory: string;
34
- }, manifest: OpenCodeHookManifest): Record<string, (...args: unknown[]) => Promise<void>>;
35
- //# sourceMappingURL=opencode-mount.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"opencode-mount.d.ts","sourceRoot":"","sources":["../../../src/hooks/opencode-mount.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAYH,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,+CAA+C;IAC/C,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,8DAA8D;IAC9D,OAAO,EAAE,MAAM,CAAC;IAChB,+DAA+D;IAC/D,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,0CAA0C;IAC1C,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,yBAAyB,EAAE,CAAC;CACpC;AAuBD;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CACxB,SAAS,EAAE;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,EAChC,QAAQ,EAAE,oBAAoB,GAC7B,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,CAoKvD"}
@@ -1,352 +0,0 @@
1
- /**
2
- * OpenCode plugin adapter — mounts nexus hooks into OpenCode's plugin API.
3
- *
4
- * 결정 참조: plan.json Issue #1 (3-레이어 책임 분담),
5
- * Issue #3 (OpenCode 2단 처리 — SubagentStart/Stop, agent-tracker),
6
- * Issue #6 (additional_context 주입 우회 — SubagentStop output.output append)
7
- */
8
- import { spawn } from "node:child_process";
9
- import { mkdirSync } from "node:fs";
10
- import { dirname, join } from "node:path";
11
- import { fileURLToPath } from "node:url";
12
- import { updateJsonFileLocked } from "../shared/json-store.js";
13
- // ---------------------------------------------------------------------------
14
- // resolveManifestPath — handlerPath absolutizer
15
- // ---------------------------------------------------------------------------
16
- /**
17
- * Resolve a manifest-relative handlerPath to an absolute filesystem path.
18
- *
19
- * The manifest JSON lives at dist/manifests/opencode-manifest.json.
20
- * This module lives at dist/src/hooks/opencode-mount.js.
21
- * We construct the manifest's URL relative to this module, then resolve
22
- * the handlerPath relative to that manifest URL.
23
- */
24
- function resolveManifestPath(relPath) {
25
- const manifestUrl = new URL("../../manifests/opencode-manifest.json", import.meta.url);
26
- return fileURLToPath(new URL(relPath, manifestUrl));
27
- }
28
- // ---------------------------------------------------------------------------
29
- // mountHooks — primary export
30
- // ---------------------------------------------------------------------------
31
- /**
32
- * Mount nexus hooks into OpenCode's plugin API.
33
- *
34
- * Returns an object whose keys are OpenCode plugin hook names. Each value is
35
- * the async handler function OpenCode calls when the corresponding event fires.
36
- *
37
- * @param pluginCtx OpenCode plugin context (must expose `.directory: string`)
38
- * @param manifest Hook manifest produced by build-hooks.ts
39
- */
40
- export function mountHooks(pluginCtx, manifest) {
41
- // Resolve all handlerPaths to absolute paths so spawn() works regardless of CWD.
42
- const resolvedManifest = {
43
- hooks: manifest.hooks.map((h) => ({ ...h, handlerPath: resolveManifestPath(h.handlerPath) })),
44
- };
45
- // Buffer for additional_context produced by SessionStart / UserPromptSubmit hooks.
46
- // Flushed into the system prompt on each LLM call via chat.system.transform.
47
- const systemTransformBuffer = [];
48
- return {
49
- // ------------------------------------------------------------------
50
- // session.created → SessionStart
51
- // ------------------------------------------------------------------
52
- "event": async (input) => {
53
- const ev = input;
54
- if (ev["event"]?.["type"] !== "session.created") {
55
- return;
56
- }
57
- const sessionEvent = ev["event"];
58
- const sessionId = sessionEvent["sessionID"] ?? "";
59
- await dispatchEvent("SessionStart", resolvedManifest, {
60
- hook_event_name: "SessionStart",
61
- session_id: sessionId,
62
- cwd: pluginCtx.directory,
63
- source: "startup",
64
- }, { systemTransformBuffer });
65
- },
66
- // ------------------------------------------------------------------
67
- // chat.message → UserPromptSubmit
68
- // ------------------------------------------------------------------
69
- "chat.message": async (input) => {
70
- const msg = input;
71
- const sessionId = msg["sessionID"] ?? "";
72
- const prompt = msg["message"] ?? "";
73
- await dispatchEvent("UserPromptSubmit", resolvedManifest, {
74
- hook_event_name: "UserPromptSubmit",
75
- session_id: sessionId,
76
- cwd: pluginCtx.directory,
77
- prompt,
78
- }, { systemTransformBuffer });
79
- },
80
- // ------------------------------------------------------------------
81
- // tool.execute.before → PreToolUse (or SubagentStart when tool=task)
82
- // ------------------------------------------------------------------
83
- "tool.execute.before": async (input, output) => {
84
- const inp = input;
85
- const out = output;
86
- const sessionId = inp["sessionID"] ?? "";
87
- const toolName = inp["tool"] ?? "";
88
- const isTask = toolName === "task";
89
- const args = out["args"] ?? {};
90
- if (isTask) {
91
- await dispatchEvent("SubagentStart", resolvedManifest, {
92
- hook_event_name: "SubagentStart",
93
- session_id: sessionId,
94
- cwd: pluginCtx.directory,
95
- // agent_id is unknown until tool.execute.after resolves the subagent session
96
- agent_id: "",
97
- agent_type: args["subagent_type"] ?? "",
98
- }, { outputArgsRef: args });
99
- }
100
- else {
101
- await dispatchEvent("PreToolUse", resolvedManifest, {
102
- hook_event_name: "PreToolUse",
103
- session_id: sessionId,
104
- cwd: pluginCtx.directory,
105
- tool_name: normalizeOpenCodeToolName(toolName),
106
- tool_input: args,
107
- }, { outputArgsRef: args });
108
- }
109
- },
110
- // ------------------------------------------------------------------
111
- // tool.execute.after → PostToolUse (or SubagentStop when tool=task)
112
- // ------------------------------------------------------------------
113
- "tool.execute.after": async (input, output) => {
114
- const inp = input;
115
- const out = output;
116
- const sessionId = inp["sessionID"] ?? "";
117
- const toolName = inp["tool"] ?? "";
118
- const isTask = toolName === "task";
119
- const args = out["args"] ?? {};
120
- const metadata = out["metadata"] ?? {};
121
- const agentId = metadata["sessionId"] ?? "";
122
- if (isTask) {
123
- // Register / update agent-tracker before dispatching SubagentStop
124
- await upsertAgentTracker(pluginCtx.directory, sessionId, agentId, args["subagent_type"] ?? "");
125
- await dispatchEvent("SubagentStop", resolvedManifest, {
126
- hook_event_name: "SubagentStop",
127
- session_id: sessionId,
128
- cwd: pluginCtx.directory,
129
- agent_id: agentId,
130
- agent_type: args["subagent_type"] ?? "",
131
- last_assistant_message: out["output"] ?? "",
132
- },
133
- // additional_context appended to output.output (bypass #6)
134
- { outputOutputRef: out });
135
- }
136
- else {
137
- await dispatchEvent("PostToolUse", resolvedManifest, {
138
- hook_event_name: "PostToolUse",
139
- session_id: sessionId,
140
- cwd: pluginCtx.directory,
141
- tool_name: normalizeOpenCodeToolName(toolName),
142
- tool_input: args,
143
- tool_response: out["output"] ?? "",
144
- }, {});
145
- }
146
- },
147
- // ------------------------------------------------------------------
148
- // experimental.chat.system.transform — flush buffer into system prompt
149
- // ------------------------------------------------------------------
150
- "experimental.chat.system.transform": async (_input, output) => {
151
- const out = output;
152
- if (!Array.isArray(out.system))
153
- return;
154
- while (systemTransformBuffer.length > 0) {
155
- out.system.push(systemTransformBuffer.shift());
156
- }
157
- },
158
- };
159
- }
160
- // ---------------------------------------------------------------------------
161
- // dispatchEvent
162
- // ---------------------------------------------------------------------------
163
- async function dispatchEvent(nexusEventName, manifest, nexusInput, sideEffects) {
164
- // Sort hooks by priority (ascending) so lower numbers run first
165
- const candidates = manifest.hooks
166
- .filter((h) => h.events.includes(nexusEventName))
167
- .sort((a, b) => a.priority - b.priority);
168
- for (const hook of candidates) {
169
- const toolOrSource = nexusInput["tool_name"] ??
170
- nexusInput["source"] ??
171
- "";
172
- if (!matchesPattern(hook.matcher, toolOrSource))
173
- continue;
174
- const timeoutMs = (hook.timeout ?? 30) * 1000;
175
- const result = await spawnHandler(hook.handlerPath, nexusInput, timeoutMs);
176
- if (result == null)
177
- continue;
178
- applyResult(result, nexusEventName, sideEffects);
179
- }
180
- }
181
- // ---------------------------------------------------------------------------
182
- // spawnHandler
183
- // ---------------------------------------------------------------------------
184
- async function spawnHandler(handlerPath, nexusInput, timeoutMs) {
185
- return new Promise((resolve) => {
186
- let child;
187
- try {
188
- child = spawn("node", [handlerPath], {
189
- env: { ...process.env, NEXUS_HARNESS: "opencode" },
190
- stdio: ["pipe", "pipe", "pipe"],
191
- });
192
- }
193
- catch {
194
- // spawn itself threw (e.g. node not found) — silent
195
- resolve(null);
196
- return;
197
- }
198
- let stdout = "";
199
- let timedOut = false;
200
- const timer = setTimeout(() => {
201
- timedOut = true;
202
- try {
203
- child.kill();
204
- }
205
- catch {
206
- // ignore
207
- }
208
- resolve(null);
209
- }, timeoutMs);
210
- if (!child.stdout || !child.stdin) {
211
- clearTimeout(timer);
212
- resolve(null);
213
- return;
214
- }
215
- child.stdout.on("data", (chunk) => {
216
- stdout += chunk.toString();
217
- });
218
- child.stdin.write(JSON.stringify(nexusInput));
219
- child.stdin.end();
220
- child.on("exit", () => {
221
- clearTimeout(timer);
222
- if (timedOut)
223
- return;
224
- try {
225
- resolve(stdout ? JSON.parse(stdout) : null);
226
- }
227
- catch {
228
- resolve(null);
229
- }
230
- });
231
- child.on("error", () => {
232
- clearTimeout(timer);
233
- resolve(null); // spawn failure — silent, keep OpenCode turn alive
234
- });
235
- });
236
- }
237
- // ---------------------------------------------------------------------------
238
- // applyResult — convert nexus output to OpenCode API side effects
239
- // ---------------------------------------------------------------------------
240
- function applyResult(result, nexusEventName, sideEffects) {
241
- // decision:block → throw (OpenCode sees an error and halts the turn)
242
- if (result["decision"] === "block") {
243
- const reason = result["block_reason"] ?? "Blocked by nexus hook";
244
- throw new Error(reason);
245
- }
246
- // continue:false → throw
247
- if (result["continue"] === false) {
248
- const msg = result["system_message"] ?? "Hook requested stop";
249
- throw new Error(msg);
250
- }
251
- // additional_context
252
- const additionalContext = result["additional_context"];
253
- if (additionalContext) {
254
- if (nexusEventName === "SessionStart" || nexusEventName === "UserPromptSubmit") {
255
- // Push to system.transform buffer
256
- sideEffects.systemTransformBuffer?.push(additionalContext);
257
- }
258
- else if (nexusEventName === "SubagentStart") {
259
- // Prepend to args.prompt so the subagent receives the context
260
- if (sideEffects.outputArgsRef) {
261
- const existing = sideEffects.outputArgsRef["prompt"] ?? "";
262
- sideEffects.outputArgsRef["prompt"] = additionalContext + "\n\n" + existing;
263
- }
264
- }
265
- else if (nexusEventName === "SubagentStop") {
266
- // Append to output.output (bypass #6)
267
- if (sideEffects.outputOutputRef) {
268
- const existing = sideEffects.outputOutputRef["output"] ?? "";
269
- sideEffects.outputOutputRef["output"] = existing + "\n\n" + additionalContext;
270
- }
271
- }
272
- }
273
- // updated_input → mutate output.args (PreToolUse only)
274
- const updatedInput = result["updated_input"];
275
- if (updatedInput && nexusEventName === "PreToolUse" && sideEffects.outputArgsRef) {
276
- Object.assign(sideEffects.outputArgsRef, updatedInput);
277
- }
278
- }
279
- // ---------------------------------------------------------------------------
280
- // upsertAgentTracker
281
- // ---------------------------------------------------------------------------
282
- async function upsertAgentTracker(cwd, sessionId, agentId, agentType) {
283
- if (!agentId)
284
- return; // agent_id not yet resolved — skip silently
285
- const trackerPath = join(cwd, ".nexus", "state", sessionId, "agent-tracker.json");
286
- try {
287
- mkdirSync(dirname(trackerPath), { recursive: true });
288
- await updateJsonFileLocked(trackerPath, [], (tracker) => {
289
- const existing = tracker.find((e) => e.agent_id === agentId);
290
- if (!existing) {
291
- tracker.push({
292
- agent_id: agentId,
293
- agent_type: agentType,
294
- started_at: new Date().toISOString(),
295
- resume_count: 0,
296
- status: "running",
297
- });
298
- }
299
- else {
300
- existing.resume_count = (existing.resume_count ?? 0) + 1;
301
- existing.last_resumed_at = new Date().toISOString();
302
- }
303
- return tracker;
304
- });
305
- }
306
- catch {
307
- // tracker update failure must never disrupt the OpenCode turn
308
- }
309
- }
310
- /**
311
- * Test whether a nexus matcher pattern matches the given value.
312
- * Pattern "*" matches everything.
313
- * Otherwise the pattern is treated as a pipe-separated list of literals
314
- * (e.g. "Read|Write|Edit") or a simple regex.
315
- */
316
- function matchesPattern(pattern, value) {
317
- if (pattern === "*")
318
- return true;
319
- // Try literal pipe-separated list first (most common case)
320
- const literals = pattern.split("|");
321
- if (literals.every((l) => /^[A-Za-z0-9_-]+$/.test(l))) {
322
- return literals.includes(value);
323
- }
324
- // Fall back to regex
325
- try {
326
- return new RegExp(pattern).test(value);
327
- }
328
- catch {
329
- return false;
330
- }
331
- }
332
- /**
333
- * Normalize OpenCode lowercase tool names to nexus PascalCase equivalents.
334
- * OpenCode uses snake_case/lowercase internally; nexus standard is PascalCase.
335
- */
336
- function normalizeOpenCodeToolName(name) {
337
- const aliasMap = {
338
- read: "Read",
339
- edit: "Edit",
340
- write: "Write",
341
- bash: "Bash",
342
- glob: "Glob",
343
- grep: "Grep",
344
- ls: "LS",
345
- task: "Task",
346
- web_fetch: "WebFetch",
347
- web_search: "WebSearch",
348
- patch: "Edit",
349
- };
350
- return aliasMap[name] ?? name;
351
- }
352
- //# sourceMappingURL=opencode-mount.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"opencode-mount.js","sourceRoot":"","sources":["../../../src/hooks/opencode-mount.ts"],"names":[],"mappings":"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"}