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

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
package/README.md CHANGED
@@ -2,358 +2,229 @@
2
2
 
3
3
  **A coding agent that loads only the skills and tools you name.**
4
4
 
5
- Plugin systems scope what an agent knows. Nothing scopes what it can reach. Claude Code
6
- gives you `enableAllProjectMcpServers` and a static denylist, both repository-wide, so
7
- every session pays for every MCP server's tool schemas whether the task is a database
8
- migration or a landing page.
5
+ > It begins with one useful MCP server. Then another. Soon the agent fixing a heading
6
+ > wakes up with database tools, browser controls, and their small novel of schemas. This
7
+ > is our config.
9
8
 
10
- Doompi makes both a declared input. Three YAML files decide what a session loads, and
11
- `--explain` prints the bill before you launch.
9
+ Doompi is a configuration framework for [Pi](https://github.com/earendil-works/pi)
10
+ tailored for people whose agent has one MCP server too many. It turns extensions, skills,
11
+ MCP servers, and system prompts into config instead of background noise.
12
+
13
+ ![Doompi terminal interface showing tasks, Plan mode, and the Leader menu](https://cdn.jsdelivr.net/npm/@agimon-ai/doompi@latest/assets/doompi-tui.png)
14
+
15
+ Plugin systems scope what an agent knows. Nothing scopes what it can reach. Claude Code's
16
+ `enableAllProjectMcpServers` and static denylist are repository-wide. Doompi draws that
17
+ boundary around the session. Pick a major mode and some domains; add a profile if you want
18
+ one. Four YAML files decide what loads; `doompi --explain` tells you what got in, why, and
19
+ what it costs before launch.
20
+
21
+ It borrows its shape from [Doom Emacs Core](https://github.com/doomemacs/core): quick to
22
+ start, close to Pi, opinionated where defaults help, and easy to pull apart when they do
23
+ not. Use it as-is, build your own config on top, or raid it for parts.
12
24
 
13
25
  ## Install
14
26
 
15
27
  ```bash
16
- npm install -g @agimon-ai/doompi @earendil-works/pi-coding-agent
28
+ npm install -g @agimon-ai/doompi
17
29
  ```
18
30
 
19
- ## Quickstart
31
+ The package pins and installs the upstream Pi version used by `dpi`.
20
32
 
21
- ```bash
22
- doompi init # seed ~/.pi/.doom, once per machine
23
- mkdir .doom && cp ~/.pi/.doom/*.yaml .doom/ # the repository config Doompi reads
24
- doompi --explain # what would load, and why
25
- doompi # start a session
26
- ```
33
+ ## Try DoomPi without replacing your Pi setup
27
34
 
28
- `.doom/` is committed to git, so a checkout carries its own agent configuration. Edit a
29
- YAML file and the next launch picks it up.
35
+ `dpi` is the comparison runner. Use it to try DoomPi beside your current `pi` customization
36
+ before registering anything in Pi's settings:
30
37
 
31
38
  ```bash
32
- doompi --major-mode dev --domains development
33
- doompi --domains marketing --profile marketing
34
- doompi --domains analytics --explain
39
+ dpi init # create this repository's .doom configuration
40
+ dpi sync # resolve and synchronize the DoomPi experiment
41
+ dpi # run the DoomPi experiment
42
+ pi # run your existing Pi setup for comparison
35
43
  ```
36
44
 
37
- ## The three axes
38
-
39
- Doompi wraps [Pi](https://www.npmjs.com/package/@earendil-works/pi-coding-agent) and
40
- resolves a declared configuration into a session rather than asking you to wire one up.
41
- The three choices are independent: adding a domain requires no knowledge of major modes,
42
- and swapping a profile changes nothing about either.
45
+ `dpi init` creates `.doom/config.yaml`, `.doom/modes.yaml`, `.doom/domains.yaml`, and
46
+ `.doom/profiles.yaml` in the current repository. It preserves existing files unless you pass
47
+ `--force` and does not create or change `.pi/settings.json`.
43
48
 
44
- | Choice | Decides | Declared in |
45
- | -------------- | ------------------------------------ | --------------------- |
46
- | **Major mode** | what the agent is wrapped in | `.doom/modes.yaml` |
47
- | **Domains** | what it knows, and what it can reach | `.doom/domains.yaml` |
48
- | **Profile** | who it speaks as | `.doom/profiles.yaml` |
49
+ `dpi sync` writes DoomPi's generated state, package alias, and theme resource, but it does
50
+ not register DoomPi in either normal Pi settings file.
49
51
 
50
- A domain names plugins and an MCP allowlist together, so `--domains marketing` and
51
- `--domains development` are the same agent with different knowledge and a different reach,
52
- not two different agents. That is the lever for keeping context small, and
53
- [`--explain`](#minimal-context) prices it before you commit.
52
+ ### Sync storage and worktrees
54
53
 
55
- ## What is actually different
54
+ Generated sync artifacts are kept out of the repository at:
56
55
 
57
- **Compaction reads state, it does not summarize prose.** When the context fills, Doompi
58
- does not guess at coordination state from the transcript. It reads the live plan, task
59
- graph, and team snapshot, and commits them next to the summary as authoritative. The agent
60
- comes out the other side knowing what it was doing, what is still running, and who is doing
61
- what. See [Long runs](#long-runs).
56
+ ```text
57
+ ~/.pi/.doom/sync/<repo-label>--<repo-id-32hex>/
58
+ shared-cache/objects/<full-build-sha256>/
59
+ worktrees/<worktree-label>--<worktree-id-32hex>/
60
+ ```
62
61
 
63
- **Spec-driven and meta-prompting systems change what the agent is told. Doompi changes what
64
- it loads.** The two compose fine. This one is about the context window, not the prompt.
62
+ The repository identity comes from Git's canonical common directory, while each
63
+ worktree gets its own identity. Linked worktrees therefore share immutable,
64
+ content-addressed build objects but never share state, `dist`, manifests, staged
65
+ resources, or per-process `run` files. Runtime loading uses only verified artifacts
66
+ materialized in the current worktree directory; it never loads directly from the
67
+ shared cache. The global `~/.pi/.doom/*.yaml` configuration and persistent
68
+ `~/.pi/.doom/plugin-cache` behavior are unchanged.
69
+
70
+ Older releases may have written state under `<repository>/.pi/doom`. That location
71
+ is a read-only fallback only when the corresponding home-scoped state is absent.
72
+ `doompi sync --check` reports that migration is required, and `doompi sync` rebuilds
73
+ into the home-scoped worktree namespace rather than copying the legacy files. DoomPi
74
+ does not automatically delete legacy, orphaned, or unused generated directories.
75
+
76
+ For a fair comparison, `dpi` lets Pi merge the same ordinary settings from
77
+ `~/.pi/agent/settings.json` and `<repo>/.pi/settings.json`. It then overlays only these
78
+ DoomPi-owned values in memory:
79
+
80
+ ```json
81
+ {
82
+ "extensions": ["@agimon-ai/doompi", "!extensions/**"],
83
+ "themes": ["themes/doom-pi-dark.json"],
84
+ "theme": "doom-pi-dark",
85
+ "quietStartup": true
86
+ }
87
+ ```
65
88
 
66
- **One configuration serves two readers.** A human gets a keyboard surface that does not
67
- move; an autonomous agent gets a small tool surface and a context window that compacts
68
- itself.
89
+ Those four values are never written by `dpi`, including when Pi saves an unrelated option.
90
+ Every other value keeps Pi's normal global/project precedence and trust handling.
69
91
 
70
- ## Philosophy
92
+ When you are comfortable with DoomPi and no longer need the side-by-side experiment, register
93
+ it for normal Pi:
71
94
 
72
- **Give the agent fewer things to choose between.** [Major modes, domains, and
73
- profiles](#major-modes-domains-profiles) decide what loads, so a session carries the skills
74
- and MCP servers its domains named and nothing else. Whatever still overflows [compacts in
75
- the background](#long-runs).
95
+ ```bash
96
+ doompi init # seed ~/.pi/.doom and Pi integration resources
97
+ doompi sync # register DoomPi in normal Pi settings
98
+ pi # DoomPi now starts through the regular Pi command
99
+ ```
76
100
 
77
- **Shift the work onto deterministic workflows.** Autonomous runs are [GitHub Actions
78
- shaped](#workflows), with jobs, dependencies, steps, timeouts, and declared artifacts, so
79
- the same job resolves the same way every time.
101
+ `doompi` remains available as an explicit harness when you want one-run matrix flags:
80
102
 
81
- **Keep the keyboard ergonomic.** `SPC` is the whole surface, Spacemacs and Doom Emacs
82
- style, and [it opens only when the draft is empty](#leader-space), so a half-written prompt
83
- is never a casualty.
103
+ ```bash
104
+ doompi --major-mode dev --domains development
105
+ doompi --domains marketing --profile marketing
106
+ doompi --domains analytics --explain
107
+ ```
84
108
 
85
- **Batteries included, without the bloat.** Plan mode, tasks, teams, a supervised runner,
86
- voice, and workflows ship in the box, but [core is not a
87
- layer](#core-is-not-a-layer) and every opinion waits behind a layer or a domain.
109
+ ## Philosophy
88
110
 
89
- **One major mode, several minor modes.** A session runs under exactly one major mode, which
90
- is what selects its layers. [Plan, loop, and workflow](#minor-modes) are minor modes: you
91
- toggle them mid-session, they stack, and they report themselves on a shared status line.
111
+ An agent does not need every tool for every job. Doompi separates the base session from
112
+ the things you switch on for a while: modes choose behavior, domains choose subject
113
+ matter, and profiles choose a point of view.
92
114
 
93
- ## Two ways to run
115
+ ### Major and minor modes
94
116
 
95
- The launcher resolves your three choices per run and spawns Pi with them. Skills, agents,
96
- MCP configs, and the persona prompt are assembled into a temporary directory that is
97
- deleted on exit. Nothing is written back into the repository, and every session pays the
98
- resolution cost.
117
+ A major mode is the base config. It names the extension layers for development, marketing,
118
+ or whatever else you do. Define as many as you like; only one is active at a time, and you
119
+ can switch it without leaving the session.
99
120
 
100
- `doompi sync` is the other way in, and the Doom Emacs one. Resolve once, write the
101
- result where Pi looks, then run `pi` yourself.
121
+ Minor modes are battery-included switches inside that base. They start off, stack freely,
122
+ and keep their model tools and skills out of context until turned on. Doompi ships six:
102
123
 
103
- ```bash
104
- doompi init # seed ~/.pi/.doom, once per machine
105
- doompi build # warm the selected launch bundle and skill cache
106
- doompi sync # resolve the selection into .pi/
107
- pi # the agent
124
+ - **Help mode** — expose package-owned guidance only while you need it.
125
+ - **Plan mode** make the repository read-only while you agree on an approach.
126
+ - **Loop mode** run a prompt now, then run it again on a schedule.
127
+ - **Goal mode** keep one objective in view until it is done or dismissed.
128
+ - **Workflow mode** — run jobs with dependencies, timeouts, and artifacts.
129
+ - **Voice mode** — replace typing with local speech.
108
130
 
109
- doompi sync --check # exit non-zero when the synced config is out of date
110
- ```
131
+ ### Domains
111
132
 
112
- A synced session takes `--major-mode`, `--domains`, `--profile`, and `--mute` the same way
113
- the launcher does, and `/major-mode`, `/domains`, and `/profile` all switch in place: the
114
- extension set is composed on every load rather than frozen at startup, so a reload is
115
- enough.
116
-
117
- Both paths compose the extension set from the same function, `assembleExtensions`, which
118
- owns load order. Two things differ. A synced session forces `--auto-stop` off, and it
119
- reads mute from `DOOMPI_MUTE` instead of an argument.
120
-
121
- `doompi build` is the launcher warm-up step, analogous to `doom build`: it resolves the
122
- selected matrix, compiles its exact extension graph into one `.pi/doom/dist` ESM file,
123
- and warms the persistent skill manifest without starting Pi or changing
124
- `.pi/settings.json`. A sidecar manifest retains every original extension and exact
125
- `SKILL.md` path, so resource discovery never depends on the bundle's location.
126
- Launch still builds on a cache miss, so the command is optional; run it after installing
127
- or upgrading Doom packages when first-input latency matters.
128
-
129
- Syncing does not disturb the launcher. Pi merges the extensions a project declares with
130
- the ones passed on the command line, so the synced entry stands down whenever it sees the
131
- composed set already there, which is what the launcher and every detached subagent pass.
132
-
133
- ## For humans
134
-
135
- ### Leader Space
136
-
137
- `@agimon-ai/doompi-ui` owns the leader state machine, rendering, conflict handling, and the
138
- core bindings.
139
-
140
- Space opens the leader **only when the draft is empty**. With text in the editor, space is
141
- a space. `ctrl+space` opens the leader either way, and the draft survives the sequence, so
142
- you never lose a half-written prompt to a keystroke. That is the space the human keeps.
143
-
144
- Inside a sequence: `escape` cancels, `backspace` pops one segment, and any key that
145
- matches nothing cancels. There is no partial state to get stuck in.
146
-
147
- Core groups. Every level of the map renders in leader-key alphabetical order, so the table
148
- below is the order you see:
149
-
150
- | Key | Group | Bindings |
151
- | --- | --------- | ---------------------------------------- |
152
- | `e` | extension | `e` external editor, `t` tools browser |
153
- | `h` | help | `h` hotkeys, `l` log metrics |
154
- | `m` | models | `m` select, `n` next, `t` thinking level |
155
- | `q` | quit | `q` exit |
156
- | `s` | sessions | `f` fork, `n` new, `r` resume, `t` tree |
157
-
158
- `t` is deliberately left out of core at the root and reserved for doom-task.
159
-
160
- Optional feature extensions own the bindings for their own commands. The UI never
161
- hardcodes a binding for a layer that may not be loaded, so a group appears only while its
162
- extension is loaded:
163
-
164
- | Chord | Source | Opens |
165
- | -------------------- | ----------------------------- | ------------------------------ |
166
- | `SPC a` | `@agimon-ai/doompi-team` | subagent fleet |
167
- | `SPC h l` | `@agimon-ai/doompi-log` | log metrics |
168
- | `SPC l s`, `SPC l l` | `@agimon-ai/doompi-loop` | start loops, list/stop loops |
169
- | `SPC p p/c/d/f` | `@agimon-ai/doompi-plan` | plan normal/cancel/debug/fable |
170
- | `SPC t t` | `@agimon-ai/doompi-task` | tasks |
171
- | `SPC r r` | `@agimon-ai/doompi-runner` | background processes |
172
- | `SPC v v` | `@agimon-ai/doompi-voice` | record or transcribe |
173
- | `SPC w w/l/r` | `@agimon-ai/doompi-workflow` | launch/manage/recover |
174
- | `SPC e f` | `@agimon-ai/doompi-file-edit` | session edits |
175
- | `SPC e s` | `@agimon-ai/doompi` | skills catalog |
176
- | `SPC e c` | `@agimon-ai/doompi-ui` | config panel (core binding) |
177
-
178
- Contributions go through the public `@agimon-ai/doompi-ui/leader` API:
179
-
180
- ```ts
181
- registerDoomLeaderContribution(pi, {
182
- source: '@agimon-ai/doompi-log',
183
- bindings: [
184
- {
185
- id: 'log.metrics',
186
- path: [
187
- { key: 'h', label: 'help', order: 70 },
188
- { key: 'l', label: 'logs', detail: 'telemetry' },
189
- ],
190
- command: { name: 'log-metrics' },
191
- },
192
- ],
193
- });
194
- ```
133
+ A domain is a named group of Pi plugins. It carries the skills and MCP servers for one
134
+ kind of work, and `/domains` switches it while the session is running.
195
135
 
196
- A path excludes the leading `SPC`. The UI turns this into `SPC h l`, dispatches
197
- `/log-metrics` through the normal editor submission path, and preserves the draft. A
198
- binding carries either a `command` descriptor or an `action` name, never both. Commands
199
- stay owned by the extension that registered the slash command; actions route back to the
200
- contributor through `registerDoomLeaderActionHandlers`, which is what doom-plan uses.
201
-
202
- The map is deterministic because the registry is strict:
203
-
204
- - Keys are a single lowercase alphanumeric character, paths are at most four segments.
205
- - Shared group prefixes must agree on label, detail, and order, or the contribution is
206
- rejected.
207
- - Exact chord conflicts are rejected rather than silently overridden. A conflict in a core
208
- binding throws; a conflict from a contributor produces a diagnostic and a warning.
209
- - Re-registering the same `source` replaces that source's complete binding set. Registering
210
- an empty set removes it.
211
- - Rebuilds sort by source name then binding id, so load order does not affect the result.
212
- - Options render in leader-key alphabetical order at every level. A segment's `order` is
213
- group identity that shared prefixes must agree on, not a display position.
214
-
215
- Registration runs over Pi's shared extension event bus with a 250 ms timeout. A timeout is
216
- swallowed, so an extension loaded without the UI degrades quietly instead of failing.
217
-
218
- ### Major modes, domains, profiles
219
-
220
- Three choices, three files, committed to git. They are independent. Adding a domain
221
- requires no knowledge of major modes, and swapping a profile changes nothing about either.
222
-
223
- | Choice | Loads | Declared in |
224
- | --------------- | ------------------------------------- | --------------------- |
225
- | **Major modes** | a named set of layers | `.doom/modes.yaml` |
226
- | **Domains** | plugins, meaning skills and MCP | `.doom/domains.yaml` |
227
- | **Profiles** | a persona and the brand it speaks for | `.doom/profiles.yaml` |
228
-
229
- **Layers are protection and steering.** A layer is a set of Pi extensions plus a set of
230
- hook groups. The extensions add behavior the agent runs with; the hooks fire around its
231
- tool calls and can block it, warn it, or steer it back. You define the set you want, along
232
- the lines of `guardrails`, `lint`, `code-intel`, `team`, `plan-mode`, `runner`, and
233
- `ask-user`. The hooks themselves live in `.doom/hooks.yaml`, one registry shared by every
234
- frontend, where a group is either `core` and always loads, or is pulled in by whichever
235
- layer wants it.
236
-
237
- **A major mode is the one you actually pick.** You do not assemble layers one by one at the
238
- prompt. You select one named major mode with `--major-mode <name>`, and
239
- `.doom/modes.yaml` says which layers it contains. A session has exactly one, the way
240
- an Emacs buffer has exactly one major mode. The file can choose the fallback without
241
- renaming that mode:
136
+ Plugins are catalogued once and domains refer to their names. A configured root may be a
137
+ Codex-compatible marketplace or a folder whose direct children are plugins, so a repository
138
+ with many plugins does not need one entry per directory:
242
139
 
243
140
  ```yaml
244
- defaultMajorMode: minimal
245
- majorMode:
246
- minimal: [guardrails, team]
247
- copilot: [guardrails, team, plan-mode, runner]
248
- ```
249
-
250
- An explicit `--major-mode` wins, then `DOOMPI_MAJOR_MODE`, then
251
- `defaultMajorMode`. Omitting the field preserves the compatible `copilot` fallback.
141
+ plugins:
142
+ roots: [plugins]
143
+ entries:
144
+ remote-review:
145
+ source: url
146
+ url: https://github.com/acme/review-plugin.git
147
+ ref: v1.2.0
252
148
 
253
- The flag is `--major-mode` and not `--mode` because Pi already owns `--mode` for its output
254
- mode (`text`, `json`, `rpc`), and for any other value it consumes the argument and ignores
255
- it without a diagnostic. Use `--output-format` for Pi's output mode.
256
-
257
- **Domains are plugins, and a plugin is skills plus MCP.** Selecting a domain decides which
258
- plugins contribute their skills and subagents, which MCP servers the session can reach,
259
- and whether the always-on shared skills apply. A domain can take a whole plugin or a named
260
- subset of one. This is the choice that decides how much the agent can see, so it is also
261
- the lever for keeping context small. Defaults are plural because domains compose:
262
-
263
- ```yaml
264
- defaultDomains: [development, qa]
265
149
  domains:
266
150
  development:
267
- plugins: [plugins/development]
268
- qa:
269
- plugins: [plugins/qa]
151
+ description: Implementation and code-review tools.
152
+ plugins: [pi-development, remote-review]
270
153
  ```
271
154
 
272
- Explicit `--domain` or `--domains` flags win, then `DOOMPI_DOMAINS`, then
273
- `defaultDomains`.
274
-
275
- **Profiles are a persona and a brand.** `.doom/profiles.yaml` points at a directory under
276
- `agents/<brand>/<person>/`, and doom concatenates that person's `profile.md`, `SOUL.md`,
277
- and `AGENTS.md` into the system prompt: identity and the brand it represents, then voice,
278
- then role and rules. A profile also carries environment defaults, and nothing else. It
279
- cannot select domains, major modes, models, presets, or policy, and an exported value
280
- always beats a profile default.
155
+ DoomPi also checks personal and repository Codex marketplace layouts. Marketplace IDs use
156
+ `plugin@marketplace`. Remote Git and npm sources are downloaded once into the persistent
157
+ `~/.pi/.doom/plugin-cache` directory. Cache entries are reused until their source descriptor
158
+ changes; use a Git SHA or exact npm version for reproducible installs. Home and repository
159
+ catalogs merge, and repository names replace matching home names.
281
160
 
282
- Switching is live. `/major-mode`, `/domains`, and `/profile` re-resolve into the running
283
- session and reload. A domain or profile switch always applies in place. A major mode switch
284
- applies in place too unless the new mode changes which extension packages load, since Pi
285
- freezes the `--extension` set at construction; the picker tells you when a relaunch is
286
- needed.
161
+ A blog is not one task. Research it, draft it, make the assets, then review it. Turn on the
162
+ `visual` domain while making assets; the other three steps have no reason to carry it.
287
163
 
288
- ### Minor modes
164
+ ### Profile
289
165
 
290
- A major mode is chosen once per session and selects layers. Minor modes are the opposite:
291
- you toggle them while the session runs, several can be on at once, and none of them changes
292
- which extensions are loaded.
166
+ An LLM has no house style until you give it one. A profile can supply a narrative, brand
167
+ rules, or a different voice. It is optional; no profile is a perfectly good profile.
293
168
 
294
- | Minor mode | Toggle | Owned by |
295
- | ---------- | -------------------- | ---------------------------- |
296
- | plan | `/plan`, `SPC p` | `@agimon-ai/doompi-plan` |
297
- | loop | `/loop`, `SPC l` | `@agimon-ai/doompi-loop` |
298
- | workflow | `/workflow`, `SPC w` | `@agimon-ai/doompi-workflow` |
169
+ Profile roots remove the need to list every persona folder. A root may itself contain the
170
+ persona files, or its direct-child folders become profiles named after those folders. DoomPi
171
+ recognizes `profile.md`, `SOUL.md`, and `AGENTS.md` and never searches deeper directories.
299
172
 
300
- Each one publishes a label to a shared `MODES` line rather than painting a row of its own,
301
- so three enabled modes cost one line rather than three. The registry is
302
- `@agimon-ai/doompi-extension-contracts/mode`.
173
+ ```yaml
174
+ profiles:
175
+ roots: [agents/acme]
176
+ entries:
177
+ editor:
178
+ persona: agents/special/editor
179
+ env:
180
+ EDITOR_MODE: strict
181
+ ```
303
182
 
304
- ## For autonomous agents
183
+ Roots from the home and repository files accumulate relative to their declaring config.
184
+ Repository discoveries replace same-named home discoveries. Explicit entries override
185
+ discovery and can add string environment defaults; repository entries replace matching home
186
+ entries. Select one at launch with `--profile editor` or switch with `/profile`.
305
187
 
306
- ### Minimal context
188
+ ## What this buys you
307
189
 
308
- Fewer options, better choices. Domains cut the skill list and the tool list together. A
309
- domain that names three plugins gives the agent those plugins' skills and nothing else,
310
- and one with an `mcp` allowlist reaches only the servers and proxy upstreams it names.
190
+ Every tool schema and skill name competes for the same context. Loading less has two
191
+ immediate effects:
311
192
 
312
- `--explain` prints what any combination costs before you launch it, and ends with the bill:
193
+ 1. You spend fewer tokens before the work begins.
194
+ 2. The model has fewer plausible-but-wrong tools and skills to choose from.
313
195
 
314
- ```
315
- $ doompi --domains development --explain
316
- ...
317
- skills: 24 (from 3 directories)
318
-
319
- context cost (tokens)
320
- skills prompt 3,772 always on
321
- persona 0 always on
322
- startup total 3,772
323
- skill bodies 54,145 read on demand
324
-
325
- Excludes MCP tool schemas, which the servers only report once connected,
326
- and skills contributed by extensions, which register after startup.
327
- ```
196
+ The savings get larger when each workflow job starts with its own config instead of
197
+ inheriting the last job's toolbox.
328
198
 
329
- Every figure comes from files on disk, so two runs of the same selection print the same
330
- numbers and you can reproduce them on your own repository rather than trusting these.
199
+ ### Copilot
331
200
 
332
- MCP tool schemas are the one cost this cannot price. They exist only after a server
333
- connects, and pricing them would mean spawning every configured server on a command meant
334
- to be instant. Scoping them is still a declared choice; the saving is just not counted here.
201
+ I got tired of remembering slash commands, so `SPC` is the map. It opens only when the
202
+ draft is empty; a space in the middle of a prompt remains a space. Press it, read the
203
+ choices, then press the next key.
335
204
 
336
- A domain without an `mcp` key admits everything, and one unscoped domain in the selection
337
- unfilters the rest. Scoping applies only when every selected domain declares it.
205
+ When the keyboard is the wrong tool, autonomous Voice mode keeps the conversation going.
206
+ You can talk to the agent while doing the chores instead of carrying a laptop around the
207
+ house, and the primary agent can speak its own opening, milestone, and final updates.
338
208
 
339
- A domain can also take a named subset of one plugin's skills, by name or glob.
209
+ ### Autopilot
340
210
 
341
- ### Workflows
211
+ Copilot helps while you are present. Loop and Workflow keep work moving when you are not.
212
+ Together they can dispatch structured jobs from one live session.
342
213
 
343
- Long autonomous work runs as workflows, in the shape a GitHub Actions user already knows:
344
- `on:`, `jobs:`, `needs:`, `steps:`, timeouts, and declared artifacts.
214
+ #### Workflows
345
215
 
346
- The payoff is that every step names the session it wants. A workflow is where
347
- `--major-mode`, `--domains`, and `--profile` stop being things you type and become part of
348
- the definition, so one run can hand each job exactly the context that job needs and nothing
349
- else:
216
+ GitHub Actions already has a decent vocabulary for long jobs, so Doompi reuses it. Each job
217
+ declares the Doompi session it wants. Here, implementation gets coding tools; the release
218
+ note waits for it and gets marketing context plus a brand voice:
350
219
 
351
220
  ```yaml
221
+ on:
222
+ workflow_dispatch:
223
+
352
224
  jobs:
353
225
  implement:
354
- needs: intake
355
226
  steps:
356
- - name: Implement
227
+ - name: Build the feature
357
228
  timeout-minutes: 180
358
229
  artifacts: [implementation/report.md]
359
230
  interactiveRun:
@@ -361,10 +232,10 @@ jobs:
361
232
  doompi --major-mode dev --domains development --auto-stop \
362
233
  --cwd "$PWD" "$JOB_SYSTEM_PROMPT"
363
234
 
364
- announce:
235
+ release-note:
365
236
  needs: implement
366
237
  steps:
367
- - name: Draft the release note
238
+ - name: Write the release note
368
239
  timeout-minutes: 30
369
240
  artifacts: [marketing/release-note.md]
370
241
  interactiveRun:
@@ -374,208 +245,322 @@ jobs:
374
245
  --cwd "$PWD" "$JOB_SYSTEM_PROMPT"
375
246
  ```
376
247
 
377
- Two jobs, two different agents. `implement` runs under a major mode carrying lint and code
378
- intelligence and a domain carrying coding skills. `announce` drops both, takes a domain
379
- scoped to a handful of MCP servers, and adds a profile, so the release note comes out in a
380
- named persona's voice rather than the agent's own. Neither job can drift into the other's
381
- context, and the same job resolves the same way on every run.
382
-
383
- The one real departure from GitHub Actions is `extends:`, which lets a job inherit shared
384
- setup from a named template rather than repeating it.
248
+ #### Loop
385
249
 
386
- The engine itself is not in this package. `@agimon-ai/doompi-workflow` provides the in-session
387
- surface on `SPC w`, and its dispatcher exposes `list_workflows` to any session but scopes
388
- `launch_workflow` to the root session, so a subagent can look but not spawn. The `workflow`
389
- hook group is `core`, so it loads in any major mode.
250
+ Workflow definitions are exposed like skills, so the agent can choose one for the job. A
251
+ loop can send a subagent to fetch the next task, then dispatch the workflow that matches
252
+ it. One session becomes the dispatcher instead of the place every job has to fit.
390
253
 
391
- ### Long runs
254
+ ## Features
392
255
 
393
- Tasks, teams, runners, and compaction share one working state, so a long autonomous run
394
- does not lose its place.
256
+ Doompi is a distribution, not one giant extension. Each package owns one job; shared TUI
257
+ and session contracts make them behave like one. Use the defaults together or replace
258
+ them one at a time.
395
259
 
396
- - **Tasks** (`SPC t`) are a file-backed graph with dependencies and delegation, not a
397
- scratch list.
398
- - **Teams** (`SPC a`) run named subagents asynchronously against that same board,
399
- sequentially or in parallel.
400
- - **Runners** (`SPC r`) replace the bash tool and detach long commands, then reconcile
401
- them afterwards.
402
- - **Compaction** runs on a three-pass ladder in a worker thread, so the session never
403
- blocks on it.
260
+ ### Configuration and composition
404
261
 
405
- The integration is the point. When compaction summarizes, it does not guess at
406
- coordination state: it reads the live plan, tasks, and team snapshot, and commits them
407
- next to the summary as authoritative rather than leaving them to be reconstructed from
408
- prose. Detached runners reconcile themselves once the context has been rewritten. The
409
- agent comes out the other side knowing what it was doing, what is still running, and who
410
- is doing what.
262
+ [`@agimon-ai/doompi`][pkg-doompi] is both an extension and the command-line config compiler. `dpi init`
263
+ creates repository config for an isolated experiment, while `doompi init` creates the personal
264
+ config and registers the permanent Pi integration. The sync commands resolve every major mode
265
+ and domain into a distribution Pi can load quickly. A large major mode with 15 extensions adds
266
+ only 400 ms of code startup time.
411
267
 
412
- ## Core is not a layer
268
+ ### Leader key
413
269
 
414
- Telemetry, workflow orchestration, the dispatch loop, and editor plumbing ship
415
- unconditionally and are absent from `modes.yaml` on purpose. They are the reason the
416
- harness exists, so making them optional would only create broken configurations. Layers
417
- are for opinions, not foundations.
270
+ [`@agimon-ai/doompi-ui`][pkg-doompi-ui] turns `SPC` into a map of the available commands. It stays out of
271
+ the way when a draft is not empty, and other packages contribute bindings through one
272
+ leader API instead of hardcoding their own menus.
418
273
 
419
- ## Who owns what
274
+ ### Agent team
420
275
 
421
- Doom Pi is a meta-package. It depends on the Doom closure (`@agimon-ai/doompi-*`) and composes
422
- it, and it depends on nothing that belongs to the repository consuming it. The Agiflow and
423
- Agent Hooks extensions are consumer-owned: the repository declares them in its own
424
- `.doom/modes.yaml` and installs them itself, and they load after the Doom packages.
276
+ [`@agimon-ai/doompi-team`][pkg-doompi-team] runs named subagents asynchronously against a shared task board.
277
+ They can work in parallel, message one another, and use the model policy attached to the
278
+ selected Team package entry. `SPC a l` lists available agents; `SPC a r` opens current-session runs and
279
+ their controls.
425
280
 
426
- That split decides where a specifier resolves. A package the repository declares resolves
427
- from the repository root, walking its module chain; anything that does not resolve there
428
- falls back to what ships with the installed meta-package. So a consumer can add a layer
429
- without Doom Pi knowing the package exists, and Doom Pi can ship its own closure without
430
- the consumer declaring it.
281
+ ### Tasks
431
282
 
432
- Package resources follow the same rule: the UI theme is shipped by `@agimon-ai/doompi-ui`
433
- and the workflow-recovery skill by `@agimon-ai/doompi-workflow`, each declared in its own
434
- manifest, so an installed package is discoverable without this checkout. Every Doom package
435
- publishes through an explicit `files` allowlist, which keeps repository material such as
436
- `docs/ideas/` out of any tarball.
283
+ [`@agimon-ai/doompi-task`][pkg-doompi-task] keeps a task graph on disk, not a disposable checklist in the
284
+ transcript. Dependencies and delegation survive compaction, and work can be handed to a
285
+ subagent—including a smaller model when the job does not need the expensive one. Seeded
286
+ `minimal` and `copilot` modes select its `task` layer; omit that layer when a major mode
287
+ should not expose the task tool.
437
288
 
438
- A repository is recognised by a Doom or trusted Pi marker: a `.doom/` directory, or an
439
- existing `.pi/settings.json`. No Nx, pnpm workspace, or plugins profile is required, so a
440
- plain repository that installs the package can launch it.
289
+ ### Runner
441
290
 
442
- ## Lazy config
291
+ [`@agimon-ai/doompi-runner`][pkg-doompi-runner] replaces Pi's blocking `bash` tool with
292
+ supervised command execution in the generated default Copilot mode. Short commands still return
293
+ inline; commands that pass the configurable threshold—60 seconds by default—move into the
294
+ background with durable logs. Use `background: true` for an immediate detached run or
295
+ `interactive: true` when the command needs terminal input. Runner IDs, controls, and logs survive
296
+ compaction and context rewrites and remain available through Runner Space at `SPC r r` or the
297
+ `doom-runner` CLI. Platform-specific RMUX binaries are selected automatically, with a fallback
298
+ when RMUX is unavailable. Custom modes must include the `runner` layer to replace `bash`.
443
299
 
444
- Under the launcher, everything is resolved per run and nothing is written back into the
445
- repository. Editing a YAML file is the entire change.
300
+ ### Auto-compact
446
301
 
447
- `doompi sync` trades that for a pinned setup: the same resolution runs once and lands in
448
- `.pi/doom/`, and a Pi session reads it instead of recomputing it. Edit a YAML file and the
449
- next session says the config changed, the way doom emacs asks you to re-run `doom sync`.
302
+ Ordinary compaction waits for one summary to save an overgrown session.
303
+ [`@agimon-ai/doompi-autocompact`][pkg-doompi-autocompact] leaves checkpoints instead:
450
304
 
451
- `doompi init` seeds `~/.pi/.doom` with all five file names, but only `config.yaml` from
452
- there is read at runtime. Major modes, domains, profiles, and hooks are always read from the
453
- repository `.doom/`, so the other four seeded files affect nothing beyond the inputs hash.
305
+ 1. At 50%, it writes the first compact summary.
306
+ 2. Later, it combines that summary with the messages since; the model decides whether the
307
+ result is ready to use.
308
+ 3. On the third pass, it combines them again and forces compaction.
454
309
 
455
- Either way the hook registry compiles to the files other frontends read before any harness
456
- code runs, and `doompi sync` regenerates them.
310
+ The work runs off-thread. Each checkpoint carries the live plan, task graph, team state,
311
+ and user request with it, so coordination does not have to be guessed back out of prose.
457
312
 
458
- ## Other frontends
313
+ ### Help mode
459
314
 
460
- Pi is the primary frontend. Claude Code, Codex, and Antigravity run through
461
- `doompi compat <provider>` and share the same domain config as far as each can:
315
+ [`@agimon-ai/doompi-help`][pkg-doompi-help] keeps package guidance out of the default prompt. A fresh parent
316
+ session performs no Help retrieval and exposes no Help skills. Use `SPC h e`, or the existing
317
+ `minor_mode` client in headless sessions, to activate the package indexes; use the same action
318
+ to deactivate them before the next interaction. The initial contributors expose
319
+ `doompi-help`, `workflow-help`, and `doompi-config-help`. Child sessions never assemble the
320
+ Help runtime.
462
321
 
463
- | | Pi | Claude Code | Codex | Antigravity |
464
- | ------------------- | ----------------- | ----------------------------- | ------------------------ | ------------------- |
465
- | domains to plugins | yes | yes | yes | yes |
466
- | hooks | from the registry | generated `settings.json` | generated `hooks.json` | copied `hooks.json` |
467
- | MCP servers | scoped | scoped | unscoped | scoped |
468
- | MCP proxy upstreams | scoped | scoped | scoped | scoped |
469
- | major mode | packages + hooks | shared hook groups | shared hook groups | shared hook groups |
470
- | personas | system prompt | `--append-system-prompt-file` | `developer_instructions` | no |
322
+ ### MCP
471
323
 
472
- Compatibility frontends use the selected major mode for shared hook state. Layer packages
473
- and Pi extensions are loaded only by Pi.
324
+ [`@agimon-ai/doompi-mcp`][pkg-doompi-mcp] is the gate between a session and its servers. It reads `.mcp.json`
325
+ and other common formats, then exposes only the servers and proxy upstreams allowed by the
326
+ selected domains. Switch domains and that boundary reloads with them.
474
327
 
475
- Antigravity is the odd one. It reads its configuration from the workspace and from the
476
- user's home directory rather than from arguments, so every selection is written to disk
477
- before launch and reverted when it is no longer selected. Everything the harness writes is
478
- tracked in a managed-state file, so a file you created by hand is never silently replaced.
479
- Its hooks are copied from `.antigravity-local/hooks.json`, which is maintained by hand
480
- rather than generated from the registry.
328
+ ### Ask user question
481
329
 
482
- Where a concept has no equivalent, it is left out rather than approximated.
330
+ [`@agimon-ai/doompi-user-feedback`][pkg-doompi-user-feedback] gives the agent a structured question that actually
331
+ waits for an answer. In autonomous Voice mode it skips the modal, narrates the choices,
332
+ and accepts the next spoken response as an ordinary user message.
483
333
 
484
- ## Files
334
+ ### Logging and telemetry
485
335
 
486
- All Doompi configuration lives in `.doom/`, committed to git.
336
+ Doompi telemetry records counters and spans, never prompt text or file content, in a local
337
+ SQLite database by default. `SPC h l` opens the metrics, and
338
+ [`@agimon-ai/log-sink-mcp`][pkg-log-sink-mcp] gives the agent CLI tools for inspecting its own
339
+ runs.
487
340
 
488
- ```
489
- .doom/
490
- config.yaml projectTrust, plus the selection sync pins
491
- domains.yaml domains, plus aliases for shorthand bundles
492
- modes.yaml layer definitions and the named major modes built from them
493
- hooks.yaml canonical hooks for all three frontends
494
- profiles.yaml persona and environment profiles
495
-
496
- agents/<product>/<person>/ persona source, referenced never copied
497
- ```
341
+ ### Plan mode
498
342
 
499
- `doompi sync` writes into `.pi/`:
343
+ A promise to "only plan" is not a permission boundary. [`@agimon-ai/doompi-plan`][pkg-doompi-plan] makes the
344
+ repository read-only while the agent explores, persists the plan, and hands it back for
345
+ approval. Use `SPC p p` for normal planning, `SPC p d` for debug planning, `SPC p f` for
346
+ the Fable flow, and `SPC p e` to exit. Turn it on when the approach should be settled
347
+ before the files move.
500
348
 
501
- ```
502
- .pi/settings.json committed; sync owns extensions, themes, and theme
503
- .pi/doom/ generated and gitignored
504
- state.json environment, resolved paths, and the inputs hash
505
- mcp.json mcp-extension.ts agents/ persona.md doom-pi-dark.json
506
- run/<pid>/ one session's live switches, never the baseline
507
- harness-state.json that session's own state, owned by its process
508
- ```
349
+ ### Loop mode
509
350
 
510
- ### One owner for the state
351
+ [`@agimon-ai/doompi-loop`][pkg-doompi-loop] is an in-session scheduler. It runs a prompt immediately and then
352
+ repeats it on an interval; several loops can coexist. Use `SPC l s` to start one and
353
+ `SPC l l` to list or stop them. It is for recurring checks and prompts that belong to the
354
+ current session.
511
355
 
512
- The resolved matrix a session runs on is a file, not a set of variables.
513
- `DOOMPI_STATE` points at it, and everything else the harness exports is derived from
514
- it: a projection published for the readers that can only see an environment, which are bash
515
- hooks, the shell launchers, `agent-hooks`, and any process spawned by any of them. Two
516
- fields never appear there at all, because nothing outside `@agimon-ai/doompi-config` reads
517
- them and every hook spawn would otherwise copy them: the plugin hook list and the profile's
518
- environment defaults.
356
+ ### Goal mode
519
357
 
520
- Ownership is per process, and that is the point. Doom Team subagents run detached, from an
521
- environment snapshot, and can outlive the parent that spawned them. So a spawner writes the
522
- child a file of its own in that run's directory, and any process that finds a file it does
523
- not own copies it before its first write. A child can neither corrupt its parent's session
524
- nor lose its own when the parent cleans up.
358
+ [`@agimon-ai/doompi-goal`][pkg-doompi-goal] pins one objective to the session until it completes or you end
359
+ it. Use `SPC g g` for status, `SPC g s` to start, `SPC g e` to end, and `SPC g p` for
360
+ history. Finished goals leave the prompt and tools behind but remain in history when you
361
+ want to restart one.
525
362
 
526
- It also regenerates the two hook files the other frontends read before any harness code
527
- runs, which live outside `.pi/`:
363
+ ### Workflow mode
528
364
 
365
+ [`@agimon-ai/doompi-workflow`][pkg-doompi-workflow] runs GitHub Actions-style job graphs with dependencies,
366
+ timeouts, artifacts, and a separate Doompi session for each step. Use `SPC w w` to launch,
367
+ `SPC w l` to manage, `SPC w r` to recover a failed run, and `SPC w e` to give the agent
368
+ workflow tools or take them back. It is for work that needs hard job boundaries and
369
+ explicit handoffs rather than one long conversation.
370
+
371
+ ### Voice mode
372
+
373
+ [`@agimon-ai/doompi-voice`][pkg-doompi-voice] records and transcribes speech locally; audio stays on the
374
+ machine. `SPC v v` is one-shot manual dictation and never enables Voice tools. `SPC v a`
375
+ toggles autonomous capture; only its exact-active TUI session receives the two Voice
376
+ façades plus the standalone `narrate` tool.
377
+
378
+ While `narrate` is available, the primary agent calls it before every user-facing final
379
+ response. One concise spoken answer is enough for a short conversation or clarification;
380
+ longer work also gets an opening and meaningful milestone calls. Each ready-to-speak
381
+ utterance is limited to 4,096 characters, waits for physical playback, and returns
382
+ `completed`, `interrupted`, `superseded`, or `failed`.
383
+
384
+ If the agent never attempts `narrate` during a run, exact-active Voice speaks one sanitized
385
+ turn-end fallback rather than leaving the final response silent. Finals of at most 320
386
+ characters use deterministic speech; longer finals use the configured
387
+ `voice.autoCapture.model` for one bounded summary, with deterministic degradation on
388
+ failure or timeout. Any `narrate` attempt suppresses this safety net, so it cannot duplicate
389
+ or retry direct speech. Voice does not generate automatic intent, plan, milestone, or tool
390
+ progress narration. External task, workflow, and user-feedback narration remains
391
+ available, and the same model continues to provide bounded command correction.
392
+
393
+ ## Configuration
394
+
395
+ Doompi reads four configuration files:
396
+
397
+ - `config.yaml` defines runtime settings such as trust, editor, planning, and voice behavior.
398
+ - `modes.yaml` defines extension layers and major modes.
399
+ - `domains.yaml` catalogs plugins and sets session access.
400
+ - `profiles.yaml` supplies persona files and environment defaults.
401
+
402
+ Each matrix file has two optional layers: personal defaults in `~/.pi/.doom/` and repository
403
+ overrides in `<repository>/.doom/`. Doompi loads both. Unique named entries from either layer
404
+ remain available; a same-named repository entry replaces the complete personal entry. Plugin
405
+ and profile roots from both layers are retained. Relative paths in personal config resolve
406
+ from `~/.pi/.doom/`; relative paths in repository config resolve from the repository root.
407
+
408
+ ### `modes.yaml`: choose behavior
409
+
410
+ A layer is an ordered bundle of extension packages and hook groups. A major mode names the
411
+ layers that should run together. Packages may be bare strings, or mappings when the package
412
+ accepts configuration:
413
+
414
+ ```yaml
415
+ layers:
416
+ team:
417
+ packages:
418
+ - name: '@agimon-ai/doompi-team'
419
+ config:
420
+ models:
421
+ - model: provider/model-id
422
+ thinking: high
423
+ review:
424
+ packages:
425
+ - '@scope/review-extension'
426
+
427
+ defaultMajorMode: copilot
428
+ majorMode:
429
+ minimal:
430
+ description: Lean sessions with delegation and little else.
431
+ layers: [team]
432
+ copilot:
433
+ description: General coding with delegation and review tools.
434
+ layers: [team, review]
529
435
  ```
530
- .claude/settings.json the "hooks" key only; every other key is preserved
531
- .codex-local/hooks.json the whole file
532
- ```
533
436
 
534
- Edit `hooks.yaml` and re-run `doompi sync` to regenerate both.
437
+ Order matters: Doompi assembles layers and their packages from left to right. Put settings
438
+ under the package that consumes them; a layer is composition, not a mystery bag of shared
439
+ configuration. Home and repository `layers` and `majorMode` records merge by name, with the
440
+ repository definition winning a collision.
441
+
442
+ Choose a mode with `--major-mode copilot`, switch it with `/mode`, or change
443
+ `defaultMajorMode` when one mode should be the ordinary starting point.
444
+
445
+ ### `domains.yaml`: choose content and access
535
446
 
536
- ## Selection
447
+ Plugins are catalogued once, then domains refer to their names. A root can be a marketplace,
448
+ a single plugin, or a container whose direct-child folders are plugins. Discovery is
449
+ intentionally nonrecursive: a tool buried five directories down should not load by accident.
537
450
 
538
- Use singular `--profile <name>` for one persona and its environment defaults. Use
539
- `--domains <name[,name...]>` for plugin bundles. Both `--major-mode` and `--profile` take
540
- exactly one name, reject a comma, and can be given only once. The removed `--layer`,
541
- `--layers`, `--profiles`, and `--target` flags throw and point at the replacement, and so
542
- does the removed `DOOMPI_LAYER` variable: a stale export is worth an error rather than a
543
- session quietly starting on the default.
451
+ ```yaml
452
+ defaultDomains: [development]
453
+
454
+ plugins:
455
+ roots: [plugins]
456
+ entries:
457
+ remote-review:
458
+ source: url
459
+ url: https://github.com/acme/review-plugin.git
460
+ ref: v1.2.0
461
+ published-research:
462
+ source: npm
463
+ package: '@acme/research-plugin'
464
+ version: 1.4.0
544
465
 
545
- Defaults when you name nothing: `defaultMajorMode` from `.doom/modes.yaml` and the
546
- `defaultDomains` list from `.doom/domains.yaml`. Omitting those fields preserves the
547
- compatible fallbacks: major mode `copilot`, plus domain `marketing` for the legacy
548
- `marketing` mode or `default` for every other mode.
466
+ domains:
467
+ development:
468
+ description: Repository implementation tools.
469
+ plugins: [coding-tools]
470
+ review:
471
+ description: Focused review skills with a narrow MCP boundary.
472
+ plugins:
473
+ - name: remote-review
474
+ skills: [typescript]
475
+ agents: [reviewer]
476
+ hooks: false
477
+ mcp: true
478
+ mcp:
479
+ servers: [filesystem]
480
+ proxy: [github]
481
+
482
+ aliases:
483
+ work: [development, review]
484
+ ```
549
485
 
550
- Environment equivalents are `DOOMPI_MAJOR_MODE`, `DOOMPI_DOMAINS`, and `DOOMPI_PROFILE`.
551
- `DOOMPI_PRESET` and `DOOMPI_ADDITIONAL_DIRS` work the same way for `--preset` and
552
- `--add-dir`. An empty `DOOMPI_DOMAINS` means no domains, not the default. No profile is
553
- selected unless one is named.
486
+ Here, `coding-tools` is discovered from `plugins/coding-tools`; its manifest name, or its
487
+ folder name when no manifest name exists, becomes the catalog ID. Local roots and entries
488
+ resolve beside the declaring file. Git and npm entries are cached in
489
+ `~/.pi/.doom/plugin-cache`; pin a Git SHA or exact package version when reproducibility
490
+ matters. Domains may load an entire plugin or select only its skills, agents, hooks, and MCP
491
+ configuration. The optional `mcp` mapping is an allowlist, not a request to start every server
492
+ in the repository.
554
493
 
555
- There is one variable per axis. A nested run inherits its launcher's choice because the
556
- launcher writes the resolved value into the child environment under the same name, so
557
- anything you exported yourself is what a top-level run uses and what a spawned run
558
- overrides. These used to be two variables, `DOOM_PI_*` for the selection and
559
- `AGENT_HARNESS_*` for the resolved projection, with the second outranking the first. Any
560
- surviving `AGENT_HARNESS_*` variable now throws and names its replacement, because a stale
561
- export in a shell profile is worth an error.
494
+ Select one or more domains with `--domains development,review`, use an alias such as
495
+ `--domains work`, or switch them with `/domains`. `--no-domains` is useful when the right
496
+ amount of repository context is none.
562
497
 
563
- `DOOMPI_LAYERS`, plural, is a different variable from `DOOMPI_LAYER`. It carries the
564
- resolved layer components rather than the mode that selected them.
498
+ ### `profiles.yaml`: choose a point of view
565
499
 
566
- A repository can also pin the full selection used by a bare `doompi sync` or
567
- `doompi build`. A flag still wins, then an exported variable, then the matching
568
- `selection` field, then `modes.yaml`'s `defaultMajorMode` or `domains.yaml`'s
569
- `defaultDomains`:
500
+ A profile directory becomes discoverable when it directly contains `profile.md`, `SOUL.md`,
501
+ or `AGENTS.md`. A root may be one profile or a container of direct-child profiles. The folder
502
+ name becomes the profile name; Doompi concatenates those three files in that order.
570
503
 
571
504
  ```yaml
572
- # .doom/config.yaml
573
- selection:
574
- majorMode: dev
575
- domains: [development]
576
- profile: house-voice
505
+ profiles:
506
+ roots: [personas]
507
+ entries:
508
+ release-writer:
509
+ persona: personas/release-writer
510
+ env:
511
+ BRAND: acme
512
+ TONE: concise
513
+ ```
514
+
515
+ With that config, `personas/release-writer/profile.md` is enough to discover
516
+ `release-writer`. The explicit entry is optional; use one when the profile needs another name,
517
+ an exact persona path, or string environment defaults. Explicit entries override discovered
518
+ folders. Already exported environment values win, so selecting a profile never quietly
519
+ replaces a value supplied by the caller.
520
+
521
+ Discovery never recurses. Persona paths must remain under `agents/` or a root declared in the
522
+ same file, and symlinks may not escape the persona boundary. Legacy profiles written directly
523
+ under `profiles` still load, but new configuration should use `roots` and `entries`.
524
+
525
+ Select a profile with `--profile release-writer` or switch it with `/profile`. Leaving the
526
+ catalog empty is valid; no profile remains a first-class choice.
527
+
528
+ ### Check the matrix before launch
529
+
530
+ The fastest configuration debugger is the one that does not start a model:
531
+
532
+ ```bash
533
+ doompi --major-mode copilot --domains work --profile release-writer --explain
534
+ dpi sync
535
+ doompi sync --check
577
536
  ```
578
537
 
579
- Pi asks once before it trusts a project and loads `.pi` resources, so a synced session
580
- prompts on first run regardless of `projectTrust`, which reaches Pi as a launcher flag.
581
- Answer yes, or run `/trust`.
538
+ `--explain` prints the resolved mode, domains, profile, plugins, skills, agents, MCP boundary,
539
+ and estimated prompt cost. `dpi sync` resolves the repository configuration and synchronizes
540
+ DPI without registering it in normal Pi settings. `doompi sync --check` turns drift into a
541
+ non-zero exit code for CI. If the explanation is surprising, fix the YAML before paying a model
542
+ to be surprised with you.
543
+
544
+ ## Package release order
545
+
546
+ Publish [`@agimon-ai/doompi-extension-contracts`][pkg-doompi-extension-contracts] first, then
547
+ [`@agimon-ai/doompi-help`][pkg-doompi-help], and only then the
548
+ [`@agimon-ai/doompi`][pkg-doompi] runtime that consumes them. Generated changelogs remain owned
549
+ by the release tooling.
550
+
551
+ [pkg-doompi]: https://www.npmjs.com/package/@agimon-ai/doompi
552
+ [pkg-doompi-ui]: https://www.npmjs.com/package/@agimon-ai/doompi-ui
553
+ [pkg-doompi-team]: https://www.npmjs.com/package/@agimon-ai/doompi-team
554
+ [pkg-doompi-task]: https://www.npmjs.com/package/@agimon-ai/doompi-task
555
+ [pkg-doompi-runner]: https://www.npmjs.com/package/@agimon-ai/doompi-runner
556
+ [pkg-doompi-autocompact]: https://www.npmjs.com/package/@agimon-ai/doompi-autocompact
557
+ [pkg-doompi-help]: https://www.npmjs.com/package/@agimon-ai/doompi-help
558
+ [pkg-doompi-mcp]: https://www.npmjs.com/package/@agimon-ai/doompi-mcp
559
+ [pkg-doompi-user-feedback]: https://www.npmjs.com/package/@agimon-ai/doompi-user-feedback
560
+ [pkg-log-sink-mcp]: https://www.npmjs.com/package/@agimon-ai/log-sink-mcp
561
+ [pkg-doompi-plan]: https://www.npmjs.com/package/@agimon-ai/doompi-plan
562
+ [pkg-doompi-loop]: https://www.npmjs.com/package/@agimon-ai/doompi-loop
563
+ [pkg-doompi-goal]: https://www.npmjs.com/package/@agimon-ai/doompi-goal
564
+ [pkg-doompi-workflow]: https://www.npmjs.com/package/@agimon-ai/doompi-workflow
565
+ [pkg-doompi-voice]: https://www.npmjs.com/package/@agimon-ai/doompi-voice
566
+ [pkg-doompi-extension-contracts]: https://www.npmjs.com/package/@agimon-ai/doompi-extension-contracts