vibe64 0.1.21 → 0.1.22
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/assets/ProjectTypeGate-B3NHteXC.js +1 -0
- package/dist/assets/ProjectTypeGate-fJcYj6sR.css +1 -0
- package/dist/assets/{SetupReadinessGate-DkkorR2Y.js → SetupReadinessGate-2twHjoYZ.js} +1 -1
- package/dist/assets/{ShellLayout-BcKS2HG9.js → ShellLayout-BjAbXfzf.js} +1 -1
- package/dist/assets/{VTabs-BJ8MKoig.js → VTabs-BLGGdbms.js} +1 -1
- package/dist/assets/{error-CwT53qTu.js → error-DvUPciuh.js} +1 -1
- package/dist/assets/history-DfM4ewyV.js +1 -0
- package/dist/assets/home-sh4v0vz7.js +1 -0
- package/dist/assets/index-C4JbNnml.css +1 -0
- package/dist/assets/{index-BJxDQvyK.js → index-CdFWokfE.js} +1 -1
- package/dist/assets/index-D4oqjV9n.js +132 -0
- package/dist/assets/{index-CY-wDjNv.js → index-DqoYKexs.js} +15 -15
- package/dist/assets/{placement-7FCYadh2.js → placement-QfRaYTFY.js} +1 -1
- package/dist/assets/{setup-BzzdD38G.js → setup-B-WOti3H.js} +2 -2
- package/dist/assets/{streamEvents-Ba9kHw-1.js → streamEvents-CIqegoLa.js} +1 -1
- package/dist/assets/{studioGateApi-hkZdLr1Y.js → studioGateApi-CFtez6lH.js} +1 -1
- package/dist/assets/{target-scripts-8hczu84t.js → target-scripts-CI-nAISO.js} +1 -1
- package/dist/assets/useStudioTerminal-I8tuBymw.js +1 -0
- package/dist/assets/vibe64SessionPanelModel-DLdexNxC.js +1 -0
- package/dist/index.html +1 -1
- package/node_modules/@local/setup-doctor-core/src/server/doctorToolchain.js +4 -0
- package/node_modules/@local/studio-terminal-core/src/server/gitGithubTransport.js +33 -0
- package/node_modules/@local/studio-terminal-core/src/server/index.js +1 -0
- package/node_modules/@local/studio-terminal-core/src/server/terminalSessions.js +51 -1
- package/node_modules/@local/vibe64-adapters/src/server/adapter.js +4 -0
- package/node_modules/@local/vibe64-adapters/src/server/adapters/laravel/adapter.js +5 -0
- package/node_modules/@local/vibe64-adapters/src/server/adapters/laravel/databaseRuntime.js +50 -0
- package/node_modules/@local/vibe64-adapters/src/server/configStore.js +22 -1
- package/node_modules/@local/vibe64-adapters/src/server/systemPrompts/agent_conversation.txt +0 -2
- package/node_modules/@local/vibe64-adapters/src/server/systemPrompts/draft_issue.txt +18 -0
- package/node_modules/@local/vibe64-adapters/src/server/systemPrompts/make_plan.txt +14 -2
- package/node_modules/@local/vibe64-adapters/src/server/systemPrompts/prepare_for_merge.txt +2 -0
- package/node_modules/@local/vibe64-adapters/src/server/systemPrompts/resolve_pull_request.txt +1 -0
- package/node_modules/@local/vibe64-adapters/src/server/systemPrompts/run_deep_ui_check.txt +7 -3
- package/node_modules/@local/vibe64-adapters/src/server/workflowCommandTerminal/commitPush.js +4 -22
- package/node_modules/@local/vibe64-adapters/src/server/workflowCommandTerminal/factMetadata.js +21 -20
- package/node_modules/@local/vibe64-adapters/src/server/workflowCommandTerminal/issuePr.js +27 -4
- package/node_modules/@local/vibe64-adapters/src/server/workflowCommandTerminal/mergeSync.js +65 -8
- package/node_modules/@local/vibe64-adapters/src/server/workflowCommandTerminal/worktreeDependencies.js +12 -25
- package/node_modules/@local/vibe64-adapters/src/server/workflowSessionActions.js +77 -20
- package/node_modules/@local/vibe64-core/src/server/terminalWebSocketRoutes.js +14 -5
- package/node_modules/@local/vibe64-project/src/server/actions.js +21 -0
- package/node_modules/@local/vibe64-project/src/server/registerRoutes.js +6 -0
- package/node_modules/@local/vibe64-project/src/server/service.js +125 -8
- package/node_modules/@local/vibe64-runtime/src/server/coreProjectTools.js +135 -0
- package/node_modules/@local/vibe64-runtime/src/server/index.js +4 -0
- package/node_modules/@local/vibe64-runtime/src/server/projectToolRegistry.js +434 -0
- package/node_modules/@local/vibe64-runtime/src/server/runtime.js +40 -16
- package/node_modules/@local/vibe64-runtime/src/server/sessionWorktreeState.js +25 -0
- package/node_modules/@local/vibe64-runtime/src/server/terminalFailureFixRequest.js +112 -0
- package/node_modules/@local/vibe64-runtime/src/server/workflowArtifacts.js +2 -2
- package/node_modules/@local/vibe64-runtime/src/server/workflowDefinitionBuilders.js +1 -0
- package/node_modules/@local/vibe64-runtime/src/server/workflowDefinitionComposers.js +192 -0
- package/node_modules/@local/vibe64-runtime/src/server/workflowMachine.js +5 -0
- package/node_modules/@local/vibe64-runtime/src/server/workflowModules/coreCoding.js +1309 -419
- package/node_modules/@local/vibe64-runtime/src/server/workflowModules/coreLifecycle.js +540 -358
- package/node_modules/@local/vibe64-runtime/src/server/workflowModules/coreMaintenance.js +5 -26
- package/node_modules/@local/vibe64-runtime/src/server/workflowPresentation.js +153 -26
- package/node_modules/@local/vibe64-runtime/src/server/workflowStepMachineHelpers.js +63 -10
- package/node_modules/@local/vibe64-runtime/src/server/workflowStepMachines.js +63 -2
- package/node_modules/@local/vibe64-sessions/src/server/inputSchemas.js +5 -0
- package/node_modules/@local/vibe64-sessions/src/server/service.js +8 -9
- package/node_modules/@local/vibe64-terminals/src/server/actions.js +65 -0
- package/node_modules/@local/vibe64-terminals/src/server/codexTerminal.js +608 -23
- package/node_modules/@local/vibe64-terminals/src/server/commandTerminal.js +261 -4
- package/node_modules/@local/vibe64-terminals/src/server/fixCodexJobs.js +420 -0
- package/node_modules/@local/vibe64-terminals/src/server/inputSchemas.js +240 -0
- package/node_modules/@local/vibe64-terminals/src/server/launchTargetTerminal.js +2 -0
- package/node_modules/@local/vibe64-terminals/src/server/registerRoutes.js +226 -0
- package/node_modules/@local/vibe64-terminals/src/server/service.js +140 -1
- package/node_modules/@local/vibe64-terminals/src/server/targetToolchainTerminal.js +1 -1
- package/node_modules/@local/vibe64-terminals/src/server/terminalShared.js +34 -0
- package/node_modules/node-pty/build/Makefile +369 -0
- package/node_modules/node-pty/build/Release/pty.node +0 -0
- package/node_modules/node-pty/build/binding.Makefile +6 -0
- package/node_modules/node-pty/build/config.gypi +440 -0
- package/node_modules/node-pty/build/pty.target.mk +166 -0
- package/node_modules/node-pty/node-addon-api/node_addon_api.Makefile +6 -0
- package/node_modules/node-pty/node-addon-api/node_addon_api.target.mk +104 -0
- package/node_modules/node-pty/node-addon-api/node_addon_api_except.target.mk +108 -0
- package/node_modules/node-pty/node-addon-api/node_addon_api_maybe.target.mk +104 -0
- package/node_modules/which/CHANGELOG.md +166 -0
- package/package.json +2 -2
- package/packages/setup-doctor-core/src/server/doctorToolchain.js +4 -0
- package/packages/studio-terminal-core/src/server/gitGithubTransport.js +33 -0
- package/packages/studio-terminal-core/src/server/index.js +1 -0
- package/packages/studio-terminal-core/src/server/terminalSessions.js +51 -1
- package/packages/vibe64-adapters/src/server/adapter.js +4 -0
- package/packages/vibe64-adapters/src/server/adapters/laravel/adapter.js +5 -0
- package/packages/vibe64-adapters/src/server/adapters/laravel/databaseRuntime.js +50 -0
- package/packages/vibe64-adapters/src/server/configStore.js +22 -1
- package/packages/vibe64-adapters/src/server/systemPrompts/agent_conversation.txt +0 -2
- package/packages/vibe64-adapters/src/server/systemPrompts/draft_issue.txt +18 -0
- package/packages/vibe64-adapters/src/server/systemPrompts/make_plan.txt +14 -2
- package/packages/vibe64-adapters/src/server/systemPrompts/prepare_for_merge.txt +2 -0
- package/packages/vibe64-adapters/src/server/systemPrompts/resolve_pull_request.txt +1 -0
- package/packages/vibe64-adapters/src/server/systemPrompts/run_deep_ui_check.txt +7 -3
- package/packages/vibe64-adapters/src/server/workflowCommandTerminal/commitPush.js +4 -22
- package/packages/vibe64-adapters/src/server/workflowCommandTerminal/factMetadata.js +21 -20
- package/packages/vibe64-adapters/src/server/workflowCommandTerminal/issuePr.js +27 -4
- package/packages/vibe64-adapters/src/server/workflowCommandTerminal/mergeSync.js +65 -8
- package/packages/vibe64-adapters/src/server/workflowCommandTerminal/worktreeDependencies.js +12 -25
- package/packages/vibe64-adapters/src/server/workflowSessionActions.js +77 -20
- package/packages/vibe64-core/src/server/terminalWebSocketRoutes.js +14 -5
- package/packages/vibe64-project/src/server/actions.js +21 -0
- package/packages/vibe64-project/src/server/registerRoutes.js +6 -0
- package/packages/vibe64-project/src/server/service.js +125 -8
- package/packages/vibe64-runtime/src/server/coreProjectTools.js +135 -0
- package/packages/vibe64-runtime/src/server/index.js +4 -0
- package/packages/vibe64-runtime/src/server/projectToolRegistry.js +434 -0
- package/packages/vibe64-runtime/src/server/runtime.js +40 -16
- package/packages/vibe64-runtime/src/server/sessionWorktreeState.js +25 -0
- package/packages/vibe64-runtime/src/server/terminalFailureFixRequest.js +112 -0
- package/packages/vibe64-runtime/src/server/workflowArtifacts.js +2 -2
- package/packages/vibe64-runtime/src/server/workflowDefinitionBuilders.js +1 -0
- package/packages/vibe64-runtime/src/server/workflowDefinitionComposers.js +192 -0
- package/packages/vibe64-runtime/src/server/workflowMachine.js +5 -0
- package/packages/vibe64-runtime/src/server/workflowModules/coreCoding.js +1309 -419
- package/packages/vibe64-runtime/src/server/workflowModules/coreLifecycle.js +540 -358
- package/packages/vibe64-runtime/src/server/workflowModules/coreMaintenance.js +5 -26
- package/packages/vibe64-runtime/src/server/workflowPresentation.js +153 -26
- package/packages/vibe64-runtime/src/server/workflowStepMachineHelpers.js +63 -10
- package/packages/vibe64-runtime/src/server/workflowStepMachines.js +63 -2
- package/packages/vibe64-sessions/src/server/inputSchemas.js +5 -0
- package/packages/vibe64-sessions/src/server/service.js +8 -9
- package/packages/vibe64-terminals/src/server/actions.js +65 -0
- package/packages/vibe64-terminals/src/server/codexTerminal.js +608 -23
- package/packages/vibe64-terminals/src/server/commandTerminal.js +261 -4
- package/packages/vibe64-terminals/src/server/fixCodexJobs.js +420 -0
- package/packages/vibe64-terminals/src/server/inputSchemas.js +240 -0
- package/packages/vibe64-terminals/src/server/launchTargetTerminal.js +2 -0
- package/packages/vibe64-terminals/src/server/registerRoutes.js +226 -0
- package/packages/vibe64-terminals/src/server/service.js +140 -1
- package/packages/vibe64-terminals/src/server/targetToolchainTerminal.js +1 -1
- package/packages/vibe64-terminals/src/server/terminalShared.js +34 -0
- package/dist/assets/ProjectTypeGate-DStq4W4X.js +0 -1
- package/dist/assets/ProjectTypeGate-Dh2ycSoM.css +0 -1
- package/dist/assets/history-HQ_XliX2.js +0 -1
- package/dist/assets/home-B89EbUmA.js +0 -1
- package/dist/assets/index-16P0GeGq.js +0 -134
- package/dist/assets/index-eMhOXhf_.css +0 -1
- package/dist/assets/useStudioTerminal-D9TNb50w.js +0 -1
- package/dist/assets/vibe64SessionPanelModel-DvY_IbW3.js +0 -1
|
@@ -1,10 +1,17 @@
|
|
|
1
1
|
import {
|
|
2
2
|
codexAttachmentInputValidator,
|
|
3
3
|
commandTerminalInputValidator,
|
|
4
|
+
fixCodexReportInputValidator,
|
|
4
5
|
launchTargetInputValidator,
|
|
6
|
+
projectToolFixInputValidator,
|
|
7
|
+
projectToolRunInputValidator,
|
|
8
|
+
sessionTerminalFixInputValidator,
|
|
5
9
|
shellTerminalInputValidator
|
|
6
10
|
} from "./inputSchemas.js";
|
|
7
11
|
import {
|
|
12
|
+
ACTION_RUN_PROJECT_TOOL,
|
|
13
|
+
ACTION_START_PROJECT_TOOL_FIX,
|
|
14
|
+
ACTION_START_SESSION_TERMINAL_FIX,
|
|
8
15
|
ACTION_OPEN_LAUNCH_TARGET,
|
|
9
16
|
ACTION_START_COMMAND_TERMINAL,
|
|
10
17
|
ACTION_START_LAUNCH_TARGET_TERMINAL,
|
|
@@ -39,6 +46,61 @@ function registerRoutes(
|
|
|
39
46
|
});
|
|
40
47
|
const terminalService = () => getTerminalService(app);
|
|
41
48
|
|
|
49
|
+
routes.serviceRoute("GET", "/codex-terminal", {
|
|
50
|
+
summary: "Read global Vibe64 Codex terminal status."
|
|
51
|
+
}, () => {
|
|
52
|
+
return terminalService().globalCodexTerminalState();
|
|
53
|
+
});
|
|
54
|
+
|
|
55
|
+
routes.serviceRoute("POST", "/codex-terminal", {
|
|
56
|
+
summary: "Start a global Vibe64 Codex terminal."
|
|
57
|
+
}, () => {
|
|
58
|
+
return terminalService().startGlobalCodexTerminal();
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
routes.actionRoute("POST", "/tools/:toolId/run", {
|
|
62
|
+
actionId: ACTION_RUN_PROJECT_TOOL,
|
|
63
|
+
body: projectToolRunInputValidator,
|
|
64
|
+
buildInput(request) {
|
|
65
|
+
return {
|
|
66
|
+
...routes.requestBody(request),
|
|
67
|
+
toolId: request.params.toolId
|
|
68
|
+
};
|
|
69
|
+
},
|
|
70
|
+
summary: "Run a Vibe64 project tool."
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
routes.actionRoute("POST", "/tools/:toolId/fix", {
|
|
74
|
+
actionId: ACTION_START_PROJECT_TOOL_FIX,
|
|
75
|
+
body: projectToolFixInputValidator,
|
|
76
|
+
buildInput(request) {
|
|
77
|
+
return {
|
|
78
|
+
...routes.requestBody(request),
|
|
79
|
+
toolId: request.params.toolId
|
|
80
|
+
};
|
|
81
|
+
},
|
|
82
|
+
summary: "Start an ephemeral Fix Codex job for a Vibe64 project tool failure."
|
|
83
|
+
});
|
|
84
|
+
|
|
85
|
+
routes.serviceRoute("POST", "/fix-codex-jobs/:jobId/report", {
|
|
86
|
+
body: fixCodexReportInputValidator,
|
|
87
|
+
summary: "Report an ephemeral Fix Codex job result."
|
|
88
|
+
}, (request) => {
|
|
89
|
+
return terminalService().reportFixCodexJob(request.params.jobId, routes.requestBody(request));
|
|
90
|
+
});
|
|
91
|
+
|
|
92
|
+
routes.actionRoute("POST", "/sessions/:sessionId/terminal-failure-fix", {
|
|
93
|
+
actionId: ACTION_START_SESSION_TERMINAL_FIX,
|
|
94
|
+
body: sessionTerminalFixInputValidator,
|
|
95
|
+
buildInput(request) {
|
|
96
|
+
return {
|
|
97
|
+
...routes.requestBody(request),
|
|
98
|
+
sessionId: request.params.sessionId
|
|
99
|
+
};
|
|
100
|
+
},
|
|
101
|
+
summary: "Start an ephemeral Fix Codex job for a Vibe64 session terminal failure."
|
|
102
|
+
});
|
|
103
|
+
|
|
42
104
|
routes.serviceRoute("GET", "/sessions/:sessionId/launch-targets", {
|
|
43
105
|
summary: "Read Vibe64 launch target status."
|
|
44
106
|
}, (request) => {
|
|
@@ -110,6 +172,30 @@ function registerRoutes(
|
|
|
110
172
|
closeSummary: "Close an Vibe64 Codex terminal."
|
|
111
173
|
});
|
|
112
174
|
|
|
175
|
+
registerGlobalTerminalSnapshotRoutes(routes, {
|
|
176
|
+
close: (terminalSessionId) => terminalService().closeGlobalCodexTerminal(terminalSessionId),
|
|
177
|
+
path: "/codex-terminal/:terminalSessionId",
|
|
178
|
+
read: (terminalSessionId) => terminalService().readGlobalCodexTerminal(terminalSessionId),
|
|
179
|
+
readSummary: "Read a global Vibe64 Codex terminal snapshot.",
|
|
180
|
+
closeSummary: "Close a global Vibe64 Codex terminal."
|
|
181
|
+
});
|
|
182
|
+
|
|
183
|
+
registerToolTerminalSnapshotRoutes(routes, {
|
|
184
|
+
close: (toolId, terminalSessionId) => terminalService().closeProjectToolTerminal(toolId, terminalSessionId),
|
|
185
|
+
path: "/tools/:toolId/terminal/:terminalSessionId",
|
|
186
|
+
read: (toolId, terminalSessionId) => terminalService().readProjectToolTerminal(toolId, terminalSessionId),
|
|
187
|
+
readSummary: "Read a Vibe64 project tool terminal snapshot.",
|
|
188
|
+
closeSummary: "Close a Vibe64 project tool terminal."
|
|
189
|
+
});
|
|
190
|
+
|
|
191
|
+
registerFixTerminalSnapshotRoutes(routes, {
|
|
192
|
+
close: (jobId, terminalSessionId) => terminalService().closeFixCodexTerminal(jobId, terminalSessionId),
|
|
193
|
+
path: "/fix-codex-jobs/:jobId/terminal/:terminalSessionId",
|
|
194
|
+
read: (jobId, terminalSessionId) => terminalService().readFixCodexTerminal(jobId, terminalSessionId),
|
|
195
|
+
readSummary: "Read a Fix Codex terminal snapshot.",
|
|
196
|
+
closeSummary: "Close a Fix Codex terminal."
|
|
197
|
+
});
|
|
198
|
+
|
|
113
199
|
registerTerminalSnapshotRoutes(routes, {
|
|
114
200
|
close: (sessionId, terminalSessionId) => terminalService().closeCommandTerminal(sessionId, terminalSessionId),
|
|
115
201
|
path: "/sessions/:sessionId/command-terminal/:terminalSessionId",
|
|
@@ -151,6 +237,26 @@ function terminalRouteInput(request) {
|
|
|
151
237
|
};
|
|
152
238
|
}
|
|
153
239
|
|
|
240
|
+
function globalTerminalRouteInput(request) {
|
|
241
|
+
return {
|
|
242
|
+
terminalSessionId: request.params.terminalSessionId
|
|
243
|
+
};
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
function toolTerminalRouteInput(request) {
|
|
247
|
+
return {
|
|
248
|
+
terminalSessionId: request.params.terminalSessionId,
|
|
249
|
+
toolId: request.params.toolId
|
|
250
|
+
};
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
function fixTerminalRouteInput(request) {
|
|
254
|
+
return {
|
|
255
|
+
jobId: request.params.jobId,
|
|
256
|
+
terminalSessionId: request.params.terminalSessionId
|
|
257
|
+
};
|
|
258
|
+
}
|
|
259
|
+
|
|
154
260
|
function registerTerminalSnapshotRoutes(routes, {
|
|
155
261
|
close,
|
|
156
262
|
closeSummary,
|
|
@@ -176,7 +282,127 @@ function registerTerminalSnapshotRoutes(routes, {
|
|
|
176
282
|
});
|
|
177
283
|
}
|
|
178
284
|
|
|
285
|
+
function registerGlobalTerminalSnapshotRoutes(routes, {
|
|
286
|
+
close,
|
|
287
|
+
closeSummary,
|
|
288
|
+
path,
|
|
289
|
+
read,
|
|
290
|
+
readSummary
|
|
291
|
+
}) {
|
|
292
|
+
routes.serviceRoute("GET", path, {
|
|
293
|
+
failureStatus: 404,
|
|
294
|
+
successStatus: 200,
|
|
295
|
+
summary: readSummary
|
|
296
|
+
}, (request) => {
|
|
297
|
+
const input = globalTerminalRouteInput(request);
|
|
298
|
+
return read(input.terminalSessionId);
|
|
299
|
+
});
|
|
300
|
+
|
|
301
|
+
routes.serviceRoute("DELETE", path, {
|
|
302
|
+
statusCode: 200,
|
|
303
|
+
summary: closeSummary
|
|
304
|
+
}, (request) => {
|
|
305
|
+
const input = globalTerminalRouteInput(request);
|
|
306
|
+
return close(input.terminalSessionId);
|
|
307
|
+
});
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
function registerToolTerminalSnapshotRoutes(routes, {
|
|
311
|
+
close,
|
|
312
|
+
closeSummary,
|
|
313
|
+
path,
|
|
314
|
+
read,
|
|
315
|
+
readSummary
|
|
316
|
+
}) {
|
|
317
|
+
routes.serviceRoute("GET", path, {
|
|
318
|
+
failureStatus: 404,
|
|
319
|
+
successStatus: 200,
|
|
320
|
+
summary: readSummary
|
|
321
|
+
}, (request) => {
|
|
322
|
+
const input = toolTerminalRouteInput(request);
|
|
323
|
+
return read(input.toolId, input.terminalSessionId);
|
|
324
|
+
});
|
|
325
|
+
|
|
326
|
+
routes.serviceRoute("DELETE", path, {
|
|
327
|
+
statusCode: 200,
|
|
328
|
+
summary: closeSummary
|
|
329
|
+
}, (request) => {
|
|
330
|
+
const input = toolTerminalRouteInput(request);
|
|
331
|
+
return close(input.toolId, input.terminalSessionId);
|
|
332
|
+
});
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
function registerFixTerminalSnapshotRoutes(routes, {
|
|
336
|
+
close,
|
|
337
|
+
closeSummary,
|
|
338
|
+
path,
|
|
339
|
+
read,
|
|
340
|
+
readSummary
|
|
341
|
+
}) {
|
|
342
|
+
routes.serviceRoute("GET", path, {
|
|
343
|
+
failureStatus: 404,
|
|
344
|
+
successStatus: 200,
|
|
345
|
+
summary: readSummary
|
|
346
|
+
}, (request) => {
|
|
347
|
+
const input = fixTerminalRouteInput(request);
|
|
348
|
+
return read(input.jobId, input.terminalSessionId);
|
|
349
|
+
});
|
|
350
|
+
|
|
351
|
+
routes.serviceRoute("DELETE", path, {
|
|
352
|
+
statusCode: 200,
|
|
353
|
+
summary: closeSummary
|
|
354
|
+
}, (request) => {
|
|
355
|
+
const input = fixTerminalRouteInput(request);
|
|
356
|
+
return close(input.jobId, input.terminalSessionId);
|
|
357
|
+
});
|
|
358
|
+
}
|
|
359
|
+
|
|
179
360
|
function registerVibe64TerminalWebSocketRoutes(app, routes) {
|
|
361
|
+
registerTerminalWebSocketRoute(app, {
|
|
362
|
+
routePath: `${routes.routeBase}/codex-terminal/:terminalSessionId/ws`,
|
|
363
|
+
serviceId: VIBE64_TERMINALS_SERVICE,
|
|
364
|
+
serviceUnavailableMessage: VIBE64_TERMINALS_UNAVAILABLE,
|
|
365
|
+
subscribe(service, { subscriber, terminalSessionId }) {
|
|
366
|
+
return service.subscribeGlobalCodexTerminal(terminalSessionId, subscriber);
|
|
367
|
+
},
|
|
368
|
+
resize(service, { cols, rows, terminalSessionId }) {
|
|
369
|
+
return service.resizeGlobalCodexTerminal(terminalSessionId, { cols, rows });
|
|
370
|
+
},
|
|
371
|
+
write(service, { data, terminalSessionId }) {
|
|
372
|
+
return service.writeGlobalCodexTerminal(terminalSessionId, data);
|
|
373
|
+
}
|
|
374
|
+
});
|
|
375
|
+
|
|
376
|
+
registerTerminalWebSocketRoute(app, {
|
|
377
|
+
routePath: `${routes.routeBase}/fix-codex-jobs/:jobId/terminal/:terminalSessionId/ws`,
|
|
378
|
+
serviceId: VIBE64_TERMINALS_SERVICE,
|
|
379
|
+
serviceUnavailableMessage: VIBE64_TERMINALS_UNAVAILABLE,
|
|
380
|
+
subscribe(service, { jobId, subscriber, terminalSessionId }) {
|
|
381
|
+
return service.subscribeFixCodexTerminal(jobId, terminalSessionId, subscriber);
|
|
382
|
+
},
|
|
383
|
+
resize(service, { cols, jobId, rows, terminalSessionId }) {
|
|
384
|
+
return service.resizeFixCodexTerminal(jobId, terminalSessionId, { cols, rows });
|
|
385
|
+
},
|
|
386
|
+
write(service, { data, jobId, terminalSessionId }) {
|
|
387
|
+
return service.writeFixCodexTerminal(jobId, terminalSessionId, data);
|
|
388
|
+
}
|
|
389
|
+
});
|
|
390
|
+
|
|
391
|
+
registerTerminalWebSocketRoute(app, {
|
|
392
|
+
routePath: `${routes.routeBase}/tools/:toolId/terminal/:terminalSessionId/ws`,
|
|
393
|
+
serviceId: VIBE64_TERMINALS_SERVICE,
|
|
394
|
+
serviceUnavailableMessage: VIBE64_TERMINALS_UNAVAILABLE,
|
|
395
|
+
subscribe(service, { subscriber, terminalSessionId, toolId }) {
|
|
396
|
+
return service.subscribeProjectToolTerminal(toolId, terminalSessionId, subscriber);
|
|
397
|
+
},
|
|
398
|
+
resize(service, { cols, rows, terminalSessionId, toolId }) {
|
|
399
|
+
return service.resizeProjectToolTerminal(toolId, terminalSessionId, { cols, rows });
|
|
400
|
+
},
|
|
401
|
+
write(service, { data, terminalSessionId, toolId }) {
|
|
402
|
+
return service.writeProjectToolTerminal(toolId, terminalSessionId, data);
|
|
403
|
+
}
|
|
404
|
+
});
|
|
405
|
+
|
|
180
406
|
registerTerminalWebSocketRoute(app, {
|
|
181
407
|
routePath: `${routes.routeBase}/sessions/:sessionId/codex-terminal/:terminalSessionId/ws`,
|
|
182
408
|
serviceId: VIBE64_TERMINALS_SERVICE,
|
|
@@ -1,7 +1,18 @@
|
|
|
1
1
|
import { createCodexTerminalController } from "./codexTerminal.js";
|
|
2
|
-
import {
|
|
2
|
+
import {
|
|
3
|
+
createCommandTerminalController,
|
|
4
|
+
createProjectToolTerminalController
|
|
5
|
+
} from "./commandTerminal.js";
|
|
3
6
|
import { createLaunchTargetTerminalController } from "./launchTargetTerminal.js";
|
|
4
7
|
import { createShellTerminalController } from "./shellTerminal.js";
|
|
8
|
+
import {
|
|
9
|
+
projectToolFailureFixPrompt,
|
|
10
|
+
sessionTerminalFailureFixPrompt
|
|
11
|
+
} from "@local/vibe64-runtime/server/terminalFailureFixRequest";
|
|
12
|
+
import {
|
|
13
|
+
terminalTargetRoot,
|
|
14
|
+
terminalWorktreePath
|
|
15
|
+
} from "./terminalShared.js";
|
|
5
16
|
|
|
6
17
|
function createService({
|
|
7
18
|
projectService,
|
|
@@ -33,6 +44,9 @@ function createService({
|
|
|
33
44
|
projectService,
|
|
34
45
|
publishSessionChanged: publishSessionChanged.launchTarget
|
|
35
46
|
});
|
|
47
|
+
const projectTool = createProjectToolTerminalController({
|
|
48
|
+
projectService
|
|
49
|
+
});
|
|
36
50
|
const shell = createShellTerminalController({
|
|
37
51
|
projectService
|
|
38
52
|
});
|
|
@@ -65,10 +79,22 @@ function createService({
|
|
|
65
79
|
return codex.closeTerminal(sessionId, terminalSessionId);
|
|
66
80
|
},
|
|
67
81
|
|
|
82
|
+
closeGlobalCodexTerminal(terminalSessionId) {
|
|
83
|
+
return codex.closeGlobalTerminal(terminalSessionId);
|
|
84
|
+
},
|
|
85
|
+
|
|
86
|
+
closeFixCodexTerminal(jobId, terminalSessionId) {
|
|
87
|
+
return codex.closeFixTerminal(jobId, terminalSessionId);
|
|
88
|
+
},
|
|
89
|
+
|
|
68
90
|
closeCommandTerminal(sessionId, terminalSessionId) {
|
|
69
91
|
return command.closeTerminal(sessionId, terminalSessionId);
|
|
70
92
|
},
|
|
71
93
|
|
|
94
|
+
closeProjectToolTerminal(toolId, terminalSessionId) {
|
|
95
|
+
return projectTool.closeTerminal(toolId, terminalSessionId);
|
|
96
|
+
},
|
|
97
|
+
|
|
72
98
|
closeLaunchTargetTerminal(sessionId, terminalSessionId) {
|
|
73
99
|
return launchTarget.closeTerminal(sessionId, terminalSessionId);
|
|
74
100
|
},
|
|
@@ -81,6 +107,10 @@ function createService({
|
|
|
81
107
|
return codex.injectCodexPrompt(sessionId, handoff);
|
|
82
108
|
},
|
|
83
109
|
|
|
110
|
+
injectGlobalCodexPrompt(handoff = {}) {
|
|
111
|
+
return codex.injectGlobalCodexPrompt(handoff);
|
|
112
|
+
},
|
|
113
|
+
|
|
84
114
|
ensureCodexThread(sessionId) {
|
|
85
115
|
return codex.ensureThread(sessionId);
|
|
86
116
|
},
|
|
@@ -89,6 +119,18 @@ function createService({
|
|
|
89
119
|
return codex.terminalState(sessionId);
|
|
90
120
|
},
|
|
91
121
|
|
|
122
|
+
globalCodexTerminalState() {
|
|
123
|
+
return codex.globalTerminalState();
|
|
124
|
+
},
|
|
125
|
+
|
|
126
|
+
readGlobalCodexTerminal(terminalSessionId) {
|
|
127
|
+
return codex.readGlobalTerminal(terminalSessionId);
|
|
128
|
+
},
|
|
129
|
+
|
|
130
|
+
readFixCodexTerminal(jobId, terminalSessionId) {
|
|
131
|
+
return codex.readFixTerminal(jobId, terminalSessionId);
|
|
132
|
+
},
|
|
133
|
+
|
|
92
134
|
readCodexTerminal(sessionId, terminalSessionId) {
|
|
93
135
|
return codex.readTerminal(sessionId, terminalSessionId);
|
|
94
136
|
},
|
|
@@ -97,6 +139,10 @@ function createService({
|
|
|
97
139
|
return command.readTerminal(sessionId, terminalSessionId);
|
|
98
140
|
},
|
|
99
141
|
|
|
142
|
+
readProjectToolTerminal(toolId, terminalSessionId) {
|
|
143
|
+
return projectTool.readTerminal(toolId, terminalSessionId);
|
|
144
|
+
},
|
|
145
|
+
|
|
100
146
|
readLaunchTargetTerminal(sessionId, terminalSessionId) {
|
|
101
147
|
return launchTarget.readTerminal(sessionId, terminalSessionId);
|
|
102
148
|
},
|
|
@@ -117,10 +163,67 @@ function createService({
|
|
|
117
163
|
return codex.startTerminal(sessionId);
|
|
118
164
|
},
|
|
119
165
|
|
|
166
|
+
startGlobalCodexTerminal() {
|
|
167
|
+
return codex.startGlobalTerminal();
|
|
168
|
+
},
|
|
169
|
+
|
|
170
|
+
async startProjectToolFixJob(toolId, input = {}) {
|
|
171
|
+
const targetRoot = projectService.targetRoot || "";
|
|
172
|
+
return codex.startFixJob({
|
|
173
|
+
prompt: projectToolFailureFixPrompt({
|
|
174
|
+
...input,
|
|
175
|
+
targetRoot,
|
|
176
|
+
toolId: input.toolId || toolId,
|
|
177
|
+
toolLabel: input.toolLabel || input.actionLabel
|
|
178
|
+
}),
|
|
179
|
+
scope: "project",
|
|
180
|
+
subject: input.toolLabel || input.actionLabel || toolId,
|
|
181
|
+
targetRoot
|
|
182
|
+
});
|
|
183
|
+
},
|
|
184
|
+
|
|
185
|
+
async startSessionTerminalFixJob(sessionId, input = {}) {
|
|
186
|
+
const runtime = await projectService.createRuntime();
|
|
187
|
+
const session = await runtime.getSession(sessionId);
|
|
188
|
+
const targetRoot = terminalTargetRoot(session, projectService);
|
|
189
|
+
const worktreePath = terminalWorktreePath(session);
|
|
190
|
+
return codex.startFixJob({
|
|
191
|
+
prompt: sessionTerminalFailureFixPrompt({
|
|
192
|
+
...input,
|
|
193
|
+
currentStep: input.currentStep || session.currentStep || "",
|
|
194
|
+
sessionId: input.sessionId || sessionId,
|
|
195
|
+
stepStatus: input.stepStatus || session.stepMachine?.status || "",
|
|
196
|
+
targetRoot,
|
|
197
|
+
worktreePath
|
|
198
|
+
}),
|
|
199
|
+
scope: "session",
|
|
200
|
+
subject: input.actionLabel || input.launchTargetLabel || input.actionId || input.launchTargetId || sessionId,
|
|
201
|
+
targetRoot,
|
|
202
|
+
workdir: worktreePath || targetRoot
|
|
203
|
+
});
|
|
204
|
+
},
|
|
205
|
+
|
|
206
|
+
reportFixCodexJob(jobId, input = {}) {
|
|
207
|
+
return codex.reportFixJob(jobId, input);
|
|
208
|
+
},
|
|
209
|
+
|
|
120
210
|
startCommandTerminal(sessionId, input = {}) {
|
|
121
211
|
return command.startTerminal(sessionId, input);
|
|
122
212
|
},
|
|
123
213
|
|
|
214
|
+
async runProjectTool(toolId, input = {}) {
|
|
215
|
+
const run = await projectService.prepareProjectToolRun(toolId, input);
|
|
216
|
+
if (run?.ok === false) {
|
|
217
|
+
return run;
|
|
218
|
+
}
|
|
219
|
+
if (run.type === "prompt") {
|
|
220
|
+
return codex.injectGlobalCodexPrompt({
|
|
221
|
+
prompt: run.prompt
|
|
222
|
+
});
|
|
223
|
+
}
|
|
224
|
+
return projectTool.startPreparedRun(toolId, run);
|
|
225
|
+
},
|
|
226
|
+
|
|
124
227
|
startLaunchTargetTerminal(sessionId, input = {}) {
|
|
125
228
|
return launchTarget.startTerminal(sessionId, input);
|
|
126
229
|
},
|
|
@@ -137,10 +240,22 @@ function createService({
|
|
|
137
240
|
return codex.subscribeTerminal(sessionId, terminalSessionId, subscriber);
|
|
138
241
|
},
|
|
139
242
|
|
|
243
|
+
subscribeGlobalCodexTerminal(terminalSessionId, subscriber) {
|
|
244
|
+
return codex.subscribeGlobalTerminal(terminalSessionId, subscriber);
|
|
245
|
+
},
|
|
246
|
+
|
|
247
|
+
subscribeFixCodexTerminal(jobId, terminalSessionId, subscriber) {
|
|
248
|
+
return codex.subscribeFixTerminal(jobId, terminalSessionId, subscriber);
|
|
249
|
+
},
|
|
250
|
+
|
|
140
251
|
subscribeCommandTerminal(sessionId, terminalSessionId, subscriber) {
|
|
141
252
|
return command.subscribeTerminal(sessionId, terminalSessionId, subscriber);
|
|
142
253
|
},
|
|
143
254
|
|
|
255
|
+
subscribeProjectToolTerminal(toolId, terminalSessionId, subscriber) {
|
|
256
|
+
return projectTool.subscribeTerminal(toolId, terminalSessionId, subscriber);
|
|
257
|
+
},
|
|
258
|
+
|
|
144
259
|
subscribeLaunchTargetTerminal(sessionId, terminalSessionId, subscriber) {
|
|
145
260
|
return launchTarget.subscribeTerminal(sessionId, terminalSessionId, subscriber);
|
|
146
261
|
},
|
|
@@ -157,18 +272,42 @@ function createService({
|
|
|
157
272
|
return codex.writeTerminal(sessionId, terminalSessionId, data);
|
|
158
273
|
},
|
|
159
274
|
|
|
275
|
+
writeGlobalCodexTerminal(terminalSessionId, data) {
|
|
276
|
+
return codex.writeGlobalTerminal(terminalSessionId, data);
|
|
277
|
+
},
|
|
278
|
+
|
|
279
|
+
writeFixCodexTerminal(jobId, terminalSessionId, data) {
|
|
280
|
+
return codex.writeFixTerminal(jobId, terminalSessionId, data);
|
|
281
|
+
},
|
|
282
|
+
|
|
160
283
|
resizeCodexTerminal(sessionId, terminalSessionId, size) {
|
|
161
284
|
return codex.resizeTerminal(sessionId, terminalSessionId, size);
|
|
162
285
|
},
|
|
163
286
|
|
|
287
|
+
resizeGlobalCodexTerminal(terminalSessionId, size) {
|
|
288
|
+
return codex.resizeGlobalTerminal(terminalSessionId, size);
|
|
289
|
+
},
|
|
290
|
+
|
|
291
|
+
resizeFixCodexTerminal(jobId, terminalSessionId, size) {
|
|
292
|
+
return codex.resizeFixTerminal(jobId, terminalSessionId, size);
|
|
293
|
+
},
|
|
294
|
+
|
|
164
295
|
writeCommandTerminal(sessionId, terminalSessionId, data) {
|
|
165
296
|
return command.writeTerminal(sessionId, terminalSessionId, data);
|
|
166
297
|
},
|
|
167
298
|
|
|
299
|
+
writeProjectToolTerminal(toolId, terminalSessionId, data) {
|
|
300
|
+
return projectTool.writeTerminal(toolId, terminalSessionId, data);
|
|
301
|
+
},
|
|
302
|
+
|
|
168
303
|
resizeCommandTerminal(sessionId, terminalSessionId, size) {
|
|
169
304
|
return command.resizeTerminal(sessionId, terminalSessionId, size);
|
|
170
305
|
},
|
|
171
306
|
|
|
307
|
+
resizeProjectToolTerminal(toolId, terminalSessionId, size) {
|
|
308
|
+
return projectTool.resizeTerminal(toolId, terminalSessionId, size);
|
|
309
|
+
},
|
|
310
|
+
|
|
172
311
|
writeLaunchTargetTerminal(sessionId, terminalSessionId, data) {
|
|
173
312
|
return launchTarget.writeTerminal(sessionId, terminalSessionId, data);
|
|
174
313
|
},
|
|
@@ -69,7 +69,7 @@ function targetToolchainTerminalArgs({
|
|
|
69
69
|
...dockerLabelArgs([
|
|
70
70
|
kind ? studioDockerLabel("kind", kind) : "",
|
|
71
71
|
`${STUDIO_DAEMON_PID_LABEL}=${process.pid}`,
|
|
72
|
-
studioDockerLabel("session", sessionId),
|
|
72
|
+
sessionId ? studioDockerLabel("session", sessionId) : "",
|
|
73
73
|
studioDockerLabel("terminal", terminalId),
|
|
74
74
|
studioDockerLabel("target", stableHash(targetRoot)),
|
|
75
75
|
...extraLabels
|
|
@@ -13,9 +13,12 @@ import {
|
|
|
13
13
|
|
|
14
14
|
const CODEX_TERMINAL_NAMESPACE = "vibe64-codex";
|
|
15
15
|
const CODEX_TERMINAL_NAMESPACE_PREFIX = `${CODEX_TERMINAL_NAMESPACE}:`;
|
|
16
|
+
const GLOBAL_CODEX_TERMINAL_NAMESPACE = "vibe64-global-codex";
|
|
16
17
|
const COMMAND_TERMINAL_NAMESPACE = "vibe64-command";
|
|
17
18
|
const LAUNCH_TARGET_TERMINAL_NAMESPACE = "vibe64-launch-target";
|
|
18
19
|
const SHELL_TERMINAL_NAMESPACE = "vibe64-shell";
|
|
20
|
+
const TOOL_TERMINAL_NAMESPACE = "vibe64-tool";
|
|
21
|
+
const FIX_CODEX_TERMINAL_NAMESPACE = "vibe64-fix-codex";
|
|
19
22
|
|
|
20
23
|
function vibe64Result(operation) {
|
|
21
24
|
return sharedVibe64Result(operation, {
|
|
@@ -28,10 +31,22 @@ function codexTerminalNamespace(sessionId) {
|
|
|
28
31
|
return `${CODEX_TERMINAL_NAMESPACE}:${String(sessionId || "")}`;
|
|
29
32
|
}
|
|
30
33
|
|
|
34
|
+
function globalCodexTerminalNamespace() {
|
|
35
|
+
return GLOBAL_CODEX_TERMINAL_NAMESPACE;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
function fixCodexTerminalNamespace(jobId) {
|
|
39
|
+
return `${FIX_CODEX_TERMINAL_NAMESPACE}:${String(jobId || "")}`;
|
|
40
|
+
}
|
|
41
|
+
|
|
31
42
|
function commandTerminalNamespace(sessionId) {
|
|
32
43
|
return `${COMMAND_TERMINAL_NAMESPACE}:${String(sessionId || "")}`;
|
|
33
44
|
}
|
|
34
45
|
|
|
46
|
+
function toolTerminalNamespace(toolId) {
|
|
47
|
+
return `${TOOL_TERMINAL_NAMESPACE}:${String(toolId || "")}`;
|
|
48
|
+
}
|
|
49
|
+
|
|
35
50
|
function launchTargetTerminalNamespace(sessionId) {
|
|
36
51
|
return `${LAUNCH_TARGET_TERMINAL_NAMESPACE}:${String(sessionId || "")}`;
|
|
37
52
|
}
|
|
@@ -40,6 +55,21 @@ function shellTerminalNamespace(sessionId) {
|
|
|
40
55
|
return `${SHELL_TERMINAL_NAMESPACE}:${String(sessionId || "")}`;
|
|
41
56
|
}
|
|
42
57
|
|
|
58
|
+
function commandInvocation({
|
|
59
|
+
args = [],
|
|
60
|
+
command = ""
|
|
61
|
+
} = {}) {
|
|
62
|
+
const normalizedCommand = String(command || "").trim();
|
|
63
|
+
if (!normalizedCommand) {
|
|
64
|
+
return "";
|
|
65
|
+
}
|
|
66
|
+
const normalizedArgs = Array.isArray(args) ? args : [];
|
|
67
|
+
return [
|
|
68
|
+
normalizedCommand,
|
|
69
|
+
...normalizedArgs.map((arg) => String(arg))
|
|
70
|
+
].map(shellQuote).join(" ");
|
|
71
|
+
}
|
|
72
|
+
|
|
43
73
|
async function directoryExists(filePath = "") {
|
|
44
74
|
try {
|
|
45
75
|
return (await stat(filePath)).isDirectory();
|
|
@@ -97,14 +127,18 @@ export {
|
|
|
97
127
|
CODEX_TERMINAL_NAMESPACE_PREFIX,
|
|
98
128
|
vibe64Result,
|
|
99
129
|
codexTerminalNamespace,
|
|
130
|
+
commandInvocation,
|
|
100
131
|
commandTerminalNamespace,
|
|
101
132
|
directoryExists,
|
|
133
|
+
fixCodexTerminalNamespace,
|
|
134
|
+
globalCodexTerminalNamespace,
|
|
102
135
|
launchTargetTerminalNamespace,
|
|
103
136
|
pathInsideOrEqual,
|
|
104
137
|
shellTerminalNamespace,
|
|
105
138
|
sessionTerminalCwd,
|
|
106
139
|
terminalTargetRoot,
|
|
107
140
|
terminalWorktreePath,
|
|
141
|
+
toolTerminalNamespace,
|
|
108
142
|
dockerCommand,
|
|
109
143
|
normalizePlainObject,
|
|
110
144
|
shellQuote,
|