@agimon-ai/doompi-file-edit 0.0.1-alpha.8 → 0.0.1-alpha.80

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 (309) hide show
  1. package/README.md +115 -18
  2. package/dist/_virtual/_rolldown/runtime.cjs +23 -1
  3. package/dist/api-contracts.cjs +7 -0
  4. package/dist/api-contracts.d.cts +2 -0
  5. package/dist/api-contracts.d.mts +2 -0
  6. package/dist/api-contracts.mjs +2 -0
  7. package/dist/extensions/pi.cjs +41 -1
  8. package/dist/extensions/pi.cjs.map +1 -0
  9. package/dist/extensions/pi.d.cts +5 -2
  10. package/dist/extensions/pi.d.cts.map +1 -0
  11. package/dist/extensions/pi.d.mts +5 -2
  12. package/dist/extensions/pi.d.mts.map +1 -0
  13. package/dist/extensions/pi.mjs +36 -1
  14. package/dist/extensions/pi.mjs.map +1 -0
  15. package/dist/extensions/server.cjs +54 -0
  16. package/dist/extensions/server.cjs.map +1 -0
  17. package/dist/extensions/server.d.cts +5 -0
  18. package/dist/extensions/server.d.cts.map +1 -0
  19. package/dist/extensions/server.d.mts +5 -0
  20. package/dist/extensions/server.d.mts.map +1 -0
  21. package/dist/extensions/server.mjs +49 -0
  22. package/dist/extensions/server.mjs.map +1 -0
  23. package/dist/extensions/web.mjs +1505 -0
  24. package/dist/extensions/web.mjs.map +1 -0
  25. package/dist/index.cjs +3 -1
  26. package/dist/index.d.cts +4 -5
  27. package/dist/index.d.mts +4 -5
  28. package/dist/index.mjs +2 -1
  29. package/dist/src/constants/package.cjs +10 -0
  30. package/dist/src/constants/package.cjs.map +1 -0
  31. package/dist/src/constants/package.mjs +8 -0
  32. package/dist/src/constants/package.mjs.map +1 -0
  33. package/dist/src/extensions/(backend)/channel/fileEdits.server.cjs +9 -0
  34. package/dist/src/extensions/(backend)/channel/fileEdits.server.cjs.map +1 -0
  35. package/dist/src/extensions/(backend)/channel/fileEdits.server.mjs +10 -0
  36. package/dist/src/extensions/(backend)/channel/fileEdits.server.mjs.map +1 -0
  37. package/dist/src/extensions/workspaces/sessions/(backend)/_lib/piRoot.cjs +15 -0
  38. package/dist/src/extensions/workspaces/sessions/(backend)/_lib/piRoot.cjs.map +1 -0
  39. package/dist/src/extensions/workspaces/sessions/(backend)/_lib/piRoot.mjs +15 -0
  40. package/dist/src/extensions/workspaces/sessions/(backend)/_lib/piRoot.mjs.map +1 -0
  41. package/dist/src/extensions/workspaces/sessions/(backend)/_lib/serverRoot.cjs +13 -0
  42. package/dist/src/extensions/workspaces/sessions/(backend)/_lib/serverRoot.cjs.map +1 -0
  43. package/dist/src/extensions/workspaces/sessions/(backend)/_lib/serverRoot.mjs +13 -0
  44. package/dist/src/extensions/workspaces/sessions/(backend)/_lib/serverRoot.mjs.map +1 -0
  45. package/dist/src/extensions/workspaces/sessions/(backend)/api/file-edits/route.server.cjs +15 -0
  46. package/dist/src/extensions/workspaces/sessions/(backend)/api/file-edits/route.server.cjs.map +1 -0
  47. package/dist/src/extensions/workspaces/sessions/(backend)/api/file-edits/route.server.mjs +16 -0
  48. package/dist/src/extensions/workspaces/sessions/(backend)/api/file-edits/route.server.mjs.map +1 -0
  49. package/dist/src/extensions/workspaces/sessions/(backend)/command/file-edits.cli.cjs +6 -0
  50. package/dist/src/extensions/workspaces/sessions/(backend)/command/file-edits.cli.cjs.map +1 -0
  51. package/dist/src/extensions/workspaces/sessions/(backend)/command/file-edits.cli.mjs +7 -0
  52. package/dist/src/extensions/workspaces/sessions/(backend)/command/file-edits.cli.mjs.map +1 -0
  53. package/dist/src/extensions/workspaces/sessions/(backend)/hook/session-start.cli.cjs +6 -0
  54. package/dist/src/extensions/workspaces/sessions/(backend)/hook/session-start.cli.cjs.map +1 -0
  55. package/dist/src/extensions/workspaces/sessions/(backend)/hook/session-start.cli.mjs +7 -0
  56. package/dist/src/extensions/workspaces/sessions/(backend)/hook/session-start.cli.mjs.map +1 -0
  57. package/dist/src/extensions/workspaces/sessions/(backend)/hook/tool-execution-end.cli.cjs +6 -0
  58. package/dist/src/extensions/workspaces/sessions/(backend)/hook/tool-execution-end.cli.cjs.map +1 -0
  59. package/dist/src/extensions/workspaces/sessions/(backend)/hook/tool-execution-end.cli.mjs +7 -0
  60. package/dist/src/extensions/workspaces/sessions/(backend)/hook/tool-execution-end.cli.mjs.map +1 -0
  61. package/dist/src/extensions/workspaces/sessions/(backend)/hook/tool-execution-end.server.cjs +6 -0
  62. package/dist/src/extensions/workspaces/sessions/(backend)/hook/tool-execution-end.server.cjs.map +1 -0
  63. package/dist/src/extensions/workspaces/sessions/(backend)/hook/tool-execution-end.server.mjs +7 -0
  64. package/dist/src/extensions/workspaces/sessions/(backend)/hook/tool-execution-end.server.mjs.map +1 -0
  65. package/dist/src/extensions/workspaces/sessions/(backend)/hook/tool-execution-start.cli.cjs +6 -0
  66. package/dist/src/extensions/workspaces/sessions/(backend)/hook/tool-execution-start.cli.cjs.map +1 -0
  67. package/dist/src/extensions/workspaces/sessions/(backend)/hook/tool-execution-start.cli.mjs +7 -0
  68. package/dist/src/extensions/workspaces/sessions/(backend)/hook/tool-execution-start.cli.mjs.map +1 -0
  69. package/dist/src/extensions/workspaces/sessions/(backend)/hook/tool-execution-start.server.cjs +6 -0
  70. package/dist/src/extensions/workspaces/sessions/(backend)/hook/tool-execution-start.server.cjs.map +1 -0
  71. package/dist/src/extensions/workspaces/sessions/(backend)/hook/tool-execution-start.server.mjs +7 -0
  72. package/dist/src/extensions/workspaces/sessions/(backend)/hook/tool-execution-start.server.mjs.map +1 -0
  73. package/dist/src/extensions/workspaces/sessions/(backend)/root.cli.cjs +7 -0
  74. package/dist/src/extensions/workspaces/sessions/(backend)/root.cli.cjs.map +1 -0
  75. package/dist/src/extensions/workspaces/sessions/(backend)/root.cli.mjs +8 -0
  76. package/dist/src/extensions/workspaces/sessions/(backend)/root.cli.mjs.map +1 -0
  77. package/dist/src/extensions/workspaces/sessions/(backend)/root.server.cjs +7 -0
  78. package/dist/src/extensions/workspaces/sessions/(backend)/root.server.cjs.map +1 -0
  79. package/dist/src/extensions/workspaces/sessions/(backend)/root.server.mjs +8 -0
  80. package/dist/src/extensions/workspaces/sessions/(backend)/root.server.mjs.map +1 -0
  81. package/dist/src/schemas/apiContracts.cjs +154 -0
  82. package/dist/src/schemas/apiContracts.cjs.map +1 -0
  83. package/dist/src/schemas/apiContracts.d.cts +53 -0
  84. package/dist/src/schemas/apiContracts.d.cts.map +1 -0
  85. package/dist/src/schemas/apiContracts.d.mts +53 -0
  86. package/dist/src/schemas/apiContracts.d.mts.map +1 -0
  87. package/dist/src/schemas/apiContracts.mjs +151 -0
  88. package/dist/src/schemas/apiContracts.mjs.map +1 -0
  89. package/dist/src/services/commandLine/index.cjs +39 -0
  90. package/dist/src/services/commandLine/index.cjs.map +1 -0
  91. package/dist/src/services/commandLine/index.mjs +37 -0
  92. package/dist/src/services/commandLine/index.mjs.map +1 -0
  93. package/dist/src/services/doomIgnore/index.cjs +42 -0
  94. package/dist/src/services/doomIgnore/index.cjs.map +1 -0
  95. package/dist/src/services/doomIgnore/index.mjs +39 -0
  96. package/dist/src/services/doomIgnore/index.mjs.map +1 -0
  97. package/dist/src/services/editTracker/index.cjs +250 -0
  98. package/dist/src/services/editTracker/index.cjs.map +1 -0
  99. package/dist/src/services/editTracker/index.mjs +248 -0
  100. package/dist/src/services/editTracker/index.mjs.map +1 -0
  101. package/dist/src/services/editorConfigService/index.cjs +42 -0
  102. package/dist/src/services/editorConfigService/index.cjs.map +1 -0
  103. package/dist/src/services/editorConfigService/index.mjs +38 -0
  104. package/dist/src/services/editorConfigService/index.mjs.map +1 -0
  105. package/dist/src/services/editorLauncher/index.cjs +92 -0
  106. package/dist/src/services/editorLauncher/index.cjs.map +1 -0
  107. package/dist/src/services/editorLauncher/index.mjs +88 -0
  108. package/dist/src/services/editorLauncher/index.mjs.map +1 -0
  109. package/dist/src/services/fileChanges/index.cjs +143 -0
  110. package/dist/src/services/fileChanges/index.cjs.map +1 -0
  111. package/dist/src/services/fileChanges/index.mjs +136 -0
  112. package/dist/src/services/fileChanges/index.mjs.map +1 -0
  113. package/dist/src/services/fileEditPaths/index.cjs +89 -0
  114. package/dist/src/services/fileEditPaths/index.cjs.map +1 -0
  115. package/dist/src/services/fileEditPaths/index.mjs +85 -0
  116. package/dist/src/services/fileEditPaths/index.mjs.map +1 -0
  117. package/dist/src/services/fileEditRuntime/index.cjs +194 -0
  118. package/dist/src/services/fileEditRuntime/index.cjs.map +1 -0
  119. package/dist/src/services/fileEditRuntime/index.mjs +190 -0
  120. package/dist/src/services/fileEditRuntime/index.mjs.map +1 -0
  121. package/dist/src/services/fileEditSession/index.cjs +110 -0
  122. package/dist/src/services/fileEditSession/index.cjs.map +1 -0
  123. package/dist/src/services/fileEditSession/index.mjs +107 -0
  124. package/dist/src/services/fileEditSession/index.mjs.map +1 -0
  125. package/dist/src/services/fileEditsApi/index.cjs +313 -0
  126. package/dist/src/services/fileEditsApi/index.cjs.map +1 -0
  127. package/dist/src/services/fileEditsApi/index.mjs +308 -0
  128. package/dist/src/services/fileEditsApi/index.mjs.map +1 -0
  129. package/dist/src/services/gitDiffService/index.cjs +114 -0
  130. package/dist/src/services/gitDiffService/index.cjs.map +1 -0
  131. package/dist/src/services/gitDiffService/index.mjs +110 -0
  132. package/dist/src/services/gitDiffService/index.mjs.map +1 -0
  133. package/dist/src/services/gitStatus/index.cjs +94 -0
  134. package/dist/src/services/gitStatus/index.cjs.map +1 -0
  135. package/dist/src/services/gitStatus/index.mjs +92 -0
  136. package/dist/src/services/gitStatus/index.mjs.map +1 -0
  137. package/dist/src/services/lineDiff/index.cjs +206 -0
  138. package/dist/src/services/lineDiff/index.cjs.map +1 -0
  139. package/dist/src/services/lineDiff/index.mjs +205 -0
  140. package/dist/src/services/lineDiff/index.mjs.map +1 -0
  141. package/dist/src/services/sessionStateSweep/index.cjs +89 -0
  142. package/dist/src/services/sessionStateSweep/index.cjs.map +1 -0
  143. package/dist/src/services/sessionStateSweep/index.mjs +85 -0
  144. package/dist/src/services/sessionStateSweep/index.mjs.map +1 -0
  145. package/dist/src/services/snapshotStore/index.cjs +87 -0
  146. package/dist/src/services/snapshotStore/index.cjs.map +1 -0
  147. package/dist/src/services/snapshotStore/index.mjs +83 -0
  148. package/dist/src/services/snapshotStore/index.mjs.map +1 -0
  149. package/dist/src/services/timelineStore/index.cjs +99 -0
  150. package/dist/src/services/timelineStore/index.cjs.map +1 -0
  151. package/dist/src/services/timelineStore/index.mjs +97 -0
  152. package/dist/src/services/timelineStore/index.mjs.map +1 -0
  153. package/dist/src/services/treeManifest/index.cjs +148 -0
  154. package/dist/src/services/treeManifest/index.cjs.map +1 -0
  155. package/dist/src/services/treeManifest/index.mjs +143 -0
  156. package/dist/src/services/treeManifest/index.mjs.map +1 -0
  157. package/dist/src/services/webFilesChannel/index.cjs +109 -0
  158. package/dist/src/services/webFilesChannel/index.cjs.map +1 -0
  159. package/dist/src/services/webFilesChannel/index.mjs +105 -0
  160. package/dist/src/services/webFilesChannel/index.mjs.map +1 -0
  161. package/dist/src/tui/fileEditDependencies.cjs +43 -0
  162. package/dist/src/tui/fileEditDependencies.cjs.map +1 -0
  163. package/dist/src/tui/fileEditDependencies.d.cts +12 -0
  164. package/dist/src/tui/fileEditDependencies.d.cts.map +1 -0
  165. package/dist/src/tui/fileEditDependencies.d.mts +12 -0
  166. package/dist/src/tui/fileEditDependencies.d.mts.map +1 -0
  167. package/dist/src/tui/fileEditDependencies.mjs +43 -0
  168. package/dist/src/tui/fileEditDependencies.mjs.map +1 -0
  169. package/dist/src/tui/fileEditOverlay.cjs +144 -0
  170. package/dist/{tui → src/tui}/fileEditOverlay.cjs.map +1 -1
  171. package/dist/src/tui/fileEditOverlay.mjs +142 -0
  172. package/dist/{tui → src/tui}/fileEditOverlay.mjs.map +1 -1
  173. package/dist/src/tui/fileEditWorkflow.cjs +68 -0
  174. package/dist/src/tui/fileEditWorkflow.cjs.map +1 -0
  175. package/dist/src/tui/fileEditWorkflow.mjs +68 -0
  176. package/dist/src/tui/fileEditWorkflow.mjs.map +1 -0
  177. package/dist/src/types/apiRoutes.cjs +56 -0
  178. package/dist/src/types/apiRoutes.cjs.map +1 -0
  179. package/dist/src/types/apiRoutes.mjs +56 -0
  180. package/dist/src/types/apiRoutes.mjs.map +1 -0
  181. package/dist/src/types/domain.d.cts +91 -0
  182. package/dist/src/types/domain.d.cts.map +1 -0
  183. package/dist/src/types/domain.d.mts +91 -0
  184. package/dist/src/types/domain.d.mts.map +1 -0
  185. package/dist/src/types/editTracker.d.cts +29 -0
  186. package/dist/src/types/editTracker.d.cts.map +1 -0
  187. package/dist/src/types/editTracker.d.mts +29 -0
  188. package/dist/src/types/editTracker.d.mts.map +1 -0
  189. package/dist/src/types/editorConfigService.d.cts +11 -0
  190. package/dist/src/types/editorConfigService.d.cts.map +1 -0
  191. package/dist/src/types/editorConfigService.d.mts +11 -0
  192. package/dist/src/types/editorConfigService.d.mts.map +1 -0
  193. package/dist/src/types/editorLauncher.d.cts +17 -0
  194. package/dist/src/types/editorLauncher.d.cts.map +1 -0
  195. package/dist/src/types/editorLauncher.d.mts +17 -0
  196. package/dist/src/types/editorLauncher.d.mts.map +1 -0
  197. package/dist/src/types/fileEditPaths.d.cts +20 -0
  198. package/dist/src/types/fileEditPaths.d.cts.map +1 -0
  199. package/dist/src/types/fileEditPaths.d.mts +20 -0
  200. package/dist/src/types/fileEditPaths.d.mts.map +1 -0
  201. package/dist/src/types/fileEditWorkflow.d.cts +7 -0
  202. package/dist/src/types/fileEditWorkflow.d.cts.map +1 -0
  203. package/dist/src/types/fileEditWorkflow.d.mts +7 -0
  204. package/dist/src/types/fileEditWorkflow.d.mts.map +1 -0
  205. package/dist/src/types/fileEditsApi.cjs +25 -0
  206. package/dist/src/types/fileEditsApi.cjs.map +1 -0
  207. package/dist/src/types/fileEditsApi.mjs +24 -0
  208. package/dist/src/types/fileEditsApi.mjs.map +1 -0
  209. package/dist/src/types/gitDiffService.d.cts +7 -0
  210. package/dist/src/types/gitDiffService.d.cts.map +1 -0
  211. package/dist/src/types/gitDiffService.d.mts +7 -0
  212. package/dist/src/types/gitDiffService.d.mts.map +1 -0
  213. package/dist/src/types/index.d.cts +24 -0
  214. package/dist/src/types/index.d.cts.map +1 -0
  215. package/dist/src/types/index.d.mts +24 -0
  216. package/dist/src/types/index.d.mts.map +1 -0
  217. package/dist/src/types/snapshotStore.d.cts +35 -0
  218. package/dist/src/types/snapshotStore.d.cts.map +1 -0
  219. package/dist/src/types/snapshotStore.d.mts +35 -0
  220. package/dist/src/types/snapshotStore.d.mts.map +1 -0
  221. package/dist/src/types/timelineStore.d.cts +12 -0
  222. package/dist/src/types/timelineStore.d.cts.map +1 -0
  223. package/dist/src/types/timelineStore.d.mts +12 -0
  224. package/dist/src/types/timelineStore.d.mts.map +1 -0
  225. package/dist/src/types/treeManifest.d.cts +70 -0
  226. package/dist/src/types/treeManifest.d.cts.map +1 -0
  227. package/dist/src/types/treeManifest.d.mts +70 -0
  228. package/dist/src/types/treeManifest.d.mts.map +1 -0
  229. package/dist/src/types/webFiles.cjs +10 -0
  230. package/dist/src/types/webFiles.cjs.map +1 -0
  231. package/dist/src/types/webFiles.mjs +9 -0
  232. package/dist/src/types/webFiles.mjs.map +1 -0
  233. package/package.json +88 -24
  234. package/dist/_virtual/_@oxc-project_runtime@0.143.0/helpers/esm/decorate.cjs +0 -1
  235. package/dist/_virtual/_@oxc-project_runtime@0.143.0/helpers/esm/decorate.mjs +0 -1
  236. package/dist/_virtual/_@oxc-project_runtime@0.143.0/helpers/esm/decorateMetadata.cjs +0 -1
  237. package/dist/_virtual/_@oxc-project_runtime@0.143.0/helpers/esm/decorateMetadata.mjs +0 -1
  238. package/dist/_virtual/_@oxc-project_runtime@0.143.0/helpers/esm/decorateParam.cjs +0 -1
  239. package/dist/_virtual/_@oxc-project_runtime@0.143.0/helpers/esm/decorateParam.mjs +0 -1
  240. package/dist/commandLine.cjs +0 -2
  241. package/dist/commandLine.cjs.map +0 -1
  242. package/dist/commandLine.mjs +0 -2
  243. package/dist/commandLine.mjs.map +0 -1
  244. package/dist/container/index.cjs +0 -2
  245. package/dist/container/index.cjs.map +0 -1
  246. package/dist/container/index.d.cts +0 -7
  247. package/dist/container/index.d.cts.map +0 -1
  248. package/dist/container/index.d.mts +0 -7
  249. package/dist/container/index.d.mts.map +0 -1
  250. package/dist/container/index.mjs +0 -2
  251. package/dist/container/index.mjs.map +0 -1
  252. package/dist/domain.d.cts +0 -32
  253. package/dist/domain.d.cts.map +0 -1
  254. package/dist/domain.d.mts +0 -32
  255. package/dist/domain.d.mts.map +0 -1
  256. package/dist/extension.cjs +0 -2
  257. package/dist/extension.cjs.map +0 -1
  258. package/dist/extension.d.cts +0 -6
  259. package/dist/extension.d.cts.map +0 -1
  260. package/dist/extension.d.mts +0 -6
  261. package/dist/extension.d.mts.map +0 -1
  262. package/dist/extension.mjs +0 -2
  263. package/dist/extension.mjs.map +0 -1
  264. package/dist/extensions/doom.cjs +0 -2
  265. package/dist/extensions/doom.cjs.map +0 -1
  266. package/dist/extensions/doom.d.cts +0 -6
  267. package/dist/extensions/doom.d.cts.map +0 -1
  268. package/dist/extensions/doom.d.mts +0 -6
  269. package/dist/extensions/doom.d.mts.map +0 -1
  270. package/dist/extensions/doom.mjs +0 -2
  271. package/dist/extensions/doom.mjs.map +0 -1
  272. package/dist/services/EditTracker/EditTracker.cjs +0 -2
  273. package/dist/services/EditTracker/EditTracker.cjs.map +0 -1
  274. package/dist/services/EditTracker/EditTracker.mjs +0 -2
  275. package/dist/services/EditTracker/EditTracker.mjs.map +0 -1
  276. package/dist/services/EditorConfigService/EditorConfigService.cjs +0 -2
  277. package/dist/services/EditorConfigService/EditorConfigService.cjs.map +0 -1
  278. package/dist/services/EditorConfigService/EditorConfigService.mjs +0 -2
  279. package/dist/services/EditorConfigService/EditorConfigService.mjs.map +0 -1
  280. package/dist/services/EditorLauncher/EditorLauncher.cjs +0 -2
  281. package/dist/services/EditorLauncher/EditorLauncher.cjs.map +0 -1
  282. package/dist/services/EditorLauncher/EditorLauncher.mjs +0 -2
  283. package/dist/services/EditorLauncher/EditorLauncher.mjs.map +0 -1
  284. package/dist/services/FileEditPaths/FileEditPaths.cjs +0 -2
  285. package/dist/services/FileEditPaths/FileEditPaths.cjs.map +0 -1
  286. package/dist/services/FileEditPaths/FileEditPaths.mjs +0 -2
  287. package/dist/services/FileEditPaths/FileEditPaths.mjs.map +0 -1
  288. package/dist/services/FileEditWorkflow/FileEditWorkflow.cjs +0 -2
  289. package/dist/services/FileEditWorkflow/FileEditWorkflow.cjs.map +0 -1
  290. package/dist/services/FileEditWorkflow/FileEditWorkflow.mjs +0 -2
  291. package/dist/services/FileEditWorkflow/FileEditWorkflow.mjs.map +0 -1
  292. package/dist/services/GitDiffService/GitDiffService.cjs +0 -5
  293. package/dist/services/GitDiffService/GitDiffService.cjs.map +0 -1
  294. package/dist/services/GitDiffService/GitDiffService.mjs +0 -5
  295. package/dist/services/GitDiffService/GitDiffService.mjs.map +0 -1
  296. package/dist/services/TimelineStore/TimelineStore.cjs +0 -3
  297. package/dist/services/TimelineStore/TimelineStore.cjs.map +0 -1
  298. package/dist/services/TimelineStore/TimelineStore.mjs +0 -3
  299. package/dist/services/TimelineStore/TimelineStore.mjs.map +0 -1
  300. package/dist/tui/fileEditOverlay.cjs +0 -2
  301. package/dist/tui/fileEditOverlay.mjs +0 -2
  302. package/dist/types.cjs +0 -2
  303. package/dist/types.cjs.map +0 -1
  304. package/dist/types.d.cts +0 -13
  305. package/dist/types.d.cts.map +0 -1
  306. package/dist/types.d.mts +0 -13
  307. package/dist/types.d.mts.map +0 -1
  308. package/dist/types.mjs +0 -2
  309. package/dist/types.mjs.map +0 -1
