@agimon-ai/doompi-git 0.0.1-alpha.3 → 0.0.1-alpha.30
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 +2 -0
- package/dist/apiContracts.cjs +149 -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 +144 -0
- package/dist/apiContracts.mjs.map +1 -0
- package/dist/extensions/pi.cjs +109 -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 +104 -1
- package/dist/extensions/pi.mjs.map +1 -0
- package/dist/extensions/server.cjs +495 -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 +490 -0
- package/dist/extensions/server.mjs.map +1 -0
- package/dist/extensions/web.mjs +580 -0
- package/dist/extensions/web.mjs.map +1 -0
- package/dist/gitDependencies-D-EUEIkE.mjs +22 -0
- package/dist/gitDependencies-D-EUEIkE.mjs.map +1 -0
- package/dist/gitDependencies-DKJr5kLQ.cjs +33 -0
- package/dist/gitDependencies-DKJr5kLQ.cjs.map +1 -0
- package/dist/index-BQq2vblZ.d.mts +143 -0
- package/dist/index-BQq2vblZ.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-B6ikYRrG.cjs +318 -0
- package/dist/runWorktree-B6ikYRrG.cjs.map +1 -0
- package/dist/runWorktree-BL99h9oH.mjs +289 -0
- package/dist/runWorktree-BL99h9oH.mjs.map +1 -0
- package/dist/worktreeOperations-DAbs0ZTX.mjs +1054 -0
- package/dist/worktreeOperations-DAbs0ZTX.mjs.map +1 -0
- package/dist/worktreeOperations-DjO_Y5Yv.cjs +1138 -0
- package/dist/worktreeOperations-DjO_Y5Yv.cjs.map +1 -0
- package/package.json +53 -39
- package/src/prompts/doompi-use-git/SKILL.md +5 -2
- 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/dependencyInstall.cjs +0 -2
- package/dist/adapters/worktree/dependencyInstall.cjs.map +0 -1
- package/dist/adapters/worktree/dependencyInstall.mjs +0 -2
- package/dist/adapters/worktree/dependencyInstall.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 -32
- package/dist/adapters/worktree/worktreeOperations.d.cts.map +0 -1
- package/dist/adapters/worktree/worktreeOperations.d.mts +0 -32
- 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 -27
- package/dist/services/worktreeNaming.d.cts.map +0 -1
- package/dist/services/worktreeNaming.d.mts +0 -27
- 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 -69
- package/src/web/components/RunWorktreeToolMessage.tsx +0 -37
- package/src/web/components/WorktreesActivitySection.tsx +0 -64
- package/src/web/components/WorktreesPanel.tsx +0 -125
- 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
package/README.md
CHANGED
|
@@ -69,3 +69,5 @@ Maintained by [Agimon](https://agimon.ai/about).
|
|
|
69
69
|
## License
|
|
70
70
|
|
|
71
71
|
MIT
|
|
72
|
+
|
|
73
|
+
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,149 @@
|
|
|
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: 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
|
+
]),
|
|
125
|
+
sockets: ["global", "workspace"].flatMap((scope) => [{
|
|
126
|
+
id: "git.channel",
|
|
127
|
+
scope,
|
|
128
|
+
service: "doompi.hub.v1",
|
|
129
|
+
member: "git_worktrees",
|
|
130
|
+
kind: "channel",
|
|
131
|
+
direction: "server-to-client",
|
|
132
|
+
description: "Worktree channel payload.",
|
|
133
|
+
input: WorktreesPayloadSchema
|
|
134
|
+
}, {
|
|
135
|
+
id: "git.command",
|
|
136
|
+
scope,
|
|
137
|
+
service: "doompi.hub.v1",
|
|
138
|
+
member: "git_worktrees",
|
|
139
|
+
kind: "channel",
|
|
140
|
+
direction: "client-to-server",
|
|
141
|
+
description: "Worktree channel command payload.",
|
|
142
|
+
input: WorktreesCommandSchema
|
|
143
|
+
}])
|
|
144
|
+
});
|
|
145
|
+
//#endregion
|
|
146
|
+
exports.apiContracts = apiContracts;
|
|
147
|
+
exports.default = apiContracts;
|
|
148
|
+
|
|
149
|
+
//# 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: 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 ]),\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,144 @@
|
|
|
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: 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
|
+
]),
|
|
121
|
+
sockets: ["global", "workspace"].flatMap((scope) => [{
|
|
122
|
+
id: "git.channel",
|
|
123
|
+
scope,
|
|
124
|
+
service: "doompi.hub.v1",
|
|
125
|
+
member: "git_worktrees",
|
|
126
|
+
kind: "channel",
|
|
127
|
+
direction: "server-to-client",
|
|
128
|
+
description: "Worktree channel payload.",
|
|
129
|
+
input: WorktreesPayloadSchema
|
|
130
|
+
}, {
|
|
131
|
+
id: "git.command",
|
|
132
|
+
scope,
|
|
133
|
+
service: "doompi.hub.v1",
|
|
134
|
+
member: "git_worktrees",
|
|
135
|
+
kind: "channel",
|
|
136
|
+
direction: "client-to-server",
|
|
137
|
+
description: "Worktree channel command payload.",
|
|
138
|
+
input: WorktreesCommandSchema
|
|
139
|
+
}])
|
|
140
|
+
});
|
|
141
|
+
//#endregion
|
|
142
|
+
export { apiContracts, apiContracts as default };
|
|
143
|
+
|
|
144
|
+
//# 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: 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 ]),\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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"}
|
package/dist/extensions/pi.cjs
CHANGED
|
@@ -1 +1,109 @@
|
|
|
1
|
-
Object.defineProperties(exports,{
|
|
1
|
+
Object.defineProperties(exports, {
|
|
2
|
+
__esModule: { value: true },
|
|
3
|
+
[Symbol.toStringTag]: { value: "Module" }
|
|
4
|
+
});
|
|
5
|
+
const require_gitDependencies = require("../gitDependencies-DKJr5kLQ.cjs");
|
|
6
|
+
const require_runWorktree = require("../runWorktree-B6ikYRrG.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/constants/git.ts
|
|
16
|
+
const COMMAND_NAME = "doom-git";
|
|
17
|
+
const COMMAND_DESCRIPTION = "Show git worktrees owned by this session";
|
|
18
|
+
//#endregion
|
|
19
|
+
//#region src/extensions/workspaces/sessions/(backend)/command/_lib/git.cli.ts
|
|
20
|
+
function createGitCommand(service) {
|
|
21
|
+
return [COMMAND_NAME, {
|
|
22
|
+
description: COMMAND_DESCRIPTION,
|
|
23
|
+
handler: async (_args, ctx) => {
|
|
24
|
+
const result = await service.execute();
|
|
25
|
+
if (ctx.hasUI) ctx.ui.notify(result.message, result.level);
|
|
26
|
+
}
|
|
27
|
+
}];
|
|
28
|
+
}
|
|
29
|
+
var git_cli_default$1 = (context) => createGitCommand(context.root.service);
|
|
30
|
+
//#endregion
|
|
31
|
+
//#region src/extensions/workspaces/sessions/(backend)/command/git.cli.ts
|
|
32
|
+
var git_cli_default = (0, _agimon_ai_doompi_core_extensionFile.defineCliCommand)(git_cli_default$1);
|
|
33
|
+
//#endregion
|
|
34
|
+
//#region src/extensions/workspaces/sessions/(backend)/resource/_lib/doompi-use-git.cli.ts
|
|
35
|
+
function createDoompiUseGitResource(moduleUrl) {
|
|
36
|
+
return {
|
|
37
|
+
source: "@agimon-ai/doompi-git",
|
|
38
|
+
moduleUrl,
|
|
39
|
+
skills: [{
|
|
40
|
+
name: "doompi-use-git",
|
|
41
|
+
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"
|
|
42
|
+
}]
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
//#endregion
|
|
46
|
+
//#region src/extensions/workspaces/sessions/(backend)/resource/doompi-use-git.cli.ts
|
|
47
|
+
var doompi_use_git_cli_default = (0, _agimon_ai_doompi_core_extensionFile.defineResource)(createDoompiUseGitResource(require("url").pathToFileURL(__filename).href));
|
|
48
|
+
//#endregion
|
|
49
|
+
//#region src/extensions/workspaces/sessions/(backend)/tool/_lib/runWorktree.cli.ts
|
|
50
|
+
var runWorktree_cli_default$1 = (0, _agimon_ai_doompi_core_extensionFile.defineCliTool)((context) => (0, _agimon_ai_doompi_core_piExtension.definePiTool)(createRunWorktreeTool(context.root.operations)));
|
|
51
|
+
/** Creates the typed Pi worktree tool declaration. */
|
|
52
|
+
function createRunWorktreeTool(operations) {
|
|
53
|
+
return {
|
|
54
|
+
name: require_runWorktree.RUN_WORKTREE_TOOL_NAME,
|
|
55
|
+
label: "Worktree",
|
|
56
|
+
description: require_runWorktree.RUN_WORKTREE_DESCRIPTION,
|
|
57
|
+
parameters: require_runWorktree.RunWorktreeToolSchema,
|
|
58
|
+
prepareArguments: require_runWorktree.validateParams,
|
|
59
|
+
execute: async (_id, rawParams, signal, onUpdate, ctx) => {
|
|
60
|
+
const params = require_runWorktree.validateParams(rawParams);
|
|
61
|
+
return await require_runWorktree.executeRunWorktreeTool(params, operations, {
|
|
62
|
+
cwd: ctx.cwd,
|
|
63
|
+
sessionId: ctx.sessionManager.getSessionId()
|
|
64
|
+
}, {
|
|
65
|
+
...signal === void 0 ? {} : { signal },
|
|
66
|
+
onProgress: (label) => onUpdate?.({
|
|
67
|
+
content: [{
|
|
68
|
+
type: "text",
|
|
69
|
+
text: label
|
|
70
|
+
}],
|
|
71
|
+
details: { action: params.action }
|
|
72
|
+
})
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
//#endregion
|
|
78
|
+
//#region src/extensions/workspaces/sessions/(backend)/tool/runWorktree.cli.ts
|
|
79
|
+
var runWorktree_cli_default = (0, _agimon_ai_doompi_core_extensionFile.defineCliTool)(runWorktree_cli_default$1);
|
|
80
|
+
//#endregion
|
|
81
|
+
//#region generated/pi.ts
|
|
82
|
+
const at = (value, context) => typeof value === "function" ? value(context) : value;
|
|
83
|
+
const via = (identity, value) => value === void 0 ? void 0 : {
|
|
84
|
+
...identity,
|
|
85
|
+
...value
|
|
86
|
+
};
|
|
87
|
+
const extension = (0, _agimon_ai_doompi_core_piExtension.definePiExtension)("@agimon-ai/doompi-git", async (context) => {
|
|
88
|
+
const scopeSession = await root_cli_default(context);
|
|
89
|
+
const contextSession = {
|
|
90
|
+
...context,
|
|
91
|
+
root: scopeSession.value
|
|
92
|
+
};
|
|
93
|
+
return {
|
|
94
|
+
...(0, _agimon_ai_doompi_core_extensionFile.composeRootHooks)(scopeSession),
|
|
95
|
+
get commands() {
|
|
96
|
+
return [at(git_cli_default, contextSession)];
|
|
97
|
+
},
|
|
98
|
+
get resources() {
|
|
99
|
+
return [at(doompi_use_git_cli_default, contextSession)];
|
|
100
|
+
},
|
|
101
|
+
...(0, _agimon_ai_doompi_core_piExtension.piToolContributions)("@agimon-ai/doompi-git", [via({ name: "run_worktree" }, at(runWorktree_cli_default, contextSession))]),
|
|
102
|
+
services: [...scopeSession.services ?? []]
|
|
103
|
+
};
|
|
104
|
+
});
|
|
105
|
+
//#endregion
|
|
106
|
+
exports.default = extension;
|
|
107
|
+
exports.extension = extension;
|
|
108
|
+
|
|
109
|
+
//# sourceMappingURL=pi.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pi.cjs","names":["defineRoot","createGitDependencies","defineRoot","contribution","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/constants/git.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","export const COMMAND_NAME = 'doom-git';\nexport const COMMAND_DESCRIPTION = 'Show git worktrees owned by this session';\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;;;ACJtC,MAAa,eAAe;AAC5B,MAAa,sBAAsB;;;ACQnC,SAAgB,iBACd,SACmE;CACnE,OAAO,CACL,cACA;EACE,aAAa;EACb,SAAS,OAAO,OAAO,QAAQ;GAC7B,MAAM,SAAS,MAAM,QAAQ,QAAQ;GACrC,IAAI,IAAI,OAAO,IAAI,GAAG,OAAO,OAAO,SAAS,OAAO,KAAK;EAC3D;CACF,CACF;AACF;AAEA,IAAA,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-BQq2vblZ.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"}
|
package/dist/extensions/pi.mjs
CHANGED
|
@@ -1 +1,104 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import { t as createGitDependencies } from "../gitDependencies-D-EUEIkE.mjs";
|
|
2
|
+
import { a as RunWorktreeToolSchema, i as validateParams, n as RUN_WORKTREE_TOOL_NAME, r as executeRunWorktreeTool, t as RUN_WORKTREE_DESCRIPTION } from "../runWorktree-BL99h9oH.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/constants/git.ts
|
|
12
|
+
const COMMAND_NAME = "doom-git";
|
|
13
|
+
const COMMAND_DESCRIPTION = "Show git worktrees owned by this session";
|
|
14
|
+
//#endregion
|
|
15
|
+
//#region src/extensions/workspaces/sessions/(backend)/command/_lib/git.cli.ts
|
|
16
|
+
function createGitCommand(service) {
|
|
17
|
+
return [COMMAND_NAME, {
|
|
18
|
+
description: 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 = 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 = defineResource(createDoompiUseGitResource(import.meta.url));
|
|
44
|
+
//#endregion
|
|
45
|
+
//#region src/extensions/workspaces/sessions/(backend)/tool/_lib/runWorktree.cli.ts
|
|
46
|
+
var runWorktree_cli_default$1 = defineCliTool((context) => definePiTool(createRunWorktreeTool(context.root.operations)));
|
|
47
|
+
/** Creates the typed Pi worktree tool declaration. */
|
|
48
|
+
function createRunWorktreeTool(operations) {
|
|
49
|
+
return {
|
|
50
|
+
name: RUN_WORKTREE_TOOL_NAME,
|
|
51
|
+
label: "Worktree",
|
|
52
|
+
description: RUN_WORKTREE_DESCRIPTION,
|
|
53
|
+
parameters: RunWorktreeToolSchema,
|
|
54
|
+
prepareArguments: validateParams,
|
|
55
|
+
execute: async (_id, rawParams, signal, onUpdate, ctx) => {
|
|
56
|
+
const params = validateParams(rawParams);
|
|
57
|
+
return await 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 = 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 = 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
|
+
...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
|
+
...piToolContributions("@agimon-ai/doompi-git", [via({ name: "run_worktree" }, at(runWorktree_cli_default, contextSession))]),
|
|
98
|
+
services: [...scopeSession.services ?? []]
|
|
99
|
+
};
|
|
100
|
+
});
|
|
101
|
+
//#endregion
|
|
102
|
+
export { extension as default, extension };
|
|
103
|
+
|
|
104
|
+
//# sourceMappingURL=pi.mjs.map
|