@agimon-ai/doompi-git 0.0.1-alpha.3 → 0.0.1-alpha.31

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 (180) hide show
  1. package/README.md +12 -0
  2. package/dist/apiContracts.cjs +198 -0
  3. package/dist/apiContracts.cjs.map +1 -0
  4. package/dist/apiContracts.d.mts +53 -0
  5. package/dist/apiContracts.d.mts.map +1 -0
  6. package/dist/apiContracts.mjs +193 -0
  7. package/dist/apiContracts.mjs.map +1 -0
  8. package/dist/extensions/pi.cjs +105 -1
  9. package/dist/extensions/pi.cjs.map +1 -0
  10. package/dist/extensions/pi.d.mts +6 -2
  11. package/dist/extensions/pi.d.mts.map +1 -0
  12. package/dist/extensions/pi.mjs +100 -1
  13. package/dist/extensions/pi.mjs.map +1 -0
  14. package/dist/extensions/server.cjs +588 -0
  15. package/dist/extensions/server.cjs.map +1 -0
  16. package/dist/extensions/server.d.mts +5 -0
  17. package/dist/extensions/server.d.mts.map +1 -0
  18. package/dist/extensions/server.mjs +583 -0
  19. package/dist/extensions/server.mjs.map +1 -0
  20. package/dist/extensions/web.mjs +911 -0
  21. package/dist/extensions/web.mjs.map +1 -0
  22. package/dist/gitDependencies-CJFmhrG1.mjs +22 -0
  23. package/dist/gitDependencies-CJFmhrG1.mjs.map +1 -0
  24. package/dist/gitDependencies-CWsygnLQ.cjs +33 -0
  25. package/dist/gitDependencies-CWsygnLQ.cjs.map +1 -0
  26. package/dist/index-D79MSCee.d.mts +145 -0
  27. package/dist/index-D79MSCee.d.mts.map +1 -0
  28. package/dist/index.cjs +4 -1
  29. package/dist/index.d.mts +2 -5
  30. package/dist/index.mjs +2 -1
  31. package/dist/runWorktree-BdK3oRtX.mjs +298 -0
  32. package/dist/runWorktree-BdK3oRtX.mjs.map +1 -0
  33. package/dist/runWorktree-D0bsyYc0.cjs +351 -0
  34. package/dist/runWorktree-D0bsyYc0.cjs.map +1 -0
  35. package/dist/worktreeOperations-CijBzYEf.mjs +1163 -0
  36. package/dist/worktreeOperations-CijBzYEf.mjs.map +1 -0
  37. package/dist/worktreeOperations-FJDk44Zt.cjs +1253 -0
  38. package/dist/worktreeOperations-FJDk44Zt.cjs.map +1 -0
  39. package/llms.txt +4 -0
  40. package/package.json +54 -39
  41. package/src/prompts/doompi-use-git/SKILL.md +26 -3
  42. package/dist/_virtual/_rolldown/runtime.cjs +0 -1
  43. package/dist/adapters/channel/worktreeChannel.cjs +0 -2
  44. package/dist/adapters/channel/worktreeChannel.cjs.map +0 -1
  45. package/dist/adapters/channel/worktreeChannel.d.cts +0 -40
  46. package/dist/adapters/channel/worktreeChannel.d.cts.map +0 -1
  47. package/dist/adapters/channel/worktreeChannel.d.mts +0 -40
  48. package/dist/adapters/channel/worktreeChannel.d.mts.map +0 -1
  49. package/dist/adapters/channel/worktreeChannel.mjs +0 -2
  50. package/dist/adapters/channel/worktreeChannel.mjs.map +0 -1
  51. package/dist/adapters/filesystem/atomicJson.cjs +0 -2
  52. package/dist/adapters/filesystem/atomicJson.cjs.map +0 -1
  53. package/dist/adapters/filesystem/atomicJson.mjs +0 -2
  54. package/dist/adapters/filesystem/atomicJson.mjs.map +0 -1
  55. package/dist/adapters/filesystem/paths.cjs +0 -2
  56. package/dist/adapters/filesystem/paths.cjs.map +0 -1
  57. package/dist/adapters/filesystem/paths.mjs +0 -2
  58. package/dist/adapters/filesystem/paths.mjs.map +0 -1
  59. package/dist/adapters/hub/hubClient.cjs +0 -2
  60. package/dist/adapters/hub/hubClient.cjs.map +0 -1
  61. package/dist/adapters/hub/hubClient.d.cts +0 -1
  62. package/dist/adapters/hub/hubClient.d.mts +0 -1
  63. package/dist/adapters/hub/hubClient.mjs +0 -2
  64. package/dist/adapters/hub/hubClient.mjs.map +0 -1
  65. package/dist/adapters/pi/extension.cjs +0 -2
  66. package/dist/adapters/pi/extension.cjs.map +0 -1
  67. package/dist/adapters/pi/extension.d.cts +0 -9
  68. package/dist/adapters/pi/extension.d.cts.map +0 -1
  69. package/dist/adapters/pi/extension.d.mts +0 -9
  70. package/dist/adapters/pi/extension.d.mts.map +0 -1
  71. package/dist/adapters/pi/extension.mjs +0 -2
  72. package/dist/adapters/pi/extension.mjs.map +0 -1
  73. package/dist/adapters/pi/extensions/runWorktreeTool.cjs +0 -15
  74. package/dist/adapters/pi/extensions/runWorktreeTool.cjs.map +0 -1
  75. package/dist/adapters/pi/extensions/runWorktreeTool.mjs +0 -15
  76. package/dist/adapters/pi/extensions/runWorktreeTool.mjs.map +0 -1
  77. package/dist/adapters/web/worktreesChannel.cjs +0 -2
  78. package/dist/adapters/web/worktreesChannel.cjs.map +0 -1
  79. package/dist/adapters/web/worktreesChannel.d.cts +0 -21
  80. package/dist/adapters/web/worktreesChannel.d.cts.map +0 -1
  81. package/dist/adapters/web/worktreesChannel.d.mts +0 -21
  82. package/dist/adapters/web/worktreesChannel.d.mts.map +0 -1
  83. package/dist/adapters/web/worktreesChannel.mjs +0 -2
  84. package/dist/adapters/web/worktreesChannel.mjs.map +0 -1
  85. package/dist/adapters/worktree/dependencyInstall.cjs +0 -2
  86. package/dist/adapters/worktree/dependencyInstall.cjs.map +0 -1
  87. package/dist/adapters/worktree/dependencyInstall.mjs +0 -2
  88. package/dist/adapters/worktree/dependencyInstall.mjs.map +0 -1
  89. package/dist/adapters/worktree/gitCli.cjs +0 -4
  90. package/dist/adapters/worktree/gitCli.cjs.map +0 -1
  91. package/dist/adapters/worktree/gitCli.mjs +0 -4
  92. package/dist/adapters/worktree/gitCli.mjs.map +0 -1
  93. package/dist/adapters/worktree/repositoryIdentity.cjs +0 -2
  94. package/dist/adapters/worktree/repositoryIdentity.cjs.map +0 -1
  95. package/dist/adapters/worktree/repositoryIdentity.mjs +0 -2
  96. package/dist/adapters/worktree/repositoryIdentity.mjs.map +0 -1
  97. package/dist/adapters/worktree/worktreeOperations.cjs +0 -2
  98. package/dist/adapters/worktree/worktreeOperations.cjs.map +0 -1
  99. package/dist/adapters/worktree/worktreeOperations.d.cts +0 -32
  100. package/dist/adapters/worktree/worktreeOperations.d.cts.map +0 -1
  101. package/dist/adapters/worktree/worktreeOperations.d.mts +0 -32
  102. package/dist/adapters/worktree/worktreeOperations.d.mts.map +0 -1
  103. package/dist/adapters/worktree/worktreeOperations.mjs +0 -2
  104. package/dist/adapters/worktree/worktreeOperations.mjs.map +0 -1
  105. package/dist/adapters/worktree/worktreeRegistry.cjs +0 -2
  106. package/dist/adapters/worktree/worktreeRegistry.cjs.map +0 -1
  107. package/dist/adapters/worktree/worktreeRegistry.mjs +0 -2
  108. package/dist/adapters/worktree/worktreeRegistry.mjs.map +0 -1
  109. package/dist/commands/doomGitCommand.cjs +0 -2
  110. package/dist/commands/doomGitCommand.cjs.map +0 -1
  111. package/dist/commands/doomGitCommand.mjs +0 -2
  112. package/dist/commands/doomGitCommand.mjs.map +0 -1
  113. package/dist/container/index.cjs +0 -2
  114. package/dist/container/index.cjs.map +0 -1
  115. package/dist/container/index.d.cts +0 -6
  116. package/dist/container/index.d.cts.map +0 -1
  117. package/dist/container/index.d.mts +0 -6
  118. package/dist/container/index.d.mts.map +0 -1
  119. package/dist/container/index.mjs +0 -2
  120. package/dist/container/index.mjs.map +0 -1
  121. package/dist/extensions/pi.d.cts +0 -2
  122. package/dist/hubApi.cjs +0 -2
  123. package/dist/hubApi.cjs.map +0 -1
  124. package/dist/hubApi.d.cts +0 -6
  125. package/dist/hubApi.d.cts.map +0 -1
  126. package/dist/hubApi.d.mts +0 -6
  127. package/dist/hubApi.d.mts.map +0 -1
  128. package/dist/hubApi.mjs +0 -2
  129. package/dist/hubApi.mjs.map +0 -1
  130. package/dist/index.d.cts +0 -5
  131. package/dist/schemas/runWorktreeTool.cjs +0 -2
  132. package/dist/schemas/runWorktreeTool.cjs.map +0 -1
  133. package/dist/schemas/runWorktreeTool.mjs +0 -2
  134. package/dist/schemas/runWorktreeTool.mjs.map +0 -1
  135. package/dist/services/extensionService.cjs +0 -2
  136. package/dist/services/extensionService.cjs.map +0 -1
  137. package/dist/services/extensionService.d.cts +0 -8
  138. package/dist/services/extensionService.d.cts.map +0 -1
  139. package/dist/services/extensionService.d.mts +0 -8
  140. package/dist/services/extensionService.d.mts.map +0 -1
  141. package/dist/services/extensionService.mjs +0 -2
  142. package/dist/services/extensionService.mjs.map +0 -1
  143. package/dist/services/support/errors.cjs +0 -2
  144. package/dist/services/support/errors.cjs.map +0 -1
  145. package/dist/services/support/errors.mjs +0 -2
  146. package/dist/services/support/errors.mjs.map +0 -1
  147. package/dist/services/worktreeNaming.cjs +0 -2
  148. package/dist/services/worktreeNaming.cjs.map +0 -1
  149. package/dist/services/worktreeNaming.d.cts +0 -27
  150. package/dist/services/worktreeNaming.d.cts.map +0 -1
  151. package/dist/services/worktreeNaming.d.mts +0 -27
  152. package/dist/services/worktreeNaming.d.mts.map +0 -1
  153. package/dist/services/worktreeNaming.mjs +0 -2
  154. package/dist/services/worktreeNaming.mjs.map +0 -1
  155. package/dist/types/extension.d.cts +0 -17
  156. package/dist/types/extension.d.cts.map +0 -1
  157. package/dist/types/extension.d.mts +0 -17
  158. package/dist/types/extension.d.mts.map +0 -1
  159. package/dist/types/webWorktrees.cjs +0 -2
  160. package/dist/types/webWorktrees.cjs.map +0 -1
  161. package/dist/types/webWorktrees.mjs +0 -2
  162. package/dist/types/webWorktrees.mjs.map +0 -1
  163. package/dist/types/worktreeRegistry.d.cts +0 -41
  164. package/dist/types/worktreeRegistry.d.cts.map +0 -1
  165. package/dist/types/worktreeRegistry.d.mts +0 -41
  166. package/dist/types/worktreeRegistry.d.mts.map +0 -1
  167. package/dist/webHub.cjs +0 -1
  168. package/dist/webHub.d.cts +0 -2
  169. package/dist/webHub.d.mts +0 -2
  170. package/dist/webHub.mjs +0 -1
  171. package/src/exports/webClient.ts +0 -1
  172. package/src/types/webWorktrees.ts +0 -55
  173. package/src/types/worktreeRegistry.ts +0 -69
  174. package/src/web/components/RunWorktreeToolMessage.tsx +0 -37
  175. package/src/web/components/WorktreesActivitySection.tsx +0 -64
  176. package/src/web/components/WorktreesPanel.tsx +0 -125
  177. package/src/web/components/toolRenderers.ts +0 -7
  178. package/src/web/index.ts +0 -30
  179. package/src/web/stores/worktreesActivityStore.ts +0 -124
  180. package/src/web/tsconfig.json +0 -22
