@agimon-ai/doompi 0.0.1-alpha.0

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 (448) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +546 -0
  3. package/dist/_virtual/_rolldown/runtime.cjs +1 -0
  4. package/dist/bin/cli.cjs +3 -0
  5. package/dist/bin/cli.cjs.map +1 -0
  6. package/dist/bin/cli.d.cts +1 -0
  7. package/dist/bin/cli.d.mts +1 -0
  8. package/dist/bin/cli.mjs +3 -0
  9. package/dist/bin/cli.mjs.map +1 -0
  10. package/dist/bin/doomRunner.cjs +3 -0
  11. package/dist/bin/doomRunner.cjs.map +1 -0
  12. package/dist/bin/doomRunner.d.cts +1 -0
  13. package/dist/bin/doomRunner.d.mts +1 -0
  14. package/dist/bin/doomRunner.mjs +3 -0
  15. package/dist/bin/doomRunner.mjs.map +1 -0
  16. package/dist/cli/cliApp.cjs +2 -0
  17. package/dist/cli/cliApp.cjs.map +1 -0
  18. package/dist/cli/cliApp.d.cts +50 -0
  19. package/dist/cli/cliApp.d.cts.map +1 -0
  20. package/dist/cli/cliApp.d.mts +50 -0
  21. package/dist/cli/cliApp.d.mts.map +1 -0
  22. package/dist/cli/cliApp.mjs +2 -0
  23. package/dist/cli/cliApp.mjs.map +1 -0
  24. package/dist/cli/compatibilityOptions.cjs +2 -0
  25. package/dist/cli/compatibilityOptions.cjs.map +1 -0
  26. package/dist/cli/compatibilityOptions.d.cts +15 -0
  27. package/dist/cli/compatibilityOptions.d.cts.map +1 -0
  28. package/dist/cli/compatibilityOptions.d.mts +15 -0
  29. package/dist/cli/compatibilityOptions.d.mts.map +1 -0
  30. package/dist/cli/compatibilityOptions.mjs +2 -0
  31. package/dist/cli/compatibilityOptions.mjs.map +1 -0
  32. package/dist/cli/help.cjs +61 -0
  33. package/dist/cli/help.cjs.map +1 -0
  34. package/dist/cli/help.d.cts +6 -0
  35. package/dist/cli/help.d.cts.map +1 -0
  36. package/dist/cli/help.d.mts +6 -0
  37. package/dist/cli/help.d.mts.map +1 -0
  38. package/dist/cli/help.mjs +61 -0
  39. package/dist/cli/help.mjs.map +1 -0
  40. package/dist/cli/index.cjs +1 -0
  41. package/dist/cli/index.d.cts +5 -0
  42. package/dist/cli/index.d.mts +5 -0
  43. package/dist/cli/index.mjs +1 -0
  44. package/dist/cli/matrixOptions.cjs +2 -0
  45. package/dist/cli/matrixOptions.cjs.map +1 -0
  46. package/dist/cli/matrixOptions.d.cts +99 -0
  47. package/dist/cli/matrixOptions.d.cts.map +1 -0
  48. package/dist/cli/matrixOptions.d.mts +99 -0
  49. package/dist/cli/matrixOptions.d.mts.map +1 -0
  50. package/dist/cli/matrixOptions.mjs +2 -0
  51. package/dist/cli/matrixOptions.mjs.map +1 -0
  52. package/dist/cli/options.cjs +2 -0
  53. package/dist/cli/options.cjs.map +1 -0
  54. package/dist/cli/options.d.cts +7 -0
  55. package/dist/cli/options.d.cts.map +1 -0
  56. package/dist/cli/options.d.mts +7 -0
  57. package/dist/cli/options.d.mts.map +1 -0
  58. package/dist/cli/options.mjs +2 -0
  59. package/dist/cli/options.mjs.map +1 -0
  60. package/dist/commands/baseCommand.cjs +2 -0
  61. package/dist/commands/baseCommand.cjs.map +1 -0
  62. package/dist/commands/baseCommand.d.cts +36 -0
  63. package/dist/commands/baseCommand.d.cts.map +1 -0
  64. package/dist/commands/baseCommand.d.mts +36 -0
  65. package/dist/commands/baseCommand.d.mts.map +1 -0
  66. package/dist/commands/baseCommand.mjs +2 -0
  67. package/dist/commands/baseCommand.mjs.map +1 -0
  68. package/dist/commands/compatibilityCommand.cjs +2 -0
  69. package/dist/commands/compatibilityCommand.cjs.map +1 -0
  70. package/dist/commands/compatibilityCommand.d.cts +14 -0
  71. package/dist/commands/compatibilityCommand.d.cts.map +1 -0
  72. package/dist/commands/compatibilityCommand.d.mts +14 -0
  73. package/dist/commands/compatibilityCommand.d.mts.map +1 -0
  74. package/dist/commands/compatibilityCommand.mjs +2 -0
  75. package/dist/commands/compatibilityCommand.mjs.map +1 -0
  76. package/dist/commands/emitMcpCommand.cjs +2 -0
  77. package/dist/commands/emitMcpCommand.cjs.map +1 -0
  78. package/dist/commands/emitMcpCommand.d.cts +19 -0
  79. package/dist/commands/emitMcpCommand.d.cts.map +1 -0
  80. package/dist/commands/emitMcpCommand.d.mts +19 -0
  81. package/dist/commands/emitMcpCommand.d.mts.map +1 -0
  82. package/dist/commands/emitMcpCommand.mjs +2 -0
  83. package/dist/commands/emitMcpCommand.mjs.map +1 -0
  84. package/dist/commands/explainCommand.cjs +21 -0
  85. package/dist/commands/explainCommand.cjs.map +1 -0
  86. package/dist/commands/explainCommand.d.cts +63 -0
  87. package/dist/commands/explainCommand.d.cts.map +1 -0
  88. package/dist/commands/explainCommand.d.mts +63 -0
  89. package/dist/commands/explainCommand.d.mts.map +1 -0
  90. package/dist/commands/explainCommand.mjs +21 -0
  91. package/dist/commands/explainCommand.mjs.map +1 -0
  92. package/dist/commands/index.cjs +1 -0
  93. package/dist/commands/index.d.cts +8 -0
  94. package/dist/commands/index.d.mts +8 -0
  95. package/dist/commands/index.mjs +1 -0
  96. package/dist/commands/initCommand.cjs +3 -0
  97. package/dist/commands/initCommand.cjs.map +1 -0
  98. package/dist/commands/initCommand.d.cts +11 -0
  99. package/dist/commands/initCommand.d.cts.map +1 -0
  100. package/dist/commands/initCommand.d.mts +11 -0
  101. package/dist/commands/initCommand.d.mts.map +1 -0
  102. package/dist/commands/initCommand.mjs +3 -0
  103. package/dist/commands/initCommand.mjs.map +1 -0
  104. package/dist/commands/launchCommand.cjs +2 -0
  105. package/dist/commands/launchCommand.cjs.map +1 -0
  106. package/dist/commands/launchCommand.d.cts +31 -0
  107. package/dist/commands/launchCommand.d.cts.map +1 -0
  108. package/dist/commands/launchCommand.d.mts +31 -0
  109. package/dist/commands/launchCommand.d.mts.map +1 -0
  110. package/dist/commands/launchCommand.mjs +2 -0
  111. package/dist/commands/launchCommand.mjs.map +1 -0
  112. package/dist/commands/syncCommand.cjs +6 -0
  113. package/dist/commands/syncCommand.cjs.map +1 -0
  114. package/dist/commands/syncCommand.d.cts +37 -0
  115. package/dist/commands/syncCommand.d.cts.map +1 -0
  116. package/dist/commands/syncCommand.d.mts +37 -0
  117. package/dist/commands/syncCommand.d.mts.map +1 -0
  118. package/dist/commands/syncCommand.mjs +6 -0
  119. package/dist/commands/syncCommand.mjs.map +1 -0
  120. package/dist/config/harnessState.cjs +2 -0
  121. package/dist/config/harnessState.cjs.map +1 -0
  122. package/dist/config/harnessState.d.cts +24 -0
  123. package/dist/config/harnessState.d.cts.map +1 -0
  124. package/dist/config/harnessState.d.mts +24 -0
  125. package/dist/config/harnessState.d.mts.map +1 -0
  126. package/dist/config/harnessState.mjs +2 -0
  127. package/dist/config/harnessState.mjs.map +1 -0
  128. package/dist/config/index.cjs +1 -0
  129. package/dist/config/index.d.cts +7 -0
  130. package/dist/config/index.d.mts +7 -0
  131. package/dist/config/index.mjs +1 -0
  132. package/dist/config/projectTrust.cjs +2 -0
  133. package/dist/config/projectTrust.cjs.map +1 -0
  134. package/dist/config/projectTrust.d.cts +14 -0
  135. package/dist/config/projectTrust.d.cts.map +1 -0
  136. package/dist/config/projectTrust.d.mts +14 -0
  137. package/dist/config/projectTrust.d.mts.map +1 -0
  138. package/dist/config/projectTrust.mjs +2 -0
  139. package/dist/config/projectTrust.mjs.map +1 -0
  140. package/dist/entries/autoStop.cjs +2 -0
  141. package/dist/entries/autoStop.cjs.map +1 -0
  142. package/dist/entries/autoStop.d.cts +6 -0
  143. package/dist/entries/autoStop.d.cts.map +1 -0
  144. package/dist/entries/autoStop.d.mts +7 -0
  145. package/dist/entries/autoStop.d.mts.map +1 -0
  146. package/dist/entries/autoStop.mjs +2 -0
  147. package/dist/entries/autoStop.mjs.map +1 -0
  148. package/dist/entries/components/matrixPicker.cjs +2 -0
  149. package/dist/entries/components/matrixPicker.cjs.map +1 -0
  150. package/dist/entries/components/matrixPicker.d.cts +55 -0
  151. package/dist/entries/components/matrixPicker.d.cts.map +1 -0
  152. package/dist/entries/components/matrixPicker.d.mts +55 -0
  153. package/dist/entries/components/matrixPicker.d.mts.map +1 -0
  154. package/dist/entries/components/matrixPicker.mjs +2 -0
  155. package/dist/entries/components/matrixPicker.mjs.map +1 -0
  156. package/dist/entries/components/skillsOverlay.cjs +4 -0
  157. package/dist/entries/components/skillsOverlay.cjs.map +1 -0
  158. package/dist/entries/components/skillsOverlay.d.cts +58 -0
  159. package/dist/entries/components/skillsOverlay.d.cts.map +1 -0
  160. package/dist/entries/components/skillsOverlay.d.mts +58 -0
  161. package/dist/entries/components/skillsOverlay.d.mts.map +1 -0
  162. package/dist/entries/components/skillsOverlay.mjs +4 -0
  163. package/dist/entries/components/skillsOverlay.mjs.map +1 -0
  164. package/dist/entries/domains.cjs +2 -0
  165. package/dist/entries/domains.cjs.map +1 -0
  166. package/dist/entries/domains.d.cts +10 -0
  167. package/dist/entries/domains.d.cts.map +1 -0
  168. package/dist/entries/domains.d.mts +10 -0
  169. package/dist/entries/domains.d.mts.map +1 -0
  170. package/dist/entries/domains.mjs +2 -0
  171. package/dist/entries/domains.mjs.map +1 -0
  172. package/dist/entries/doom.cjs +2 -0
  173. package/dist/entries/doom.cjs.map +1 -0
  174. package/dist/entries/doom.d.cts +13 -0
  175. package/dist/entries/doom.d.cts.map +1 -0
  176. package/dist/entries/doom.d.mts +14 -0
  177. package/dist/entries/doom.d.mts.map +1 -0
  178. package/dist/entries/doom.mjs +2 -0
  179. package/dist/entries/doom.mjs.map +1 -0
  180. package/dist/entries/effort.cjs +2 -0
  181. package/dist/entries/effort.cjs.map +1 -0
  182. package/dist/entries/effort.d.cts +10 -0
  183. package/dist/entries/effort.d.cts.map +1 -0
  184. package/dist/entries/effort.d.mts +10 -0
  185. package/dist/entries/effort.d.mts.map +1 -0
  186. package/dist/entries/effort.mjs +2 -0
  187. package/dist/entries/effort.mjs.map +1 -0
  188. package/dist/entries/majorMode.cjs +6 -0
  189. package/dist/entries/majorMode.cjs.map +1 -0
  190. package/dist/entries/majorMode.d.cts +29 -0
  191. package/dist/entries/majorMode.d.cts.map +1 -0
  192. package/dist/entries/majorMode.d.mts +29 -0
  193. package/dist/entries/majorMode.d.mts.map +1 -0
  194. package/dist/entries/majorMode.mjs +6 -0
  195. package/dist/entries/majorMode.mjs.map +1 -0
  196. package/dist/entries/notifications.cjs +2 -0
  197. package/dist/entries/notifications.cjs.map +1 -0
  198. package/dist/entries/notifications.d.cts +13 -0
  199. package/dist/entries/notifications.d.cts.map +1 -0
  200. package/dist/entries/notifications.d.mts +13 -0
  201. package/dist/entries/notifications.d.mts.map +1 -0
  202. package/dist/entries/notifications.mjs +2 -0
  203. package/dist/entries/notifications.mjs.map +1 -0
  204. package/dist/entries/ollamaProvider.cjs +2 -0
  205. package/dist/entries/ollamaProvider.cjs.map +1 -0
  206. package/dist/entries/ollamaProvider.d.cts +6 -0
  207. package/dist/entries/ollamaProvider.d.cts.map +1 -0
  208. package/dist/entries/ollamaProvider.d.mts +7 -0
  209. package/dist/entries/ollamaProvider.d.mts.map +1 -0
  210. package/dist/entries/ollamaProvider.mjs +2 -0
  211. package/dist/entries/ollamaProvider.mjs.map +1 -0
  212. package/dist/entries/persona.cjs +2 -0
  213. package/dist/entries/persona.cjs.map +1 -0
  214. package/dist/entries/persona.d.cts +14 -0
  215. package/dist/entries/persona.d.cts.map +1 -0
  216. package/dist/entries/persona.d.mts +15 -0
  217. package/dist/entries/persona.d.mts.map +1 -0
  218. package/dist/entries/persona.mjs +2 -0
  219. package/dist/entries/persona.mjs.map +1 -0
  220. package/dist/entries/profile.cjs +3 -0
  221. package/dist/entries/profile.cjs.map +1 -0
  222. package/dist/entries/profile.d.cts +16 -0
  223. package/dist/entries/profile.d.cts.map +1 -0
  224. package/dist/entries/profile.d.mts +16 -0
  225. package/dist/entries/profile.d.mts.map +1 -0
  226. package/dist/entries/profile.mjs +3 -0
  227. package/dist/entries/profile.mjs.map +1 -0
  228. package/dist/entries/repositoryHooks.cjs +9 -0
  229. package/dist/entries/repositoryHooks.cjs.map +1 -0
  230. package/dist/entries/repositoryHooks.d.cts +7 -0
  231. package/dist/entries/repositoryHooks.d.cts.map +1 -0
  232. package/dist/entries/repositoryHooks.d.mts +8 -0
  233. package/dist/entries/repositoryHooks.d.mts.map +1 -0
  234. package/dist/entries/repositoryHooks.mjs +9 -0
  235. package/dist/entries/repositoryHooks.mjs.map +1 -0
  236. package/dist/entries/skills.cjs +2 -0
  237. package/dist/entries/skills.cjs.map +1 -0
  238. package/dist/entries/skills.d.cts +34 -0
  239. package/dist/entries/skills.d.cts.map +1 -0
  240. package/dist/entries/skills.d.mts +34 -0
  241. package/dist/entries/skills.d.mts.map +1 -0
  242. package/dist/entries/skills.mjs +2 -0
  243. package/dist/entries/skills.mjs.map +1 -0
  244. package/dist/entries/styleSystem.cjs +4 -0
  245. package/dist/entries/styleSystem.cjs.map +1 -0
  246. package/dist/entries/styleSystem.d.cts +32 -0
  247. package/dist/entries/styleSystem.d.cts.map +1 -0
  248. package/dist/entries/styleSystem.d.mts +32 -0
  249. package/dist/entries/styleSystem.d.mts.map +1 -0
  250. package/dist/entries/styleSystem.mjs +4 -0
  251. package/dist/entries/styleSystem.mjs.map +1 -0
  252. package/dist/index.cjs +1 -0
  253. package/dist/index.d.cts +34 -0
  254. package/dist/index.d.mts +34 -0
  255. package/dist/index.mjs +1 -0
  256. package/dist/interfaces/compatibility.d.cts +23 -0
  257. package/dist/interfaces/compatibility.d.cts.map +1 -0
  258. package/dist/interfaces/compatibility.d.mts +23 -0
  259. package/dist/interfaces/compatibility.d.mts.map +1 -0
  260. package/dist/interfaces/harness.d.cts +83 -0
  261. package/dist/interfaces/harness.d.cts.map +1 -0
  262. package/dist/interfaces/harness.d.mts +83 -0
  263. package/dist/interfaces/harness.d.mts.map +1 -0
  264. package/dist/logSinkTelemetry.cjs +2 -0
  265. package/dist/logSinkTelemetry.cjs.map +1 -0
  266. package/dist/logSinkTelemetry.d.cts +49 -0
  267. package/dist/logSinkTelemetry.d.cts.map +1 -0
  268. package/dist/logSinkTelemetry.d.mts +49 -0
  269. package/dist/logSinkTelemetry.d.mts.map +1 -0
  270. package/dist/logSinkTelemetry.mjs +2 -0
  271. package/dist/logSinkTelemetry.mjs.map +1 -0
  272. package/dist/node_modules/.pnpm/@juicesharp_rpiv-ask-user-question@2.2.0_@earendil-works_pi-coding-agent@0.84.1_support_6ba1249e24a50b62791c1c91c9f324c6/node_modules/@juicesharp/rpiv-ask-user-question/events.cjs +2 -0
  273. package/dist/node_modules/.pnpm/@juicesharp_rpiv-ask-user-question@2.2.0_@earendil-works_pi-coding-agent@0.84.1_support_6ba1249e24a50b62791c1c91c9f324c6/node_modules/@juicesharp/rpiv-ask-user-question/events.cjs.map +1 -0
  274. package/dist/node_modules/.pnpm/@juicesharp_rpiv-ask-user-question@2.2.0_@earendil-works_pi-coding-agent@0.84.1_support_6ba1249e24a50b62791c1c91c9f324c6/node_modules/@juicesharp/rpiv-ask-user-question/events.mjs +2 -0
  275. package/dist/node_modules/.pnpm/@juicesharp_rpiv-ask-user-question@2.2.0_@earendil-works_pi-coding-agent@0.84.1_support_6ba1249e24a50b62791c1c91c9f324c6/node_modules/@juicesharp/rpiv-ask-user-question/events.mjs.map +1 -0
  276. package/dist/services/compatibility/antigravity.cjs +2 -0
  277. package/dist/services/compatibility/antigravity.cjs.map +1 -0
  278. package/dist/services/compatibility/antigravity.d.cts +11 -0
  279. package/dist/services/compatibility/antigravity.d.cts.map +1 -0
  280. package/dist/services/compatibility/antigravity.d.mts +11 -0
  281. package/dist/services/compatibility/antigravity.d.mts.map +1 -0
  282. package/dist/services/compatibility/antigravity.mjs +2 -0
  283. package/dist/services/compatibility/antigravity.mjs.map +1 -0
  284. package/dist/services/compatibility/codex.cjs +2 -0
  285. package/dist/services/compatibility/codex.cjs.map +1 -0
  286. package/dist/services/compatibility/codex.d.cts +19 -0
  287. package/dist/services/compatibility/codex.d.cts.map +1 -0
  288. package/dist/services/compatibility/codex.d.mts +19 -0
  289. package/dist/services/compatibility/codex.d.mts.map +1 -0
  290. package/dist/services/compatibility/codex.mjs +2 -0
  291. package/dist/services/compatibility/codex.mjs.map +1 -0
  292. package/dist/services/compatibility/index.cjs +2 -0
  293. package/dist/services/compatibility/index.cjs.map +1 -0
  294. package/dist/services/compatibility/index.d.cts +16 -0
  295. package/dist/services/compatibility/index.d.cts.map +1 -0
  296. package/dist/services/compatibility/index.d.mts +16 -0
  297. package/dist/services/compatibility/index.d.mts.map +1 -0
  298. package/dist/services/compatibility/index.mjs +2 -0
  299. package/dist/services/compatibility/index.mjs.map +1 -0
  300. package/dist/services/compatibility/process.cjs +2 -0
  301. package/dist/services/compatibility/process.cjs.map +1 -0
  302. package/dist/services/compatibility/process.d.cts +35 -0
  303. package/dist/services/compatibility/process.d.cts.map +1 -0
  304. package/dist/services/compatibility/process.d.mts +35 -0
  305. package/dist/services/compatibility/process.d.mts.map +1 -0
  306. package/dist/services/compatibility/process.mjs +2 -0
  307. package/dist/services/compatibility/process.mjs.map +1 -0
  308. package/dist/services/compatibility/shared.cjs +2 -0
  309. package/dist/services/compatibility/shared.cjs.map +1 -0
  310. package/dist/services/compatibility/shared.d.cts +33 -0
  311. package/dist/services/compatibility/shared.d.cts.map +1 -0
  312. package/dist/services/compatibility/shared.d.mts +33 -0
  313. package/dist/services/compatibility/shared.d.mts.map +1 -0
  314. package/dist/services/compatibility/shared.mjs +2 -0
  315. package/dist/services/compatibility/shared.mjs.map +1 -0
  316. package/dist/services/compatibilityContext.cjs +2 -0
  317. package/dist/services/compatibilityContext.cjs.map +1 -0
  318. package/dist/services/compatibilityContext.d.cts +23 -0
  319. package/dist/services/compatibilityContext.d.cts.map +1 -0
  320. package/dist/services/compatibilityContext.d.mts +23 -0
  321. package/dist/services/compatibilityContext.d.mts.map +1 -0
  322. package/dist/services/compatibilityContext.mjs +2 -0
  323. package/dist/services/compatibilityContext.mjs.map +1 -0
  324. package/dist/services/composer.cjs +2 -0
  325. package/dist/services/composer.cjs.map +1 -0
  326. package/dist/services/composer.d.cts +133 -0
  327. package/dist/services/composer.d.cts.map +1 -0
  328. package/dist/services/composer.d.mts +133 -0
  329. package/dist/services/composer.d.mts.map +1 -0
  330. package/dist/services/composer.mjs +2 -0
  331. package/dist/services/composer.mjs.map +1 -0
  332. package/dist/services/extensionAssembler.cjs +2 -0
  333. package/dist/services/extensionAssembler.cjs.map +1 -0
  334. package/dist/services/extensionAssembler.d.cts +72 -0
  335. package/dist/services/extensionAssembler.d.cts.map +1 -0
  336. package/dist/services/extensionAssembler.d.mts +72 -0
  337. package/dist/services/extensionAssembler.d.mts.map +1 -0
  338. package/dist/services/extensionAssembler.mjs +2 -0
  339. package/dist/services/extensionAssembler.mjs.map +1 -0
  340. package/dist/services/extensionCompiler.cjs +2 -0
  341. package/dist/services/extensionCompiler.cjs.map +1 -0
  342. package/dist/services/extensionCompiler.mjs +2 -0
  343. package/dist/services/extensionCompiler.mjs.map +1 -0
  344. package/dist/services/harnessContext.cjs +2 -0
  345. package/dist/services/harnessContext.cjs.map +1 -0
  346. package/dist/services/harnessContext.d.cts +61 -0
  347. package/dist/services/harnessContext.d.cts.map +1 -0
  348. package/dist/services/harnessContext.d.mts +61 -0
  349. package/dist/services/harnessContext.d.mts.map +1 -0
  350. package/dist/services/harnessContext.mjs +2 -0
  351. package/dist/services/harnessContext.mjs.map +1 -0
  352. package/dist/services/index.cjs +1 -0
  353. package/dist/services/index.d.cts +14 -0
  354. package/dist/services/index.d.mts +14 -0
  355. package/dist/services/index.mjs +1 -0
  356. package/dist/services/matrixSwitcher.cjs +2 -0
  357. package/dist/services/matrixSwitcher.cjs.map +1 -0
  358. package/dist/services/matrixSwitcher.d.cts +46 -0
  359. package/dist/services/matrixSwitcher.d.cts.map +1 -0
  360. package/dist/services/matrixSwitcher.d.mts +46 -0
  361. package/dist/services/matrixSwitcher.d.mts.map +1 -0
  362. package/dist/services/matrixSwitcher.mjs +2 -0
  363. package/dist/services/matrixSwitcher.mjs.map +1 -0
  364. package/dist/services/mcpFilter.cjs +3 -0
  365. package/dist/services/mcpFilter.cjs.map +1 -0
  366. package/dist/services/mcpFilter.d.cts +40 -0
  367. package/dist/services/mcpFilter.d.cts.map +1 -0
  368. package/dist/services/mcpFilter.d.mts +40 -0
  369. package/dist/services/mcpFilter.d.mts.map +1 -0
  370. package/dist/services/mcpFilter.mjs +3 -0
  371. package/dist/services/mcpFilter.mjs.map +1 -0
  372. package/dist/services/piSettings.cjs +2 -0
  373. package/dist/services/piSettings.cjs.map +1 -0
  374. package/dist/services/piSettings.d.cts +24 -0
  375. package/dist/services/piSettings.d.cts.map +1 -0
  376. package/dist/services/piSettings.d.mts +24 -0
  377. package/dist/services/piSettings.d.mts.map +1 -0
  378. package/dist/services/piSettings.mjs +2 -0
  379. package/dist/services/piSettings.mjs.map +1 -0
  380. package/dist/services/resourceCollector.cjs +3 -0
  381. package/dist/services/resourceCollector.cjs.map +1 -0
  382. package/dist/services/resourceCollector.d.cts +16 -0
  383. package/dist/services/resourceCollector.d.cts.map +1 -0
  384. package/dist/services/resourceCollector.d.mts +16 -0
  385. package/dist/services/resourceCollector.d.mts.map +1 -0
  386. package/dist/services/resourceCollector.mjs +3 -0
  387. package/dist/services/resourceCollector.mjs.map +1 -0
  388. package/dist/services/skillCatalog.cjs +2 -0
  389. package/dist/services/skillCatalog.cjs.map +1 -0
  390. package/dist/services/skillCatalog.d.cts +56 -0
  391. package/dist/services/skillCatalog.d.cts.map +1 -0
  392. package/dist/services/skillCatalog.d.mts +56 -0
  393. package/dist/services/skillCatalog.d.mts.map +1 -0
  394. package/dist/services/skillCatalog.mjs +2 -0
  395. package/dist/services/skillCatalog.mjs.map +1 -0
  396. package/dist/services/skillSources.cjs +2 -0
  397. package/dist/services/skillSources.cjs.map +1 -0
  398. package/dist/services/skillSources.d.cts +24 -0
  399. package/dist/services/skillSources.d.cts.map +1 -0
  400. package/dist/services/skillSources.d.mts +24 -0
  401. package/dist/services/skillSources.d.mts.map +1 -0
  402. package/dist/services/skillSources.mjs +2 -0
  403. package/dist/services/skillSources.mjs.map +1 -0
  404. package/dist/services/syncState.cjs +2 -0
  405. package/dist/services/syncState.cjs.map +1 -0
  406. package/dist/services/syncState.d.cts +130 -0
  407. package/dist/services/syncState.d.cts.map +1 -0
  408. package/dist/services/syncState.d.mts +130 -0
  409. package/dist/services/syncState.d.mts.map +1 -0
  410. package/dist/services/syncState.mjs +2 -0
  411. package/dist/services/syncState.mjs.map +1 -0
  412. package/dist/utils/index.cjs +1 -0
  413. package/dist/utils/index.d.cts +5 -0
  414. package/dist/utils/index.d.mts +5 -0
  415. package/dist/utils/index.mjs +1 -0
  416. package/dist/utils/json.cjs +2 -0
  417. package/dist/utils/json.cjs.map +1 -0
  418. package/dist/utils/json.d.cts +23 -0
  419. package/dist/utils/json.d.cts.map +1 -0
  420. package/dist/utils/json.d.mts +23 -0
  421. package/dist/utils/json.d.mts.map +1 -0
  422. package/dist/utils/json.mjs +2 -0
  423. package/dist/utils/json.mjs.map +1 -0
  424. package/dist/utils/moduleResolution.cjs +2 -0
  425. package/dist/utils/moduleResolution.cjs.map +1 -0
  426. package/dist/utils/moduleResolution.d.cts +56 -0
  427. package/dist/utils/moduleResolution.d.cts.map +1 -0
  428. package/dist/utils/moduleResolution.d.mts +56 -0
  429. package/dist/utils/moduleResolution.d.mts.map +1 -0
  430. package/dist/utils/moduleResolution.mjs +2 -0
  431. package/dist/utils/moduleResolution.mjs.map +1 -0
  432. package/dist/utils/repository.cjs +2 -0
  433. package/dist/utils/repository.cjs.map +1 -0
  434. package/dist/utils/repository.d.cts +21 -0
  435. package/dist/utils/repository.d.cts.map +1 -0
  436. package/dist/utils/repository.d.mts +21 -0
  437. package/dist/utils/repository.d.mts.map +1 -0
  438. package/dist/utils/repository.mjs +2 -0
  439. package/dist/utils/repository.mjs.map +1 -0
  440. package/dist/utils/toolNames.cjs +2 -0
  441. package/dist/utils/toolNames.cjs.map +1 -0
  442. package/dist/utils/toolNames.d.cts +25 -0
  443. package/dist/utils/toolNames.d.cts.map +1 -0
  444. package/dist/utils/toolNames.d.mts +25 -0
  445. package/dist/utils/toolNames.d.mts.map +1 -0
  446. package/dist/utils/toolNames.mjs +2 -0
  447. package/dist/utils/toolNames.mjs.map +1 -0
  448. package/package.json +369 -0
