@agimon-ai/doompi 0.0.1-alpha.2 → 0.0.1-alpha.21

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 (944) hide show
  1. package/README.md +437 -452
  2. package/assets/doompi-tui.png +0 -0
  3. package/dist/adapters/bootstrapClaim.cjs +2 -0
  4. package/dist/adapters/bootstrapClaim.cjs.map +1 -0
  5. package/dist/adapters/bootstrapClaim.mjs +2 -0
  6. package/dist/adapters/bootstrapClaim.mjs.map +1 -0
  7. package/dist/adapters/bootstrapLocator.cjs +2 -0
  8. package/dist/adapters/bootstrapLocator.cjs.map +1 -0
  9. package/dist/adapters/bootstrapLocator.d.cts +6 -0
  10. package/dist/adapters/bootstrapLocator.d.cts.map +1 -0
  11. package/dist/adapters/bootstrapLocator.d.mts +6 -0
  12. package/dist/adapters/bootstrapLocator.d.mts.map +1 -0
  13. package/dist/adapters/bootstrapLocator.mjs +2 -0
  14. package/dist/adapters/bootstrapLocator.mjs.map +1 -0
  15. package/dist/adapters/compatibility/antigravity.cjs +2 -0
  16. package/dist/{services → adapters}/compatibility/antigravity.cjs.map +1 -1
  17. package/dist/adapters/compatibility/antigravity.d.cts +11 -0
  18. package/dist/{services → adapters}/compatibility/antigravity.d.cts.map +1 -1
  19. package/dist/adapters/compatibility/antigravity.d.mts +11 -0
  20. package/dist/{services → adapters}/compatibility/antigravity.d.mts.map +1 -1
  21. package/dist/adapters/compatibility/antigravity.mjs +2 -0
  22. package/dist/{services → adapters}/compatibility/antigravity.mjs.map +1 -1
  23. package/dist/adapters/compatibility/codex.cjs +2 -0
  24. package/dist/{services → adapters}/compatibility/codex.cjs.map +1 -1
  25. package/dist/adapters/compatibility/codex.d.cts +19 -0
  26. package/dist/{services → adapters}/compatibility/codex.d.cts.map +1 -1
  27. package/dist/adapters/compatibility/codex.d.mts +19 -0
  28. package/dist/{services → adapters}/compatibility/codex.d.mts.map +1 -1
  29. package/dist/adapters/compatibility/codex.mjs +2 -0
  30. package/dist/{services → adapters}/compatibility/codex.mjs.map +1 -1
  31. package/dist/adapters/compatibility/index.cjs +2 -0
  32. package/dist/adapters/compatibility/index.cjs.map +1 -0
  33. package/dist/adapters/compatibility/index.d.cts +16 -0
  34. package/dist/{services → adapters}/compatibility/index.d.cts.map +1 -1
  35. package/dist/adapters/compatibility/index.d.mts +16 -0
  36. package/dist/{services → adapters}/compatibility/index.d.mts.map +1 -1
  37. package/dist/adapters/compatibility/index.mjs +2 -0
  38. package/dist/adapters/compatibility/index.mjs.map +1 -0
  39. package/dist/adapters/compatibility/process.cjs +2 -0
  40. package/dist/{services → adapters}/compatibility/process.cjs.map +1 -1
  41. package/dist/adapters/compatibility/process.d.cts +35 -0
  42. package/dist/{services → adapters}/compatibility/process.d.cts.map +1 -1
  43. package/dist/adapters/compatibility/process.d.mts +35 -0
  44. package/dist/{services → adapters}/compatibility/process.d.mts.map +1 -1
  45. package/dist/adapters/compatibility/process.mjs +2 -0
  46. package/dist/{services → adapters}/compatibility/process.mjs.map +1 -1
  47. package/dist/adapters/compatibility/shared.cjs +2 -0
  48. package/dist/{services → adapters}/compatibility/shared.cjs.map +1 -1
  49. package/dist/adapters/compatibility/shared.d.cts +33 -0
  50. package/dist/{services → adapters}/compatibility/shared.d.cts.map +1 -1
  51. package/dist/adapters/compatibility/shared.d.mts +33 -0
  52. package/dist/{services → adapters}/compatibility/shared.d.mts.map +1 -1
  53. package/dist/adapters/compatibility/shared.mjs +2 -0
  54. package/dist/{services → adapters}/compatibility/shared.mjs.map +1 -1
  55. package/dist/adapters/compatibilityContext.cjs +2 -0
  56. package/dist/adapters/compatibilityContext.cjs.map +1 -0
  57. package/dist/adapters/compatibilityContext.d.cts +23 -0
  58. package/dist/{services → adapters}/compatibilityContext.d.cts.map +1 -1
  59. package/dist/adapters/compatibilityContext.d.mts +23 -0
  60. package/dist/{services → adapters}/compatibilityContext.d.mts.map +1 -1
  61. package/dist/adapters/compatibilityContext.mjs +2 -0
  62. package/dist/adapters/compatibilityContext.mjs.map +1 -0
  63. package/dist/adapters/composer.cjs +2 -0
  64. package/dist/adapters/composer.cjs.map +1 -0
  65. package/dist/adapters/composer.d.cts +113 -0
  66. package/dist/adapters/composer.d.cts.map +1 -0
  67. package/dist/adapters/composer.d.mts +113 -0
  68. package/dist/adapters/composer.d.mts.map +1 -0
  69. package/dist/adapters/composer.mjs +2 -0
  70. package/dist/adapters/composer.mjs.map +1 -0
  71. package/dist/adapters/compositionState.cjs +2 -0
  72. package/dist/adapters/compositionState.cjs.map +1 -0
  73. package/dist/adapters/compositionState.d.cts +12 -0
  74. package/dist/adapters/compositionState.d.cts.map +1 -0
  75. package/dist/adapters/compositionState.d.mts +12 -0
  76. package/dist/adapters/compositionState.d.mts.map +1 -0
  77. package/dist/adapters/compositionState.mjs +2 -0
  78. package/dist/adapters/compositionState.mjs.map +1 -0
  79. package/dist/adapters/config/harnessState.cjs +2 -0
  80. package/dist/adapters/config/harnessState.cjs.map +1 -0
  81. package/dist/adapters/config/harnessState.d.cts +26 -0
  82. package/dist/adapters/config/harnessState.d.cts.map +1 -0
  83. package/dist/adapters/config/harnessState.d.mts +26 -0
  84. package/dist/adapters/config/harnessState.d.mts.map +1 -0
  85. package/dist/adapters/config/harnessState.mjs +2 -0
  86. package/dist/adapters/config/harnessState.mjs.map +1 -0
  87. package/dist/adapters/deferredSkills.cjs +12 -0
  88. package/dist/adapters/deferredSkills.cjs.map +1 -0
  89. package/dist/adapters/deferredSkills.mjs +12 -0
  90. package/dist/adapters/deferredSkills.mjs.map +1 -0
  91. package/dist/adapters/doomPackage.cjs +2 -0
  92. package/dist/adapters/doomPackage.cjs.map +1 -0
  93. package/dist/adapters/doomPackage.mjs +2 -0
  94. package/dist/adapters/doomPackage.mjs.map +1 -0
  95. package/dist/adapters/dpiRunner.cjs +3 -0
  96. package/dist/adapters/dpiRunner.cjs.map +1 -0
  97. package/dist/adapters/dpiRunner.mjs +3 -0
  98. package/dist/adapters/dpiRunner.mjs.map +1 -0
  99. package/dist/adapters/dpiSettings.cjs +2 -0
  100. package/dist/adapters/dpiSettings.cjs.map +1 -0
  101. package/dist/adapters/dpiSettings.mjs +2 -0
  102. package/dist/adapters/dpiSettings.mjs.map +1 -0
  103. package/dist/adapters/extensionCompiler.cjs +3 -0
  104. package/dist/adapters/extensionCompiler.cjs.map +1 -0
  105. package/dist/adapters/extensionCompiler.mjs +3 -0
  106. package/dist/adapters/extensionCompiler.mjs.map +1 -0
  107. package/dist/adapters/harnessContext.cjs +2 -0
  108. package/dist/adapters/harnessContext.cjs.map +1 -0
  109. package/dist/adapters/harnessContext.d.cts +61 -0
  110. package/dist/{services → adapters}/harnessContext.d.cts.map +1 -1
  111. package/dist/adapters/harnessContext.d.mts +61 -0
  112. package/dist/{services → adapters}/harnessContext.d.mts.map +1 -1
  113. package/dist/adapters/harnessContext.mjs +2 -0
  114. package/dist/adapters/harnessContext.mjs.map +1 -0
  115. package/dist/adapters/helpSkills.cjs +2 -0
  116. package/dist/adapters/helpSkills.cjs.map +1 -0
  117. package/dist/adapters/helpSkills.mjs +2 -0
  118. package/dist/adapters/helpSkills.mjs.map +1 -0
  119. package/dist/adapters/layerPackageInstaller.cjs +2 -0
  120. package/dist/adapters/layerPackageInstaller.cjs.map +1 -0
  121. package/dist/adapters/layerPackageInstaller.mjs +2 -0
  122. package/dist/adapters/layerPackageInstaller.mjs.map +1 -0
  123. package/dist/adapters/matrixSwitcher.cjs +2 -0
  124. package/dist/adapters/matrixSwitcher.cjs.map +1 -0
  125. package/dist/adapters/matrixSwitcher.d.cts +46 -0
  126. package/dist/{services → adapters}/matrixSwitcher.d.cts.map +1 -1
  127. package/dist/adapters/matrixSwitcher.d.mts +46 -0
  128. package/dist/{services → adapters}/matrixSwitcher.d.mts.map +1 -1
  129. package/dist/adapters/matrixSwitcher.mjs +2 -0
  130. package/dist/adapters/matrixSwitcher.mjs.map +1 -0
  131. package/dist/adapters/mcpFilter.cjs +3 -0
  132. package/dist/adapters/mcpFilter.cjs.map +1 -0
  133. package/dist/adapters/mcpFilter.d.cts +40 -0
  134. package/dist/adapters/mcpFilter.d.cts.map +1 -0
  135. package/dist/adapters/mcpFilter.d.mts +40 -0
  136. package/dist/adapters/mcpFilter.d.mts.map +1 -0
  137. package/dist/adapters/mcpFilter.mjs +3 -0
  138. package/dist/adapters/mcpFilter.mjs.map +1 -0
  139. package/dist/adapters/modules/moduleResolution.cjs +2 -0
  140. package/dist/adapters/modules/moduleResolution.cjs.map +1 -0
  141. package/dist/adapters/modules/moduleResolution.d.cts +69 -0
  142. package/dist/adapters/modules/moduleResolution.d.cts.map +1 -0
  143. package/dist/adapters/modules/moduleResolution.d.mts +69 -0
  144. package/dist/adapters/modules/moduleResolution.d.mts.map +1 -0
  145. package/dist/adapters/modules/moduleResolution.mjs +2 -0
  146. package/dist/adapters/modules/moduleResolution.mjs.map +1 -0
  147. package/dist/adapters/packageBootstrap.cjs +2 -0
  148. package/dist/adapters/packageBootstrap.cjs.map +1 -0
  149. package/dist/adapters/packageBootstrap.d.cts +8 -0
  150. package/dist/adapters/packageBootstrap.d.cts.map +1 -0
  151. package/dist/adapters/packageBootstrap.d.mts +8 -0
  152. package/dist/adapters/packageBootstrap.d.mts.map +1 -0
  153. package/dist/adapters/packageBootstrap.mjs +2 -0
  154. package/dist/adapters/packageBootstrap.mjs.map +1 -0
  155. package/dist/adapters/piExtensionAlias.cjs +2 -0
  156. package/dist/adapters/piExtensionAlias.cjs.map +1 -0
  157. package/dist/adapters/piExtensionAlias.mjs +2 -0
  158. package/dist/adapters/piExtensionAlias.mjs.map +1 -0
  159. package/dist/adapters/piSettings.cjs +2 -0
  160. package/dist/adapters/piSettings.cjs.map +1 -0
  161. package/dist/adapters/piSettings.d.cts +25 -0
  162. package/dist/adapters/piSettings.d.cts.map +1 -0
  163. package/dist/adapters/piSettings.d.mts +25 -0
  164. package/dist/adapters/piSettings.d.mts.map +1 -0
  165. package/dist/adapters/piSettings.mjs +2 -0
  166. package/dist/adapters/piSettings.mjs.map +1 -0
  167. package/dist/adapters/pluginMaterializer.cjs +2 -0
  168. package/dist/adapters/pluginMaterializer.cjs.map +1 -0
  169. package/dist/adapters/pluginMaterializer.mjs +2 -0
  170. package/dist/adapters/pluginMaterializer.mjs.map +1 -0
  171. package/dist/adapters/projectPiSettings.cjs +2 -0
  172. package/dist/adapters/projectPiSettings.cjs.map +1 -0
  173. package/dist/adapters/projectPiSettings.d.cts +29 -0
  174. package/dist/adapters/projectPiSettings.d.cts.map +1 -0
  175. package/dist/adapters/projectPiSettings.d.mts +29 -0
  176. package/dist/adapters/projectPiSettings.d.mts.map +1 -0
  177. package/dist/adapters/projectPiSettings.mjs +2 -0
  178. package/dist/adapters/projectPiSettings.mjs.map +1 -0
  179. package/dist/adapters/repository/repository.cjs +2 -0
  180. package/dist/adapters/repository/repository.cjs.map +1 -0
  181. package/dist/adapters/repository/repository.d.cts +21 -0
  182. package/dist/adapters/repository/repository.d.cts.map +1 -0
  183. package/dist/adapters/repository/repository.d.mts +21 -0
  184. package/dist/adapters/repository/repository.d.mts.map +1 -0
  185. package/dist/adapters/repository/repository.mjs +2 -0
  186. package/dist/adapters/repository/repository.mjs.map +1 -0
  187. package/dist/adapters/resourceCollector.cjs +3 -0
  188. package/dist/adapters/resourceCollector.cjs.map +1 -0
  189. package/dist/adapters/resourceCollector.d.cts +25 -0
  190. package/dist/adapters/resourceCollector.d.cts.map +1 -0
  191. package/dist/adapters/resourceCollector.d.mts +25 -0
  192. package/dist/adapters/resourceCollector.d.mts.map +1 -0
  193. package/dist/adapters/resourceCollector.mjs +3 -0
  194. package/dist/adapters/resourceCollector.mjs.map +1 -0
  195. package/dist/adapters/runtimeBundle.cjs +2 -0
  196. package/dist/adapters/runtimeBundle.cjs.map +1 -0
  197. package/dist/{services → adapters}/runtimeBundle.d.cts +4 -2
  198. package/dist/adapters/runtimeBundle.d.cts.map +1 -0
  199. package/dist/{services → adapters}/runtimeBundle.d.mts +4 -2
  200. package/dist/adapters/runtimeBundle.d.mts.map +1 -0
  201. package/dist/adapters/runtimeBundle.mjs +2 -0
  202. package/dist/adapters/runtimeBundle.mjs.map +1 -0
  203. package/dist/adapters/serialization/json.cjs +2 -0
  204. package/dist/adapters/serialization/json.cjs.map +1 -0
  205. package/dist/adapters/serialization/json.d.cts +23 -0
  206. package/dist/adapters/serialization/json.d.cts.map +1 -0
  207. package/dist/adapters/serialization/json.d.mts +23 -0
  208. package/dist/adapters/serialization/json.d.mts.map +1 -0
  209. package/dist/adapters/serialization/json.mjs +2 -0
  210. package/dist/adapters/serialization/json.mjs.map +1 -0
  211. package/dist/adapters/sharedBuildCache.cjs +2 -0
  212. package/dist/adapters/sharedBuildCache.cjs.map +1 -0
  213. package/dist/adapters/sharedBuildCache.mjs +2 -0
  214. package/dist/adapters/sharedBuildCache.mjs.map +1 -0
  215. package/dist/adapters/skillCatalog.cjs +2 -0
  216. package/dist/adapters/skillCatalog.cjs.map +1 -0
  217. package/dist/adapters/skillCatalog.d.cts +61 -0
  218. package/dist/adapters/skillCatalog.d.cts.map +1 -0
  219. package/dist/adapters/skillCatalog.d.mts +61 -0
  220. package/dist/adapters/skillCatalog.d.mts.map +1 -0
  221. package/dist/adapters/skillCatalog.mjs +2 -0
  222. package/dist/adapters/skillCatalog.mjs.map +1 -0
  223. package/dist/adapters/skillSources.cjs +2 -0
  224. package/dist/{services → adapters}/skillSources.cjs.map +1 -1
  225. package/dist/adapters/skillSources.d.cts +24 -0
  226. package/dist/{services → adapters}/skillSources.d.cts.map +1 -1
  227. package/dist/adapters/skillSources.d.mts +24 -0
  228. package/dist/{services → adapters}/skillSources.d.mts.map +1 -1
  229. package/dist/adapters/skillSources.mjs +2 -0
  230. package/dist/{services → adapters}/skillSources.mjs.map +1 -1
  231. package/dist/adapters/startupPrecompiler.cjs +2 -0
  232. package/dist/adapters/startupPrecompiler.cjs.map +1 -0
  233. package/dist/adapters/startupPrecompiler.d.cts +13 -0
  234. package/dist/adapters/startupPrecompiler.d.cts.map +1 -0
  235. package/dist/adapters/startupPrecompiler.d.mts +13 -0
  236. package/dist/adapters/startupPrecompiler.d.mts.map +1 -0
  237. package/dist/adapters/startupPrecompiler.mjs +2 -0
  238. package/dist/adapters/startupPrecompiler.mjs.map +1 -0
  239. package/dist/adapters/syncLocation.cjs +2 -0
  240. package/dist/adapters/syncLocation.cjs.map +1 -0
  241. package/dist/adapters/syncLocation.d.cts +19 -0
  242. package/dist/adapters/syncLocation.d.cts.map +1 -0
  243. package/dist/adapters/syncLocation.d.mts +19 -0
  244. package/dist/adapters/syncLocation.d.mts.map +1 -0
  245. package/dist/adapters/syncLocation.mjs +2 -0
  246. package/dist/adapters/syncLocation.mjs.map +1 -0
  247. package/dist/adapters/syncState.cjs +2 -0
  248. package/dist/adapters/syncState.cjs.map +1 -0
  249. package/dist/adapters/syncState.d.cts +153 -0
  250. package/dist/adapters/syncState.d.cts.map +1 -0
  251. package/dist/adapters/syncState.d.mts +153 -0
  252. package/dist/adapters/syncState.d.mts.map +1 -0
  253. package/dist/adapters/syncState.mjs +2 -0
  254. package/dist/adapters/syncState.mjs.map +1 -0
  255. package/dist/adapters/syncStateContract.cjs +2 -0
  256. package/dist/adapters/syncStateContract.cjs.map +1 -0
  257. package/dist/adapters/syncStateContract.d.cts +13 -0
  258. package/dist/adapters/syncStateContract.d.cts.map +1 -0
  259. package/dist/adapters/syncStateContract.d.mts +13 -0
  260. package/dist/adapters/syncStateContract.d.mts.map +1 -0
  261. package/dist/adapters/syncStateContract.mjs +2 -0
  262. package/dist/adapters/syncStateContract.mjs.map +1 -0
  263. package/dist/adapters/syncedRuntimeBuilder.cjs +2 -0
  264. package/dist/adapters/syncedRuntimeBuilder.cjs.map +1 -0
  265. package/dist/adapters/syncedRuntimeBuilder.d.cts +11 -0
  266. package/dist/adapters/syncedRuntimeBuilder.d.cts.map +1 -0
  267. package/dist/adapters/syncedRuntimeBuilder.d.mts +11 -0
  268. package/dist/adapters/syncedRuntimeBuilder.d.mts.map +1 -0
  269. package/dist/adapters/syncedRuntimeBuilder.mjs +2 -0
  270. package/dist/adapters/syncedRuntimeBuilder.mjs.map +1 -0
  271. package/dist/adapters/telemetry/logSinkTelemetry.cjs +2 -0
  272. package/dist/adapters/telemetry/logSinkTelemetry.cjs.map +1 -0
  273. package/dist/adapters/telemetry/logSinkTelemetry.d.cts +51 -0
  274. package/dist/adapters/telemetry/logSinkTelemetry.d.cts.map +1 -0
  275. package/dist/adapters/telemetry/logSinkTelemetry.d.mts +51 -0
  276. package/dist/adapters/telemetry/logSinkTelemetry.d.mts.map +1 -0
  277. package/dist/adapters/telemetry/logSinkTelemetry.mjs +2 -0
  278. package/dist/adapters/telemetry/logSinkTelemetry.mjs.map +1 -0
  279. package/dist/bin/cli.cjs +1 -1
  280. package/dist/bin/cli.cjs.map +1 -1
  281. package/dist/bin/cli.mjs +1 -1
  282. package/dist/bin/cli.mjs.map +1 -1
  283. package/dist/bin/dpi.cjs +3 -0
  284. package/dist/bin/dpi.cjs.map +1 -0
  285. package/dist/bin/dpi.d.cts +1 -0
  286. package/dist/bin/dpi.d.mts +1 -0
  287. package/dist/bin/dpi.mjs +3 -0
  288. package/dist/bin/dpi.mjs.map +1 -0
  289. package/dist/cli/cliApp.cjs +1 -2
  290. package/dist/cli/cliApp.d.cts +2 -45
  291. package/dist/cli/cliApp.d.mts +2 -45
  292. package/dist/cli/cliApp.mjs +1 -2
  293. package/dist/cli/compatibilityOptions.cjs +1 -2
  294. package/dist/cli/compatibilityOptions.d.cts +2 -15
  295. package/dist/cli/compatibilityOptions.d.mts +2 -15
  296. package/dist/cli/compatibilityOptions.mjs +1 -2
  297. package/dist/cli/help.cjs +1 -63
  298. package/dist/cli/help.d.cts +2 -6
  299. package/dist/cli/help.d.mts +2 -6
  300. package/dist/cli/help.mjs +1 -63
  301. package/dist/cli/index.cjs +1 -1
  302. package/dist/cli/index.d.cts +4 -4
  303. package/dist/cli/index.d.mts +4 -4
  304. package/dist/cli/index.mjs +1 -1
  305. package/dist/cli/matrixOptions.cjs +1 -2
  306. package/dist/cli/matrixOptions.d.cts +2 -99
  307. package/dist/cli/matrixOptions.d.mts +2 -99
  308. package/dist/cli/matrixOptions.mjs +1 -2
  309. package/dist/cli/options.cjs +1 -2
  310. package/dist/cli/options.d.cts +2 -7
  311. package/dist/cli/options.d.mts +2 -7
  312. package/dist/cli/options.mjs +1 -2
  313. package/dist/commands/baseCommand.cjs.map +1 -1
  314. package/dist/commands/baseCommand.d.cts +3 -3
  315. package/dist/commands/baseCommand.d.mts +3 -3
  316. package/dist/commands/baseCommand.mjs.map +1 -1
  317. package/dist/commands/buildCommand.cjs +2 -2
  318. package/dist/commands/buildCommand.cjs.map +1 -1
  319. package/dist/commands/buildCommand.mjs +2 -2
  320. package/dist/commands/buildCommand.mjs.map +1 -1
  321. package/dist/commands/cli/cliApp.cjs +2 -0
  322. package/dist/commands/cli/cliApp.cjs.map +1 -0
  323. package/dist/commands/cli/cliApp.d.cts +45 -0
  324. package/dist/commands/cli/cliApp.d.cts.map +1 -0
  325. package/dist/commands/cli/cliApp.d.mts +45 -0
  326. package/dist/commands/cli/cliApp.d.mts.map +1 -0
  327. package/dist/commands/cli/cliApp.mjs +2 -0
  328. package/dist/commands/cli/cliApp.mjs.map +1 -0
  329. package/dist/commands/cli/compatibilityOptions.cjs +2 -0
  330. package/dist/commands/cli/compatibilityOptions.cjs.map +1 -0
  331. package/dist/commands/cli/compatibilityOptions.d.cts +15 -0
  332. package/dist/commands/cli/compatibilityOptions.d.cts.map +1 -0
  333. package/dist/commands/cli/compatibilityOptions.d.mts +15 -0
  334. package/dist/commands/cli/compatibilityOptions.d.mts.map +1 -0
  335. package/dist/commands/cli/compatibilityOptions.mjs +2 -0
  336. package/dist/commands/cli/compatibilityOptions.mjs.map +1 -0
  337. package/dist/commands/cli/help.cjs +68 -0
  338. package/dist/{cli → commands/cli}/help.cjs.map +1 -1
  339. package/dist/commands/cli/help.d.cts +6 -0
  340. package/dist/commands/cli/help.d.cts.map +1 -0
  341. package/dist/commands/cli/help.d.mts +6 -0
  342. package/dist/commands/cli/help.d.mts.map +1 -0
  343. package/dist/commands/cli/help.mjs +68 -0
  344. package/dist/{cli → commands/cli}/help.mjs.map +1 -1
  345. package/dist/commands/cli/index.cjs +1 -0
  346. package/dist/commands/cli/index.d.cts +4 -0
  347. package/dist/commands/cli/index.d.mts +4 -0
  348. package/dist/commands/cli/index.mjs +1 -0
  349. package/dist/commands/cli/matrixOptions.cjs +2 -0
  350. package/dist/commands/cli/matrixOptions.cjs.map +1 -0
  351. package/dist/commands/cli/matrixOptions.d.cts +99 -0
  352. package/dist/commands/cli/matrixOptions.d.cts.map +1 -0
  353. package/dist/commands/cli/matrixOptions.d.mts +99 -0
  354. package/dist/commands/cli/matrixOptions.d.mts.map +1 -0
  355. package/dist/commands/cli/matrixOptions.mjs +2 -0
  356. package/dist/commands/cli/matrixOptions.mjs.map +1 -0
  357. package/dist/commands/cli/options.cjs +2 -0
  358. package/dist/commands/cli/options.cjs.map +1 -0
  359. package/dist/commands/cli/options.d.cts +7 -0
  360. package/dist/commands/cli/options.d.cts.map +1 -0
  361. package/dist/commands/cli/options.d.mts +7 -0
  362. package/dist/commands/cli/options.d.mts.map +1 -0
  363. package/dist/commands/cli/options.mjs +2 -0
  364. package/dist/commands/cli/options.mjs.map +1 -0
  365. package/dist/commands/compatibilityCommand.cjs +1 -1
  366. package/dist/commands/compatibilityCommand.cjs.map +1 -1
  367. package/dist/commands/compatibilityCommand.d.cts +1 -1
  368. package/dist/commands/compatibilityCommand.d.cts.map +1 -1
  369. package/dist/commands/compatibilityCommand.d.mts +1 -1
  370. package/dist/commands/compatibilityCommand.d.mts.map +1 -1
  371. package/dist/commands/compatibilityCommand.mjs +1 -1
  372. package/dist/commands/compatibilityCommand.mjs.map +1 -1
  373. package/dist/commands/emitMcpCommand.cjs +1 -1
  374. package/dist/commands/emitMcpCommand.cjs.map +1 -1
  375. package/dist/commands/emitMcpCommand.d.cts +2 -2
  376. package/dist/commands/emitMcpCommand.d.mts +2 -2
  377. package/dist/commands/emitMcpCommand.mjs +1 -1
  378. package/dist/commands/emitMcpCommand.mjs.map +1 -1
  379. package/dist/commands/explainCommand.cjs +2 -2
  380. package/dist/commands/explainCommand.cjs.map +1 -1
  381. package/dist/commands/explainCommand.d.cts +2 -2
  382. package/dist/commands/explainCommand.d.mts +2 -2
  383. package/dist/commands/explainCommand.mjs +2 -2
  384. package/dist/commands/explainCommand.mjs.map +1 -1
  385. package/dist/commands/index.cjs +1 -1
  386. package/dist/commands/index.d.cts +2 -3
  387. package/dist/commands/index.d.mts +2 -3
  388. package/dist/commands/index.mjs +1 -1
  389. package/dist/commands/initCommand.cjs +1 -2
  390. package/dist/commands/initCommand.cjs.map +1 -1
  391. package/dist/commands/initCommand.d.cts +4 -3
  392. package/dist/commands/initCommand.d.cts.map +1 -1
  393. package/dist/commands/initCommand.d.mts +4 -3
  394. package/dist/commands/initCommand.d.mts.map +1 -1
  395. package/dist/commands/initCommand.mjs +1 -2
  396. package/dist/commands/initCommand.mjs.map +1 -1
  397. package/dist/commands/initPresenter.cjs +3 -0
  398. package/dist/commands/initPresenter.cjs.map +1 -0
  399. package/dist/commands/initPresenter.d.cts +8 -0
  400. package/dist/commands/initPresenter.d.cts.map +1 -0
  401. package/dist/commands/initPresenter.d.mts +8 -0
  402. package/dist/commands/initPresenter.d.mts.map +1 -0
  403. package/dist/commands/initPresenter.mjs +3 -0
  404. package/dist/commands/initPresenter.mjs.map +1 -0
  405. package/dist/commands/launchCommand.cjs +1 -1
  406. package/dist/commands/launchCommand.cjs.map +1 -1
  407. package/dist/commands/launchCommand.d.cts +6 -4
  408. package/dist/commands/launchCommand.d.cts.map +1 -1
  409. package/dist/commands/launchCommand.d.mts +6 -4
  410. package/dist/commands/launchCommand.d.mts.map +1 -1
  411. package/dist/commands/launchCommand.mjs +1 -1
  412. package/dist/commands/launchCommand.mjs.map +1 -1
  413. package/dist/commands/syncCommand.cjs +5 -5
  414. package/dist/commands/syncCommand.cjs.map +1 -1
  415. package/dist/commands/syncCommand.d.cts +19 -7
  416. package/dist/commands/syncCommand.d.cts.map +1 -1
  417. package/dist/commands/syncCommand.d.mts +19 -7
  418. package/dist/commands/syncCommand.d.mts.map +1 -1
  419. package/dist/commands/syncCommand.mjs +5 -5
  420. package/dist/commands/syncCommand.mjs.map +1 -1
  421. package/dist/commands/syncPipeline.cjs +2 -0
  422. package/dist/commands/syncPipeline.cjs.map +1 -0
  423. package/dist/commands/syncPipeline.mjs +2 -0
  424. package/dist/commands/syncPipeline.mjs.map +1 -0
  425. package/dist/config/harnessState.cjs +1 -2
  426. package/dist/config/harnessState.d.cts +2 -24
  427. package/dist/config/harnessState.d.mts +2 -24
  428. package/dist/config/harnessState.mjs +1 -2
  429. package/dist/config/index.cjs +1 -1
  430. package/dist/config/index.d.cts +4 -7
  431. package/dist/config/index.d.mts +4 -7
  432. package/dist/config/index.mjs +1 -1
  433. package/dist/config/projectTrust.cjs +1 -2
  434. package/dist/config/projectTrust.d.cts +2 -14
  435. package/dist/config/projectTrust.d.mts +2 -14
  436. package/dist/config/projectTrust.mjs +1 -2
  437. package/dist/entries/autoStop.cjs +1 -2
  438. package/dist/entries/autoStop.d.cts +2 -6
  439. package/dist/entries/autoStop.d.mts +2 -7
  440. package/dist/entries/autoStop.mjs +1 -2
  441. package/dist/entries/components/matrixPicker.cjs +1 -2
  442. package/dist/entries/components/matrixPicker.d.cts +2 -55
  443. package/dist/entries/components/matrixPicker.d.mts +2 -55
  444. package/dist/entries/components/matrixPicker.mjs +1 -2
  445. package/dist/entries/components/skillsOverlay.cjs +1 -4
  446. package/dist/entries/components/skillsOverlay.d.cts +2 -58
  447. package/dist/entries/components/skillsOverlay.d.mts +2 -58
  448. package/dist/entries/components/skillsOverlay.mjs +1 -4
  449. package/dist/entries/domains.cjs +1 -2
  450. package/dist/entries/domains.d.cts +2 -10
  451. package/dist/entries/domains.d.mts +2 -10
  452. package/dist/entries/domains.mjs +1 -2
  453. package/dist/entries/doom.cjs +1 -2
  454. package/dist/entries/doom.d.cts +2 -13
  455. package/dist/entries/doom.d.mts +2 -14
  456. package/dist/entries/doom.mjs +1 -2
  457. package/dist/entries/effort.cjs +1 -2
  458. package/dist/entries/effort.d.cts +2 -10
  459. package/dist/entries/effort.d.mts +2 -10
  460. package/dist/entries/effort.mjs +1 -2
  461. package/dist/entries/majorMode.cjs +1 -6
  462. package/dist/entries/majorMode.d.cts +2 -29
  463. package/dist/entries/majorMode.d.mts +2 -29
  464. package/dist/entries/majorMode.mjs +1 -6
  465. package/dist/entries/modeCatalog.cjs +1 -0
  466. package/dist/entries/modeCatalog.d.cts +2 -0
  467. package/dist/entries/modeCatalog.d.mts +2 -0
  468. package/dist/entries/modeCatalog.mjs +1 -0
  469. package/dist/entries/notifications.cjs +1 -2
  470. package/dist/entries/notifications.d.cts +2 -13
  471. package/dist/entries/notifications.d.mts +2 -13
  472. package/dist/entries/notifications.mjs +1 -2
  473. package/dist/entries/ollamaProvider.cjs +1 -2
  474. package/dist/entries/ollamaProvider.d.cts +2 -6
  475. package/dist/entries/ollamaProvider.d.mts +2 -7
  476. package/dist/entries/ollamaProvider.mjs +1 -2
  477. package/dist/entries/persona.cjs +1 -2
  478. package/dist/entries/persona.d.cts +2 -14
  479. package/dist/entries/persona.d.mts +2 -15
  480. package/dist/entries/persona.mjs +1 -2
  481. package/dist/entries/profile.cjs +1 -3
  482. package/dist/entries/profile.d.cts +2 -16
  483. package/dist/entries/profile.d.mts +2 -16
  484. package/dist/entries/profile.mjs +1 -3
  485. package/dist/entries/repositoryHooks.cjs +1 -9
  486. package/dist/entries/repositoryHooks.d.cts +2 -7
  487. package/dist/entries/repositoryHooks.d.mts +2 -8
  488. package/dist/entries/repositoryHooks.mjs +1 -9
  489. package/dist/entries/skills.cjs +1 -2
  490. package/dist/entries/skills.d.cts +2 -34
  491. package/dist/entries/skills.d.mts +2 -34
  492. package/dist/entries/skills.mjs +1 -2
  493. package/dist/entries/styleSystem.cjs +1 -4
  494. package/dist/entries/styleSystem.d.cts +2 -32
  495. package/dist/entries/styleSystem.d.mts +2 -32
  496. package/dist/entries/styleSystem.mjs +1 -4
  497. package/dist/extensions/entries/autoStop.cjs +2 -0
  498. package/dist/extensions/entries/autoStop.cjs.map +1 -0
  499. package/dist/extensions/entries/autoStop.d.cts +7 -0
  500. package/dist/extensions/entries/autoStop.d.cts.map +1 -0
  501. package/dist/extensions/entries/autoStop.d.mts +7 -0
  502. package/dist/extensions/entries/autoStop.d.mts.map +1 -0
  503. package/dist/extensions/entries/autoStop.mjs +2 -0
  504. package/dist/extensions/entries/autoStop.mjs.map +1 -0
  505. package/dist/extensions/entries/cacheOptimizer.mjs +2 -0
  506. package/dist/extensions/entries/cacheOptimizer.mjs.map +1 -0
  507. package/dist/extensions/entries/components/matrixPicker.cjs +2 -0
  508. package/dist/extensions/entries/components/matrixPicker.cjs.map +1 -0
  509. package/dist/extensions/entries/components/matrixPicker.d.cts +55 -0
  510. package/dist/extensions/entries/components/matrixPicker.d.cts.map +1 -0
  511. package/dist/extensions/entries/components/matrixPicker.d.mts +55 -0
  512. package/dist/extensions/entries/components/matrixPicker.d.mts.map +1 -0
  513. package/dist/extensions/entries/components/matrixPicker.mjs +2 -0
  514. package/dist/extensions/entries/components/matrixPicker.mjs.map +1 -0
  515. package/dist/extensions/entries/components/skillsOverlay.cjs +4 -0
  516. package/dist/extensions/entries/components/skillsOverlay.cjs.map +1 -0
  517. package/dist/extensions/entries/components/skillsOverlay.d.cts +58 -0
  518. package/dist/extensions/entries/components/skillsOverlay.d.cts.map +1 -0
  519. package/dist/extensions/entries/components/skillsOverlay.d.mts +58 -0
  520. package/dist/extensions/entries/components/skillsOverlay.d.mts.map +1 -0
  521. package/dist/extensions/entries/components/skillsOverlay.mjs +4 -0
  522. package/dist/extensions/entries/components/skillsOverlay.mjs.map +1 -0
  523. package/dist/extensions/entries/domains.cjs +2 -0
  524. package/dist/extensions/entries/domains.cjs.map +1 -0
  525. package/dist/extensions/entries/domains.d.cts +18 -0
  526. package/dist/extensions/entries/domains.d.cts.map +1 -0
  527. package/dist/extensions/entries/domains.d.mts +18 -0
  528. package/dist/extensions/entries/domains.d.mts.map +1 -0
  529. package/dist/extensions/entries/domains.mjs +2 -0
  530. package/dist/extensions/entries/domains.mjs.map +1 -0
  531. package/dist/extensions/entries/doom.cjs +2 -0
  532. package/dist/extensions/entries/doom.cjs.map +1 -0
  533. package/dist/extensions/entries/doom.d.cts +14 -0
  534. package/dist/extensions/entries/doom.d.cts.map +1 -0
  535. package/dist/extensions/entries/doom.d.mts +14 -0
  536. package/dist/extensions/entries/doom.d.mts.map +1 -0
  537. package/dist/extensions/entries/doom.mjs +2 -0
  538. package/dist/extensions/entries/doom.mjs.map +1 -0
  539. package/dist/extensions/entries/effort.cjs +2 -0
  540. package/dist/extensions/entries/effort.cjs.map +1 -0
  541. package/dist/extensions/entries/effort.d.cts +10 -0
  542. package/dist/extensions/entries/effort.d.cts.map +1 -0
  543. package/dist/extensions/entries/effort.d.mts +10 -0
  544. package/dist/extensions/entries/effort.d.mts.map +1 -0
  545. package/dist/extensions/entries/effort.mjs +2 -0
  546. package/dist/extensions/entries/effort.mjs.map +1 -0
  547. package/dist/extensions/entries/majorMode.cjs +6 -0
  548. package/dist/extensions/entries/majorMode.cjs.map +1 -0
  549. package/dist/extensions/entries/majorMode.d.cts +27 -0
  550. package/dist/extensions/entries/majorMode.d.cts.map +1 -0
  551. package/dist/extensions/entries/majorMode.d.mts +27 -0
  552. package/dist/extensions/entries/majorMode.d.mts.map +1 -0
  553. package/dist/extensions/entries/majorMode.mjs +6 -0
  554. package/dist/extensions/entries/majorMode.mjs.map +1 -0
  555. package/dist/extensions/entries/modeCatalog.cjs +2 -0
  556. package/dist/extensions/entries/modeCatalog.cjs.map +1 -0
  557. package/dist/extensions/entries/modeCatalog.d.cts +7 -0
  558. package/dist/extensions/entries/modeCatalog.d.cts.map +1 -0
  559. package/dist/extensions/entries/modeCatalog.d.mts +7 -0
  560. package/dist/extensions/entries/modeCatalog.d.mts.map +1 -0
  561. package/dist/extensions/entries/modeCatalog.mjs +2 -0
  562. package/dist/extensions/entries/modeCatalog.mjs.map +1 -0
  563. package/dist/extensions/entries/notifications.cjs +2 -0
  564. package/dist/extensions/entries/notifications.cjs.map +1 -0
  565. package/dist/extensions/entries/notifications.d.cts +14 -0
  566. package/dist/extensions/entries/notifications.d.cts.map +1 -0
  567. package/dist/extensions/entries/notifications.d.mts +14 -0
  568. package/dist/extensions/entries/notifications.d.mts.map +1 -0
  569. package/dist/extensions/entries/notifications.mjs +2 -0
  570. package/dist/extensions/entries/notifications.mjs.map +1 -0
  571. package/dist/extensions/entries/ollamaProvider.cjs +2 -0
  572. package/dist/extensions/entries/ollamaProvider.cjs.map +1 -0
  573. package/dist/extensions/entries/ollamaProvider.d.cts +7 -0
  574. package/dist/extensions/entries/ollamaProvider.d.cts.map +1 -0
  575. package/dist/extensions/entries/ollamaProvider.d.mts +7 -0
  576. package/dist/extensions/entries/ollamaProvider.d.mts.map +1 -0
  577. package/dist/extensions/entries/ollamaProvider.mjs +2 -0
  578. package/dist/extensions/entries/ollamaProvider.mjs.map +1 -0
  579. package/dist/extensions/entries/persona.cjs +2 -0
  580. package/dist/extensions/entries/persona.cjs.map +1 -0
  581. package/dist/extensions/entries/persona.d.cts +15 -0
  582. package/dist/extensions/entries/persona.d.cts.map +1 -0
  583. package/dist/extensions/entries/persona.d.mts +15 -0
  584. package/dist/extensions/entries/persona.d.mts.map +1 -0
  585. package/dist/extensions/entries/persona.mjs +2 -0
  586. package/dist/extensions/entries/persona.mjs.map +1 -0
  587. package/dist/extensions/entries/profile.cjs +3 -0
  588. package/dist/extensions/entries/profile.cjs.map +1 -0
  589. package/dist/extensions/entries/profile.d.cts +18 -0
  590. package/dist/extensions/entries/profile.d.cts.map +1 -0
  591. package/dist/extensions/entries/profile.d.mts +18 -0
  592. package/dist/extensions/entries/profile.d.mts.map +1 -0
  593. package/dist/extensions/entries/profile.mjs +3 -0
  594. package/dist/extensions/entries/profile.mjs.map +1 -0
  595. package/dist/extensions/entries/repositoryHooks.cjs +9 -0
  596. package/dist/extensions/entries/repositoryHooks.cjs.map +1 -0
  597. package/dist/extensions/entries/repositoryHooks.d.cts +8 -0
  598. package/dist/extensions/entries/repositoryHooks.d.cts.map +1 -0
  599. package/dist/extensions/entries/repositoryHooks.d.mts +8 -0
  600. package/dist/extensions/entries/repositoryHooks.d.mts.map +1 -0
  601. package/dist/extensions/entries/repositoryHooks.mjs +9 -0
  602. package/dist/extensions/entries/repositoryHooks.mjs.map +1 -0
  603. package/dist/extensions/entries/shellTitleController.cjs +27 -0
  604. package/dist/extensions/entries/shellTitleController.cjs.map +1 -0
  605. package/dist/extensions/entries/shellTitleController.d.cts +11 -0
  606. package/dist/extensions/entries/shellTitleController.d.cts.map +1 -0
  607. package/dist/extensions/entries/shellTitleController.d.mts +11 -0
  608. package/dist/extensions/entries/shellTitleController.d.mts.map +1 -0
  609. package/dist/extensions/entries/shellTitleController.mjs +27 -0
  610. package/dist/extensions/entries/shellTitleController.mjs.map +1 -0
  611. package/dist/extensions/entries/skills.cjs +4 -0
  612. package/dist/extensions/entries/skills.cjs.map +1 -0
  613. package/dist/extensions/entries/skills.d.cts +34 -0
  614. package/dist/extensions/entries/skills.d.cts.map +1 -0
  615. package/dist/extensions/entries/skills.d.mts +34 -0
  616. package/dist/extensions/entries/skills.d.mts.map +1 -0
  617. package/dist/extensions/entries/skills.mjs +4 -0
  618. package/dist/extensions/entries/skills.mjs.map +1 -0
  619. package/dist/extensions/entries/styleSystem.cjs +4 -0
  620. package/dist/extensions/entries/styleSystem.cjs.map +1 -0
  621. package/dist/extensions/entries/styleSystem.d.cts +32 -0
  622. package/dist/extensions/entries/styleSystem.d.cts.map +1 -0
  623. package/dist/extensions/entries/styleSystem.d.mts +32 -0
  624. package/dist/extensions/entries/styleSystem.d.mts.map +1 -0
  625. package/dist/extensions/entries/styleSystem.mjs +4 -0
  626. package/dist/{entries/styleSystem.cjs.map → extensions/entries/styleSystem.mjs.map} +1 -1
  627. package/dist/extensions/pi.cjs +1 -0
  628. package/dist/extensions/pi.d.cts +2 -0
  629. package/dist/extensions/pi.d.mts +2 -0
  630. package/dist/extensions/pi.mjs +1 -0
  631. package/dist/extensions/services/domainSwitchHandoff.cjs +2 -0
  632. package/dist/extensions/services/domainSwitchHandoff.cjs.map +1 -0
  633. package/dist/extensions/services/domainSwitchHandoff.mjs +2 -0
  634. package/dist/extensions/services/domainSwitchHandoff.mjs.map +1 -0
  635. package/dist/index.cjs +1 -1
  636. package/dist/index.d.cts +33 -29
  637. package/dist/index.d.mts +33 -29
  638. package/dist/index.mjs +1 -1
  639. package/dist/logSinkTelemetry.cjs +1 -2
  640. package/dist/logSinkTelemetry.d.cts +2 -51
  641. package/dist/logSinkTelemetry.d.mts +2 -51
  642. package/dist/logSinkTelemetry.mjs +1 -2
  643. package/dist/pi-cache-optimizer-D9beVnnH.mjs +50 -0
  644. package/dist/pi-cache-optimizer-D9beVnnH.mjs.map +1 -0
  645. package/dist/schemas/domainVoiceTools.cjs +2 -0
  646. package/dist/schemas/domainVoiceTools.cjs.map +1 -0
  647. package/dist/schemas/domainVoiceTools.mjs +2 -0
  648. package/dist/schemas/domainVoiceTools.mjs.map +1 -0
  649. package/dist/schemas/majorModeVoiceTools.cjs +2 -0
  650. package/dist/schemas/majorModeVoiceTools.cjs.map +1 -0
  651. package/dist/schemas/majorModeVoiceTools.mjs +2 -0
  652. package/dist/schemas/majorModeVoiceTools.mjs.map +1 -0
  653. package/dist/services/compatibility/antigravity.cjs +1 -2
  654. package/dist/services/compatibility/antigravity.d.cts +2 -11
  655. package/dist/services/compatibility/antigravity.d.mts +2 -11
  656. package/dist/services/compatibility/antigravity.mjs +1 -2
  657. package/dist/services/compatibility/codex.cjs +1 -2
  658. package/dist/services/compatibility/codex.d.cts +2 -19
  659. package/dist/services/compatibility/codex.d.mts +2 -19
  660. package/dist/services/compatibility/codex.mjs +1 -2
  661. package/dist/services/compatibility/index.cjs +1 -2
  662. package/dist/services/compatibility/index.d.cts +6 -16
  663. package/dist/services/compatibility/index.d.mts +6 -16
  664. package/dist/services/compatibility/index.mjs +1 -2
  665. package/dist/services/compatibility/process.cjs +1 -2
  666. package/dist/services/compatibility/process.d.cts +2 -35
  667. package/dist/services/compatibility/process.d.mts +2 -35
  668. package/dist/services/compatibility/process.mjs +1 -2
  669. package/dist/services/compatibility/shared.cjs +1 -2
  670. package/dist/services/compatibility/shared.d.cts +2 -33
  671. package/dist/services/compatibility/shared.d.mts +2 -33
  672. package/dist/services/compatibility/shared.mjs +1 -2
  673. package/dist/services/compatibilityContext.cjs +1 -2
  674. package/dist/services/compatibilityContext.d.cts +2 -23
  675. package/dist/services/compatibilityContext.d.mts +2 -23
  676. package/dist/services/compatibilityContext.mjs +1 -2
  677. package/dist/services/composer.cjs +1 -2
  678. package/dist/services/composer.d.cts +4 -135
  679. package/dist/services/composer.d.mts +4 -135
  680. package/dist/services/composer.mjs +1 -2
  681. package/dist/services/config/index.cjs +1 -0
  682. package/dist/services/config/index.d.cts +7 -0
  683. package/dist/services/config/index.d.mts +7 -0
  684. package/dist/services/config/index.mjs +1 -0
  685. package/dist/services/config/projectTrust.cjs +2 -0
  686. package/dist/services/config/projectTrust.cjs.map +1 -0
  687. package/dist/services/config/projectTrust.d.cts +14 -0
  688. package/dist/services/config/projectTrust.d.cts.map +1 -0
  689. package/dist/services/config/projectTrust.d.mts +14 -0
  690. package/dist/services/config/projectTrust.d.mts.map +1 -0
  691. package/dist/services/config/projectTrust.mjs +2 -0
  692. package/dist/services/config/projectTrust.mjs.map +1 -0
  693. package/dist/services/extensionAssembler.cjs +1 -1
  694. package/dist/services/extensionAssembler.cjs.map +1 -1
  695. package/dist/services/extensionAssembler.d.cts +13 -6
  696. package/dist/services/extensionAssembler.d.cts.map +1 -1
  697. package/dist/services/extensionAssembler.d.mts +13 -6
  698. package/dist/services/extensionAssembler.d.mts.map +1 -1
  699. package/dist/services/extensionAssembler.mjs +1 -1
  700. package/dist/services/extensionAssembler.mjs.map +1 -1
  701. package/dist/services/harnessContext.cjs +1 -2
  702. package/dist/services/harnessContext.d.cts +2 -61
  703. package/dist/services/harnessContext.d.mts +2 -61
  704. package/dist/services/harnessContext.mjs +1 -2
  705. package/dist/services/index.cjs +1 -1
  706. package/dist/services/index.d.cts +18 -14
  707. package/dist/services/index.d.mts +18 -14
  708. package/dist/services/index.mjs +1 -1
  709. package/dist/services/matrixSwitcher.cjs +1 -2
  710. package/dist/services/matrixSwitcher.d.cts +2 -46
  711. package/dist/services/matrixSwitcher.d.mts +2 -46
  712. package/dist/services/matrixSwitcher.mjs +1 -2
  713. package/dist/services/mcpFilter.cjs +1 -3
  714. package/dist/services/mcpFilter.d.cts +2 -40
  715. package/dist/services/mcpFilter.d.mts +2 -40
  716. package/dist/services/mcpFilter.mjs +1 -3
  717. package/dist/services/modeCatalog.cjs +2 -0
  718. package/dist/services/modeCatalog.cjs.map +1 -0
  719. package/dist/services/modeCatalog.d.cts +18 -0
  720. package/dist/services/modeCatalog.d.cts.map +1 -0
  721. package/dist/services/modeCatalog.d.mts +18 -0
  722. package/dist/services/modeCatalog.d.mts.map +1 -0
  723. package/dist/services/modeCatalog.mjs +2 -0
  724. package/dist/services/modeCatalog.mjs.map +1 -0
  725. package/dist/services/piSettings.cjs +1 -2
  726. package/dist/services/piSettings.d.cts +2 -24
  727. package/dist/services/piSettings.d.mts +2 -24
  728. package/dist/services/piSettings.mjs +1 -2
  729. package/dist/services/resourceCollector.cjs +1 -3
  730. package/dist/services/resourceCollector.d.cts +2 -23
  731. package/dist/services/resourceCollector.d.mts +2 -23
  732. package/dist/services/resourceCollector.mjs +1 -3
  733. package/dist/services/skillCatalog.cjs +1 -2
  734. package/dist/services/skillCatalog.d.cts +2 -56
  735. package/dist/services/skillCatalog.d.mts +2 -56
  736. package/dist/services/skillCatalog.mjs +1 -2
  737. package/dist/services/skillSources.cjs +1 -2
  738. package/dist/services/skillSources.d.cts +2 -24
  739. package/dist/services/skillSources.d.mts +2 -24
  740. package/dist/services/skillSources.mjs +1 -2
  741. package/dist/services/syncState.cjs +1 -2
  742. package/dist/services/syncState.d.cts +3 -133
  743. package/dist/services/syncState.d.mts +3 -133
  744. package/dist/services/syncState.mjs +1 -2
  745. package/dist/services/tools/toolNames.cjs +2 -0
  746. package/dist/services/tools/toolNames.cjs.map +1 -0
  747. package/dist/services/tools/toolNames.d.cts +25 -0
  748. package/dist/services/tools/toolNames.d.cts.map +1 -0
  749. package/dist/services/tools/toolNames.d.mts +25 -0
  750. package/dist/services/tools/toolNames.d.mts.map +1 -0
  751. package/dist/services/tools/toolNames.mjs +2 -0
  752. package/dist/services/tools/toolNames.mjs.map +1 -0
  753. package/dist/{interfaces → types/interfaces}/compatibility.d.cts +1 -1
  754. package/dist/types/interfaces/compatibility.d.cts.map +1 -0
  755. package/dist/{interfaces → types/interfaces}/compatibility.d.mts +1 -1
  756. package/dist/types/interfaces/compatibility.d.mts.map +1 -0
  757. package/dist/{interfaces → types/interfaces}/harness.d.cts +6 -2
  758. package/dist/types/interfaces/harness.d.cts.map +1 -0
  759. package/dist/{interfaces → types/interfaces}/harness.d.mts +6 -2
  760. package/dist/types/interfaces/harness.d.mts.map +1 -0
  761. package/dist/utils/index.cjs +1 -1
  762. package/dist/utils/index.d.cts +5 -5
  763. package/dist/utils/index.d.mts +5 -5
  764. package/dist/utils/index.mjs +1 -1
  765. package/dist/utils/json.cjs +1 -2
  766. package/dist/utils/json.d.cts +2 -23
  767. package/dist/utils/json.d.mts +2 -23
  768. package/dist/utils/json.mjs +1 -2
  769. package/dist/utils/moduleResolution.cjs +1 -2
  770. package/dist/utils/moduleResolution.d.cts +2 -56
  771. package/dist/utils/moduleResolution.d.mts +2 -56
  772. package/dist/utils/moduleResolution.mjs +1 -2
  773. package/dist/utils/repository.cjs +1 -2
  774. package/dist/utils/repository.d.cts +2 -21
  775. package/dist/utils/repository.d.mts +2 -21
  776. package/dist/utils/repository.mjs +1 -2
  777. package/dist/utils/toolNames.cjs +1 -2
  778. package/dist/utils/toolNames.d.cts +2 -25
  779. package/dist/utils/toolNames.d.mts +2 -25
  780. package/dist/utils/toolNames.mjs +1 -2
  781. package/package.json +59 -37
  782. package/dist/cli/cliApp.cjs.map +0 -1
  783. package/dist/cli/cliApp.d.cts.map +0 -1
  784. package/dist/cli/cliApp.d.mts.map +0 -1
  785. package/dist/cli/cliApp.mjs.map +0 -1
  786. package/dist/cli/compatibilityOptions.cjs.map +0 -1
  787. package/dist/cli/compatibilityOptions.d.cts.map +0 -1
  788. package/dist/cli/compatibilityOptions.d.mts.map +0 -1
  789. package/dist/cli/compatibilityOptions.mjs.map +0 -1
  790. package/dist/cli/help.d.cts.map +0 -1
  791. package/dist/cli/help.d.mts.map +0 -1
  792. package/dist/cli/matrixOptions.cjs.map +0 -1
  793. package/dist/cli/matrixOptions.d.cts.map +0 -1
  794. package/dist/cli/matrixOptions.d.mts.map +0 -1
  795. package/dist/cli/matrixOptions.mjs.map +0 -1
  796. package/dist/cli/options.cjs.map +0 -1
  797. package/dist/cli/options.d.cts.map +0 -1
  798. package/dist/cli/options.d.mts.map +0 -1
  799. package/dist/cli/options.mjs.map +0 -1
  800. package/dist/commands/buildCommand.d.cts +0 -23
  801. package/dist/commands/buildCommand.d.cts.map +0 -1
  802. package/dist/commands/buildCommand.d.mts +0 -23
  803. package/dist/commands/buildCommand.d.mts.map +0 -1
  804. package/dist/config/harnessState.cjs.map +0 -1
  805. package/dist/config/harnessState.d.cts.map +0 -1
  806. package/dist/config/harnessState.d.mts.map +0 -1
  807. package/dist/config/harnessState.mjs.map +0 -1
  808. package/dist/config/projectTrust.cjs.map +0 -1
  809. package/dist/config/projectTrust.d.cts.map +0 -1
  810. package/dist/config/projectTrust.d.mts.map +0 -1
  811. package/dist/config/projectTrust.mjs.map +0 -1
  812. package/dist/entries/addDirCompatibility.cjs +0 -2
  813. package/dist/entries/addDirCompatibility.cjs.map +0 -1
  814. package/dist/entries/addDirCompatibility.d.cts +0 -13
  815. package/dist/entries/addDirCompatibility.d.cts.map +0 -1
  816. package/dist/entries/addDirCompatibility.d.mts +0 -14
  817. package/dist/entries/addDirCompatibility.d.mts.map +0 -1
  818. package/dist/entries/addDirCompatibility.mjs +0 -2
  819. package/dist/entries/addDirCompatibility.mjs.map +0 -1
  820. package/dist/entries/autoStop.cjs.map +0 -1
  821. package/dist/entries/autoStop.d.cts.map +0 -1
  822. package/dist/entries/autoStop.d.mts.map +0 -1
  823. package/dist/entries/autoStop.mjs.map +0 -1
  824. package/dist/entries/components/matrixPicker.cjs.map +0 -1
  825. package/dist/entries/components/matrixPicker.d.cts.map +0 -1
  826. package/dist/entries/components/matrixPicker.d.mts.map +0 -1
  827. package/dist/entries/components/matrixPicker.mjs.map +0 -1
  828. package/dist/entries/components/skillsOverlay.cjs.map +0 -1
  829. package/dist/entries/components/skillsOverlay.d.cts.map +0 -1
  830. package/dist/entries/components/skillsOverlay.d.mts.map +0 -1
  831. package/dist/entries/components/skillsOverlay.mjs.map +0 -1
  832. package/dist/entries/domains.cjs.map +0 -1
  833. package/dist/entries/domains.d.cts.map +0 -1
  834. package/dist/entries/domains.d.mts.map +0 -1
  835. package/dist/entries/domains.mjs.map +0 -1
  836. package/dist/entries/doom.cjs.map +0 -1
  837. package/dist/entries/doom.d.cts.map +0 -1
  838. package/dist/entries/doom.d.mts.map +0 -1
  839. package/dist/entries/doom.mjs.map +0 -1
  840. package/dist/entries/effort.cjs.map +0 -1
  841. package/dist/entries/effort.d.cts.map +0 -1
  842. package/dist/entries/effort.d.mts.map +0 -1
  843. package/dist/entries/effort.mjs.map +0 -1
  844. package/dist/entries/majorMode.cjs.map +0 -1
  845. package/dist/entries/majorMode.d.cts.map +0 -1
  846. package/dist/entries/majorMode.d.mts.map +0 -1
  847. package/dist/entries/majorMode.mjs.map +0 -1
  848. package/dist/entries/notifications.cjs.map +0 -1
  849. package/dist/entries/notifications.d.cts.map +0 -1
  850. package/dist/entries/notifications.d.mts.map +0 -1
  851. package/dist/entries/notifications.mjs.map +0 -1
  852. package/dist/entries/ollamaProvider.cjs.map +0 -1
  853. package/dist/entries/ollamaProvider.d.cts.map +0 -1
  854. package/dist/entries/ollamaProvider.d.mts.map +0 -1
  855. package/dist/entries/ollamaProvider.mjs.map +0 -1
  856. package/dist/entries/persona.cjs.map +0 -1
  857. package/dist/entries/persona.d.cts.map +0 -1
  858. package/dist/entries/persona.d.mts.map +0 -1
  859. package/dist/entries/persona.mjs.map +0 -1
  860. package/dist/entries/profile.cjs.map +0 -1
  861. package/dist/entries/profile.d.cts.map +0 -1
  862. package/dist/entries/profile.d.mts.map +0 -1
  863. package/dist/entries/profile.mjs.map +0 -1
  864. package/dist/entries/repositoryHooks.cjs.map +0 -1
  865. package/dist/entries/repositoryHooks.d.cts.map +0 -1
  866. package/dist/entries/repositoryHooks.d.mts.map +0 -1
  867. package/dist/entries/repositoryHooks.mjs.map +0 -1
  868. package/dist/entries/skills.cjs.map +0 -1
  869. package/dist/entries/skills.d.cts.map +0 -1
  870. package/dist/entries/skills.d.mts.map +0 -1
  871. package/dist/entries/skills.mjs.map +0 -1
  872. package/dist/entries/styleSystem.d.cts.map +0 -1
  873. package/dist/entries/styleSystem.d.mts.map +0 -1
  874. package/dist/entries/styleSystem.mjs.map +0 -1
  875. package/dist/interfaces/compatibility.d.cts.map +0 -1
  876. package/dist/interfaces/compatibility.d.mts.map +0 -1
  877. package/dist/interfaces/harness.d.cts.map +0 -1
  878. package/dist/interfaces/harness.d.mts.map +0 -1
  879. package/dist/logSinkTelemetry.cjs.map +0 -1
  880. package/dist/logSinkTelemetry.d.cts.map +0 -1
  881. package/dist/logSinkTelemetry.d.mts.map +0 -1
  882. package/dist/logSinkTelemetry.mjs.map +0 -1
  883. 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 +0 -2
  884. 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 +0 -1
  885. 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 +0 -2
  886. 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 +0 -1
  887. package/dist/services/compatibility/index.cjs.map +0 -1
  888. package/dist/services/compatibility/index.mjs.map +0 -1
  889. package/dist/services/compatibilityContext.cjs.map +0 -1
  890. package/dist/services/compatibilityContext.mjs.map +0 -1
  891. package/dist/services/composer.cjs.map +0 -1
  892. package/dist/services/composer.d.cts.map +0 -1
  893. package/dist/services/composer.d.mts.map +0 -1
  894. package/dist/services/composer.mjs.map +0 -1
  895. package/dist/services/extensionCompiler.cjs +0 -3
  896. package/dist/services/extensionCompiler.cjs.map +0 -1
  897. package/dist/services/extensionCompiler.mjs +0 -3
  898. package/dist/services/extensionCompiler.mjs.map +0 -1
  899. package/dist/services/harnessContext.cjs.map +0 -1
  900. package/dist/services/harnessContext.mjs.map +0 -1
  901. package/dist/services/matrixSwitcher.cjs.map +0 -1
  902. package/dist/services/matrixSwitcher.mjs.map +0 -1
  903. package/dist/services/mcpFilter.cjs.map +0 -1
  904. package/dist/services/mcpFilter.d.cts.map +0 -1
  905. package/dist/services/mcpFilter.d.mts.map +0 -1
  906. package/dist/services/mcpFilter.mjs.map +0 -1
  907. package/dist/services/piSettings.cjs.map +0 -1
  908. package/dist/services/piSettings.d.cts.map +0 -1
  909. package/dist/services/piSettings.d.mts.map +0 -1
  910. package/dist/services/piSettings.mjs.map +0 -1
  911. package/dist/services/resourceCollector.cjs.map +0 -1
  912. package/dist/services/resourceCollector.d.cts.map +0 -1
  913. package/dist/services/resourceCollector.d.mts.map +0 -1
  914. package/dist/services/resourceCollector.mjs.map +0 -1
  915. package/dist/services/runtimeBundle.cjs +0 -2
  916. package/dist/services/runtimeBundle.cjs.map +0 -1
  917. package/dist/services/runtimeBundle.d.cts.map +0 -1
  918. package/dist/services/runtimeBundle.d.mts.map +0 -1
  919. package/dist/services/runtimeBundle.mjs +0 -2
  920. package/dist/services/runtimeBundle.mjs.map +0 -1
  921. package/dist/services/skillCatalog.cjs.map +0 -1
  922. package/dist/services/skillCatalog.d.cts.map +0 -1
  923. package/dist/services/skillCatalog.d.mts.map +0 -1
  924. package/dist/services/skillCatalog.mjs.map +0 -1
  925. package/dist/services/syncState.cjs.map +0 -1
  926. package/dist/services/syncState.d.cts.map +0 -1
  927. package/dist/services/syncState.d.mts.map +0 -1
  928. package/dist/services/syncState.mjs.map +0 -1
  929. package/dist/utils/json.cjs.map +0 -1
  930. package/dist/utils/json.d.cts.map +0 -1
  931. package/dist/utils/json.d.mts.map +0 -1
  932. package/dist/utils/json.mjs.map +0 -1
  933. package/dist/utils/moduleResolution.cjs.map +0 -1
  934. package/dist/utils/moduleResolution.d.cts.map +0 -1
  935. package/dist/utils/moduleResolution.d.mts.map +0 -1
  936. package/dist/utils/moduleResolution.mjs.map +0 -1
  937. package/dist/utils/repository.cjs.map +0 -1
  938. package/dist/utils/repository.d.cts.map +0 -1
  939. package/dist/utils/repository.d.mts.map +0 -1
  940. package/dist/utils/repository.mjs.map +0 -1
  941. package/dist/utils/toolNames.cjs.map +0 -1
  942. package/dist/utils/toolNames.d.cts.map +0 -1
  943. package/dist/utils/toolNames.d.mts.map +0 -1
  944. package/dist/utils/toolNames.mjs.map +0 -1