package/README.md CHANGED
@@ -27,6 +27,16 @@ Run the registered command in Pi:
27
27
 
28
28
  Show git worktrees owned by this session
29
29
 
30
+ ### New-session dialog
31
+
32
+ In the web cockpit, doompi-git replaces the new-session dialog for a git workspace. It offers three choices:
33
+
34
+ - **Existing branch**: a worktree session on a local branch, or on a remote-only branch (a local tracking branch is created). Branches already checked out elsewhere are disabled.
35
+ - **New branch**: a worktree session on a new branch from a base, preselected to the repository's default branch.
36
+ - **No branch**: a plain session in the workspace folder.
37
+
38
+ Worktree sessions opened here start at the top level of the session rail, with no parent. A workspace that is not a git checkout offers the plain session only. For remote devices, creating a worktree session needs the same passkey step-up as any new session.
39
+
30
40
  ## Package behavior
31
41
 
32
42
  > Before publishing, replace this paragraph with one concrete, copy-pasteable example of the package-specific input, output, configuration, or workflow that is not already demonstrated by the generated command.
@@ -69,3 +79,5 @@ Maintained by [Agimon](https://agimon.ai/about).
69
79
  ## License
70
80
 
71
81
  MIT
82
+
83
+ Named Pi and server factories live in `src/extensions`. Controllers declare commands and APIs; services own worktree operations and filesystem persistence; tools return typed Pi declarations. Public services and types are exposed through flat `src/exports`. In composed DoomPi sessions, the fixed Session foundation durably admits `spawn_worktree.task`, parent messages, and child reports while waking the recipient. The prior in-memory inbox remains only as a standalone compatibility fallback.
@@ -0,0 +1,198 @@
1
+ Object.defineProperties(exports, {
2
+ __esModule: { value: true },
3
+ [Symbol.toStringTag]: { value: "Module" }
4
+ });
5
+ let _agimon_ai_doompi_core_apiContracts = require("@agimon-ai/doompi-core/apiContracts");
6
+ let typebox = require("typebox");
7
+ //#region src/schemas/apiContracts.ts
8
+ const S = typebox.Type.String();
9
+ const B = typebox.Type.Boolean();
10
+ const O = typebox.Type.Optional;
11
+ const literals = (values) => typebox.Type.Union(values.map((value) => typebox.Type.Literal(value)));
12
+ const RecordSchema = typebox.Type.Object({
13
+ version: typebox.Type.Literal(1),
14
+ id: S,
15
+ branch: S,
16
+ baseRef: S,
17
+ path: S,
18
+ repositoryRoot: S,
19
+ sessionId: S,
20
+ parentSessionId: typebox.Type.Optional(S),
21
+ status: literals([
22
+ "spawning",
23
+ "running",
24
+ "closing",
25
+ "orphaned"
26
+ ]),
27
+ createdAt: S
28
+ });
29
+ const ErrorTargetSchema = typebox.Type.Union([typebox.Type.Object({ action: typebox.Type.Literal("create") }), typebox.Type.Object({
30
+ action: typebox.Type.Literal("close"),
31
+ id: S
32
+ })]);
33
+ const WorktreesPayloadSchema = typebox.Type.Object({
34
+ worktrees: typebox.Type.Array(typebox.Type.Object({
35
+ id: S,
36
+ branch: S,
37
+ path: S,
38
+ sessionId: typebox.Type.Union([S, typebox.Type.Null()]),
39
+ orphaned: B,
40
+ unowned: B
41
+ })),
42
+ pending: O(S),
43
+ error: O(S),
44
+ errorTarget: O(ErrorTargetSchema)
45
+ });
46
+ const WorktreesCommandSchema = typebox.Type.Union([typebox.Type.Object({
47
+ action: typebox.Type.Literal("create"),
48
+ branch: S,
49
+ baseRef: O(S),
50
+ reservationId: O(typebox.Type.String({
51
+ minLength: 1,
52
+ pattern: "^[A-Za-z0-9_-]+$"
53
+ }))
54
+ }), typebox.Type.Object({
55
+ action: typebox.Type.Literal("close"),
56
+ id: S,
57
+ force: O(B)
58
+ })]);
59
+ const query = [{
60
+ name: "repositoryId",
61
+ in: "query",
62
+ required: true,
63
+ schema: S
64
+ }, {
65
+ name: "sessionId",
66
+ in: "query",
67
+ required: true,
68
+ schema: S
69
+ }];
70
+ const apiContracts = (0, _agimon_ai_doompi_core_apiContracts.defineApiContract)({
71
+ version: 1,
72
+ dynamic: [],
73
+ http: ["global", "workspace"].flatMap((scope) => [
74
+ {
75
+ id: "git.list",
76
+ scope,
77
+ basePath: "git",
78
+ path: "/worktrees",
79
+ method: "GET",
80
+ authentication: "owner",
81
+ description: "List admitted repository worktrees.",
82
+ parameters: query.map((item) => ({
83
+ ...item,
84
+ required: item.name === "repositoryId"
85
+ })),
86
+ responses: (0, _agimon_ai_doompi_core_apiContracts.jsonApiResponses)(typebox.Type.Object({ worktrees: typebox.Type.Array(RecordSchema) }))
87
+ },
88
+ {
89
+ id: "git.create",
90
+ scope,
91
+ basePath: "git",
92
+ path: "/worktrees",
93
+ method: "POST",
94
+ authentication: "owner",
95
+ description: "Create a worktree and session.",
96
+ parameters: query,
97
+ body: {
98
+ required: true,
99
+ contentType: "application/json",
100
+ schema: typebox.Type.Object({
101
+ branch: typebox.Type.String({ minLength: 1 }),
102
+ baseRef: O(S),
103
+ name: O(S)
104
+ })
105
+ },
106
+ responses: (0, _agimon_ai_doompi_core_apiContracts.jsonApiResponses)(typebox.Type.Object({ worktree: RecordSchema }), 201)
107
+ },
108
+ {
109
+ id: "git.close",
110
+ scope,
111
+ basePath: "git",
112
+ path: "/worktrees/{id}",
113
+ method: "DELETE",
114
+ authentication: "owner",
115
+ description: "Close a worktree.",
116
+ parameters: [...query, {
117
+ name: "force",
118
+ in: "query",
119
+ required: false,
120
+ schema: B
121
+ }],
122
+ responses: (0, _agimon_ai_doompi_core_apiContracts.jsonApiResponses)(typebox.Type.Object({ worktree: RecordSchema }))
123
+ },
124
+ ...scope === "workspace" ? [{
125
+ id: "git.branches",
126
+ scope,
127
+ basePath: "git",
128
+ path: "/branches",
129
+ method: "GET",
130
+ authentication: "owner",
131
+ description: "List the workspace branches for the new-session dialog.",
132
+ responses: (0, _agimon_ai_doompi_core_apiContracts.jsonApiResponses)(typebox.Type.Object({
133
+ repository: B,
134
+ current: O(S),
135
+ defaultBase: O(S),
136
+ local: typebox.Type.Array(typebox.Type.Object({
137
+ name: S,
138
+ checkedOutAt: O(S)
139
+ })),
140
+ remote: typebox.Type.Array(typebox.Type.Object({
141
+ remote: S,
142
+ name: S
143
+ }))
144
+ }))
145
+ }, {
146
+ id: "git.sessions.create",
147
+ scope,
148
+ basePath: "git",
149
+ path: "/sessions",
150
+ method: "POST",
151
+ authentication: "owner",
152
+ description: "Start a top-level worktree session on an existing or new branch.",
153
+ body: {
154
+ required: true,
155
+ contentType: "application/json",
156
+ schema: typebox.Type.Union([typebox.Type.Object({
157
+ mode: typebox.Type.Literal("existing-branch"),
158
+ branch: S,
159
+ remote: O(S),
160
+ name: O(S)
161
+ }), typebox.Type.Object({
162
+ mode: typebox.Type.Literal("new-branch"),
163
+ branch: S,
164
+ baseRef: O(S),
165
+ name: O(S)
166
+ })])
167
+ },
168
+ responses: (0, _agimon_ai_doompi_core_apiContracts.jsonApiResponses)(typebox.Type.Object({
169
+ sessionId: S,
170
+ worktreeId: S
171
+ }), 201)
172
+ }] : []
173
+ ]),
174
+ sockets: ["global", "workspace"].flatMap((scope) => [{
175
+ id: "git.channel",
176
+ scope,
177
+ service: "doompi.hub.v1",
178
+ member: "git_worktrees",
179
+ kind: "channel",
180
+ direction: "server-to-client",
181
+ description: "Worktree channel payload.",
182
+ input: WorktreesPayloadSchema
183
+ }, {
184
+ id: "git.command",
185
+ scope,
186
+ service: "doompi.hub.v1",
187
+ member: "git_worktrees",
188
+ kind: "channel",
189
+ direction: "client-to-server",
190
+ description: "Worktree channel command payload.",
191
+ input: WorktreesCommandSchema
192
+ }])
193
+ });
194
+ //#endregion
195
+ exports.apiContracts = apiContracts;
196
+ exports.default = apiContracts;
197
+
198
+ //# sourceMappingURL=apiContracts.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apiContracts.cjs","names":["Type","defineApiContract","jsonApiResponses"],"sources":["../src/schemas/apiContracts.ts"],"sourcesContent":["import { defineApiContract, jsonApiResponses } from '@agimon-ai/doompi-core/apiContracts';\nimport { Type } from 'typebox';\n\nconst S = Type.String();\nconst B = Type.Boolean();\nconst O = Type.Optional;\nconst literals = <T extends string>(values: T[]) => Type.Union(values.map((value) => Type.Literal(value)));\nconst RecordSchema = Type.Object({\n version: Type.Literal(1),\n id: S,\n branch: S,\n baseRef: S,\n path: S,\n repositoryRoot: S,\n sessionId: S,\n parentSessionId: Type.Optional(S),\n status: literals(['spawning', 'running', 'closing', 'orphaned']),\n createdAt: S,\n});\nconst ErrorTargetSchema = Type.Union([\n Type.Object({ action: Type.Literal('create') }),\n Type.Object({ action: Type.Literal('close'), id: S }),\n]);\nexport const WorktreesPayloadSchema = Type.Object({\n worktrees: Type.Array(\n Type.Object({ id: S, branch: S, path: S, sessionId: Type.Union([S, Type.Null()]), orphaned: B, unowned: B }),\n ),\n pending: O(S),\n error: O(S),\n errorTarget: O(ErrorTargetSchema),\n});\nexport const WorktreesCommandSchema = Type.Union([\n Type.Object({\n action: Type.Literal('create'),\n branch: S,\n baseRef: O(S),\n reservationId: O(Type.String({ minLength: 1, pattern: '^[A-Za-z0-9_-]+$' })),\n }),\n Type.Object({ action: Type.Literal('close'), id: S, force: O(B) }),\n]);\nconst query = [\n { name: 'repositoryId', in: 'query' as const, required: true, schema: S },\n { name: 'sessionId', in: 'query' as const, required: true, schema: S },\n];\nexport const apiContracts = defineApiContract({\n version: 1,\n dynamic: [],\n http: (['global', 'workspace'] as const).flatMap((scope) => [\n {\n id: 'git.list',\n scope,\n basePath: 'git',\n path: '/worktrees',\n method: 'GET',\n authentication: 'owner',\n description: 'List admitted repository worktrees.',\n parameters: query.map((item) => ({ ...item, required: item.name === 'repositoryId' })),\n responses: jsonApiResponses(Type.Object({ worktrees: Type.Array(RecordSchema) })),\n },\n {\n id: 'git.create',\n scope,\n basePath: 'git',\n path: '/worktrees',\n method: 'POST',\n authentication: 'owner',\n description: 'Create a worktree and session.',\n parameters: query,\n body: {\n required: true,\n contentType: 'application/json',\n schema: Type.Object({ branch: Type.String({ minLength: 1 }), baseRef: O(S), name: O(S) }),\n },\n responses: jsonApiResponses(Type.Object({ worktree: RecordSchema }), 201),\n },\n {\n id: 'git.close',\n scope,\n basePath: 'git',\n path: '/worktrees/{id}',\n method: 'DELETE',\n authentication: 'owner',\n description: 'Close a worktree.',\n parameters: [...query, { name: 'force', in: 'query', required: false, schema: B }],\n responses: jsonApiResponses(Type.Object({ worktree: RecordSchema })),\n },\n // The new-session dialog's routes exist only on a workspace mount.\n ...(scope === 'workspace'\n ? [\n {\n id: 'git.branches',\n scope,\n basePath: 'git',\n path: '/branches',\n method: 'GET' as const,\n authentication: 'owner' as const,\n description: 'List the workspace branches for the new-session dialog.',\n responses: jsonApiResponses(\n Type.Object({\n repository: B,\n current: O(S),\n defaultBase: O(S),\n local: Type.Array(Type.Object({ name: S, checkedOutAt: O(S) })),\n remote: Type.Array(Type.Object({ remote: S, name: S })),\n }),\n ),\n },\n {\n id: 'git.sessions.create',\n scope,\n basePath: 'git',\n path: '/sessions',\n method: 'POST' as const,\n authentication: 'owner' as const,\n description: 'Start a top-level worktree session on an existing or new branch.',\n body: {\n required: true,\n contentType: 'application/json',\n schema: Type.Union([\n Type.Object({ mode: Type.Literal('existing-branch'), branch: S, remote: O(S), name: O(S) }),\n Type.Object({ mode: Type.Literal('new-branch'), branch: S, baseRef: O(S), name: O(S) }),\n ]),\n },\n responses: jsonApiResponses(Type.Object({ sessionId: S, worktreeId: S }), 201),\n },\n ]\n : []),\n ]),\n sockets: (['global', 'workspace'] as const).flatMap((scope) => [\n {\n id: 'git.channel',\n scope,\n service: 'doompi.hub.v1',\n member: 'git_worktrees',\n kind: 'channel',\n direction: 'server-to-client',\n description: 'Worktree channel payload.',\n input: WorktreesPayloadSchema,\n },\n {\n id: 'git.command',\n scope,\n service: 'doompi.hub.v1',\n member: 'git_worktrees',\n kind: 'channel',\n direction: 'client-to-server',\n description: 'Worktree channel command payload.',\n input: WorktreesCommandSchema,\n },\n ]),\n});\nexport default apiContracts;\n"],"mappings":"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"}
@@ -0,0 +1,53 @@
1
+ import { Type } from "typebox";
2
+ //#region src/schemas/apiContracts.d.ts
3
+ export declare const apiContracts: {
4
+ version: 1;
5
+ protocols?: Record<string, string> | undefined;
6
+ schemas?: Record<string, boolean | object> | undefined;
7
+ http: {
8
+ id: string;
9
+ scope: "global" | "session" | "workspace";
10
+ basePath?: string | undefined;
11
+ path: string;
12
+ method: "DELETE" | "GET" | "HEAD" | "OPTIONS" | "PATCH" | "POST" | "PUT";
13
+ description: string;
14
+ availability?: string | undefined;
15
+ authentication: "device" | "none" | "owner";
16
+ parameters?: {
17
+ name: string;
18
+ in: "header" | "path" | "query";
19
+ required: boolean;
20
+ schema: boolean | object;
21
+ }[] | undefined;
22
+ body?: {
23
+ contentType: string;
24
+ contentTypes?: string[] | undefined;
25
+ required: boolean;
26
+ schema: boolean | object;
27
+ } | undefined;
28
+ responses: Record<string, {
29
+ description: string;
30
+ contentType?: string | undefined;
31
+ schema?: boolean | object | undefined;
32
+ events?: Record<string, boolean | object> | undefined;
33
+ }>;
34
+ }[];
35
+ sockets: {
36
+ id: string;
37
+ scope: "global" | "session" | "workspace";
38
+ description: string;
39
+ availability?: string | undefined;
40
+ service: string;
41
+ member: string;
42
+ direction: "client-to-server" | "server-to-client";
43
+ kind: "channel" | "method" | "state";
44
+ input: boolean | object;
45
+ output?: boolean | object | undefined;
46
+ errors?: boolean | object | undefined;
47
+ }[];
48
+ dynamic: string[];
49
+ gaps?: string[] | undefined;
50
+ };
51
+ //#endregion
52
+ export { apiContracts as default };
53
+ //# sourceMappingURL=apiContracts.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apiContracts.d.mts","names":[],"sources":["../src/schemas/apiContracts.ts"],"mappings":";;qBA4Ca"}
@@ -0,0 +1,193 @@
1
+ import { defineApiContract, jsonApiResponses } from "@agimon-ai/doompi-core/apiContracts";
2
+ import { Type } from "typebox";
3
+ //#region src/schemas/apiContracts.ts
4
+ const S = Type.String();
5
+ const B = Type.Boolean();
6
+ const O = Type.Optional;
7
+ const literals = (values) => Type.Union(values.map((value) => Type.Literal(value)));
8
+ const RecordSchema = Type.Object({
9
+ version: Type.Literal(1),
10
+ id: S,
11
+ branch: S,
12
+ baseRef: S,
13
+ path: S,
14
+ repositoryRoot: S,
15
+ sessionId: S,
16
+ parentSessionId: Type.Optional(S),
17
+ status: literals([
18
+ "spawning",
19
+ "running",
20
+ "closing",
21
+ "orphaned"
22
+ ]),
23
+ createdAt: S
24
+ });
25
+ const ErrorTargetSchema = Type.Union([Type.Object({ action: Type.Literal("create") }), Type.Object({
26
+ action: Type.Literal("close"),
27
+ id: S
28
+ })]);
29
+ const WorktreesPayloadSchema = Type.Object({
30
+ worktrees: Type.Array(Type.Object({
31
+ id: S,
32
+ branch: S,
33
+ path: S,
34
+ sessionId: Type.Union([S, Type.Null()]),
35
+ orphaned: B,
36
+ unowned: B
37
+ })),
38
+ pending: O(S),
39
+ error: O(S),
40
+ errorTarget: O(ErrorTargetSchema)
41
+ });
42
+ const WorktreesCommandSchema = Type.Union([Type.Object({
43
+ action: Type.Literal("create"),
44
+ branch: S,
45
+ baseRef: O(S),
46
+ reservationId: O(Type.String({
47
+ minLength: 1,
48
+ pattern: "^[A-Za-z0-9_-]+$"
49
+ }))
50
+ }), Type.Object({
51
+ action: Type.Literal("close"),
52
+ id: S,
53
+ force: O(B)
54
+ })]);
55
+ const query = [{
56
+ name: "repositoryId",
57
+ in: "query",
58
+ required: true,
59
+ schema: S
60
+ }, {
61
+ name: "sessionId",
62
+ in: "query",
63
+ required: true,
64
+ schema: S
65
+ }];
66
+ const apiContracts = defineApiContract({
67
+ version: 1,
68
+ dynamic: [],
69
+ http: ["global", "workspace"].flatMap((scope) => [
70
+ {
71
+ id: "git.list",
72
+ scope,
73
+ basePath: "git",
74
+ path: "/worktrees",
75
+ method: "GET",
76
+ authentication: "owner",
77
+ description: "List admitted repository worktrees.",
78
+ parameters: query.map((item) => ({
79
+ ...item,
80
+ required: item.name === "repositoryId"
81
+ })),
82
+ responses: jsonApiResponses(Type.Object({ worktrees: Type.Array(RecordSchema) }))
83
+ },
84
+ {
85
+ id: "git.create",
86
+ scope,
87
+ basePath: "git",
88
+ path: "/worktrees",
89
+ method: "POST",
90
+ authentication: "owner",
91
+ description: "Create a worktree and session.",
92
+ parameters: query,
93
+ body: {
94
+ required: true,
95
+ contentType: "application/json",
96
+ schema: Type.Object({
97
+ branch: Type.String({ minLength: 1 }),
98
+ baseRef: O(S),
99
+ name: O(S)
100
+ })
101
+ },
102
+ responses: jsonApiResponses(Type.Object({ worktree: RecordSchema }), 201)
103
+ },
104
+ {
105
+ id: "git.close",
106
+ scope,
107
+ basePath: "git",
108
+ path: "/worktrees/{id}",
109
+ method: "DELETE",
110
+ authentication: "owner",
111
+ description: "Close a worktree.",
112
+ parameters: [...query, {
113
+ name: "force",
114
+ in: "query",
115
+ required: false,
116
+ schema: B
117
+ }],
118
+ responses: jsonApiResponses(Type.Object({ worktree: RecordSchema }))
119
+ },
120
+ ...scope === "workspace" ? [{
121
+ id: "git.branches",
122
+ scope,
123
+ basePath: "git",
124
+ path: "/branches",
125
+ method: "GET",
126
+ authentication: "owner",
127
+ description: "List the workspace branches for the new-session dialog.",
128
+ responses: jsonApiResponses(Type.Object({
129
+ repository: B,
130
+ current: O(S),
131
+ defaultBase: O(S),
132
+ local: Type.Array(Type.Object({
133
+ name: S,
134
+ checkedOutAt: O(S)
135
+ })),
136
+ remote: Type.Array(Type.Object({
137
+ remote: S,
138
+ name: S
139
+ }))
140
+ }))
141
+ }, {
142
+ id: "git.sessions.create",
143
+ scope,
144
+ basePath: "git",
145
+ path: "/sessions",
146
+ method: "POST",
147
+ authentication: "owner",
148
+ description: "Start a top-level worktree session on an existing or new branch.",
149
+ body: {
150
+ required: true,
151
+ contentType: "application/json",
152
+ schema: Type.Union([Type.Object({
153
+ mode: Type.Literal("existing-branch"),
154
+ branch: S,
155
+ remote: O(S),
156
+ name: O(S)
157
+ }), Type.Object({
158
+ mode: Type.Literal("new-branch"),
159
+ branch: S,
160
+ baseRef: O(S),
161
+ name: O(S)
162
+ })])
163
+ },
164
+ responses: jsonApiResponses(Type.Object({
165
+ sessionId: S,
166
+ worktreeId: S
167
+ }), 201)
168
+ }] : []
169
+ ]),
170
+ sockets: ["global", "workspace"].flatMap((scope) => [{
171
+ id: "git.channel",
172
+ scope,
173
+ service: "doompi.hub.v1",
174
+ member: "git_worktrees",
175
+ kind: "channel",
176
+ direction: "server-to-client",
177
+ description: "Worktree channel payload.",
178
+ input: WorktreesPayloadSchema
179
+ }, {
180
+ id: "git.command",
181
+ scope,
182
+ service: "doompi.hub.v1",
183
+ member: "git_worktrees",
184
+ kind: "channel",
185
+ direction: "client-to-server",
186
+ description: "Worktree channel command payload.",
187
+ input: WorktreesCommandSchema
188
+ }])
189
+ });
190
+ //#endregion
191
+ export { apiContracts, apiContracts as default };
192
+
193
+ //# sourceMappingURL=apiContracts.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apiContracts.mjs","names":[],"sources":["../src/schemas/apiContracts.ts"],"sourcesContent":["import { defineApiContract, jsonApiResponses } from '@agimon-ai/doompi-core/apiContracts';\nimport { Type } from 'typebox';\n\nconst S = Type.String();\nconst B = Type.Boolean();\nconst O = Type.Optional;\nconst literals = <T extends string>(values: T[]) => Type.Union(values.map((value) => Type.Literal(value)));\nconst RecordSchema = Type.Object({\n version: Type.Literal(1),\n id: S,\n branch: S,\n baseRef: S,\n path: S,\n repositoryRoot: S,\n sessionId: S,\n parentSessionId: Type.Optional(S),\n status: literals(['spawning', 'running', 'closing', 'orphaned']),\n createdAt: S,\n});\nconst ErrorTargetSchema = Type.Union([\n Type.Object({ action: Type.Literal('create') }),\n Type.Object({ action: Type.Literal('close'), id: S }),\n]);\nexport const WorktreesPayloadSchema = Type.Object({\n worktrees: Type.Array(\n Type.Object({ id: S, branch: S, path: S, sessionId: Type.Union([S, Type.Null()]), orphaned: B, unowned: B }),\n ),\n pending: O(S),\n error: O(S),\n errorTarget: O(ErrorTargetSchema),\n});\nexport const WorktreesCommandSchema = Type.Union([\n Type.Object({\n action: Type.Literal('create'),\n branch: S,\n baseRef: O(S),\n reservationId: O(Type.String({ minLength: 1, pattern: '^[A-Za-z0-9_-]+$' })),\n }),\n Type.Object({ action: Type.Literal('close'), id: S, force: O(B) }),\n]);\nconst query = [\n { name: 'repositoryId', in: 'query' as const, required: true, schema: S },\n { name: 'sessionId', in: 'query' as const, required: true, schema: S },\n];\nexport const apiContracts = defineApiContract({\n version: 1,\n dynamic: [],\n http: (['global', 'workspace'] as const).flatMap((scope) => [\n {\n id: 'git.list',\n scope,\n basePath: 'git',\n path: '/worktrees',\n method: 'GET',\n authentication: 'owner',\n description: 'List admitted repository worktrees.',\n parameters: query.map((item) => ({ ...item, required: item.name === 'repositoryId' })),\n responses: jsonApiResponses(Type.Object({ worktrees: Type.Array(RecordSchema) })),\n },\n {\n id: 'git.create',\n scope,\n basePath: 'git',\n path: '/worktrees',\n method: 'POST',\n authentication: 'owner',\n description: 'Create a worktree and session.',\n parameters: query,\n body: {\n required: true,\n contentType: 'application/json',\n schema: Type.Object({ branch: Type.String({ minLength: 1 }), baseRef: O(S), name: O(S) }),\n },\n responses: jsonApiResponses(Type.Object({ worktree: RecordSchema }), 201),\n },\n {\n id: 'git.close',\n scope,\n basePath: 'git',\n path: '/worktrees/{id}',\n method: 'DELETE',\n authentication: 'owner',\n description: 'Close a worktree.',\n parameters: [...query, { name: 'force', in: 'query', required: false, schema: B }],\n responses: jsonApiResponses(Type.Object({ worktree: RecordSchema })),\n },\n // The new-session dialog's routes exist only on a workspace mount.\n ...(scope === 'workspace'\n ? [\n {\n id: 'git.branches',\n scope,\n basePath: 'git',\n path: '/branches',\n method: 'GET' as const,\n authentication: 'owner' as const,\n description: 'List the workspace branches for the new-session dialog.',\n responses: jsonApiResponses(\n Type.Object({\n repository: B,\n current: O(S),\n defaultBase: O(S),\n local: Type.Array(Type.Object({ name: S, checkedOutAt: O(S) })),\n remote: Type.Array(Type.Object({ remote: S, name: S })),\n }),\n ),\n },\n {\n id: 'git.sessions.create',\n scope,\n basePath: 'git',\n path: '/sessions',\n method: 'POST' as const,\n authentication: 'owner' as const,\n description: 'Start a top-level worktree session on an existing or new branch.',\n body: {\n required: true,\n contentType: 'application/json',\n schema: Type.Union([\n Type.Object({ mode: Type.Literal('existing-branch'), branch: S, remote: O(S), name: O(S) }),\n Type.Object({ mode: Type.Literal('new-branch'), branch: S, baseRef: O(S), name: O(S) }),\n ]),\n },\n responses: jsonApiResponses(Type.Object({ sessionId: S, worktreeId: S }), 201),\n },\n ]\n : []),\n ]),\n sockets: (['global', 'workspace'] as const).flatMap((scope) => [\n {\n id: 'git.channel',\n scope,\n service: 'doompi.hub.v1',\n member: 'git_worktrees',\n kind: 'channel',\n direction: 'server-to-client',\n description: 'Worktree channel payload.',\n input: WorktreesPayloadSchema,\n },\n {\n id: 'git.command',\n scope,\n service: 'doompi.hub.v1',\n member: 'git_worktrees',\n kind: 'channel',\n direction: 'client-to-server',\n description: 'Worktree channel command payload.',\n input: WorktreesCommandSchema,\n },\n ]),\n});\nexport default apiContracts;\n"],"mappings":"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"}
@@ -1 +1,105 @@
1
- Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});const e=require("../adapters/pi/extension.cjs");exports.activateGitExtension=e.activateGitExtension,exports.default=e.activateGitExtension;
1
+ Object.defineProperties(exports, {
2
+ __esModule: { value: true },
3
+ [Symbol.toStringTag]: { value: "Module" }
4
+ });
5
+ const require_gitDependencies = require("../gitDependencies-CWsygnLQ.cjs");
6
+ const require_runWorktree = require("../runWorktree-D0bsyYc0.cjs");
7
+ let _agimon_ai_doompi_core_piExtension = require("@agimon-ai/doompi-core/piExtension");
8
+ let _agimon_ai_doompi_core_extensionFile = require("@agimon-ai/doompi-core/extensionFile");
9
+ //#region src/extensions/workspaces/sessions/(backend)/_lib/root.cli.ts
10
+ const root = (0, _agimon_ai_doompi_core_extensionFile.defineRoot)((context) => ({ value: require_gitDependencies.createGitDependencies(context.options) }));
11
+ //#endregion
12
+ //#region src/extensions/workspaces/sessions/(backend)/root.cli.ts
13
+ var root_cli_default = (0, _agimon_ai_doompi_core_extensionFile.defineRoot)(root);
14
+ //#endregion
15
+ //#region src/extensions/workspaces/sessions/(backend)/command/_lib/git.cli.ts
16
+ function createGitCommand(service) {
17
+ return [require_runWorktree.COMMAND_NAME, {
18
+ description: require_runWorktree.COMMAND_DESCRIPTION,
19
+ handler: async (_args, ctx) => {
20
+ const result = await service.execute();
21
+ if (ctx.hasUI) ctx.ui.notify(result.message, result.level);
22
+ }
23
+ }];
24
+ }
25
+ var git_cli_default$1 = (context) => createGitCommand(context.root.service);
26
+ //#endregion
27
+ //#region src/extensions/workspaces/sessions/(backend)/command/git.cli.ts
28
+ var git_cli_default = (0, _agimon_ai_doompi_core_extensionFile.defineCliCommand)(git_cli_default$1);
29
+ //#endregion
30
+ //#region src/extensions/workspaces/sessions/(backend)/resource/_lib/doompi-use-git.cli.ts
31
+ function createDoompiUseGitResource(moduleUrl) {
32
+ return {
33
+ source: "@agimon-ai/doompi-git",
34
+ moduleUrl,
35
+ skills: [{
36
+ name: "doompi-use-git",
37
+ 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"
38
+ }]
39
+ };
40
+ }
41
+ //#endregion
42
+ //#region src/extensions/workspaces/sessions/(backend)/resource/doompi-use-git.cli.ts
43
+ var doompi_use_git_cli_default = (0, _agimon_ai_doompi_core_extensionFile.defineResource)(createDoompiUseGitResource(require("url").pathToFileURL(__filename).href));
44
+ //#endregion
45
+ //#region src/extensions/workspaces/sessions/(backend)/tool/_lib/runWorktree.cli.ts
46
+ var runWorktree_cli_default$1 = (0, _agimon_ai_doompi_core_extensionFile.defineCliTool)((context) => (0, _agimon_ai_doompi_core_piExtension.definePiTool)(createRunWorktreeTool(context.root.operations)));
47
+ /** Creates the typed Pi worktree tool declaration. */
48
+ function createRunWorktreeTool(operations) {
49
+ return {
50
+ name: require_runWorktree.RUN_WORKTREE_TOOL_NAME,
51
+ label: "Worktree",
52
+ description: require_runWorktree.RUN_WORKTREE_DESCRIPTION,
53
+ parameters: require_runWorktree.RunWorktreeToolSchema,
54
+ prepareArguments: require_runWorktree.validateParams,
55
+ execute: async (_id, rawParams, signal, onUpdate, ctx) => {
56
+ const params = require_runWorktree.validateParams(rawParams);
57
+ return await require_runWorktree.executeRunWorktreeTool(params, operations, {
58
+ cwd: ctx.cwd,
59
+ sessionId: ctx.sessionManager.getSessionId()
60
+ }, {
61
+ ...signal === void 0 ? {} : { signal },
62
+ onProgress: (label) => onUpdate?.({
63
+ content: [{
64
+ type: "text",
65
+ text: label
66
+ }],
67
+ details: { action: params.action }
68
+ })
69
+ });
70
+ }
71
+ };
72
+ }
73
+ //#endregion
74
+ //#region src/extensions/workspaces/sessions/(backend)/tool/runWorktree.cli.ts
75
+ var runWorktree_cli_default = (0, _agimon_ai_doompi_core_extensionFile.defineCliTool)(runWorktree_cli_default$1);
76
+ //#endregion
77
+ //#region generated/pi.ts
78
+ const at = (value, context) => typeof value === "function" ? value(context) : value;
79
+ const via = (identity, value) => value === void 0 ? void 0 : {
80
+ ...identity,
81
+ ...value
82
+ };
83
+ const extension = (0, _agimon_ai_doompi_core_piExtension.definePiExtension)("@agimon-ai/doompi-git", async (context) => {
84
+ const scopeSession = await root_cli_default(context);
85
+ const contextSession = {
86
+ ...context,
87
+ root: scopeSession.value
88
+ };
89
+ return {
90
+ ...(0, _agimon_ai_doompi_core_extensionFile.composeRootHooks)(scopeSession),
91
+ get commands() {
92
+ return [at(git_cli_default, contextSession)];
93
+ },
94
+ get resources() {
95
+ return [at(doompi_use_git_cli_default, contextSession)];
96
+ },
97
+ ...(0, _agimon_ai_doompi_core_piExtension.piToolContributions)("@agimon-ai/doompi-git", [via({ name: "run_worktree" }, at(runWorktree_cli_default, contextSession))]),
98
+ services: [...scopeSession.services ?? []]
99
+ };
100
+ });
101
+ //#endregion
102
+ exports.default = extension;
103
+ exports.extension = extension;
104
+
105
+ //# sourceMappingURL=pi.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pi.cjs","names":["defineRoot","createGitDependencies","defineRoot","contribution","COMMAND_NAME","COMMAND_DESCRIPTION","defineCliCommand","contribution","defineResource","defineCliTool","definePiTool","RUN_WORKTREE_TOOL_NAME","RUN_WORKTREE_DESCRIPTION","RunWorktreeToolSchema","validateParams","executeRunWorktreeTool","defineCliTool","contribution","definePiExtension","rootSession","composeRootHooks","commandGit","resourceDoompiUseGit","piToolContributions","toolRunWorktree"],"sources":["../../src/extensions/workspaces/sessions/(backend)/_lib/root.cli.ts","../../src/extensions/workspaces/sessions/(backend)/root.cli.ts","../../src/extensions/workspaces/sessions/(backend)/command/_lib/git.cli.ts","../../src/extensions/workspaces/sessions/(backend)/command/git.cli.ts","../../src/extensions/workspaces/sessions/(backend)/resource/_lib/doompi-use-git.cli.ts","../../src/extensions/workspaces/sessions/(backend)/resource/doompi-use-git.cli.ts","../../src/extensions/workspaces/sessions/(backend)/tool/_lib/runWorktree.cli.ts","../../src/extensions/workspaces/sessions/(backend)/tool/runWorktree.cli.ts","../../generated/pi.ts"],"sourcesContent":["import { defineRoot } from '@agimon-ai/doompi-core/extensionFile';\nimport type { PiPluginContext } from '@agimon-ai/doompi-core/piExtension';\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","import { defineRoot } from '@agimon-ai/doompi-core/extensionFile';\n\nimport contribution from './_lib/root.cli';\n\nexport default defineRoot(contribution);\n","import type { WithRoot } from '@agimon-ai/doompi-core/extensionFile';\nimport type { PiPluginContext } from '@agimon-ai/doompi-core/piExtension';\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","import { defineCliCommand } from '@agimon-ai/doompi-core/extensionFile';\n\nimport contribution from './_lib/git.cli';\n\nexport default defineCliCommand(contribution);\n","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","import { defineResource } from '@agimon-ai/doompi-core/extensionFile';\n\nimport { createDoompiUseGitResource } from './_lib/doompi-use-git.cli';\n\nexport default defineResource(createDoompiUseGitResource(import.meta.url));\n","import { defineCliTool, type WithRoot } from '@agimon-ai/doompi-core/extensionFile';\nimport { definePiTool, type PiPluginContext } from '@agimon-ai/doompi-core/piExtension';\nimport type { AgentToolResult } from '@earendil-works/pi-agent-core';\nimport type { ToolDefinition } from '@earendil-works/pi-coding-agent';\n\nimport { RunWorktreeToolSchema, type RunWorktreeToolParams } from '../../../../../../schemas/runWorktreeTool';\nimport {\n executeRunWorktreeTool,\n RUN_WORKTREE_DESCRIPTION,\n RUN_WORKTREE_TOOL_NAME,\n validateParams,\n type RunWorktreeToolDetails,\n} from '../../../../../../services/runWorktree';\nimport type { WorktreeOperations } from '../../../../../../services/worktreeOperations';\nimport type { GitExtensionDependencies } from '../../../../../../types/extension';\nimport type { GitPiScope } from '../../_lib/root.cli';\n\nexport default defineCliTool((context: WithRoot<PiPluginContext<Partial<GitExtensionDependencies>>, GitPiScope>) =>\n definePiTool(createRunWorktreeTool(context.root.operations)),\n);\n\nexport { RUN_WORKTREE_TOOL_NAME, validateParams };\nexport type { RunWorktreeToolDetails };\n\n/** Creates the typed Pi worktree tool declaration. */\nexport function createRunWorktreeTool(\n operations: WorktreeOperations,\n): ToolDefinition<typeof RunWorktreeToolSchema, RunWorktreeToolDetails> {\n const tool: ToolDefinition<typeof RunWorktreeToolSchema, RunWorktreeToolDetails> = {\n name: RUN_WORKTREE_TOOL_NAME,\n label: 'Worktree',\n description: RUN_WORKTREE_DESCRIPTION,\n parameters: RunWorktreeToolSchema,\n prepareArguments: validateParams,\n // The signal and the progress callback are the host's two answers to a\n // call that takes minutes. Dropping them is what let an interrupted spawn\n // run on with nobody waiting for it, and left the caller staring at\n // nothing while it did.\n execute: async (_id, rawParams, signal, onUpdate, ctx) => {\n const params = validateParams(rawParams) as RunWorktreeToolParams;\n return (await executeRunWorktreeTool(\n params,\n operations,\n {\n cwd: ctx.cwd,\n sessionId: ctx.sessionManager.getSessionId(),\n },\n {\n ...(signal === undefined ? {} : { signal }),\n onProgress: (label) =>\n onUpdate?.({ content: [{ type: 'text', text: label }], details: { action: params.action } }),\n },\n )) as AgentToolResult<RunWorktreeToolDetails>;\n },\n };\n return tool;\n}\n","import { defineCliTool } from '@agimon-ai/doompi-core/extensionFile';\n\nimport contribution from './_lib/runWorktree.cli';\n\nexport default defineCliTool(contribution);\n","// Generated by @agimon-ai/doompi-build. Do not edit by hand.\nimport { definePiExtension, piToolContributions, type PiPluginContext, type PiPluginContributions } from '@agimon-ai/doompi-core/piExtension';\nimport { composeRootHooks } from '@agimon-ai/doompi-core/extensionFile';\n\nimport rootSession from '../src/extensions/workspaces/sessions/(backend)/root.cli';\nimport commandGit from '../src/extensions/workspaces/sessions/(backend)/command/git.cli';\nimport resourceDoompiUseGit from '../src/extensions/workspaces/sessions/(backend)/resource/doompi-use-git.cli';\nimport toolRunWorktree from '../src/extensions/workspaces/sessions/(backend)/tool/runWorktree.cli';\n\ntype OptionsOf<T> = T extends (context: PiPluginContext<infer Options>) => unknown ? Options : never;\ntype InferredOptions = Exclude<OptionsOf<typeof rootSession> | OptionsOf<typeof commandGit> | OptionsOf<typeof resourceDoompiUseGit> | OptionsOf<typeof toolRunWorktree>, 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;\nconst via = <T>(identity: Record<string, unknown>, value: unknown): T =>\n (value === undefined ? undefined : { ...identity, ...(value as object) }) as T;\n\nexport const extension = definePiExtension<ExtensionOptions>('@agimon-ai/doompi-git', 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 [at(commandGit, contextSession)]; },\n get resources(): PiPluginContributions['resources'] { return [at(resourceDoompiUseGit, contextSession)]; },\n ...piToolContributions('@agimon-ai/doompi-git', [via({ name: 'run_worktree' }, at(toolRunWorktree, contextSession))]),\n services: [...(scopeSession.services ?? [])],\n };\n});\n\nexport default extension;\n"],"mappings":";;;;;;;;;AAMA,MAAM,QAAA,GAAOA,qCAAAA,WAAAA,EAAY,aAAiE,EACxF,OAAOC,wBAAAA,sBAAsB,QAAQ,OAAO,EAC9C,EAAE;;;ACJF,IAAA,oBAAA,GAAeC,qCAAAA,WAAAA,CAAWC,IAAY;;;ACKtC,SAAgB,iBACd,SACmE;CACnE,OAAO,CACLC,oBAAAA,cACA;EACE,aAAaC,oBAAAA;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,qBAAgB,YACd,iBAAiB,QAAQ,KAAK,OAAO;;;ACrBvC,IAAA,mBAAA,GAAeC,qCAAAA,iBAAAA,CAAiBC,iBAAY;;;ACJ5C,SAAgB,2BAA2B,WAAmB;CAC5D,OAAO;EACL,QAAQ;EACR;EACA,QAAQ,CACN;GACE,MAAM;GACN,aACE;EACJ,CACF;CACF;AACF;;;ACRA,IAAA,8BAAA,GAAeC,qCAAAA,eAAAA,CAAe,2BAAA,QAAA,KAAA,CAAA,CAAA,cAAA,UAAA,CAAA,CAAA,IAA0C,CAAC;;;ACazE,IAAA,6BAAA,GAAeC,qCAAAA,cAAAA,EAAe,aAAA,GAC5BC,mCAAAA,aAAAA,CAAa,sBAAsB,QAAQ,KAAK,UAAU,CAAC,CAC7D;;AAMA,SAAgB,sBACd,YACsE;CA4BtE,OAAO;EA1BL,MAAMC,oBAAAA;EACN,OAAO;EACP,aAAaC,oBAAAA;EACb,YAAYC,oBAAAA;EACZ,kBAAkBC,oBAAAA;EAKlB,SAAS,OAAO,KAAK,WAAW,QAAQ,UAAU,QAAQ;GACxD,MAAM,SAASA,oBAAAA,eAAe,SAAS;GACvC,OAAQ,MAAMC,oBAAAA,uBACZ,QACA,YACA;IACE,KAAK,IAAI;IACT,WAAW,IAAI,eAAe,aAAa;GAC7C,GACA;IACE,GAAI,WAAW,KAAA,IAAY,CAAC,IAAI,EAAE,OAAO;IACzC,aAAa,UACX,WAAW;KAAE,SAAS,CAAC;MAAE,MAAM;MAAQ,MAAM;KAAM,CAAC;KAAG,SAAS,EAAE,QAAQ,OAAO,OAAO;IAAE,CAAC;GAC/F,CACF;EACF;CAEQ;AACZ;;;ACpDA,IAAA,2BAAA,GAAeC,qCAAAA,cAAAA,CAAcC,yBAAY;;;ACYzC,MAAM,MAAY,OAA0B,YAC1C,OAAO,UAAU,aAAc,MAAwB,OAAO,IAAI;AACpE,MAAM,OAAU,UAAmC,UAChD,UAAU,KAAA,IAAY,KAAA,IAAY;CAAE,GAAG;CAAU,GAAI;AAAiB;AAEzE,MAAa,aAAA,GAAYC,mCAAAA,kBAAAA,CAAoC,yBAAyB,OAAO,YAAY;CACvG,MAAM,eAAe,MAAMC,iBAAY,OAAO;CAC9C,MAAM,iBAAiB;EAAE,GAAG;EAAS,MAAM,aAAa;CAAM;CAC9D,OAAO;EACL,IAAA,GAAGC,qCAAAA,iBAAAA,CAAiB,YAAY;EAChC,IAAI,WAA8C;GAAE,OAAO,CAAC,GAAGC,iBAAY,cAAc,CAAC;EAAG;EAC7F,IAAI,YAAgD;GAAE,OAAO,CAAC,GAAGC,4BAAsB,cAAc,CAAC;EAAG;EACzG,IAAA,GAAGC,mCAAAA,oBAAAA,CAAoB,yBAAyB,CAAC,IAAI,EAAE,MAAM,eAAe,GAAG,GAAGC,yBAAiB,cAAc,CAAC,CAAC,CAAC;EACpH,UAAU,CAAC,GAAI,aAAa,YAAY,CAAC,CAAE;CAC7C;AACF,CAAC"}
@@ -1,2 +1,6 @@
1
- import { activateGitExtension } from "../adapters/pi/extension.mjs";
2
- export { activateGitExtension, activateGitExtension as default };
1
+ import { r as GitExtensionDependencies } from "../index-D79MSCee.mjs";
2
+ //#region generated/pi.d.ts
3
+ export declare const extension: import("@agimon-ai/doompi-core/runtimePiExtension").DefinedPiExtension<Partial<GitExtensionDependencies>>;
4
+ //#endregion
5
+ export { extension as default };
6
+ //# sourceMappingURL=pi.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pi.d.mts","names":[],"sources":["../../generated/pi.ts"],"mappings":";;qBAqBa,+DAAS,mBAAA,QAAT"}