@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 +0,0 @@
1
- {"version":3,"file":"smoke-consumer.d.ts","sourceRoot":"","sources":["../../../scripts/smoke/smoke-consumer.ts"],"names":[],"mappings":""}
@@ -1,230 +0,0 @@
1
- // Issue #46 — prompt-router runtime asset lookup 회귀 감지 (fresh consumer target 모사)
2
- // Issue #50 — session_id side-channel + tracker lifecycle integration cases
3
- import { execSync, spawn } from "node:child_process";
4
- import { mkdtempSync, rmSync, existsSync, readFileSync } from "node:fs";
5
- import { join } from "node:path";
6
- import { tmpdir } from "node:os";
7
- import { fileURLToPath } from "node:url";
8
- import { findPackageRoot } from "../../src/shared/package-root.js";
9
- import { getSessionId, resetByPpidCache } from "../../src/shared/paths.js";
10
- const __dirname = fileURLToPath(new URL(".", import.meta.url));
11
- const ROOT = findPackageRoot(__dirname);
12
- function fail(msg) {
13
- process.stderr.write(`[smoke-consumer] FAIL: ${msg}\n`);
14
- process.exit(1);
15
- }
16
- function spawnWithStdin(handlerPath, payload, extraEnv) {
17
- return new Promise((resolve) => {
18
- const env = extraEnv ? { ...process.env, ...extraEnv } : process.env;
19
- const child = spawn("node", [handlerPath], { stdio: ["pipe", "pipe", "pipe"], env });
20
- let stdout = "";
21
- let stderr = "";
22
- child.stdout.on("data", (d) => { stdout += d.toString(); });
23
- child.stderr.on("data", (d) => { stderr += d.toString(); });
24
- child.stdin.write(payload);
25
- child.stdin.end();
26
- child.on("exit", (c) => resolve({ code: c ?? 1, stdout, stderr }));
27
- child.on("error", () => resolve({ code: 1, stdout, stderr }));
28
- });
29
- }
30
- const tmpDir = mkdtempSync(join(tmpdir(), "nexus-smoke-consumer-"));
31
- try {
32
- // 1. Sync to fresh consumer target — simulates downstream consumer install
33
- execSync(`node ${join(ROOT, "dist/scripts/cli.js")} sync --harness=claude --target=${tmpDir}`, { stdio: "ignore" });
34
- const handlerPath = join(tmpDir, "dist/hooks/prompt-router.js");
35
- if (!existsSync(handlerPath)) {
36
- fail(`prompt-router.js not found at ${handlerPath} — sync may have failed or bundle name changed`);
37
- }
38
- // Case A: [run] tag → exit 0 + stdout contains <system-notice>
39
- const payloadA = JSON.stringify({
40
- hook_event_name: "UserPromptSubmit",
41
- session_id: "smoke-run",
42
- cwd: tmpDir,
43
- prompt: "[run] smoke",
44
- });
45
- const resultA = await spawnWithStdin(handlerPath, payloadA);
46
- if (resultA.code !== 0) {
47
- fail(`case A ([run]) exited with code ${resultA.code}\n` +
48
- ` stdout: ${resultA.stdout.slice(0, 300)}\n` +
49
- ` stderr: ${resultA.stderr.slice(0, 300)}`);
50
- }
51
- if (!resultA.stdout.includes("<system-notice>")) {
52
- fail(`case A ([run]) stdout missing <system-notice>\n` +
53
- ` stdout: ${resultA.stdout.slice(0, 300)}\n` +
54
- ` stderr: ${resultA.stderr.slice(0, 300)}`);
55
- }
56
- // Case B: [rule] tag → exit 0 + stdout contains "Valid targets:" + at least one name
57
- const payloadB = JSON.stringify({
58
- hook_event_name: "UserPromptSubmit",
59
- session_id: "smoke-rule",
60
- cwd: tmpDir,
61
- prompt: "[rule] store this convention",
62
- });
63
- const resultB = await spawnWithStdin(handlerPath, payloadB);
64
- if (resultB.code !== 0) {
65
- fail(`case B ([rule]) exited with code ${resultB.code}\n` +
66
- ` stdout: ${resultB.stdout.slice(0, 300)}\n` +
67
- ` stderr: ${resultB.stderr.slice(0, 300)}`);
68
- }
69
- if (!resultB.stdout.includes("Valid targets:")) {
70
- fail(`case B ([rule]) stdout missing "Valid targets:"\n` +
71
- ` stdout: ${resultB.stdout.slice(0, 300)}\n` +
72
- ` stderr: ${resultB.stderr.slice(0, 300)}`);
73
- }
74
- if (!/Valid targets:[^.]*[a-zA-Z0-9_-]+/.test(resultB.stdout)) {
75
- fail(`case B ([rule]) "Valid targets:" not followed by at least one name\n` +
76
- ` stdout: ${resultB.stdout.slice(0, 300)}`);
77
- }
78
- console.log("[smoke-consumer] PASS — prompt-router emits system-notice for [run] + [rule] tags in fresh consumer target");
79
- // Case C — session_id side-channel round-trip
80
- const sidTmpDir = mkdtempSync(join(tmpdir(), "nexus-smoke-sid-"));
81
- const savedTestPpid = process.env["NEXUS_TEST_PPID"];
82
- const savedSessionId = process.env["NEXUS_SESSION_ID"];
83
- try {
84
- process.env["NEXUS_TEST_PPID"] = "999000";
85
- delete process.env["NEXUS_SESSION_ID"];
86
- const sessionInitHandler = join(ROOT, "dist/hooks/session-init.js");
87
- if (!existsSync(sessionInitHandler)) {
88
- fail(`session-init.js not found at ${sessionInitHandler} — run \`bun run build\` first`);
89
- }
90
- const payloadC = JSON.stringify({
91
- hook_event_name: "SessionStart",
92
- session_id: "test-sid-abc",
93
- cwd: sidTmpDir,
94
- source: "startup",
95
- });
96
- const resultC = await spawnWithStdin(sessionInitHandler, payloadC, { NEXUS_TEST_PPID: "999000" });
97
- if (resultC.code !== 0) {
98
- fail(`case C (session-init) exited with code ${resultC.code}\n` +
99
- ` stderr: ${resultC.stderr.slice(0, 300)}`);
100
- }
101
- const byPpidFile = join(sidTmpDir, ".nexus/state/runtime/by-ppid/999000.json");
102
- if (!existsSync(byPpidFile)) {
103
- fail(`case C: by-ppid file not created at ${byPpidFile}`);
104
- }
105
- const byPpidData = JSON.parse(readFileSync(byPpidFile, "utf-8"));
106
- if (byPpidData.session_id !== "test-sid-abc") {
107
- fail(`case C: by-ppid file has session_id="${byPpidData.session_id}", expected "test-sid-abc"`);
108
- }
109
- resetByPpidCache();
110
- const resolvedSid = getSessionId(sidTmpDir);
111
- if (resolvedSid !== "test-sid-abc") {
112
- fail(`case C: getSessionId() returned "${resolvedSid}", expected "test-sid-abc"`);
113
- }
114
- console.log("[smoke-consumer] PASS — case C: session_id side-channel round-trip");
115
- }
116
- finally {
117
- if (savedTestPpid === undefined) {
118
- delete process.env["NEXUS_TEST_PPID"];
119
- }
120
- else {
121
- process.env["NEXUS_TEST_PPID"] = savedTestPpid;
122
- }
123
- if (savedSessionId !== undefined) {
124
- process.env["NEXUS_SESSION_ID"] = savedSessionId;
125
- }
126
- rmSync(sidTmpDir, { recursive: true, force: true });
127
- }
128
- // Case D — tracker lifecycle: session-init → agent-bootstrap → agent-finalize
129
- const trackerTmpDir = mkdtempSync(join(tmpdir(), "nexus-smoke-tracker-"));
130
- const savedTestPpid2 = process.env["NEXUS_TEST_PPID"];
131
- const savedSessionId2 = process.env["NEXUS_SESSION_ID"];
132
- try {
133
- process.env["NEXUS_TEST_PPID"] = "999001";
134
- delete process.env["NEXUS_SESSION_ID"];
135
- const sessionInitHandler = join(ROOT, "dist/hooks/session-init.js");
136
- const bootstrapHandler = join(ROOT, "dist/hooks/agent-bootstrap.js");
137
- const finalizeHandler = join(ROOT, "dist/hooks/agent-finalize.js");
138
- for (const h of [sessionInitHandler, bootstrapHandler, finalizeHandler]) {
139
- if (!existsSync(h)) {
140
- fail(`case D: handler not found at ${h} — run \`bun run build\` first`);
141
- }
142
- }
143
- const initPayload = JSON.stringify({
144
- hook_event_name: "SessionStart",
145
- session_id: "test-sid-abc",
146
- cwd: trackerTmpDir,
147
- source: "startup",
148
- });
149
- const initResult = await spawnWithStdin(sessionInitHandler, initPayload, { NEXUS_TEST_PPID: "999001" });
150
- if (initResult.code !== 0) {
151
- fail(`case D (session-init) exited with code ${initResult.code}\n stderr: ${initResult.stderr.slice(0, 300)}`);
152
- }
153
- const trackerPath = join(trackerTmpDir, ".nexus/state/test-sid-abc/agent-tracker.json");
154
- if (!existsSync(trackerPath)) {
155
- fail(`case D: agent-tracker.json not created at ${trackerPath}`);
156
- }
157
- const initTracker = JSON.parse(readFileSync(trackerPath, "utf-8"));
158
- if (!Array.isArray(initTracker) || initTracker.length !== 0) {
159
- fail(`case D: agent-tracker.json after session-init should be [], got ${JSON.stringify(initTracker)}`);
160
- }
161
- const bootstrapPayload = JSON.stringify({
162
- hook_event_name: "SubagentStart",
163
- cwd: trackerTmpDir,
164
- session_id: "test-sid-abc",
165
- agent_type: "architect",
166
- agent_id: "test-agent-xyz",
167
- });
168
- const bootstrapResult = await spawnWithStdin(bootstrapHandler, bootstrapPayload, { NEXUS_TEST_PPID: "999001" });
169
- if (bootstrapResult.code !== 0) {
170
- fail(`case D (agent-bootstrap) exited with code ${bootstrapResult.code}\n stderr: ${bootstrapResult.stderr.slice(0, 300)}`);
171
- }
172
- const afterBootstrap = JSON.parse(readFileSync(trackerPath, "utf-8"));
173
- if (!Array.isArray(afterBootstrap) || afterBootstrap.length !== 1) {
174
- fail(`case D: tracker after bootstrap should have 1 entry, got ${JSON.stringify(afterBootstrap)}`);
175
- }
176
- const entry = afterBootstrap[0];
177
- if (entry["agent_id"] !== "test-agent-xyz") {
178
- fail(`case D: tracker entry agent_id="${entry["agent_id"]}", expected "test-agent-xyz"`);
179
- }
180
- if (entry["agent_type"] !== "architect") {
181
- fail(`case D: tracker entry agent_type="${entry["agent_type"]}", expected "architect"`);
182
- }
183
- if (entry["status"] !== "running") {
184
- fail(`case D: tracker entry status="${entry["status"]}", expected "running"`);
185
- }
186
- if (typeof entry["started_at"] !== "string" || !entry["started_at"]) {
187
- fail(`case D: tracker entry started_at missing or not a string`);
188
- }
189
- const finalizePayload = JSON.stringify({
190
- hook_event_name: "SubagentStop",
191
- cwd: trackerTmpDir,
192
- session_id: "test-sid-abc",
193
- agent_type: "architect",
194
- agent_id: "test-agent-xyz",
195
- last_assistant_message: "",
196
- });
197
- const finalizeResult = await spawnWithStdin(finalizeHandler, finalizePayload, { NEXUS_TEST_PPID: "999001" });
198
- if (finalizeResult.code !== 0) {
199
- fail(`case D (agent-finalize) exited with code ${finalizeResult.code}\n stderr: ${finalizeResult.stderr.slice(0, 300)}`);
200
- }
201
- const afterFinalize = JSON.parse(readFileSync(trackerPath, "utf-8"));
202
- if (!Array.isArray(afterFinalize) || afterFinalize.length !== 1) {
203
- fail(`case D: tracker after finalize should have 1 entry, got ${JSON.stringify(afterFinalize)}`);
204
- }
205
- const finalEntry = afterFinalize[0];
206
- if (finalEntry["status"] !== "completed") {
207
- fail(`case D: tracker entry status="${finalEntry["status"]}", expected "completed"`);
208
- }
209
- if (typeof finalEntry["stopped_at"] !== "string" || !finalEntry["stopped_at"]) {
210
- fail(`case D: tracker entry stopped_at missing or not a string`);
211
- }
212
- console.log("[smoke-consumer] PASS — case D: tracker lifecycle (init → bootstrap → finalize)");
213
- }
214
- finally {
215
- if (savedTestPpid2 === undefined) {
216
- delete process.env["NEXUS_TEST_PPID"];
217
- }
218
- else {
219
- process.env["NEXUS_TEST_PPID"] = savedTestPpid2;
220
- }
221
- if (savedSessionId2 !== undefined) {
222
- process.env["NEXUS_SESSION_ID"] = savedSessionId2;
223
- }
224
- rmSync(trackerTmpDir, { recursive: true, force: true });
225
- }
226
- }
227
- finally {
228
- rmSync(tmpDir, { recursive: true, force: true });
229
- }
230
- //# 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"}