@@ -0,0 +1,153 @@
1
+ import { ExtensionLayerResolvers } from "../services/extensionAssembler.cjs";
2
+ import { SyncIdentity, SyncLocation } from "./syncLocation.cjs";
3
+ import { SYNC_STATE_VERSION } from "./syncStateContract.cjs";
4
+ import { LayerResolvers, MajorModesConfig } from "@agimon-ai/doompi-config/majorModes";
5
+ import { HarnessState } from "@agimon-ai/doompi-config/types";
6
+
7
+ //#region src/adapters/syncState.d.ts
8
+ interface SyncSelection {
9
+ majorMode: string;
10
+ domains: string[];
11
+ profile?: string;
12
+ preset: string;
13
+ }
14
+ /** Paths to the resources sync staged, before any live switch replaces them. */
15
+ interface SyncBaseline {
16
+ mcpConfigPath?: string;
17
+ personaFile?: string;
18
+ themePath: string;
19
+ themeName: string;
20
+ }
21
+ interface SyncPrecompileState {
22
+ /** Version of the lightweight freshness contract used by package startup. */
23
+ version: number;
24
+ strategy: 'native' | 'bundle';
25
+ /** Package entry the generated bootstrap delegates to or bundles. */
26
+ bootstrapEntry: string;
27
+ /** Compiler manifest whose output is a graph-bundled package bootstrap. */
28
+ bootstrapManifest?: string;
29
+ /** Compiler manifests covering optional graph-bundled output. */
30
+ manifests: string[];
31
+ }
32
+ interface SyncState {
33
+ version: number;
34
+ root: string;
35
+ /** Canonical repository and worktree namespace that owns this state. */
36
+ identity: SyncIdentity;
37
+ /** Hash of the config that produced this state, for the staleness warning. */
38
+ inputsHash: string;
39
+ selection: SyncSelection;
40
+ /** Harness environment the extension applies when the values are unset. */
41
+ env: Record<string, string>;
42
+ /**
43
+ * State the environment does not carry, so it has to be recorded on its own.
44
+ *
45
+ * Plugin hooks and the profile's environment defaults live in the session
46
+ * state file rather than in variables. Without them here a synced session
47
+ * would start with no plugin hooks at all, which fails silently.
48
+ */
49
+ fileState: Pick<HarnessState, 'profileEnvironment' | 'pluginHooks'>;
50
+ /** Entry name to absolute path, covering every layer, not just the selected mode's. */
51
+ resolved: Record<string, string>;
52
+ /**
53
+ * The same entries after TypeScript ones were bundled to plain ESM.
54
+ *
55
+ * Kept apart from `resolved` so the staleness check still compares resolution
56
+ * against resolution; a state written before this existed simply has none and
57
+ * falls back to loading the source.
58
+ */
59
+ compiled?: Record<string, string>;
60
+ /** Aggregate entry by ordered extension-set key. */
61
+ bundles?: Record<string, string>;
62
+ /** Graph-compiled synced bootstrap dynamically loaded by the package entry. */
63
+ bootstrap?: string;
64
+ /** Inputs used to validate generated artifacts without loading the compiler. */
65
+ precompile?: SyncPrecompileState;
66
+ baseline: SyncBaseline;
67
+ }
68
+ declare function syncDirectory(repoRoot: string, homeDirectory?: string): string;
69
+ declare function syncStatePath(repoRoot: string, homeDirectory?: string): string;
70
+ declare function legacySyncDirectory(repoRoot: string): string;
71
+ declare function legacySyncStatePath(repoRoot: string): string;
72
+ /** Whether generated state belongs to the repository that is reading it. */
73
+ declare function syncStateRootMatches(repoRoot: string, stateRoot: string): boolean;
74
+ /**
75
+ * Per-process scratch directory for live `/domains` and `/profile` switches.
76
+ *
77
+ * Switching rewrites the MCP config and the persona prompt. Writing those back
78
+ * into the synced directory would both mutate the pinned baseline and let two
79
+ * Pi sessions in one repository overwrite each other, which the launcher avoids
80
+ * by giving every run its own temporary directory.
81
+ */
82
+ declare function runDirectory(repoRoot: string, processId?: number, homeDirectory?: string): string;
83
+ /**
84
+ * How a Pi project settings file should refer to a generated path.
85
+ *
86
+ * Relative to `.pi` when the target lives in the repository, which keeps the
87
+ * committed settings file identical on every machine. A doom-pi installed
88
+ * outside the repository stays absolute: Pi accepts both, and a relative path
89
+ * climbing out of the project would be neither portable nor readable.
90
+ */
91
+ declare function settingsRelativePath(repoRoot: string, target: string): string;
92
+ /**
93
+ * Hashes the configuration a sync consumed.
94
+ *
95
+ * Deliberately cheap: the extension recomputes this on every session start, so
96
+ * it reads config, marketplace, local plugin manifests, and profile persona text
97
+ * without downloading plugins or re-resolving packages. A dependency upgrade that
98
+ * moves a package path therefore does not show up here; `doom-pi sync --check`
99
+ * re-resolves and is the check that catches that.
100
+ */
101
+ declare function computeInputsHash(repoRoot: string, selection: SyncSelection, homeDirectory?: string): string;
102
+ interface LocatedSyncState {
103
+ state: SyncState;
104
+ location: SyncLocation;
105
+ layout: 'global' | 'legacy';
106
+ }
107
+ /** Reads global state first, with a read-only fallback to validated legacy state. */
108
+ declare function readLocatedSyncState(repoRoot: string, homeDirectory?: string): LocatedSyncState | undefined;
109
+ /** Reads the synced state, or undefined when the repository was never synced. */
110
+ declare function readSyncState(repoRoot: string, homeDirectory?: string): SyncState | undefined;
111
+ declare function serializeSyncState(state: SyncState): string;
112
+ declare function writeSyncState(repoRoot: string, state: SyncState, homeDirectory?: string): Promise<string>;
113
+ declare function ownKey(name: string): string;
114
+ declare function packageKey(specifier: string): string;
115
+ declare function packageEntryKey(specifier: string, index: number): string;
116
+ /**
117
+ * Keyed by the absolute target, because the same relative specifier means
118
+ * different files under the repository and the global config directory.
119
+ */
120
+ declare function localKey(specifier: string, baseDirectory: string): string;
121
+ declare function localEntryKey(specifier: string, baseDirectory: string, index: number): string;
122
+ declare function localPackageNameKey(specifier: string, baseDirectory: string): string;
123
+ interface RecordingResolvers extends ExtensionLayerResolvers {
124
+ /** Every name this resolver was asked for, keyed for the state file. */
125
+ readonly resolved: Record<string, string>;
126
+ packageEntries(name: string): string[];
127
+ optionalPackageEntries(name: string): string[] | undefined;
128
+ localEntries(specifier: string, baseDirectory: string): string[] | undefined;
129
+ }
130
+ /**
131
+ * Resolvers that record what they resolve.
132
+ *
133
+ * Sync composes once with every layer selected and hands the recording to the
134
+ * state file, so the extension never has to resolve a specifier itself.
135
+ */
136
+ declare function createRecordingResolvers(base?: LayerResolvers): RecordingResolvers;
137
+ /**
138
+ * Resolves every entry any layer could contribute, in one pass.
139
+ *
140
+ * Composing with every layer selected and the widest options is what makes the
141
+ * map complete: a later `/mode` switch inside a Pi session can then pick a
142
+ * different set without resolving anything itself. The context packages and the
143
+ * persona entry are asked for separately because they reach `assembleExtensions`
144
+ * as already-resolved paths rather than through the resolvers.
145
+ */
146
+ declare function recordResolvedEntries(majorModesConfig: MajorModesConfig, base?: LayerResolvers): Record<string, string>;
147
+ /** Resolvers backed by a synced map, for composing inside a Pi session. */
148
+ declare function createMapResolvers(resolved: Record<string, string>, compiled?: Record<string, string>): ExtensionLayerResolvers;
149
+ /** Reads the resolved MCP servers back out of a generated config. */
150
+ declare function readMcpServerNames(configPath: string): string[];
151
+ //#endregion
152
+ export { LocatedSyncState, RecordingResolvers, SyncBaseline, SyncPrecompileState, SyncSelection, SyncState, computeInputsHash, createMapResolvers, createRecordingResolvers, legacySyncDirectory, legacySyncStatePath, localEntryKey, localKey, localPackageNameKey, ownKey, packageEntryKey, packageKey, readLocatedSyncState, readMcpServerNames, readSyncState, recordResolvedEntries, runDirectory, serializeSyncState, settingsRelativePath, syncDirectory, syncStatePath, syncStateRootMatches, writeSyncState };
153
+ //# sourceMappingURL=syncState.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"syncState.d.cts","names":[],"sources":["../../src/adapters/syncState.ts"],"mappings":";;;;;;;UAkDiB,aAAA;EACf,SAAA;EACA,OAAA;EACA,OAAA;EACA,MAAA;AAAA;;UAIe,YAAA;EACf,aAAA;EACA,WAAA;EACA,SAAA;EACA,SAAA;AAAA;AAAA,UAGe,mBAAA;;EAEf,OAAA;EACA,QAAA;EARA;EAUA,cAAA;EARA;EAUA,iBAAA;EAVS;EAYT,SAAA;AAAA;AAAA,UAGe,SAAA;EACf,OAAA;EACA,IAAA;EAXA;EAaA,QAAA,EAAU,YAAA;EATV;EAWA,UAAA;EACA,SAAA,EAAW,aAAA;EAVF;EAYT,GAAA,EAAK,MAAA;EATmB;;;;;;;EAiBxB,SAAA,EAAW,IAAA,CAAK,YAAA;EAUL;EARX,QAAA,EAAU,MAAA;EAcG;;;;;;;EANb,QAAA,GAAW,MAAA;EArBX;EAuBA,OAAA,GAAU,MAAA;EAtBC;EAwBX,SAAA;EAtBK;EAwBL,UAAA,GAAa,mBAAA;EACb,QAAA,EAAU,YAAA;AAAA;AAAA,iBAGI,aAAA,CAAc,QAAA,UAAkB,aAAA;AAAA,iBAIhC,aAAA,CAAc,QAAA,UAAkB,aAAA;AAAA,iBAIhC,mBAAA,CAAoB,QAAA;AAAA,iBAIpB,mBAAA,CAAoB,QAAA;;iBAqBpB,oBAAA,CAAqB,QAAA,UAAkB,SAAA;;;;;;;;AAjCvD;iBA6CgB,YAAA,CACd,QAAA,UACA,SAAA,WACA,aAAA;;;;AA5CF;;;;;iBAyDgB,oBAAA,CAAqB,QAAA,UAAkB,MAAA;;;;;AAjDvD;;;;;iBAoEgB,iBAAA,CACd,QAAA,UACA,SAAA,EAAW,aAAA,EACX,aAAA;AAAA,UAmKe,gBAAA;EACf,KAAA,EAAO,SAAA;EACP,QAAA,EAAU,YAAA;EACV,MAAA;AAAA;;iBAIc,oBAAA,CACd,QAAA,UACA,aAAA,YACC,gBAAA;;iBA0Ba,aAAA,CAAc,QAAA,UAAkB,aAAA,YAAuC,SAAA;AAAA,iBAIvE,kBAAA,CAAmB,KAAA,EAAO,SAAA;AAAA,iBAIpB,cAAA,CACpB,QAAA,UACA,KAAA,EAAO,SAAA,EACP,aAAA,YACC,OAAA;AAAA,iBAqBa,MAAA,CAAO,IAAA;AAAA,iBAIP,UAAA,CAAW,SAAA;AAAA,iBAIX,eAAA,CAAgB,SAAA,UAAmB,KAAA;;;;;iBAQnC,QAAA,CAAS,SAAA,UAAmB,aAAA;AAAA,iBAI5B,aAAA,CAAc,SAAA,UAAmB,aAAA,UAAuB,KAAA;AAAA,iBAMxD,mBAAA,CAAoB,SAAA,UAAmB,aAAA;AAAA,UAItC,kBAAA,SAA2B,uBAAA;EAxQ1C;EAAA,SA0QS,QAAA,EAAU,MAAA;EACnB,cAAA,CAAe,IAAA;EACf,sBAAA,CAAuB,IAAA;EACvB,YAAA,CAAa,SAAA,UAAmB,aAAA;AAAA;AAxGlC;;;;;;AAAA,iBAiHgB,wBAAA,CAAyB,IAAA,GAAM,cAAA,GAAmC,kBAAA;;;;;AA1GlF;;;;;iBAgLgB,qBAAA,CACd,gBAAA,EAAkB,gBAAA,EAClB,IAAA,GAAM,cAAA,GACL,MAAA;;iBA2Ba,kBAAA,CACd,QAAA,EAAU,MAAA,kBACV,QAAA,GAAU,MAAA,mBACT,uBAAA;;iBAqCa,kBAAA,CAAmB,UAAA"}
@@ -0,0 +1,153 @@
1
+ import { ExtensionLayerResolvers } from "../services/extensionAssembler.mjs";
2
+ import { SyncIdentity, SyncLocation } from "./syncLocation.mjs";
3
+ import { SYNC_STATE_VERSION } from "./syncStateContract.mjs";
4
+ import { LayerResolvers, MajorModesConfig } from "@agimon-ai/doompi-config/majorModes";
5
+ import { HarnessState } from "@agimon-ai/doompi-config/types";
6
+
7
+ //#region src/adapters/syncState.d.ts
8
+ interface SyncSelection {
9
+ majorMode: string;
10
+ domains: string[];
11
+ profile?: string;
12
+ preset: string;
13
+ }
14
+ /** Paths to the resources sync staged, before any live switch replaces them. */
15
+ interface SyncBaseline {
16
+ mcpConfigPath?: string;
17
+ personaFile?: string;
18
+ themePath: string;
19
+ themeName: string;
20
+ }
21
+ interface SyncPrecompileState {
22
+ /** Version of the lightweight freshness contract used by package startup. */
23
+ version: number;
24
+ strategy: 'native' | 'bundle';
25
+ /** Package entry the generated bootstrap delegates to or bundles. */
26
+ bootstrapEntry: string;
27
+ /** Compiler manifest whose output is a graph-bundled package bootstrap. */
28
+ bootstrapManifest?: string;
29
+ /** Compiler manifests covering optional graph-bundled output. */
30
+ manifests: string[];
31
+ }
32
+ interface SyncState {
33
+ version: number;
34
+ root: string;
35
+ /** Canonical repository and worktree namespace that owns this state. */
36
+ identity: SyncIdentity;
37
+ /** Hash of the config that produced this state, for the staleness warning. */
38
+ inputsHash: string;
39
+ selection: SyncSelection;
40
+ /** Harness environment the extension applies when the values are unset. */
41
+ env: Record<string, string>;
42
+ /**
43
+ * State the environment does not carry, so it has to be recorded on its own.
44
+ *
45
+ * Plugin hooks and the profile's environment defaults live in the session
46
+ * state file rather than in variables. Without them here a synced session
47
+ * would start with no plugin hooks at all, which fails silently.
48
+ */
49
+ fileState: Pick<HarnessState, 'profileEnvironment' | 'pluginHooks'>;
50
+ /** Entry name to absolute path, covering every layer, not just the selected mode's. */
51
+ resolved: Record<string, string>;
52
+ /**
53
+ * The same entries after TypeScript ones were bundled to plain ESM.
54
+ *
55
+ * Kept apart from `resolved` so the staleness check still compares resolution
56
+ * against resolution; a state written before this existed simply has none and
57
+ * falls back to loading the source.
58
+ */
59
+ compiled?: Record<string, string>;
60
+ /** Aggregate entry by ordered extension-set key. */
61
+ bundles?: Record<string, string>;
62
+ /** Graph-compiled synced bootstrap dynamically loaded by the package entry. */
63
+ bootstrap?: string;
64
+ /** Inputs used to validate generated artifacts without loading the compiler. */
65
+ precompile?: SyncPrecompileState;
66
+ baseline: SyncBaseline;
67
+ }
68
+ declare function syncDirectory(repoRoot: string, homeDirectory?: string): string;
69
+ declare function syncStatePath(repoRoot: string, homeDirectory?: string): string;
70
+ declare function legacySyncDirectory(repoRoot: string): string;
71
+ declare function legacySyncStatePath(repoRoot: string): string;
72
+ /** Whether generated state belongs to the repository that is reading it. */
73
+ declare function syncStateRootMatches(repoRoot: string, stateRoot: string): boolean;
74
+ /**
75
+ * Per-process scratch directory for live `/domains` and `/profile` switches.
76
+ *
77
+ * Switching rewrites the MCP config and the persona prompt. Writing those back
78
+ * into the synced directory would both mutate the pinned baseline and let two
79
+ * Pi sessions in one repository overwrite each other, which the launcher avoids
80
+ * by giving every run its own temporary directory.
81
+ */
82
+ declare function runDirectory(repoRoot: string, processId?: number, homeDirectory?: string): string;
83
+ /**
84
+ * How a Pi project settings file should refer to a generated path.
85
+ *
86
+ * Relative to `.pi` when the target lives in the repository, which keeps the
87
+ * committed settings file identical on every machine. A doom-pi installed
88
+ * outside the repository stays absolute: Pi accepts both, and a relative path
89
+ * climbing out of the project would be neither portable nor readable.
90
+ */
91
+ declare function settingsRelativePath(repoRoot: string, target: string): string;
92
+ /**
93
+ * Hashes the configuration a sync consumed.
94
+ *
95
+ * Deliberately cheap: the extension recomputes this on every session start, so
96
+ * it reads config, marketplace, local plugin manifests, and profile persona text
97
+ * without downloading plugins or re-resolving packages. A dependency upgrade that
98
+ * moves a package path therefore does not show up here; `doom-pi sync --check`
99
+ * re-resolves and is the check that catches that.
100
+ */
101
+ declare function computeInputsHash(repoRoot: string, selection: SyncSelection, homeDirectory?: string): string;
102
+ interface LocatedSyncState {
103
+ state: SyncState;
104
+ location: SyncLocation;
105
+ layout: 'global' | 'legacy';
106
+ }
107
+ /** Reads global state first, with a read-only fallback to validated legacy state. */
108
+ declare function readLocatedSyncState(repoRoot: string, homeDirectory?: string): LocatedSyncState | undefined;
109
+ /** Reads the synced state, or undefined when the repository was never synced. */
110
+ declare function readSyncState(repoRoot: string, homeDirectory?: string): SyncState | undefined;
111
+ declare function serializeSyncState(state: SyncState): string;
112
+ declare function writeSyncState(repoRoot: string, state: SyncState, homeDirectory?: string): Promise<string>;
113
+ declare function ownKey(name: string): string;
114
+ declare function packageKey(specifier: string): string;
115
+ declare function packageEntryKey(specifier: string, index: number): string;
116
+ /**
117
+ * Keyed by the absolute target, because the same relative specifier means
118
+ * different files under the repository and the global config directory.
119
+ */
120
+ declare function localKey(specifier: string, baseDirectory: string): string;
121
+ declare function localEntryKey(specifier: string, baseDirectory: string, index: number): string;
122
+ declare function localPackageNameKey(specifier: string, baseDirectory: string): string;
123
+ interface RecordingResolvers extends ExtensionLayerResolvers {
124
+ /** Every name this resolver was asked for, keyed for the state file. */
125
+ readonly resolved: Record<string, string>;
126
+ packageEntries(name: string): string[];
127
+ optionalPackageEntries(name: string): string[] | undefined;
128
+ localEntries(specifier: string, baseDirectory: string): string[] | undefined;
129
+ }
130
+ /**
131
+ * Resolvers that record what they resolve.
132
+ *
133
+ * Sync composes once with every layer selected and hands the recording to the
134
+ * state file, so the extension never has to resolve a specifier itself.
135
+ */
136
+ declare function createRecordingResolvers(base?: LayerResolvers): RecordingResolvers;
137
+ /**
138
+ * Resolves every entry any layer could contribute, in one pass.
139
+ *
140
+ * Composing with every layer selected and the widest options is what makes the
141
+ * map complete: a later `/mode` switch inside a Pi session can then pick a
142
+ * different set without resolving anything itself. The context packages and the
143
+ * persona entry are asked for separately because they reach `assembleExtensions`
144
+ * as already-resolved paths rather than through the resolvers.
145
+ */
146
+ declare function recordResolvedEntries(majorModesConfig: MajorModesConfig, base?: LayerResolvers): Record<string, string>;
147
+ /** Resolvers backed by a synced map, for composing inside a Pi session. */
148
+ declare function createMapResolvers(resolved: Record<string, string>, compiled?: Record<string, string>): ExtensionLayerResolvers;
149
+ /** Reads the resolved MCP servers back out of a generated config. */
150
+ declare function readMcpServerNames(configPath: string): string[];
151
+ //#endregion
152
+ export { LocatedSyncState, RecordingResolvers, SyncBaseline, SyncPrecompileState, SyncSelection, SyncState, computeInputsHash, createMapResolvers, createRecordingResolvers, legacySyncDirectory, legacySyncStatePath, localEntryKey, localKey, localPackageNameKey, ownKey, packageEntryKey, packageKey, readLocatedSyncState, readMcpServerNames, readSyncState, recordResolvedEntries, runDirectory, serializeSyncState, settingsRelativePath, syncDirectory, syncStatePath, syncStateRootMatches, writeSyncState };
153
+ //# sourceMappingURL=syncState.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"syncState.d.mts","names":[],"sources":["../../src/adapters/syncState.ts"],"mappings":";;;;;;;UAkDiB,aAAA;EACf,SAAA;EACA,OAAA;EACA,OAAA;EACA,MAAA;AAAA;;UAIe,YAAA;EACf,aAAA;EACA,WAAA;EACA,SAAA;EACA,SAAA;AAAA;AAAA,UAGe,mBAAA;;EAEf,OAAA;EACA,QAAA;EARA;EAUA,cAAA;EARA;EAUA,iBAAA;EAVS;EAYT,SAAA;AAAA;AAAA,UAGe,SAAA;EACf,OAAA;EACA,IAAA;EAXA;EAaA,QAAA,EAAU,YAAA;EATV;EAWA,UAAA;EACA,SAAA,EAAW,aAAA;EAVF;EAYT,GAAA,EAAK,MAAA;EATmB;;;;;;;EAiBxB,SAAA,EAAW,IAAA,CAAK,YAAA;EAUL;EARX,QAAA,EAAU,MAAA;EAcG;;;;;;;EANb,QAAA,GAAW,MAAA;EArBX;EAuBA,OAAA,GAAU,MAAA;EAtBC;EAwBX,SAAA;EAtBK;EAwBL,UAAA,GAAa,mBAAA;EACb,QAAA,EAAU,YAAA;AAAA;AAAA,iBAGI,aAAA,CAAc,QAAA,UAAkB,aAAA;AAAA,iBAIhC,aAAA,CAAc,QAAA,UAAkB,aAAA;AAAA,iBAIhC,mBAAA,CAAoB,QAAA;AAAA,iBAIpB,mBAAA,CAAoB,QAAA;;iBAqBpB,oBAAA,CAAqB,QAAA,UAAkB,SAAA;;;;;;;;AAjCvD;iBA6CgB,YAAA,CACd,QAAA,UACA,SAAA,WACA,aAAA;;;;AA5CF;;;;;iBAyDgB,oBAAA,CAAqB,QAAA,UAAkB,MAAA;;;;;AAjDvD;;;;;iBAoEgB,iBAAA,CACd,QAAA,UACA,SAAA,EAAW,aAAA,EACX,aAAA;AAAA,UAmKe,gBAAA;EACf,KAAA,EAAO,SAAA;EACP,QAAA,EAAU,YAAA;EACV,MAAA;AAAA;;iBAIc,oBAAA,CACd,QAAA,UACA,aAAA,YACC,gBAAA;;iBA0Ba,aAAA,CAAc,QAAA,UAAkB,aAAA,YAAuC,SAAA;AAAA,iBAIvE,kBAAA,CAAmB,KAAA,EAAO,SAAA;AAAA,iBAIpB,cAAA,CACpB,QAAA,UACA,KAAA,EAAO,SAAA,EACP,aAAA,YACC,OAAA;AAAA,iBAqBa,MAAA,CAAO,IAAA;AAAA,iBAIP,UAAA,CAAW,SAAA;AAAA,iBAIX,eAAA,CAAgB,SAAA,UAAmB,KAAA;;;;;iBAQnC,QAAA,CAAS,SAAA,UAAmB,aAAA;AAAA,iBAI5B,aAAA,CAAc,SAAA,UAAmB,aAAA,UAAuB,KAAA;AAAA,iBAMxD,mBAAA,CAAoB,SAAA,UAAmB,aAAA;AAAA,UAItC,kBAAA,SAA2B,uBAAA;EAxQ1C;EAAA,SA0QS,QAAA,EAAU,MAAA;EACnB,cAAA,CAAe,IAAA;EACf,sBAAA,CAAuB,IAAA;EACvB,YAAA,CAAa,SAAA,UAAmB,aAAA;AAAA;AAxGlC;;;;;;AAAA,iBAiHgB,wBAAA,CAAyB,IAAA,GAAM,cAAA,GAAmC,kBAAA;;;;;AA1GlF;;;;;iBAgLgB,qBAAA,CACd,gBAAA,EAAkB,gBAAA,EAClB,IAAA,GAAM,cAAA,GACL,MAAA;;iBA2Ba,kBAAA,CACd,QAAA,EAAU,MAAA,kBACV,QAAA,GAAU,MAAA,mBACT,uBAAA;;iBAqCa,kBAAA,CAAmB,UAAA"}
@@ -0,0 +1,2 @@
1
+ import{assertSyncLocationSafe as e,resolveSyncLocation as t}from"./syncLocation.mjs";import{isRecord as n}from"./serialization/json.mjs";import"../utils/index.mjs";import{CONTEXT_PACKAGES as r,LAYER_RESOLVERS as i,OLLAMA_PRESET as a,PERSONA_ENTRY as o,assembleChildExtensions as s,assembleExtensions as c}from"../services/extensionAssembler.mjs";import"./syncStateContract.mjs";import l from"node:path";import u from"node:fs";import d from"node:os";import f from"node:crypto";import{loadDomains as p}from"@agimon-ai/doompi-config/domains";import{PERSONA_FILES as m,loadProfiles as h}from"@agimon-ai/doompi-config/profiles";const g=`.doom`,_=`:entry:`,v=[`config.yaml`,`modes.yaml`,`domains.yaml`,`profiles.yaml`,`hooks.yaml`];function y(e,n=d.homedir()){return t(e,n).directory}function b(e,n=d.homedir()){return t(e,n).statePath}function x(e){return t(e).legacyDirectory}function S(e){return t(e).legacyStatePath}function C(e){let t=l.resolve(e);try{return u.realpathSync(t)}catch{let e=l.dirname(t);return e===t?t:l.join(C(e),l.basename(t))}}function w(e,t){let n=l.relative(C(e),C(t));return n===``||!n.startsWith(`..`)&&!l.isAbsolute(n)}function T(e,t){return C(e)===C(t)}function E(e,t=process.pid,n=d.homedir()){return l.join(y(e,n),`run`,String(t))}function D(e,t){let n=l.relative(e,t);return n.startsWith(`..`)||l.isAbsolute(n)?t:l.relative(l.join(e,`.pi`),t).split(l.sep).join(`/`)}function O(e){return u.existsSync(e)?u.readFileSync(e,`utf8`):``}function k(e,t,n=d.homedir()){let r=f.createHash(`sha256`);r.update(JSON.stringify({...t,domains:[...t.domains].sort()}));for(let t of[l.join(n,`.pi`,g),l.join(e,g)])for(let e of v)r.update(O(l.join(t,e)));let i=p(e,n).plugins;for(let e of i.roots)r.update(e);for(let e of i.diagnostics)r.update(e);for(let e of i.marketplaces)r.update(e),r.update(O(e));for(let[e,t]of Object.entries(i.entries).sort(([e],[t])=>e.localeCompare(t)))r.update(e),r.update(JSON.stringify(t.source)),t.manifest&&(r.update(t.manifest.path),r.update(O(t.manifest.path)));for(let t of h(e,n)){r.update(t.name),r.update(t.personaRoot),r.update(t.persona),r.update(JSON.stringify(t.env));let e=l.resolve(t.personaRoot,t.persona);for(let t of m){let n=l.join(e,t);r.update(n),r.update(O(n))}}return r.digest(`hex`)}function A(e,t,r){if(!n(e))throw Error(`Doom sync state at ${r} requires ${t} to be an object`);return Object.fromEntries(Object.entries(e).filter(e=>typeof e[1]==`string`))}function j(e,t){if(!n(e)||typeof e.version!=`number`||e.strategy!==`native`&&e.strategy!==`bundle`||typeof e.bootstrapEntry!=`string`||e.bootstrapManifest!==void 0&&typeof e.bootstrapManifest!=`string`||!Array.isArray(e.manifests)||e.manifests.some(e=>typeof e!=`string`))throw Error(`Doom sync state at ${t} has an invalid precompile record`);return{version:e.version,strategy:e.strategy,bootstrapEntry:e.bootstrapEntry,bootstrapManifest:e.bootstrapManifest,manifests:e.manifests}}function M(e,t){return e.repositoryId===t.repositoryId&&e.worktreeId===t.worktreeId}function N(e,t){if(!n(e)||typeof e.repositoryId!=`string`||typeof e.worktreeId!=`string`)throw Error(`Doom sync state at ${t} requires repository and worktree identity`);return{repositoryId:e.repositoryId,worktreeId:e.worktreeId}}function P(e,t,r){let i;try{i=JSON.parse(e)}catch(e){throw Error(`Doom sync state at ${t} is not valid JSON`,{cause:e})}if(!n(i))throw Error(`Doom sync state at ${t} must be an object`);let a=r.legacy?new Set([8,9]):new Set([9]);if(typeof i.version!=`number`||!a.has(i.version))throw Error(`Doom sync state at ${t} has version ${String(i.version)}, expected 9. Run doompi sync.`);if(typeof i.root!=`string`||typeof i.inputsHash!=`string`)throw Error(`Doom sync state at ${t} requires string root and inputsHash`);if(!T(r.repoRoot,i.root))throw Error(`Doom sync state at ${t} belongs to a different repository: ${i.root}`);let o=i.identity===void 0&&r.legacy?r.location.identity:N(i.identity,t);if(!M(o,r.location.identity))throw Error(`Doom sync state at ${t} belongs to a different repository or worktree identity`);if(!n(i.selection)||typeof i.selection.majorMode!=`string`)throw Error(`Doom sync state at ${t} requires a selection with a majorMode`);if(!n(i.baseline)||typeof i.baseline.themePath!=`string`)throw Error(`Doom sync state at ${t} requires a baseline with a themePath`);let{majorMode:s,domains:c,profile:l,preset:u}=i.selection,d=n(i.fileState)?i.fileState:{},f=r.legacy?r.location.legacyDirectory:r.location.directory,p=i.compiled===void 0?void 0:A(i.compiled,`compiled`,t),m=i.bundles===void 0?void 0:A(i.bundles,`bundles`,t),h=typeof i.bootstrap==`string`?i.bootstrap:void 0;if([h,...Object.values(p??{}),...Object.values(m??{})].filter(e=>e!==void 0).some(e=>!w(f,e)))throw Error(`Doom sync state at ${t} references generated material outside ${f}`);return{version:i.version,root:i.root,identity:o,inputsHash:i.inputsHash,selection:{majorMode:s,domains:Array.isArray(c)?c.filter(e=>typeof e==`string`):[],profile:typeof l==`string`?l:void 0,preset:typeof u==`string`?u:`default`},env:A(i.env,`env`,t),fileState:{profileEnvironment:n(d.profileEnvironment)?d.profileEnvironment:{},pluginHooks:Array.isArray(d.pluginHooks)?d.pluginHooks:[]},resolved:A(i.resolved,`resolved`,t),compiled:p,bundles:m,bootstrap:h,precompile:i.precompile===void 0?void 0:j(i.precompile,t),baseline:i.baseline}}function F(e,n=d.homedir()){let r=t(e,n);if(u.existsSync(r.statePath))return{state:P(u.readFileSync(r.statePath,`utf8`),r.statePath,{repoRoot:e,location:r,legacy:!1}),location:r,layout:`global`};if(u.existsSync(r.legacyStatePath))return{state:P(u.readFileSync(r.legacyStatePath,`utf8`),r.legacyStatePath,{repoRoot:e,location:r,legacy:!0}),location:r,layout:`legacy`}}function I(e,t=d.homedir()){return F(e,t)?.state}function L(e){return`${JSON.stringify(e,null,2)}\n`}async function R(n,r,i=d.homedir()){let a=t(n,i);if(r.version!==9)throw Error(`Doom sync state writes require version 9`);if(!T(n,r.root)||!M(r.identity,a.identity))throw Error(`Refusing to write Doom sync state for a different repository or worktree`);e(a),await u.promises.mkdir(a.directory,{mode:448,recursive:!0});let o=`${a.statePath}.${process.pid}.${f.randomUUID()}.tmp`;try{await u.promises.writeFile(o,L(r),{mode:384}),await u.promises.rename(o,a.statePath)}catch(e){throw await u.promises.rm(o,{force:!0}),e}return a.statePath}function z(e){return`own:${e}`}function B(e){return`pkg:${e}`}function V(e,t){return t===0?B(e):`${B(e)}${_}${t}`}function H(e,t){return`local:${l.resolve(t,e)}`}function U(e,t,n){return n===0?H(e,t):`${H(e,t)}${_}${n}`}function W(e,t){return`local-package-name:${l.resolve(t,e)}`}function G(e=i){let t={},n=e,r=(e,n)=>(e.forEach((e,r)=>{t[n(r)]=e}),e);return{resolved:t,ownEntry(n){let r=e.ownEntry(n);return t[z(n)]=r,r},packageEntry(n){let r=e.packageEntry(n);return t[B(n)]=r,r},optionalPackageEntry(n){let r=e.optionalPackageEntry(n);return r&&(t[B(n)]=r),r},packageEntries(t){return r(n.packageEntries?.(t)??[e.packageEntry(t)],e=>V(t,e))},optionalPackageEntries(t){let i=n.optionalPackageEntries?.(t);if(i===void 0){let n=e.optionalPackageEntry(t);i=n?[n]:void 0}return i?r(i,e=>V(t,e)):void 0},localEntry(n,r){let i=e.localEntry(n,r);return i&&(t[H(n,r)]=i),i},localEntries(t,i){let a=n.localEntries?.(t,i);if(a===void 0){let n=e.localEntry(t,i);a=n?[n]:void 0}return a?r(a,e=>U(t,i,e)):void 0},localPackageName(e,r){let i=n.localPackageName?.(e,r);return i&&(t[W(e,r)]=i),i}}}function K(e,t=i){let n=G(t);for(let e of Object.values(r))n.optionalPackageEntry(e);return n.ownEntry(o),c({agents:!0,autoStop:!0,mute:!1,preset:a,layers:Object.keys(e.layers),majorModesConfig:e,resolvers:n}),s({agents:!1,autoStop:!1,mute:!0,preset:a,layers:Object.keys(e.layers),majorModesConfig:e,resolvers:n}),n.resolved}function q(e,t={}){let n=n=>t[n]??e[n],r=(e,t)=>{let r=n(e);if(!r)throw Error(`${t} is missing from the doompi sync state. Run doompi sync.`);return r},i=e=>{let t=n(e(0));if(!t)return;let r=[t];for(let t=1;;t+=1){let i=n(e(t));if(!i)break;r.push(i)}return r};return{ownEntry:e=>r(z(e),e),packageEntry:e=>r(B(e),e),optionalPackageEntry:e=>n(B(e)),packageEntries:e=>{let t=i(t=>V(e,t));if(!t)throw Error(`${e} is missing from the doompi sync state. Run doompi sync.`);return t},optionalPackageEntries:e=>i(t=>V(e,t)),localEntry:(e,t)=>n(H(e,t)),localEntries:(e,t)=>i(n=>U(e,t,n)),localPackageName:(t,n)=>e[W(t,n)]}}function J(e){if(!u.existsSync(e))return[];let t=JSON.parse(u.readFileSync(e,`utf8`));return n(t.mcpServers)?Object.keys(t.mcpServers):[]}export{k as computeInputsHash,q as createMapResolvers,G as createRecordingResolvers,x as legacySyncDirectory,S as legacySyncStatePath,U as localEntryKey,H as localKey,W as localPackageNameKey,z as ownKey,V as packageEntryKey,B as packageKey,F as readLocatedSyncState,J as readMcpServerNames,I as readSyncState,K as recordResolvedEntries,E as runDirectory,L as serializeSyncState,D as settingsRelativePath,y as syncDirectory,b as syncStatePath,T as syncStateRootMatches,R as writeSyncState};
2
+ //# sourceMappingURL=syncState.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"syncState.mjs","names":[],"sources":["../../src/adapters/syncState.ts"],"sourcesContent":["import crypto from 'node:crypto';\nimport fs from 'node:fs';\nimport os from 'node:os';\nimport path from 'node:path';\nimport { loadDomains } from '@agimon-ai/doompi-config/domains';\nimport type { LayerResolvers, MajorModesConfig } from '@agimon-ai/doompi-config/majorModes';\nimport { loadProfiles, PERSONA_FILES } from '@agimon-ai/doompi-config/profiles';\nimport type { HarnessState } from '@agimon-ai/doompi-config/types';\nimport {\n assembleChildExtensions,\n assembleExtensions,\n CONTEXT_PACKAGES,\n type ExtensionLayerResolvers,\n LAYER_RESOLVERS,\n OLLAMA_PRESET,\n PERSONA_ENTRY,\n} from '../services/extensionAssembler.ts';\nimport { isRecord, type JsonObject } from '../utils/index.ts';\nimport { assertSyncLocationSafe, resolveSyncLocation, type SyncIdentity, type SyncLocation } from './syncLocation.ts';\nimport { SYNC_STATE_VERSION } from './syncStateContract.ts';\n\nexport { SYNC_STATE_VERSION } from './syncStateContract.ts';\n\n/**\n * The file `doom-pi sync` writes and the doom-pi Pi extension reads back.\n *\n * This is the whole contract between the two halves of the synced path. Sync\n * runs in plain Node, where module resolution and the repository config are\n * available; the extension runs inside a Pi session, where neither can be\n * relied on. Everything the extension needs is therefore resolved once here,\n * and everything in this file has to survive JSON.\n */\n\nconst PI_DIRECTORY = '.pi';\n/** The `.doom` config directory name, under both the repo root and `~/.pi`. */\nconst DOOM_CONFIG_DIRECTORY = '.doom';\nconst RUN_DIRECTORY = 'run';\nconst DEFAULT_PRESET = 'default';\nconst PRIVATE_FILE_MODE = 0o600;\nconst PRIVATE_DIRECTORY_MODE = 0o700;\nconst OWN_PREFIX = 'own:';\nconst PACKAGE_PREFIX = 'pkg:';\nconst LOCAL_PREFIX = 'local:';\nconst LOCAL_PACKAGE_NAME_PREFIX = 'local-package-name:';\nconst ENTRY_INDEX_SEPARATOR = ':entry:';\nconst LEGACY_SYNC_STATE_VERSION = 8;\n\n/** Config that feeds a sync, in the order the hash reads it. */\nconst HASHED_CONFIG_FILES = ['config.yaml', 'modes.yaml', 'domains.yaml', 'profiles.yaml', 'hooks.yaml'] as const;\n\nexport interface SyncSelection {\n majorMode: string;\n domains: string[];\n profile?: string;\n preset: string;\n}\n\n/** Paths to the resources sync staged, before any live switch replaces them. */\nexport interface SyncBaseline {\n mcpConfigPath?: string;\n personaFile?: string;\n themePath: string;\n themeName: string;\n}\n\nexport interface SyncPrecompileState {\n /** Version of the lightweight freshness contract used by package startup. */\n version: number;\n strategy: 'native' | 'bundle';\n /** Package entry the generated bootstrap delegates to or bundles. */\n bootstrapEntry: string;\n /** Compiler manifest whose output is a graph-bundled package bootstrap. */\n bootstrapManifest?: string;\n /** Compiler manifests covering optional graph-bundled output. */\n manifests: string[];\n}\n\nexport interface SyncState {\n version: number;\n root: string;\n /** Canonical repository and worktree namespace that owns this state. */\n identity: SyncIdentity;\n /** Hash of the config that produced this state, for the staleness warning. */\n inputsHash: string;\n selection: SyncSelection;\n /** Harness environment the extension applies when the values are unset. */\n env: Record<string, string>;\n /**\n * State the environment does not carry, so it has to be recorded on its own.\n *\n * Plugin hooks and the profile's environment defaults live in the session\n * state file rather than in variables. Without them here a synced session\n * would start with no plugin hooks at all, which fails silently.\n */\n fileState: Pick<HarnessState, 'profileEnvironment' | 'pluginHooks'>;\n /** Entry name to absolute path, covering every layer, not just the selected mode's. */\n resolved: Record<string, string>;\n /**\n * The same entries after TypeScript ones were bundled to plain ESM.\n *\n * Kept apart from `resolved` so the staleness check still compares resolution\n * against resolution; a state written before this existed simply has none and\n * falls back to loading the source.\n */\n compiled?: Record<string, string>;\n /** Aggregate entry by ordered extension-set key. */\n bundles?: Record<string, string>;\n /** Graph-compiled synced bootstrap dynamically loaded by the package entry. */\n bootstrap?: string;\n /** Inputs used to validate generated artifacts without loading the compiler. */\n precompile?: SyncPrecompileState;\n baseline: SyncBaseline;\n}\n\nexport function syncDirectory(repoRoot: string, homeDirectory: string = os.homedir()): string {\n return resolveSyncLocation(repoRoot, homeDirectory).directory;\n}\n\nexport function syncStatePath(repoRoot: string, homeDirectory: string = os.homedir()): string {\n return resolveSyncLocation(repoRoot, homeDirectory).statePath;\n}\n\nexport function legacySyncDirectory(repoRoot: string): string {\n return resolveSyncLocation(repoRoot).legacyDirectory;\n}\n\nexport function legacySyncStatePath(repoRoot: string): string {\n return resolveSyncLocation(repoRoot).legacyStatePath;\n}\n\nfunction canonicalPath(target: string): string {\n const absolute = path.resolve(target);\n try {\n return fs.realpathSync(absolute);\n } catch {\n const parent = path.dirname(absolute);\n if (parent === absolute) return absolute;\n return path.join(canonicalPath(parent), path.basename(absolute));\n }\n}\n\nfunction isInside(directory: string, target: string): boolean {\n const relative = path.relative(canonicalPath(directory), canonicalPath(target));\n return relative === '' || (!relative.startsWith('..') && !path.isAbsolute(relative));\n}\n\n/** Whether generated state belongs to the repository that is reading it. */\nexport function syncStateRootMatches(repoRoot: string, stateRoot: string): boolean {\n return canonicalPath(repoRoot) === canonicalPath(stateRoot);\n}\n\n/**\n * Per-process scratch directory for live `/domains` and `/profile` switches.\n *\n * Switching rewrites the MCP config and the persona prompt. Writing those back\n * into the synced directory would both mutate the pinned baseline and let two\n * Pi sessions in one repository overwrite each other, which the launcher avoids\n * by giving every run its own temporary directory.\n */\nexport function runDirectory(\n repoRoot: string,\n processId: number = process.pid,\n homeDirectory: string = os.homedir(),\n): string {\n return path.join(syncDirectory(repoRoot, homeDirectory), RUN_DIRECTORY, String(processId));\n}\n\n/**\n * How a Pi project settings file should refer to a generated path.\n *\n * Relative to `.pi` when the target lives in the repository, which keeps the\n * committed settings file identical on every machine. A doom-pi installed\n * outside the repository stays absolute: Pi accepts both, and a relative path\n * climbing out of the project would be neither portable nor readable.\n */\nexport function settingsRelativePath(repoRoot: string, target: string): string {\n const relative = path.relative(repoRoot, target);\n if (relative.startsWith('..') || path.isAbsolute(relative)) return target;\n return path.relative(path.join(repoRoot, PI_DIRECTORY), target).split(path.sep).join('/');\n}\n\nfunction readIfPresent(filePath: string): string {\n return fs.existsSync(filePath) ? fs.readFileSync(filePath, 'utf8') : '';\n}\n\n/**\n * Hashes the configuration a sync consumed.\n *\n * Deliberately cheap: the extension recomputes this on every session start, so\n * it reads config, marketplace, local plugin manifests, and profile persona text\n * without downloading plugins or re-resolving packages. A dependency upgrade that\n * moves a package path therefore does not show up here; `doom-pi sync --check`\n * re-resolves and is the check that catches that.\n */\nexport function computeInputsHash(\n repoRoot: string,\n selection: SyncSelection,\n homeDirectory: string = os.homedir(),\n): string {\n const hash = crypto.createHash('sha256');\n hash.update(JSON.stringify({ ...selection, domains: [...selection.domains].sort() }));\n // Every .doom document layers the global copy under the repository one, so an\n // edit in either location is a real change.\n for (const directory of [\n path.join(homeDirectory, PI_DIRECTORY, DOOM_CONFIG_DIRECTORY),\n path.join(repoRoot, DOOM_CONFIG_DIRECTORY),\n ]) {\n for (const fileName of HASHED_CONFIG_FILES) hash.update(readIfPresent(path.join(directory, fileName)));\n }\n\n const catalog = loadDomains(repoRoot, homeDirectory).plugins;\n for (const root of catalog.roots) hash.update(root);\n for (const diagnostic of catalog.diagnostics) hash.update(diagnostic);\n for (const marketplace of catalog.marketplaces) {\n hash.update(marketplace);\n hash.update(readIfPresent(marketplace));\n }\n for (const [name, plugin] of Object.entries(catalog.entries).sort(([left], [right]) => left.localeCompare(right))) {\n hash.update(name);\n hash.update(JSON.stringify(plugin.source));\n if (plugin.manifest) {\n hash.update(plugin.manifest.path);\n hash.update(readIfPresent(plugin.manifest.path));\n }\n }\n\n for (const profile of loadProfiles(repoRoot, homeDirectory)) {\n hash.update(profile.name);\n hash.update(profile.personaRoot);\n hash.update(profile.persona);\n hash.update(JSON.stringify(profile.env));\n const personaDirectory = path.resolve(profile.personaRoot, profile.persona);\n for (const fileName of PERSONA_FILES) {\n const filePath = path.join(personaDirectory, fileName);\n hash.update(filePath);\n hash.update(readIfPresent(filePath));\n }\n }\n return hash.digest('hex');\n}\n\nfunction stringRecord(value: unknown, field: string, statePath: string): Record<string, string> {\n if (!isRecord(value)) throw new Error(`Doom sync state at ${statePath} requires ${field} to be an object`);\n return Object.fromEntries(\n Object.entries(value).filter((entry): entry is [string, string] => typeof entry[1] === 'string'),\n );\n}\n\nfunction parsePrecompileState(value: unknown, statePath: string): SyncPrecompileState {\n if (\n !isRecord(value) ||\n typeof value.version !== 'number' ||\n (value.strategy !== 'native' && value.strategy !== 'bundle') ||\n typeof value.bootstrapEntry !== 'string' ||\n (value.bootstrapManifest !== undefined && typeof value.bootstrapManifest !== 'string') ||\n !Array.isArray(value.manifests) ||\n value.manifests.some((manifest) => typeof manifest !== 'string')\n ) {\n throw new Error(`Doom sync state at ${statePath} has an invalid precompile record`);\n }\n return {\n version: value.version,\n strategy: value.strategy,\n bootstrapEntry: value.bootstrapEntry,\n bootstrapManifest: value.bootstrapManifest as string | undefined,\n manifests: value.manifests as string[],\n };\n}\n\ninterface ParseSyncStateOptions {\n repoRoot: string;\n location: SyncLocation;\n legacy: boolean;\n}\n\nfunction identityMatches(left: SyncIdentity, right: SyncIdentity): boolean {\n return left.repositoryId === right.repositoryId && left.worktreeId === right.worktreeId;\n}\n\nfunction parseSyncIdentity(value: unknown, statePath: string): SyncIdentity {\n if (!isRecord(value) || typeof value.repositoryId !== 'string' || typeof value.worktreeId !== 'string') {\n throw new Error(`Doom sync state at ${statePath} requires repository and worktree identity`);\n }\n return { repositoryId: value.repositoryId, worktreeId: value.worktreeId };\n}\n\nfunction parseSyncState(source: string, statePath: string, options: ParseSyncStateOptions): SyncState {\n let parsed: unknown;\n try {\n parsed = JSON.parse(source);\n } catch (error) {\n throw new Error(`Doom sync state at ${statePath} is not valid JSON`, { cause: error });\n }\n if (!isRecord(parsed)) throw new Error(`Doom sync state at ${statePath} must be an object`);\n const acceptedVersions = options.legacy\n ? new Set([LEGACY_SYNC_STATE_VERSION, SYNC_STATE_VERSION])\n : new Set([SYNC_STATE_VERSION]);\n if (typeof parsed.version !== 'number' || !acceptedVersions.has(parsed.version)) {\n throw new Error(\n `Doom sync state at ${statePath} has version ${String(parsed.version)}, expected ${SYNC_STATE_VERSION}. Run doompi sync.`,\n );\n }\n if (typeof parsed.root !== 'string' || typeof parsed.inputsHash !== 'string') {\n throw new Error(`Doom sync state at ${statePath} requires string root and inputsHash`);\n }\n if (!syncStateRootMatches(options.repoRoot, parsed.root)) {\n throw new Error(`Doom sync state at ${statePath} belongs to a different repository: ${parsed.root}`);\n }\n const identity =\n parsed.identity === undefined && options.legacy\n ? options.location.identity\n : parseSyncIdentity(parsed.identity, statePath);\n if (!identityMatches(identity, options.location.identity)) {\n throw new Error(`Doom sync state at ${statePath} belongs to a different repository or worktree identity`);\n }\n if (!isRecord(parsed.selection) || typeof parsed.selection.majorMode !== 'string') {\n throw new Error(`Doom sync state at ${statePath} requires a selection with a majorMode`);\n }\n if (!isRecord(parsed.baseline) || typeof parsed.baseline.themePath !== 'string') {\n throw new Error(`Doom sync state at ${statePath} requires a baseline with a themePath`);\n }\n const { majorMode, domains, profile, preset } = parsed.selection;\n const fileState = isRecord(parsed.fileState) ? parsed.fileState : {};\n const generatedDirectory = options.legacy ? options.location.legacyDirectory : options.location.directory;\n const compiled = parsed.compiled === undefined ? undefined : stringRecord(parsed.compiled, 'compiled', statePath);\n const bundles = parsed.bundles === undefined ? undefined : stringRecord(parsed.bundles, 'bundles', statePath);\n const bootstrap = typeof parsed.bootstrap === 'string' ? parsed.bootstrap : undefined;\n const generatedPaths = [bootstrap, ...Object.values(compiled ?? {}), ...Object.values(bundles ?? {})].filter(\n (entry): entry is string => entry !== undefined,\n );\n if (generatedPaths.some((entry) => !isInside(generatedDirectory, entry))) {\n throw new Error(`Doom sync state at ${statePath} references generated material outside ${generatedDirectory}`);\n }\n return {\n version: parsed.version,\n root: parsed.root,\n identity,\n inputsHash: parsed.inputsHash,\n selection: {\n majorMode,\n domains: Array.isArray(domains) ? domains.filter((name): name is string => typeof name === 'string') : [],\n profile: typeof profile === 'string' ? profile : undefined,\n preset: typeof preset === 'string' ? preset : DEFAULT_PRESET,\n },\n env: stringRecord(parsed.env, 'env', statePath),\n fileState: {\n profileEnvironment: isRecord(fileState.profileEnvironment)\n ? (fileState.profileEnvironment as Record<string, string>)\n : {},\n pluginHooks: Array.isArray(fileState.pluginHooks) ? (fileState.pluginHooks as HarnessState['pluginHooks']) : [],\n },\n resolved: stringRecord(parsed.resolved, 'resolved', statePath),\n compiled,\n bundles,\n bootstrap,\n precompile: parsed.precompile === undefined ? undefined : parsePrecompileState(parsed.precompile, statePath),\n baseline: parsed.baseline as unknown as SyncBaseline,\n };\n}\n\nexport interface LocatedSyncState {\n state: SyncState;\n location: SyncLocation;\n layout: 'global' | 'legacy';\n}\n\n/** Reads global state first, with a read-only fallback to validated legacy state. */\nexport function readLocatedSyncState(\n repoRoot: string,\n homeDirectory: string = os.homedir(),\n): LocatedSyncState | undefined {\n const location = resolveSyncLocation(repoRoot, homeDirectory);\n if (fs.existsSync(location.statePath)) {\n return {\n state: parseSyncState(fs.readFileSync(location.statePath, 'utf8'), location.statePath, {\n repoRoot,\n location,\n legacy: false,\n }),\n location,\n layout: 'global',\n };\n }\n if (!fs.existsSync(location.legacyStatePath)) return undefined;\n return {\n state: parseSyncState(fs.readFileSync(location.legacyStatePath, 'utf8'), location.legacyStatePath, {\n repoRoot,\n location,\n legacy: true,\n }),\n location,\n layout: 'legacy',\n };\n}\n\n/** Reads the synced state, or undefined when the repository was never synced. */\nexport function readSyncState(repoRoot: string, homeDirectory: string = os.homedir()): SyncState | undefined {\n return readLocatedSyncState(repoRoot, homeDirectory)?.state;\n}\n\nexport function serializeSyncState(state: SyncState): string {\n return `${JSON.stringify(state, null, 2)}\\n`;\n}\n\nexport async function writeSyncState(\n repoRoot: string,\n state: SyncState,\n homeDirectory: string = os.homedir(),\n): Promise<string> {\n const location = resolveSyncLocation(repoRoot, homeDirectory);\n if (state.version !== SYNC_STATE_VERSION) {\n throw new Error(`Doom sync state writes require version ${SYNC_STATE_VERSION}`);\n }\n if (!syncStateRootMatches(repoRoot, state.root) || !identityMatches(state.identity, location.identity)) {\n throw new Error('Refusing to write Doom sync state for a different repository or worktree');\n }\n assertSyncLocationSafe(location);\n await fs.promises.mkdir(location.directory, { mode: PRIVATE_DIRECTORY_MODE, recursive: true });\n const temporaryPath = `${location.statePath}.${process.pid}.${crypto.randomUUID()}.tmp`;\n try {\n await fs.promises.writeFile(temporaryPath, serializeSyncState(state), { mode: PRIVATE_FILE_MODE });\n await fs.promises.rename(temporaryPath, location.statePath);\n } catch (error) {\n await fs.promises.rm(temporaryPath, { force: true });\n throw error;\n }\n return location.statePath;\n}\n\nexport function ownKey(name: string): string {\n return `${OWN_PREFIX}${name}`;\n}\n\nexport function packageKey(specifier: string): string {\n return `${PACKAGE_PREFIX}${specifier}`;\n}\n\nexport function packageEntryKey(specifier: string, index: number): string {\n return index === 0 ? packageKey(specifier) : `${packageKey(specifier)}${ENTRY_INDEX_SEPARATOR}${index}`;\n}\n\n/**\n * Keyed by the absolute target, because the same relative specifier means\n * different files under the repository and the global config directory.\n */\nexport function localKey(specifier: string, baseDirectory: string): string {\n return `${LOCAL_PREFIX}${path.resolve(baseDirectory, specifier)}`;\n}\n\nexport function localEntryKey(specifier: string, baseDirectory: string, index: number): string {\n return index === 0\n ? localKey(specifier, baseDirectory)\n : `${localKey(specifier, baseDirectory)}${ENTRY_INDEX_SEPARATOR}${index}`;\n}\n\nexport function localPackageNameKey(specifier: string, baseDirectory: string): string {\n return `${LOCAL_PACKAGE_NAME_PREFIX}${path.resolve(baseDirectory, specifier)}`;\n}\n\nexport interface RecordingResolvers extends ExtensionLayerResolvers {\n /** Every name this resolver was asked for, keyed for the state file. */\n readonly resolved: Record<string, string>;\n packageEntries(name: string): string[];\n optionalPackageEntries(name: string): string[] | undefined;\n localEntries(specifier: string, baseDirectory: string): string[] | undefined;\n}\n\n/**\n * Resolvers that record what they resolve.\n *\n * Sync composes once with every layer selected and hands the recording to the\n * state file, so the extension never has to resolve a specifier itself.\n */\nexport function createRecordingResolvers(base: LayerResolvers = LAYER_RESOLVERS): RecordingResolvers {\n const resolved: Record<string, string> = {};\n const extensionBase = base as ExtensionLayerResolvers;\n const recordEntries = (entries: string[], keyFor: (index: number) => string): string[] => {\n entries.forEach((entry, index) => {\n resolved[keyFor(index)] = entry;\n });\n return entries;\n };\n return {\n resolved,\n ownEntry(name) {\n const entry = base.ownEntry(name);\n resolved[ownKey(name)] = entry;\n return entry;\n },\n packageEntry(name) {\n const entry = base.packageEntry(name);\n resolved[packageKey(name)] = entry;\n return entry;\n },\n optionalPackageEntry(name) {\n const entry = base.optionalPackageEntry(name);\n // A miss is recorded by omission, which is what later makes the extension\n // treat it as absent instead of failing the whole composition.\n if (entry) resolved[packageKey(name)] = entry;\n return entry;\n },\n packageEntries(name) {\n const entries = extensionBase.packageEntries?.(name) ?? [base.packageEntry(name)];\n return recordEntries(entries, (index) => packageEntryKey(name, index));\n },\n optionalPackageEntries(name) {\n let entries = extensionBase.optionalPackageEntries?.(name);\n if (entries === undefined) {\n const entry = base.optionalPackageEntry(name);\n entries = entry ? [entry] : undefined;\n }\n return entries ? recordEntries(entries, (index) => packageEntryKey(name, index)) : undefined;\n },\n localEntry(specifier, baseDirectory) {\n const entry = base.localEntry(specifier, baseDirectory);\n if (entry) resolved[localKey(specifier, baseDirectory)] = entry;\n return entry;\n },\n localEntries(specifier, baseDirectory) {\n let entries = extensionBase.localEntries?.(specifier, baseDirectory);\n if (entries === undefined) {\n const entry = base.localEntry(specifier, baseDirectory);\n entries = entry ? [entry] : undefined;\n }\n return entries ? recordEntries(entries, (index) => localEntryKey(specifier, baseDirectory, index)) : undefined;\n },\n localPackageName(specifier, baseDirectory) {\n const name = extensionBase.localPackageName?.(specifier, baseDirectory);\n if (name) resolved[localPackageNameKey(specifier, baseDirectory)] = name;\n return name;\n },\n };\n}\n\n/**\n * Resolves every entry any layer could contribute, in one pass.\n *\n * Composing with every layer selected and the widest options is what makes the\n * map complete: a later `/mode` switch inside a Pi session can then pick a\n * different set without resolving anything itself. The context packages and the\n * persona entry are asked for separately because they reach `assembleExtensions`\n * as already-resolved paths rather than through the resolvers.\n */\nexport function recordResolvedEntries(\n majorModesConfig: MajorModesConfig,\n base: LayerResolvers = LAYER_RESOLVERS,\n): Record<string, string> {\n const recording = createRecordingResolvers(base);\n for (const specifier of Object.values(CONTEXT_PACKAGES)) recording.optionalPackageEntry(specifier);\n recording.ownEntry(PERSONA_ENTRY);\n assembleExtensions({\n agents: true,\n autoStop: true,\n mute: false,\n // The one preset that contributes an extension of its own.\n preset: OLLAMA_PRESET,\n layers: Object.keys(majorModesConfig.layers),\n majorModesConfig,\n resolvers: recording,\n });\n assembleChildExtensions({\n agents: false,\n autoStop: false,\n mute: true,\n preset: OLLAMA_PRESET,\n layers: Object.keys(majorModesConfig.layers),\n majorModesConfig,\n resolvers: recording,\n });\n return recording.resolved;\n}\n\n/** Resolvers backed by a synced map, for composing inside a Pi session. */\nexport function createMapResolvers(\n resolved: Record<string, string>,\n compiled: Record<string, string> = {},\n): ExtensionLayerResolvers {\n // The compiled bundle when this entry has one, the source otherwise.\n const entryFor = (key: string): string | undefined => compiled[key] ?? resolved[key];\n const lookup = (key: string, name: string): string => {\n const entry = entryFor(key);\n if (!entry) throw new Error(`${name} is missing from the doompi sync state. Run doompi sync.`);\n return entry;\n };\n const indexedEntries = (keyFor: (index: number) => string): string[] | undefined => {\n const first = entryFor(keyFor(0));\n if (!first) return undefined;\n const entries = [first];\n for (let index = 1; ; index += 1) {\n const entry = entryFor(keyFor(index));\n if (!entry) break;\n entries.push(entry);\n }\n return entries;\n };\n return {\n ownEntry: (name) => lookup(ownKey(name), name),\n packageEntry: (name) => lookup(packageKey(name), name),\n optionalPackageEntry: (name) => entryFor(packageKey(name)),\n packageEntries: (name) => {\n const entries = indexedEntries((index) => packageEntryKey(name, index));\n if (!entries) throw new Error(`${name} is missing from the doompi sync state. Run doompi sync.`);\n return entries;\n },\n optionalPackageEntries: (name) => indexedEntries((index) => packageEntryKey(name, index)),\n localEntry: (specifier, baseDirectory) => entryFor(localKey(specifier, baseDirectory)),\n localEntries: (specifier, baseDirectory) =>\n indexedEntries((index) => localEntryKey(specifier, baseDirectory, index)),\n localPackageName: (specifier, baseDirectory) => resolved[localPackageNameKey(specifier, baseDirectory)],\n };\n}\n\n/** Reads the resolved MCP servers back out of a generated config. */\nexport function readMcpServerNames(configPath: string): string[] {\n if (!fs.existsSync(configPath)) return [];\n const config = JSON.parse(fs.readFileSync(configPath, 'utf8')) as JsonObject;\n return isRecord(config.mcpServers) ? Object.keys(config.mcpServers) : [];\n}\n"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ exports.BUNDLED_PRECOMPILE_STRATEGY=`bundle`,exports.NATIVE_PRECOMPILE_STRATEGY=`native`,exports.SYNC_STATE_VERSION=9;
2
+ //# sourceMappingURL=syncStateContract.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"syncStateContract.cjs","names":[],"sources":["../../src/adapters/syncStateContract.ts"],"sourcesContent":["/**\n * Bumped whenever the persisted sync-state shape changes.\n *\n * Version 9 moves generated state into a home-scoped repository/worktree\n * namespace and records the identity that owns it. Keeping these values\n * dependency-free lets the package bootstrap reject stale output without\n * evaluating the runtime graph.\n */\nexport const SYNC_STATE_VERSION = 9;\n\n/** Bump whenever the precompiler or its freshness contract changes. */\nexport const PRECOMPILE_STATE_VERSION = 2;\n\nexport const NATIVE_PRECOMPILE_STRATEGY = 'native';\nexport const BUNDLED_PRECOMPILE_STRATEGY = 'bundle';\n"],"mappings":""}
@@ -0,0 +1,13 @@
1
+ //#region src/adapters/syncStateContract.d.ts
2
+ /**
3
+ * Bumped whenever the persisted sync-state shape changes.
4
+ *
5
+ * Version 9 moves generated state into a home-scoped repository/worktree
6
+ * namespace and records the identity that owns it. Keeping these values
7
+ * dependency-free lets the package bootstrap reject stale output without
8
+ * evaluating the runtime graph.
9
+ */
10
+ declare const SYNC_STATE_VERSION = 9;
11
+ //#endregion
12
+ export { SYNC_STATE_VERSION };
13
+ //# sourceMappingURL=syncStateContract.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"syncStateContract.d.cts","names":[],"sources":["../../src/adapters/syncStateContract.ts"],"mappings":";;AAQA;;;;;;;cAAa,kBAAA"}
@@ -0,0 +1,13 @@
1
+ //#region src/adapters/syncStateContract.d.ts
2
+ /**
3
+ * Bumped whenever the persisted sync-state shape changes.
4
+ *
5
+ * Version 9 moves generated state into a home-scoped repository/worktree
6
+ * namespace and records the identity that owns it. Keeping these values
7
+ * dependency-free lets the package bootstrap reject stale output without
8
+ * evaluating the runtime graph.
9
+ */
10
+ declare const SYNC_STATE_VERSION = 9;
11
+ //#endregion
12
+ export { SYNC_STATE_VERSION };
13
+ //# sourceMappingURL=syncStateContract.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"syncStateContract.d.mts","names":[],"sources":["../../src/adapters/syncStateContract.ts"],"mappings":";;AAQA;;;;;;;cAAa,kBAAA"}
@@ -0,0 +1,2 @@
1
+ const e=9,t=`native`,n=`bundle`;export{n as BUNDLED_PRECOMPILE_STRATEGY,t as NATIVE_PRECOMPILE_STRATEGY,e as SYNC_STATE_VERSION};
2
+ //# sourceMappingURL=syncStateContract.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"syncStateContract.mjs","names":[],"sources":["../../src/adapters/syncStateContract.ts"],"sourcesContent":["/**\n * Bumped whenever the persisted sync-state shape changes.\n *\n * Version 9 moves generated state into a home-scoped repository/worktree\n * namespace and records the identity that owns it. Keeping these values\n * dependency-free lets the package bootstrap reject stale output without\n * evaluating the runtime graph.\n */\nexport const SYNC_STATE_VERSION = 9;\n\n/** Bump whenever the precompiler or its freshness contract changes. */\nexport const PRECOMPILE_STATE_VERSION = 2;\n\nexport const NATIVE_PRECOMPILE_STRATEGY = 'native';\nexport const BUNDLED_PRECOMPILE_STRATEGY = 'bundle';\n"],"mappings":"AAQA,MAAa,EAAqB,EAKrB,EAA6B,SAC7B,EAA8B"}
@@ -0,0 +1,2 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../_virtual/_rolldown/runtime.cjs`),t=require(`./syncLocation.cjs`),n=require(`./modules/moduleResolution.cjs`),r=require(`../services/extensionAssembler.cjs`),i=require(`./syncStateContract.cjs`),a=require(`./syncState.cjs`),o=require(`./resourceCollector.cjs`),s=require(`./extensionCompiler.cjs`),c=require(`./runtimeBundle.cjs`);let l=require(`node:path`);l=e.__toESM(l,1);let u=require(`node:os`);u=e.__toESM(u,1);let d=require(`@agimon-ai/doompi-config/majorModes`),f=require(`@agimon-ai/doompi-config/harnessState`);function p(e,t){let n={...e};for(let[e,r]of Object.entries(t))r!==void 0&&(n[e]=r);return n}function m(e,t,n,r){return{majorMode:n,domains:[...e.selection.domains],profile:e.selection.profile,preset:e.selection.preset,mute:r,autoStop:!1,agents:t.agents,mcp:t.mcp}}function h(e,t){return e.inputsHash!==t.inputsHash||JSON.stringify(e.selection)!==JSON.stringify(t.selection)||JSON.stringify(e.resolved)!==JSON.stringify(t.resolved)}async function g(e,g=process.env,_=g.HOME??u.default.homedir()){let v=a.readSyncState(e,_);if(!v)throw Error(`DoomPi is not synchronized at ${e}. Run doompi sync.`);let y=p(v.env,g),b=(0,f.readHarnessState)(y),x=(0,d.loadMajorModesConfig)(e),S=a.createMapResolvers(v.resolved),C=o.selectWorkflowExtensionForProcess(S.optionalPackageEntry(r.CONTEXT_PACKAGES.workflow),S.optionalPackageEntry(r.CONTEXT_PACKAGES.dispatcherWorkflow),y),w={agents:b.agents,autoStop:!1,preset:v.selection.preset,mcpEntry:b.mcp?S.optionalPackageEntry(r.CONTEXT_PACKAGES.mcp):void 0,personaEntry:S.ownEntry(r.PERSONA_ENTRY),workflowExtension:C,majorModesConfig:x,resolvers:S},T=t.resolveSyncLocation(e,_),E=a.syncDirectory(e,_),D=l.default.join(E,`cache`),O=l.default.join(E,`dist`),k={},A=[];for(let[t,n]of Object.entries(x.majorMode)){let i=r.filterHookDisabledLayers(n.layers,b.hooks);for(let n of[!1,!0]){let a=[...r.assembleExtensions({...w,layers:i,mute:n})].reverse(),o=r.assembleChildExtensions({...w,layers:i,agents:!1,mute:!0}),l=`${t}${n?`.mute`:``}`;try{let r=await c.compileModeExtension({repoRoot:e,selection:m(v,b,t,n),extensionPaths:a,childExtensionPaths:o,skillPaths:b.skillDirectories,pluginRoots:b.pluginDirectories,outputName:l,cacheDirectory:D,outputDirectory:O,sharedCacheDirectory:T.sharedCacheDirectory});k[s.extensionSetKey(a)]=r.bundle,A.push(s.extensionSetManifestPath(a,D,{outputDirectory:O,outputName:l}))}catch(e){let r=e instanceof Error?e.message:String(e);process.stderr.write(`[doompi] could not precompile ${t}${n?` (mute)`:``}: ${r}\n`)}}}let j=[n.ownEntry(`doom`)],M={outputDirectory:O,outputName:`bootstrap`},N=await s.compileExtensionSet(j,D,{...M,repositoryRoot:e,sharedCacheDirectory:T.sharedCacheDirectory}),P=s.extensionSetManifestPath(j,D,M);A.push(P);let F=a.readSyncState(e,_);if(!F)throw Error(`DoomPi synchronization disappeared while compiling ${e}`);if(h(v,F))throw Error(`DoomPi synchronization changed while compiling ${e}; restart Pi to use the new state.`);let I=[...new Set(A)];return await a.writeSyncState(e,{...F,compiled:void 0,bundles:k,bootstrap:N,precompile:{version:2,strategy:i.BUNDLED_PRECOMPILE_STRATEGY,bootstrapEntry:j[0],bootstrapManifest:P,manifests:I}},_),{bootstrap:N,bundles:k,manifests:I}}exports.buildSyncedRuntime=g;
2
+ //# sourceMappingURL=syncedRuntimeBuilder.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"syncedRuntimeBuilder.cjs","names":["os","readSyncState","createMapResolvers","selectWorkflowExtensionForProcess","CONTEXT_PACKAGES","PERSONA_ENTRY","resolveSyncLocation","syncDirectory","path","filterHookDisabledLayers","assembleExtensions","assembleChildExtensions","compileModeExtension","extensionSetKey","extensionSetManifestPath","ownEntry","compileExtensionSet","writeSyncState","BUNDLED_PRECOMPILE_STRATEGY"],"sources":["../../src/adapters/syncedRuntimeBuilder.ts"],"sourcesContent":["import os from 'node:os';\nimport path from 'node:path';\nimport { readHarnessState } from '@agimon-ai/doompi-config/harnessState';\nimport { loadMajorModesConfig } from '@agimon-ai/doompi-config/majorModes';\nimport {\n assembleChildExtensions,\n assembleExtensions,\n CONTEXT_PACKAGES,\n filterHookDisabledLayers,\n PERSONA_ENTRY,\n} from '../services/extensionAssembler.ts';\nimport { compileExtensionSet, extensionSetKey, extensionSetManifestPath } from './extensionCompiler.ts';\nimport { ownEntry } from './modules/moduleResolution.ts';\nimport { selectWorkflowExtensionForProcess } from './resourceCollector.ts';\nimport { compileModeExtension, type ModeBuildSelection } from './runtimeBundle.ts';\nimport { resolveSyncLocation } from './syncLocation.ts';\nimport { createMapResolvers, readSyncState, type SyncState, syncDirectory, writeSyncState } from './syncState.ts';\nimport { BUNDLED_PRECOMPILE_STRATEGY, PRECOMPILE_STATE_VERSION } from './syncStateContract.ts';\n\nconst EXTENSION_CACHE_DIRECTORY = 'cache';\nconst MODE_DIST_DIRECTORY = 'dist';\nconst DOOM_ENTRY = 'doom';\n\nexport interface SyncedRuntimeBuild {\n bootstrap: string;\n bundles: Record<string, string>;\n manifests: string[];\n}\n\nfunction mergedEnvironment(recorded: Record<string, string>, current: NodeJS.ProcessEnv): NodeJS.ProcessEnv {\n const merged: NodeJS.ProcessEnv = { ...recorded };\n for (const [key, value] of Object.entries(current)) {\n if (value !== undefined) merged[key] = value;\n }\n return merged;\n}\n\nfunction selectionFor(\n state: SyncState,\n harness: ReturnType<typeof readHarnessState>,\n majorMode: string,\n mute: boolean,\n): ModeBuildSelection {\n return {\n majorMode,\n domains: [...state.selection.domains],\n profile: state.selection.profile,\n preset: state.selection.preset,\n mute,\n autoStop: false,\n agents: harness.agents,\n mcp: harness.mcp,\n };\n}\n\nfunction compilationStateChanged(previous: SyncState, current: SyncState): boolean {\n return (\n previous.inputsHash !== current.inputsHash ||\n JSON.stringify(previous.selection) !== JSON.stringify(current.selection) ||\n JSON.stringify(previous.resolved) !== JSON.stringify(current.resolved)\n );\n}\n\n/** Heavy graph bundling reserved for the private build phase of `doompi sync`. */\nexport async function buildSyncedRuntime(\n repoRoot: string,\n environment: NodeJS.ProcessEnv = process.env,\n homeDirectory: string = environment.HOME ?? os.homedir(),\n): Promise<SyncedRuntimeBuild> {\n const state = readSyncState(repoRoot, homeDirectory);\n if (!state) throw new Error(`DoomPi is not synchronized at ${repoRoot}. Run doompi sync.`);\n\n const runtimeEnvironment = mergedEnvironment(state.env, environment);\n const harness = readHarnessState(runtimeEnvironment);\n const majorModesConfig = loadMajorModesConfig(repoRoot);\n const resolvers = createMapResolvers(state.resolved);\n const workflowExtension = selectWorkflowExtensionForProcess(\n resolvers.optionalPackageEntry(CONTEXT_PACKAGES.workflow),\n resolvers.optionalPackageEntry(CONTEXT_PACKAGES.dispatcherWorkflow),\n runtimeEnvironment,\n );\n const base = {\n agents: harness.agents,\n autoStop: false,\n preset: state.selection.preset,\n mcpEntry: harness.mcp ? resolvers.optionalPackageEntry(CONTEXT_PACKAGES.mcp) : undefined,\n personaEntry: resolvers.ownEntry(PERSONA_ENTRY),\n workflowExtension,\n majorModesConfig,\n resolvers,\n };\n\n const location = resolveSyncLocation(repoRoot, homeDirectory);\n const directory = syncDirectory(repoRoot, homeDirectory);\n const cacheDirectory = path.join(directory, EXTENSION_CACHE_DIRECTORY);\n const outputDirectory = path.join(directory, MODE_DIST_DIRECTORY);\n const bundles: Record<string, string> = {};\n const manifests: string[] = [];\n\n for (const [majorMode, definition] of Object.entries(majorModesConfig.majorMode)) {\n const selectedLayers = filterHookDisabledLayers(definition.layers, harness.hooks);\n for (const mute of [false, true]) {\n const extensionPaths = [...assembleExtensions({ ...base, layers: selectedLayers, mute })].reverse();\n const childExtensionPaths = assembleChildExtensions({\n ...base,\n layers: selectedLayers,\n agents: false,\n mute: true,\n });\n const outputName = `${majorMode}${mute ? '.mute' : ''}`;\n try {\n const built = await compileModeExtension({\n repoRoot,\n selection: selectionFor(state, harness, majorMode, mute),\n extensionPaths,\n childExtensionPaths,\n skillPaths: harness.skillDirectories,\n pluginRoots: harness.pluginDirectories,\n outputName,\n cacheDirectory,\n outputDirectory,\n sharedCacheDirectory: location.sharedCacheDirectory,\n });\n bundles[extensionSetKey(extensionPaths)] = built.bundle;\n manifests.push(extensionSetManifestPath(extensionPaths, cacheDirectory, { outputDirectory, outputName }));\n } catch (error) {\n const detail = error instanceof Error ? error.message : String(error);\n process.stderr.write(`[doompi] could not precompile ${majorMode}${mute ? ' (mute)' : ''}: ${detail}\\n`);\n }\n }\n }\n\n const bootstrapEntries = [ownEntry(DOOM_ENTRY)];\n const bootstrapOptions = { outputDirectory, outputName: 'bootstrap' };\n const bootstrap = await compileExtensionSet(bootstrapEntries, cacheDirectory, {\n ...bootstrapOptions,\n repositoryRoot: repoRoot,\n sharedCacheDirectory: location.sharedCacheDirectory,\n });\n const bootstrapManifest = extensionSetManifestPath(bootstrapEntries, cacheDirectory, bootstrapOptions);\n manifests.push(bootstrapManifest);\n\n const current = readSyncState(repoRoot, homeDirectory);\n if (!current) throw new Error(`DoomPi synchronization disappeared while compiling ${repoRoot}`);\n if (compilationStateChanged(state, current)) {\n throw new Error(`DoomPi synchronization changed while compiling ${repoRoot}; restart Pi to use the new state.`);\n }\n\n const uniqueManifests = [...new Set(manifests)];\n await writeSyncState(\n repoRoot,\n {\n ...current,\n compiled: undefined,\n bundles,\n bootstrap,\n precompile: {\n version: PRECOMPILE_STATE_VERSION,\n strategy: BUNDLED_PRECOMPILE_STRATEGY,\n bootstrapEntry: bootstrapEntries[0],\n bootstrapManifest,\n manifests: uniqueManifests,\n },\n },\n homeDirectory,\n );\n return { bootstrap, bundles, manifests: uniqueManifests };\n}\n"],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ //#region src/adapters/syncedRuntimeBuilder.d.ts
2
+ interface SyncedRuntimeBuild {
3
+ bootstrap: string;
4
+ bundles: Record<string, string>;
5
+ manifests: string[];
6
+ }
7
+ /** Heavy graph bundling reserved for the private build phase of `doompi sync`. */
8
+ declare function buildSyncedRuntime(repoRoot: string, environment?: NodeJS.ProcessEnv, homeDirectory?: string): Promise<SyncedRuntimeBuild>;
9
+ //#endregion
10
+ export { SyncedRuntimeBuild, buildSyncedRuntime };
11
+ //# sourceMappingURL=syncedRuntimeBuilder.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"syncedRuntimeBuilder.d.cts","names":[],"sources":["../../src/adapters/syncedRuntimeBuilder.ts"],"mappings":";UAuBiB,kBAAA;EACf,SAAA;EACA,OAAA,EAAS,MAAA;EACT,SAAA;AAAA;;iBAsCoB,kBAAA,CACpB,QAAA,UACA,WAAA,GAAa,MAAA,CAAO,UAAA,EACpB,aAAA,YACC,OAAA,CAAQ,kBAAA"}
@@ -0,0 +1,11 @@
1
+ //#region src/adapters/syncedRuntimeBuilder.d.ts
2
+ interface SyncedRuntimeBuild {
3
+ bootstrap: string;
4
+ bundles: Record<string, string>;
5
+ manifests: string[];
6
+ }
7
+ /** Heavy graph bundling reserved for the private build phase of `doompi sync`. */
8
+ declare function buildSyncedRuntime(repoRoot: string, environment?: NodeJS.ProcessEnv, homeDirectory?: string): Promise<SyncedRuntimeBuild>;
9
+ //#endregion
10
+ export { SyncedRuntimeBuild, buildSyncedRuntime };
11
+ //# sourceMappingURL=syncedRuntimeBuilder.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"syncedRuntimeBuilder.d.mts","names":[],"sources":["../../src/adapters/syncedRuntimeBuilder.ts"],"mappings":";UAuBiB,kBAAA;EACf,SAAA;EACA,OAAA,EAAS,MAAA;EACT,SAAA;AAAA;;iBAsCoB,kBAAA,CACpB,QAAA,UACA,WAAA,GAAa,MAAA,CAAO,UAAA,EACpB,aAAA,YACC,OAAA,CAAQ,kBAAA"}
@@ -0,0 +1,2 @@
1
+ import{resolveSyncLocation as e}from"./syncLocation.mjs";import{ownEntry as t}from"./modules/moduleResolution.mjs";import{CONTEXT_PACKAGES as n,PERSONA_ENTRY as r,assembleChildExtensions as i,assembleExtensions as a,filterHookDisabledLayers as o}from"../services/extensionAssembler.mjs";import{BUNDLED_PRECOMPILE_STRATEGY as s}from"./syncStateContract.mjs";import{createMapResolvers as c,readSyncState as l,syncDirectory as u,writeSyncState as d}from"./syncState.mjs";import{selectWorkflowExtensionForProcess as f}from"./resourceCollector.mjs";import{compileExtensionSet as p,extensionSetKey as m,extensionSetManifestPath as h}from"./extensionCompiler.mjs";import{compileModeExtension as g}from"./runtimeBundle.mjs";import _ from"node:path";import v from"node:os";import{loadMajorModesConfig as y}from"@agimon-ai/doompi-config/majorModes";import{readHarnessState as b}from"@agimon-ai/doompi-config/harnessState";function x(e,t){let n={...e};for(let[e,r]of Object.entries(t))r!==void 0&&(n[e]=r);return n}function S(e,t,n,r){return{majorMode:n,domains:[...e.selection.domains],profile:e.selection.profile,preset:e.selection.preset,mute:r,autoStop:!1,agents:t.agents,mcp:t.mcp}}function C(e,t){return e.inputsHash!==t.inputsHash||JSON.stringify(e.selection)!==JSON.stringify(t.selection)||JSON.stringify(e.resolved)!==JSON.stringify(t.resolved)}async function w(w,T=process.env,E=T.HOME??v.homedir()){let D=l(w,E);if(!D)throw Error(`DoomPi is not synchronized at ${w}. Run doompi sync.`);let O=x(D.env,T),k=b(O),A=y(w),j=c(D.resolved),M=f(j.optionalPackageEntry(n.workflow),j.optionalPackageEntry(n.dispatcherWorkflow),O),N={agents:k.agents,autoStop:!1,preset:D.selection.preset,mcpEntry:k.mcp?j.optionalPackageEntry(n.mcp):void 0,personaEntry:j.ownEntry(r),workflowExtension:M,majorModesConfig:A,resolvers:j},P=e(w,E),F=u(w,E),I=_.join(F,`cache`),L=_.join(F,`dist`),R={},z=[];for(let[e,t]of Object.entries(A.majorMode)){let n=o(t.layers,k.hooks);for(let t of[!1,!0]){let r=[...a({...N,layers:n,mute:t})].reverse(),o=i({...N,layers:n,agents:!1,mute:!0}),s=`${e}${t?`.mute`:``}`;try{let n=await g({repoRoot:w,selection:S(D,k,e,t),extensionPaths:r,childExtensionPaths:o,skillPaths:k.skillDirectories,pluginRoots:k.pluginDirectories,outputName:s,cacheDirectory:I,outputDirectory:L,sharedCacheDirectory:P.sharedCacheDirectory});R[m(r)]=n.bundle,z.push(h(r,I,{outputDirectory:L,outputName:s}))}catch(n){let r=n instanceof Error?n.message:String(n);process.stderr.write(`[doompi] could not precompile ${e}${t?` (mute)`:``}: ${r}\n`)}}}let B=[t(`doom`)],V={outputDirectory:L,outputName:`bootstrap`},H=await p(B,I,{...V,repositoryRoot:w,sharedCacheDirectory:P.sharedCacheDirectory}),U=h(B,I,V);z.push(U);let W=l(w,E);if(!W)throw Error(`DoomPi synchronization disappeared while compiling ${w}`);if(C(D,W))throw Error(`DoomPi synchronization changed while compiling ${w}; restart Pi to use the new state.`);let G=[...new Set(z)];return await d(w,{...W,compiled:void 0,bundles:R,bootstrap:H,precompile:{version:2,strategy:s,bootstrapEntry:B[0],bootstrapManifest:U,manifests:G}},E),{bootstrap:H,bundles:R,manifests:G}}export{w as buildSyncedRuntime};
2
+ //# sourceMappingURL=syncedRuntimeBuilder.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"syncedRuntimeBuilder.mjs","names":[],"sources":["../../src/adapters/syncedRuntimeBuilder.ts"],"sourcesContent":["import os from 'node:os';\nimport path from 'node:path';\nimport { readHarnessState } from '@agimon-ai/doompi-config/harnessState';\nimport { loadMajorModesConfig } from '@agimon-ai/doompi-config/majorModes';\nimport {\n assembleChildExtensions,\n assembleExtensions,\n CONTEXT_PACKAGES,\n filterHookDisabledLayers,\n PERSONA_ENTRY,\n} from '../services/extensionAssembler.ts';\nimport { compileExtensionSet, extensionSetKey, extensionSetManifestPath } from './extensionCompiler.ts';\nimport { ownEntry } from './modules/moduleResolution.ts';\nimport { selectWorkflowExtensionForProcess } from './resourceCollector.ts';\nimport { compileModeExtension, type ModeBuildSelection } from './runtimeBundle.ts';\nimport { resolveSyncLocation } from './syncLocation.ts';\nimport { createMapResolvers, readSyncState, type SyncState, syncDirectory, writeSyncState } from './syncState.ts';\nimport { BUNDLED_PRECOMPILE_STRATEGY, PRECOMPILE_STATE_VERSION } from './syncStateContract.ts';\n\nconst EXTENSION_CACHE_DIRECTORY = 'cache';\nconst MODE_DIST_DIRECTORY = 'dist';\nconst DOOM_ENTRY = 'doom';\n\nexport interface SyncedRuntimeBuild {\n bootstrap: string;\n bundles: Record<string, string>;\n manifests: string[];\n}\n\nfunction mergedEnvironment(recorded: Record<string, string>, current: NodeJS.ProcessEnv): NodeJS.ProcessEnv {\n const merged: NodeJS.ProcessEnv = { ...recorded };\n for (const [key, value] of Object.entries(current)) {\n if (value !== undefined) merged[key] = value;\n }\n return merged;\n}\n\nfunction selectionFor(\n state: SyncState,\n harness: ReturnType<typeof readHarnessState>,\n majorMode: string,\n mute: boolean,\n): ModeBuildSelection {\n return {\n majorMode,\n domains: [...state.selection.domains],\n profile: state.selection.profile,\n preset: state.selection.preset,\n mute,\n autoStop: false,\n agents: harness.agents,\n mcp: harness.mcp,\n };\n}\n\nfunction compilationStateChanged(previous: SyncState, current: SyncState): boolean {\n return (\n previous.inputsHash !== current.inputsHash ||\n JSON.stringify(previous.selection) !== JSON.stringify(current.selection) ||\n JSON.stringify(previous.resolved) !== JSON.stringify(current.resolved)\n );\n}\n\n/** Heavy graph bundling reserved for the private build phase of `doompi sync`. */\nexport async function buildSyncedRuntime(\n repoRoot: string,\n environment: NodeJS.ProcessEnv = process.env,\n homeDirectory: string = environment.HOME ?? os.homedir(),\n): Promise<SyncedRuntimeBuild> {\n const state = readSyncState(repoRoot, homeDirectory);\n if (!state) throw new Error(`DoomPi is not synchronized at ${repoRoot}. Run doompi sync.`);\n\n const runtimeEnvironment = mergedEnvironment(state.env, environment);\n const harness = readHarnessState(runtimeEnvironment);\n const majorModesConfig = loadMajorModesConfig(repoRoot);\n const resolvers = createMapResolvers(state.resolved);\n const workflowExtension = selectWorkflowExtensionForProcess(\n resolvers.optionalPackageEntry(CONTEXT_PACKAGES.workflow),\n resolvers.optionalPackageEntry(CONTEXT_PACKAGES.dispatcherWorkflow),\n runtimeEnvironment,\n );\n const base = {\n agents: harness.agents,\n autoStop: false,\n preset: state.selection.preset,\n mcpEntry: harness.mcp ? resolvers.optionalPackageEntry(CONTEXT_PACKAGES.mcp) : undefined,\n personaEntry: resolvers.ownEntry(PERSONA_ENTRY),\n workflowExtension,\n majorModesConfig,\n resolvers,\n };\n\n const location = resolveSyncLocation(repoRoot, homeDirectory);\n const directory = syncDirectory(repoRoot, homeDirectory);\n const cacheDirectory = path.join(directory, EXTENSION_CACHE_DIRECTORY);\n const outputDirectory = path.join(directory, MODE_DIST_DIRECTORY);\n const bundles: Record<string, string> = {};\n const manifests: string[] = [];\n\n for (const [majorMode, definition] of Object.entries(majorModesConfig.majorMode)) {\n const selectedLayers = filterHookDisabledLayers(definition.layers, harness.hooks);\n for (const mute of [false, true]) {\n const extensionPaths = [...assembleExtensions({ ...base, layers: selectedLayers, mute })].reverse();\n const childExtensionPaths = assembleChildExtensions({\n ...base,\n layers: selectedLayers,\n agents: false,\n mute: true,\n });\n const outputName = `${majorMode}${mute ? '.mute' : ''}`;\n try {\n const built = await compileModeExtension({\n repoRoot,\n selection: selectionFor(state, harness, majorMode, mute),\n extensionPaths,\n childExtensionPaths,\n skillPaths: harness.skillDirectories,\n pluginRoots: harness.pluginDirectories,\n outputName,\n cacheDirectory,\n outputDirectory,\n sharedCacheDirectory: location.sharedCacheDirectory,\n });\n bundles[extensionSetKey(extensionPaths)] = built.bundle;\n manifests.push(extensionSetManifestPath(extensionPaths, cacheDirectory, { outputDirectory, outputName }));\n } catch (error) {\n const detail = error instanceof Error ? error.message : String(error);\n process.stderr.write(`[doompi] could not precompile ${majorMode}${mute ? ' (mute)' : ''}: ${detail}\\n`);\n }\n }\n }\n\n const bootstrapEntries = [ownEntry(DOOM_ENTRY)];\n const bootstrapOptions = { outputDirectory, outputName: 'bootstrap' };\n const bootstrap = await compileExtensionSet(bootstrapEntries, cacheDirectory, {\n ...bootstrapOptions,\n repositoryRoot: repoRoot,\n sharedCacheDirectory: location.sharedCacheDirectory,\n });\n const bootstrapManifest = extensionSetManifestPath(bootstrapEntries, cacheDirectory, bootstrapOptions);\n manifests.push(bootstrapManifest);\n\n const current = readSyncState(repoRoot, homeDirectory);\n if (!current) throw new Error(`DoomPi synchronization disappeared while compiling ${repoRoot}`);\n if (compilationStateChanged(state, current)) {\n throw new Error(`DoomPi synchronization changed while compiling ${repoRoot}; restart Pi to use the new state.`);\n }\n\n const uniqueManifests = [...new Set(manifests)];\n await writeSyncState(\n repoRoot,\n {\n ...current,\n compiled: undefined,\n bundles,\n bootstrap,\n precompile: {\n version: PRECOMPILE_STATE_VERSION,\n strategy: BUNDLED_PRECOMPILE_STRATEGY,\n bootstrapEntry: bootstrapEntries[0],\n bootstrapManifest,\n manifests: uniqueManifests,\n },\n },\n homeDirectory,\n );\n return { bootstrap, bundles, manifests: uniqueManifests };\n}\n"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ const e={cliFailed:`doom_pi.cli_failed`,contextBuildFailed:`doom_pi.context_build_failed`,resourceCollectionFailed:`doom_pi.resource_collection_failed`,configLoadFailed:`doom_pi.config_load_failed`,launchFailed:`doom_pi.launch_failed`,compatibilityLaunchFailed:`doom_pi.compatibility_launch_failed`,harnessStateParseFailed:`doom_pi.harness_state_parse_failed`,hookFailed:`doom_pi.hook_failed`,hookRegistryReadFailed:`doom_pi.hook_registry_read_failed`,personaReadFailed:`doom_pi.persona_read_failed`,styleSystemRenderFailed:`doom_pi.style_system_render_failed`,majorModeUnavailable:`doom_pi.major_mode_unavailable`,profileLoadFailed:`doom_pi.profile_load_failed`,launchCompleted:`doom_pi.launch_completed`,projectTrustResolved:`doom_pi.project_trust_resolved`,majorModeSwitched:`doom_pi.major_mode_switched`,profileApplied:`doom_pi.profile_applied`};function t(e={}){let t,n=[],r=()=>(t??=import(`@agimon-ai/doompi-telemetry`).then(({createDoomTelemetry:t})=>t({serviceName:`doom-pi`,packageName:`@agimon-ai/doompi`,cwd:e.cwd,workspaceRoot:e.workspaceRoot,env:e.env,telemetryFactory:e.telemetryFactory,warn:e.warn,enableLogs:!0,enableTraces:!0})),t),i=async e=>{for(let t of n.splice(0))await e.recordEvent(t.event,t.attributes)};return{recordError:async(e,t,n)=>{let a=await r();await i(a),await a.recordError(e,t,n)},recordWarning:async(e,t,n)=>{let a=await r();await i(a),await a.recordWarning(e,t,n)},recordEvent:async(i,a)=>{if(e.deferSpans&&!t){n.push({event:i,attributes:a});return}await(await r()).recordEvent(i,a)},runInSpan:(n,i,a)=>e.deferSpans&&!t?a():r().then(e=>e.runInSpan(n,i,a)),flush:async()=>{if(!t&&n.length===0)return;let e=await r();await i(e),await e.flush()},shutdown:async()=>{if(!t&&n.length===0)return;let e=await r();await i(e),await e.shutdown()}}}function n(e){return{error:(t,n,r)=>void e.recordError(t,n,r),warn:(t,n,r)=>void e.recordWarning(t,n,r)}}exports.HARNESS_EVENT=e,exports.createHarnessTelemetry=t,exports.toFailureReporter=n;
2
+ //# sourceMappingURL=logSinkTelemetry.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logSinkTelemetry.cjs","names":[],"sources":["../../../src/adapters/telemetry/logSinkTelemetry.ts"],"sourcesContent":["import type { DoomTelemetry, DoomTelemetryOptions } from '@agimon-ai/doompi-telemetry';\n\nconst SERVICE_NAME = 'doom-pi';\nconst PACKAGE_NAME = '@agimon-ai/doompi';\n\nexport const HARNESS_EVENT = {\n cliFailed: 'doom_pi.cli_failed',\n contextBuildFailed: 'doom_pi.context_build_failed',\n resourceCollectionFailed: 'doom_pi.resource_collection_failed',\n configLoadFailed: 'doom_pi.config_load_failed',\n launchFailed: 'doom_pi.launch_failed',\n compatibilityLaunchFailed: 'doom_pi.compatibility_launch_failed',\n harnessStateParseFailed: 'doom_pi.harness_state_parse_failed',\n hookFailed: 'doom_pi.hook_failed',\n hookRegistryReadFailed: 'doom_pi.hook_registry_read_failed',\n personaReadFailed: 'doom_pi.persona_read_failed',\n styleSystemRenderFailed: 'doom_pi.style_system_render_failed',\n majorModeUnavailable: 'doom_pi.major_mode_unavailable',\n profileLoadFailed: 'doom_pi.profile_load_failed',\n launchCompleted: 'doom_pi.launch_completed',\n projectTrustResolved: 'doom_pi.project_trust_resolved',\n majorModeSwitched: 'doom_pi.major_mode_switched',\n profileApplied: 'doom_pi.profile_applied',\n} as const;\n\nexport type HarnessEventName = (typeof HARNESS_EVENT)[keyof typeof HARNESS_EVENT];\nexport type HarnessEventAttributes = Record<string, string | number | boolean>;\nexport type HarnessErrorSink = (event: HarnessEventName, error: unknown, attributes?: HarnessEventAttributes) => void;\n\nexport interface HarnessFailureReporter {\n error: HarnessErrorSink;\n warn: HarnessErrorSink;\n}\n\nexport interface HarnessTelemetryOptions {\n cwd?: string;\n workspaceRoot?: string;\n env?: NodeJS.ProcessEnv;\n telemetryFactory?: NonNullable<DoomTelemetryOptions['telemetryFactory']>;\n warn?: (message: string) => void;\n /** Run startup callbacks before loading the telemetry backend. */\n deferSpans?: boolean;\n}\n\nexport interface HarnessTelemetry {\n recordError(event: HarnessEventName, error: unknown, attributes?: HarnessEventAttributes): Promise<void>;\n recordWarning(event: HarnessEventName, error: unknown, attributes?: HarnessEventAttributes): Promise<void>;\n recordEvent(event: HarnessEventName, attributes?: HarnessEventAttributes): Promise<void>;\n runInSpan<T>(name: string, attributes: HarnessEventAttributes, callback: () => Promise<T>): Promise<T>;\n flush(): Promise<void>;\n shutdown(): Promise<void>;\n}\n\nexport function createHarnessTelemetry(options: HarnessTelemetryOptions = {}): HarnessTelemetry {\n let telemetryPromise: Promise<DoomTelemetry> | undefined;\n const pendingEvents: Array<{ event: HarnessEventName; attributes?: HarnessEventAttributes }> = [];\n const telemetry = (): Promise<DoomTelemetry> => {\n telemetryPromise ??= import('@agimon-ai/doompi-telemetry').then(({ createDoomTelemetry }) =>\n createDoomTelemetry({\n serviceName: SERVICE_NAME,\n packageName: PACKAGE_NAME,\n cwd: options.cwd,\n workspaceRoot: options.workspaceRoot,\n env: options.env,\n telemetryFactory: options.telemetryFactory,\n warn: options.warn,\n enableLogs: true,\n enableTraces: true,\n }),\n );\n return telemetryPromise;\n };\n const drainEvents = async (loaded: DoomTelemetry): Promise<void> => {\n for (const pending of pendingEvents.splice(0)) {\n await loaded.recordEvent(pending.event, pending.attributes);\n }\n };\n return {\n recordError: async (event, error, attributes) => {\n const loaded = await telemetry();\n await drainEvents(loaded);\n await loaded.recordError(event, error, attributes);\n },\n recordWarning: async (event, error, attributes) => {\n const loaded = await telemetry();\n await drainEvents(loaded);\n await loaded.recordWarning(event, error, attributes);\n },\n recordEvent: async (event, attributes) => {\n if (options.deferSpans && !telemetryPromise) {\n pendingEvents.push({ event, attributes });\n return;\n }\n await (await telemetry()).recordEvent(event, attributes);\n },\n runInSpan: (name, attributes, callback) => {\n // The launcher opts into this path for pre-spawn preparation. Lifecycle\n // events remain buffered until flush; failures still initialize the real\n // sink immediately so diagnostics are not lost.\n if (options.deferSpans && !telemetryPromise) return callback();\n return telemetry().then((loaded) => loaded.runInSpan(name, attributes, callback));\n },\n flush: async () => {\n if (!telemetryPromise && pendingEvents.length === 0) return;\n const loaded = await telemetry();\n await drainEvents(loaded);\n await loaded.flush();\n },\n shutdown: async () => {\n if (!telemetryPromise && pendingEvents.length === 0) return;\n const loaded = await telemetry();\n await drainEvents(loaded);\n await loaded.shutdown();\n },\n };\n}\n\nexport function toFailureReporter(telemetry: HarnessTelemetry): HarnessFailureReporter {\n return {\n error: (event, error, attributes) => void telemetry.recordError(event, error, attributes),\n warn: (event, error, attributes) => void telemetry.recordWarning(event, error, attributes),\n };\n}\n"],"mappings":"AAEA,MAGa,EAAgB,CAC3B,UAAW,qBACX,mBAAoB,+BACpB,yBAA0B,qCAC1B,iBAAkB,6BAClB,aAAc,wBACd,0BAA2B,sCAC3B,wBAAyB,qCACzB,WAAY,sBACZ,uBAAwB,oCACxB,kBAAmB,8BACnB,wBAAyB,qCACzB,qBAAsB,iCACtB,kBAAmB,8BACnB,gBAAiB,2BACjB,qBAAsB,iCACtB,kBAAmB,8BACnB,eAAgB,0BACjB,CA8BD,SAAgB,EAAuB,EAAmC,EAAE,CAAoB,CAC9F,IAAI,EACE,EAAyF,EAAE,CAC3F,OACJ,IAAqB,OAAO,+BAA+B,MAAM,CAAE,yBACjE,EAAoB,CAClB,YAAa,UACb,YAAa,oBACb,IAAK,EAAQ,IACb,cAAe,EAAQ,cACvB,IAAK,EAAQ,IACb,iBAAkB,EAAQ,iBAC1B,KAAM,EAAQ,KACd,WAAY,GACZ,aAAc,GACf,CAAC,CACH,CACM,GAEH,EAAc,KAAO,IAAyC,CAClE,IAAK,IAAM,KAAW,EAAc,OAAO,EAAE,CAC3C,MAAM,EAAO,YAAY,EAAQ,MAAO,EAAQ,WAAW,EAG/D,MAAO,CACL,YAAa,MAAO,EAAO,EAAO,IAAe,CAC/C,IAAM,EAAS,MAAM,GAAW,CAChC,MAAM,EAAY,EAAO,CACzB,MAAM,EAAO,YAAY,EAAO,EAAO,EAAW,EAEpD,cAAe,MAAO,EAAO,EAAO,IAAe,CACjD,IAAM,EAAS,MAAM,GAAW,CAChC,MAAM,EAAY,EAAO,CACzB,MAAM,EAAO,cAAc,EAAO,EAAO,EAAW,EAEtD,YAAa,MAAO,EAAO,IAAe,CACxC,GAAI,EAAQ,YAAc,CAAC,EAAkB,CAC3C,EAAc,KAAK,CAAE,QAAO,aAAY,CAAC,CACzC,OAEF,MAAO,MAAM,GAAW,EAAE,YAAY,EAAO,EAAW,EAE1D,WAAY,EAAM,EAAY,IAIxB,EAAQ,YAAc,CAAC,EAAyB,GAAU,CACvD,GAAW,CAAC,KAAM,GAAW,EAAO,UAAU,EAAM,EAAY,EAAS,CAAC,CAEnF,MAAO,SAAY,CACjB,GAAI,CAAC,GAAoB,EAAc,SAAW,EAAG,OACrD,IAAM,EAAS,MAAM,GAAW,CAChC,MAAM,EAAY,EAAO,CACzB,MAAM,EAAO,OAAO,EAEtB,SAAU,SAAY,CACpB,GAAI,CAAC,GAAoB,EAAc,SAAW,EAAG,OACrD,IAAM,EAAS,MAAM,GAAW,CAChC,MAAM,EAAY,EAAO,CACzB,MAAM,EAAO,UAAU,EAE1B,CAGH,SAAgB,EAAkB,EAAqD,CACrF,MAAO,CACL,OAAQ,EAAO,EAAO,IAAe,KAAK,EAAU,YAAY,EAAO,EAAO,EAAW,CACzF,MAAO,EAAO,EAAO,IAAe,KAAK,EAAU,cAAc,EAAO,EAAO,EAAW,CAC3F"}