package/README.md CHANGED
@@ -1,38 +1,135 @@
1
1
  # @agimon-ai/doompi-file-edit
2
2
 
3
- Pi session file edit timeline and external editor overlay.
3
+ A session-scoped file-change timeline and external-editor launcher for Pi.
4
4
 
5
- A timeline of every file the session edited, plus an external editor handoff.
5
+ Part of the [DoomPi distribution](https://www.npmjs.com/package/@agimon-ai/doompi).
6
6
 
7
- Part of [Doompi](https://www.npmjs.com/package/@agimon-ai/doompi), a coding agent that loads
8
- only the skills and tools you name. This package is composed by Doompi and is not usually
9
- installed on its own.
7
+ The package tracks files changed through session tool calls and captures content for diffs, without
8
+ requiring a Git repository. `edit` and `write` name their file in the call, so the package can capture
9
+ the before and after content within its size and format limits. Bash calls instead trigger a bounded
10
+ tree comparison. See [What this cannot see](#what-this-cannot-see) for gaps in that coverage.
11
+
12
+ > **Alpha:** timeline and UI contracts may change between releases.
13
+
14
+ ## Requirements
15
+
16
+ - Node.js 22.19.0 or newer
17
+ - Pi 0.85.0 and Pi TUI 0.85.0
18
+ - Git for diffs against `HEAD`
10
19
 
11
20
  ## Install
12
21
 
22
+ `doompi init` and `dpi init` include File Edit in `default.packages` in `.doom/modes.yaml`.
23
+ Remove it or move it to a named layer to change which major modes load it. Standalone Pi loads the
24
+ same extension:
25
+
13
26
  ```bash
14
- npm install @agimon-ai/doompi-file-edit
27
+ pi install npm:@agimon-ai/doompi-file-edit
15
28
  ```
16
29
 
17
- ## How it loads
30
+ | Entry | Purpose |
31
+ | ----------------------------------------------- | -------------------------------------------------------- |
32
+ | `@agimon-ai/doompi-file-edit/extensions/pi` | Timeline and DoomPi Leader shortcut |
33
+ | `@agimon-ai/doompi-file-edit/extensions/server` | Server-owned file API and changed-file channel lifecycle |
34
+ | `@agimon-ai/doompi-file-edit` | Library API |
35
+
36
+ ## Open the timeline
37
+
38
+ Use `SPC e f` in DoomPi. Select a file to inspect its diff or open it in the configured editor.
39
+
40
+ TUI diffs compare the working tree with Git `HEAD` and are capped at 200 lines and 256 KiB. The
41
+ overlay and external-editor handoff require an interactive TUI. Headless hosts can consume the
42
+ timeline services but cannot display the panel.
43
+
44
+ ## In the cockpit
18
45
 
19
- Doompi loads this unconditionally. It is core, not a layer, so it does not appear in
20
- `.doom/modes.yaml`: making it optional would only create broken configurations.
46
+ The `# files` group in the activity dock lists every file the session changed. Selecting one opens a
47
+ temporary tab holding three views of it:
21
48
 
22
- Extension entry: `@agimon-ai/doompi-file-edit/extensions/doom`
49
+ - **diff**: what the session did to the file, followed by each recorded change on its own, so a file
50
+ edited four times shows four distinct diffs rather than one merged blur.
51
+ - **source**: the file as it stands, editable. Saving writes straight to disk and is refused if the
52
+ file changed since it was opened, so a hand edit cannot silently discard what the agent wrote.
53
+ - **preview**: rendered Markdown, or HTML in a sandboxed frame.
23
54
 
24
- ## Leader
55
+ Selecting text in any view raises a comment box. Comments queue on the tab and one **send review**
56
+ builds a single message quoting each anchor, so several comments cost one turn.
57
+
58
+ Diffs here do not use Git. The package captures the file's content before an `edit` or `write` runs
59
+ and keeps it, content-addressed, beside the session timeline; both go when the session ends.
60
+
61
+ ### What this cannot see
62
+
63
+ - A file the session changed and then deleted. The dock lists things to open, so a row that can only
64
+ answer "this is gone" is left out. The timeline still holds the change, so a tab already open on
65
+ the file keeps working and says why it has nothing to show.
66
+ - A file changed by a background process that outlives its Bash call. The tree is compared when the
67
+ call ends.
68
+ - A file changed outside any tool. There is no always-on watcher.
69
+ - Content past 1 MiB, and binary files. These are listed as changed, without content.
70
+ - A file found only by comparing the tree has no baseline, so it is listed, readable and editable,
71
+ but never diffed. Rows and versions say so rather than showing an empty diff.
72
+ - The tree walk skips dependency and build directories and is capped on entries and depth, so a very
73
+ deep or very large checkout can under-report.
74
+
75
+ ## Configure the editor
76
+
77
+ Set the shared DoomPi configuration in `~/.pi/.doom/config.yaml`:
78
+
79
+ ```yaml
80
+ editor:
81
+ command: nvim +{line} {file}
82
+ ```
25
83
 
26
- `SPC e f` opens session edits, once the extension is loaded.
84
+ For a standalone installation, the package falls back to
85
+ `~/.pi/agent/doom-file-edit/config.yaml`. Resolution order is:
27
86
 
28
- ## Entry points
87
+ 1. DoomPi `editor.command`;
88
+ 2. package fallback configuration;
89
+ 3. `$VISUAL`;
90
+ 4. `$EDITOR`;
91
+ 5. `nano {file}` on Unix-like systems.
29
92
 
30
- | Import |
31
- | --------------------------------------------- |
32
- | `@agimon-ai/doompi-file-edit` |
33
- | `@agimon-ai/doompi-file-edit/extensions/pi` |
34
- | `@agimon-ai/doompi-file-edit/extensions/doom` |
93
+ Only `{file}` and `{line}` placeholders are expanded. The command is split and spawned directly,
94
+ not passed through a shell, so shell operators and expansions are not interpreted.
95
+
96
+ ## Data behavior
97
+
98
+ The timeline contains file paths, and the snapshot store holds copies of the file content the
99
+ session changed. That content can be sensitive. Both live under the Pi agent directory,
100
+ `$PI_CODING_AGENT_DIR` or `~/.pi/agent/doom-file-edit`, never inside the working tree, and should be
101
+ protected with the same access controls as Pi session data.
102
+
103
+ A session removes its own timeline and snapshots when it ends. A session that is killed cannot, so
104
+ each session also sweeps state that no longer belongs to anyone: a timeline and its snapshots are
105
+ removed once nothing has written to them for a week. An older build kept this state in the
106
+ repository's git common directory, and that directory is cleared away under the same rule.
107
+
108
+ The session API reads and writes only files the timeline already records, so a request cannot reach
109
+ a file this session never changed.
110
+
111
+ ## Public API
112
+
113
+ ```ts
114
+ import { createFileEditDependencies, fileEditExtension } from '@agimon-ai/doompi-file-edit';
115
+ import type { FileDiff, FileEditEntry } from '@agimon-ai/doompi-file-edit';
116
+ ```
117
+
118
+ The root also exports editor-resolution and timeline domain types for host integrations.
119
+
120
+ ## Development
121
+
122
+ ```bash
123
+ pnpm build
124
+ pnpm typecheck
125
+ pnpm test
126
+ pnpm lint
127
+ ```
128
+
129
+ Maintained by [Agimon](https://agimon.ai/about).
35
130
 
36
131
  ## License
37
132
 
38
133
  MIT
134
+
135
+ The public Pi and server loaders live in `src/extensions`. Controllers declare commands, events, APIs, and tracking activities. Services own filesystem and timeline logic; TUI modules assemble and present the review workflow. Public reusable types and dependency construction are exposed through flat `src/exports` entries. The Pi factory owns its optional UI service and awaits cleanup through `onDispose`.
@@ -1 +1,23 @@
1
- var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},s=(n,r,s)=>(s=n==null?{}:e(i(n)),o(r||!n||!n.__esModule||!a.call(n,`default`)?t(s,`default`,{value:n,enumerable:!0}):s,n));exports.__toESM=s;
1
+ //#region \0rolldown/runtime.js
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __copyProps = (to, from, except, desc) => {
9
+ if (from && typeof from === "object" || typeof from === "function") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
10
+ key = keys[i];
11
+ if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
12
+ get: ((k) => from[k]).bind(null, key),
13
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
14
+ });
15
+ }
16
+ return to;
17
+ };
18
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule || !__hasOwnProp.call(mod, "default") ? __defProp(target, "default", {
19
+ value: mod,
20
+ enumerable: true
21
+ }) : target, mod));
22
+ //#endregion
23
+ exports.__toESM = __toESM;
@@ -0,0 +1,7 @@
1
+ Object.defineProperties(exports, {
2
+ __esModule: { value: true },
3
+ [Symbol.toStringTag]: { value: "Module" }
4
+ });
5
+ const require_apiContracts = require("./src/schemas/apiContracts.cjs");
6
+ exports.apiContracts = require_apiContracts.apiContracts;
7
+ exports.default = require_apiContracts.apiContracts;
@@ -0,0 +1,2 @@
1
+ import { apiContracts } from "./src/schemas/apiContracts.cjs";
2
+ export { apiContracts, apiContracts as default };
@@ -0,0 +1,2 @@
1
+ import { apiContracts } from "./src/schemas/apiContracts.mjs";
2
+ export { apiContracts, apiContracts as default };
@@ -0,0 +1,2 @@
1
+ import { apiContracts } from "./src/schemas/apiContracts.mjs";
2
+ export { apiContracts, apiContracts as default };
@@ -1 +1,41 @@
1
- const e=require("../extension.cjs");module.exports=e.fileEditExtension;
1
+ Object.defineProperties(exports, {
2
+ __esModule: { value: true },
3
+ [Symbol.toStringTag]: { value: "Module" }
4
+ });
5
+ const require_root_cli = require("../src/extensions/workspaces/sessions/(backend)/root.cli.cjs");
6
+ const require_file_edits_cli = require("../src/extensions/workspaces/sessions/(backend)/command/file-edits.cli.cjs");
7
+ const require_session_start_cli = require("../src/extensions/workspaces/sessions/(backend)/hook/session-start.cli.cjs");
8
+ const require_tool_execution_end_cli = require("../src/extensions/workspaces/sessions/(backend)/hook/tool-execution-end.cli.cjs");
9
+ const require_tool_execution_start_cli = require("../src/extensions/workspaces/sessions/(backend)/hook/tool-execution-start.cli.cjs");
10
+ let _agimon_ai_doompi_core_pi_extension = require("@agimon-ai/doompi-core/pi-extension");
11
+ let _agimon_ai_doompi_core_extension_file = require("@agimon-ai/doompi-core/extension-file");
12
+ //#region generated/pi.ts
13
+ const at = (value, context) => typeof value === "function" ? value(context) : value;
14
+ const many = (value, context) => {
15
+ const resolved = typeof value === "function" ? value(context) : value;
16
+ return Array.isArray(resolved) ? resolved : [resolved];
17
+ };
18
+ const extension = (0, _agimon_ai_doompi_core_pi_extension.definePiExtension)("@agimon-ai/doompi-file-edit", async (context) => {
19
+ const scopeSession = await require_root_cli.default(context);
20
+ const contextSession = {
21
+ ...context,
22
+ root: scopeSession.value
23
+ };
24
+ return {
25
+ ...(0, _agimon_ai_doompi_core_extension_file.composeRootHooks)(scopeSession),
26
+ get commands() {
27
+ return [...many(require_file_edits_cli.default, contextSession)];
28
+ },
29
+ events: {
30
+ session_start: at(require_session_start_cli.default, contextSession),
31
+ tool_execution_end: at(require_tool_execution_end_cli.default, contextSession),
32
+ tool_execution_start: at(require_tool_execution_start_cli.default, contextSession)
33
+ },
34
+ services: [...scopeSession.services ?? []]
35
+ };
36
+ });
37
+ //#endregion
38
+ exports.default = extension;
39
+ exports.extension = extension;
40
+
41
+ //# sourceMappingURL=pi.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pi.cjs","names":["definePiExtension","rootSession","composeRootHooks","commandFileEdits","hookSessionStart","hookToolExecutionEnd","hookToolExecutionStart"],"sources":["../../generated/pi.ts"],"sourcesContent":["// Generated by @agimon-ai/doompi-build. Do not edit by hand.\nimport { definePiExtension, type PiPluginContext, type PiPluginContributions } from '@agimon-ai/doompi-core/pi-extension';\nimport { composeRootHooks } from '@agimon-ai/doompi-core/extension-file';\n\nimport rootSession from '../src/extensions/workspaces/sessions/(backend)/root.cli';\nimport commandFileEdits from '../src/extensions/workspaces/sessions/(backend)/command/file-edits.cli';\nimport hookSessionStart from '../src/extensions/workspaces/sessions/(backend)/hook/session-start.cli';\nimport hookToolExecutionEnd from '../src/extensions/workspaces/sessions/(backend)/hook/tool-execution-end.cli';\nimport hookToolExecutionStart from '../src/extensions/workspaces/sessions/(backend)/hook/tool-execution-start.cli';\n\ntype OptionsOf<T> = T extends (context: PiPluginContext<infer Options>) => unknown ? Options : never;\ntype InferredOptions = Exclude<OptionsOf<typeof rootSession> | OptionsOf<typeof commandFileEdits> | OptionsOf<typeof hookSessionStart> | OptionsOf<typeof hookToolExecutionEnd> | OptionsOf<typeof hookToolExecutionStart>, undefined>;\ntype Intersect<Union> =\n (Union extends unknown ? (value: Union) => void : never) extends (value: infer Value) => void ? Value : never;\ntype ExtensionOptions = [InferredOptions] extends [never] ? undefined : Intersect<InferredOptions>;\n\ntype Factory<T, C> = (context: C) => T;\nconst at = <T, C>(value: T | Factory<T, C>, context: C): T =>\n typeof value === 'function' ? (value as Factory<T, C>)(context) : value;\ntype ManyFactory<T, C> = (context: C) => T | readonly T[];\nconst many = <T, C>(value: T | readonly T[] | ManyFactory<T, C>, context: C): readonly T[] => {\n const resolved = typeof value === 'function' ? (value as ManyFactory<T, C>)(context) : value;\n return Array.isArray(resolved) ? resolved : [resolved as T];\n};\n\nexport const extension = definePiExtension<ExtensionOptions>('@agimon-ai/doompi-file-edit', async (context) => {\n const scopeSession = await rootSession(context);\n const contextSession = { ...context, root: scopeSession.value };\n return {\n ...composeRootHooks(scopeSession),\n get commands(): PiPluginContributions['commands'] { return [...many(commandFileEdits, contextSession)]; },\n events: {\n session_start: at(hookSessionStart, contextSession) as NonNullable<PiPluginContributions['events']>['session_start'],\n tool_execution_end: at(hookToolExecutionEnd, contextSession) as NonNullable<PiPluginContributions['events']>['tool_execution_end'],\n tool_execution_start: at(hookToolExecutionStart, contextSession) as NonNullable<PiPluginContributions['events']>['tool_execution_start'],\n },\n services: [...(scopeSession.services ?? [])],\n };\n});\n\nexport default extension;\n"],"mappings":";;;;;;;;;;;;AAiBA,MAAM,MAAY,OAA0B,YAC1C,OAAO,UAAU,aAAc,MAAwB,OAAO,IAAI;AAEpE,MAAM,QAAc,OAA6C,YAA6B;CAC5F,MAAM,WAAW,OAAO,UAAU,aAAc,MAA4B,OAAO,IAAI;CACvF,OAAO,MAAM,QAAQ,QAAQ,IAAI,WAAW,CAAC,QAAa;AAC5D;AAEA,MAAa,aAAA,GAAYA,oCAAAA,kBAAAA,CAAoC,+BAA+B,OAAO,YAAY;CAC7G,MAAM,eAAe,MAAMC,iBAAAA,QAAY,OAAO;CAC9C,MAAM,iBAAiB;EAAE,GAAG;EAAS,MAAM,aAAa;CAAM;CAC9D,OAAO;EACL,IAAA,GAAGC,sCAAAA,iBAAAA,CAAiB,YAAY;EAChC,IAAI,WAA8C;GAAE,OAAO,CAAC,GAAG,KAAKC,uBAAAA,SAAkB,cAAc,CAAC;EAAG;EACxG,QAAQ;GACN,eAAe,GAAGC,0BAAAA,SAAkB,cAAc;GAClD,oBAAoB,GAAGC,+BAAAA,SAAsB,cAAc;GAC3D,sBAAsB,GAAGC,iCAAAA,SAAwB,cAAc;EACjE;EACA,UAAU,CAAC,GAAI,aAAa,YAAY,CAAC,CAAE;CAC7C;AACF,CAAC"}
@@ -1,2 +1,5 @@
1
- import { fileEditExtension } from "../extension.cjs";
2
- export = fileEditExtension;
1
+ //#region generated/pi.d.ts
2
+ export declare const extension: import("@agimon-ai/doompi-core/runtime-pi-extension").DefinedPiExtension<undefined>;
3
+ //#endregion
4
+ export { extension as default };
5
+ //# sourceMappingURL=pi.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pi.d.cts","names":[],"sources":["../../generated/pi.ts"],"mappings":";qBAyBa,iEAAS"}
@@ -1,2 +1,5 @@
1
- import { fileEditExtension } from "../extension.mjs";
2
- export { fileEditExtension as default };
1
+ //#region generated/pi.d.ts
2
+ export declare const extension: import("@agimon-ai/doompi-core/runtime-pi-extension").DefinedPiExtension<undefined>;
3
+ //#endregion
4
+ export { extension as default };
5
+ //# sourceMappingURL=pi.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pi.d.mts","names":[],"sources":["../../generated/pi.ts"],"mappings":";qBAyBa,iEAAS"}
@@ -1 +1,36 @@
1
- import{fileEditExtension as e}from"../extension.mjs";export{e as default};
1
+ import root_cli_default from "../src/extensions/workspaces/sessions/(backend)/root.cli.mjs";
2
+ import file_edits_cli_default from "../src/extensions/workspaces/sessions/(backend)/command/file-edits.cli.mjs";
3
+ import session_start_cli_default from "../src/extensions/workspaces/sessions/(backend)/hook/session-start.cli.mjs";
4
+ import tool_execution_end_cli_default from "../src/extensions/workspaces/sessions/(backend)/hook/tool-execution-end.cli.mjs";
5
+ import tool_execution_start_cli_default from "../src/extensions/workspaces/sessions/(backend)/hook/tool-execution-start.cli.mjs";
6
+ import { definePiExtension } from "@agimon-ai/doompi-core/pi-extension";
7
+ import { composeRootHooks } from "@agimon-ai/doompi-core/extension-file";
8
+ //#region generated/pi.ts
9
+ const at = (value, context) => typeof value === "function" ? value(context) : value;
10
+ const many = (value, context) => {
11
+ const resolved = typeof value === "function" ? value(context) : value;
12
+ return Array.isArray(resolved) ? resolved : [resolved];
13
+ };
14
+ const extension = definePiExtension("@agimon-ai/doompi-file-edit", async (context) => {
15
+ const scopeSession = await root_cli_default(context);
16
+ const contextSession = {
17
+ ...context,
18
+ root: scopeSession.value
19
+ };
20
+ return {
21
+ ...composeRootHooks(scopeSession),
22
+ get commands() {
23
+ return [...many(file_edits_cli_default, contextSession)];
24
+ },
25
+ events: {
26
+ session_start: at(session_start_cli_default, contextSession),
27
+ tool_execution_end: at(tool_execution_end_cli_default, contextSession),
28
+ tool_execution_start: at(tool_execution_start_cli_default, contextSession)
29
+ },
30
+ services: [...scopeSession.services ?? []]
31
+ };
32
+ });
33
+ //#endregion
34
+ export { extension as default, extension };
35
+
36
+ //# sourceMappingURL=pi.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pi.mjs","names":["rootSession","commandFileEdits","hookSessionStart","hookToolExecutionEnd","hookToolExecutionStart"],"sources":["../../generated/pi.ts"],"sourcesContent":["// Generated by @agimon-ai/doompi-build. Do not edit by hand.\nimport { definePiExtension, type PiPluginContext, type PiPluginContributions } from '@agimon-ai/doompi-core/pi-extension';\nimport { composeRootHooks } from '@agimon-ai/doompi-core/extension-file';\n\nimport rootSession from '../src/extensions/workspaces/sessions/(backend)/root.cli';\nimport commandFileEdits from '../src/extensions/workspaces/sessions/(backend)/command/file-edits.cli';\nimport hookSessionStart from '../src/extensions/workspaces/sessions/(backend)/hook/session-start.cli';\nimport hookToolExecutionEnd from '../src/extensions/workspaces/sessions/(backend)/hook/tool-execution-end.cli';\nimport hookToolExecutionStart from '../src/extensions/workspaces/sessions/(backend)/hook/tool-execution-start.cli';\n\ntype OptionsOf<T> = T extends (context: PiPluginContext<infer Options>) => unknown ? Options : never;\ntype InferredOptions = Exclude<OptionsOf<typeof rootSession> | OptionsOf<typeof commandFileEdits> | OptionsOf<typeof hookSessionStart> | OptionsOf<typeof hookToolExecutionEnd> | OptionsOf<typeof hookToolExecutionStart>, undefined>;\ntype Intersect<Union> =\n (Union extends unknown ? (value: Union) => void : never) extends (value: infer Value) => void ? Value : never;\ntype ExtensionOptions = [InferredOptions] extends [never] ? undefined : Intersect<InferredOptions>;\n\ntype Factory<T, C> = (context: C) => T;\nconst at = <T, C>(value: T | Factory<T, C>, context: C): T =>\n typeof value === 'function' ? (value as Factory<T, C>)(context) : value;\ntype ManyFactory<T, C> = (context: C) => T | readonly T[];\nconst many = <T, C>(value: T | readonly T[] | ManyFactory<T, C>, context: C): readonly T[] => {\n const resolved = typeof value === 'function' ? (value as ManyFactory<T, C>)(context) : value;\n return Array.isArray(resolved) ? resolved : [resolved as T];\n};\n\nexport const extension = definePiExtension<ExtensionOptions>('@agimon-ai/doompi-file-edit', async (context) => {\n const scopeSession = await rootSession(context);\n const contextSession = { ...context, root: scopeSession.value };\n return {\n ...composeRootHooks(scopeSession),\n get commands(): PiPluginContributions['commands'] { return [...many(commandFileEdits, contextSession)]; },\n events: {\n session_start: at(hookSessionStart, contextSession) as NonNullable<PiPluginContributions['events']>['session_start'],\n tool_execution_end: at(hookToolExecutionEnd, contextSession) as NonNullable<PiPluginContributions['events']>['tool_execution_end'],\n tool_execution_start: at(hookToolExecutionStart, contextSession) as NonNullable<PiPluginContributions['events']>['tool_execution_start'],\n },\n services: [...(scopeSession.services ?? [])],\n };\n});\n\nexport default extension;\n"],"mappings":";;;;;;;;AAiBA,MAAM,MAAY,OAA0B,YAC1C,OAAO,UAAU,aAAc,MAAwB,OAAO,IAAI;AAEpE,MAAM,QAAc,OAA6C,YAA6B;CAC5F,MAAM,WAAW,OAAO,UAAU,aAAc,MAA4B,OAAO,IAAI;CACvF,OAAO,MAAM,QAAQ,QAAQ,IAAI,WAAW,CAAC,QAAa;AAC5D;AAEA,MAAa,YAAY,kBAAoC,+BAA+B,OAAO,YAAY;CAC7G,MAAM,eAAe,MAAMA,iBAAY,OAAO;CAC9C,MAAM,iBAAiB;EAAE,GAAG;EAAS,MAAM,aAAa;CAAM;CAC9D,OAAO;EACL,GAAG,iBAAiB,YAAY;EAChC,IAAI,WAA8C;GAAE,OAAO,CAAC,GAAG,KAAKC,wBAAkB,cAAc,CAAC;EAAG;EACxG,QAAQ;GACN,eAAe,GAAGC,2BAAkB,cAAc;GAClD,oBAAoB,GAAGC,gCAAsB,cAAc;GAC3D,sBAAsB,GAAGC,kCAAwB,cAAc;EACjE;EACA,UAAU,CAAC,GAAI,aAAa,YAAY,CAAC,CAAE;CAC7C;AACF,CAAC"}
@@ -0,0 +1,54 @@
1
+ Object.defineProperties(exports, {
2
+ __esModule: { value: true },
3
+ [Symbol.toStringTag]: { value: "Module" }
4
+ });
5
+ const require_root_server = require("../src/extensions/workspaces/sessions/(backend)/root.server.cjs");
6
+ const require_fileEdits_server = require("../src/extensions/(backend)/channel/fileEdits.server.cjs");
7
+ const require_route_server = require("../src/extensions/workspaces/sessions/(backend)/api/file-edits/route.server.cjs");
8
+ const require_tool_execution_end_server = require("../src/extensions/workspaces/sessions/(backend)/hook/tool-execution-end.server.cjs");
9
+ const require_tool_execution_start_server = require("../src/extensions/workspaces/sessions/(backend)/hook/tool-execution-start.server.cjs");
10
+ let _agimon_ai_doompi_core_extension_file = require("@agimon-ai/doompi-core/extension-file");
11
+ let _agimon_ai_doompi_core_server_facet = require("@agimon-ai/doompi-core/server-facet");
12
+ //#region generated/server.ts
13
+ const at = (value, context) => typeof value === "function" ? value(context) : value;
14
+ const via = (identity, value) => ({
15
+ ...identity,
16
+ ...value
17
+ });
18
+ const facet = (0, _agimon_ai_doompi_core_server_facet.defineServerPlugin)({
19
+ name: "@agimon-ai/doompi-file-edit",
20
+ global: () => ({ get channels() {
21
+ return [() => via({ frameType: "file_edits" }, require_fileEdits_server.default())];
22
+ } }),
23
+ workspace: () => ({ get channels() {
24
+ return [() => via({ frameType: "file_edits" }, require_fileEdits_server.default())];
25
+ } }),
26
+ session: async (context) => {
27
+ const scopeSession = await require_root_server.default(context);
28
+ const contextSession = {
29
+ ...context,
30
+ root: scopeSession.value
31
+ };
32
+ return {
33
+ ...(0, _agimon_ai_doompi_core_extension_file.composeRootHooks)(scopeSession),
34
+ get api() {
35
+ return [at(require_route_server.default, contextSession)];
36
+ },
37
+ get channels() {
38
+ return [() => via({ frameType: "file_edits" }, require_fileEdits_server.default())];
39
+ },
40
+ get hooks() {
41
+ return [via({ event: "tool_execution_end" }, at(require_tool_execution_end_server.default, contextSession)), via({ event: "tool_execution_start" }, at(require_tool_execution_start_server.default, contextSession))];
42
+ },
43
+ services: [...scopeSession.services ?? []],
44
+ get activities() {
45
+ return [...scopeSession.activities ?? []];
46
+ }
47
+ };
48
+ }
49
+ });
50
+ //#endregion
51
+ exports.default = facet;
52
+ exports.facet = facet;
53
+
54
+ //# sourceMappingURL=server.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.cjs","names":["defineServerPlugin","channelFileEdits","rootSession","composeRootHooks","apiRoute","hookToolExecutionEnd","hookToolExecutionStart"],"sources":["../../generated/server.ts"],"sourcesContent":["// Generated by @agimon-ai/doompi-build. Do not edit by hand.\nimport { defineServerPlugin, type DoomServerSessionPlugin } from '@agimon-ai/doompi-core/server-facet';\nimport { composeRootHooks } from '@agimon-ai/doompi-core/extension-file';\n\nimport rootSession from '../src/extensions/workspaces/sessions/(backend)/root.server';\nimport channelFileEdits from '../src/extensions/(backend)/channel/fileEdits.server';\nimport apiRoute from '../src/extensions/workspaces/sessions/(backend)/api/file-edits/route.server';\nimport hookToolExecutionEnd from '../src/extensions/workspaces/sessions/(backend)/hook/tool-execution-end.server';\nimport hookToolExecutionStart from '../src/extensions/workspaces/sessions/(backend)/hook/tool-execution-start.server';\n\ntype Factory<T, C> = (context: C) => T;\nconst at = <T, C>(value: T | Factory<T, C>, context: C): T =>\n typeof value === 'function' ? (value as Factory<T, C>)(context) : value;\nconst via = <T>(identity: Record<string, unknown>, value: unknown): T => ({ ...identity, ...(value as object) }) as T;\n\nexport const facet = defineServerPlugin({\n name: '@agimon-ai/doompi-file-edit',\n global: () => ({\n get channels(): DoomServerSessionPlugin['channels'] { return [() => via({ frameType: 'file_edits' }, channelFileEdits())]; },\n }),\n workspace: () => ({\n get channels(): DoomServerSessionPlugin['channels'] { return [() => via({ frameType: 'file_edits' }, channelFileEdits())]; },\n }),\n session: async (context) => {\n const scopeSession = await rootSession(context);\n const contextSession = { ...context, root: scopeSession.value };\n return {\n ...composeRootHooks(scopeSession),\n get api(): DoomServerSessionPlugin['api'] { return [at(apiRoute, contextSession)]; },\n get channels(): DoomServerSessionPlugin['channels'] { return [() => via({ frameType: 'file_edits' }, channelFileEdits())]; },\n get hooks(): DoomServerSessionPlugin['hooks'] { return [via({ event: 'tool_execution_end' }, at(hookToolExecutionEnd, contextSession)), via({ event: 'tool_execution_start' }, at(hookToolExecutionStart, contextSession))]; },\n services: [...(scopeSession.services ?? [])],\n get activities(): DoomServerSessionPlugin['activities'] { return [...(scopeSession.activities ?? [])]; },\n };\n },\n});\n\nexport default facet;\n"],"mappings":";;;;;;;;;;;;AAWA,MAAM,MAAY,OAA0B,YAC1C,OAAO,UAAU,aAAc,MAAwB,OAAO,IAAI;AACpE,MAAM,OAAU,UAAmC,WAAuB;CAAE,GAAG;CAAU,GAAI;AAAiB;AAE9G,MAAa,SAAA,GAAQA,oCAAAA,mBAAAA,CAAmB;CACtC,MAAM;CACN,eAAe,EACb,IAAI,WAAgD;EAAE,OAAO,OAAO,IAAI,EAAE,WAAW,aAAa,GAAGC,yBAAAA,QAAiB,CAAC,CAAC;CAAG,EAC7H;CACA,kBAAkB,EAChB,IAAI,WAAgD;EAAE,OAAO,OAAO,IAAI,EAAE,WAAW,aAAa,GAAGA,yBAAAA,QAAiB,CAAC,CAAC;CAAG,EAC7H;CACA,SAAS,OAAO,YAAY;EAC1B,MAAM,eAAe,MAAMC,oBAAAA,QAAY,OAAO;EAC9C,MAAM,iBAAiB;GAAE,GAAG;GAAS,MAAM,aAAa;EAAM;EAC9D,OAAO;GACL,IAAA,GAAGC,sCAAAA,iBAAAA,CAAiB,YAAY;GAChC,IAAI,MAAsC;IAAE,OAAO,CAAC,GAAGC,qBAAAA,SAAU,cAAc,CAAC;GAAG;GACnF,IAAI,WAAgD;IAAE,OAAO,OAAO,IAAI,EAAE,WAAW,aAAa,GAAGH,yBAAAA,QAAiB,CAAC,CAAC;GAAG;GAC3H,IAAI,QAA0C;IAAE,OAAO,CAAC,IAAI,EAAE,OAAO,qBAAqB,GAAG,GAAGI,kCAAAA,SAAsB,cAAc,CAAC,GAAG,IAAI,EAAE,OAAO,uBAAuB,GAAG,GAAGC,oCAAAA,SAAwB,cAAc,CAAC,CAAC;GAAG;GAC7N,UAAU,CAAC,GAAI,aAAa,YAAY,CAAC,CAAE;GAC3C,IAAI,aAAoD;IAAE,OAAO,CAAC,GAAI,aAAa,cAAc,CAAC,CAAE;GAAG;EACzG;CACF;AACF,CAAC"}
@@ -0,0 +1,5 @@
1
+ //#region generated/server.d.ts
2
+ export declare const facet: import("@agimon-ai/doompi-core/server-facet").DoomServerFacet;
3
+ //#endregion
4
+ export { facet as default };
5
+ //# sourceMappingURL=server.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.cts","names":[],"sources":["../../generated/server.ts"],"mappings":";qBAea,qDAAK"}
@@ -0,0 +1,5 @@
1
+ //#region generated/server.d.ts
2
+ export declare const facet: import("@agimon-ai/doompi-core/server-facet").DoomServerFacet;
3
+ //#endregion
4
+ export { facet as default };
5
+ //# sourceMappingURL=server.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.mts","names":[],"sources":["../../generated/server.ts"],"mappings":";qBAea,qDAAK"}
@@ -0,0 +1,49 @@
1
+ import root_server_default from "../src/extensions/workspaces/sessions/(backend)/root.server.mjs";
2
+ import fileEdits_server_default from "../src/extensions/(backend)/channel/fileEdits.server.mjs";
3
+ import route_server_default from "../src/extensions/workspaces/sessions/(backend)/api/file-edits/route.server.mjs";
4
+ import tool_execution_end_server_default from "../src/extensions/workspaces/sessions/(backend)/hook/tool-execution-end.server.mjs";
5
+ import tool_execution_start_server_default from "../src/extensions/workspaces/sessions/(backend)/hook/tool-execution-start.server.mjs";
6
+ import { composeRootHooks } from "@agimon-ai/doompi-core/extension-file";
7
+ import { defineServerPlugin } from "@agimon-ai/doompi-core/server-facet";
8
+ //#region generated/server.ts
9
+ const at = (value, context) => typeof value === "function" ? value(context) : value;
10
+ const via = (identity, value) => ({
11
+ ...identity,
12
+ ...value
13
+ });
14
+ const facet = defineServerPlugin({
15
+ name: "@agimon-ai/doompi-file-edit",
16
+ global: () => ({ get channels() {
17
+ return [() => via({ frameType: "file_edits" }, fileEdits_server_default())];
18
+ } }),
19
+ workspace: () => ({ get channels() {
20
+ return [() => via({ frameType: "file_edits" }, fileEdits_server_default())];
21
+ } }),
22
+ session: async (context) => {
23
+ const scopeSession = await root_server_default(context);
24
+ const contextSession = {
25
+ ...context,
26
+ root: scopeSession.value
27
+ };
28
+ return {
29
+ ...composeRootHooks(scopeSession),
30
+ get api() {
31
+ return [at(route_server_default, contextSession)];
32
+ },
33
+ get channels() {
34
+ return [() => via({ frameType: "file_edits" }, fileEdits_server_default())];
35
+ },
36
+ get hooks() {
37
+ return [via({ event: "tool_execution_end" }, at(tool_execution_end_server_default, contextSession)), via({ event: "tool_execution_start" }, at(tool_execution_start_server_default, contextSession))];
38
+ },
39
+ services: [...scopeSession.services ?? []],
40
+ get activities() {
41
+ return [...scopeSession.activities ?? []];
42
+ }
43
+ };
44
+ }
45
+ });
46
+ //#endregion
47
+ export { facet as default, facet };
48
+
49
+ //# sourceMappingURL=server.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.mjs","names":["channelFileEdits","rootSession","apiRoute","hookToolExecutionEnd","hookToolExecutionStart"],"sources":["../../generated/server.ts"],"sourcesContent":["// Generated by @agimon-ai/doompi-build. Do not edit by hand.\nimport { defineServerPlugin, type DoomServerSessionPlugin } from '@agimon-ai/doompi-core/server-facet';\nimport { composeRootHooks } from '@agimon-ai/doompi-core/extension-file';\n\nimport rootSession from '../src/extensions/workspaces/sessions/(backend)/root.server';\nimport channelFileEdits from '../src/extensions/(backend)/channel/fileEdits.server';\nimport apiRoute from '../src/extensions/workspaces/sessions/(backend)/api/file-edits/route.server';\nimport hookToolExecutionEnd from '../src/extensions/workspaces/sessions/(backend)/hook/tool-execution-end.server';\nimport hookToolExecutionStart from '../src/extensions/workspaces/sessions/(backend)/hook/tool-execution-start.server';\n\ntype Factory<T, C> = (context: C) => T;\nconst at = <T, C>(value: T | Factory<T, C>, context: C): T =>\n typeof value === 'function' ? (value as Factory<T, C>)(context) : value;\nconst via = <T>(identity: Record<string, unknown>, value: unknown): T => ({ ...identity, ...(value as object) }) as T;\n\nexport const facet = defineServerPlugin({\n name: '@agimon-ai/doompi-file-edit',\n global: () => ({\n get channels(): DoomServerSessionPlugin['channels'] { return [() => via({ frameType: 'file_edits' }, channelFileEdits())]; },\n }),\n workspace: () => ({\n get channels(): DoomServerSessionPlugin['channels'] { return [() => via({ frameType: 'file_edits' }, channelFileEdits())]; },\n }),\n session: async (context) => {\n const scopeSession = await rootSession(context);\n const contextSession = { ...context, root: scopeSession.value };\n return {\n ...composeRootHooks(scopeSession),\n get api(): DoomServerSessionPlugin['api'] { return [at(apiRoute, contextSession)]; },\n get channels(): DoomServerSessionPlugin['channels'] { return [() => via({ frameType: 'file_edits' }, channelFileEdits())]; },\n get hooks(): DoomServerSessionPlugin['hooks'] { return [via({ event: 'tool_execution_end' }, at(hookToolExecutionEnd, contextSession)), via({ event: 'tool_execution_start' }, at(hookToolExecutionStart, contextSession))]; },\n services: [...(scopeSession.services ?? [])],\n get activities(): DoomServerSessionPlugin['activities'] { return [...(scopeSession.activities ?? [])]; },\n };\n },\n});\n\nexport default facet;\n"],"mappings":";;;;;;;;AAWA,MAAM,MAAY,OAA0B,YAC1C,OAAO,UAAU,aAAc,MAAwB,OAAO,IAAI;AACpE,MAAM,OAAU,UAAmC,WAAuB;CAAE,GAAG;CAAU,GAAI;AAAiB;AAE9G,MAAa,QAAQ,mBAAmB;CACtC,MAAM;CACN,eAAe,EACb,IAAI,WAAgD;EAAE,OAAO,OAAO,IAAI,EAAE,WAAW,aAAa,GAAGA,yBAAiB,CAAC,CAAC;CAAG,EAC7H;CACA,kBAAkB,EAChB,IAAI,WAAgD;EAAE,OAAO,OAAO,IAAI,EAAE,WAAW,aAAa,GAAGA,yBAAiB,CAAC,CAAC;CAAG,EAC7H;CACA,SAAS,OAAO,YAAY;EAC1B,MAAM,eAAe,MAAMC,oBAAY,OAAO;EAC9C,MAAM,iBAAiB;GAAE,GAAG;GAAS,MAAM,aAAa;EAAM;EAC9D,OAAO;GACL,GAAG,iBAAiB,YAAY;GAChC,IAAI,MAAsC;IAAE,OAAO,CAAC,GAAGC,sBAAU,cAAc,CAAC;GAAG;GACnF,IAAI,WAAgD;IAAE,OAAO,OAAO,IAAI,EAAE,WAAW,aAAa,GAAGF,yBAAiB,CAAC,CAAC;GAAG;GAC3H,IAAI,QAA0C;IAAE,OAAO,CAAC,IAAI,EAAE,OAAO,qBAAqB,GAAG,GAAGG,mCAAsB,cAAc,CAAC,GAAG,IAAI,EAAE,OAAO,uBAAuB,GAAG,GAAGC,qCAAwB,cAAc,CAAC,CAAC;GAAG;GAC7N,UAAU,CAAC,GAAI,aAAa,YAAY,CAAC,CAAE;GAC3C,IAAI,aAAoD;IAAE,OAAO,CAAC,GAAI,aAAa,cAAc,CAAC,CAAE;GAAG;EACzG;CACF;AACF,CAAC"}