@electric-agent/studio 1.13.1 → 1.14.0
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/dist/active-sessions.d.ts +4 -13
- package/dist/active-sessions.d.ts.map +1 -1
- package/dist/active-sessions.js +5 -39
- package/dist/active-sessions.js.map +1 -1
- package/dist/bridge/claude-code-base.d.ts +0 -2
- package/dist/bridge/claude-code-base.d.ts.map +1 -1
- package/dist/bridge/claude-code-base.js +0 -2
- package/dist/bridge/claude-code-base.js.map +1 -1
- package/dist/bridge/claude-md-generator.d.ts +2 -12
- package/dist/bridge/claude-md-generator.d.ts.map +1 -1
- package/dist/bridge/claude-md-generator.js +94 -72
- package/dist/bridge/claude-md-generator.js.map +1 -1
- package/dist/bridge/role-skills.d.ts.map +1 -1
- package/dist/bridge/role-skills.js +0 -8
- package/dist/bridge/role-skills.js.map +1 -1
- package/dist/client/assets/index-BfvQSMwH.css +1 -0
- package/dist/client/assets/index-BtX82X61.js +234 -0
- package/dist/client/index.html +2 -2
- package/dist/room-router.d.ts.map +1 -1
- package/dist/room-router.js +5 -20
- package/dist/room-router.js.map +1 -1
- package/dist/sandbox/docker.d.ts +0 -10
- package/dist/sandbox/docker.d.ts.map +1 -1
- package/dist/sandbox/docker.js +1 -115
- package/dist/sandbox/docker.js.map +1 -1
- package/dist/sandbox/sprites.d.ts +0 -1
- package/dist/sandbox/sprites.d.ts.map +1 -1
- package/dist/sandbox/sprites.js +0 -51
- package/dist/sandbox/sprites.js.map +1 -1
- package/dist/sandbox/types.d.ts +0 -5
- package/dist/sandbox/types.d.ts.map +1 -1
- package/dist/server.d.ts +0 -12
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +187 -1097
- package/dist/server.js.map +1 -1
- package/dist/session-auth.d.ts +0 -3
- package/dist/session-auth.d.ts.map +1 -1
- package/dist/session-auth.js +0 -10
- package/dist/session-auth.js.map +1 -1
- package/dist/sessions.d.ts +0 -2
- package/dist/sessions.d.ts.map +1 -1
- package/dist/sessions.js.map +1 -1
- package/package.json +2 -2
- package/dist/api-schemas.d.ts +0 -244
- package/dist/api-schemas.d.ts.map +0 -1
- package/dist/api-schemas.js +0 -103
- package/dist/api-schemas.js.map +0 -1
- package/dist/bridge/codex-docker.d.ts +0 -70
- package/dist/bridge/codex-docker.d.ts.map +0 -1
- package/dist/bridge/codex-docker.js +0 -234
- package/dist/bridge/codex-docker.js.map +0 -1
- package/dist/bridge/codex-json-parser.d.ts +0 -31
- package/dist/bridge/codex-json-parser.d.ts.map +0 -1
- package/dist/bridge/codex-json-parser.js +0 -267
- package/dist/bridge/codex-json-parser.js.map +0 -1
- package/dist/bridge/codex-md-generator.d.ts +0 -14
- package/dist/bridge/codex-md-generator.d.ts.map +0 -1
- package/dist/bridge/codex-md-generator.js +0 -55
- package/dist/bridge/codex-md-generator.js.map +0 -1
- package/dist/bridge/codex-sprites.d.ts +0 -64
- package/dist/bridge/codex-sprites.d.ts.map +0 -1
- package/dist/bridge/codex-sprites.js +0 -227
- package/dist/bridge/codex-sprites.js.map +0 -1
- package/dist/bridge/daytona.d.ts +0 -35
- package/dist/bridge/daytona.d.ts.map +0 -1
- package/dist/bridge/daytona.js +0 -141
- package/dist/bridge/daytona.js.map +0 -1
- package/dist/bridge/docker-stdio.d.ts +0 -30
- package/dist/bridge/docker-stdio.d.ts.map +0 -1
- package/dist/bridge/docker-stdio.js +0 -135
- package/dist/bridge/docker-stdio.js.map +0 -1
- package/dist/bridge/sprites.d.ts +0 -32
- package/dist/bridge/sprites.d.ts.map +0 -1
- package/dist/bridge/sprites.js +0 -133
- package/dist/bridge/sprites.js.map +0 -1
- package/dist/client/assets/index-BXdgNRgB.js +0 -235
- package/dist/client/assets/index-IvCtVUfs.css +0 -1
- package/dist/github-app.d.ts +0 -14
- package/dist/github-app.d.ts.map +0 -1
- package/dist/github-app.js +0 -62
- package/dist/github-app.js.map +0 -1
- package/dist/github-app.test.d.ts +0 -2
- package/dist/github-app.test.d.ts.map +0 -1
- package/dist/github-app.test.js +0 -62
- package/dist/github-app.test.js.map +0 -1
- package/dist/validate.d.ts +0 -10
- package/dist/validate.d.ts.map +0 -1
- package/dist/validate.js +0 -24
- package/dist/validate.js.map +0 -1
package/dist/api-schemas.d.ts
DELETED
|
@@ -1,244 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Zod schemas for API request body validation.
|
|
3
|
-
*
|
|
4
|
-
* Each schema corresponds to a POST endpoint in server.ts.
|
|
5
|
-
* Using `.passthrough()` where backwards-compat matters (unknown fields ignored).
|
|
6
|
-
*/
|
|
7
|
-
import { z } from "zod";
|
|
8
|
-
export declare const createSessionSchema: z.ZodObject<{
|
|
9
|
-
description: z.ZodString;
|
|
10
|
-
name: z.ZodOptional<z.ZodString>;
|
|
11
|
-
baseDir: z.ZodOptional<z.ZodString>;
|
|
12
|
-
freeform: z.ZodOptional<z.ZodBoolean>;
|
|
13
|
-
apiKey: z.ZodOptional<z.ZodString>;
|
|
14
|
-
oauthToken: z.ZodOptional<z.ZodString>;
|
|
15
|
-
ghToken: z.ZodOptional<z.ZodString>;
|
|
16
|
-
}, "strip", z.ZodTypeAny, {
|
|
17
|
-
description: string;
|
|
18
|
-
name?: string | undefined;
|
|
19
|
-
baseDir?: string | undefined;
|
|
20
|
-
freeform?: boolean | undefined;
|
|
21
|
-
apiKey?: string | undefined;
|
|
22
|
-
oauthToken?: string | undefined;
|
|
23
|
-
ghToken?: string | undefined;
|
|
24
|
-
}, {
|
|
25
|
-
description: string;
|
|
26
|
-
name?: string | undefined;
|
|
27
|
-
baseDir?: string | undefined;
|
|
28
|
-
freeform?: boolean | undefined;
|
|
29
|
-
apiKey?: string | undefined;
|
|
30
|
-
oauthToken?: string | undefined;
|
|
31
|
-
ghToken?: string | undefined;
|
|
32
|
-
}>;
|
|
33
|
-
export declare const iterateSessionSchema: z.ZodObject<{
|
|
34
|
-
request: z.ZodString;
|
|
35
|
-
}, "strip", z.ZodTypeAny, {
|
|
36
|
-
request: string;
|
|
37
|
-
}, {
|
|
38
|
-
request: string;
|
|
39
|
-
}>;
|
|
40
|
-
export declare const createSandboxSchema: z.ZodObject<{
|
|
41
|
-
sessionId: z.ZodOptional<z.ZodString>;
|
|
42
|
-
projectName: z.ZodOptional<z.ZodString>;
|
|
43
|
-
infra: z.ZodOptional<z.ZodDiscriminatedUnion<"mode", [z.ZodObject<{
|
|
44
|
-
mode: z.ZodLiteral<"none">;
|
|
45
|
-
}, "strip", z.ZodTypeAny, {
|
|
46
|
-
mode: "none";
|
|
47
|
-
}, {
|
|
48
|
-
mode: "none";
|
|
49
|
-
}>, z.ZodObject<{
|
|
50
|
-
mode: z.ZodLiteral<"local">;
|
|
51
|
-
}, "strip", z.ZodTypeAny, {
|
|
52
|
-
mode: "local";
|
|
53
|
-
}, {
|
|
54
|
-
mode: "local";
|
|
55
|
-
}>, z.ZodObject<{
|
|
56
|
-
mode: z.ZodLiteral<"cloud">;
|
|
57
|
-
databaseUrl: z.ZodString;
|
|
58
|
-
electricUrl: z.ZodString;
|
|
59
|
-
sourceId: z.ZodString;
|
|
60
|
-
secret: z.ZodString;
|
|
61
|
-
}, "strip", z.ZodTypeAny, {
|
|
62
|
-
secret: string;
|
|
63
|
-
mode: "cloud";
|
|
64
|
-
databaseUrl: string;
|
|
65
|
-
electricUrl: string;
|
|
66
|
-
sourceId: string;
|
|
67
|
-
}, {
|
|
68
|
-
secret: string;
|
|
69
|
-
mode: "cloud";
|
|
70
|
-
databaseUrl: string;
|
|
71
|
-
electricUrl: string;
|
|
72
|
-
sourceId: string;
|
|
73
|
-
}>, z.ZodObject<{
|
|
74
|
-
mode: z.ZodLiteral<"claim">;
|
|
75
|
-
databaseUrl: z.ZodString;
|
|
76
|
-
electricUrl: z.ZodString;
|
|
77
|
-
sourceId: z.ZodString;
|
|
78
|
-
secret: z.ZodString;
|
|
79
|
-
claimId: z.ZodString;
|
|
80
|
-
}, "strip", z.ZodTypeAny, {
|
|
81
|
-
claimId: string;
|
|
82
|
-
secret: string;
|
|
83
|
-
mode: "claim";
|
|
84
|
-
databaseUrl: string;
|
|
85
|
-
electricUrl: string;
|
|
86
|
-
sourceId: string;
|
|
87
|
-
}, {
|
|
88
|
-
claimId: string;
|
|
89
|
-
secret: string;
|
|
90
|
-
mode: "claim";
|
|
91
|
-
databaseUrl: string;
|
|
92
|
-
electricUrl: string;
|
|
93
|
-
sourceId: string;
|
|
94
|
-
}>]>>;
|
|
95
|
-
}, "strip", z.ZodTypeAny, {
|
|
96
|
-
projectName?: string | undefined;
|
|
97
|
-
sessionId?: string | undefined;
|
|
98
|
-
infra?: {
|
|
99
|
-
mode: "none";
|
|
100
|
-
} | {
|
|
101
|
-
mode: "local";
|
|
102
|
-
} | {
|
|
103
|
-
secret: string;
|
|
104
|
-
mode: "cloud";
|
|
105
|
-
databaseUrl: string;
|
|
106
|
-
electricUrl: string;
|
|
107
|
-
sourceId: string;
|
|
108
|
-
} | {
|
|
109
|
-
claimId: string;
|
|
110
|
-
secret: string;
|
|
111
|
-
mode: "claim";
|
|
112
|
-
databaseUrl: string;
|
|
113
|
-
electricUrl: string;
|
|
114
|
-
sourceId: string;
|
|
115
|
-
} | undefined;
|
|
116
|
-
}, {
|
|
117
|
-
projectName?: string | undefined;
|
|
118
|
-
sessionId?: string | undefined;
|
|
119
|
-
infra?: {
|
|
120
|
-
mode: "none";
|
|
121
|
-
} | {
|
|
122
|
-
mode: "local";
|
|
123
|
-
} | {
|
|
124
|
-
secret: string;
|
|
125
|
-
mode: "cloud";
|
|
126
|
-
databaseUrl: string;
|
|
127
|
-
electricUrl: string;
|
|
128
|
-
sourceId: string;
|
|
129
|
-
} | {
|
|
130
|
-
claimId: string;
|
|
131
|
-
secret: string;
|
|
132
|
-
mode: "claim";
|
|
133
|
-
databaseUrl: string;
|
|
134
|
-
electricUrl: string;
|
|
135
|
-
sourceId: string;
|
|
136
|
-
} | undefined;
|
|
137
|
-
}>;
|
|
138
|
-
export declare const createRoomSchema: z.ZodObject<{
|
|
139
|
-
name: z.ZodString;
|
|
140
|
-
maxRounds: z.ZodOptional<z.ZodNumber>;
|
|
141
|
-
}, "strip", z.ZodTypeAny, {
|
|
142
|
-
name: string;
|
|
143
|
-
maxRounds?: number | undefined;
|
|
144
|
-
}, {
|
|
145
|
-
name: string;
|
|
146
|
-
maxRounds?: number | undefined;
|
|
147
|
-
}>;
|
|
148
|
-
export declare const createAppRoomSchema: z.ZodObject<{
|
|
149
|
-
description: z.ZodString;
|
|
150
|
-
name: z.ZodOptional<z.ZodString>;
|
|
151
|
-
apiKey: z.ZodOptional<z.ZodString>;
|
|
152
|
-
oauthToken: z.ZodOptional<z.ZodString>;
|
|
153
|
-
ghToken: z.ZodOptional<z.ZodString>;
|
|
154
|
-
}, "strip", z.ZodTypeAny, {
|
|
155
|
-
description: string;
|
|
156
|
-
name?: string | undefined;
|
|
157
|
-
apiKey?: string | undefined;
|
|
158
|
-
oauthToken?: string | undefined;
|
|
159
|
-
ghToken?: string | undefined;
|
|
160
|
-
}, {
|
|
161
|
-
description: string;
|
|
162
|
-
name?: string | undefined;
|
|
163
|
-
apiKey?: string | undefined;
|
|
164
|
-
oauthToken?: string | undefined;
|
|
165
|
-
ghToken?: string | undefined;
|
|
166
|
-
}>;
|
|
167
|
-
export declare const addAgentSchema: z.ZodObject<{
|
|
168
|
-
name: z.ZodOptional<z.ZodString>;
|
|
169
|
-
role: z.ZodOptional<z.ZodString>;
|
|
170
|
-
gated: z.ZodOptional<z.ZodBoolean>;
|
|
171
|
-
initialPrompt: z.ZodOptional<z.ZodString>;
|
|
172
|
-
apiKey: z.ZodOptional<z.ZodString>;
|
|
173
|
-
oauthToken: z.ZodOptional<z.ZodString>;
|
|
174
|
-
ghToken: z.ZodOptional<z.ZodString>;
|
|
175
|
-
}, "strip", z.ZodTypeAny, {
|
|
176
|
-
name?: string | undefined;
|
|
177
|
-
apiKey?: string | undefined;
|
|
178
|
-
oauthToken?: string | undefined;
|
|
179
|
-
ghToken?: string | undefined;
|
|
180
|
-
role?: string | undefined;
|
|
181
|
-
gated?: boolean | undefined;
|
|
182
|
-
initialPrompt?: string | undefined;
|
|
183
|
-
}, {
|
|
184
|
-
name?: string | undefined;
|
|
185
|
-
apiKey?: string | undefined;
|
|
186
|
-
oauthToken?: string | undefined;
|
|
187
|
-
ghToken?: string | undefined;
|
|
188
|
-
role?: string | undefined;
|
|
189
|
-
gated?: boolean | undefined;
|
|
190
|
-
initialPrompt?: string | undefined;
|
|
191
|
-
}>;
|
|
192
|
-
export declare const addSessionToRoomSchema: z.ZodObject<{
|
|
193
|
-
sessionId: z.ZodString;
|
|
194
|
-
name: z.ZodString;
|
|
195
|
-
initialPrompt: z.ZodOptional<z.ZodString>;
|
|
196
|
-
}, "strip", z.ZodTypeAny, {
|
|
197
|
-
sessionId: string;
|
|
198
|
-
name: string;
|
|
199
|
-
initialPrompt?: string | undefined;
|
|
200
|
-
}, {
|
|
201
|
-
sessionId: string;
|
|
202
|
-
name: string;
|
|
203
|
-
initialPrompt?: string | undefined;
|
|
204
|
-
}>;
|
|
205
|
-
export declare const iterateRoomSessionSchema: z.ZodObject<{
|
|
206
|
-
request: z.ZodString;
|
|
207
|
-
}, "strip", z.ZodTypeAny, {
|
|
208
|
-
request: string;
|
|
209
|
-
}, {
|
|
210
|
-
request: string;
|
|
211
|
-
}>;
|
|
212
|
-
export declare const sendRoomMessageSchema: z.ZodObject<{
|
|
213
|
-
from: z.ZodString;
|
|
214
|
-
body: z.ZodString;
|
|
215
|
-
to: z.ZodOptional<z.ZodString>;
|
|
216
|
-
}, "strip", z.ZodTypeAny, {
|
|
217
|
-
from: string;
|
|
218
|
-
body: string;
|
|
219
|
-
to?: string | undefined;
|
|
220
|
-
}, {
|
|
221
|
-
from: string;
|
|
222
|
-
body: string;
|
|
223
|
-
to?: string | undefined;
|
|
224
|
-
}>;
|
|
225
|
-
export declare const resumeSessionSchema: z.ZodObject<{
|
|
226
|
-
repoUrl: z.ZodString;
|
|
227
|
-
branch: z.ZodOptional<z.ZodString>;
|
|
228
|
-
apiKey: z.ZodOptional<z.ZodString>;
|
|
229
|
-
oauthToken: z.ZodOptional<z.ZodString>;
|
|
230
|
-
ghToken: z.ZodOptional<z.ZodString>;
|
|
231
|
-
}, "strip", z.ZodTypeAny, {
|
|
232
|
-
repoUrl: string;
|
|
233
|
-
apiKey?: string | undefined;
|
|
234
|
-
oauthToken?: string | undefined;
|
|
235
|
-
ghToken?: string | undefined;
|
|
236
|
-
branch?: string | undefined;
|
|
237
|
-
}, {
|
|
238
|
-
repoUrl: string;
|
|
239
|
-
apiKey?: string | undefined;
|
|
240
|
-
oauthToken?: string | undefined;
|
|
241
|
-
ghToken?: string | undefined;
|
|
242
|
-
branch?: string | undefined;
|
|
243
|
-
}>;
|
|
244
|
-
//# sourceMappingURL=api-schemas.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"api-schemas.d.ts","sourceRoot":"","sources":["../src/api-schemas.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAUvB,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;EAQ9B,CAAA;AAGF,eAAO,MAAM,oBAAoB;;;;;;EAE/B,CAAA;AA2BF,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAI9B,CAAA;AAGF,eAAO,MAAM,gBAAgB;;;;;;;;;EAG3B,CAAA;AAGF,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;EAM9B,CAAA;AAGF,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;EAQzB,CAAA;AAGF,eAAO,MAAM,sBAAsB;;;;;;;;;;;;EAIjC,CAAA;AAGF,eAAO,MAAM,wBAAwB;;;;;;EAEnC,CAAA;AAGF,eAAO,MAAM,qBAAqB;;;;;;;;;;;;EAIhC,CAAA;AAGF,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;EAM9B,CAAA"}
|
package/dist/api-schemas.js
DELETED
|
@@ -1,103 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Zod schemas for API request body validation.
|
|
3
|
-
*
|
|
4
|
-
* Each schema corresponds to a POST endpoint in server.ts.
|
|
5
|
-
* Using `.passthrough()` where backwards-compat matters (unknown fields ignored).
|
|
6
|
-
*/
|
|
7
|
-
import { z } from "zod";
|
|
8
|
-
/** Max length for free-text fields to prevent abuse */
|
|
9
|
-
const MAX_TEXT = 10_000;
|
|
10
|
-
const MAX_SHORT = 500;
|
|
11
|
-
const MAX_KEY = 1_000;
|
|
12
|
-
const optionalKey = z.string().max(MAX_KEY).optional();
|
|
13
|
-
// POST /api/sessions
|
|
14
|
-
export const createSessionSchema = z.object({
|
|
15
|
-
description: z.string().min(1).max(MAX_TEXT),
|
|
16
|
-
name: z.string().max(MAX_SHORT).optional(),
|
|
17
|
-
baseDir: z.string().max(MAX_SHORT).optional(),
|
|
18
|
-
freeform: z.boolean().optional(),
|
|
19
|
-
apiKey: optionalKey,
|
|
20
|
-
oauthToken: optionalKey,
|
|
21
|
-
ghToken: optionalKey,
|
|
22
|
-
});
|
|
23
|
-
// POST /api/sessions/:id/iterate
|
|
24
|
-
export const iterateSessionSchema = z.object({
|
|
25
|
-
request: z.string().min(1).max(MAX_TEXT),
|
|
26
|
-
});
|
|
27
|
-
// POST /api/sandboxes
|
|
28
|
-
const infraNoneSchema = z.object({ mode: z.literal("none") });
|
|
29
|
-
const infraLocalSchema = z.object({ mode: z.literal("local") });
|
|
30
|
-
const infraCloudSchema = z.object({
|
|
31
|
-
mode: z.literal("cloud"),
|
|
32
|
-
databaseUrl: z.string().max(MAX_KEY),
|
|
33
|
-
electricUrl: z.string().max(MAX_KEY),
|
|
34
|
-
sourceId: z.string().max(MAX_SHORT),
|
|
35
|
-
secret: z.string().max(MAX_KEY),
|
|
36
|
-
});
|
|
37
|
-
const infraClaimSchema = z.object({
|
|
38
|
-
mode: z.literal("claim"),
|
|
39
|
-
databaseUrl: z.string().max(MAX_KEY),
|
|
40
|
-
electricUrl: z.string().max(MAX_KEY),
|
|
41
|
-
sourceId: z.string().max(MAX_SHORT),
|
|
42
|
-
secret: z.string().max(MAX_KEY),
|
|
43
|
-
claimId: z.string().max(MAX_SHORT),
|
|
44
|
-
});
|
|
45
|
-
const infraConfigSchema = z.discriminatedUnion("mode", [
|
|
46
|
-
infraNoneSchema,
|
|
47
|
-
infraLocalSchema,
|
|
48
|
-
infraCloudSchema,
|
|
49
|
-
infraClaimSchema,
|
|
50
|
-
]);
|
|
51
|
-
export const createSandboxSchema = z.object({
|
|
52
|
-
sessionId: z.string().uuid().optional(),
|
|
53
|
-
projectName: z.string().max(MAX_SHORT).optional(),
|
|
54
|
-
infra: infraConfigSchema.optional(),
|
|
55
|
-
});
|
|
56
|
-
// POST /api/rooms
|
|
57
|
-
export const createRoomSchema = z.object({
|
|
58
|
-
name: z.string().min(1).max(MAX_SHORT),
|
|
59
|
-
maxRounds: z.number().int().positive().optional(),
|
|
60
|
-
});
|
|
61
|
-
// POST /api/rooms/create-app
|
|
62
|
-
export const createAppRoomSchema = z.object({
|
|
63
|
-
description: z.string().min(1).max(MAX_TEXT),
|
|
64
|
-
name: z.string().max(MAX_SHORT).optional(),
|
|
65
|
-
apiKey: optionalKey,
|
|
66
|
-
oauthToken: optionalKey,
|
|
67
|
-
ghToken: optionalKey,
|
|
68
|
-
});
|
|
69
|
-
// POST /api/rooms/:id/agents
|
|
70
|
-
export const addAgentSchema = z.object({
|
|
71
|
-
name: z.string().max(MAX_SHORT).optional(),
|
|
72
|
-
role: z.string().max(MAX_SHORT).optional(),
|
|
73
|
-
gated: z.boolean().optional(),
|
|
74
|
-
initialPrompt: z.string().max(MAX_TEXT).optional(),
|
|
75
|
-
apiKey: optionalKey,
|
|
76
|
-
oauthToken: optionalKey,
|
|
77
|
-
ghToken: optionalKey,
|
|
78
|
-
});
|
|
79
|
-
// POST /api/rooms/:id/sessions
|
|
80
|
-
export const addSessionToRoomSchema = z.object({
|
|
81
|
-
sessionId: z.string().uuid(),
|
|
82
|
-
name: z.string().min(1).max(MAX_SHORT),
|
|
83
|
-
initialPrompt: z.string().max(MAX_TEXT).optional(),
|
|
84
|
-
});
|
|
85
|
-
// POST /api/rooms/:id/sessions/:sessionId/iterate
|
|
86
|
-
export const iterateRoomSessionSchema = z.object({
|
|
87
|
-
request: z.string().min(1).max(MAX_TEXT),
|
|
88
|
-
});
|
|
89
|
-
// POST /api/rooms/:id/messages
|
|
90
|
-
export const sendRoomMessageSchema = z.object({
|
|
91
|
-
from: z.string().min(1).max(MAX_SHORT),
|
|
92
|
-
body: z.string().min(1).max(MAX_TEXT),
|
|
93
|
-
to: z.string().max(MAX_SHORT).optional(),
|
|
94
|
-
});
|
|
95
|
-
// POST /api/sessions/resume
|
|
96
|
-
export const resumeSessionSchema = z.object({
|
|
97
|
-
repoUrl: z.string().min(1).max(MAX_KEY),
|
|
98
|
-
branch: z.string().max(MAX_SHORT).optional(),
|
|
99
|
-
apiKey: optionalKey,
|
|
100
|
-
oauthToken: optionalKey,
|
|
101
|
-
ghToken: optionalKey,
|
|
102
|
-
});
|
|
103
|
-
//# sourceMappingURL=api-schemas.js.map
|
package/dist/api-schemas.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"api-schemas.js","sourceRoot":"","sources":["../src/api-schemas.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* SessionBridge implementation that runs Codex CLI inside a Docker
|
|
3
|
-
* container via `docker exec -i`, communicating via exec --json NDJSON.
|
|
4
|
-
*
|
|
5
|
-
* The bridge translates Codex's exec --json output into EngineEvents
|
|
6
|
-
* and writes them to the Durable Stream for the UI.
|
|
7
|
-
*
|
|
8
|
-
* Codex runs in one-shot mode (`codex exec --json`) and exits after completing.
|
|
9
|
-
* On iterate (follow-up message), the bridge respawns Codex with the new prompt.
|
|
10
|
-
*/
|
|
11
|
-
import type { EngineEvent } from "@electric-agent/protocol"
|
|
12
|
-
import type { StreamConnectionInfo } from "../streams.js"
|
|
13
|
-
import type { SessionBridge } from "./types.js"
|
|
14
|
-
export interface CodexDockerConfig {
|
|
15
|
-
/** Initial prompt (the user's app description or task) */
|
|
16
|
-
prompt: string
|
|
17
|
-
/** Working directory inside the container */
|
|
18
|
-
cwd: string
|
|
19
|
-
/** Model to use (default: o4-mini) */
|
|
20
|
-
model?: string
|
|
21
|
-
/** Additional CLI flags */
|
|
22
|
-
extraFlags?: string[]
|
|
23
|
-
}
|
|
24
|
-
export declare class CodexDockerBridge implements SessionBridge {
|
|
25
|
-
readonly sessionId: string
|
|
26
|
-
readonly streamUrl: string
|
|
27
|
-
readonly streamHeaders: Record<string, string>
|
|
28
|
-
private containerId
|
|
29
|
-
private config
|
|
30
|
-
private writer
|
|
31
|
-
private parser
|
|
32
|
-
private agentEventCallbacks
|
|
33
|
-
private completeCallbacks
|
|
34
|
-
private closed
|
|
35
|
-
private proc
|
|
36
|
-
/** Codex thread ID captured from thread.started — used for resume */
|
|
37
|
-
private codexThreadId
|
|
38
|
-
/** Whether a Codex process is currently running */
|
|
39
|
-
private running
|
|
40
|
-
/** Whether the parser already emitted a session_end */
|
|
41
|
-
private resultReceived
|
|
42
|
-
constructor(
|
|
43
|
-
sessionId: string,
|
|
44
|
-
connection: StreamConnectionInfo,
|
|
45
|
-
containerId: string,
|
|
46
|
-
config: CodexDockerConfig,
|
|
47
|
-
)
|
|
48
|
-
emit(event: EngineEvent): Promise<void>
|
|
49
|
-
/**
|
|
50
|
-
* Send a follow-up user message to Codex by respawning with a new prompt.
|
|
51
|
-
*/
|
|
52
|
-
sendCommand(cmd: Record<string, unknown>): Promise<void>
|
|
53
|
-
/**
|
|
54
|
-
* Send a gate response. Codex exec mode doesn't support stdin interaction,
|
|
55
|
-
* so gate responses are limited.
|
|
56
|
-
*/
|
|
57
|
-
sendGateResponse(_gate: string, _value: Record<string, unknown>): Promise<void>
|
|
58
|
-
onAgentEvent(cb: (event: EngineEvent) => void): void
|
|
59
|
-
onComplete(cb: (success: boolean) => void): void
|
|
60
|
-
start(): Promise<void>
|
|
61
|
-
close(): void
|
|
62
|
-
/**
|
|
63
|
-
* Spawn a new Codex process. Called for both the initial prompt
|
|
64
|
-
* and follow-up iterate messages.
|
|
65
|
-
*/
|
|
66
|
-
private spawnCodex
|
|
67
|
-
private handleLine
|
|
68
|
-
private dispatchEvent
|
|
69
|
-
}
|
|
70
|
-
//# sourceMappingURL=codex-docker.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"codex-docker.d.ts","sourceRoot":"","sources":["../../src/bridge/codex-docker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAKH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AAE3D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAA;AAEzD,OAAO,KAAK,EAAE,aAAa,EAAiB,MAAM,YAAY,CAAA;AAE9D,MAAM,WAAW,iBAAiB;IACjC,0DAA0D;IAC1D,MAAM,EAAE,MAAM,CAAA;IACd,6CAA6C;IAC7C,GAAG,EAAE,MAAM,CAAA;IACX,sCAAsC;IACtC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,2BAA2B;IAC3B,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;CACrB;AAED,qBAAa,iBAAkB,YAAW,aAAa;IACtD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAE9C,OAAO,CAAC,WAAW,CAAQ;IAC3B,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,MAAM,CAA0B;IACxC,OAAO,CAAC,mBAAmB,CAA0C;IACrE,OAAO,CAAC,iBAAiB,CAAwC;IACjE,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,IAAI,CAA4B;IAExC,qEAAqE;IACrE,OAAO,CAAC,aAAa,CAAsB;IAC3C,mDAAmD;IACnD,OAAO,CAAC,OAAO,CAAQ;IACvB,uDAAuD;IACvD,OAAO,CAAC,cAAc,CAAQ;gBAG7B,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,oBAAoB,EAChC,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,iBAAiB;IAepB,IAAI,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAM7C;;OAEG;IACG,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAW9D;;;OAGG;IACG,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAIrF,YAAY,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,GAAG,IAAI;IAIpD,UAAU,CAAC,EAAE,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,GAAG,IAAI;IAI1C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAK5B,KAAK,IAAI,IAAI;IAiBb;;;OAGG;IACH,OAAO,CAAC,UAAU;IAgGlB,OAAO,CAAC,UAAU;IAUlB,OAAO,CAAC,aAAa;CAgDrB"}
|
|
@@ -1,234 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* SessionBridge implementation that runs Codex CLI inside a Docker
|
|
3
|
-
* container via `docker exec -i`, communicating via exec --json NDJSON.
|
|
4
|
-
*
|
|
5
|
-
* The bridge translates Codex's exec --json output into EngineEvents
|
|
6
|
-
* and writes them to the Durable Stream for the UI.
|
|
7
|
-
*
|
|
8
|
-
* Codex runs in one-shot mode (`codex exec --json`) and exits after completing.
|
|
9
|
-
* On iterate (follow-up message), the bridge respawns Codex with the new prompt.
|
|
10
|
-
*/
|
|
11
|
-
import { spawn } from "node:child_process"
|
|
12
|
-
import * as readline from "node:readline"
|
|
13
|
-
import { DurableStream } from "@durable-streams/client"
|
|
14
|
-
import { ts } from "@electric-agent/protocol"
|
|
15
|
-
import { createCodexJsonParser } from "./codex-json-parser.js"
|
|
16
|
-
export class CodexDockerBridge {
|
|
17
|
-
sessionId
|
|
18
|
-
streamUrl
|
|
19
|
-
streamHeaders
|
|
20
|
-
containerId
|
|
21
|
-
config
|
|
22
|
-
writer
|
|
23
|
-
parser = createCodexJsonParser()
|
|
24
|
-
agentEventCallbacks = []
|
|
25
|
-
completeCallbacks = []
|
|
26
|
-
closed = false
|
|
27
|
-
proc = null
|
|
28
|
-
/** Codex thread ID captured from thread.started — used for resume */
|
|
29
|
-
codexThreadId = null
|
|
30
|
-
/** Whether a Codex process is currently running */
|
|
31
|
-
running = false
|
|
32
|
-
/** Whether the parser already emitted a session_end */
|
|
33
|
-
resultReceived = false
|
|
34
|
-
constructor(sessionId, connection, containerId, config) {
|
|
35
|
-
this.sessionId = sessionId
|
|
36
|
-
this.streamUrl = connection.url
|
|
37
|
-
this.streamHeaders = connection.headers
|
|
38
|
-
this.containerId = containerId
|
|
39
|
-
this.config = config
|
|
40
|
-
this.writer = new DurableStream({
|
|
41
|
-
url: connection.url,
|
|
42
|
-
headers: connection.headers,
|
|
43
|
-
contentType: "application/json",
|
|
44
|
-
})
|
|
45
|
-
}
|
|
46
|
-
async emit(event) {
|
|
47
|
-
if (this.closed) return
|
|
48
|
-
const msg = { source: "server", ...event }
|
|
49
|
-
await this.writer.append(JSON.stringify(msg))
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* Send a follow-up user message to Codex by respawning with a new prompt.
|
|
53
|
-
*/
|
|
54
|
-
async sendCommand(cmd) {
|
|
55
|
-
if (this.closed) return
|
|
56
|
-
if (cmd.command === "iterate" && typeof cmd.request === "string") {
|
|
57
|
-
this.spawnCodex(cmd.request)
|
|
58
|
-
return
|
|
59
|
-
}
|
|
60
|
-
console.log(`[codex-docker] Ignoring unsupported command: ${cmd.command}`)
|
|
61
|
-
}
|
|
62
|
-
/**
|
|
63
|
-
* Send a gate response. Codex exec mode doesn't support stdin interaction,
|
|
64
|
-
* so gate responses are limited.
|
|
65
|
-
*/
|
|
66
|
-
async sendGateResponse(_gate, _value) {
|
|
67
|
-
// Codex exec --json doesn't support stdin user messages mid-run
|
|
68
|
-
}
|
|
69
|
-
onAgentEvent(cb) {
|
|
70
|
-
this.agentEventCallbacks.push(cb)
|
|
71
|
-
}
|
|
72
|
-
onComplete(cb) {
|
|
73
|
-
this.completeCallbacks.push(cb)
|
|
74
|
-
}
|
|
75
|
-
async start() {
|
|
76
|
-
if (this.closed) return
|
|
77
|
-
this.spawnCodex(this.config.prompt)
|
|
78
|
-
}
|
|
79
|
-
close() {
|
|
80
|
-
this.closed = true
|
|
81
|
-
if (this.proc) {
|
|
82
|
-
try {
|
|
83
|
-
this.proc.stdin?.end()
|
|
84
|
-
this.proc.kill("SIGTERM")
|
|
85
|
-
} catch {
|
|
86
|
-
// Process may already be dead
|
|
87
|
-
}
|
|
88
|
-
this.proc = null
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
// -----------------------------------------------------------------------
|
|
92
|
-
// Private helpers
|
|
93
|
-
// -----------------------------------------------------------------------
|
|
94
|
-
/**
|
|
95
|
-
* Spawn a new Codex process. Called for both the initial prompt
|
|
96
|
-
* and follow-up iterate messages.
|
|
97
|
-
*/
|
|
98
|
-
spawnCodex(prompt) {
|
|
99
|
-
// Kill any existing process
|
|
100
|
-
if (this.proc) {
|
|
101
|
-
try {
|
|
102
|
-
this.proc.stdin?.end()
|
|
103
|
-
this.proc.kill("SIGTERM")
|
|
104
|
-
} catch {
|
|
105
|
-
// Already dead
|
|
106
|
-
}
|
|
107
|
-
this.proc = null
|
|
108
|
-
}
|
|
109
|
-
// Reset parser state for the new process
|
|
110
|
-
this.parser = createCodexJsonParser()
|
|
111
|
-
this.resultReceived = false
|
|
112
|
-
this.running = true
|
|
113
|
-
const model = this.config.model ?? "o4-mini"
|
|
114
|
-
// Build the codex CLI command
|
|
115
|
-
const codexArgs = [
|
|
116
|
-
"exec",
|
|
117
|
-
"--json",
|
|
118
|
-
"--full-auto",
|
|
119
|
-
"--model",
|
|
120
|
-
model,
|
|
121
|
-
...(this.config.extraFlags ?? []),
|
|
122
|
-
"-q",
|
|
123
|
-
prompt,
|
|
124
|
-
]
|
|
125
|
-
// Escape for bash
|
|
126
|
-
const escapedArgs = codexArgs.map((a) => `'${a.replace(/'/g, "'\\''")}'`).join(" ")
|
|
127
|
-
const cmd = `cd '${this.config.cwd}' && codex ${escapedArgs}`
|
|
128
|
-
this.proc = spawn("docker", ["exec", this.containerId, "bash", "-c", cmd], {
|
|
129
|
-
stdio: ["pipe", "pipe", "pipe"],
|
|
130
|
-
})
|
|
131
|
-
console.log(
|
|
132
|
-
`[codex-docker] Started: session=${this.sessionId} container=${this.containerId} pid=${this.proc.pid}`,
|
|
133
|
-
)
|
|
134
|
-
console.log(`[codex-docker] cmd: ${cmd}`)
|
|
135
|
-
const currentProc = this.proc
|
|
136
|
-
// Read stdout line by line (exec --json NDJSON)
|
|
137
|
-
if (currentProc.stdout) {
|
|
138
|
-
const rl = readline.createInterface({
|
|
139
|
-
input: currentProc.stdout,
|
|
140
|
-
terminal: false,
|
|
141
|
-
})
|
|
142
|
-
rl.on("line", (line) => {
|
|
143
|
-
if (this.closed) return
|
|
144
|
-
console.log(`[codex-docker:stdout] ${line.slice(0, 120)}...`)
|
|
145
|
-
this.handleLine(line)
|
|
146
|
-
})
|
|
147
|
-
}
|
|
148
|
-
// Log stderr
|
|
149
|
-
if (currentProc.stderr) {
|
|
150
|
-
const stderrRl = readline.createInterface({
|
|
151
|
-
input: currentProc.stderr,
|
|
152
|
-
terminal: false,
|
|
153
|
-
})
|
|
154
|
-
stderrRl.on("line", (line) => {
|
|
155
|
-
if (!this.closed) {
|
|
156
|
-
console.error(`[codex-docker:stderr] ${line}`)
|
|
157
|
-
}
|
|
158
|
-
})
|
|
159
|
-
}
|
|
160
|
-
// Handle process exit — defer to let pending readline events flush first
|
|
161
|
-
currentProc.on("exit", (code) => {
|
|
162
|
-
console.log(`[codex-docker] Process exited: code=${code} session=${this.sessionId}`)
|
|
163
|
-
setTimeout(() => {
|
|
164
|
-
// Capture thread ID from parser state before marking not running
|
|
165
|
-
if (this.parser.state.threadId) {
|
|
166
|
-
this.codexThreadId = this.parser.state.threadId
|
|
167
|
-
}
|
|
168
|
-
this.running = false
|
|
169
|
-
// Emit session_end if the parser didn't already
|
|
170
|
-
if (!this.closed && !this.resultReceived) {
|
|
171
|
-
const endEvent = {
|
|
172
|
-
type: "session_end",
|
|
173
|
-
success: code === 0,
|
|
174
|
-
ts: ts(),
|
|
175
|
-
}
|
|
176
|
-
this.dispatchEvent(endEvent)
|
|
177
|
-
}
|
|
178
|
-
}, 100)
|
|
179
|
-
})
|
|
180
|
-
}
|
|
181
|
-
handleLine(line) {
|
|
182
|
-
const trimmed = line.trim()
|
|
183
|
-
if (!trimmed) return
|
|
184
|
-
const events = this.parser.parse(trimmed)
|
|
185
|
-
for (const event of events) {
|
|
186
|
-
this.dispatchEvent(event)
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
dispatchEvent(event) {
|
|
190
|
-
// Write to Durable Stream for UI
|
|
191
|
-
const msg = { source: "agent", ...event }
|
|
192
|
-
this.writer.append(JSON.stringify(msg)).catch(() => {})
|
|
193
|
-
// Track session_end to prevent duplicates
|
|
194
|
-
if (event.type === "session_end") {
|
|
195
|
-
this.resultReceived = true
|
|
196
|
-
}
|
|
197
|
-
// Detect dev:start in Bash tool_use → emit app_ready for the UI preview
|
|
198
|
-
if (event.type === "pre_tool_use" && event.tool_name === "Bash") {
|
|
199
|
-
const cmd = event.tool_input?.command
|
|
200
|
-
if (typeof cmd === "string" && /\bdev:start\b/.test(cmd)) {
|
|
201
|
-
const appReady = { type: "app_ready", ts: ts() }
|
|
202
|
-
const appReadyMsg = { source: "agent", ...appReady }
|
|
203
|
-
this.writer.append(JSON.stringify(appReadyMsg)).catch(() => {})
|
|
204
|
-
for (const cb of this.agentEventCallbacks) {
|
|
205
|
-
try {
|
|
206
|
-
cb(appReady)
|
|
207
|
-
} catch {
|
|
208
|
-
// Swallow
|
|
209
|
-
}
|
|
210
|
-
}
|
|
211
|
-
}
|
|
212
|
-
}
|
|
213
|
-
// Dispatch to callbacks
|
|
214
|
-
for (const cb of this.agentEventCallbacks) {
|
|
215
|
-
try {
|
|
216
|
-
cb(event)
|
|
217
|
-
} catch {
|
|
218
|
-
// Swallow callback errors
|
|
219
|
-
}
|
|
220
|
-
}
|
|
221
|
-
// Detect session_end
|
|
222
|
-
if (event.type === "session_end" && "success" in event) {
|
|
223
|
-
const success = event.success
|
|
224
|
-
for (const cb of this.completeCallbacks) {
|
|
225
|
-
try {
|
|
226
|
-
cb(success)
|
|
227
|
-
} catch {
|
|
228
|
-
// Swallow callback errors
|
|
229
|
-
}
|
|
230
|
-
}
|
|
231
|
-
}
|
|
232
|
-
}
|
|
233
|
-
}
|
|
234
|
-
//# sourceMappingURL=codex-docker.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"codex-docker.js","sourceRoot":"","sources":["../../src/bridge/codex-docker.ts"],"names":[],"mappings":"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"}
|