@agimon-ai/doompi-git 0.0.1-alpha.5 → 0.0.1-alpha.51
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.
- package/README.md +33 -1
- package/dist/apiContracts.cjs +387 -0
- package/dist/apiContracts.cjs.map +1 -0
- package/dist/apiContracts.d.mts +53 -0
- package/dist/apiContracts.d.mts.map +1 -0
- package/dist/apiContracts.mjs +382 -0
- package/dist/apiContracts.mjs.map +1 -0
- package/dist/extensions/pi.cjs +105 -1
- package/dist/extensions/pi.cjs.map +1 -0
- package/dist/extensions/pi.d.mts +6 -2
- package/dist/extensions/pi.d.mts.map +1 -0
- package/dist/extensions/pi.mjs +100 -1
- package/dist/extensions/pi.mjs.map +1 -0
- package/dist/extensions/server.cjs +1828 -0
- package/dist/extensions/server.cjs.map +1 -0
- package/dist/extensions/server.d.mts +5 -0
- package/dist/extensions/server.d.mts.map +1 -0
- package/dist/extensions/server.mjs +1820 -0
- package/dist/extensions/server.mjs.map +1 -0
- package/dist/extensions/web.mjs +2639 -0
- package/dist/extensions/web.mjs.map +1 -0
- package/dist/gitDependencies-CtVubYvU.mjs +22 -0
- package/dist/gitDependencies-CtVubYvU.mjs.map +1 -0
- package/dist/gitDependencies-Dqsz2HjK.cjs +33 -0
- package/dist/gitDependencies-Dqsz2HjK.cjs.map +1 -0
- package/dist/index-D79MSCee.d.mts +145 -0
- package/dist/index-D79MSCee.d.mts.map +1 -0
- package/dist/index.cjs +4 -1
- package/dist/index.d.mts +2 -5
- package/dist/index.mjs +2 -1
- package/dist/runWorktree-BE795LxL.cjs +374 -0
- package/dist/runWorktree-BE795LxL.cjs.map +1 -0
- package/dist/runWorktree-SPzJvIBt.mjs +303 -0
- package/dist/runWorktree-SPzJvIBt.mjs.map +1 -0
- package/dist/worktreeOperations-BYmVU0UV.cjs +1350 -0
- package/dist/worktreeOperations-BYmVU0UV.cjs.map +1 -0
- package/dist/worktreeOperations-BrWG2muV.mjs +1194 -0
- package/dist/worktreeOperations-BrWG2muV.mjs.map +1 -0
- package/llms.txt +4 -0
- package/package.json +59 -44
- package/src/prompts/doompi-use-git/SKILL.md +21 -1
- package/dist/_virtual/_rolldown/runtime.cjs +0 -1
- package/dist/adapters/channel/worktreeChannel.cjs +0 -2
- package/dist/adapters/channel/worktreeChannel.cjs.map +0 -1
- package/dist/adapters/channel/worktreeChannel.d.cts +0 -40
- package/dist/adapters/channel/worktreeChannel.d.cts.map +0 -1
- package/dist/adapters/channel/worktreeChannel.d.mts +0 -40
- package/dist/adapters/channel/worktreeChannel.d.mts.map +0 -1
- package/dist/adapters/channel/worktreeChannel.mjs +0 -2
- package/dist/adapters/channel/worktreeChannel.mjs.map +0 -1
- package/dist/adapters/filesystem/atomicJson.cjs +0 -2
- package/dist/adapters/filesystem/atomicJson.cjs.map +0 -1
- package/dist/adapters/filesystem/atomicJson.mjs +0 -2
- package/dist/adapters/filesystem/atomicJson.mjs.map +0 -1
- package/dist/adapters/filesystem/paths.cjs +0 -2
- package/dist/adapters/filesystem/paths.cjs.map +0 -1
- package/dist/adapters/filesystem/paths.mjs +0 -2
- package/dist/adapters/filesystem/paths.mjs.map +0 -1
- package/dist/adapters/hub/hubClient.cjs +0 -2
- package/dist/adapters/hub/hubClient.cjs.map +0 -1
- package/dist/adapters/hub/hubClient.d.cts +0 -1
- package/dist/adapters/hub/hubClient.d.mts +0 -1
- package/dist/adapters/hub/hubClient.mjs +0 -2
- package/dist/adapters/hub/hubClient.mjs.map +0 -1
- package/dist/adapters/pi/extension.cjs +0 -2
- package/dist/adapters/pi/extension.cjs.map +0 -1
- package/dist/adapters/pi/extension.d.cts +0 -9
- package/dist/adapters/pi/extension.d.cts.map +0 -1
- package/dist/adapters/pi/extension.d.mts +0 -9
- package/dist/adapters/pi/extension.d.mts.map +0 -1
- package/dist/adapters/pi/extension.mjs +0 -2
- package/dist/adapters/pi/extension.mjs.map +0 -1
- package/dist/adapters/pi/extensions/runWorktreeTool.cjs +0 -15
- package/dist/adapters/pi/extensions/runWorktreeTool.cjs.map +0 -1
- package/dist/adapters/pi/extensions/runWorktreeTool.mjs +0 -15
- package/dist/adapters/pi/extensions/runWorktreeTool.mjs.map +0 -1
- package/dist/adapters/web/worktreesChannel.cjs +0 -2
- package/dist/adapters/web/worktreesChannel.cjs.map +0 -1
- package/dist/adapters/web/worktreesChannel.d.cts +0 -21
- package/dist/adapters/web/worktreesChannel.d.cts.map +0 -1
- package/dist/adapters/web/worktreesChannel.d.mts +0 -21
- package/dist/adapters/web/worktreesChannel.d.mts.map +0 -1
- package/dist/adapters/web/worktreesChannel.mjs +0 -2
- package/dist/adapters/web/worktreesChannel.mjs.map +0 -1
- package/dist/adapters/worktree/compositionMirror.cjs +0 -2
- package/dist/adapters/worktree/compositionMirror.cjs.map +0 -1
- package/dist/adapters/worktree/compositionMirror.mjs +0 -2
- package/dist/adapters/worktree/compositionMirror.mjs.map +0 -1
- package/dist/adapters/worktree/gitCli.cjs +0 -4
- package/dist/adapters/worktree/gitCli.cjs.map +0 -1
- package/dist/adapters/worktree/gitCli.mjs +0 -4
- package/dist/adapters/worktree/gitCli.mjs.map +0 -1
- package/dist/adapters/worktree/repositoryIdentity.cjs +0 -2
- package/dist/adapters/worktree/repositoryIdentity.cjs.map +0 -1
- package/dist/adapters/worktree/repositoryIdentity.mjs +0 -2
- package/dist/adapters/worktree/repositoryIdentity.mjs.map +0 -1
- package/dist/adapters/worktree/worktreeOperations.cjs +0 -2
- package/dist/adapters/worktree/worktreeOperations.cjs.map +0 -1
- package/dist/adapters/worktree/worktreeOperations.d.cts +0 -38
- package/dist/adapters/worktree/worktreeOperations.d.cts.map +0 -1
- package/dist/adapters/worktree/worktreeOperations.d.mts +0 -38
- package/dist/adapters/worktree/worktreeOperations.d.mts.map +0 -1
- package/dist/adapters/worktree/worktreeOperations.mjs +0 -2
- package/dist/adapters/worktree/worktreeOperations.mjs.map +0 -1
- package/dist/adapters/worktree/worktreeRegistry.cjs +0 -2
- package/dist/adapters/worktree/worktreeRegistry.cjs.map +0 -1
- package/dist/adapters/worktree/worktreeRegistry.mjs +0 -2
- package/dist/adapters/worktree/worktreeRegistry.mjs.map +0 -1
- package/dist/commands/doomGitCommand.cjs +0 -2
- package/dist/commands/doomGitCommand.cjs.map +0 -1
- package/dist/commands/doomGitCommand.mjs +0 -2
- package/dist/commands/doomGitCommand.mjs.map +0 -1
- package/dist/container/index.cjs +0 -2
- package/dist/container/index.cjs.map +0 -1
- package/dist/container/index.d.cts +0 -6
- package/dist/container/index.d.cts.map +0 -1
- package/dist/container/index.d.mts +0 -6
- package/dist/container/index.d.mts.map +0 -1
- package/dist/container/index.mjs +0 -2
- package/dist/container/index.mjs.map +0 -1
- package/dist/extensions/pi.d.cts +0 -2
- package/dist/hubApi.cjs +0 -2
- package/dist/hubApi.cjs.map +0 -1
- package/dist/hubApi.d.cts +0 -6
- package/dist/hubApi.d.cts.map +0 -1
- package/dist/hubApi.d.mts +0 -6
- package/dist/hubApi.d.mts.map +0 -1
- package/dist/hubApi.mjs +0 -2
- package/dist/hubApi.mjs.map +0 -1
- package/dist/index.d.cts +0 -5
- package/dist/schemas/runWorktreeTool.cjs +0 -2
- package/dist/schemas/runWorktreeTool.cjs.map +0 -1
- package/dist/schemas/runWorktreeTool.mjs +0 -2
- package/dist/schemas/runWorktreeTool.mjs.map +0 -1
- package/dist/services/extensionService.cjs +0 -2
- package/dist/services/extensionService.cjs.map +0 -1
- package/dist/services/extensionService.d.cts +0 -8
- package/dist/services/extensionService.d.cts.map +0 -1
- package/dist/services/extensionService.d.mts +0 -8
- package/dist/services/extensionService.d.mts.map +0 -1
- package/dist/services/extensionService.mjs +0 -2
- package/dist/services/extensionService.mjs.map +0 -1
- package/dist/services/support/errors.cjs +0 -2
- package/dist/services/support/errors.cjs.map +0 -1
- package/dist/services/support/errors.mjs +0 -2
- package/dist/services/support/errors.mjs.map +0 -1
- package/dist/services/worktreeNaming.cjs +0 -2
- package/dist/services/worktreeNaming.cjs.map +0 -1
- package/dist/services/worktreeNaming.d.cts +0 -34
- package/dist/services/worktreeNaming.d.cts.map +0 -1
- package/dist/services/worktreeNaming.d.mts +0 -34
- package/dist/services/worktreeNaming.d.mts.map +0 -1
- package/dist/services/worktreeNaming.mjs +0 -2
- package/dist/services/worktreeNaming.mjs.map +0 -1
- package/dist/types/extension.d.cts +0 -17
- package/dist/types/extension.d.cts.map +0 -1
- package/dist/types/extension.d.mts +0 -17
- package/dist/types/extension.d.mts.map +0 -1
- package/dist/types/webWorktrees.cjs +0 -2
- package/dist/types/webWorktrees.cjs.map +0 -1
- package/dist/types/webWorktrees.mjs +0 -2
- package/dist/types/webWorktrees.mjs.map +0 -1
- package/dist/types/worktreeRegistry.d.cts +0 -41
- package/dist/types/worktreeRegistry.d.cts.map +0 -1
- package/dist/types/worktreeRegistry.d.mts +0 -41
- package/dist/types/worktreeRegistry.d.mts.map +0 -1
- package/dist/webHub.cjs +0 -1
- package/dist/webHub.d.cts +0 -2
- package/dist/webHub.d.mts +0 -2
- package/dist/webHub.mjs +0 -1
- package/src/exports/webClient.ts +0 -1
- package/src/types/webWorktrees.ts +0 -55
- package/src/types/worktreeRegistry.ts +0 -78
- package/src/web/components/RunWorktreeToolMessage.tsx +0 -45
- package/src/web/components/WorktreesActivitySection.tsx +0 -79
- package/src/web/components/WorktreesPanel.tsx +0 -174
- package/src/web/components/toolRenderers.ts +0 -7
- package/src/web/index.ts +0 -30
- package/src/web/stores/worktreesActivityStore.ts +0 -124
- package/src/web/tsconfig.json +0 -22
|
@@ -0,0 +1,382 @@
|
|
|
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 N = Type.Integer({ minimum: 0 });
|
|
56
|
+
const ChangesSchema = Type.Object({
|
|
57
|
+
branch: O(S),
|
|
58
|
+
base: O(S),
|
|
59
|
+
added: N,
|
|
60
|
+
removed: N,
|
|
61
|
+
files: N,
|
|
62
|
+
truncated: O(B),
|
|
63
|
+
upstream: O(Type.Object({
|
|
64
|
+
ref: S,
|
|
65
|
+
ahead: N,
|
|
66
|
+
behind: N
|
|
67
|
+
})),
|
|
68
|
+
rebase: O(Type.Object({ conflicts: Type.Array(S) }))
|
|
69
|
+
});
|
|
70
|
+
const SyncErrorTargetSchema = Type.Union([Type.Object({ action: literals([
|
|
71
|
+
"pull",
|
|
72
|
+
"rebase",
|
|
73
|
+
"abort-rebase"
|
|
74
|
+
]) }), Type.Object({
|
|
75
|
+
action: Type.Literal("push"),
|
|
76
|
+
forceRequired: O(Type.Literal(true))
|
|
77
|
+
})]);
|
|
78
|
+
const GitChangesPayloadSchema = Type.Object({
|
|
79
|
+
changes: O(ChangesSchema),
|
|
80
|
+
pending: O(S),
|
|
81
|
+
error: O(S),
|
|
82
|
+
errorTarget: O(SyncErrorTargetSchema)
|
|
83
|
+
});
|
|
84
|
+
const GitChangesCommandSchema = Type.Union([Type.Object({ action: literals([
|
|
85
|
+
"pull",
|
|
86
|
+
"rebase",
|
|
87
|
+
"abort-rebase"
|
|
88
|
+
]) }), Type.Object({
|
|
89
|
+
action: Type.Literal("push"),
|
|
90
|
+
force: O(Type.Literal(true))
|
|
91
|
+
})]);
|
|
92
|
+
const AuthViewSchema = Type.Object({
|
|
93
|
+
method: literals([
|
|
94
|
+
"none",
|
|
95
|
+
"ssh",
|
|
96
|
+
"https"
|
|
97
|
+
]),
|
|
98
|
+
ssh: O(Type.Object({ keyPath: O(S) })),
|
|
99
|
+
https: O(Type.Object({
|
|
100
|
+
host: S,
|
|
101
|
+
username: S,
|
|
102
|
+
hasToken: B
|
|
103
|
+
}))
|
|
104
|
+
});
|
|
105
|
+
const AuthSaveSchema = Type.Union([
|
|
106
|
+
Type.Object({ method: Type.Literal("none") }),
|
|
107
|
+
Type.Object({
|
|
108
|
+
method: Type.Literal("ssh"),
|
|
109
|
+
keyPath: O(S)
|
|
110
|
+
}),
|
|
111
|
+
Type.Object({
|
|
112
|
+
method: Type.Literal("https"),
|
|
113
|
+
host: S,
|
|
114
|
+
username: S,
|
|
115
|
+
token: O(Type.String({ writeOnly: true }))
|
|
116
|
+
})
|
|
117
|
+
]);
|
|
118
|
+
const DiffRowSchema = Type.Object({
|
|
119
|
+
marker: literals([
|
|
120
|
+
"+",
|
|
121
|
+
"-",
|
|
122
|
+
" "
|
|
123
|
+
]),
|
|
124
|
+
line: N,
|
|
125
|
+
content: S
|
|
126
|
+
});
|
|
127
|
+
const ReviewSummarySchema = Type.Object({
|
|
128
|
+
repository: B,
|
|
129
|
+
branch: O(S),
|
|
130
|
+
base: O(S),
|
|
131
|
+
mergeBase: O(S),
|
|
132
|
+
truncated: O(B),
|
|
133
|
+
files: Type.Array(Type.Object({
|
|
134
|
+
path: S,
|
|
135
|
+
status: literals([
|
|
136
|
+
"added",
|
|
137
|
+
"modified",
|
|
138
|
+
"deleted",
|
|
139
|
+
"untracked",
|
|
140
|
+
"conflicted"
|
|
141
|
+
]),
|
|
142
|
+
added: N,
|
|
143
|
+
removed: N,
|
|
144
|
+
binary: O(B)
|
|
145
|
+
}))
|
|
146
|
+
});
|
|
147
|
+
const ReviewFileSchema = Type.Object({
|
|
148
|
+
path: S,
|
|
149
|
+
hunks: Type.Array(Type.Object({
|
|
150
|
+
start: N,
|
|
151
|
+
rows: Type.Array(DiffRowSchema)
|
|
152
|
+
})),
|
|
153
|
+
binary: O(Type.Literal(true)),
|
|
154
|
+
tooLarge: O(Type.Literal(true))
|
|
155
|
+
});
|
|
156
|
+
const query = [{
|
|
157
|
+
name: "repositoryId",
|
|
158
|
+
in: "query",
|
|
159
|
+
required: true,
|
|
160
|
+
schema: S
|
|
161
|
+
}, {
|
|
162
|
+
name: "sessionId",
|
|
163
|
+
in: "query",
|
|
164
|
+
required: true,
|
|
165
|
+
schema: S
|
|
166
|
+
}];
|
|
167
|
+
const apiContracts = defineApiContract({
|
|
168
|
+
version: 1,
|
|
169
|
+
dynamic: [],
|
|
170
|
+
http: ["global", "workspace"].flatMap((scope) => [
|
|
171
|
+
{
|
|
172
|
+
id: "git.list",
|
|
173
|
+
scope,
|
|
174
|
+
basePath: "git",
|
|
175
|
+
path: "/worktrees",
|
|
176
|
+
method: "GET",
|
|
177
|
+
authentication: "owner",
|
|
178
|
+
description: "List admitted repository worktrees.",
|
|
179
|
+
parameters: query.map((item) => ({
|
|
180
|
+
...item,
|
|
181
|
+
required: item.name === "repositoryId"
|
|
182
|
+
})),
|
|
183
|
+
responses: jsonApiResponses(Type.Object({ worktrees: Type.Array(RecordSchema) }))
|
|
184
|
+
},
|
|
185
|
+
{
|
|
186
|
+
id: "git.create",
|
|
187
|
+
scope,
|
|
188
|
+
basePath: "git",
|
|
189
|
+
path: "/worktrees",
|
|
190
|
+
method: "POST",
|
|
191
|
+
authentication: "owner",
|
|
192
|
+
description: "Create a worktree and session.",
|
|
193
|
+
parameters: query,
|
|
194
|
+
body: {
|
|
195
|
+
required: true,
|
|
196
|
+
contentType: "application/json",
|
|
197
|
+
schema: Type.Object({
|
|
198
|
+
branch: Type.String({ minLength: 1 }),
|
|
199
|
+
baseRef: O(S),
|
|
200
|
+
name: O(S)
|
|
201
|
+
})
|
|
202
|
+
},
|
|
203
|
+
responses: jsonApiResponses(Type.Object({ worktree: RecordSchema }), 201)
|
|
204
|
+
},
|
|
205
|
+
{
|
|
206
|
+
id: "git.close",
|
|
207
|
+
scope,
|
|
208
|
+
basePath: "git",
|
|
209
|
+
path: "/worktrees/{id}",
|
|
210
|
+
method: "DELETE",
|
|
211
|
+
authentication: "owner",
|
|
212
|
+
description: "Close a worktree.",
|
|
213
|
+
parameters: [...query, {
|
|
214
|
+
name: "force",
|
|
215
|
+
in: "query",
|
|
216
|
+
required: false,
|
|
217
|
+
schema: B
|
|
218
|
+
}],
|
|
219
|
+
responses: jsonApiResponses(Type.Object({ worktree: RecordSchema }))
|
|
220
|
+
},
|
|
221
|
+
...scope === "workspace" ? [
|
|
222
|
+
{
|
|
223
|
+
id: "git.auth.read",
|
|
224
|
+
scope,
|
|
225
|
+
basePath: "git",
|
|
226
|
+
path: "/auth",
|
|
227
|
+
method: "GET",
|
|
228
|
+
authentication: "owner",
|
|
229
|
+
description: "Read a workspace's remote auth for manual sync. The token is never returned.",
|
|
230
|
+
parameters: [{
|
|
231
|
+
name: "repositoryId",
|
|
232
|
+
in: "query",
|
|
233
|
+
required: true,
|
|
234
|
+
schema: S
|
|
235
|
+
}],
|
|
236
|
+
responses: jsonApiResponses(AuthViewSchema)
|
|
237
|
+
},
|
|
238
|
+
{
|
|
239
|
+
id: "git.auth.save",
|
|
240
|
+
scope,
|
|
241
|
+
basePath: "git",
|
|
242
|
+
path: "/auth",
|
|
243
|
+
method: "PUT",
|
|
244
|
+
authentication: "owner",
|
|
245
|
+
description: "Replace a workspace's remote auth. Passkey step-up gated for remote devices.",
|
|
246
|
+
parameters: [{
|
|
247
|
+
name: "repositoryId",
|
|
248
|
+
in: "query",
|
|
249
|
+
required: true,
|
|
250
|
+
schema: S
|
|
251
|
+
}],
|
|
252
|
+
body: {
|
|
253
|
+
required: true,
|
|
254
|
+
contentType: "application/json",
|
|
255
|
+
schema: AuthSaveSchema
|
|
256
|
+
},
|
|
257
|
+
responses: jsonApiResponses(AuthViewSchema)
|
|
258
|
+
},
|
|
259
|
+
{
|
|
260
|
+
id: "git.branches",
|
|
261
|
+
scope,
|
|
262
|
+
basePath: "git",
|
|
263
|
+
path: "/branches",
|
|
264
|
+
method: "GET",
|
|
265
|
+
authentication: "owner",
|
|
266
|
+
description: "List the workspace branches for the new-session dialog.",
|
|
267
|
+
responses: jsonApiResponses(Type.Object({
|
|
268
|
+
repository: B,
|
|
269
|
+
current: O(S),
|
|
270
|
+
defaultBase: O(S),
|
|
271
|
+
local: Type.Array(Type.Object({
|
|
272
|
+
name: S,
|
|
273
|
+
checkedOutAt: O(S)
|
|
274
|
+
})),
|
|
275
|
+
remote: Type.Array(Type.Object({
|
|
276
|
+
remote: S,
|
|
277
|
+
name: S
|
|
278
|
+
}))
|
|
279
|
+
}))
|
|
280
|
+
},
|
|
281
|
+
{
|
|
282
|
+
id: "git.sessions.create",
|
|
283
|
+
scope,
|
|
284
|
+
basePath: "git",
|
|
285
|
+
path: "/sessions",
|
|
286
|
+
method: "POST",
|
|
287
|
+
authentication: "owner",
|
|
288
|
+
description: "Start a top-level worktree session on an existing or new branch.",
|
|
289
|
+
body: {
|
|
290
|
+
required: true,
|
|
291
|
+
contentType: "application/json",
|
|
292
|
+
schema: Type.Union([Type.Object({
|
|
293
|
+
mode: Type.Literal("existing-branch"),
|
|
294
|
+
branch: S,
|
|
295
|
+
remote: O(S),
|
|
296
|
+
name: O(S)
|
|
297
|
+
}), Type.Object({
|
|
298
|
+
mode: Type.Literal("new-branch"),
|
|
299
|
+
branch: S,
|
|
300
|
+
baseRef: O(S),
|
|
301
|
+
name: O(S)
|
|
302
|
+
})])
|
|
303
|
+
},
|
|
304
|
+
responses: jsonApiResponses(Type.Object({
|
|
305
|
+
sessionId: S,
|
|
306
|
+
worktreeId: S
|
|
307
|
+
}), 201)
|
|
308
|
+
}
|
|
309
|
+
] : [],
|
|
310
|
+
...scope === "global" ? [{
|
|
311
|
+
id: "git.review.summary",
|
|
312
|
+
scope: "session",
|
|
313
|
+
basePath: "git",
|
|
314
|
+
path: "/review",
|
|
315
|
+
method: "GET",
|
|
316
|
+
authentication: "owner",
|
|
317
|
+
description: "List the files the session's checkout changed against its base.",
|
|
318
|
+
responses: jsonApiResponses(ReviewSummarySchema)
|
|
319
|
+
}, {
|
|
320
|
+
id: "git.review.file",
|
|
321
|
+
scope: "session",
|
|
322
|
+
basePath: "git",
|
|
323
|
+
path: "/review/file",
|
|
324
|
+
method: "GET",
|
|
325
|
+
authentication: "owner",
|
|
326
|
+
description: "One changed file's hunks; the path must be in the session's change set.",
|
|
327
|
+
parameters: [{
|
|
328
|
+
name: "path",
|
|
329
|
+
in: "query",
|
|
330
|
+
required: true,
|
|
331
|
+
schema: Type.String({ minLength: 1 })
|
|
332
|
+
}],
|
|
333
|
+
responses: jsonApiResponses(ReviewFileSchema)
|
|
334
|
+
}] : []
|
|
335
|
+
]),
|
|
336
|
+
sockets: ["global", "workspace"].flatMap((scope) => [
|
|
337
|
+
{
|
|
338
|
+
id: "git.changes.channel",
|
|
339
|
+
scope,
|
|
340
|
+
service: "doompi.hub.v1",
|
|
341
|
+
member: "git_changes",
|
|
342
|
+
kind: "channel",
|
|
343
|
+
direction: "server-to-client",
|
|
344
|
+
description: "The session's change against its base, and manual sync state.",
|
|
345
|
+
input: GitChangesPayloadSchema
|
|
346
|
+
},
|
|
347
|
+
{
|
|
348
|
+
id: "git.changes.command",
|
|
349
|
+
scope,
|
|
350
|
+
service: "doompi.hub.v1",
|
|
351
|
+
member: "git_changes",
|
|
352
|
+
kind: "channel",
|
|
353
|
+
direction: "client-to-server",
|
|
354
|
+
description: "Manual pull, push, rebase or abort-rebase for the session.",
|
|
355
|
+
input: GitChangesCommandSchema
|
|
356
|
+
},
|
|
357
|
+
{
|
|
358
|
+
id: "git.channel",
|
|
359
|
+
scope,
|
|
360
|
+
service: "doompi.hub.v1",
|
|
361
|
+
member: "git_worktrees",
|
|
362
|
+
kind: "channel",
|
|
363
|
+
direction: "server-to-client",
|
|
364
|
+
description: "Worktree channel payload.",
|
|
365
|
+
input: WorktreesPayloadSchema
|
|
366
|
+
},
|
|
367
|
+
{
|
|
368
|
+
id: "git.command",
|
|
369
|
+
scope,
|
|
370
|
+
service: "doompi.hub.v1",
|
|
371
|
+
member: "git_worktrees",
|
|
372
|
+
kind: "channel",
|
|
373
|
+
direction: "client-to-server",
|
|
374
|
+
description: "Worktree channel command payload.",
|
|
375
|
+
input: WorktreesCommandSchema
|
|
376
|
+
}
|
|
377
|
+
])
|
|
378
|
+
});
|
|
379
|
+
//#endregion
|
|
380
|
+
export { apiContracts, apiContracts as default };
|
|
381
|
+
|
|
382
|
+
//# 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 N = Type.Integer({ minimum: 0 });\nconst ChangesSchema = Type.Object({\n branch: O(S),\n base: O(S),\n added: N,\n removed: N,\n files: N,\n truncated: O(B),\n upstream: O(Type.Object({ ref: S, ahead: N, behind: N })),\n rebase: O(Type.Object({ conflicts: Type.Array(S) })),\n});\nconst SyncErrorTargetSchema = Type.Union([\n Type.Object({ action: literals(['pull', 'rebase', 'abort-rebase']) }),\n Type.Object({ action: Type.Literal('push'), forceRequired: O(Type.Literal(true)) }),\n]);\nexport const GitChangesPayloadSchema = Type.Object({\n changes: O(ChangesSchema),\n pending: O(S),\n error: O(S),\n errorTarget: O(SyncErrorTargetSchema),\n});\nexport const GitChangesCommandSchema = Type.Union([\n Type.Object({ action: literals(['pull', 'rebase', 'abort-rebase']) }),\n Type.Object({ action: Type.Literal('push'), force: O(Type.Literal(true)) }),\n]);\nconst AuthViewSchema = Type.Object({\n method: literals(['none', 'ssh', 'https']),\n ssh: O(Type.Object({ keyPath: O(S) })),\n https: O(Type.Object({ host: S, username: S, hasToken: B })),\n});\nconst AuthSaveSchema = Type.Union([\n Type.Object({ method: Type.Literal('none') }),\n Type.Object({ method: Type.Literal('ssh'), keyPath: O(S) }),\n Type.Object({ method: Type.Literal('https'), host: S, username: S, token: O(Type.String({ writeOnly: true })) }),\n]);\nconst DiffRowSchema = Type.Object({ marker: literals(['+', '-', ' ']), line: N, content: S });\nconst ReviewSummarySchema = Type.Object({\n repository: B,\n branch: O(S),\n base: O(S),\n mergeBase: O(S),\n truncated: O(B),\n files: Type.Array(\n Type.Object({\n path: S,\n status: literals(['added', 'modified', 'deleted', 'untracked', 'conflicted']),\n added: N,\n removed: N,\n binary: O(B),\n }),\n ),\n});\nconst ReviewFileSchema = Type.Object({\n path: S,\n hunks: Type.Array(Type.Object({ start: N, rows: Type.Array(DiffRowSchema) })),\n binary: O(Type.Literal(true)),\n tooLarge: O(Type.Literal(true)),\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 and a workspace's remote auth exist only on a workspace mount.\n ...(scope === 'workspace'\n ? [\n {\n id: 'git.auth.read',\n scope,\n basePath: 'git',\n path: '/auth',\n method: 'GET' as const,\n authentication: 'owner' as const,\n description: \"Read a workspace's remote auth for manual sync. The token is never returned.\",\n parameters: [{ name: 'repositoryId', in: 'query' as const, required: true, schema: S }],\n responses: jsonApiResponses(AuthViewSchema),\n },\n {\n id: 'git.auth.save',\n scope,\n basePath: 'git',\n path: '/auth',\n method: 'PUT' as const,\n authentication: 'owner' as const,\n description: \"Replace a workspace's remote auth. Passkey step-up gated for remote devices.\",\n parameters: [{ name: 'repositoryId', in: 'query' as const, required: true, schema: S }],\n body: { required: true, contentType: 'application/json', schema: AuthSaveSchema },\n responses: jsonApiResponses(AuthViewSchema),\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 // The review routes exist only on a session mount; listed once, beside the global entries.\n ...(scope === 'global'\n ? [\n {\n id: 'git.review.summary',\n scope: 'session' as const,\n basePath: 'git',\n path: '/review',\n method: 'GET' as const,\n authentication: 'owner' as const,\n description: \"List the files the session's checkout changed against its base.\",\n responses: jsonApiResponses(ReviewSummarySchema),\n },\n {\n id: 'git.review.file',\n scope: 'session' as const,\n basePath: 'git',\n path: '/review/file',\n method: 'GET' as const,\n authentication: 'owner' as const,\n description: \"One changed file's hunks; the path must be in the session's change set.\",\n parameters: [{ name: 'path', in: 'query' as const, required: true, schema: Type.String({ minLength: 1 }) }],\n responses: jsonApiResponses(ReviewFileSchema),\n },\n ]\n : []),\n ]),\n sockets: (['global', 'workspace'] as const).flatMap((scope) => [\n {\n id: 'git.changes.channel',\n scope,\n service: 'doompi.hub.v1',\n member: 'git_changes',\n kind: 'channel',\n direction: 'server-to-client',\n description: \"The session's change against its base, and manual sync state.\",\n input: GitChangesPayloadSchema,\n },\n {\n id: 'git.changes.command',\n scope,\n service: 'doompi.hub.v1',\n member: 'git_changes',\n kind: 'channel',\n direction: 'client-to-server',\n description: 'Manual pull, push, rebase or abort-rebase for the session.',\n input: GitChangesCommandSchema,\n },\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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"}
|
package/dist/extensions/pi.cjs
CHANGED
|
@@ -1 +1,105 @@
|
|
|
1
|
-
Object.defineProperties(exports,{
|
|
1
|
+
Object.defineProperties(exports, {
|
|
2
|
+
__esModule: { value: true },
|
|
3
|
+
[Symbol.toStringTag]: { value: "Module" }
|
|
4
|
+
});
|
|
5
|
+
const require_gitDependencies = require("../gitDependencies-Dqsz2HjK.cjs");
|
|
6
|
+
const require_runWorktree = require("../runWorktree-BE795LxL.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"}
|
package/dist/extensions/pi.d.mts
CHANGED
|
@@ -1,2 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
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":["_$___src_exports0.GitExtensionDependencies"],"sources":["../../generated/pi.ts"],"mappings":";;qBAqBa,+DAAS,mBAAA,QAATA"}
|
package/dist/extensions/pi.mjs
CHANGED
|
@@ -1 +1,100 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import { t as createGitDependencies } from "../gitDependencies-CtVubYvU.mjs";
|
|
2
|
+
import { a as RunWorktreeToolSchema, i as validateParams, n as RUN_WORKTREE_TOOL_NAME, o as COMMAND_DESCRIPTION, r as executeRunWorktreeTool, s as COMMAND_NAME, t as RUN_WORKTREE_DESCRIPTION } from "../runWorktree-SPzJvIBt.mjs";
|
|
3
|
+
import { definePiExtension, definePiTool, piToolContributions } from "@agimon-ai/doompi-core/piExtension";
|
|
4
|
+
import { composeRootHooks, defineCliCommand, defineCliTool, defineResource, defineRoot } from "@agimon-ai/doompi-core/extensionFile";
|
|
5
|
+
//#region src/extensions/workspaces/sessions/(backend)/_lib/root.cli.ts
|
|
6
|
+
const root = defineRoot((context) => ({ value: createGitDependencies(context.options) }));
|
|
7
|
+
//#endregion
|
|
8
|
+
//#region src/extensions/workspaces/sessions/(backend)/root.cli.ts
|
|
9
|
+
var root_cli_default = defineRoot(root);
|
|
10
|
+
//#endregion
|
|
11
|
+
//#region src/extensions/workspaces/sessions/(backend)/command/_lib/git.cli.ts
|
|
12
|
+
function createGitCommand(service) {
|
|
13
|
+
return [COMMAND_NAME, {
|
|
14
|
+
description: COMMAND_DESCRIPTION,
|
|
15
|
+
handler: async (_args, ctx) => {
|
|
16
|
+
const result = await service.execute();
|
|
17
|
+
if (ctx.hasUI) ctx.ui.notify(result.message, result.level);
|
|
18
|
+
}
|
|
19
|
+
}];
|
|
20
|
+
}
|
|
21
|
+
var git_cli_default$1 = (context) => createGitCommand(context.root.service);
|
|
22
|
+
//#endregion
|
|
23
|
+
//#region src/extensions/workspaces/sessions/(backend)/command/git.cli.ts
|
|
24
|
+
var git_cli_default = defineCliCommand(git_cli_default$1);
|
|
25
|
+
//#endregion
|
|
26
|
+
//#region src/extensions/workspaces/sessions/(backend)/resource/_lib/doompi-use-git.cli.ts
|
|
27
|
+
function createDoompiUseGitResource(moduleUrl) {
|
|
28
|
+
return {
|
|
29
|
+
source: "@agimon-ai/doompi-git",
|
|
30
|
+
moduleUrl,
|
|
31
|
+
skills: [{
|
|
32
|
+
name: "doompi-use-git",
|
|
33
|
+
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"
|
|
34
|
+
}]
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
//#endregion
|
|
38
|
+
//#region src/extensions/workspaces/sessions/(backend)/resource/doompi-use-git.cli.ts
|
|
39
|
+
var doompi_use_git_cli_default = defineResource(createDoompiUseGitResource(import.meta.url));
|
|
40
|
+
//#endregion
|
|
41
|
+
//#region src/extensions/workspaces/sessions/(backend)/tool/_lib/runWorktree.cli.ts
|
|
42
|
+
var runWorktree_cli_default$1 = defineCliTool((context) => definePiTool(createRunWorktreeTool(context.root.operations)));
|
|
43
|
+
/** Creates the typed Pi worktree tool declaration. */
|
|
44
|
+
function createRunWorktreeTool(operations) {
|
|
45
|
+
return {
|
|
46
|
+
name: RUN_WORKTREE_TOOL_NAME,
|
|
47
|
+
label: "Worktree",
|
|
48
|
+
description: RUN_WORKTREE_DESCRIPTION,
|
|
49
|
+
parameters: RunWorktreeToolSchema,
|
|
50
|
+
prepareArguments: validateParams,
|
|
51
|
+
execute: async (_id, rawParams, signal, onUpdate, ctx) => {
|
|
52
|
+
const params = validateParams(rawParams);
|
|
53
|
+
return await executeRunWorktreeTool(params, operations, {
|
|
54
|
+
cwd: ctx.cwd,
|
|
55
|
+
sessionId: ctx.sessionManager.getSessionId()
|
|
56
|
+
}, {
|
|
57
|
+
...signal === void 0 ? {} : { signal },
|
|
58
|
+
onProgress: (label) => onUpdate?.({
|
|
59
|
+
content: [{
|
|
60
|
+
type: "text",
|
|
61
|
+
text: label
|
|
62
|
+
}],
|
|
63
|
+
details: { action: params.action }
|
|
64
|
+
})
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
//#endregion
|
|
70
|
+
//#region src/extensions/workspaces/sessions/(backend)/tool/runWorktree.cli.ts
|
|
71
|
+
var runWorktree_cli_default = defineCliTool(runWorktree_cli_default$1);
|
|
72
|
+
//#endregion
|
|
73
|
+
//#region generated/pi.ts
|
|
74
|
+
const at = (value, context) => typeof value === "function" ? value(context) : value;
|
|
75
|
+
const via = (identity, value) => value === void 0 ? void 0 : {
|
|
76
|
+
...identity,
|
|
77
|
+
...value
|
|
78
|
+
};
|
|
79
|
+
const extension = definePiExtension("@agimon-ai/doompi-git", async (context) => {
|
|
80
|
+
const scopeSession = await root_cli_default(context);
|
|
81
|
+
const contextSession = {
|
|
82
|
+
...context,
|
|
83
|
+
root: scopeSession.value
|
|
84
|
+
};
|
|
85
|
+
return {
|
|
86
|
+
...composeRootHooks(scopeSession),
|
|
87
|
+
get commands() {
|
|
88
|
+
return [at(git_cli_default, contextSession)];
|
|
89
|
+
},
|
|
90
|
+
get resources() {
|
|
91
|
+
return [at(doompi_use_git_cli_default, contextSession)];
|
|
92
|
+
},
|
|
93
|
+
...piToolContributions("@agimon-ai/doompi-git", [via({ name: "run_worktree" }, at(runWorktree_cli_default, contextSession))]),
|
|
94
|
+
services: [...scopeSession.services ?? []]
|
|
95
|
+
};
|
|
96
|
+
});
|
|
97
|
+
//#endregion
|
|
98
|
+
export { extension as default, extension };
|
|
99
|
+
|
|
100
|
+
//# sourceMappingURL=pi.mjs.map
|