@electric-agent/studio 1.5.0 → 1.12.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/api-schemas.d.ts +225 -0
- package/dist/api-schemas.d.ts.map +1 -0
- package/dist/api-schemas.js +95 -0
- package/dist/api-schemas.js.map +1 -0
- package/dist/bridge/claude-code-base.d.ts +121 -0
- package/dist/bridge/claude-code-base.d.ts.map +1 -0
- package/dist/bridge/claude-code-base.js +263 -0
- package/dist/bridge/claude-code-base.js.map +1 -0
- package/dist/bridge/claude-code-docker.d.ts +13 -73
- package/dist/bridge/claude-code-docker.d.ts.map +1 -1
- package/dist/bridge/claude-code-docker.js +91 -302
- package/dist/bridge/claude-code-docker.js.map +1 -1
- package/dist/bridge/claude-code-sprites.d.ts +12 -59
- package/dist/bridge/claude-code-sprites.d.ts.map +1 -1
- package/dist/bridge/claude-code-sprites.js +88 -281
- package/dist/bridge/claude-code-sprites.js.map +1 -1
- package/dist/bridge/claude-md-generator.d.ts +22 -5
- package/dist/bridge/claude-md-generator.d.ts.map +1 -1
- package/dist/bridge/claude-md-generator.js +81 -213
- package/dist/bridge/claude-md-generator.js.map +1 -1
- package/dist/bridge/codex-docker.d.ts +56 -51
- package/dist/bridge/codex-docker.js +222 -230
- package/dist/bridge/codex-json-parser.d.ts +11 -11
- package/dist/bridge/codex-json-parser.js +231 -238
- package/dist/bridge/codex-md-generator.d.ts +3 -3
- package/dist/bridge/codex-md-generator.js +42 -32
- package/dist/bridge/codex-sprites.d.ts +50 -45
- package/dist/bridge/codex-sprites.js +212 -222
- package/dist/bridge/daytona.d.ts +25 -25
- package/dist/bridge/daytona.js +131 -136
- package/dist/bridge/docker-stdio.d.ts +21 -21
- package/dist/bridge/docker-stdio.js +126 -132
- package/dist/bridge/hosted.d.ts +3 -2
- package/dist/bridge/hosted.d.ts.map +1 -1
- package/dist/bridge/hosted.js +4 -0
- package/dist/bridge/hosted.js.map +1 -1
- package/dist/bridge/message-parser.d.ts +24 -0
- package/dist/bridge/message-parser.d.ts.map +1 -0
- package/dist/bridge/message-parser.js +39 -0
- package/dist/bridge/message-parser.js.map +1 -0
- package/dist/bridge/role-skills.d.ts +25 -0
- package/dist/bridge/role-skills.d.ts.map +1 -0
- package/dist/bridge/role-skills.js +120 -0
- package/dist/bridge/role-skills.js.map +1 -0
- package/dist/bridge/room-messaging-skill.d.ts +11 -0
- package/dist/bridge/room-messaging-skill.d.ts.map +1 -0
- package/dist/bridge/room-messaging-skill.js +41 -0
- package/dist/bridge/room-messaging-skill.js.map +1 -0
- package/dist/bridge/sprites.d.ts +22 -22
- package/dist/bridge/sprites.js +123 -128
- package/dist/bridge/stream-json-parser.js +12 -5
- package/dist/bridge/stream-json-parser.js.map +1 -1
- package/dist/bridge/types.d.ts +4 -10
- package/dist/bridge/types.d.ts.map +1 -1
- package/dist/client/assets/index-BfvQSMwH.css +1 -0
- package/dist/client/assets/index-CiwD5LkP.js +235 -0
- package/dist/client/index.html +2 -2
- package/dist/index.d.ts +4 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/invite-code.d.ts +5 -0
- package/dist/invite-code.d.ts.map +1 -0
- package/dist/invite-code.js +14 -0
- package/dist/invite-code.js.map +1 -0
- package/dist/project-utils.d.ts.map +1 -1
- package/dist/project-utils.js.map +1 -1
- package/dist/registry.d.ts +11 -4
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +1 -1
- package/dist/registry.js.map +1 -1
- package/dist/room-router.d.ts +73 -0
- package/dist/room-router.d.ts.map +1 -0
- package/dist/room-router.js +345 -0
- package/dist/room-router.js.map +1 -0
- package/dist/sandbox/docker.d.ts.map +1 -1
- package/dist/sandbox/docker.js +5 -6
- package/dist/sandbox/docker.js.map +1 -1
- package/dist/sandbox/index.d.ts +0 -1
- package/dist/sandbox/index.d.ts.map +1 -1
- package/dist/sandbox/index.js +0 -1
- package/dist/sandbox/index.js.map +1 -1
- package/dist/sandbox/sprites.d.ts.map +1 -1
- package/dist/sandbox/sprites.js +40 -10
- package/dist/sandbox/sprites.js.map +1 -1
- package/dist/sandbox/types.d.ts +4 -2
- package/dist/sandbox/types.d.ts.map +1 -1
- package/dist/server.d.ts +12 -0
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +824 -309
- package/dist/server.js.map +1 -1
- package/dist/session-auth.d.ts +9 -0
- package/dist/session-auth.d.ts.map +1 -1
- package/dist/session-auth.js +30 -0
- package/dist/session-auth.js.map +1 -1
- package/dist/sessions.d.ts +7 -1
- package/dist/sessions.d.ts.map +1 -1
- package/dist/sessions.js.map +1 -1
- package/dist/streams.d.ts +2 -6
- package/dist/streams.d.ts.map +1 -1
- package/dist/streams.js +6 -17
- package/dist/streams.js.map +1 -1
- package/dist/validate.d.ts +10 -0
- package/dist/validate.d.ts.map +1 -0
- package/dist/validate.js +24 -0
- package/dist/validate.js.map +1 -0
- package/package.json +6 -9
- package/dist/client/assets/index-DDzmxYub.js +0 -234
- package/dist/client/assets/index-DcP7prsZ.css +0 -1
|
@@ -11,264 +11,257 @@
|
|
|
11
11
|
*
|
|
12
12
|
* This parser converts each line into zero or more EngineEvent objects.
|
|
13
13
|
*/
|
|
14
|
-
import { ts } from "@electric-agent/protocol"
|
|
14
|
+
import { ts } from "@electric-agent/protocol"
|
|
15
15
|
/**
|
|
16
16
|
* Create a new stateful parser. The returned `parse` function converts
|
|
17
17
|
* a single raw JSON line from Codex into zero or more EngineEvents.
|
|
18
18
|
*/
|
|
19
19
|
export function createCodexJsonParser() {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
20
|
+
const state = {
|
|
21
|
+
toolNames: new Map(),
|
|
22
|
+
totalCost: 0,
|
|
23
|
+
threadId: null,
|
|
24
|
+
}
|
|
25
|
+
return {
|
|
26
|
+
state,
|
|
27
|
+
parse(line) {
|
|
28
|
+
return parseLine(line, state)
|
|
29
|
+
},
|
|
30
|
+
}
|
|
31
31
|
}
|
|
32
32
|
function parseLine(line, state) {
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
default:
|
|
57
|
-
return [];
|
|
58
|
-
}
|
|
33
|
+
const trimmed = line.trim()
|
|
34
|
+
if (!trimmed) return []
|
|
35
|
+
let msg
|
|
36
|
+
try {
|
|
37
|
+
msg = JSON.parse(trimmed)
|
|
38
|
+
} catch {
|
|
39
|
+
return []
|
|
40
|
+
}
|
|
41
|
+
if (!msg.type) return []
|
|
42
|
+
switch (msg.type) {
|
|
43
|
+
case "thread.started":
|
|
44
|
+
return handleThreadStarted(msg, state)
|
|
45
|
+
case "item.started":
|
|
46
|
+
return handleItemStarted(msg, state)
|
|
47
|
+
case "item.completed":
|
|
48
|
+
return handleItemCompleted(msg, state)
|
|
49
|
+
case "turn.completed":
|
|
50
|
+
return handleTurnCompleted(msg, state)
|
|
51
|
+
case "turn.failed":
|
|
52
|
+
return handleTurnFailed(msg)
|
|
53
|
+
default:
|
|
54
|
+
return []
|
|
55
|
+
}
|
|
59
56
|
}
|
|
60
57
|
function handleThreadStarted(msg, state) {
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
58
|
+
state.threadId = msg.thread_id ?? null
|
|
59
|
+
return [
|
|
60
|
+
{
|
|
61
|
+
type: "session_start",
|
|
62
|
+
session_id: msg.thread_id ?? "",
|
|
63
|
+
ts: ts(),
|
|
64
|
+
},
|
|
65
|
+
]
|
|
69
66
|
}
|
|
70
67
|
function handleItemStarted(msg, state) {
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
}
|
|
68
|
+
const item = msg.item
|
|
69
|
+
if (!item?.type) return []
|
|
70
|
+
switch (item.type) {
|
|
71
|
+
case "command_execution": {
|
|
72
|
+
const ce = item
|
|
73
|
+
const toolUseId = ce.id ?? `codex_${Date.now()}`
|
|
74
|
+
state.toolNames.set(toolUseId, "Bash")
|
|
75
|
+
return [
|
|
76
|
+
{
|
|
77
|
+
type: "pre_tool_use",
|
|
78
|
+
tool_name: "Bash",
|
|
79
|
+
tool_use_id: toolUseId,
|
|
80
|
+
tool_input: { command: ce.command ?? "" },
|
|
81
|
+
ts: ts(),
|
|
82
|
+
},
|
|
83
|
+
]
|
|
84
|
+
}
|
|
85
|
+
case "file_change": {
|
|
86
|
+
const fc = item
|
|
87
|
+
const toolUseId = fc.id ?? `codex_${Date.now()}`
|
|
88
|
+
const toolName = fc.action === "delete" ? "Delete" : "Write"
|
|
89
|
+
state.toolNames.set(toolUseId, toolName)
|
|
90
|
+
return [
|
|
91
|
+
{
|
|
92
|
+
type: "pre_tool_use",
|
|
93
|
+
tool_name: toolName,
|
|
94
|
+
tool_use_id: toolUseId,
|
|
95
|
+
tool_input: { file_path: fc.file_path ?? "", action: fc.action ?? "write" },
|
|
96
|
+
ts: ts(),
|
|
97
|
+
},
|
|
98
|
+
]
|
|
99
|
+
}
|
|
100
|
+
case "mcp_tool_call": {
|
|
101
|
+
const mc = item
|
|
102
|
+
const toolUseId = mc.id ?? `codex_${Date.now()}`
|
|
103
|
+
const toolName = mc.tool_name
|
|
104
|
+
? mc.server_name
|
|
105
|
+
? `mcp__${mc.server_name}__${mc.tool_name}`
|
|
106
|
+
: mc.tool_name
|
|
107
|
+
: "mcp_tool"
|
|
108
|
+
state.toolNames.set(toolUseId, toolName)
|
|
109
|
+
return [
|
|
110
|
+
{
|
|
111
|
+
type: "pre_tool_use",
|
|
112
|
+
tool_name: toolName,
|
|
113
|
+
tool_use_id: toolUseId,
|
|
114
|
+
tool_input: mc.arguments ?? {},
|
|
115
|
+
ts: ts(),
|
|
116
|
+
},
|
|
117
|
+
]
|
|
118
|
+
}
|
|
119
|
+
case "reasoning": {
|
|
120
|
+
const r = item
|
|
121
|
+
if (r.content) {
|
|
122
|
+
return [
|
|
123
|
+
{
|
|
124
|
+
type: "assistant_thinking",
|
|
125
|
+
text: r.content,
|
|
126
|
+
ts: ts(),
|
|
127
|
+
},
|
|
128
|
+
]
|
|
129
|
+
}
|
|
130
|
+
return []
|
|
131
|
+
}
|
|
132
|
+
default:
|
|
133
|
+
return []
|
|
134
|
+
}
|
|
139
135
|
}
|
|
140
136
|
function handleItemCompleted(msg, state) {
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
137
|
+
const item = msg.item
|
|
138
|
+
if (!item?.type) return []
|
|
139
|
+
switch (item.type) {
|
|
140
|
+
case "agent_message": {
|
|
141
|
+
const am = item
|
|
142
|
+
const text = extractMessageText(am.content)
|
|
143
|
+
if (text) {
|
|
144
|
+
return [
|
|
145
|
+
{
|
|
146
|
+
type: "assistant_message",
|
|
147
|
+
text,
|
|
148
|
+
ts: ts(),
|
|
149
|
+
},
|
|
150
|
+
]
|
|
151
|
+
}
|
|
152
|
+
return []
|
|
153
|
+
}
|
|
154
|
+
case "command_execution": {
|
|
155
|
+
const ce = item
|
|
156
|
+
const toolUseId = ce.id ?? ""
|
|
157
|
+
const toolName = state.toolNames.get(toolUseId) ?? "Bash"
|
|
158
|
+
const isError = ce.exit_code != null && ce.exit_code !== 0
|
|
159
|
+
const response = ce.output ?? ""
|
|
160
|
+
if (isError) {
|
|
161
|
+
return [
|
|
162
|
+
{
|
|
163
|
+
type: "post_tool_use",
|
|
164
|
+
tool_use_id: toolUseId,
|
|
165
|
+
tool_name: toolName,
|
|
166
|
+
tool_response: response,
|
|
167
|
+
error: response || `Exit code: ${ce.exit_code}`,
|
|
168
|
+
ts: ts(),
|
|
169
|
+
},
|
|
170
|
+
]
|
|
171
|
+
}
|
|
172
|
+
return [
|
|
173
|
+
{
|
|
174
|
+
type: "post_tool_use",
|
|
175
|
+
tool_use_id: toolUseId,
|
|
176
|
+
tool_name: toolName,
|
|
177
|
+
tool_response: response,
|
|
178
|
+
ts: ts(),
|
|
179
|
+
},
|
|
180
|
+
]
|
|
181
|
+
}
|
|
182
|
+
case "file_change": {
|
|
183
|
+
const fc = item
|
|
184
|
+
const toolUseId = fc.id ?? ""
|
|
185
|
+
const toolName = state.toolNames.get(toolUseId) ?? "Write"
|
|
186
|
+
return [
|
|
187
|
+
{
|
|
188
|
+
type: "post_tool_use",
|
|
189
|
+
tool_use_id: toolUseId,
|
|
190
|
+
tool_name: toolName,
|
|
191
|
+
tool_response:
|
|
192
|
+
fc.diff ?? fc.content ?? `File ${fc.action ?? "changed"}: ${fc.file_path ?? ""}`,
|
|
193
|
+
ts: ts(),
|
|
194
|
+
},
|
|
195
|
+
]
|
|
196
|
+
}
|
|
197
|
+
case "mcp_tool_call": {
|
|
198
|
+
const mc = item
|
|
199
|
+
const toolUseId = mc.id ?? ""
|
|
200
|
+
const toolName = state.toolNames.get(toolUseId) ?? "mcp_tool"
|
|
201
|
+
return [
|
|
202
|
+
{
|
|
203
|
+
type: "post_tool_use",
|
|
204
|
+
tool_use_id: toolUseId,
|
|
205
|
+
tool_name: toolName,
|
|
206
|
+
tool_response: mc.result ?? "",
|
|
207
|
+
ts: ts(),
|
|
208
|
+
},
|
|
209
|
+
]
|
|
210
|
+
}
|
|
211
|
+
case "reasoning": {
|
|
212
|
+
const r = item
|
|
213
|
+
if (r.content) {
|
|
214
|
+
return [
|
|
215
|
+
{
|
|
216
|
+
type: "assistant_thinking",
|
|
217
|
+
text: r.content,
|
|
218
|
+
ts: ts(),
|
|
219
|
+
},
|
|
220
|
+
]
|
|
221
|
+
}
|
|
222
|
+
return []
|
|
223
|
+
}
|
|
224
|
+
default:
|
|
225
|
+
return []
|
|
226
|
+
}
|
|
231
227
|
}
|
|
232
228
|
function handleTurnCompleted(msg, state) {
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
229
|
+
const events = []
|
|
230
|
+
if (msg.cost_usd != null) {
|
|
231
|
+
state.totalCost += msg.cost_usd
|
|
232
|
+
events.push({
|
|
233
|
+
type: "cost_update",
|
|
234
|
+
totalCostUsd: state.totalCost,
|
|
235
|
+
ts: ts(),
|
|
236
|
+
})
|
|
237
|
+
}
|
|
238
|
+
return events
|
|
243
239
|
}
|
|
244
240
|
function handleTurnFailed(msg) {
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
241
|
+
return [
|
|
242
|
+
{
|
|
243
|
+
type: "log",
|
|
244
|
+
level: "error",
|
|
245
|
+
message: msg.error ?? "Turn failed",
|
|
246
|
+
ts: ts(),
|
|
247
|
+
},
|
|
248
|
+
]
|
|
253
249
|
}
|
|
254
250
|
// ---------------------------------------------------------------------------
|
|
255
251
|
// Helpers
|
|
256
252
|
// ---------------------------------------------------------------------------
|
|
257
253
|
function extractMessageText(content) {
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
.join("\n");
|
|
271
|
-
}
|
|
272
|
-
return String(content);
|
|
254
|
+
if (content == null) return ""
|
|
255
|
+
if (typeof content === "string") return content
|
|
256
|
+
if (Array.isArray(content)) {
|
|
257
|
+
return content
|
|
258
|
+
.map((block) => {
|
|
259
|
+
if (block.type === "text" && typeof block.text === "string") return block.text
|
|
260
|
+
return ""
|
|
261
|
+
})
|
|
262
|
+
.filter(Boolean)
|
|
263
|
+
.join("\n")
|
|
264
|
+
}
|
|
265
|
+
return String(content)
|
|
273
266
|
}
|
|
274
|
-
//# sourceMappingURL=codex-json-parser.js.map
|
|
267
|
+
//# sourceMappingURL=codex-json-parser.js.map
|
|
@@ -5,10 +5,10 @@
|
|
|
5
5
|
* since the instructions are framework-specific (Electric SQL + TanStack DB),
|
|
6
6
|
* not agent-specific.
|
|
7
7
|
*/
|
|
8
|
-
import type { ClaudeMdOptions } from "./claude-md-generator.js"
|
|
8
|
+
import type { ClaudeMdOptions } from "./claude-md-generator.js"
|
|
9
9
|
/**
|
|
10
10
|
* Generate an AGENTS.md file for Codex CLI mode.
|
|
11
11
|
* Uses the same stack-specific content as Claude Code mode.
|
|
12
12
|
*/
|
|
13
|
-
export declare function generateCodexMd(opts: ClaudeMdOptions): string
|
|
14
|
-
//# sourceMappingURL=codex-md-generator.d.ts.map
|
|
13
|
+
export declare function generateCodexMd(opts: ClaudeMdOptions): string
|
|
14
|
+
//# sourceMappingURL=codex-md-generator.d.ts.map
|
|
@@ -5,41 +5,51 @@
|
|
|
5
5
|
* since the instructions are framework-specific (Electric SQL + TanStack DB),
|
|
6
6
|
* not agent-specific.
|
|
7
7
|
*/
|
|
8
|
-
import {
|
|
8
|
+
import {
|
|
9
|
+
DRIZZLE_WORKFLOW,
|
|
10
|
+
devServerInstructions,
|
|
11
|
+
GUARDRAILS,
|
|
12
|
+
INFRASTRUCTURE,
|
|
13
|
+
PLAYBOOK_INSTRUCTIONS,
|
|
14
|
+
PROJECT_CONTEXT,
|
|
15
|
+
SCAFFOLD_STRUCTURE,
|
|
16
|
+
SSR_RULES,
|
|
17
|
+
sandboxEnvironment,
|
|
18
|
+
} from "./claude-md-generator.js"
|
|
9
19
|
/**
|
|
10
20
|
* Generate an AGENTS.md file for Codex CLI mode.
|
|
11
21
|
* Uses the same stack-specific content as Claude Code mode.
|
|
12
22
|
*/
|
|
13
23
|
export function generateCodexMd(opts) {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
24
|
+
const sections = []
|
|
25
|
+
sections.push(`# ${opts.projectName}`)
|
|
26
|
+
sections.push("")
|
|
27
|
+
sections.push(PROJECT_CONTEXT)
|
|
28
|
+
sections.push("")
|
|
29
|
+
const sandbox = sandboxEnvironment(opts.runtime)
|
|
30
|
+
if (sandbox) {
|
|
31
|
+
sections.push(sandbox)
|
|
32
|
+
sections.push("")
|
|
33
|
+
}
|
|
34
|
+
if (!opts.isIteration) {
|
|
35
|
+
sections.push("## Current Task")
|
|
36
|
+
sections.push(opts.description)
|
|
37
|
+
sections.push("")
|
|
38
|
+
}
|
|
39
|
+
sections.push(SCAFFOLD_STRUCTURE)
|
|
40
|
+
sections.push("")
|
|
41
|
+
sections.push(DRIZZLE_WORKFLOW)
|
|
42
|
+
sections.push("")
|
|
43
|
+
sections.push(GUARDRAILS)
|
|
44
|
+
sections.push("")
|
|
45
|
+
sections.push(PLAYBOOK_INSTRUCTIONS)
|
|
46
|
+
sections.push("")
|
|
47
|
+
sections.push(INFRASTRUCTURE)
|
|
48
|
+
sections.push("")
|
|
49
|
+
sections.push(devServerInstructions(opts.runtime))
|
|
50
|
+
sections.push("")
|
|
51
|
+
sections.push(SSR_RULES)
|
|
52
|
+
sections.push("")
|
|
53
|
+
return sections.join("\n")
|
|
44
54
|
}
|
|
45
|
-
//# sourceMappingURL=codex-md-generator.js.map
|
|
55
|
+
//# sourceMappingURL=codex-md-generator.js.map
|