@@ -0,0 +1,34 @@
1
+ import { ExtensionAPI } from "@earendil-works/pi-coding-agent";
2
+
3
+ //#region src/entries/skills.d.ts
4
+ declare const SKILLS_LEADER_CONTRIBUTION: {
5
+ source: string;
6
+ bindings: {
7
+ id: string;
8
+ path: [{
9
+ key: string;
10
+ label: string;
11
+ order: number;
12
+ }, {
13
+ key: string;
14
+ label: string;
15
+ detail: string;
16
+ }];
17
+ command: {
18
+ name: string;
19
+ };
20
+ }[];
21
+ };
22
+ /**
23
+ * Prefills the draft rather than submitting it.
24
+ *
25
+ * `/skill:<name>` is expanded by Pi inside `prompt()`, which only the editor's
26
+ * own submission path reaches: `sendUserMessage` sets `expandPromptTemplates`
27
+ * false and would deliver the literal text. Leaving the command in the editor
28
+ * keeps the expansion and costs one keystroke.
29
+ */
30
+ declare function skillInvocation(name: string): string;
31
+ declare function skillsExtension(pi: ExtensionAPI): void;
32
+ //#endregion
33
+ export { SKILLS_LEADER_CONTRIBUTION, skillsExtension as default, skillInvocation };
34
+ //# sourceMappingURL=skills.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skills.d.cts","names":[],"sources":["../../src/entries/skills.ts"],"mappings":";;;cAaa,0BAAA;;;;;;;;;;;;;;;;;;;;AAwBb;;;;;AAEC;iBAFe,eAAA,CAAgB,IAAA;AAAA,iBAIR,eAAA,CAAgB,EAAA,EAAI,YAAA"}
@@ -0,0 +1,34 @@
1
+ import { ExtensionAPI } from "@earendil-works/pi-coding-agent";
2
+
3
+ //#region src/entries/skills.d.ts
4
+ declare const SKILLS_LEADER_CONTRIBUTION: {
5
+ source: string;
6
+ bindings: {
7
+ id: string;
8
+ path: [{
9
+ key: string;
10
+ label: string;
11
+ order: number;
12
+ }, {
13
+ key: string;
14
+ label: string;
15
+ detail: string;
16
+ }];
17
+ command: {
18
+ name: string;
19
+ };
20
+ }[];
21
+ };
22
+ /**
23
+ * Prefills the draft rather than submitting it.
24
+ *
25
+ * `/skill:<name>` is expanded by Pi inside `prompt()`, which only the editor's
26
+ * own submission path reaches: `sendUserMessage` sets `expandPromptTemplates`
27
+ * false and would deliver the literal text. Leaving the command in the editor
28
+ * keeps the expansion and costs one keystroke.
29
+ */
30
+ declare function skillInvocation(name: string): string;
31
+ declare function skillsExtension(pi: ExtensionAPI): void;
32
+ //#endregion
33
+ export { SKILLS_LEADER_CONTRIBUTION, skillsExtension as default, skillInvocation };
34
+ //# sourceMappingURL=skills.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skills.d.mts","names":[],"sources":["../../src/entries/skills.ts"],"mappings":";;;cAaa,0BAAA;;;;;;;;;;;;;;;;;;;;AAwBb;;;;;AAEC;iBAFe,eAAA,CAAgB,IAAA;AAAA,iBAIR,eAAA,CAAgB,EAAA,EAAI,YAAA"}
@@ -0,0 +1,2 @@
1
+ import{requireHarnessRoot as e}from"../config/harnessState.mjs";import{buildSkillCatalog as t}from"../services/skillCatalog.mjs";import{openSkillsOverlay as n}from"./components/skillsOverlay.mjs";import{provideSkillSources as r}from"../services/skillSources.mjs";import{requireDoomConfigContext as i}from"@agimon-ai/doompi-config";import{registerDoomLeaderContribution as a}from"@agimon-ai/doompi-ui/leader";const o=`skills`,s={source:`@agimon-ai/doompi`,bindings:[{id:`skills.browse`,path:[{key:`e`,label:`extension`,order:50},{key:`s`,label:`skills`,detail:`browse catalog`}],command:{name:o}}]};function c(e){return`/skill:${e} `}function l(l){let u=r(l);a(l,s),l.registerCommand(o,{description:`Browse the skills this session loaded, and what other domains would add`,handler:async(r,a)=>{if(!a.hasUI||a.mode!==`tui`){a.ui.notify(`/skills requires interactive mode`,`error`);return}let o=i(a).harness,s=e(o),l=await n(a,{catalog:await t({repoRoot:s,activeSkillDirectories:o.skillDirectories,extensionSources:u.list()}),repoRoot:s});if(!l)return;let{skill:d}=l;a.ui.setEditorText(c(d.name)),a.ui.notify(`Loaded ${d.name} into the prompt. Press enter to run it.`,`info`)}})}export{s as SKILLS_LEADER_CONTRIBUTION,l as default,c as skillInvocation};
2
+ //# sourceMappingURL=skills.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skills.mjs","names":[],"sources":["../../src/entries/skills.ts"],"sourcesContent":["import { requireDoomConfigContext } from '@agimon-ai/doompi-config';\nimport { registerDoomLeaderContribution, type DoomLeaderContribution } from '@agimon-ai/doompi-ui/leader';\nimport type { ExtensionAPI } from '@earendil-works/pi-coding-agent';\nimport { openSkillsOverlay } from './components/skillsOverlay.ts';\nimport { requireHarnessRoot } from '../config/harnessState.ts';\nimport { buildSkillCatalog } from '../services/skillCatalog.ts';\nimport { provideSkillSources } from '../services/skillSources.ts';\n\nconst SKILLS_COMMAND = 'skills';\nconst LEADER_SOURCE = '@agimon-ai/doompi';\nconst INFO = 'info';\nconst ERROR = 'error';\n\nexport const SKILLS_LEADER_CONTRIBUTION = {\n source: LEADER_SOURCE,\n bindings: [\n {\n id: 'skills.browse',\n path: [\n // Label and order repeat the core extension group exactly; the registry\n // rejects a contribution whose shared prefix disagrees.\n { key: 'e', label: 'extension', order: 50 },\n { key: 's', label: 'skills', detail: 'browse catalog' },\n ],\n command: { name: SKILLS_COMMAND },\n },\n ],\n} satisfies DoomLeaderContribution;\n\n/**\n * Prefills the draft rather than submitting it.\n *\n * `/skill:<name>` is expanded by Pi inside `prompt()`, which only the editor's\n * own submission path reaches: `sendUserMessage` sets `expandPromptTemplates`\n * false and would deliver the literal text. Leaving the command in the editor\n * keeps the expansion and costs one keystroke.\n */\nexport function skillInvocation(name: string): string {\n return `/skill:${name} `;\n}\n\nexport default function skillsExtension(pi: ExtensionAPI): void {\n const sources = provideSkillSources(pi);\n\n registerDoomLeaderContribution(pi, SKILLS_LEADER_CONTRIBUTION);\n\n pi.registerCommand(SKILLS_COMMAND, {\n description: 'Browse the skills this session loaded, and what other domains would add',\n handler: async (_args, ctx) => {\n if (!ctx.hasUI || ctx.mode !== 'tui') {\n ctx.ui.notify('/skills requires interactive mode', ERROR);\n return;\n }\n const state = requireDoomConfigContext(ctx).harness;\n const repoRoot = requireHarnessRoot(state);\n const catalog = await buildSkillCatalog({\n repoRoot,\n activeSkillDirectories: state.skillDirectories,\n extensionSources: sources.list(),\n });\n\n const result = await openSkillsOverlay(ctx, { catalog, repoRoot });\n if (!result) return;\n const { skill } = result;\n ctx.ui.setEditorText(skillInvocation(skill.name));\n ctx.ui.notify(`Loaded ${skill.name} into the prompt. Press enter to run it.`, INFO);\n },\n });\n}\n"],"mappings":"wZAQA,MAAM,EAAiB,SAKV,EAA6B,CACxC,OAAQ,oBACR,SAAU,CACR,CACE,GAAI,gBACJ,KAAM,CAGJ,CAAE,IAAK,IAAK,MAAO,YAAa,MAAO,GAAI,CAC3C,CAAE,IAAK,IAAK,MAAO,SAAU,OAAQ,iBAAkB,CACxD,CACD,QAAS,CAAE,KAAM,EAAgB,CAClC,CACF,CACF,CAUD,SAAgB,EAAgB,EAAsB,CACpD,MAAO,UAAU,EAAK,GAGxB,SAAwB,EAAgB,EAAwB,CAC9D,IAAM,EAAU,EAAoB,EAAG,CAEvC,EAA+B,EAAI,EAA2B,CAE9D,EAAG,gBAAgB,EAAgB,CACjC,YAAa,0EACb,QAAS,MAAO,EAAO,IAAQ,CAC7B,GAAI,CAAC,EAAI,OAAS,EAAI,OAAS,MAAO,CACpC,EAAI,GAAG,OAAO,oCAAqC,QAAM,CACzD,OAEF,IAAM,EAAQ,EAAyB,EAAI,CAAC,QACtC,EAAW,EAAmB,EAAM,CAOpC,EAAS,MAAM,EAAkB,EAAK,CAAE,QAAA,MANxB,EAAkB,CACtC,WACA,uBAAwB,EAAM,iBAC9B,iBAAkB,EAAQ,MAAM,CACjC,CAAC,CAEqD,WAAU,CAAC,CAClE,GAAI,CAAC,EAAQ,OACb,GAAM,CAAE,SAAU,EAClB,EAAI,GAAG,cAAc,EAAgB,EAAM,KAAK,CAAC,CACjD,EAAI,GAAG,OAAO,UAAU,EAAM,KAAK,0CAA2C,OAAK,EAEtF,CAAC"}
@@ -0,0 +1,4 @@
1
+ Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});const e=require(`../_virtual/_rolldown/runtime.cjs`),t=require(`../logSinkTelemetry.cjs`);let n=require(`node:path`);n=e.__toESM(n,1);let r=require(`node:fs`);r=e.__toESM(r,1);let i=require(`node:os`);i=e.__toESM(i,1);let a=require(`@agimon-ai/doompi-config`),o=require(`node:child_process`);const s=`style-system`,c=`${s}.config.yaml`,l=`Playground`,u=/\.stories\.(?:ts|tsx)$/,d=/export\s+const\s+([A-Z][A-Za-z0-9_]*)\b/g;function f(e,t){if(e.isError||e.toolName!==`write`&&e.toolName!==`edit`)return;let r=e.input;if(!(typeof r.path!=`string`||!u.test(r.path)))return n.default.resolve(t,r.path)}function p(e,t){let i=n.default.dirname(e),a=n.default.resolve(t);for(;i.startsWith(a);){if(r.default.existsSync(n.default.join(i,c)))return n.default.relative(a,i)||`.`;let e=n.default.dirname(i);if(e===i)break;i=e}}function m(e,t){return t.match(/title\s*:\s*['"]([^'"]+)['"]/)?.[1]?.trim()||n.default.basename(e).replace(/\.stories\.(?:ts|tsx)$/,``)}function h(e){if(/export\s+const\s+Playground\b/.test(e))return l;let t=d.exec(e)?.[1];return d.lastIndex=0,t??l}function g(e,t){if(!u.test(e)||!r.default.existsSync(e))return;let n=p(e,t);if(!n)return;let i=r.default.readFileSync(e,`utf8`);return{storyPath:e,projectPath:n,componentName:m(e,i),storyName:h(i)}}function _(e){let t=e.trim();if(!t)throw Error(`${s} returned no output`);return JSON.parse(t)}async function v(e,t){let n=[`exec`,s,`get-ui-component`,`--component-name`,e.componentName,`--app-path`,e.projectPath,`--story-name`,e.storyName];return new Promise((e,r)=>{let i=(0,o.spawn)(`pnpm`,n,{cwd:t,env:{...process.env,LOG_LEVEL:process.env.LOG_LEVEL??`info`},stdio:[`ignore`,`pipe`,`pipe`]}),a=``,c=``,l=setTimeout(()=>i.kill(`SIGTERM`),12e4);i.stdout.on(`data`,e=>{a+=e.toString()}),i.stderr.on(`data`,e=>{c+=e.toString()}),i.once(`error`,e=>{clearTimeout(l),r(e)}),i.once(`exit`,t=>{if(clearTimeout(l),t!==0){r(Error(c.trim()||`${s} exited with code ${t??`unknown`}`));return}try{e(_(a))}catch(e){r(e)}})})}async function y(e,t,a=r.default.mkdtempSync(n.default.join(i.default.tmpdir(),`agent-harness-style-system-`))){let o=n.default.join(a,`${s}-visuals`);await r.default.promises.mkdir(o,{recursive:!0,mode:448});let c=n.default.basename(t.storyPath).replace(/[^a-zA-Z0-9.-]/g,`-`).replace(/\.stories\./,`.`),l=n.default.join(o,`${Date.now()}-${c}.png`);return await r.default.promises.copyFile(e,l),await r.default.promises.chmod(l,384),l}function b(e,t,n){return[`Style-system visual generated for the story you just changed.`,...[`Image path: ${n}`,`Story file: ${t.storyFilePath??e.storyPath}`,`Component: ${t.componentTitle??e.componentName}`,`Story: ${t.renderedStory??e.storyName}`,t.colorScheme?`Color scheme: ${t.colorScheme}`:void 0,t.dimensions?`Dimensions: ${t.dimensions}`:void 0].filter(e=>!!e),`The image is saved and ready to inspect: call the read tool on the image path above to view it.`,`If the layout, spacing, color, overflow, or hierarchy looks wrong, adjust the UI and story, then let this hook render it again.`].join(`
2
+ `)}function x(e,t){let n=t instanceof Error?t.message:String(t);return[`Your file change was applied, but ${s} could not generate a visual for it.`,`Story file: ${e.storyPath}`,`Command: pnpm exec ${s} get-ui-component --component-name ${JSON.stringify(e.componentName)} --app-path ${JSON.stringify(e.projectPath)} --story-name ${JSON.stringify(e.storyName)}`,`Error: ${n}`,`Do not treat the UI as visually verified. Run the command above to investigate.`].join(`
3
+ `)}function S(e,o=t.createHarnessTelemetry()){e.on(`tool_result`,async(e,c)=>{let l=f(e,c.cwd);if(!l)return;let u=(0,a.requireDoomConfigContext)(c).harness,d=u.root??c.cwd,p=g(l,d);if(!p)return;let m=`style-system:${e.toolCallId}`;c.hasUI&&c.ui.setStatus(m,`Rendering ${p.componentName} visual...`);try{let t=await v(p,d);if(!t.imagePath)throw Error(`${s} did not return an imagePath`);let a=await y(t.imagePath,p,u.temporaryDirectory??r.default.mkdtempSync(n.default.join(i.default.tmpdir(),`agent-harness-style-system-`)));return{content:[...e.content,{type:`text`,text:b(p,t,a)}]}}catch(n){return o.recordWarning(t.HARNESS_EVENT.styleSystemRenderFailed,n,{"style_system.component":p.componentName}),{content:[...e.content,{type:`text`,text:x(p,n)}]}}finally{c.hasUI&&c.ui.setStatus(m,void 0)}})}exports.copyImageToHarnessTemp=y,exports.default=S,exports.eventPath=f,exports.failureMessage=x,exports.inferStoryRenderRequest=g,exports.parseStyleSystemOutput=_,exports.successMessage=b;
4
+ //# sourceMappingURL=styleSystem.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"styleSystem.cjs","names":["path","fs","os","createHarnessTelemetry","HARNESS_EVENT"],"sources":["../../src/entries/styleSystem.ts"],"sourcesContent":["import { spawn } from 'node:child_process';\nimport fs from 'node:fs';\nimport os from 'node:os';\nimport path from 'node:path';\nimport { requireDoomConfigContext } from '@agimon-ai/doompi-config';\nimport type { ExtensionAPI, ToolResultEvent } from '@earendil-works/pi-coding-agent';\nimport { createHarnessTelemetry, HARNESS_EVENT, type HarnessTelemetry } from '../logSinkTelemetry.ts';\n\ninterface StoryRenderRequest {\n storyPath: string;\n projectPath: string;\n componentName: string;\n storyName: string;\n}\n\ninterface StyleSystemResult {\n imagePath?: string;\n storyFilePath?: string;\n componentTitle?: string;\n renderedStory?: string;\n colorScheme?: string;\n viewport?: { width: number; height: number };\n dimensions?: string;\n}\n\nconst STYLE_SYSTEM_PACKAGE = 'style-system';\nconst STYLE_SYSTEM_CONFIG_FILE = `${STYLE_SYSTEM_PACKAGE}.config.yaml`;\nconst DEFAULT_STORY_NAME = 'Playground';\nconst STORY_FILE_PATTERN = /\\.stories\\.(?:ts|tsx)$/;\nconst EXPORT_STORY_PATTERN = /export\\s+const\\s+([A-Z][A-Za-z0-9_]*)\\b/g;\nconst TOOL_TIMEOUT_MS = 120_000;\n\nexport function eventPath(event: ToolResultEvent, cwd: string): string | undefined {\n if (event.isError || (event.toolName !== 'write' && event.toolName !== 'edit')) return undefined;\n const input = event.input as { path?: unknown };\n if (typeof input.path !== 'string' || !STORY_FILE_PATTERN.test(input.path)) return undefined;\n return path.resolve(cwd, input.path);\n}\n\nfunction findStyleSystemProject(startFile: string, root: string): string | undefined {\n let directory = path.dirname(startFile);\n const resolvedRoot = path.resolve(root);\n while (directory.startsWith(resolvedRoot)) {\n if (fs.existsSync(path.join(directory, STYLE_SYSTEM_CONFIG_FILE))) {\n return path.relative(resolvedRoot, directory) || '.';\n }\n const parent = path.dirname(directory);\n if (parent === directory) break;\n directory = parent;\n }\n return undefined;\n}\n\nfunction inferComponentName(storyPath: string, content: string): string {\n const title = content.match(/title\\s*:\\s*['\"]([^'\"]+)['\"]/)?.[1]?.trim();\n if (title) return title;\n return path.basename(storyPath).replace(/\\.stories\\.(?:ts|tsx)$/, '');\n}\n\nfunction inferStoryName(content: string): string {\n if (/export\\s+const\\s+Playground\\b/.test(content)) return DEFAULT_STORY_NAME;\n const firstExportedStory = EXPORT_STORY_PATTERN.exec(content)?.[1];\n EXPORT_STORY_PATTERN.lastIndex = 0;\n return firstExportedStory ?? DEFAULT_STORY_NAME;\n}\n\nexport function inferStoryRenderRequest(storyPath: string, root: string): StoryRenderRequest | undefined {\n if (!STORY_FILE_PATTERN.test(storyPath) || !fs.existsSync(storyPath)) return undefined;\n const projectPath = findStyleSystemProject(storyPath, root);\n if (!projectPath) return undefined;\n const content = fs.readFileSync(storyPath, 'utf8');\n return {\n storyPath,\n projectPath,\n componentName: inferComponentName(storyPath, content),\n storyName: inferStoryName(content),\n };\n}\n\nexport function parseStyleSystemOutput(stdout: string): StyleSystemResult {\n const text = stdout.trim();\n if (!text) throw new Error(`${STYLE_SYSTEM_PACKAGE} returned no output`);\n return JSON.parse(text) as StyleSystemResult;\n}\n\n/* v8 ignore next 57 */\nasync function runStyleSystem(request: StoryRenderRequest, root: string): Promise<StyleSystemResult> {\n const args = [\n 'exec',\n STYLE_SYSTEM_PACKAGE,\n 'get-ui-component',\n '--component-name',\n request.componentName,\n '--app-path',\n request.projectPath,\n '--story-name',\n request.storyName,\n ];\n\n return new Promise((resolve, reject) => {\n const child = spawn('pnpm', args, {\n cwd: root,\n env: { ...process.env, LOG_LEVEL: process.env.LOG_LEVEL ?? 'info' },\n stdio: ['ignore', 'pipe', 'pipe'],\n });\n let stdout = '';\n let stderr = '';\n const timer = setTimeout(() => child.kill('SIGTERM'), TOOL_TIMEOUT_MS);\n child.stdout.on('data', (chunk: Buffer) => {\n stdout += chunk.toString();\n });\n child.stderr.on('data', (chunk: Buffer) => {\n stderr += chunk.toString();\n });\n child.once('error', (error) => {\n clearTimeout(timer);\n reject(error);\n });\n child.once('exit', (code) => {\n clearTimeout(timer);\n if (code !== 0) {\n reject(new Error(stderr.trim() || `${STYLE_SYSTEM_PACKAGE} exited with code ${code ?? 'unknown'}`));\n return;\n }\n try {\n resolve(parseStyleSystemOutput(stdout));\n } catch (error) {\n reject(error);\n }\n });\n });\n}\n\nexport async function copyImageToHarnessTemp(\n imagePath: string,\n request: StoryRenderRequest,\n outputDirectory: string = fs.mkdtempSync(path.join(os.tmpdir(), 'agent-harness-style-system-')),\n): Promise<string> {\n const targetDirectory = path.join(outputDirectory, `${STYLE_SYSTEM_PACKAGE}-visuals`);\n await fs.promises.mkdir(targetDirectory, { recursive: true, mode: 0o700 });\n const baseName = path\n .basename(request.storyPath)\n .replace(/[^a-zA-Z0-9.-]/g, '-')\n .replace(/\\.stories\\./, '.');\n const targetPath = path.join(targetDirectory, `${Date.now()}-${baseName}.png`);\n await fs.promises.copyFile(imagePath, targetPath);\n await fs.promises.chmod(targetPath, 0o600);\n return targetPath;\n}\n\nexport function successMessage(\n request: StoryRenderRequest,\n result: StyleSystemResult,\n copiedImagePath: string,\n): string {\n const details = [\n `Image path: ${copiedImagePath}`,\n `Story file: ${result.storyFilePath ?? request.storyPath}`,\n `Component: ${result.componentTitle ?? request.componentName}`,\n `Story: ${result.renderedStory ?? request.storyName}`,\n result.colorScheme ? `Color scheme: ${result.colorScheme}` : undefined,\n result.dimensions ? `Dimensions: ${result.dimensions}` : undefined,\n ].filter((line): line is string => Boolean(line));\n\n return [\n 'Style-system visual generated for the story you just changed.',\n ...details,\n 'The image is saved and ready to inspect: call the read tool on the image path above to view it.',\n 'If the layout, spacing, color, overflow, or hierarchy looks wrong, adjust the UI and story, then let this hook render it again.',\n ].join('\\n');\n}\n\nexport function failureMessage(request: StoryRenderRequest, error: unknown): string {\n const message = error instanceof Error ? error.message : String(error);\n return [\n `Your file change was applied, but ${STYLE_SYSTEM_PACKAGE} could not generate a visual for it.`,\n `Story file: ${request.storyPath}`,\n `Command: pnpm exec ${STYLE_SYSTEM_PACKAGE} get-ui-component --component-name ${JSON.stringify(request.componentName)} --app-path ${JSON.stringify(request.projectPath)} --story-name ${JSON.stringify(request.storyName)}`,\n `Error: ${message}`,\n 'Do not treat the UI as visually verified. Run the command above to investigate.',\n ].join('\\n');\n}\n\n/* v8 ignore next 23 */\n// Pi's extension loader resolves this default export and rejects the module\n// without it (\"Extension does not export a valid factory function\"). This must\n// stay a default export; see the pi-extension override in vibe-lint.config.yaml.\nexport default function styleSystemVisuals(\n pi: ExtensionAPI,\n telemetry: HarnessTelemetry = createHarnessTelemetry(),\n): void {\n pi.on('tool_result', async (event, ctx) => {\n const changedPath = eventPath(event, ctx.cwd);\n if (!changedPath) return undefined;\n\n const harness = requireDoomConfigContext(ctx).harness;\n const root = harness.root ?? ctx.cwd;\n const request = inferStoryRenderRequest(changedPath, root);\n if (!request) return undefined;\n const statusKey = `style-system:${event.toolCallId}`;\n if (ctx.hasUI) ctx.ui.setStatus(statusKey, `Rendering ${request.componentName} visual...`);\n\n try {\n const result = await runStyleSystem(request, root);\n if (!result.imagePath) throw new Error(`${STYLE_SYSTEM_PACKAGE} did not return an imagePath`);\n const copiedImagePath = await copyImageToHarnessTemp(\n result.imagePath,\n request,\n harness.temporaryDirectory ?? fs.mkdtempSync(path.join(os.tmpdir(), 'agent-harness-style-system-')),\n );\n return {\n content: [...event.content, { type: 'text' as const, text: successMessage(request, result, copiedImagePath) }],\n };\n } catch (error) {\n void telemetry.recordWarning(HARNESS_EVENT.styleSystemRenderFailed, error, {\n 'style_system.component': request.componentName,\n });\n // The tool itself succeeded; only this hook failed. Surface the reason without\n // reporting the write as failed, which would invite a retry of a change that landed.\n return {\n content: [...event.content, { type: 'text' as const, text: failureMessage(request, error) }],\n };\n } finally {\n if (ctx.hasUI) ctx.ui.setStatus(statusKey, undefined);\n }\n });\n}\n"],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ import { HarnessTelemetry } from "../logSinkTelemetry.cjs";
2
+ import { ExtensionAPI, ToolResultEvent } from "@earendil-works/pi-coding-agent";
3
+
4
+ //#region src/entries/styleSystem.d.ts
5
+ interface StoryRenderRequest {
6
+ storyPath: string;
7
+ projectPath: string;
8
+ componentName: string;
9
+ storyName: string;
10
+ }
11
+ interface StyleSystemResult {
12
+ imagePath?: string;
13
+ storyFilePath?: string;
14
+ componentTitle?: string;
15
+ renderedStory?: string;
16
+ colorScheme?: string;
17
+ viewport?: {
18
+ width: number;
19
+ height: number;
20
+ };
21
+ dimensions?: string;
22
+ }
23
+ declare function eventPath(event: ToolResultEvent, cwd: string): string | undefined;
24
+ declare function inferStoryRenderRequest(storyPath: string, root: string): StoryRenderRequest | undefined;
25
+ declare function parseStyleSystemOutput(stdout: string): StyleSystemResult;
26
+ declare function copyImageToHarnessTemp(imagePath: string, request: StoryRenderRequest, outputDirectory?: string): Promise<string>;
27
+ declare function successMessage(request: StoryRenderRequest, result: StyleSystemResult, copiedImagePath: string): string;
28
+ declare function failureMessage(request: StoryRenderRequest, error: unknown): string;
29
+ declare function styleSystemVisuals(pi: ExtensionAPI, telemetry?: HarnessTelemetry): void;
30
+ //#endregion
31
+ export { copyImageToHarnessTemp, styleSystemVisuals as default, eventPath, failureMessage, inferStoryRenderRequest, parseStyleSystemOutput, successMessage };
32
+ //# sourceMappingURL=styleSystem.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"styleSystem.d.cts","names":[],"sources":["../../src/entries/styleSystem.ts"],"mappings":";;;;UAQU,kBAAA;EACR,SAAA;EACA,WAAA;EACA,aAAA;EACA,SAAA;AAAA;AAAA,UAGQ,iBAAA;EACR,SAAA;EACA,aAAA;EACA,cAAA;EACA,aAAA;EACA,WAAA;EACA,QAAA;IAAa,KAAA;IAAe,MAAA;EAAA;EAC5B,UAAA;AAAA;AAAA,iBAUc,SAAA,CAAU,KAAA,EAAO,eAAA,EAAiB,GAAA;AAAA,iBAkClC,uBAAA,CAAwB,SAAA,UAAmB,IAAA,WAAe,kBAAA;AAAA,iBAa1D,sBAAA,CAAuB,MAAA,WAAiB,iBAAA;AAAA,iBAsDlC,sBAAA,CACpB,SAAA,UACA,OAAA,EAAS,kBAAA,EACT,eAAA,YACC,OAAA;AAAA,iBAaa,cAAA,CACd,OAAA,EAAS,kBAAA,EACT,MAAA,EAAQ,iBAAA,EACR,eAAA;AAAA,iBAmBc,cAAA,CAAe,OAAA,EAAS,kBAAA,EAAoB,KAAA;AAAA,iBAepC,kBAAA,CACtB,EAAA,EAAI,YAAA,EACJ,SAAA,GAAW,gBAAA"}
@@ -0,0 +1,32 @@
1
+ import { HarnessTelemetry } from "../logSinkTelemetry.mjs";
2
+ import { ExtensionAPI, ToolResultEvent } from "@earendil-works/pi-coding-agent";
3
+
4
+ //#region src/entries/styleSystem.d.ts
5
+ interface StoryRenderRequest {
6
+ storyPath: string;
7
+ projectPath: string;
8
+ componentName: string;
9
+ storyName: string;
10
+ }
11
+ interface StyleSystemResult {
12
+ imagePath?: string;
13
+ storyFilePath?: string;
14
+ componentTitle?: string;
15
+ renderedStory?: string;
16
+ colorScheme?: string;
17
+ viewport?: {
18
+ width: number;
19
+ height: number;
20
+ };
21
+ dimensions?: string;
22
+ }
23
+ declare function eventPath(event: ToolResultEvent, cwd: string): string | undefined;
24
+ declare function inferStoryRenderRequest(storyPath: string, root: string): StoryRenderRequest | undefined;
25
+ declare function parseStyleSystemOutput(stdout: string): StyleSystemResult;
26
+ declare function copyImageToHarnessTemp(imagePath: string, request: StoryRenderRequest, outputDirectory?: string): Promise<string>;
27
+ declare function successMessage(request: StoryRenderRequest, result: StyleSystemResult, copiedImagePath: string): string;
28
+ declare function failureMessage(request: StoryRenderRequest, error: unknown): string;
29
+ declare function styleSystemVisuals(pi: ExtensionAPI, telemetry?: HarnessTelemetry): void;
30
+ //#endregion
31
+ export { copyImageToHarnessTemp, styleSystemVisuals as default, eventPath, failureMessage, inferStoryRenderRequest, parseStyleSystemOutput, successMessage };
32
+ //# sourceMappingURL=styleSystem.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"styleSystem.d.mts","names":[],"sources":["../../src/entries/styleSystem.ts"],"mappings":";;;;UAQU,kBAAA;EACR,SAAA;EACA,WAAA;EACA,aAAA;EACA,SAAA;AAAA;AAAA,UAGQ,iBAAA;EACR,SAAA;EACA,aAAA;EACA,cAAA;EACA,aAAA;EACA,WAAA;EACA,QAAA;IAAa,KAAA;IAAe,MAAA;EAAA;EAC5B,UAAA;AAAA;AAAA,iBAUc,SAAA,CAAU,KAAA,EAAO,eAAA,EAAiB,GAAA;AAAA,iBAkClC,uBAAA,CAAwB,SAAA,UAAmB,IAAA,WAAe,kBAAA;AAAA,iBAa1D,sBAAA,CAAuB,MAAA,WAAiB,iBAAA;AAAA,iBAsDlC,sBAAA,CACpB,SAAA,UACA,OAAA,EAAS,kBAAA,EACT,eAAA,YACC,OAAA;AAAA,iBAaa,cAAA,CACd,OAAA,EAAS,kBAAA,EACT,MAAA,EAAQ,iBAAA,EACR,eAAA;AAAA,iBAmBc,cAAA,CAAe,OAAA,EAAS,kBAAA,EAAoB,KAAA;AAAA,iBAepC,kBAAA,CACtB,EAAA,EAAI,YAAA,EACJ,SAAA,GAAW,gBAAA"}
@@ -0,0 +1,4 @@
1
+ import{HARNESS_EVENT as e,createHarnessTelemetry as t}from"../logSinkTelemetry.mjs";import n from"node:path";import r from"node:fs";import i from"node:os";import{requireDoomConfigContext as a}from"@agimon-ai/doompi-config";import{spawn as o}from"node:child_process";const s=`style-system`,c=`${s}.config.yaml`,l=`Playground`,u=/\.stories\.(?:ts|tsx)$/,d=/export\s+const\s+([A-Z][A-Za-z0-9_]*)\b/g;function f(e,t){if(e.isError||e.toolName!==`write`&&e.toolName!==`edit`)return;let r=e.input;if(!(typeof r.path!=`string`||!u.test(r.path)))return n.resolve(t,r.path)}function p(e,t){let i=n.dirname(e),a=n.resolve(t);for(;i.startsWith(a);){if(r.existsSync(n.join(i,c)))return n.relative(a,i)||`.`;let e=n.dirname(i);if(e===i)break;i=e}}function m(e,t){return t.match(/title\s*:\s*['"]([^'"]+)['"]/)?.[1]?.trim()||n.basename(e).replace(/\.stories\.(?:ts|tsx)$/,``)}function h(e){if(/export\s+const\s+Playground\b/.test(e))return l;let t=d.exec(e)?.[1];return d.lastIndex=0,t??l}function g(e,t){if(!u.test(e)||!r.existsSync(e))return;let n=p(e,t);if(!n)return;let i=r.readFileSync(e,`utf8`);return{storyPath:e,projectPath:n,componentName:m(e,i),storyName:h(i)}}function _(e){let t=e.trim();if(!t)throw Error(`${s} returned no output`);return JSON.parse(t)}async function v(e,t){let n=[`exec`,s,`get-ui-component`,`--component-name`,e.componentName,`--app-path`,e.projectPath,`--story-name`,e.storyName];return new Promise((e,r)=>{let i=o(`pnpm`,n,{cwd:t,env:{...process.env,LOG_LEVEL:process.env.LOG_LEVEL??`info`},stdio:[`ignore`,`pipe`,`pipe`]}),a=``,c=``,l=setTimeout(()=>i.kill(`SIGTERM`),12e4);i.stdout.on(`data`,e=>{a+=e.toString()}),i.stderr.on(`data`,e=>{c+=e.toString()}),i.once(`error`,e=>{clearTimeout(l),r(e)}),i.once(`exit`,t=>{if(clearTimeout(l),t!==0){r(Error(c.trim()||`${s} exited with code ${t??`unknown`}`));return}try{e(_(a))}catch(e){r(e)}})})}async function y(e,t,a=r.mkdtempSync(n.join(i.tmpdir(),`agent-harness-style-system-`))){let o=n.join(a,`${s}-visuals`);await r.promises.mkdir(o,{recursive:!0,mode:448});let c=n.basename(t.storyPath).replace(/[^a-zA-Z0-9.-]/g,`-`).replace(/\.stories\./,`.`),l=n.join(o,`${Date.now()}-${c}.png`);return await r.promises.copyFile(e,l),await r.promises.chmod(l,384),l}function b(e,t,n){return[`Style-system visual generated for the story you just changed.`,...[`Image path: ${n}`,`Story file: ${t.storyFilePath??e.storyPath}`,`Component: ${t.componentTitle??e.componentName}`,`Story: ${t.renderedStory??e.storyName}`,t.colorScheme?`Color scheme: ${t.colorScheme}`:void 0,t.dimensions?`Dimensions: ${t.dimensions}`:void 0].filter(e=>!!e),`The image is saved and ready to inspect: call the read tool on the image path above to view it.`,`If the layout, spacing, color, overflow, or hierarchy looks wrong, adjust the UI and story, then let this hook render it again.`].join(`
2
+ `)}function x(e,t){let n=t instanceof Error?t.message:String(t);return[`Your file change was applied, but ${s} could not generate a visual for it.`,`Story file: ${e.storyPath}`,`Command: pnpm exec ${s} get-ui-component --component-name ${JSON.stringify(e.componentName)} --app-path ${JSON.stringify(e.projectPath)} --story-name ${JSON.stringify(e.storyName)}`,`Error: ${n}`,`Do not treat the UI as visually verified. Run the command above to investigate.`].join(`
3
+ `)}function S(o,c=t()){o.on(`tool_result`,async(t,o)=>{let l=f(t,o.cwd);if(!l)return;let u=a(o).harness,d=u.root??o.cwd,p=g(l,d);if(!p)return;let m=`style-system:${t.toolCallId}`;o.hasUI&&o.ui.setStatus(m,`Rendering ${p.componentName} visual...`);try{let e=await v(p,d);if(!e.imagePath)throw Error(`${s} did not return an imagePath`);let a=await y(e.imagePath,p,u.temporaryDirectory??r.mkdtempSync(n.join(i.tmpdir(),`agent-harness-style-system-`)));return{content:[...t.content,{type:`text`,text:b(p,e,a)}]}}catch(n){return c.recordWarning(e.styleSystemRenderFailed,n,{"style_system.component":p.componentName}),{content:[...t.content,{type:`text`,text:x(p,n)}]}}finally{o.hasUI&&o.ui.setStatus(m,void 0)}})}export{y as copyImageToHarnessTemp,S as default,f as eventPath,x as failureMessage,g as inferStoryRenderRequest,_ as parseStyleSystemOutput,b as successMessage};
4
+ //# sourceMappingURL=styleSystem.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"styleSystem.mjs","names":[],"sources":["../../src/entries/styleSystem.ts"],"sourcesContent":["import { spawn } from 'node:child_process';\nimport fs from 'node:fs';\nimport os from 'node:os';\nimport path from 'node:path';\nimport { requireDoomConfigContext } from '@agimon-ai/doompi-config';\nimport type { ExtensionAPI, ToolResultEvent } from '@earendil-works/pi-coding-agent';\nimport { createHarnessTelemetry, HARNESS_EVENT, type HarnessTelemetry } from '../logSinkTelemetry.ts';\n\ninterface StoryRenderRequest {\n storyPath: string;\n projectPath: string;\n componentName: string;\n storyName: string;\n}\n\ninterface StyleSystemResult {\n imagePath?: string;\n storyFilePath?: string;\n componentTitle?: string;\n renderedStory?: string;\n colorScheme?: string;\n viewport?: { width: number; height: number };\n dimensions?: string;\n}\n\nconst STYLE_SYSTEM_PACKAGE = 'style-system';\nconst STYLE_SYSTEM_CONFIG_FILE = `${STYLE_SYSTEM_PACKAGE}.config.yaml`;\nconst DEFAULT_STORY_NAME = 'Playground';\nconst STORY_FILE_PATTERN = /\\.stories\\.(?:ts|tsx)$/;\nconst EXPORT_STORY_PATTERN = /export\\s+const\\s+([A-Z][A-Za-z0-9_]*)\\b/g;\nconst TOOL_TIMEOUT_MS = 120_000;\n\nexport function eventPath(event: ToolResultEvent, cwd: string): string | undefined {\n if (event.isError || (event.toolName !== 'write' && event.toolName !== 'edit')) return undefined;\n const input = event.input as { path?: unknown };\n if (typeof input.path !== 'string' || !STORY_FILE_PATTERN.test(input.path)) return undefined;\n return path.resolve(cwd, input.path);\n}\n\nfunction findStyleSystemProject(startFile: string, root: string): string | undefined {\n let directory = path.dirname(startFile);\n const resolvedRoot = path.resolve(root);\n while (directory.startsWith(resolvedRoot)) {\n if (fs.existsSync(path.join(directory, STYLE_SYSTEM_CONFIG_FILE))) {\n return path.relative(resolvedRoot, directory) || '.';\n }\n const parent = path.dirname(directory);\n if (parent === directory) break;\n directory = parent;\n }\n return undefined;\n}\n\nfunction inferComponentName(storyPath: string, content: string): string {\n const title = content.match(/title\\s*:\\s*['\"]([^'\"]+)['\"]/)?.[1]?.trim();\n if (title) return title;\n return path.basename(storyPath).replace(/\\.stories\\.(?:ts|tsx)$/, '');\n}\n\nfunction inferStoryName(content: string): string {\n if (/export\\s+const\\s+Playground\\b/.test(content)) return DEFAULT_STORY_NAME;\n const firstExportedStory = EXPORT_STORY_PATTERN.exec(content)?.[1];\n EXPORT_STORY_PATTERN.lastIndex = 0;\n return firstExportedStory ?? DEFAULT_STORY_NAME;\n}\n\nexport function inferStoryRenderRequest(storyPath: string, root: string): StoryRenderRequest | undefined {\n if (!STORY_FILE_PATTERN.test(storyPath) || !fs.existsSync(storyPath)) return undefined;\n const projectPath = findStyleSystemProject(storyPath, root);\n if (!projectPath) return undefined;\n const content = fs.readFileSync(storyPath, 'utf8');\n return {\n storyPath,\n projectPath,\n componentName: inferComponentName(storyPath, content),\n storyName: inferStoryName(content),\n };\n}\n\nexport function parseStyleSystemOutput(stdout: string): StyleSystemResult {\n const text = stdout.trim();\n if (!text) throw new Error(`${STYLE_SYSTEM_PACKAGE} returned no output`);\n return JSON.parse(text) as StyleSystemResult;\n}\n\n/* v8 ignore next 57 */\nasync function runStyleSystem(request: StoryRenderRequest, root: string): Promise<StyleSystemResult> {\n const args = [\n 'exec',\n STYLE_SYSTEM_PACKAGE,\n 'get-ui-component',\n '--component-name',\n request.componentName,\n '--app-path',\n request.projectPath,\n '--story-name',\n request.storyName,\n ];\n\n return new Promise((resolve, reject) => {\n const child = spawn('pnpm', args, {\n cwd: root,\n env: { ...process.env, LOG_LEVEL: process.env.LOG_LEVEL ?? 'info' },\n stdio: ['ignore', 'pipe', 'pipe'],\n });\n let stdout = '';\n let stderr = '';\n const timer = setTimeout(() => child.kill('SIGTERM'), TOOL_TIMEOUT_MS);\n child.stdout.on('data', (chunk: Buffer) => {\n stdout += chunk.toString();\n });\n child.stderr.on('data', (chunk: Buffer) => {\n stderr += chunk.toString();\n });\n child.once('error', (error) => {\n clearTimeout(timer);\n reject(error);\n });\n child.once('exit', (code) => {\n clearTimeout(timer);\n if (code !== 0) {\n reject(new Error(stderr.trim() || `${STYLE_SYSTEM_PACKAGE} exited with code ${code ?? 'unknown'}`));\n return;\n }\n try {\n resolve(parseStyleSystemOutput(stdout));\n } catch (error) {\n reject(error);\n }\n });\n });\n}\n\nexport async function copyImageToHarnessTemp(\n imagePath: string,\n request: StoryRenderRequest,\n outputDirectory: string = fs.mkdtempSync(path.join(os.tmpdir(), 'agent-harness-style-system-')),\n): Promise<string> {\n const targetDirectory = path.join(outputDirectory, `${STYLE_SYSTEM_PACKAGE}-visuals`);\n await fs.promises.mkdir(targetDirectory, { recursive: true, mode: 0o700 });\n const baseName = path\n .basename(request.storyPath)\n .replace(/[^a-zA-Z0-9.-]/g, '-')\n .replace(/\\.stories\\./, '.');\n const targetPath = path.join(targetDirectory, `${Date.now()}-${baseName}.png`);\n await fs.promises.copyFile(imagePath, targetPath);\n await fs.promises.chmod(targetPath, 0o600);\n return targetPath;\n}\n\nexport function successMessage(\n request: StoryRenderRequest,\n result: StyleSystemResult,\n copiedImagePath: string,\n): string {\n const details = [\n `Image path: ${copiedImagePath}`,\n `Story file: ${result.storyFilePath ?? request.storyPath}`,\n `Component: ${result.componentTitle ?? request.componentName}`,\n `Story: ${result.renderedStory ?? request.storyName}`,\n result.colorScheme ? `Color scheme: ${result.colorScheme}` : undefined,\n result.dimensions ? `Dimensions: ${result.dimensions}` : undefined,\n ].filter((line): line is string => Boolean(line));\n\n return [\n 'Style-system visual generated for the story you just changed.',\n ...details,\n 'The image is saved and ready to inspect: call the read tool on the image path above to view it.',\n 'If the layout, spacing, color, overflow, or hierarchy looks wrong, adjust the UI and story, then let this hook render it again.',\n ].join('\\n');\n}\n\nexport function failureMessage(request: StoryRenderRequest, error: unknown): string {\n const message = error instanceof Error ? error.message : String(error);\n return [\n `Your file change was applied, but ${STYLE_SYSTEM_PACKAGE} could not generate a visual for it.`,\n `Story file: ${request.storyPath}`,\n `Command: pnpm exec ${STYLE_SYSTEM_PACKAGE} get-ui-component --component-name ${JSON.stringify(request.componentName)} --app-path ${JSON.stringify(request.projectPath)} --story-name ${JSON.stringify(request.storyName)}`,\n `Error: ${message}`,\n 'Do not treat the UI as visually verified. Run the command above to investigate.',\n ].join('\\n');\n}\n\n/* v8 ignore next 23 */\n// Pi's extension loader resolves this default export and rejects the module\n// without it (\"Extension does not export a valid factory function\"). This must\n// stay a default export; see the pi-extension override in vibe-lint.config.yaml.\nexport default function styleSystemVisuals(\n pi: ExtensionAPI,\n telemetry: HarnessTelemetry = createHarnessTelemetry(),\n): void {\n pi.on('tool_result', async (event, ctx) => {\n const changedPath = eventPath(event, ctx.cwd);\n if (!changedPath) return undefined;\n\n const harness = requireDoomConfigContext(ctx).harness;\n const root = harness.root ?? ctx.cwd;\n const request = inferStoryRenderRequest(changedPath, root);\n if (!request) return undefined;\n const statusKey = `style-system:${event.toolCallId}`;\n if (ctx.hasUI) ctx.ui.setStatus(statusKey, `Rendering ${request.componentName} visual...`);\n\n try {\n const result = await runStyleSystem(request, root);\n if (!result.imagePath) throw new Error(`${STYLE_SYSTEM_PACKAGE} did not return an imagePath`);\n const copiedImagePath = await copyImageToHarnessTemp(\n result.imagePath,\n request,\n harness.temporaryDirectory ?? fs.mkdtempSync(path.join(os.tmpdir(), 'agent-harness-style-system-')),\n );\n return {\n content: [...event.content, { type: 'text' as const, text: successMessage(request, result, copiedImagePath) }],\n };\n } catch (error) {\n void telemetry.recordWarning(HARNESS_EVENT.styleSystemRenderFailed, error, {\n 'style_system.component': request.componentName,\n });\n // The tool itself succeeded; only this hook failed. Surface the reason without\n // reporting the write as failed, which would invite a retry of a change that landed.\n return {\n content: [...event.content, { type: 'text' as const, text: failureMessage(request, error) }],\n };\n } finally {\n if (ctx.hasUI) ctx.ui.setStatus(statusKey, undefined);\n }\n });\n}\n"],"mappings":"0QAyBA,MAAM,EAAuB,eACvB,EAA2B,GAAG,EAAqB,cACnD,EAAqB,aACrB,EAAqB,yBACrB,EAAuB,2CAG7B,SAAgB,EAAU,EAAwB,EAAiC,CACjF,GAAI,EAAM,SAAY,EAAM,WAAa,SAAW,EAAM,WAAa,OAAS,OAChF,IAAM,EAAQ,EAAM,MAChB,YAAO,EAAM,MAAS,UAAY,CAAC,EAAmB,KAAK,EAAM,KAAK,EAC1E,OAAO,EAAK,QAAQ,EAAK,EAAM,KAAK,CAGtC,SAAS,EAAuB,EAAmB,EAAkC,CACnF,IAAI,EAAY,EAAK,QAAQ,EAAU,CACjC,EAAe,EAAK,QAAQ,EAAK,CACvC,KAAO,EAAU,WAAW,EAAa,EAAE,CACzC,GAAI,EAAG,WAAW,EAAK,KAAK,EAAW,EAAyB,CAAC,CAC/D,OAAO,EAAK,SAAS,EAAc,EAAU,EAAI,IAEnD,IAAM,EAAS,EAAK,QAAQ,EAAU,CACtC,GAAI,IAAW,EAAW,MAC1B,EAAY,GAKhB,SAAS,EAAmB,EAAmB,EAAyB,CAGtE,OAFc,EAAQ,MAAM,+BAA+B,GAAG,IAAI,MAAM,EAEjE,EAAK,SAAS,EAAU,CAAC,QAAQ,yBAA0B,GAAG,CAGvE,SAAS,EAAe,EAAyB,CAC/C,GAAI,gCAAgC,KAAK,EAAQ,CAAE,OAAO,EAC1D,IAAM,EAAqB,EAAqB,KAAK,EAAQ,GAAG,GAEhE,MADA,GAAqB,UAAY,EAC1B,GAAsB,EAG/B,SAAgB,EAAwB,EAAmB,EAA8C,CACvG,GAAI,CAAC,EAAmB,KAAK,EAAU,EAAI,CAAC,EAAG,WAAW,EAAU,CAAE,OACtE,IAAM,EAAc,EAAuB,EAAW,EAAK,CAC3D,GAAI,CAAC,EAAa,OAClB,IAAM,EAAU,EAAG,aAAa,EAAW,OAAO,CAClD,MAAO,CACL,YACA,cACA,cAAe,EAAmB,EAAW,EAAQ,CACrD,UAAW,EAAe,EAAQ,CACnC,CAGH,SAAgB,EAAuB,EAAmC,CACxE,IAAM,EAAO,EAAO,MAAM,CAC1B,GAAI,CAAC,EAAM,MAAU,MAAM,GAAG,EAAqB,qBAAqB,CACxE,OAAO,KAAK,MAAM,EAAK,CAIzB,eAAe,EAAe,EAA6B,EAA0C,CACnG,IAAM,EAAO,CACX,OACA,EACA,mBACA,mBACA,EAAQ,cACR,aACA,EAAQ,YACR,eACA,EAAQ,UACT,CAED,OAAO,IAAI,SAAS,EAAS,IAAW,CACtC,IAAM,EAAQ,EAAM,OAAQ,EAAM,CAChC,IAAK,EACL,IAAK,CAAE,GAAG,QAAQ,IAAK,UAAW,QAAQ,IAAI,WAAa,OAAQ,CACnE,MAAO,CAAC,SAAU,OAAQ,OAAO,CAClC,CAAC,CACE,EAAS,GACT,EAAS,GACP,EAAQ,eAAiB,EAAM,KAAK,UAAU,CAAE,KAAgB,CACtE,EAAM,OAAO,GAAG,OAAS,GAAkB,CACzC,GAAU,EAAM,UAAU,EAC1B,CACF,EAAM,OAAO,GAAG,OAAS,GAAkB,CACzC,GAAU,EAAM,UAAU,EAC1B,CACF,EAAM,KAAK,QAAU,GAAU,CAC7B,aAAa,EAAM,CACnB,EAAO,EAAM,EACb,CACF,EAAM,KAAK,OAAS,GAAS,CAE3B,GADA,aAAa,EAAM,CACf,IAAS,EAAG,CACd,EAAW,MAAM,EAAO,MAAM,EAAI,GAAG,EAAqB,oBAAoB,GAAQ,YAAY,CAAC,CACnG,OAEF,GAAI,CACF,EAAQ,EAAuB,EAAO,CAAC,OAChC,EAAO,CACd,EAAO,EAAM,GAEf,EACF,CAGJ,eAAsB,EACpB,EACA,EACA,EAA0B,EAAG,YAAY,EAAK,KAAK,EAAG,QAAQ,CAAE,8BAA8B,CAAC,CAC9E,CACjB,IAAM,EAAkB,EAAK,KAAK,EAAiB,GAAG,EAAqB,UAAU,CACrF,MAAM,EAAG,SAAS,MAAM,EAAiB,CAAE,UAAW,GAAM,KAAM,IAAO,CAAC,CAC1E,IAAM,EAAW,EACd,SAAS,EAAQ,UAAU,CAC3B,QAAQ,kBAAmB,IAAI,CAC/B,QAAQ,cAAe,IAAI,CACxB,EAAa,EAAK,KAAK,EAAiB,GAAG,KAAK,KAAK,CAAC,GAAG,EAAS,MAAM,CAG9E,OAFA,MAAM,EAAG,SAAS,SAAS,EAAW,EAAW,CACjD,MAAM,EAAG,SAAS,MAAM,EAAY,IAAM,CACnC,EAGT,SAAgB,EACd,EACA,EACA,EACQ,CAUR,MAAO,CACL,gEACA,GAXc,CACd,eAAe,IACf,eAAe,EAAO,eAAiB,EAAQ,YAC/C,cAAc,EAAO,gBAAkB,EAAQ,gBAC/C,UAAU,EAAO,eAAiB,EAAQ,YAC1C,EAAO,YAAc,iBAAiB,EAAO,cAAgB,IAAA,GAC7D,EAAO,WAAa,eAAe,EAAO,aAAe,IAAA,GAC1D,CAAC,OAAQ,GAAyB,EAAQ,EAI/B,CACV,kGACA,kIACD,CAAC,KAAK;EAAK,CAGd,SAAgB,EAAe,EAA6B,EAAwB,CAClF,IAAM,EAAU,aAAiB,MAAQ,EAAM,QAAU,OAAO,EAAM,CACtE,MAAO,CACL,qCAAqC,EAAqB,sCAC1D,eAAe,EAAQ,YACvB,sBAAsB,EAAqB,qCAAqC,KAAK,UAAU,EAAQ,cAAc,CAAC,cAAc,KAAK,UAAU,EAAQ,YAAY,CAAC,gBAAgB,KAAK,UAAU,EAAQ,UAAU,GACzN,UAAU,IACV,kFACD,CAAC,KAAK;EAAK,CAOd,SAAwB,EACtB,EACA,EAA8B,GAAwB,CAChD,CACN,EAAG,GAAG,cAAe,MAAO,EAAO,IAAQ,CACzC,IAAM,EAAc,EAAU,EAAO,EAAI,IAAI,CAC7C,GAAI,CAAC,EAAa,OAElB,IAAM,EAAU,EAAyB,EAAI,CAAC,QACxC,EAAO,EAAQ,MAAQ,EAAI,IAC3B,EAAU,EAAwB,EAAa,EAAK,CAC1D,GAAI,CAAC,EAAS,OACd,IAAM,EAAY,gBAAgB,EAAM,aACpC,EAAI,OAAO,EAAI,GAAG,UAAU,EAAW,aAAa,EAAQ,cAAc,YAAY,CAE1F,GAAI,CACF,IAAM,EAAS,MAAM,EAAe,EAAS,EAAK,CAClD,GAAI,CAAC,EAAO,UAAW,MAAU,MAAM,GAAG,EAAqB,8BAA8B,CAC7F,IAAM,EAAkB,MAAM,EAC5B,EAAO,UACP,EACA,EAAQ,oBAAsB,EAAG,YAAY,EAAK,KAAK,EAAG,QAAQ,CAAE,8BAA8B,CAAC,CACpG,CACD,MAAO,CACL,QAAS,CAAC,GAAG,EAAM,QAAS,CAAE,KAAM,OAAiB,KAAM,EAAe,EAAS,EAAQ,EAAgB,CAAE,CAAC,CAC/G,OACM,EAAO,CAMd,OALK,EAAU,cAAc,EAAc,wBAAyB,EAAO,CACzE,yBAA0B,EAAQ,cACnC,CAAC,CAGK,CACL,QAAS,CAAC,GAAG,EAAM,QAAS,CAAE,KAAM,OAAiB,KAAM,EAAe,EAAS,EAAM,CAAE,CAAC,CAC7F,QACO,CACJ,EAAI,OAAO,EAAI,GAAG,UAAU,EAAW,IAAA,GAAU,GAEvD"}
package/dist/index.cjs ADDED
@@ -0,0 +1 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`}),require(`./_virtual/_rolldown/runtime.cjs`);const e=require(`./commands/baseCommand.cjs`),t=require(`./cli/compatibilityOptions.cjs`),n=require(`./config/projectTrust.cjs`),r=require(`./config/harnessState.cjs`);require(`./config/index.cjs`);const i=require(`./services/mcpFilter.cjs`),a=require(`./utils/json.cjs`),o=require(`./utils/moduleResolution.cjs`),s=require(`./utils/repository.cjs`),c=require(`./utils/toolNames.cjs`);require(`./utils/index.cjs`);const l=require(`./services/resourceCollector.cjs`),u=require(`./services/compatibilityContext.cjs`),d=require(`./services/compatibility/process.cjs`),f=require(`./services/compatibility/antigravity.cjs`),p=require(`./services/compatibility/codex.cjs`),m=require(`./services/compatibility/index.cjs`),h=require(`./services/extensionAssembler.cjs`),g=require(`./services/harnessContext.cjs`),_=require(`./services/matrixSwitcher.cjs`),v=require(`./services/syncState.cjs`),y=require(`./services/composer.cjs`),b=require(`./services/piSettings.cjs`);require(`./services/index.cjs`);const x=require(`./commands/compatibilityCommand.cjs`),S=require(`./commands/emitMcpCommand.cjs`),C=require(`./commands/explainCommand.cjs`),w=require(`./commands/initCommand.cjs`),T=require(`./commands/launchCommand.cjs`),E=require(`./cli/options.cjs`),D=require(`./commands/syncCommand.cjs`);require(`./commands/index.cjs`);const O=require(`./cli/help.cjs`),k=require(`./cli/cliApp.cjs`);require(`./cli/index.cjs`);let A=require(`@agimon-ai/doompi-ui/theme`),j=require(`@agimon-ai/doompi-config/domains`),M=require(`@agimon-ai/doompi-config`),N=require(`@agimon-ai/doompi-config/profiles`),P=require(`@agimon-ai/doompi-config/majorModes`);exports.BaseCommand=e.BaseCommand,exports.COMPOSED_ENV=y.COMPOSED_ENV,exports.CONTEXT_PACKAGES=h.CONTEXT_PACKAGES,exports.CliApp=k.CliApp,exports.CompatibilityCommand=x.CompatibilityCommand,Object.defineProperty(exports,`DEFAULT_THEME`,{enumerable:!0,get:function(){return A.DEFAULT_THEME}}),Object.defineProperty(exports,`DEFAULT_THEME_NAME`,{enumerable:!0,get:function(){return A.DEFAULT_THEME_NAME}}),exports.DISPATCHER_AGENT_NAME=l.DISPATCHER_AGENT_NAME,Object.defineProperty(exports,`DOOM_DIR`,{enumerable:!0,get:function(){return j.DOOM_DIR}}),exports.DOOM_FLAGS=y.DOOM_FLAGS,exports.EmitMcpCommand=S.EmitMcpCommand,exports.ExplainCommand=C.ExplainCommand,exports.HARNESS_STATE_KEYS=M.HARNESS_STATE_KEYS,exports.HARNESS_STATE_POINTER=M.HARNESS_STATE_POINTER,exports.HARNESS_VERSION=O.HARNESS_VERSION,exports.InitCommand=w.InitCommand,exports.LAYER_RESOLVERS=h.LAYER_RESOLVERS,exports.LaunchCommand=T.LaunchCommand,exports.MUTE_ENV=y.MUTE_ENV,exports.OLLAMA_PRESET=h.OLLAMA_PRESET,exports.PERSONA_ENTRY=h.PERSONA_ENTRY,Object.defineProperty(exports,`PERSONA_FILES`,{enumerable:!0,get:function(){return N.PERSONA_FILES}}),exports.PROXY_SERVER_NAME=i.PROXY_SERVER_NAME,exports.SyncCommand=D.SyncCommand,exports.adaptAgentDefinition=l.adaptAgentDefinition,exports.adaptAntigravityMcpDefinition=f.adaptAntigravityMcpDefinition,exports.alreadyComposed=y.alreadyComposed,exports.antigravityCompatibilityArgs=f.antigravityCompatibilityArgs,exports.applyDomains=_.applyDomains,exports.applyMajorMode=_.applyMajorMode,exports.applyMcpAllowlist=i.applyMcpAllowlist,exports.applyPersona=_.applyPersona,exports.applyProfile=_.applyProfile,Object.defineProperty(exports,`applyProfileEnvironment`,{enumerable:!0,get:function(){return N.applyProfileEnvironment}}),exports.applyProjectTrust=n.applyProjectTrust,exports.assembleChildExtensions=h.assembleChildExtensions,exports.assembleExtensions=h.assembleExtensions,exports.buildCompatibilityContext=u.buildCompatibilityContext,exports.buildHarnessContext=g.buildHarnessContext,Object.defineProperty(exports,`buildPersonaPrompt`,{enumerable:!0,get:function(){return N.buildPersonaPrompt}}),exports.claudeCompatibilityArgs=m.claudeCompatibilityArgs,exports.cleanupRunDirectory=y.cleanupRunDirectory,exports.codexCompatibilityArgs=p.codexCompatibilityArgs,exports.collectDrift=D.collectDrift,exports.collectResources=l.collectResources,exports.composeDoomSession=y.composeDoomSession,exports.composeLoadOrder=y.composeLoadOrder,exports.computeInputsHash=v.computeInputsHash,exports.configurePreset=g.configurePreset,exports.consumerPackageEntry=o.consumerPackageEntry,exports.createHarnessSession=M.createHarnessSession,exports.createMapResolvers=v.createMapResolvers,exports.createRecordingResolvers=v.createRecordingResolvers,Object.defineProperty(exports,`domainCompletionItems`,{enumerable:!0,get:function(){return j.domainCompletionItems}}),Object.defineProperty(exports,`domainCompletionPrefix`,{enumerable:!0,get:function(){return j.domainCompletionPrefix}}),exports.explainMatrix=C.explainMatrix,exports.extensionLayers=_.extensionLayers,exports.extensionsProvidedExternally=y.extensionsProvidedExternally,exports.filterHookDisabledLayers=h.filterHookDisabledLayers,exports.filterMcpServers=i.filterMcpServers,exports.filterProxyConfig=i.filterProxyConfig,exports.findRepositoryRoot=s.findRepositoryRoot,exports.findSyncedRoot=y.findSyncedRoot,exports.formatSyncResult=D.formatSyncResult,exports.getHarnessState=r.getHarnessState,exports.harnessRoot=M.harnessRoot,exports.hasProjectTrustOption=n.hasProjectTrustOption,exports.isRecord=a.isRecord,exports.isRepositoryRoot=s.isRepositoryRoot,exports.launchCompatibility=m.launchCompatibility,Object.defineProperty(exports,`layerEntries`,{enumerable:!0,get:function(){return P.layerEntries}}),Object.defineProperty(exports,`layerHookGroups`,{enumerable:!0,get:function(){return P.layerHookGroups}}),Object.defineProperty(exports,`listDomainNames`,{enumerable:!0,get:function(){return j.listDomainNames}}),Object.defineProperty(exports,`listProfileNames`,{enumerable:!0,get:function(){return N.listProfileNames}}),exports.loadComposedExtensions=y.loadComposedExtensions,Object.defineProperty(exports,`loadDomains`,{enumerable:!0,get:function(){return j.loadDomains}}),exports.loadDoomConfig=n.loadDoomConfig,exports.loadHarnessState=M.loadHarnessState,Object.defineProperty(exports,`loadMajorModesConfig`,{enumerable:!0,get:function(){return P.loadMajorModesConfig}}),Object.defineProperty(exports,`loadProfiles`,{enumerable:!0,get:function(){return N.loadProfiles}}),exports.localEntry=o.localEntry,exports.mergeMcpConfigs=l.mergeMcpConfigs,exports.mergePiSettings=b.mergePiSettings,exports.needsRelaunch=_.needsRelaunch,exports.optionalPackageEntry=o.optionalPackageEntry,exports.ownEntry=o.ownEntry,exports.packageEntry=o.packageEntry,exports.parseCompatibilityArgs=t.parseCompatibilityArgs,exports.parseCompatibilityProvider=t.parseCompatibilityProvider,exports.parseHarnessArgs=E.parseHarnessArgs,exports.persistMcpConfig=i.persistMcpConfig,exports.piCliPath=o.piCliPath,exports.piSettingsPath=b.piSettingsPath,exports.prepareRunDirectory=y.prepareRunDirectory,exports.printHelp=O.printHelp,exports.projectHarnessEnvironment=M.projectHarnessEnvironment,exports.readHarnessState=r.readHarnessState,exports.readJson=a.readJson,exports.readMcpServerNames=v.readMcpServerNames,exports.readPiSettings=b.readPiSettings,exports.readStartupFlags=y.readStartupFlags,exports.readSyncState=v.readSyncState,exports.recordResolvedEntries=v.recordResolvedEntries,exports.recordedEnvironment=D.recordedEnvironment,exports.refreshHarnessState=r.refreshHarnessState,exports.registerDoomFlags=y.registerDoomFlags,Object.defineProperty(exports,`replaceProfileEnvironment`,{enumerable:!0,get:function(){return N.replaceProfileEnvironment}}),exports.requireHarnessPaths=M.requireHarnessPaths,exports.requireHarnessRoot=M.requireHarnessRoot,exports.resetHarnessStore=M.resetHarnessStore,exports.resolveHarnessProfile=g.resolveHarnessProfile,Object.defineProperty(exports,`resolveLayers`,{enumerable:!0,get:function(){return P.resolveLayers}}),exports.resolveMcpAllowlist=i.resolveMcpAllowlist,Object.defineProperty(exports,`resolvePluginDirectories`,{enumerable:!0,get:function(){return j.resolvePluginDirectories}}),Object.defineProperty(exports,`resolvePluginEntries`,{enumerable:!0,get:function(){return j.resolvePluginEntries}}),Object.defineProperty(exports,`resolveProfile`,{enumerable:!0,get:function(){return N.resolveProfile}}),Object.defineProperty(exports,`resolveSharedSkills`,{enumerable:!0,get:function(){return j.resolveSharedSkills}}),exports.runCli=k.runCli,exports.runDirectory=v.runDirectory,exports.runHarness=k.runHarness,exports.runInteractive=d.runInteractive,exports.selectWorkflowExtensionForProcess=l.selectWorkflowExtensionForProcess,exports.selectionEnvironment=D.selectionEnvironment,exports.serializePiSettings=b.serializePiSettings,exports.serializeSyncState=v.serializeSyncState,exports.settingsRelativePath=v.settingsRelativePath,exports.signalExitCode=d.signalExitCode,exports.splitPackageSpecifier=o.splitPackageSpecifier,exports.startSyncedSession=y.startSyncedSession,exports.supportsCodexManagedProfile=p.supportsCodexManagedProfile,exports.syncDirectory=v.syncDirectory,exports.syncStatePath=v.syncStatePath,exports.toClaudeToolName=c.toClaudeToolName,exports.toPiToolName=c.toPiToolName,exports.toSelection=D.toSelection,exports.updateHarnessState=r.updateHarnessState,Object.defineProperty(exports,`writeDefaultTheme`,{enumerable:!0,get:function(){return A.writeDefaultTheme}}),exports.writeFileAtomic=a.writeFileAtomic,exports.writeJson=a.writeJson,exports.writePiSettings=b.writePiSettings,exports.writeSyncState=v.writeSyncState;
@@ -0,0 +1,34 @@
1
+ import { CompatibilityOptions, CompatibilityProvider, ParsedCompatibilityArgs } from "./interfaces/compatibility.cjs";
2
+ import { HarnessOptions, HarnessOutputFormat, HarnessPreset, HarnessResourceOptions, HarnessResources, ParsedHarnessArgs, PluginHookSource } from "./interfaces/harness.cjs";
3
+ import { DoomConfig, ProjectTrust, applyProjectTrust, hasProjectTrustOption, loadDoomConfig } from "./config/projectTrust.cjs";
4
+ import { HARNESS_STATE_KEYS, HARNESS_STATE_POINTER, HarnessState, createHarnessSession, getHarnessState, harnessRoot, loadHarnessState, projectHarnessEnvironment, readHarnessState, refreshHarnessState, requireHarnessPaths, requireHarnessRoot, resetHarnessStore, updateHarnessState } from "./config/harnessState.cjs";
5
+ import { AgentProfile, DEFAULT_THEME, DEFAULT_THEME_NAME, DOOM_DIR, DomainDefinition, DomainManifest, DomainMcpAllowlist, DomainPlugin, LayerDefinition, LayerPackage, LayerResolvers, MajorModesConfig, PERSONA_FILES, PluginEntry, applyProfileEnvironment, buildPersonaPrompt, domainCompletionItems, domainCompletionPrefix, layerEntries, layerHookGroups, listDomainNames, listProfileNames, loadDomains, loadMajorModesConfig, loadProfiles, replaceProfileEnvironment, resolveLayers, resolvePluginDirectories, resolvePluginEntries, resolveProfile, resolveSharedSkills, writeDefaultTheme } from "./config/index.cjs";
6
+ import { CompatibilityContext, buildCompatibilityContext } from "./services/compatibilityContext.cjs";
7
+ import { JsonObject, isRecord, readJson, writeFileAtomic, writeJson } from "./utils/json.cjs";
8
+ import { consumerPackageEntry, localEntry, optionalPackageEntry, ownEntry, packageEntry, piCliPath, splitPackageSpecifier } from "./utils/moduleResolution.cjs";
9
+ import { findRepositoryRoot, isRepositoryRoot } from "./utils/repository.cjs";
10
+ import { toClaudeToolName, toPiToolName } from "./utils/toolNames.cjs";
11
+ import { adaptAntigravityMcpDefinition, antigravityCompatibilityArgs } from "./services/compatibility/antigravity.cjs";
12
+ import { codexCompatibilityArgs, supportsCodexManagedProfile } from "./services/compatibility/codex.cjs";
13
+ import { runInteractive, signalExitCode } from "./services/compatibility/process.cjs";
14
+ import { claudeCompatibilityArgs, launchCompatibility } from "./services/compatibility/index.cjs";
15
+ import { CONTEXT_PACKAGES, ExtensionContext, LAYER_RESOLVERS, OLLAMA_PRESET, PERSONA_ENTRY, assembleChildExtensions, assembleExtensions, filterHookDisabledLayers } from "./services/extensionAssembler.cjs";
16
+ import { SyncBaseline, SyncSelection, SyncState, computeInputsHash, createMapResolvers, createRecordingResolvers, readMcpServerNames, readSyncState, recordResolvedEntries, runDirectory, serializeSyncState, settingsRelativePath, syncDirectory, syncStatePath, writeSyncState } from "./services/syncState.cjs";
17
+ import { COMPOSED_ENV, ComposeOutcome, DOOM_FLAGS, MUTE_ENV, StartupFlags, alreadyComposed, cleanupRunDirectory, composeDoomSession, composeLoadOrder, extensionsProvidedExternally, findSyncedRoot, loadComposedExtensions, prepareRunDirectory, readStartupFlags, registerDoomFlags, startSyncedSession } from "./services/composer.cjs";
18
+ import { HarnessContext, buildHarnessContext, configurePreset, resolveHarnessProfile } from "./services/harnessContext.cjs";
19
+ import { PiSettingsUpdate, mergePiSettings, piSettingsPath, readPiSettings, serializePiSettings, writePiSettings } from "./services/piSettings.cjs";
20
+ import { PROXY_SERVER_NAME, applyMcpAllowlist, filterMcpServers, filterProxyConfig, persistMcpConfig, resolveMcpAllowlist } from "./services/mcpFilter.cjs";
21
+ import { DISPATCHER_AGENT_NAME, adaptAgentDefinition, collectResources, mergeMcpConfigs, selectWorkflowExtensionForProcess } from "./services/resourceCollector.cjs";
22
+ import { applyDomains, applyMajorMode, applyPersona, applyProfile, extensionLayers, needsRelaunch } from "./services/matrixSwitcher.cjs";
23
+ import { BaseCommand } from "./commands/baseCommand.cjs";
24
+ import { CompatibilityCommand } from "./commands/compatibilityCommand.cjs";
25
+ import { EmitMcpCommand } from "./commands/emitMcpCommand.cjs";
26
+ import { ExplainCommand, MatrixExplanation, explainMatrix } from "./commands/explainCommand.cjs";
27
+ import { InitCommand } from "./commands/initCommand.cjs";
28
+ import { LaunchCommand } from "./commands/launchCommand.cjs";
29
+ import { SyncCommand, SyncResult, collectDrift, formatSyncResult, recordedEnvironment, selectionEnvironment, toSelection } from "./commands/syncCommand.cjs";
30
+ import { CliApp, runCli, runHarness } from "./cli/cliApp.cjs";
31
+ import { parseCompatibilityArgs, parseCompatibilityProvider } from "./cli/compatibilityOptions.cjs";
32
+ import { HARNESS_VERSION, printHelp } from "./cli/help.cjs";
33
+ import { parseHarnessArgs } from "./cli/options.cjs";
34
+ export { AgentProfile, BaseCommand, COMPOSED_ENV, CONTEXT_PACKAGES, CliApp, CompatibilityCommand, CompatibilityContext, CompatibilityOptions, CompatibilityProvider, ComposeOutcome, DEFAULT_THEME, DEFAULT_THEME_NAME, DISPATCHER_AGENT_NAME, DOOM_DIR, DOOM_FLAGS, DomainDefinition, DomainManifest, DomainMcpAllowlist, DomainPlugin, DoomConfig, EmitMcpCommand, ExplainCommand, ExtensionContext, HARNESS_STATE_KEYS, HARNESS_STATE_POINTER, HARNESS_VERSION, HarnessContext, HarnessOptions, HarnessOutputFormat, HarnessPreset, HarnessResourceOptions, HarnessResources, HarnessState, InitCommand, JsonObject, LAYER_RESOLVERS, LaunchCommand, LayerDefinition, LayerPackage, LayerResolvers, MUTE_ENV, MajorModesConfig, MatrixExplanation, OLLAMA_PRESET, PERSONA_ENTRY, PERSONA_FILES, PROXY_SERVER_NAME, ParsedCompatibilityArgs, ParsedHarnessArgs, PiSettingsUpdate, PluginEntry, PluginHookSource, ProjectTrust, StartupFlags, SyncBaseline, SyncCommand, SyncResult, SyncSelection, SyncState, adaptAgentDefinition, adaptAntigravityMcpDefinition, alreadyComposed, antigravityCompatibilityArgs, applyDomains, applyMajorMode, applyMcpAllowlist, applyPersona, applyProfile, applyProfileEnvironment, applyProjectTrust, assembleChildExtensions, assembleExtensions, buildCompatibilityContext, buildHarnessContext, buildPersonaPrompt, claudeCompatibilityArgs, cleanupRunDirectory, codexCompatibilityArgs, collectDrift, collectResources, composeDoomSession, composeLoadOrder, computeInputsHash, configurePreset, consumerPackageEntry, createHarnessSession, createMapResolvers, createRecordingResolvers, domainCompletionItems, domainCompletionPrefix, explainMatrix, extensionLayers, extensionsProvidedExternally, filterHookDisabledLayers, filterMcpServers, filterProxyConfig, findRepositoryRoot, findSyncedRoot, formatSyncResult, getHarnessState, harnessRoot, hasProjectTrustOption, isRecord, isRepositoryRoot, launchCompatibility, layerEntries, layerHookGroups, listDomainNames, listProfileNames, loadComposedExtensions, loadDomains, loadDoomConfig, loadHarnessState, loadMajorModesConfig, loadProfiles, localEntry, mergeMcpConfigs, mergePiSettings, needsRelaunch, optionalPackageEntry, ownEntry, packageEntry, parseCompatibilityArgs, parseCompatibilityProvider, parseHarnessArgs, persistMcpConfig, piCliPath, piSettingsPath, prepareRunDirectory, printHelp, projectHarnessEnvironment, readHarnessState, readJson, readMcpServerNames, readPiSettings, readStartupFlags, readSyncState, recordResolvedEntries, recordedEnvironment, refreshHarnessState, registerDoomFlags, replaceProfileEnvironment, requireHarnessPaths, requireHarnessRoot, resetHarnessStore, resolveHarnessProfile, resolveLayers, resolveMcpAllowlist, resolvePluginDirectories, resolvePluginEntries, resolveProfile, resolveSharedSkills, runCli, runDirectory, runHarness, runInteractive, selectWorkflowExtensionForProcess, selectionEnvironment, serializePiSettings, serializeSyncState, settingsRelativePath, signalExitCode, splitPackageSpecifier, startSyncedSession, supportsCodexManagedProfile, syncDirectory, syncStatePath, toClaudeToolName, toPiToolName, toSelection, updateHarnessState, writeDefaultTheme, writeFileAtomic, writeJson, writePiSettings, writeSyncState };
@@ -0,0 +1,34 @@
1
+ import { CompatibilityOptions, CompatibilityProvider, ParsedCompatibilityArgs } from "./interfaces/compatibility.mjs";
2
+ import { HarnessOptions, HarnessOutputFormat, HarnessPreset, HarnessResourceOptions, HarnessResources, ParsedHarnessArgs, PluginHookSource } from "./interfaces/harness.mjs";
3
+ import { DoomConfig, ProjectTrust, applyProjectTrust, hasProjectTrustOption, loadDoomConfig } from "./config/projectTrust.mjs";
4
+ import { HARNESS_STATE_KEYS, HARNESS_STATE_POINTER, HarnessState, createHarnessSession, getHarnessState, harnessRoot, loadHarnessState, projectHarnessEnvironment, readHarnessState, refreshHarnessState, requireHarnessPaths, requireHarnessRoot, resetHarnessStore, updateHarnessState } from "./config/harnessState.mjs";
5
+ import { AgentProfile, DEFAULT_THEME, DEFAULT_THEME_NAME, DOOM_DIR, DomainDefinition, DomainManifest, DomainMcpAllowlist, DomainPlugin, LayerDefinition, LayerPackage, LayerResolvers, MajorModesConfig, PERSONA_FILES, PluginEntry, applyProfileEnvironment, buildPersonaPrompt, domainCompletionItems, domainCompletionPrefix, layerEntries, layerHookGroups, listDomainNames, listProfileNames, loadDomains, loadMajorModesConfig, loadProfiles, replaceProfileEnvironment, resolveLayers, resolvePluginDirectories, resolvePluginEntries, resolveProfile, resolveSharedSkills, writeDefaultTheme } from "./config/index.mjs";
6
+ import { CompatibilityContext, buildCompatibilityContext } from "./services/compatibilityContext.mjs";
7
+ import { JsonObject, isRecord, readJson, writeFileAtomic, writeJson } from "./utils/json.mjs";
8
+ import { consumerPackageEntry, localEntry, optionalPackageEntry, ownEntry, packageEntry, piCliPath, splitPackageSpecifier } from "./utils/moduleResolution.mjs";
9
+ import { findRepositoryRoot, isRepositoryRoot } from "./utils/repository.mjs";
10
+ import { toClaudeToolName, toPiToolName } from "./utils/toolNames.mjs";
11
+ import { adaptAntigravityMcpDefinition, antigravityCompatibilityArgs } from "./services/compatibility/antigravity.mjs";
12
+ import { codexCompatibilityArgs, supportsCodexManagedProfile } from "./services/compatibility/codex.mjs";
13
+ import { runInteractive, signalExitCode } from "./services/compatibility/process.mjs";
14
+ import { claudeCompatibilityArgs, launchCompatibility } from "./services/compatibility/index.mjs";
15
+ import { CONTEXT_PACKAGES, ExtensionContext, LAYER_RESOLVERS, OLLAMA_PRESET, PERSONA_ENTRY, assembleChildExtensions, assembleExtensions, filterHookDisabledLayers } from "./services/extensionAssembler.mjs";
16
+ import { SyncBaseline, SyncSelection, SyncState, computeInputsHash, createMapResolvers, createRecordingResolvers, readMcpServerNames, readSyncState, recordResolvedEntries, runDirectory, serializeSyncState, settingsRelativePath, syncDirectory, syncStatePath, writeSyncState } from "./services/syncState.mjs";
17
+ import { COMPOSED_ENV, ComposeOutcome, DOOM_FLAGS, MUTE_ENV, StartupFlags, alreadyComposed, cleanupRunDirectory, composeDoomSession, composeLoadOrder, extensionsProvidedExternally, findSyncedRoot, loadComposedExtensions, prepareRunDirectory, readStartupFlags, registerDoomFlags, startSyncedSession } from "./services/composer.mjs";
18
+ import { HarnessContext, buildHarnessContext, configurePreset, resolveHarnessProfile } from "./services/harnessContext.mjs";
19
+ import { PiSettingsUpdate, mergePiSettings, piSettingsPath, readPiSettings, serializePiSettings, writePiSettings } from "./services/piSettings.mjs";
20
+ import { PROXY_SERVER_NAME, applyMcpAllowlist, filterMcpServers, filterProxyConfig, persistMcpConfig, resolveMcpAllowlist } from "./services/mcpFilter.mjs";
21
+ import { DISPATCHER_AGENT_NAME, adaptAgentDefinition, collectResources, mergeMcpConfigs, selectWorkflowExtensionForProcess } from "./services/resourceCollector.mjs";
22
+ import { applyDomains, applyMajorMode, applyPersona, applyProfile, extensionLayers, needsRelaunch } from "./services/matrixSwitcher.mjs";
23
+ import { BaseCommand } from "./commands/baseCommand.mjs";
24
+ import { CompatibilityCommand } from "./commands/compatibilityCommand.mjs";
25
+ import { EmitMcpCommand } from "./commands/emitMcpCommand.mjs";
26
+ import { ExplainCommand, MatrixExplanation, explainMatrix } from "./commands/explainCommand.mjs";
27
+ import { InitCommand } from "./commands/initCommand.mjs";
28
+ import { LaunchCommand } from "./commands/launchCommand.mjs";
29
+ import { SyncCommand, SyncResult, collectDrift, formatSyncResult, recordedEnvironment, selectionEnvironment, toSelection } from "./commands/syncCommand.mjs";
30
+ import { CliApp, runCli, runHarness } from "./cli/cliApp.mjs";
31
+ import { parseCompatibilityArgs, parseCompatibilityProvider } from "./cli/compatibilityOptions.mjs";
32
+ import { HARNESS_VERSION, printHelp } from "./cli/help.mjs";
33
+ import { parseHarnessArgs } from "./cli/options.mjs";
34
+ export { AgentProfile, BaseCommand, COMPOSED_ENV, CONTEXT_PACKAGES, CliApp, CompatibilityCommand, CompatibilityContext, CompatibilityOptions, CompatibilityProvider, ComposeOutcome, DEFAULT_THEME, DEFAULT_THEME_NAME, DISPATCHER_AGENT_NAME, DOOM_DIR, DOOM_FLAGS, DomainDefinition, DomainManifest, DomainMcpAllowlist, DomainPlugin, DoomConfig, EmitMcpCommand, ExplainCommand, ExtensionContext, HARNESS_STATE_KEYS, HARNESS_STATE_POINTER, HARNESS_VERSION, HarnessContext, HarnessOptions, HarnessOutputFormat, HarnessPreset, HarnessResourceOptions, HarnessResources, HarnessState, InitCommand, JsonObject, LAYER_RESOLVERS, LaunchCommand, LayerDefinition, LayerPackage, LayerResolvers, MUTE_ENV, MajorModesConfig, MatrixExplanation, OLLAMA_PRESET, PERSONA_ENTRY, PERSONA_FILES, PROXY_SERVER_NAME, ParsedCompatibilityArgs, ParsedHarnessArgs, PiSettingsUpdate, PluginEntry, PluginHookSource, ProjectTrust, StartupFlags, SyncBaseline, SyncCommand, SyncResult, SyncSelection, SyncState, adaptAgentDefinition, adaptAntigravityMcpDefinition, alreadyComposed, antigravityCompatibilityArgs, applyDomains, applyMajorMode, applyMcpAllowlist, applyPersona, applyProfile, applyProfileEnvironment, applyProjectTrust, assembleChildExtensions, assembleExtensions, buildCompatibilityContext, buildHarnessContext, buildPersonaPrompt, claudeCompatibilityArgs, cleanupRunDirectory, codexCompatibilityArgs, collectDrift, collectResources, composeDoomSession, composeLoadOrder, computeInputsHash, configurePreset, consumerPackageEntry, createHarnessSession, createMapResolvers, createRecordingResolvers, domainCompletionItems, domainCompletionPrefix, explainMatrix, extensionLayers, extensionsProvidedExternally, filterHookDisabledLayers, filterMcpServers, filterProxyConfig, findRepositoryRoot, findSyncedRoot, formatSyncResult, getHarnessState, harnessRoot, hasProjectTrustOption, isRecord, isRepositoryRoot, launchCompatibility, layerEntries, layerHookGroups, listDomainNames, listProfileNames, loadComposedExtensions, loadDomains, loadDoomConfig, loadHarnessState, loadMajorModesConfig, loadProfiles, localEntry, mergeMcpConfigs, mergePiSettings, needsRelaunch, optionalPackageEntry, ownEntry, packageEntry, parseCompatibilityArgs, parseCompatibilityProvider, parseHarnessArgs, persistMcpConfig, piCliPath, piSettingsPath, prepareRunDirectory, printHelp, projectHarnessEnvironment, readHarnessState, readJson, readMcpServerNames, readPiSettings, readStartupFlags, readSyncState, recordResolvedEntries, recordedEnvironment, refreshHarnessState, registerDoomFlags, replaceProfileEnvironment, requireHarnessPaths, requireHarnessRoot, resetHarnessStore, resolveHarnessProfile, resolveLayers, resolveMcpAllowlist, resolvePluginDirectories, resolvePluginEntries, resolveProfile, resolveSharedSkills, runCli, runDirectory, runHarness, runInteractive, selectWorkflowExtensionForProcess, selectionEnvironment, serializePiSettings, serializeSyncState, settingsRelativePath, signalExitCode, splitPackageSpecifier, startSyncedSession, supportsCodexManagedProfile, syncDirectory, syncStatePath, toClaudeToolName, toPiToolName, toSelection, updateHarnessState, writeDefaultTheme, writeFileAtomic, writeJson, writePiSettings, writeSyncState };
package/dist/index.mjs ADDED
@@ -0,0 +1 @@
1
+ import{BaseCommand as e}from"./commands/baseCommand.mjs";import{parseCompatibilityArgs as t,parseCompatibilityProvider as n}from"./cli/compatibilityOptions.mjs";import{applyProjectTrust as r,hasProjectTrustOption as i,loadDoomConfig as a}from"./config/projectTrust.mjs";import{HARNESS_STATE_KEYS as o,HARNESS_STATE_POINTER as s,createHarnessSession as c,getHarnessState as l,harnessRoot as u,loadHarnessState as d,projectHarnessEnvironment as f,readHarnessState as p,refreshHarnessState as m,requireHarnessPaths as h,requireHarnessRoot as g,resetHarnessStore as _,updateHarnessState as v}from"./config/harnessState.mjs";import{DEFAULT_THEME as y,DEFAULT_THEME_NAME as b,DOOM_DIR as x,PERSONA_FILES as S,applyProfileEnvironment as C,buildPersonaPrompt as w,domainCompletionItems as T,domainCompletionPrefix as E,layerEntries as D,layerHookGroups as O,listDomainNames as k,listProfileNames as A,loadDomains as j,loadMajorModesConfig as M,loadProfiles as N,replaceProfileEnvironment as P,resolveLayers as F,resolvePluginDirectories as I,resolvePluginEntries as L,resolveProfile as R,resolveSharedSkills as z,writeDefaultTheme as B}from"./config/index.mjs";import{PROXY_SERVER_NAME as V,applyMcpAllowlist as H,filterMcpServers as U,filterProxyConfig as W,persistMcpConfig as G,resolveMcpAllowlist as K}from"./services/mcpFilter.mjs";import{isRecord as q,readJson as J,writeFileAtomic as Y,writeJson as X}from"./utils/json.mjs";import{consumerPackageEntry as Z,localEntry as Q,optionalPackageEntry as $,ownEntry as ee,packageEntry as te,piCliPath as ne,splitPackageSpecifier as re}from"./utils/moduleResolution.mjs";import{findRepositoryRoot as ie,isRepositoryRoot as ae}from"./utils/repository.mjs";import{toClaudeToolName as oe,toPiToolName as se}from"./utils/toolNames.mjs";import"./utils/index.mjs";import{DISPATCHER_AGENT_NAME as ce,adaptAgentDefinition as le,collectResources as ue,mergeMcpConfigs as de,selectWorkflowExtensionForProcess as fe}from"./services/resourceCollector.mjs";import{buildCompatibilityContext as pe}from"./services/compatibilityContext.mjs";import{runInteractive as me,signalExitCode as he}from"./services/compatibility/process.mjs";import{adaptAntigravityMcpDefinition as ge,antigravityCompatibilityArgs as _e}from"./services/compatibility/antigravity.mjs";import{codexCompatibilityArgs as ve,supportsCodexManagedProfile as ye}from"./services/compatibility/codex.mjs";import{claudeCompatibilityArgs as be,launchCompatibility as xe}from"./services/compatibility/index.mjs";import{CONTEXT_PACKAGES as Se,LAYER_RESOLVERS as Ce,OLLAMA_PRESET as we,PERSONA_ENTRY as Te,assembleChildExtensions as Ee,assembleExtensions as De,filterHookDisabledLayers as Oe}from"./services/extensionAssembler.mjs";import{buildHarnessContext as ke,configurePreset as Ae,resolveHarnessProfile as je}from"./services/harnessContext.mjs";import{applyDomains as Me,applyMajorMode as Ne,applyPersona as Pe,applyProfile as Fe,extensionLayers as Ie,needsRelaunch as Le}from"./services/matrixSwitcher.mjs";import{computeInputsHash as Re,createMapResolvers as ze,createRecordingResolvers as Be,readMcpServerNames as Ve,readSyncState as He,recordResolvedEntries as Ue,runDirectory as We,serializeSyncState as Ge,settingsRelativePath as Ke,syncDirectory as qe,syncStatePath as Je,writeSyncState as Ye}from"./services/syncState.mjs";import{COMPOSED_ENV as Xe,DOOM_FLAGS as Ze,MUTE_ENV as Qe,alreadyComposed as $e,cleanupRunDirectory as et,composeDoomSession as tt,composeLoadOrder as nt,extensionsProvidedExternally as rt,findSyncedRoot as it,loadComposedExtensions as at,prepareRunDirectory as ot,readStartupFlags as st,registerDoomFlags as ct,startSyncedSession as lt}from"./services/composer.mjs";import{mergePiSettings as ut,piSettingsPath as dt,readPiSettings as ft,serializePiSettings as pt,writePiSettings as mt}from"./services/piSettings.mjs";import"./services/index.mjs";import{CompatibilityCommand as ht}from"./commands/compatibilityCommand.mjs";import{EmitMcpCommand as gt}from"./commands/emitMcpCommand.mjs";import{ExplainCommand as _t,explainMatrix as vt}from"./commands/explainCommand.mjs";import{InitCommand as yt}from"./commands/initCommand.mjs";import{LaunchCommand as bt}from"./commands/launchCommand.mjs";import{parseHarnessArgs as xt}from"./cli/options.mjs";import{SyncCommand as St,collectDrift as Ct,formatSyncResult as wt,recordedEnvironment as Tt,selectionEnvironment as Et,toSelection as Dt}from"./commands/syncCommand.mjs";import"./commands/index.mjs";import{HARNESS_VERSION as Ot,printHelp as kt}from"./cli/help.mjs";import{CliApp as At,runCli as jt,runHarness as Mt}from"./cli/cliApp.mjs";import"./cli/index.mjs";export{e as BaseCommand,Xe as COMPOSED_ENV,Se as CONTEXT_PACKAGES,At as CliApp,ht as CompatibilityCommand,y as DEFAULT_THEME,b as DEFAULT_THEME_NAME,ce as DISPATCHER_AGENT_NAME,x as DOOM_DIR,Ze as DOOM_FLAGS,gt as EmitMcpCommand,_t as ExplainCommand,o as HARNESS_STATE_KEYS,s as HARNESS_STATE_POINTER,Ot as HARNESS_VERSION,yt as InitCommand,Ce as LAYER_RESOLVERS,bt as LaunchCommand,Qe as MUTE_ENV,we as OLLAMA_PRESET,Te as PERSONA_ENTRY,S as PERSONA_FILES,V as PROXY_SERVER_NAME,St as SyncCommand,le as adaptAgentDefinition,ge as adaptAntigravityMcpDefinition,$e as alreadyComposed,_e as antigravityCompatibilityArgs,Me as applyDomains,Ne as applyMajorMode,H as applyMcpAllowlist,Pe as applyPersona,Fe as applyProfile,C as applyProfileEnvironment,r as applyProjectTrust,Ee as assembleChildExtensions,De as assembleExtensions,pe as buildCompatibilityContext,ke as buildHarnessContext,w as buildPersonaPrompt,be as claudeCompatibilityArgs,et as cleanupRunDirectory,ve as codexCompatibilityArgs,Ct as collectDrift,ue as collectResources,tt as composeDoomSession,nt as composeLoadOrder,Re as computeInputsHash,Ae as configurePreset,Z as consumerPackageEntry,c as createHarnessSession,ze as createMapResolvers,Be as createRecordingResolvers,T as domainCompletionItems,E as domainCompletionPrefix,vt as explainMatrix,Ie as extensionLayers,rt as extensionsProvidedExternally,Oe as filterHookDisabledLayers,U as filterMcpServers,W as filterProxyConfig,ie as findRepositoryRoot,it as findSyncedRoot,wt as formatSyncResult,l as getHarnessState,u as harnessRoot,i as hasProjectTrustOption,q as isRecord,ae as isRepositoryRoot,xe as launchCompatibility,D as layerEntries,O as layerHookGroups,k as listDomainNames,A as listProfileNames,at as loadComposedExtensions,j as loadDomains,a as loadDoomConfig,d as loadHarnessState,M as loadMajorModesConfig,N as loadProfiles,Q as localEntry,de as mergeMcpConfigs,ut as mergePiSettings,Le as needsRelaunch,$ as optionalPackageEntry,ee as ownEntry,te as packageEntry,t as parseCompatibilityArgs,n as parseCompatibilityProvider,xt as parseHarnessArgs,G as persistMcpConfig,ne as piCliPath,dt as piSettingsPath,ot as prepareRunDirectory,kt as printHelp,f as projectHarnessEnvironment,p as readHarnessState,J as readJson,Ve as readMcpServerNames,ft as readPiSettings,st as readStartupFlags,He as readSyncState,Ue as recordResolvedEntries,Tt as recordedEnvironment,m as refreshHarnessState,ct as registerDoomFlags,P as replaceProfileEnvironment,h as requireHarnessPaths,g as requireHarnessRoot,_ as resetHarnessStore,je as resolveHarnessProfile,F as resolveLayers,K as resolveMcpAllowlist,I as resolvePluginDirectories,L as resolvePluginEntries,R as resolveProfile,z as resolveSharedSkills,jt as runCli,We as runDirectory,Mt as runHarness,me as runInteractive,fe as selectWorkflowExtensionForProcess,Et as selectionEnvironment,pt as serializePiSettings,Ge as serializeSyncState,Ke as settingsRelativePath,he as signalExitCode,re as splitPackageSpecifier,lt as startSyncedSession,ye as supportsCodexManagedProfile,qe as syncDirectory,Je as syncStatePath,oe as toClaudeToolName,se as toPiToolName,Dt as toSelection,v as updateHarnessState,B as writeDefaultTheme,Y as writeFileAtomic,X as writeJson,mt as writePiSettings,Ye as writeSyncState};
@@ -0,0 +1,23 @@
1
+ //#region src/interfaces/compatibility.d.ts
2
+ type CompatibilityProvider = 'antigravity' | 'claude' | 'codex';
3
+ interface CompatibilityOptions {
4
+ repoRoot: string;
5
+ currentDirectory: string;
6
+ provider: CompatibilityProvider;
7
+ /** One persona and its environment defaults from `.doom/profiles.yaml`. */
8
+ profile?: string;
9
+ /** Domain names that select provider plugins and MCP scope. */
10
+ domains: string[];
11
+ /** One named major mode from `.doom/modes.yaml`. */
12
+ majorMode: string;
13
+ /** Arguments passed to the provider without Pi-specific translation. */
14
+ providerArgs: string[];
15
+ /** Directories inherited from the launcher environment. */
16
+ additionalDirectories: string[];
17
+ }
18
+ interface ParsedCompatibilityArgs {
19
+ options: Omit<CompatibilityOptions, 'repoRoot' | 'provider'>;
20
+ }
21
+ //#endregion
22
+ export { CompatibilityOptions, CompatibilityProvider, ParsedCompatibilityArgs };
23
+ //# sourceMappingURL=compatibility.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compatibility.d.cts","names":[],"sources":["../../src/interfaces/compatibility.ts"],"mappings":";KAAY,qBAAA;AAAA,UAEK,oBAAA;EACf,QAAA;EACA,gBAAA;EACA,QAAA,EAAU,qBAAA;EALqB;EAO/B,OAAA;EALmC;EAOnC,OAAA;EAJ+B;EAM/B,SAAA;EAPA;EASA,YAAA;EARU;EAUV,qBAAA;AAAA;AAAA,UAGe,uBAAA;EACf,OAAA,EAAS,IAAA,CAAK,oBAAA;AAAA"}
@@ -0,0 +1,23 @@
1
+ //#region src/interfaces/compatibility.d.ts
2
+ type CompatibilityProvider = 'antigravity' | 'claude' | 'codex';
3
+ interface CompatibilityOptions {
4
+ repoRoot: string;
5
+ currentDirectory: string;
6
+ provider: CompatibilityProvider;
7
+ /** One persona and its environment defaults from `.doom/profiles.yaml`. */
8
+ profile?: string;
9
+ /** Domain names that select provider plugins and MCP scope. */
10
+ domains: string[];
11
+ /** One named major mode from `.doom/modes.yaml`. */
12
+ majorMode: string;
13
+ /** Arguments passed to the provider without Pi-specific translation. */
14
+ providerArgs: string[];
15
+ /** Directories inherited from the launcher environment. */
16
+ additionalDirectories: string[];
17
+ }
18
+ interface ParsedCompatibilityArgs {
19
+ options: Omit<CompatibilityOptions, 'repoRoot' | 'provider'>;
20
+ }
21
+ //#endregion
22
+ export { CompatibilityOptions, CompatibilityProvider, ParsedCompatibilityArgs };
23
+ //# sourceMappingURL=compatibility.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compatibility.d.mts","names":[],"sources":["../../src/interfaces/compatibility.ts"],"mappings":";KAAY,qBAAA;AAAA,UAEK,oBAAA;EACf,QAAA;EACA,gBAAA;EACA,QAAA,EAAU,qBAAA;EALqB;EAO/B,OAAA;EALmC;EAOnC,OAAA;EAJ+B;EAM/B,SAAA;EAPA;EASA,YAAA;EARU;EAUV,qBAAA;AAAA;AAAA,UAGe,uBAAA;EACf,OAAA,EAAS,IAAA,CAAK,oBAAA;AAAA"}
@@ -0,0 +1,83 @@
1
+ //#region src/interfaces/harness.d.ts
2
+ type HarnessPreset = 'default' | 'kimi' | 'ollama';
3
+ type HarnessOutputFormat = 'native' | 'vibe-lint';
4
+ interface HarnessOptions {
5
+ repoRoot: string;
6
+ cwd: string;
7
+ /** One persona and its environment defaults from `.doom/profiles.yaml`. */
8
+ profile?: string;
9
+ /** Domain names that select plugins, skills, agents, and MCP scope. */
10
+ domains: string[];
11
+ /** One named major mode from `.doom/modes.yaml`. */
12
+ majorMode: string;
13
+ /** Print the resolved matrix and exit instead of launching Pi. */
14
+ explain: boolean;
15
+ /** Write the resolved MCP config into this directory and exit. */
16
+ emitMcp?: string;
17
+ /**
18
+ * Stage resources here instead of in a temporary directory.
19
+ *
20
+ * Set by `doom-pi sync`, whose output has to survive the process so plain Pi
21
+ * can load it. The caller then owns the directory and its removal.
22
+ */
23
+ resourceDirectory?: string;
24
+ pluginDirectories: string[];
25
+ additionalDirectories: string[];
26
+ preset: HarnessPreset;
27
+ /** Native Pi output or one vibe-lint script-provider response object. */
28
+ outputFormat: HarnessOutputFormat;
29
+ /** Suppress the notification extension for this run. */
30
+ mute: boolean;
31
+ automation: boolean;
32
+ autoStop: boolean;
33
+ allowProtectedWrites: boolean;
34
+ hooks: boolean;
35
+ mcp: boolean;
36
+ agents: boolean;
37
+ piArgs: string[];
38
+ }
39
+ interface ParsedHarnessArgs {
40
+ options: Omit<HarnessOptions, 'repoRoot'>;
41
+ help: boolean;
42
+ version: boolean;
43
+ }
44
+ interface PluginHookSource {
45
+ pluginRoot: string;
46
+ configPath: string;
47
+ }
48
+ interface HarnessResourceOptions {
49
+ agents: boolean;
50
+ mcp: boolean;
51
+ temporaryDirectory?: string;
52
+ workflowExtension?: string;
53
+ dispatcherWorkflowExtension?: string;
54
+ /** Domain MCP allowlist. Omit to keep every configured server. */
55
+ mcpAllowlist?: {
56
+ servers?: string[];
57
+ proxy?: string[];
58
+ };
59
+ /** Prepend .claude/skills. Defaults to true. */
60
+ sharedSkills?: boolean;
61
+ }
62
+ interface HarnessResources {
63
+ temporaryDirectory: string;
64
+ skillDirectories: string[];
65
+ /** Number of discovered SKILL.md files, which is what reaches the model. */
66
+ skillCount: number;
67
+ agentCount: number;
68
+ agentDirectories: string[];
69
+ pluginHooks: PluginHookSource[];
70
+ dispatcherWorkflowExtensionPath?: string;
71
+ mcpConfigPath?: string;
72
+ /**
73
+ * The plugin `.mcp.json` files this run selected, in precedence order.
74
+ *
75
+ * The merged `mcpConfigPath` above is for external frontends; doom-mcp reads
76
+ * these layers itself so mcp-proxy owns the merge for the in-process path.
77
+ */
78
+ pluginMcpConfigPaths: string[];
79
+ cleanup(): Promise<void>;
80
+ }
81
+ //#endregion
82
+ export { HarnessOptions, HarnessOutputFormat, HarnessPreset, HarnessResourceOptions, HarnessResources, ParsedHarnessArgs, PluginHookSource };
83
+ //# sourceMappingURL=harness.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"harness.d.cts","names":[],"sources":["../../src/interfaces/harness.ts"],"mappings":";KAAY,aAAA;AAAA,KACA,mBAAA;AAAA,UAEK,cAAA;EACf,QAAA;EACA,GAAA;EALuB;EAOvB,OAAA;EAN6B;EAQ7B,OAAA;EAR6B;EAU7B,SAAA;EARe;EAUf,OAAA;;EAEA,OAAA;EAXA;;;;;;EAkBA,iBAAA;EACA,iBAAA;EACA,qBAAA;EACA,MAAA,EAAQ,aAAA;EAAR;EAEA,YAAA,EAAc,mBAAA;EAAd;EAEA,IAAA;EACA,UAAA;EACA,QAAA;EACA,oBAAA;EACA,KAAA;EACA,GAAA;EACA,MAAA;EACA,MAAA;AAAA;AAAA,UAGe,iBAAA;EACf,OAAA,EAAS,IAAA,CAAK,cAAA;EACd,IAAA;EACA,OAAA;AAAA;AAAA,UAGe,gBAAA;EACf,UAAA;EACA,UAAA;AAAA;AAAA,UAGe,sBAAA;EACf,MAAA;EACA,GAAA;EACA,kBAAA;EACA,iBAAA;EACA,2BAAA;;EAEA,YAAA;IAAiB,OAAA;IAAoB,KAAA;EAAA;;EAErC,YAAA;AAAA;AAAA,UAGe,gBAAA;EACf,kBAAA;EACA,gBAAA;EATA;EAWA,UAAA;EACA,UAAA;EACA,gBAAA;EACA,WAAA,EAAa,gBAAA;EACb,+BAAA;EACA,aAAA;EATe;;;;;;EAgBf,oBAAA;EACA,OAAA,IAAW,OAAA;AAAA"}