@agimon-ai/doompi-git 0.0.1-alpha.8 → 0.0.1-alpha.9

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 (323) hide show
  1. package/dist/_virtual/_rolldown/runtime.cjs +23 -1
  2. package/dist/api-contracts.cjs +7 -1
  3. package/dist/api-contracts.d.cts +1 -1
  4. package/dist/api-contracts.d.mts +1 -1
  5. package/dist/api-contracts.mjs +2 -1
  6. package/dist/extensions/pi.cjs +38 -1
  7. package/dist/extensions/pi.cjs.map +1 -1
  8. package/dist/extensions/pi.d.cts +5 -4
  9. package/dist/extensions/pi.d.cts.map +1 -1
  10. package/dist/extensions/pi.d.mts +5 -4
  11. package/dist/extensions/pi.d.mts.map +1 -1
  12. package/dist/extensions/pi.mjs +33 -1
  13. package/dist/extensions/pi.mjs.map +1 -1
  14. package/dist/extensions/server.cjs +72 -1
  15. package/dist/extensions/server.cjs.map +1 -1
  16. package/dist/extensions/server.d.cts +3 -3
  17. package/dist/extensions/server.d.cts.map +1 -1
  18. package/dist/extensions/server.d.mts +3 -3
  19. package/dist/extensions/server.d.mts.map +1 -1
  20. package/dist/extensions/server.mjs +67 -1
  21. package/dist/extensions/server.mjs.map +1 -1
  22. package/dist/extensions/web.mjs +485 -0
  23. package/dist/extensions/web.mjs.map +1 -0
  24. package/dist/index.cjs +5 -1
  25. package/dist/index.d.cts +3 -3
  26. package/dist/index.d.mts +3 -3
  27. package/dist/index.mjs +3 -1
  28. package/dist/src/constants/git.cjs +8 -0
  29. package/dist/src/constants/git.cjs.map +1 -0
  30. package/dist/src/constants/git.mjs +7 -0
  31. package/dist/src/constants/git.mjs.map +1 -0
  32. package/dist/src/extensions/(backend)/api/_lib/route.server.cjs +93 -0
  33. package/dist/src/extensions/(backend)/api/_lib/route.server.cjs.map +1 -0
  34. package/dist/src/extensions/(backend)/api/_lib/route.server.mjs +92 -0
  35. package/dist/src/extensions/(backend)/api/_lib/route.server.mjs.map +1 -0
  36. package/dist/src/extensions/(backend)/api/route.server.cjs +7 -0
  37. package/dist/src/extensions/(backend)/api/route.server.cjs.map +1 -0
  38. package/dist/src/extensions/(backend)/api/route.server.mjs +8 -0
  39. package/dist/src/extensions/(backend)/api/route.server.mjs.map +1 -0
  40. package/dist/src/extensions/(backend)/channel/_lib/git-worktrees.server.cjs +195 -0
  41. package/dist/src/extensions/(backend)/channel/_lib/git-worktrees.server.cjs.map +1 -0
  42. package/dist/src/extensions/(backend)/channel/_lib/git-worktrees.server.mjs +194 -0
  43. package/dist/src/extensions/(backend)/channel/_lib/git-worktrees.server.mjs.map +1 -0
  44. package/dist/src/extensions/(backend)/channel/git-worktrees.server.cjs +7 -0
  45. package/dist/src/extensions/(backend)/channel/git-worktrees.server.cjs.map +1 -0
  46. package/dist/src/extensions/(backend)/channel/git-worktrees.server.mjs +8 -0
  47. package/dist/src/extensions/(backend)/channel/git-worktrees.server.mjs.map +1 -0
  48. package/dist/src/extensions/workspaces/sessions/(backend)/_lib/root.cli.cjs +7 -0
  49. package/dist/src/extensions/workspaces/sessions/(backend)/_lib/root.cli.cjs.map +1 -0
  50. package/dist/src/extensions/workspaces/sessions/(backend)/_lib/root.cli.mjs +8 -0
  51. package/dist/src/extensions/workspaces/sessions/(backend)/_lib/root.cli.mjs.map +1 -0
  52. package/dist/src/extensions/workspaces/sessions/(backend)/_lib/root.server.cjs +71 -0
  53. package/dist/src/extensions/workspaces/sessions/(backend)/_lib/root.server.cjs.map +1 -0
  54. package/dist/src/extensions/workspaces/sessions/(backend)/_lib/root.server.mjs +70 -0
  55. package/dist/src/extensions/workspaces/sessions/(backend)/_lib/root.server.mjs.map +1 -0
  56. package/dist/src/extensions/workspaces/sessions/(backend)/command/_lib/git.cli.cjs +17 -0
  57. package/dist/src/extensions/workspaces/sessions/(backend)/command/_lib/git.cli.cjs.map +1 -0
  58. package/dist/src/extensions/workspaces/sessions/(backend)/command/_lib/git.cli.mjs +16 -0
  59. package/dist/src/extensions/workspaces/sessions/(backend)/command/_lib/git.cli.mjs.map +1 -0
  60. package/dist/src/extensions/workspaces/sessions/(backend)/command/git.cli.cjs +7 -0
  61. package/dist/src/extensions/workspaces/sessions/(backend)/command/git.cli.cjs.map +1 -0
  62. package/dist/src/extensions/workspaces/sessions/(backend)/command/git.cli.mjs +8 -0
  63. package/dist/src/extensions/workspaces/sessions/(backend)/command/git.cli.mjs.map +1 -0
  64. package/dist/src/extensions/workspaces/sessions/(backend)/resource/_lib/doompi-use-git.cli.cjs +15 -0
  65. package/dist/src/extensions/workspaces/sessions/(backend)/resource/_lib/doompi-use-git.cli.cjs.map +1 -0
  66. package/dist/src/extensions/workspaces/sessions/(backend)/resource/_lib/doompi-use-git.cli.mjs +15 -0
  67. package/dist/src/extensions/workspaces/sessions/(backend)/resource/_lib/doompi-use-git.cli.mjs.map +1 -0
  68. package/dist/src/extensions/workspaces/sessions/(backend)/resource/_lib/doompiGit.server.cjs +6 -0
  69. package/dist/src/extensions/workspaces/sessions/(backend)/resource/_lib/doompiGit.server.cjs.map +1 -0
  70. package/dist/src/extensions/workspaces/sessions/(backend)/resource/_lib/doompiGit.server.mjs +6 -0
  71. package/dist/src/extensions/workspaces/sessions/(backend)/resource/_lib/doompiGit.server.mjs.map +1 -0
  72. package/dist/src/extensions/workspaces/sessions/(backend)/resource/_lib/doompiGitReadme.server.cjs +6 -0
  73. package/dist/src/extensions/workspaces/sessions/(backend)/resource/_lib/doompiGitReadme.server.cjs.map +1 -0
  74. package/dist/src/extensions/workspaces/sessions/(backend)/resource/_lib/doompiGitReadme.server.mjs +6 -0
  75. package/dist/src/extensions/workspaces/sessions/(backend)/resource/_lib/doompiGitReadme.server.mjs.map +1 -0
  76. package/dist/src/extensions/workspaces/sessions/(backend)/resource/_lib/doompiUseGit.server.cjs +6 -0
  77. package/dist/src/extensions/workspaces/sessions/(backend)/resource/_lib/doompiUseGit.server.cjs.map +1 -0
  78. package/dist/src/extensions/workspaces/sessions/(backend)/resource/_lib/doompiUseGit.server.mjs +6 -0
  79. package/dist/src/extensions/workspaces/sessions/(backend)/resource/_lib/doompiUseGit.server.mjs.map +1 -0
  80. package/dist/src/extensions/workspaces/sessions/(backend)/resource/doompi-use-git.cli.cjs +7 -0
  81. package/dist/src/extensions/workspaces/sessions/(backend)/resource/doompi-use-git.cli.cjs.map +1 -0
  82. package/dist/src/extensions/workspaces/sessions/(backend)/resource/doompi-use-git.cli.mjs +8 -0
  83. package/dist/src/extensions/workspaces/sessions/(backend)/resource/doompi-use-git.cli.mjs.map +1 -0
  84. package/dist/src/extensions/workspaces/sessions/(backend)/resource/doompiGit.server.cjs +7 -0
  85. package/dist/src/extensions/workspaces/sessions/(backend)/resource/doompiGit.server.cjs.map +1 -0
  86. package/dist/src/extensions/workspaces/sessions/(backend)/resource/doompiGit.server.mjs +8 -0
  87. package/dist/src/extensions/workspaces/sessions/(backend)/resource/doompiGit.server.mjs.map +1 -0
  88. package/dist/src/extensions/workspaces/sessions/(backend)/resource/doompiGitReadme.server.cjs +7 -0
  89. package/dist/src/extensions/workspaces/sessions/(backend)/resource/doompiGitReadme.server.cjs.map +1 -0
  90. package/dist/src/extensions/workspaces/sessions/(backend)/resource/doompiGitReadme.server.mjs +8 -0
  91. package/dist/src/extensions/workspaces/sessions/(backend)/resource/doompiGitReadme.server.mjs.map +1 -0
  92. package/dist/src/extensions/workspaces/sessions/(backend)/resource/doompiUseGit.server.cjs +7 -0
  93. package/dist/src/extensions/workspaces/sessions/(backend)/resource/doompiUseGit.server.cjs.map +1 -0
  94. package/dist/src/extensions/workspaces/sessions/(backend)/resource/doompiUseGit.server.mjs +8 -0
  95. package/dist/src/extensions/workspaces/sessions/(backend)/resource/doompiUseGit.server.mjs.map +1 -0
  96. package/dist/src/extensions/workspaces/sessions/(backend)/root.cli.cjs +7 -0
  97. package/dist/src/extensions/workspaces/sessions/(backend)/root.cli.cjs.map +1 -0
  98. package/dist/src/extensions/workspaces/sessions/(backend)/root.cli.mjs +8 -0
  99. package/dist/src/extensions/workspaces/sessions/(backend)/root.cli.mjs.map +1 -0
  100. package/dist/src/extensions/workspaces/sessions/(backend)/root.server.cjs +7 -0
  101. package/dist/src/extensions/workspaces/sessions/(backend)/root.server.cjs.map +1 -0
  102. package/dist/src/extensions/workspaces/sessions/(backend)/root.server.mjs +8 -0
  103. package/dist/src/extensions/workspaces/sessions/(backend)/root.server.mjs.map +1 -0
  104. package/dist/src/extensions/workspaces/sessions/(backend)/tool/_lib/runWorktree.cli.cjs +38 -0
  105. package/dist/src/extensions/workspaces/sessions/(backend)/tool/_lib/runWorktree.cli.cjs.map +1 -0
  106. package/dist/src/extensions/workspaces/sessions/(backend)/tool/_lib/runWorktree.cli.mjs +36 -0
  107. package/dist/src/extensions/workspaces/sessions/(backend)/tool/_lib/runWorktree.cli.mjs.map +1 -0
  108. package/dist/src/extensions/workspaces/sessions/(backend)/tool/runWorktree.cli.cjs +7 -0
  109. package/dist/src/extensions/workspaces/sessions/(backend)/tool/runWorktree.cli.cjs.map +1 -0
  110. package/dist/src/extensions/workspaces/sessions/(backend)/tool/runWorktree.cli.mjs +8 -0
  111. package/dist/src/extensions/workspaces/sessions/(backend)/tool/runWorktree.cli.mjs.map +1 -0
  112. package/dist/src/extensions/workspaces/sessions/(backend)/tool/runWorktree.server.cjs +6 -0
  113. package/dist/src/extensions/workspaces/sessions/(backend)/tool/runWorktree.server.cjs.map +1 -0
  114. package/dist/src/extensions/workspaces/sessions/(backend)/tool/runWorktree.server.mjs +7 -0
  115. package/dist/src/extensions/workspaces/sessions/(backend)/tool/runWorktree.server.mjs.map +1 -0
  116. package/dist/src/schemas/apiContracts.cjs +138 -0
  117. package/dist/src/schemas/apiContracts.cjs.map +1 -0
  118. package/dist/{schemas → src/schemas}/apiContracts.d.cts.map +1 -1
  119. package/dist/{schemas → src/schemas}/apiContracts.d.mts.map +1 -1
  120. package/dist/src/schemas/apiContracts.mjs +135 -0
  121. package/dist/src/schemas/apiContracts.mjs.map +1 -0
  122. package/dist/src/schemas/runWorktreeTool.cjs +152 -0
  123. package/dist/src/schemas/runWorktreeTool.cjs.map +1 -0
  124. package/dist/src/schemas/runWorktreeTool.mjs +150 -0
  125. package/dist/src/schemas/runWorktreeTool.mjs.map +1 -0
  126. package/dist/src/services/atomicJson/index.cjs +42 -0
  127. package/dist/src/services/atomicJson/index.cjs.map +1 -0
  128. package/dist/src/services/atomicJson/index.mjs +38 -0
  129. package/dist/src/services/atomicJson/index.mjs.map +1 -0
  130. package/dist/src/services/compositionMirror/index.cjs +119 -0
  131. package/dist/src/services/compositionMirror/index.cjs.map +1 -0
  132. package/dist/src/services/compositionMirror/index.mjs +116 -0
  133. package/dist/src/services/compositionMirror/index.mjs.map +1 -0
  134. package/dist/src/services/errors/index.cjs +29 -0
  135. package/dist/src/services/errors/index.cjs.map +1 -0
  136. package/dist/src/services/errors/index.mjs +27 -0
  137. package/dist/src/services/errors/index.mjs.map +1 -0
  138. package/dist/src/services/extensionService/index.cjs +13 -0
  139. package/dist/src/services/extensionService/index.cjs.map +1 -0
  140. package/dist/src/services/extensionService/index.d.cts.map +1 -0
  141. package/dist/src/services/extensionService/index.d.mts.map +1 -0
  142. package/dist/src/services/extensionService/index.mjs +13 -0
  143. package/dist/src/services/extensionService/index.mjs.map +1 -0
  144. package/dist/src/services/gitCli/index.cjs +144 -0
  145. package/dist/src/services/gitCli/index.cjs.map +1 -0
  146. package/dist/src/services/gitCli/index.mjs +142 -0
  147. package/dist/src/services/gitCli/index.mjs.map +1 -0
  148. package/dist/src/services/gitDependencies/index.cjs +14 -0
  149. package/dist/src/services/gitDependencies/index.cjs.map +1 -0
  150. package/dist/src/services/gitDependencies/index.d.cts.map +1 -0
  151. package/dist/src/services/gitDependencies/index.d.mts.map +1 -0
  152. package/dist/src/services/gitDependencies/index.mjs +14 -0
  153. package/dist/src/services/gitDependencies/index.mjs.map +1 -0
  154. package/dist/src/services/paths/index.cjs +35 -0
  155. package/dist/src/services/paths/index.cjs.map +1 -0
  156. package/dist/src/services/paths/index.mjs +30 -0
  157. package/dist/src/services/paths/index.mjs.map +1 -0
  158. package/dist/src/services/repositoryIdentity/index.cjs +71 -0
  159. package/dist/src/services/repositoryIdentity/index.cjs.map +1 -0
  160. package/dist/src/services/repositoryIdentity/index.mjs +65 -0
  161. package/dist/src/services/repositoryIdentity/index.mjs.map +1 -0
  162. package/dist/src/services/runWorktree/index.cjs +145 -0
  163. package/dist/src/services/runWorktree/index.cjs.map +1 -0
  164. package/dist/src/services/runWorktree/index.mjs +142 -0
  165. package/dist/src/services/runWorktree/index.mjs.map +1 -0
  166. package/dist/src/services/worktreeEvents/index.cjs +64 -0
  167. package/dist/src/services/worktreeEvents/index.cjs.map +1 -0
  168. package/dist/src/services/worktreeEvents/index.d.cts.map +1 -0
  169. package/dist/src/services/worktreeEvents/index.d.mts.map +1 -0
  170. package/dist/src/services/worktreeEvents/index.mjs +60 -0
  171. package/dist/src/services/worktreeEvents/index.mjs.map +1 -0
  172. package/dist/src/services/worktreeNaming/index.cjs +99 -0
  173. package/dist/src/services/worktreeNaming/index.cjs.map +1 -0
  174. package/dist/src/services/worktreeNaming/index.d.cts.map +1 -0
  175. package/dist/src/services/worktreeNaming/index.d.mts.map +1 -0
  176. package/dist/src/services/worktreeNaming/index.mjs +94 -0
  177. package/dist/src/services/worktreeNaming/index.mjs.map +1 -0
  178. package/dist/src/services/worktreeOperations/index.cjs +263 -0
  179. package/dist/src/services/worktreeOperations/index.cjs.map +1 -0
  180. package/dist/src/services/worktreeOperations/index.d.cts.map +1 -0
  181. package/dist/src/services/worktreeOperations/index.d.mts.map +1 -0
  182. package/dist/src/services/worktreeOperations/index.mjs +261 -0
  183. package/dist/src/services/worktreeOperations/index.mjs.map +1 -0
  184. package/dist/src/services/worktreeRegistry/index.cjs +38 -0
  185. package/dist/src/services/worktreeRegistry/index.cjs.map +1 -0
  186. package/dist/src/services/worktreeRegistry/index.mjs +38 -0
  187. package/dist/src/services/worktreeRegistry/index.mjs.map +1 -0
  188. package/dist/src/types/extension.d.cts.map +1 -0
  189. package/dist/src/types/extension.d.mts.map +1 -0
  190. package/dist/src/types/webWorktrees.cjs +20 -0
  191. package/dist/src/types/webWorktrees.cjs.map +1 -0
  192. package/dist/src/types/webWorktrees.mjs +20 -0
  193. package/dist/src/types/webWorktrees.mjs.map +1 -0
  194. package/dist/src/types/worktreeRegistry.d.cts.map +1 -0
  195. package/dist/src/types/worktreeRegistry.d.mts.map +1 -0
  196. package/package.json +24 -19
  197. package/dist/constants/git.cjs +0 -2
  198. package/dist/constants/git.cjs.map +0 -1
  199. package/dist/constants/git.mjs +0 -2
  200. package/dist/constants/git.mjs.map +0 -1
  201. package/dist/controllers/gitCommand.cjs +0 -2
  202. package/dist/controllers/gitCommand.cjs.map +0 -1
  203. package/dist/controllers/gitCommand.mjs +0 -2
  204. package/dist/controllers/gitCommand.mjs.map +0 -1
  205. package/dist/controllers/gitSession.cjs +0 -2
  206. package/dist/controllers/gitSession.cjs.map +0 -1
  207. package/dist/controllers/gitSession.mjs +0 -2
  208. package/dist/controllers/gitSession.mjs.map +0 -1
  209. package/dist/controllers/hubApi.cjs +0 -2
  210. package/dist/controllers/hubApi.cjs.map +0 -1
  211. package/dist/controllers/hubApi.mjs +0 -2
  212. package/dist/controllers/hubApi.mjs.map +0 -1
  213. package/dist/controllers/worktreesChannel.cjs +0 -2
  214. package/dist/controllers/worktreesChannel.cjs.map +0 -1
  215. package/dist/controllers/worktreesChannel.mjs +0 -2
  216. package/dist/controllers/worktreesChannel.mjs.map +0 -1
  217. package/dist/schemas/apiContracts.cjs +0 -2
  218. package/dist/schemas/apiContracts.cjs.map +0 -1
  219. package/dist/schemas/apiContracts.mjs +0 -2
  220. package/dist/schemas/apiContracts.mjs.map +0 -1
  221. package/dist/schemas/runWorktreeTool.cjs +0 -2
  222. package/dist/schemas/runWorktreeTool.cjs.map +0 -1
  223. package/dist/schemas/runWorktreeTool.mjs +0 -2
  224. package/dist/schemas/runWorktreeTool.mjs.map +0 -1
  225. package/dist/services/atomicJson/index.cjs +0 -2
  226. package/dist/services/atomicJson/index.cjs.map +0 -1
  227. package/dist/services/atomicJson/index.mjs +0 -2
  228. package/dist/services/atomicJson/index.mjs.map +0 -1
  229. package/dist/services/compositionMirror/index.cjs +0 -2
  230. package/dist/services/compositionMirror/index.cjs.map +0 -1
  231. package/dist/services/compositionMirror/index.mjs +0 -2
  232. package/dist/services/compositionMirror/index.mjs.map +0 -1
  233. package/dist/services/errors/index.cjs +0 -2
  234. package/dist/services/errors/index.cjs.map +0 -1
  235. package/dist/services/errors/index.mjs +0 -2
  236. package/dist/services/errors/index.mjs.map +0 -1
  237. package/dist/services/extensionService/index.cjs +0 -2
  238. package/dist/services/extensionService/index.cjs.map +0 -1
  239. package/dist/services/extensionService/index.d.cts.map +0 -1
  240. package/dist/services/extensionService/index.d.mts.map +0 -1
  241. package/dist/services/extensionService/index.mjs +0 -2
  242. package/dist/services/extensionService/index.mjs.map +0 -1
  243. package/dist/services/gitCli/index.cjs +0 -4
  244. package/dist/services/gitCli/index.cjs.map +0 -1
  245. package/dist/services/gitCli/index.mjs +0 -4
  246. package/dist/services/gitCli/index.mjs.map +0 -1
  247. package/dist/services/gitDependencies/index.cjs +0 -2
  248. package/dist/services/gitDependencies/index.cjs.map +0 -1
  249. package/dist/services/gitDependencies/index.d.cts.map +0 -1
  250. package/dist/services/gitDependencies/index.d.mts.map +0 -1
  251. package/dist/services/gitDependencies/index.mjs +0 -2
  252. package/dist/services/gitDependencies/index.mjs.map +0 -1
  253. package/dist/services/paths/index.cjs +0 -2
  254. package/dist/services/paths/index.cjs.map +0 -1
  255. package/dist/services/paths/index.mjs +0 -2
  256. package/dist/services/paths/index.mjs.map +0 -1
  257. package/dist/services/repositoryIdentity/index.cjs +0 -2
  258. package/dist/services/repositoryIdentity/index.cjs.map +0 -1
  259. package/dist/services/repositoryIdentity/index.mjs +0 -2
  260. package/dist/services/repositoryIdentity/index.mjs.map +0 -1
  261. package/dist/services/runWorktree/index.cjs +0 -15
  262. package/dist/services/runWorktree/index.cjs.map +0 -1
  263. package/dist/services/runWorktree/index.mjs +0 -15
  264. package/dist/services/runWorktree/index.mjs.map +0 -1
  265. package/dist/services/worktreeEvents/index.cjs +0 -2
  266. package/dist/services/worktreeEvents/index.cjs.map +0 -1
  267. package/dist/services/worktreeEvents/index.d.cts.map +0 -1
  268. package/dist/services/worktreeEvents/index.d.mts.map +0 -1
  269. package/dist/services/worktreeEvents/index.mjs +0 -2
  270. package/dist/services/worktreeEvents/index.mjs.map +0 -1
  271. package/dist/services/worktreeNaming/index.cjs +0 -2
  272. package/dist/services/worktreeNaming/index.cjs.map +0 -1
  273. package/dist/services/worktreeNaming/index.d.cts.map +0 -1
  274. package/dist/services/worktreeNaming/index.d.mts.map +0 -1
  275. package/dist/services/worktreeNaming/index.mjs +0 -2
  276. package/dist/services/worktreeNaming/index.mjs.map +0 -1
  277. package/dist/services/worktreeOperations/index.cjs +0 -2
  278. package/dist/services/worktreeOperations/index.cjs.map +0 -1
  279. package/dist/services/worktreeOperations/index.d.cts.map +0 -1
  280. package/dist/services/worktreeOperations/index.d.mts.map +0 -1
  281. package/dist/services/worktreeOperations/index.mjs +0 -2
  282. package/dist/services/worktreeOperations/index.mjs.map +0 -1
  283. package/dist/services/worktreeRegistry/index.cjs +0 -2
  284. package/dist/services/worktreeRegistry/index.cjs.map +0 -1
  285. package/dist/services/worktreeRegistry/index.mjs +0 -2
  286. package/dist/services/worktreeRegistry/index.mjs.map +0 -1
  287. package/dist/tools/runWorktree.cjs +0 -2
  288. package/dist/tools/runWorktree.cjs.map +0 -1
  289. package/dist/tools/runWorktree.mjs +0 -2
  290. package/dist/tools/runWorktree.mjs.map +0 -1
  291. package/dist/types/extension.d.cts.map +0 -1
  292. package/dist/types/extension.d.mts.map +0 -1
  293. package/dist/types/webWorktrees.cjs +0 -2
  294. package/dist/types/webWorktrees.cjs.map +0 -1
  295. package/dist/types/webWorktrees.mjs +0 -2
  296. package/dist/types/webWorktrees.mjs.map +0 -1
  297. package/dist/types/worktreeRegistry.d.cts.map +0 -1
  298. package/dist/types/worktreeRegistry.d.mts.map +0 -1
  299. package/src/extensions/web.ts +0 -33
  300. package/src/types/webWorktrees.ts +0 -55
  301. package/src/types/worktreeRegistry.ts +0 -78
  302. package/src/web/components/RunWorktreeToolMessage.tsx +0 -45
  303. package/src/web/components/WorktreesActivitySection.tsx +0 -80
  304. package/src/web/components/WorktreesPanel.tsx +0 -175
  305. package/src/web/components/toolRenderers.ts +0 -8
  306. package/src/web/stores/worktreesActivityStore.ts +0 -125
  307. package/src/web/tsconfig.json +0 -22
  308. /package/dist/{schemas → src/schemas}/apiContracts.d.cts +0 -0
  309. /package/dist/{schemas → src/schemas}/apiContracts.d.mts +0 -0
  310. /package/dist/{services → src/services}/extensionService/index.d.cts +0 -0
  311. /package/dist/{services → src/services}/extensionService/index.d.mts +0 -0
  312. /package/dist/{services → src/services}/gitDependencies/index.d.cts +0 -0
  313. /package/dist/{services → src/services}/gitDependencies/index.d.mts +0 -0
  314. /package/dist/{services → src/services}/worktreeEvents/index.d.cts +0 -0
  315. /package/dist/{services → src/services}/worktreeEvents/index.d.mts +0 -0
  316. /package/dist/{services → src/services}/worktreeNaming/index.d.cts +0 -0
  317. /package/dist/{services → src/services}/worktreeNaming/index.d.mts +0 -0
  318. /package/dist/{services → src/services}/worktreeOperations/index.d.cts +0 -0
  319. /package/dist/{services → src/services}/worktreeOperations/index.d.mts +0 -0
  320. /package/dist/{types → src/types}/extension.d.cts +0 -0
  321. /package/dist/{types → src/types}/extension.d.mts +0 -0
  322. /package/dist/{types → src/types}/worktreeRegistry.d.cts +0 -0
  323. /package/dist/{types → src/types}/worktreeRegistry.d.mts +0 -0
@@ -0,0 +1,194 @@
1
+ import { createWorktreeGit } from "../../../../services/gitCli/index.mjs";
2
+ import { DoomGitExpectedError, HubUnavailableError } from "../../../../services/errors/index.mjs";
3
+ import { registryFile } from "../../../../services/paths/index.mjs";
4
+ import { GIT_WORKTREE_LIFECYCLE_EVENT, isWorktreeLifecycleEvent } from "../../../../services/worktreeEvents/index.mjs";
5
+ import { createWorktreeRegistry } from "../../../../services/worktreeRegistry/index.mjs";
6
+ import { createWorktreeOperations } from "../../../../services/worktreeOperations/index.mjs";
7
+ import { GIT_WORKTREES_TYPE } from "../../../../types/webWorktrees.mjs";
8
+ //#region src/extensions/(backend)/channel/_lib/git-worktrees.server.ts
9
+ function payloadOf(state) {
10
+ return {
11
+ worktrees: state.worktrees,
12
+ ...state.pending === void 0 ? {} : { pending: state.pending },
13
+ ...state.error === void 0 ? {} : { error: state.error }
14
+ };
15
+ }
16
+ /** Worktrees visible to this session, using the hub's live session table for ownership. */
17
+ function viewsFor(scope, deps) {
18
+ try {
19
+ return createWorktreeRegistry(registryFile(scope.cwd, deps.homeDir)).list().flatMap((record) => {
20
+ const owned = record.parentSessionId === scope.sessionId;
21
+ const unowned = !owned && !deps.sessionService.isLive(record.parentSessionId);
22
+ if (!owned && !unowned) return [];
23
+ return [{
24
+ id: record.id,
25
+ branch: record.branch,
26
+ path: record.path,
27
+ sessionId: record.status === "orphaned" ? null : record.sessionId,
28
+ orphaned: record.status === "orphaned",
29
+ unowned
30
+ }];
31
+ });
32
+ } catch {
33
+ return [];
34
+ }
35
+ }
36
+ function sameList(left, right) {
37
+ if (left.length !== right.length) return false;
38
+ return left.every((entry, index) => {
39
+ const other = right[index];
40
+ return other !== void 0 && entry.id === other.id && entry.branch === other.branch && entry.sessionId === other.sessionId && entry.orphaned === other.orphaned && entry.unowned === other.unowned;
41
+ });
42
+ }
43
+ /** A command the page sent, or undefined when the frame was not one. */
44
+ function parseCommand(payload) {
45
+ if (typeof payload !== "object" || payload === null) return void 0;
46
+ const value = payload;
47
+ if (value.action === "create") {
48
+ if (typeof value.branch !== "string" || value.branch.trim() === "") return void 0;
49
+ return {
50
+ action: "create",
51
+ branch: value.branch.trim(),
52
+ ...typeof value.baseRef === "string" && value.baseRef.trim() !== "" ? { baseRef: value.baseRef.trim() } : {}
53
+ };
54
+ }
55
+ if (value.action === "close") {
56
+ if (typeof value.id !== "string" || value.id === "") return void 0;
57
+ return {
58
+ action: "close",
59
+ id: value.id,
60
+ ...value.force === true ? { force: true } : {}
61
+ };
62
+ }
63
+ }
64
+ /**
65
+ * What the reader is told when a command fails.
66
+ *
67
+ * An expected failure explains itself. Anything else is summarised, never
68
+ * echoed: a git error can carry a remote URL with a token in it.
69
+ */
70
+ function failureText(error) {
71
+ return error instanceof DoomGitExpectedError ? error.message : "The worktree operation failed.";
72
+ }
73
+ /** Starts one direct-event subscription per managed session. */
74
+ function createWorktreesChannel(options = {}) {
75
+ let receiveCommand;
76
+ return {
77
+ frameType: GIT_WORKTREES_TYPE,
78
+ start(host) {
79
+ const sessionService = host.sessionService;
80
+ if (sessionService === void 0) throw new HubUnavailableError("The cockpit session service is unavailable. Start the cockpit and try again.");
81
+ const worktrees = options.operations ?? createWorktreeOperations({
82
+ git: createWorktreeGit(),
83
+ sessionService
84
+ });
85
+ const views = {
86
+ homeDir: options.homeDir,
87
+ sessionService
88
+ };
89
+ const latest = /* @__PURE__ */ new Map();
90
+ const subscriptions = /* @__PURE__ */ new Map();
91
+ const busy = /* @__PURE__ */ new Set();
92
+ /** Republishes a session, skipping a frame that would say nothing new. */
93
+ const publish = (scope, force) => {
94
+ const previous = latest.get(scope.sessionId);
95
+ const next = {
96
+ worktrees: viewsFor(scope, views),
97
+ pending: previous?.pending,
98
+ error: previous?.error
99
+ };
100
+ if (!force && previous !== void 0 && sameList(previous.worktrees, next.worktrees) && previous.pending === next.pending && previous.error === next.error) return;
101
+ latest.set(scope.sessionId, next);
102
+ host.publish(scope.sessionId, payloadOf(next));
103
+ };
104
+ const mark = (scope, pending, error) => {
105
+ const previous = latest.get(scope.sessionId);
106
+ latest.set(scope.sessionId, {
107
+ worktrees: previous?.worktrees ?? viewsFor(scope, views),
108
+ pending,
109
+ error
110
+ });
111
+ publish(scope, true);
112
+ };
113
+ /** Announces a successful mutation to this session's lifecycle subscribers. */
114
+ const publishLifecycle = (scope, repositoryRoot) => {
115
+ host.directEvents.publish(GIT_WORKTREE_LIFECYCLE_EVENT, scope.sessionId, {
116
+ version: 1,
117
+ repositoryRoot
118
+ });
119
+ };
120
+ const run = async (scope, command) => {
121
+ const context = {
122
+ cwd: scope.cwd,
123
+ sessionId: scope.sessionId
124
+ };
125
+ if (command.action === "create") {
126
+ mark(scope, `creating ${command.branch}\u2026`, void 0);
127
+ const record = await worktrees.spawn(context, {
128
+ branch: command.branch,
129
+ ...command.baseRef === void 0 ? {} : { baseRef: command.baseRef }
130
+ }, { onProgress: (label) => mark(scope, label, void 0) });
131
+ publishLifecycle(scope, record.repositoryRoot);
132
+ return;
133
+ }
134
+ mark(scope, `closing ${command.id}…`, void 0);
135
+ const record = await worktrees.close(context, command.id, command.force ?? false);
136
+ publishLifecycle(scope, record.repositoryRoot);
137
+ };
138
+ const source = {
139
+ payloadFor(scope) {
140
+ const state = latest.get(scope.sessionId);
141
+ return state === void 0 ? void 0 : payloadOf(state);
142
+ },
143
+ sessionAdded(scope) {
144
+ publish(scope, false);
145
+ const unsubscribe = host.directEvents.subscribe(GIT_WORKTREE_LIFECYCLE_EVENT, scope.sessionId, (payload) => {
146
+ if (!isWorktreeLifecycleEvent(payload)) return;
147
+ let sameRepository = false;
148
+ try {
149
+ sameRepository = registryFile(scope.cwd, options.homeDir) === registryFile(payload.repositoryRoot, options.homeDir);
150
+ } catch {
151
+ sameRepository = false;
152
+ }
153
+ if (sameRepository) publish(scope, false);
154
+ });
155
+ subscriptions.set(scope.sessionId, unsubscribe);
156
+ },
157
+ sessionRemoved(sessionId) {
158
+ subscriptions.get(sessionId)?.();
159
+ subscriptions.delete(sessionId);
160
+ latest.delete(sessionId);
161
+ busy.delete(sessionId);
162
+ },
163
+ close() {
164
+ for (const unsubscribe of subscriptions.values()) unsubscribe();
165
+ subscriptions.clear();
166
+ latest.clear();
167
+ busy.clear();
168
+ }
169
+ };
170
+ receiveCommand = (scope, payload) => {
171
+ const command = parseCommand(payload);
172
+ if (command === void 0) return;
173
+ if (busy.has(scope.sessionId)) return;
174
+ busy.add(scope.sessionId);
175
+ run(scope, command).then(() => {
176
+ mark(scope, void 0, void 0);
177
+ }).catch((error) => {
178
+ host.onNotice(`worktree command failed for ${scope.sessionId} (${failureText(error)})`);
179
+ mark(scope, void 0, failureText(error));
180
+ }).finally(() => {
181
+ busy.delete(scope.sessionId);
182
+ });
183
+ };
184
+ return source;
185
+ },
186
+ receive(scope, payload) {
187
+ receiveCommand?.(scope, payload);
188
+ }
189
+ };
190
+ }
191
+ //#endregion
192
+ export { createWorktreesChannel, createWorktreesChannel as default };
193
+
194
+ //# sourceMappingURL=git-worktrees.server.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git-worktrees.server.mjs","names":[],"sources":["../../../../../../src/extensions/(backend)/channel/_lib/git-worktrees.server.ts"],"sourcesContent":["/**\n * The worktrees data channel, and the commands the dock sends back through it.\n *\n * The registry is durable state only. Live lifecycle changes arrive through the\n * hub-owned direct event bus, so this channel never polls or claims files.\n */\nimport type {\n DoomHubChannel,\n DoomHubChannelSource,\n DoomHubSessionScope,\n DoomHubSessionService,\n} from '@agimon-ai/doompi-core/hub-channel';\n\nimport { DoomGitExpectedError, HubUnavailableError } from '../../../../services/errors';\nimport { createWorktreeGit } from '../../../../services/gitCli';\nimport { registryFile } from '../../../../services/paths';\nimport { GIT_WORKTREE_LIFECYCLE_EVENT, isWorktreeLifecycleEvent } from '../../../../services/worktreeEvents';\nimport { createWorktreeOperations, type WorktreeOperations } from '../../../../services/worktreeOperations';\nimport { createWorktreeRegistry } from '../../../../services/worktreeRegistry';\nimport { GIT_WORKTREES_TYPE, type GitWorktreesCommand, type WorktreeView } from '../../../../types/webWorktrees';\n\ninterface SessionState {\n worktrees: WorktreeView[];\n pending: string | undefined;\n error: string | undefined;\n}\n\nfunction payloadOf(state: SessionState): Record<string, unknown> {\n return {\n worktrees: state.worktrees,\n ...(state.pending === undefined ? {} : { pending: state.pending }),\n ...(state.error === undefined ? {} : { error: state.error }),\n };\n}\n\n/** What the channel needs from its surroundings, injected so tests stay off this machine. */\nexport interface WorktreesChannelOptions {\n operations?: WorktreeOperations;\n homeDir?: string;\n}\n\ninterface ViewDeps {\n homeDir: string | undefined;\n sessionService: DoomHubSessionService;\n}\n\n/** Worktrees visible to this session, using the hub's live session table for ownership. */\nfunction viewsFor(scope: DoomHubSessionScope, deps: ViewDeps): WorktreeView[] {\n try {\n return createWorktreeRegistry(registryFile(scope.cwd, deps.homeDir))\n .list()\n .flatMap((record) => {\n const owned = record.parentSessionId === scope.sessionId;\n const unowned = !owned && !deps.sessionService.isLive(record.parentSessionId);\n if (!owned && !unowned) return [];\n return [\n {\n id: record.id,\n branch: record.branch,\n path: record.path,\n sessionId: record.status === 'orphaned' ? null : record.sessionId,\n orphaned: record.status === 'orphaned',\n unowned,\n },\n ];\n });\n } catch {\n return [];\n }\n}\n\nfunction sameList(left: readonly WorktreeView[], right: readonly WorktreeView[]): boolean {\n if (left.length !== right.length) return false;\n return left.every((entry, index) => {\n const other = right[index];\n return (\n other !== undefined &&\n entry.id === other.id &&\n entry.branch === other.branch &&\n entry.sessionId === other.sessionId &&\n entry.orphaned === other.orphaned &&\n entry.unowned === other.unowned\n );\n });\n}\n\n/** A command the page sent, or undefined when the frame was not one. */\nfunction parseCommand(payload: unknown): GitWorktreesCommand | undefined {\n if (typeof payload !== 'object' || payload === null) return undefined;\n const value = payload as Record<string, unknown>;\n if (value.action === 'create') {\n if (typeof value.branch !== 'string' || value.branch.trim() === '') return undefined;\n return {\n action: 'create',\n branch: value.branch.trim(),\n ...(typeof value.baseRef === 'string' && value.baseRef.trim() !== '' ? { baseRef: value.baseRef.trim() } : {}),\n };\n }\n if (value.action === 'close') {\n if (typeof value.id !== 'string' || value.id === '') return undefined;\n return { action: 'close', id: value.id, ...(value.force === true ? { force: true } : {}) };\n }\n return undefined;\n}\n\n/**\n * What the reader is told when a command fails.\n *\n * An expected failure explains itself. Anything else is summarised, never\n * echoed: a git error can carry a remote URL with a token in it.\n */\nfunction failureText(error: unknown): string {\n return error instanceof DoomGitExpectedError ? error.message : 'The worktree operation failed.';\n}\n\n/** Starts one direct-event subscription per managed session. */\nexport function createWorktreesChannel(options: WorktreesChannelOptions = {}): DoomHubChannel {\n // Assigned by start, because receive is reachable only while the channel is\n // running and the command needs the state the direct event subscriptions keep.\n let receiveCommand: ((scope: DoomHubSessionScope, payload: unknown) => void) | undefined;\n\n return {\n frameType: GIT_WORKTREES_TYPE,\n start(host) {\n const sessionService = host.sessionService;\n if (sessionService === undefined) {\n throw new HubUnavailableError('The cockpit session service is unavailable. Start the cockpit and try again.');\n }\n const worktrees =\n options.operations ??\n createWorktreeOperations({\n git: createWorktreeGit(),\n sessionService,\n });\n const views: ViewDeps = { homeDir: options.homeDir, sessionService };\n const latest = new Map<string, SessionState>();\n const subscriptions = new Map<string, () => void>();\n const busy = new Set<string>();\n\n /** Republishes a session, skipping a frame that would say nothing new. */\n const publish = (scope: DoomHubSessionScope, force: boolean): void => {\n const previous = latest.get(scope.sessionId);\n const next: SessionState = {\n worktrees: viewsFor(scope, views),\n pending: previous?.pending,\n error: previous?.error,\n };\n if (\n !force &&\n previous !== undefined &&\n sameList(previous.worktrees, next.worktrees) &&\n previous.pending === next.pending &&\n previous.error === next.error\n ) {\n return;\n }\n latest.set(scope.sessionId, next);\n host.publish(scope.sessionId, payloadOf(next));\n };\n\n const mark = (scope: DoomHubSessionScope, pending: string | undefined, error: string | undefined): void => {\n const previous = latest.get(scope.sessionId);\n latest.set(scope.sessionId, {\n worktrees: previous?.worktrees ?? viewsFor(scope, views),\n pending,\n error,\n });\n publish(scope, true);\n };\n\n /** Announces a successful mutation to this session's lifecycle subscribers. */\n const publishLifecycle = (scope: DoomHubSessionScope, repositoryRoot: string): void => {\n host.directEvents.publish(GIT_WORKTREE_LIFECYCLE_EVENT, scope.sessionId, {\n version: 1,\n repositoryRoot,\n });\n };\n\n const run = async (scope: DoomHubSessionScope, command: GitWorktreesCommand): Promise<void> => {\n const context = { cwd: scope.cwd, sessionId: scope.sessionId };\n if (command.action === 'create') {\n mark(scope, `creating ${command.branch}\\u2026`, undefined);\n const record = await worktrees.spawn(\n context,\n {\n branch: command.branch,\n ...(command.baseRef === undefined ? {} : { baseRef: command.baseRef }),\n },\n // Each phase replaces the label, so the panel says what is\n // happening instead of holding one line for the whole wait.\n { onProgress: (label) => mark(scope, label, undefined) },\n );\n publishLifecycle(scope, record.repositoryRoot);\n return;\n }\n mark(scope, `closing ${command.id}…`, undefined);\n const record = await worktrees.close(context, command.id, command.force ?? false);\n publishLifecycle(scope, record.repositoryRoot);\n };\n\n const source: DoomHubChannelSource = {\n payloadFor(scope) {\n const state = latest.get(scope.sessionId);\n return state === undefined ? undefined : payloadOf(state);\n },\n sessionAdded(scope) {\n publish(scope, false);\n const unsubscribe = host.directEvents.subscribe(GIT_WORKTREE_LIFECYCLE_EVENT, scope.sessionId, (payload) => {\n if (!isWorktreeLifecycleEvent(payload)) return;\n let sameRepository = false;\n try {\n sameRepository =\n registryFile(scope.cwd, options.homeDir) === registryFile(payload.repositoryRoot, options.homeDir);\n } catch {\n sameRepository = false;\n }\n if (sameRepository) publish(scope, false);\n });\n subscriptions.set(scope.sessionId, unsubscribe);\n },\n sessionRemoved(sessionId) {\n subscriptions.get(sessionId)?.();\n subscriptions.delete(sessionId);\n latest.delete(sessionId);\n busy.delete(sessionId);\n },\n close() {\n for (const unsubscribe of subscriptions.values()) unsubscribe();\n subscriptions.clear();\n latest.clear();\n busy.clear();\n },\n };\n receiveCommand = (scope, payload) => {\n const command = parseCommand(payload);\n if (command === undefined) return;\n // One operation per session. A create runs for minutes, and a second\n // click must not start a second worktree behind the first.\n if (busy.has(scope.sessionId)) return;\n busy.add(scope.sessionId);\n void run(scope, command)\n .then(() => {\n mark(scope, undefined, undefined);\n })\n .catch((error: unknown) => {\n host.onNotice(`worktree command failed for ${scope.sessionId} (${failureText(error)})`);\n mark(scope, undefined, failureText(error));\n })\n .finally(() => {\n busy.delete(scope.sessionId);\n });\n };\n\n return source;\n },\n receive(scope, payload) {\n receiveCommand?.(scope, payload);\n },\n };\n}\n\nexport default createWorktreesChannel;\n"],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ const require_git_worktrees_server = require("./_lib/git-worktrees.server.cjs");
2
+ //#region src/extensions/(backend)/channel/git-worktrees.server.ts
3
+ var git_worktrees_server_default = (0, require("@agimon-ai/doompi-core/extension-file").defineChannel)(require_git_worktrees_server.createWorktreesChannel);
4
+ //#endregion
5
+ exports.default = git_worktrees_server_default;
6
+
7
+ //# sourceMappingURL=git-worktrees.server.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git-worktrees.server.cjs","names":["defineChannel","contribution"],"sources":["../../../../../src/extensions/(backend)/channel/git-worktrees.server.ts"],"sourcesContent":["import { defineChannel } from '@agimon-ai/doompi-core/extension-file';\n\nimport contribution from './_lib/git-worktrees.server';\n\nexport default defineChannel(contribution);\n"],"mappings":";;AAIA,IAAA,gCAAA,kDAAeA,CAAAA,CAAAA,cAAAA,CAAcC,6BAAAA,sBAAY"}
@@ -0,0 +1,8 @@
1
+ import { createWorktreesChannel } from "./_lib/git-worktrees.server.mjs";
2
+ import { defineChannel } from "@agimon-ai/doompi-core/extension-file";
3
+ //#region src/extensions/(backend)/channel/git-worktrees.server.ts
4
+ var git_worktrees_server_default = defineChannel(createWorktreesChannel);
5
+ //#endregion
6
+ export { git_worktrees_server_default as default };
7
+
8
+ //# sourceMappingURL=git-worktrees.server.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git-worktrees.server.mjs","names":["contribution"],"sources":["../../../../../src/extensions/(backend)/channel/git-worktrees.server.ts"],"sourcesContent":["import { defineChannel } from '@agimon-ai/doompi-core/extension-file';\n\nimport contribution from './_lib/git-worktrees.server';\n\nexport default defineChannel(contribution);\n"],"mappings":";;;AAIA,IAAA,+BAAe,cAAcA,sBAAY"}
@@ -0,0 +1,7 @@
1
+ const require_index = require("../../../../../services/gitDependencies/index.cjs");
2
+ //#region src/extensions/workspaces/sessions/(backend)/_lib/root.cli.ts
3
+ const root = (0, require("@agimon-ai/doompi-core/extension-file").defineRoot)((context) => ({ value: require_index.createGitDependencies(context.options) }));
4
+ //#endregion
5
+ exports.default = root;
6
+
7
+ //# sourceMappingURL=root.cli.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"root.cli.cjs","names":["defineRoot","createGitDependencies"],"sources":["../../../../../../../src/extensions/workspaces/sessions/(backend)/_lib/root.cli.ts"],"sourcesContent":["import { defineRoot } from '@agimon-ai/doompi-core/extension-file';\nimport type { PiPluginContext } from '@agimon-ai/doompi-core/pi-extension';\n\nimport { createGitDependencies } from '../../../../../services/gitDependencies';\nimport type { GitExtensionDependencies } from '../../../../../types/extension';\n\nconst root = defineRoot((context: PiPluginContext<Partial<GitExtensionDependencies>>) => ({\n value: createGitDependencies(context.options),\n}));\n\nexport type GitPiScope = Awaited<ReturnType<typeof root>>['value'];\nexport default root;\n"],"mappings":";;AAMA,MAAM,QAAA,kDAAOA,CAAAA,CAAAA,WAAAA,EAAY,aAAiE,EACxF,OAAOC,cAAAA,sBAAsB,QAAQ,OAAO,EAC9C,EAAE"}
@@ -0,0 +1,8 @@
1
+ import { createGitDependencies } from "../../../../../services/gitDependencies/index.mjs";
2
+ import { defineRoot } from "@agimon-ai/doompi-core/extension-file";
3
+ //#region src/extensions/workspaces/sessions/(backend)/_lib/root.cli.ts
4
+ const root = defineRoot((context) => ({ value: createGitDependencies(context.options) }));
5
+ //#endregion
6
+ export { root as default };
7
+
8
+ //# sourceMappingURL=root.cli.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"root.cli.mjs","names":[],"sources":["../../../../../../../src/extensions/workspaces/sessions/(backend)/_lib/root.cli.ts"],"sourcesContent":["import { defineRoot } from '@agimon-ai/doompi-core/extension-file';\nimport type { PiPluginContext } from '@agimon-ai/doompi-core/pi-extension';\n\nimport { createGitDependencies } from '../../../../../services/gitDependencies';\nimport type { GitExtensionDependencies } from '../../../../../types/extension';\n\nconst root = defineRoot((context: PiPluginContext<Partial<GitExtensionDependencies>>) => ({\n value: createGitDependencies(context.options),\n}));\n\nexport type GitPiScope = Awaited<ReturnType<typeof root>>['value'];\nexport default root;\n"],"mappings":";;;AAMA,MAAM,OAAO,YAAY,aAAiE,EACxF,OAAO,sBAAsB,QAAQ,OAAO,EAC9C,EAAE"}
@@ -0,0 +1,71 @@
1
+ const require_index = require("../../../../../services/gitCli/index.cjs");
2
+ const require_index$1 = require("../../../../../services/worktreeEvents/index.cjs");
3
+ const require_index$2 = require("../../../../../services/worktreeOperations/index.cjs");
4
+ const require_runWorktreeTool = require("../../../../../schemas/runWorktreeTool.cjs");
5
+ const require_index$3 = require("../../../../../services/runWorktree/index.cjs");
6
+ let _agimon_ai_doompi_core_extension_file = require("@agimon-ai/doompi-core/extension-file");
7
+ let _agimon_ai_doompi_core_server_facet = require("@agimon-ai/doompi-core/server-facet");
8
+ //#region src/extensions/workspaces/sessions/(backend)/_lib/root.server.ts
9
+ function progressResult(action, label) {
10
+ return {
11
+ content: [{
12
+ type: "text",
13
+ text: label
14
+ }],
15
+ details: { action }
16
+ };
17
+ }
18
+ function createGitSession({ host: serverHost }) {
19
+ if (serverHost.context.directEvents === void 0) throw new Error("Git headless facet requires the session direct event bus.");
20
+ if (serverHost.context.sessionId === void 0) throw new Error("Git headless facet requires a session identity.");
21
+ const sessionId = serverHost.context.sessionId;
22
+ const directEvents = serverHost.context.directEvents;
23
+ const messageInbox = require_index$1.createWorktreeMessageInbox(directEvents, sessionId);
24
+ const operations = require_index$2.createWorktreeOperations({
25
+ git: require_index.createWorktreeGit(),
26
+ sessionService: serverHost.context.sessionService,
27
+ messageInbox
28
+ });
29
+ return {
30
+ value: {
31
+ resources: [{
32
+ when: {
33
+ state: { "minor-mode": "help" },
34
+ attribution: {
35
+ kind: "minor",
36
+ mode: "help"
37
+ }
38
+ },
39
+ name: "doompi-git",
40
+ kind: "context",
41
+ read: () => (0, _agimon_ai_doompi_core_server_facet.readPackageResource)(require("url").pathToFileURL(__filename).href, "llms.txt")
42
+ }, {
43
+ name: "doompi-use-git",
44
+ kind: "skill",
45
+ read: () => (0, _agimon_ai_doompi_core_server_facet.readPackageResource)(require("url").pathToFileURL(__filename).href, "src/prompts/doompi-use-git/SKILL.md")
46
+ }],
47
+ tool: {
48
+ name: require_index$3.RUN_WORKTREE_TOOL_NAME,
49
+ label: "Worktree",
50
+ description: require_index$3.RUN_WORKTREE_DESCRIPTION,
51
+ parameters: require_runWorktreeTool.RunWorktreeToolSchema,
52
+ promptSnippet: "Create and manage Git worktree sessions",
53
+ executionMode: "serial",
54
+ async execute(_toolCallId, parameters, signal, onUpdate, execution) {
55
+ const params = require_index$3.validateParams(parameters);
56
+ return require_index$3.executeRunWorktreeTool(params, operations, execution, {
57
+ ...signal === void 0 ? {} : { signal },
58
+ onProgress: (label) => onUpdate?.(progressResult(params.action, label))
59
+ });
60
+ }
61
+ }
62
+ },
63
+ onDispose: () => messageInbox.close()
64
+ };
65
+ }
66
+ const root = (0, _agimon_ai_doompi_core_extension_file.defineRoot)(createGitSession);
67
+ //#endregion
68
+ exports.createGitSession = createGitSession;
69
+ exports.default = root;
70
+
71
+ //# sourceMappingURL=root.server.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"root.server.cjs","names":["createWorktreeMessageInbox","createWorktreeOperations","createWorktreeGit","readPackageResource","RUN_WORKTREE_TOOL_NAME","RUN_WORKTREE_DESCRIPTION","RunWorktreeToolSchema","validateParams","executeRunWorktreeTool","defineRoot"],"sources":["../../../../../../../src/extensions/workspaces/sessions/(backend)/_lib/root.server.ts"],"sourcesContent":["import { defineRoot } from '@agimon-ai/doompi-core/extension-file';\nimport {\n type DoomHeadlessResource,\n type DoomHeadlessTool,\n type DoomHeadlessToolResult,\n} from '@agimon-ai/doompi-core/headless';\nimport { readPackageResource, type DoomServerPluginContext } from '@agimon-ai/doompi-core/server-facet';\n\nimport { RunWorktreeToolSchema, type RunWorktreeToolParams } from '../../../../../schemas/runWorktreeTool';\nimport { createWorktreeGit } from '../../../../../services/gitCli';\nimport {\n executeRunWorktreeTool,\n RUN_WORKTREE_DESCRIPTION,\n RUN_WORKTREE_TOOL_NAME,\n validateParams,\n} from '../../../../../services/runWorktree';\nimport { createWorktreeMessageInbox } from '../../../../../services/worktreeEvents';\nimport { createWorktreeOperations } from '../../../../../services/worktreeOperations';\n\nfunction progressResult(action: RunWorktreeToolParams['action'], label: string): DoomHeadlessToolResult {\n return { content: [{ type: 'text', text: label }], details: { action } };\n}\n\nexport function createGitSession({ host: serverHost }: DoomServerPluginContext) {\n if (serverHost.context.directEvents === undefined)\n throw new Error('Git headless facet requires the session direct event bus.');\n if (serverHost.context.sessionId === undefined) throw new Error('Git headless facet requires a session identity.');\n const sessionId = serverHost.context.sessionId;\n const directEvents = serverHost.context.directEvents;\n const messageInbox = createWorktreeMessageInbox(directEvents, sessionId);\n const operations = createWorktreeOperations({\n git: createWorktreeGit(),\n sessionService: serverHost.context.sessionService,\n messageInbox,\n });\n const resources: DoomHeadlessResource[] = [\n {\n // The package index is Help-catalog material, not standing instruction, so it\n // only enters the prompt while Help mode is active. Matches the Pi facet,\n // which has always routed this through the Help service.\n when: { state: { 'minor-mode': 'help' }, attribution: { kind: 'minor', mode: 'help' } },\n name: 'doompi-git',\n kind: 'context',\n read: () => readPackageResource(import.meta.url, 'llms.txt'),\n },\n {\n name: 'doompi-use-git',\n kind: 'skill',\n read: () => readPackageResource(import.meta.url, 'src/prompts/doompi-use-git/SKILL.md'),\n },\n ];\n\n const tool: DoomHeadlessTool<typeof RunWorktreeToolSchema> = {\n name: RUN_WORKTREE_TOOL_NAME,\n label: 'Worktree',\n description: RUN_WORKTREE_DESCRIPTION,\n parameters: RunWorktreeToolSchema,\n promptSnippet: 'Create and manage Git worktree sessions',\n executionMode: 'serial',\n async execute(_toolCallId, parameters, signal, onUpdate, execution) {\n const params = validateParams(parameters) as RunWorktreeToolParams;\n return executeRunWorktreeTool(params, operations, execution, {\n ...(signal === undefined ? {} : { signal }),\n onProgress: (label) => onUpdate?.(progressResult(params.action, label)),\n });\n },\n };\n return { value: { resources, tool }, onDispose: () => messageInbox.close() };\n}\n\nconst root = defineRoot(createGitSession);\nexport type GitServerScope = Awaited<ReturnType<typeof root>>['value'];\nexport default root;\n"],"mappings":";;;;;;;;AAmBA,SAAS,eAAe,QAAyC,OAAuC;CACtG,OAAO;EAAE,SAAS,CAAC;GAAE,MAAM;GAAQ,MAAM;EAAM,CAAC;EAAG,SAAS,EAAE,OAAO;CAAE;AACzE;AAEA,SAAgB,iBAAiB,EAAE,MAAM,cAAuC;CAC9E,IAAI,WAAW,QAAQ,iBAAiB,KAAA,GACtC,MAAM,IAAI,MAAM,2DAA2D;CAC7E,IAAI,WAAW,QAAQ,cAAc,KAAA,GAAW,MAAM,IAAI,MAAM,iDAAiD;CACjH,MAAM,YAAY,WAAW,QAAQ;CACrC,MAAM,eAAe,WAAW,QAAQ;CACxC,MAAM,eAAeA,gBAAAA,2BAA2B,cAAc,SAAS;CACvE,MAAM,aAAaC,gBAAAA,yBAAyB;EAC1C,KAAKC,cAAAA,kBAAkB;EACvB,gBAAgB,WAAW,QAAQ;EACnC;CACF,CAAC;CAiCD,OAAO;EAAE,OAAO;GAAE,WAAA,CA/BhB;IAIE,MAAM;KAAE,OAAO,EAAE,cAAc,OAAO;KAAG,aAAa;MAAE,MAAM;MAAS,MAAM;KAAO;IAAE;IACtF,MAAM;IACN,MAAM;IACN,aAAA,GAAYC,oCAAAA,oBAAAA,CAAAA,QAAAA,KAAAA,CAAAA,CAAAA,cAAAA,UAAAA,CAAAA,CAAAA,MAAqC,UAAU;GAC7D,GACA;IACE,MAAM;IACN,MAAM;IACN,aAAA,GAAYA,oCAAAA,oBAAAA,CAAAA,QAAAA,KAAAA,CAAAA,CAAAA,cAAAA,UAAAA,CAAAA,CAAAA,MAAqC,qCAAqC;GACxF,CAkBwB;GAAG,MAAA;IAd3B,MAAMC,gBAAAA;IACN,OAAO;IACP,aAAaC,gBAAAA;IACb,YAAYC,wBAAAA;IACZ,eAAe;IACf,eAAe;IACf,MAAM,QAAQ,aAAa,YAAY,QAAQ,UAAU,WAAW;KAClE,MAAM,SAASC,gBAAAA,eAAe,UAAU;KACxC,OAAOC,gBAAAA,uBAAuB,QAAQ,YAAY,WAAW;MAC3D,GAAI,WAAW,KAAA,IAAY,CAAC,IAAI,EAAE,OAAO;MACzC,aAAa,UAAU,WAAW,eAAe,OAAO,QAAQ,KAAK,CAAC;KACxE,CAAC;IACH;GAE8B;EAAE;EAAG,iBAAiB,aAAa,MAAM;CAAE;AAC7E;AAEA,MAAM,QAAA,GAAOC,sCAAAA,WAAAA,CAAW,gBAAgB"}
@@ -0,0 +1,70 @@
1
+ import { createWorktreeGit } from "../../../../../services/gitCli/index.mjs";
2
+ import { createWorktreeMessageInbox } from "../../../../../services/worktreeEvents/index.mjs";
3
+ import { createWorktreeOperations } from "../../../../../services/worktreeOperations/index.mjs";
4
+ import { RunWorktreeToolSchema } from "../../../../../schemas/runWorktreeTool.mjs";
5
+ import { RUN_WORKTREE_DESCRIPTION, RUN_WORKTREE_TOOL_NAME, executeRunWorktreeTool, validateParams } from "../../../../../services/runWorktree/index.mjs";
6
+ import { defineRoot } from "@agimon-ai/doompi-core/extension-file";
7
+ import { readPackageResource } from "@agimon-ai/doompi-core/server-facet";
8
+ //#region src/extensions/workspaces/sessions/(backend)/_lib/root.server.ts
9
+ function progressResult(action, label) {
10
+ return {
11
+ content: [{
12
+ type: "text",
13
+ text: label
14
+ }],
15
+ details: { action }
16
+ };
17
+ }
18
+ function createGitSession({ host: serverHost }) {
19
+ if (serverHost.context.directEvents === void 0) throw new Error("Git headless facet requires the session direct event bus.");
20
+ if (serverHost.context.sessionId === void 0) throw new Error("Git headless facet requires a session identity.");
21
+ const sessionId = serverHost.context.sessionId;
22
+ const directEvents = serverHost.context.directEvents;
23
+ const messageInbox = createWorktreeMessageInbox(directEvents, sessionId);
24
+ const operations = createWorktreeOperations({
25
+ git: createWorktreeGit(),
26
+ sessionService: serverHost.context.sessionService,
27
+ messageInbox
28
+ });
29
+ return {
30
+ value: {
31
+ resources: [{
32
+ when: {
33
+ state: { "minor-mode": "help" },
34
+ attribution: {
35
+ kind: "minor",
36
+ mode: "help"
37
+ }
38
+ },
39
+ name: "doompi-git",
40
+ kind: "context",
41
+ read: () => readPackageResource(import.meta.url, "llms.txt")
42
+ }, {
43
+ name: "doompi-use-git",
44
+ kind: "skill",
45
+ read: () => readPackageResource(import.meta.url, "src/prompts/doompi-use-git/SKILL.md")
46
+ }],
47
+ tool: {
48
+ name: RUN_WORKTREE_TOOL_NAME,
49
+ label: "Worktree",
50
+ description: RUN_WORKTREE_DESCRIPTION,
51
+ parameters: RunWorktreeToolSchema,
52
+ promptSnippet: "Create and manage Git worktree sessions",
53
+ executionMode: "serial",
54
+ async execute(_toolCallId, parameters, signal, onUpdate, execution) {
55
+ const params = validateParams(parameters);
56
+ return executeRunWorktreeTool(params, operations, execution, {
57
+ ...signal === void 0 ? {} : { signal },
58
+ onProgress: (label) => onUpdate?.(progressResult(params.action, label))
59
+ });
60
+ }
61
+ }
62
+ },
63
+ onDispose: () => messageInbox.close()
64
+ };
65
+ }
66
+ const root = defineRoot(createGitSession);
67
+ //#endregion
68
+ export { createGitSession, root as default };
69
+
70
+ //# sourceMappingURL=root.server.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"root.server.mjs","names":[],"sources":["../../../../../../../src/extensions/workspaces/sessions/(backend)/_lib/root.server.ts"],"sourcesContent":["import { defineRoot } from '@agimon-ai/doompi-core/extension-file';\nimport {\n type DoomHeadlessResource,\n type DoomHeadlessTool,\n type DoomHeadlessToolResult,\n} from '@agimon-ai/doompi-core/headless';\nimport { readPackageResource, type DoomServerPluginContext } from '@agimon-ai/doompi-core/server-facet';\n\nimport { RunWorktreeToolSchema, type RunWorktreeToolParams } from '../../../../../schemas/runWorktreeTool';\nimport { createWorktreeGit } from '../../../../../services/gitCli';\nimport {\n executeRunWorktreeTool,\n RUN_WORKTREE_DESCRIPTION,\n RUN_WORKTREE_TOOL_NAME,\n validateParams,\n} from '../../../../../services/runWorktree';\nimport { createWorktreeMessageInbox } from '../../../../../services/worktreeEvents';\nimport { createWorktreeOperations } from '../../../../../services/worktreeOperations';\n\nfunction progressResult(action: RunWorktreeToolParams['action'], label: string): DoomHeadlessToolResult {\n return { content: [{ type: 'text', text: label }], details: { action } };\n}\n\nexport function createGitSession({ host: serverHost }: DoomServerPluginContext) {\n if (serverHost.context.directEvents === undefined)\n throw new Error('Git headless facet requires the session direct event bus.');\n if (serverHost.context.sessionId === undefined) throw new Error('Git headless facet requires a session identity.');\n const sessionId = serverHost.context.sessionId;\n const directEvents = serverHost.context.directEvents;\n const messageInbox = createWorktreeMessageInbox(directEvents, sessionId);\n const operations = createWorktreeOperations({\n git: createWorktreeGit(),\n sessionService: serverHost.context.sessionService,\n messageInbox,\n });\n const resources: DoomHeadlessResource[] = [\n {\n // The package index is Help-catalog material, not standing instruction, so it\n // only enters the prompt while Help mode is active. Matches the Pi facet,\n // which has always routed this through the Help service.\n when: { state: { 'minor-mode': 'help' }, attribution: { kind: 'minor', mode: 'help' } },\n name: 'doompi-git',\n kind: 'context',\n read: () => readPackageResource(import.meta.url, 'llms.txt'),\n },\n {\n name: 'doompi-use-git',\n kind: 'skill',\n read: () => readPackageResource(import.meta.url, 'src/prompts/doompi-use-git/SKILL.md'),\n },\n ];\n\n const tool: DoomHeadlessTool<typeof RunWorktreeToolSchema> = {\n name: RUN_WORKTREE_TOOL_NAME,\n label: 'Worktree',\n description: RUN_WORKTREE_DESCRIPTION,\n parameters: RunWorktreeToolSchema,\n promptSnippet: 'Create and manage Git worktree sessions',\n executionMode: 'serial',\n async execute(_toolCallId, parameters, signal, onUpdate, execution) {\n const params = validateParams(parameters) as RunWorktreeToolParams;\n return executeRunWorktreeTool(params, operations, execution, {\n ...(signal === undefined ? {} : { signal }),\n onProgress: (label) => onUpdate?.(progressResult(params.action, label)),\n });\n },\n };\n return { value: { resources, tool }, onDispose: () => messageInbox.close() };\n}\n\nconst root = defineRoot(createGitSession);\nexport type GitServerScope = Awaited<ReturnType<typeof root>>['value'];\nexport default root;\n"],"mappings":";;;;;;;;AAmBA,SAAS,eAAe,QAAyC,OAAuC;CACtG,OAAO;EAAE,SAAS,CAAC;GAAE,MAAM;GAAQ,MAAM;EAAM,CAAC;EAAG,SAAS,EAAE,OAAO;CAAE;AACzE;AAEA,SAAgB,iBAAiB,EAAE,MAAM,cAAuC;CAC9E,IAAI,WAAW,QAAQ,iBAAiB,KAAA,GACtC,MAAM,IAAI,MAAM,2DAA2D;CAC7E,IAAI,WAAW,QAAQ,cAAc,KAAA,GAAW,MAAM,IAAI,MAAM,iDAAiD;CACjH,MAAM,YAAY,WAAW,QAAQ;CACrC,MAAM,eAAe,WAAW,QAAQ;CACxC,MAAM,eAAe,2BAA2B,cAAc,SAAS;CACvE,MAAM,aAAa,yBAAyB;EAC1C,KAAK,kBAAkB;EACvB,gBAAgB,WAAW,QAAQ;EACnC;CACF,CAAC;CAiCD,OAAO;EAAE,OAAO;GAAE,WAAA,CA/BhB;IAIE,MAAM;KAAE,OAAO,EAAE,cAAc,OAAO;KAAG,aAAa;MAAE,MAAM;MAAS,MAAM;KAAO;IAAE;IACtF,MAAM;IACN,MAAM;IACN,YAAY,oBAAoB,YAAY,KAAK,UAAU;GAC7D,GACA;IACE,MAAM;IACN,MAAM;IACN,YAAY,oBAAoB,YAAY,KAAK,qCAAqC;GACxF,CAkBwB;GAAG,MAAA;IAd3B,MAAM;IACN,OAAO;IACP,aAAa;IACb,YAAY;IACZ,eAAe;IACf,eAAe;IACf,MAAM,QAAQ,aAAa,YAAY,QAAQ,UAAU,WAAW;KAClE,MAAM,SAAS,eAAe,UAAU;KACxC,OAAO,uBAAuB,QAAQ,YAAY,WAAW;MAC3D,GAAI,WAAW,KAAA,IAAY,CAAC,IAAI,EAAE,OAAO;MACzC,aAAa,UAAU,WAAW,eAAe,OAAO,QAAQ,KAAK,CAAC;KACxE,CAAC;IACH;GAE8B;EAAE;EAAG,iBAAiB,aAAa,MAAM;CAAE;AAC7E;AAEA,MAAM,OAAO,WAAW,gBAAgB"}
@@ -0,0 +1,17 @@
1
+ const require_git = require("../../../../../../constants/git.cjs");
2
+ //#region src/extensions/workspaces/sessions/(backend)/command/_lib/git.cli.ts
3
+ function createGitCommand(service) {
4
+ return [require_git.COMMAND_NAME, {
5
+ description: require_git.COMMAND_DESCRIPTION,
6
+ handler: async (_args, ctx) => {
7
+ const result = await service.execute();
8
+ if (ctx.hasUI) ctx.ui.notify(result.message, result.level);
9
+ }
10
+ }];
11
+ }
12
+ var git_cli_default = (context) => createGitCommand(context.root.service);
13
+ //#endregion
14
+ exports.createGitCommand = createGitCommand;
15
+ exports.default = git_cli_default;
16
+
17
+ //# sourceMappingURL=git.cli.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git.cli.cjs","names":["COMMAND_NAME","COMMAND_DESCRIPTION"],"sources":["../../../../../../../../src/extensions/workspaces/sessions/(backend)/command/_lib/git.cli.ts"],"sourcesContent":["import type { WithRoot } from '@agimon-ai/doompi-core/extension-file';\nimport type { PiPluginContext } from '@agimon-ai/doompi-core/pi-extension';\n// @scaffold-generated\nimport type { ExtensionAPI } from '@earendil-works/pi-coding-agent';\n\nimport { COMMAND_NAME, COMMAND_DESCRIPTION } from '../../../../../../constants/git';\nimport type { GitExtensionDependencies, GitExtensionService } from '../../../../../../types/extension';\nimport type { GitPiScope } from '../../_lib/root.cli';\n\nexport function createGitCommand(\n service: GitExtensionService,\n): readonly [string, Parameters<ExtensionAPI['registerCommand']>[1]] {\n return [\n COMMAND_NAME,\n {\n description: COMMAND_DESCRIPTION,\n handler: async (_args, ctx) => {\n const result = await service.execute();\n if (ctx.hasUI) ctx.ui.notify(result.message, result.level);\n },\n },\n ];\n}\n\nexport default (context: WithRoot<PiPluginContext<Partial<GitExtensionDependencies>>, GitPiScope>) =>\n createGitCommand(context.root.service);\n"],"mappings":";;AASA,SAAgB,iBACd,SACmE;CACnE,OAAO,CACLA,YAAAA,cACA;EACE,aAAaC,YAAAA;EACb,SAAS,OAAO,OAAO,QAAQ;GAC7B,MAAM,SAAS,MAAM,QAAQ,QAAQ;GACrC,IAAI,IAAI,OAAO,IAAI,GAAG,OAAO,OAAO,SAAS,OAAO,KAAK;EAC3D;CACF,CACF;AACF;AAEA,IAAA,mBAAgB,YACd,iBAAiB,QAAQ,KAAK,OAAO"}
@@ -0,0 +1,16 @@
1
+ import { COMMAND_DESCRIPTION, COMMAND_NAME } from "../../../../../../constants/git.mjs";
2
+ //#region src/extensions/workspaces/sessions/(backend)/command/_lib/git.cli.ts
3
+ function createGitCommand(service) {
4
+ return [COMMAND_NAME, {
5
+ description: COMMAND_DESCRIPTION,
6
+ handler: async (_args, ctx) => {
7
+ const result = await service.execute();
8
+ if (ctx.hasUI) ctx.ui.notify(result.message, result.level);
9
+ }
10
+ }];
11
+ }
12
+ var git_cli_default = (context) => createGitCommand(context.root.service);
13
+ //#endregion
14
+ export { createGitCommand, git_cli_default as default };
15
+
16
+ //# sourceMappingURL=git.cli.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git.cli.mjs","names":[],"sources":["../../../../../../../../src/extensions/workspaces/sessions/(backend)/command/_lib/git.cli.ts"],"sourcesContent":["import type { WithRoot } from '@agimon-ai/doompi-core/extension-file';\nimport type { PiPluginContext } from '@agimon-ai/doompi-core/pi-extension';\n// @scaffold-generated\nimport type { ExtensionAPI } from '@earendil-works/pi-coding-agent';\n\nimport { COMMAND_NAME, COMMAND_DESCRIPTION } from '../../../../../../constants/git';\nimport type { GitExtensionDependencies, GitExtensionService } from '../../../../../../types/extension';\nimport type { GitPiScope } from '../../_lib/root.cli';\n\nexport function createGitCommand(\n service: GitExtensionService,\n): readonly [string, Parameters<ExtensionAPI['registerCommand']>[1]] {\n return [\n COMMAND_NAME,\n {\n description: COMMAND_DESCRIPTION,\n handler: async (_args, ctx) => {\n const result = await service.execute();\n if (ctx.hasUI) ctx.ui.notify(result.message, result.level);\n },\n },\n ];\n}\n\nexport default (context: WithRoot<PiPluginContext<Partial<GitExtensionDependencies>>, GitPiScope>) =>\n createGitCommand(context.root.service);\n"],"mappings":";;AASA,SAAgB,iBACd,SACmE;CACnE,OAAO,CACL,cACA;EACE,aAAa;EACb,SAAS,OAAO,OAAO,QAAQ;GAC7B,MAAM,SAAS,MAAM,QAAQ,QAAQ;GACrC,IAAI,IAAI,OAAO,IAAI,GAAG,OAAO,OAAO,SAAS,OAAO,KAAK;EAC3D;CACF,CACF;AACF;AAEA,IAAA,mBAAgB,YACd,iBAAiB,QAAQ,KAAK,OAAO"}
@@ -0,0 +1,7 @@
1
+ const require_git_cli = require("./_lib/git.cli.cjs");
2
+ //#region src/extensions/workspaces/sessions/(backend)/command/git.cli.ts
3
+ var git_cli_default = (0, require("@agimon-ai/doompi-core/extension-file").defineCliCommand)(require_git_cli.default);
4
+ //#endregion
5
+ exports.default = git_cli_default;
6
+
7
+ //# sourceMappingURL=git.cli.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git.cli.cjs","names":["defineCliCommand","contribution"],"sources":["../../../../../../../src/extensions/workspaces/sessions/(backend)/command/git.cli.ts"],"sourcesContent":["import { defineCliCommand } from '@agimon-ai/doompi-core/extension-file';\n\nimport contribution from './_lib/git.cli';\n\nexport default defineCliCommand(contribution);\n"],"mappings":";;AAIA,IAAA,mBAAA,kDAAeA,CAAAA,CAAAA,iBAAAA,CAAiBC,gBAAAA,OAAY"}
@@ -0,0 +1,8 @@
1
+ import git_cli_default$1 from "./_lib/git.cli.mjs";
2
+ import { defineCliCommand } from "@agimon-ai/doompi-core/extension-file";
3
+ //#region src/extensions/workspaces/sessions/(backend)/command/git.cli.ts
4
+ var git_cli_default = defineCliCommand(git_cli_default$1);
5
+ //#endregion
6
+ export { git_cli_default as default };
7
+
8
+ //# sourceMappingURL=git.cli.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git.cli.mjs","names":["contribution"],"sources":["../../../../../../../src/extensions/workspaces/sessions/(backend)/command/git.cli.ts"],"sourcesContent":["import { defineCliCommand } from '@agimon-ai/doompi-core/extension-file';\n\nimport contribution from './_lib/git.cli';\n\nexport default defineCliCommand(contribution);\n"],"mappings":";;;AAIA,IAAA,kBAAe,iBAAiBA,iBAAY"}
@@ -0,0 +1,15 @@
1
+ //#region src/extensions/workspaces/sessions/(backend)/resource/_lib/doompi-use-git.cli.ts
2
+ function createDoompiUseGitResource(moduleUrl) {
3
+ return {
4
+ source: "@agimon-ai/doompi-git",
5
+ moduleUrl,
6
+ skills: [{
7
+ name: "doompi-use-git",
8
+ description: "Use @agimon-ai/doompi-git: Git worktree sessions for DoomPi: spawn an isolated worktree with its own session and manage it from the parent"
9
+ }]
10
+ };
11
+ }
12
+ //#endregion
13
+ exports.createDoompiUseGitResource = createDoompiUseGitResource;
14
+
15
+ //# sourceMappingURL=doompi-use-git.cli.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doompi-use-git.cli.cjs","names":[],"sources":["../../../../../../../../src/extensions/workspaces/sessions/(backend)/resource/_lib/doompi-use-git.cli.ts"],"sourcesContent":["export function createDoompiUseGitResource(moduleUrl: string) {\n return {\n source: '@agimon-ai/doompi-git',\n moduleUrl,\n skills: [\n {\n name: 'doompi-use-git',\n description:\n 'Use @agimon-ai/doompi-git: Git worktree sessions for DoomPi: spawn an isolated worktree with its own session and manage it from the parent',\n },\n ],\n };\n}\n"],"mappings":";AAAA,SAAgB,2BAA2B,WAAmB;CAC5D,OAAO;EACL,QAAQ;EACR;EACA,QAAQ,CACN;GACE,MAAM;GACN,aACE;EACJ,CACF;CACF;AACF"}
@@ -0,0 +1,15 @@
1
+ //#region src/extensions/workspaces/sessions/(backend)/resource/_lib/doompi-use-git.cli.ts
2
+ function createDoompiUseGitResource(moduleUrl) {
3
+ return {
4
+ source: "@agimon-ai/doompi-git",
5
+ moduleUrl,
6
+ skills: [{
7
+ name: "doompi-use-git",
8
+ description: "Use @agimon-ai/doompi-git: Git worktree sessions for DoomPi: spawn an isolated worktree with its own session and manage it from the parent"
9
+ }]
10
+ };
11
+ }
12
+ //#endregion
13
+ export { createDoompiUseGitResource };
14
+
15
+ //# sourceMappingURL=doompi-use-git.cli.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doompi-use-git.cli.mjs","names":[],"sources":["../../../../../../../../src/extensions/workspaces/sessions/(backend)/resource/_lib/doompi-use-git.cli.ts"],"sourcesContent":["export function createDoompiUseGitResource(moduleUrl: string) {\n return {\n source: '@agimon-ai/doompi-git',\n moduleUrl,\n skills: [\n {\n name: 'doompi-use-git',\n description:\n 'Use @agimon-ai/doompi-git: Git worktree sessions for DoomPi: spawn an isolated worktree with its own session and manage it from the parent',\n },\n ],\n };\n}\n"],"mappings":";AAAA,SAAgB,2BAA2B,WAAmB;CAC5D,OAAO;EACL,QAAQ;EACR;EACA,QAAQ,CACN;GACE,MAAM;GACN,aACE;EACJ,CACF;CACF;AACF"}
@@ -0,0 +1,6 @@
1
+ //#region src/extensions/workspaces/sessions/(backend)/resource/_lib/doompiGit.server.ts
2
+ var doompiGit_server_default = (context) => context.root.resources[0];
3
+ //#endregion
4
+ exports.default = doompiGit_server_default;
5
+
6
+ //# sourceMappingURL=doompiGit.server.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doompiGit.server.cjs","names":[],"sources":["../../../../../../../../src/extensions/workspaces/sessions/(backend)/resource/_lib/doompiGit.server.ts"],"sourcesContent":["import type { WithRoot } from '@agimon-ai/doompi-core/extension-file';\nimport type { DoomServerPluginContext } from '@agimon-ai/doompi-core/server-facet';\n\nimport type { GitServerScope } from '../../_lib/root.server';\n\nexport default (context: WithRoot<DoomServerPluginContext, GitServerScope>) => context.root.resources[0]!;\n"],"mappings":";AAKA,IAAA,4BAAgB,YAA+D,QAAQ,KAAK,UAAU"}
@@ -0,0 +1,6 @@
1
+ //#region src/extensions/workspaces/sessions/(backend)/resource/_lib/doompiGit.server.ts
2
+ var doompiGit_server_default = (context) => context.root.resources[0];
3
+ //#endregion
4
+ export { doompiGit_server_default as default };
5
+
6
+ //# sourceMappingURL=doompiGit.server.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doompiGit.server.mjs","names":[],"sources":["../../../../../../../../src/extensions/workspaces/sessions/(backend)/resource/_lib/doompiGit.server.ts"],"sourcesContent":["import type { WithRoot } from '@agimon-ai/doompi-core/extension-file';\nimport type { DoomServerPluginContext } from '@agimon-ai/doompi-core/server-facet';\n\nimport type { GitServerScope } from '../../_lib/root.server';\n\nexport default (context: WithRoot<DoomServerPluginContext, GitServerScope>) => context.root.resources[0]!;\n"],"mappings":";AAKA,IAAA,4BAAgB,YAA+D,QAAQ,KAAK,UAAU"}
@@ -0,0 +1,6 @@
1
+ //#region src/extensions/workspaces/sessions/(backend)/resource/_lib/doompiGitReadme.server.ts
2
+ var doompiGitReadme_server_default = (context) => context.root.resources[2];
3
+ //#endregion
4
+ exports.default = doompiGitReadme_server_default;
5
+
6
+ //# sourceMappingURL=doompiGitReadme.server.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doompiGitReadme.server.cjs","names":[],"sources":["../../../../../../../../src/extensions/workspaces/sessions/(backend)/resource/_lib/doompiGitReadme.server.ts"],"sourcesContent":["import type { WithRoot } from '@agimon-ai/doompi-core/extension-file';\nimport type { DoomServerPluginContext } from '@agimon-ai/doompi-core/server-facet';\n\nimport type { GitServerScope } from '../../_lib/root.server';\n\nexport default (context: WithRoot<DoomServerPluginContext, GitServerScope>) => context.root.resources[2]!;\n"],"mappings":";AAKA,IAAA,kCAAgB,YAA+D,QAAQ,KAAK,UAAU"}
@@ -0,0 +1,6 @@
1
+ //#region src/extensions/workspaces/sessions/(backend)/resource/_lib/doompiGitReadme.server.ts
2
+ var doompiGitReadme_server_default = (context) => context.root.resources[2];
3
+ //#endregion
4
+ export { doompiGitReadme_server_default as default };
5
+
6
+ //# sourceMappingURL=doompiGitReadme.server.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doompiGitReadme.server.mjs","names":[],"sources":["../../../../../../../../src/extensions/workspaces/sessions/(backend)/resource/_lib/doompiGitReadme.server.ts"],"sourcesContent":["import type { WithRoot } from '@agimon-ai/doompi-core/extension-file';\nimport type { DoomServerPluginContext } from '@agimon-ai/doompi-core/server-facet';\n\nimport type { GitServerScope } from '../../_lib/root.server';\n\nexport default (context: WithRoot<DoomServerPluginContext, GitServerScope>) => context.root.resources[2]!;\n"],"mappings":";AAKA,IAAA,kCAAgB,YAA+D,QAAQ,KAAK,UAAU"}