@mrpatronz/nexusflow 2.4.1 → 2.5.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/commands/isolate.d.ts +12 -0
- package/dist/commands/isolate.d.ts.map +1 -0
- package/dist/commands/isolate.js +78 -0
- package/dist/commands/isolate.js.map +1 -0
- package/dist/commands/isolate.test.d.ts +2 -0
- package/dist/commands/isolate.test.d.ts.map +1 -0
- package/dist/commands/isolate.test.js +59 -0
- package/dist/commands/isolate.test.js.map +1 -0
- package/dist/commands/ui.d.ts +1 -1
- package/dist/commands/ui.d.ts.map +1 -1
- package/dist/commands/ui.js +26 -6
- package/dist/commands/ui.js.map +1 -1
- package/dist/core/config-schema.d.ts +17 -0
- package/dist/core/config-schema.d.ts.map +1 -0
- package/dist/core/config-schema.js +24 -0
- package/dist/core/config-schema.js.map +1 -0
- package/dist/core/doctor.d.ts.map +1 -1
- package/dist/core/doctor.js +19 -5
- package/dist/core/doctor.js.map +1 -1
- package/dist/core/isolate.d.ts +31 -0
- package/dist/core/isolate.d.ts.map +1 -0
- package/dist/core/isolate.js +175 -0
- package/dist/core/isolate.js.map +1 -0
- package/dist/core/isolate.test.d.ts +2 -0
- package/dist/core/isolate.test.d.ts.map +1 -0
- package/dist/core/isolate.test.js +290 -0
- package/dist/core/isolate.test.js.map +1 -0
- package/dist/core/refresh.d.ts.map +1 -1
- package/dist/core/refresh.js +19 -16
- package/dist/core/refresh.js.map +1 -1
- package/dist/core/sync.d.ts.map +1 -1
- package/dist/core/sync.js +21 -7
- package/dist/core/sync.js.map +1 -1
- package/dist/core/workspace.d.ts +6 -0
- package/dist/core/workspace.d.ts.map +1 -1
- package/dist/core/workspace.js +27 -4
- package/dist/core/workspace.js.map +1 -1
- package/dist/core/worktree.d.ts.map +1 -1
- package/dist/core/worktree.js +7 -0
- package/dist/core/worktree.js.map +1 -1
- package/dist/desktop-server.js +2 -1
- package/dist/desktop-server.js.map +1 -1
- package/dist/generators/base.d.ts.map +1 -1
- package/dist/generators/base.js +13 -5
- package/dist/generators/base.js.map +1 -1
- package/dist/generators/base.test.js +1 -1
- package/dist/generators/base.test.js.map +1 -1
- package/dist/index.js +22 -0
- package/dist/index.js.map +1 -1
- package/dist/mcp/tools.d.ts.map +1 -1
- package/dist/mcp/tools.js +47 -1
- package/dist/mcp/tools.js.map +1 -1
- package/dist/mcp/tools.test.d.ts +2 -0
- package/dist/mcp/tools.test.d.ts.map +1 -0
- package/dist/mcp/tools.test.js +70 -0
- package/dist/mcp/tools.test.js.map +1 -0
- package/dist/orchestration/orchestrator.js +2 -2
- package/dist/orchestration/orchestrator.js.map +1 -1
- package/dist/orchestration/orchestrator.test.js +1 -1
- package/dist/orchestration/orchestrator.test.js.map +1 -1
- package/dist/orchestration/runner.d.ts +5 -1
- package/dist/orchestration/runner.d.ts.map +1 -1
- package/dist/orchestration/runner.js +14 -4
- package/dist/orchestration/runner.js.map +1 -1
- package/dist/orchestration/runner.test.js +22 -16
- package/dist/orchestration/runner.test.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +67 -5
- package/dist/server.js.map +1 -1
- package/dist/server.test.js +73 -1
- package/dist/server.test.js.map +1 -1
- package/dist/types.d.ts +16 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/feature.d.ts +10 -1
- package/dist/utils/feature.d.ts.map +1 -1
- package/dist/utils/feature.js +36 -4
- package/dist/utils/feature.js.map +1 -1
- package/dist/utils/session-finder.d.ts +2 -0
- package/dist/utils/session-finder.d.ts.map +1 -1
- package/dist/utils/session-finder.js +13 -0
- package/dist/utils/session-finder.js.map +1 -1
- package/package.json +5 -3
|
@@ -2,7 +2,7 @@ import { describe, it, expect, vi, beforeEach } from 'vitest';
|
|
|
2
2
|
import * as fs from 'node:fs/promises';
|
|
3
3
|
import { execa } from 'execa';
|
|
4
4
|
import * as path from 'node:path';
|
|
5
|
-
import { getPm2List, loadRunningState, parsePm2Json, pm2AppName, serviceLogFile, startService, stopService, stopServices, } from './runner.js';
|
|
5
|
+
import { getPm2List, loadRunningState, parsePm2Json, pm2AppName, pm2Prefix, serviceLogFile, startService, stopService, stopServices, } from './runner.js';
|
|
6
6
|
vi.mock('node:fs/promises');
|
|
7
7
|
vi.mock('execa');
|
|
8
8
|
function service(name, cwd) {
|
|
@@ -59,8 +59,8 @@ describe('orchestration runner PM2 state handling', () => {
|
|
|
59
59
|
};
|
|
60
60
|
vi.mocked(fs.readFile).mockResolvedValue(JSON.stringify(state));
|
|
61
61
|
const runningState = await loadRunningState(workspacePath, [
|
|
62
|
-
{ name: '
|
|
63
|
-
{ name: '
|
|
62
|
+
{ name: pm2AppName(workspacePath, 'api'), pid: 333, pm2_env: { status: 'online' } },
|
|
63
|
+
{ name: pm2AppName(workspacePath, 'web'), pid: 444, pm2_env: { status: 'stopped' } },
|
|
64
64
|
]);
|
|
65
65
|
expect(runningState?.services).toHaveLength(1);
|
|
66
66
|
expect(runningState?.services[0]?.name).toBe('api');
|
|
@@ -104,11 +104,12 @@ describe('orchestration runner PM2 state handling', () => {
|
|
|
104
104
|
describe('per-service lifecycle', () => {
|
|
105
105
|
it('pm2AppName and serviceLogFile derive workspace-scoped names', () => {
|
|
106
106
|
const ws = path.join(process.cwd(), 'my-ws');
|
|
107
|
-
expect(pm2AppName(ws, 'api')).
|
|
107
|
+
expect(pm2AppName(ws, 'api')).toMatch(/^nexusflow-my-ws-[0-9a-f]{8}-api$/);
|
|
108
108
|
expect(serviceLogFile('/logs', 'api')).toBe(path.join('/logs', 'api.log'));
|
|
109
109
|
});
|
|
110
110
|
it('startService deletes any existing app, starts PM2, resolves the PID and upserts state', async () => {
|
|
111
111
|
const ws = path.join(process.cwd(), 'my-ws');
|
|
112
|
+
const expectedApp = pm2AppName(ws, 'api');
|
|
112
113
|
// fs: mkdir (log dir), then mutateRunningState reads (ENOENT) + writes.
|
|
113
114
|
vi.mocked(fs.mkdir).mockResolvedValue(undefined);
|
|
114
115
|
vi.mocked(fs.readFile).mockRejectedValue(new Error('ENOENT'));
|
|
@@ -116,13 +117,13 @@ describe('orchestration runner PM2 state handling', () => {
|
|
|
116
117
|
vi.mocked(execa)
|
|
117
118
|
.mockResolvedValueOnce({ stdout: '' }) // pm2 delete
|
|
118
119
|
.mockResolvedValueOnce({ stdout: '' }) // pm2 start
|
|
119
|
-
.mockResolvedValueOnce({ stdout:
|
|
120
|
+
.mockResolvedValueOnce({ stdout: JSON.stringify([{ name: expectedApp, pid: 4321 }]) }); // pm2 jlist
|
|
120
121
|
const running = await startService(service('api', ws), ws, '/logs');
|
|
121
122
|
expect(running?.pid).toBe(4321);
|
|
122
123
|
const calls = vi.mocked(execa).mock.calls;
|
|
123
|
-
expect(calls[0]).toEqual(['npx', ['pm2', 'delete',
|
|
124
|
+
expect(calls[0]).toEqual(['npx', ['pm2', 'delete', expectedApp], { reject: false }]);
|
|
124
125
|
expect(calls[1]?.[1]).toContain('start');
|
|
125
|
-
expect(calls[1]?.[1]).toContain(
|
|
126
|
+
expect(calls[1]?.[1]).toContain(expectedApp);
|
|
126
127
|
// State written with the running service.
|
|
127
128
|
const written = JSON.parse(vi.mocked(fs.writeFile).mock.calls.at(-1)?.[1]);
|
|
128
129
|
expect(written.services.map((s) => s.name)).toEqual(['api']);
|
|
@@ -138,18 +139,19 @@ describe('orchestration runner PM2 state handling', () => {
|
|
|
138
139
|
});
|
|
139
140
|
it('stopService deletes the PM2 app and removes it from state', async () => {
|
|
140
141
|
const ws = path.join(process.cwd(), 'my-ws');
|
|
142
|
+
const expectedApp = pm2AppName(ws, 'api');
|
|
141
143
|
const state = {
|
|
142
144
|
workspacePath: ws,
|
|
143
145
|
services: [{ name: 'api', pid: 1, config: service('api', ws), startedAt: 'x' }],
|
|
144
146
|
updatedAt: 'x',
|
|
145
147
|
};
|
|
146
148
|
vi.mocked(execa)
|
|
147
|
-
.mockResolvedValueOnce({ stdout:
|
|
149
|
+
.mockResolvedValueOnce({ stdout: JSON.stringify([{ name: expectedApp }]) }) // jlist
|
|
148
150
|
.mockResolvedValueOnce({ stdout: '' }); // pm2 delete
|
|
149
151
|
vi.mocked(fs.readFile).mockResolvedValue(JSON.stringify(state));
|
|
150
152
|
vi.mocked(fs.unlink).mockResolvedValue(undefined);
|
|
151
153
|
expect(await stopService(ws, 'api')).toBe(true);
|
|
152
|
-
expect(vi.mocked(execa).mock.calls[1]).toEqual(['npx', ['pm2', 'delete',
|
|
154
|
+
expect(vi.mocked(execa).mock.calls[1]).toEqual(['npx', ['pm2', 'delete', expectedApp], { reject: false }]);
|
|
153
155
|
// Services now empty → state file removed.
|
|
154
156
|
expect(fs.unlink).toHaveBeenCalled();
|
|
155
157
|
});
|
|
@@ -157,11 +159,15 @@ describe('orchestration runner PM2 state handling', () => {
|
|
|
157
159
|
describe('stop-all carve-out', () => {
|
|
158
160
|
it('stops orch-* named services but excludes recorded orchestrator apps', async () => {
|
|
159
161
|
const ws = path.join(process.cwd(), 'my-ws');
|
|
162
|
+
const prefix = pm2Prefix(ws);
|
|
163
|
+
const orchApp = `${prefix}orch-tilt-tiltfile`;
|
|
164
|
+
const workerApp = `${prefix}orch-worker`;
|
|
165
|
+
const apiApp = `${prefix}api`;
|
|
160
166
|
const state = {
|
|
161
167
|
workspacePath: ws,
|
|
162
168
|
services: [],
|
|
163
169
|
orchestrators: [
|
|
164
|
-
{ id: 'tilt:Tiltfile', tool: 'tilt', configPath: 'Tiltfile', mode: 'pm2', pm2Name:
|
|
170
|
+
{ id: 'tilt:Tiltfile', tool: 'tilt', configPath: 'Tiltfile', mode: 'pm2', pm2Name: orchApp, logName: 'orch-tilt-tiltfile', startedAt: 'x' },
|
|
165
171
|
],
|
|
166
172
|
updatedAt: 'x',
|
|
167
173
|
};
|
|
@@ -174,9 +180,9 @@ describe('orchestration runner PM2 state handling', () => {
|
|
|
174
180
|
// orch-worker, and a plain service.
|
|
175
181
|
.mockResolvedValueOnce({
|
|
176
182
|
stdout: JSON.stringify([
|
|
177
|
-
{ name:
|
|
178
|
-
{ name:
|
|
179
|
-
{ name:
|
|
183
|
+
{ name: orchApp },
|
|
184
|
+
{ name: workerApp },
|
|
185
|
+
{ name: apiApp },
|
|
180
186
|
]),
|
|
181
187
|
})
|
|
182
188
|
.mockResolvedValue({ stdout: '' }); // subsequent pm2 delete calls
|
|
@@ -185,10 +191,10 @@ describe('orchestration runner PM2 state handling', () => {
|
|
|
185
191
|
.filter((c) => c[1]?.[1] === 'delete')
|
|
186
192
|
.map((c) => c[1][2]);
|
|
187
193
|
// The orch-* SERVICE and the plain service are stopped...
|
|
188
|
-
expect(deleted).toContain(
|
|
189
|
-
expect(deleted).toContain(
|
|
194
|
+
expect(deleted).toContain(workerApp);
|
|
195
|
+
expect(deleted).toContain(apiApp);
|
|
190
196
|
// ...but the recorded orchestrator app is left running.
|
|
191
|
-
expect(deleted).not.toContain(
|
|
197
|
+
expect(deleted).not.toContain(orchApp);
|
|
192
198
|
});
|
|
193
199
|
});
|
|
194
200
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.test.js","sourceRoot":"","sources":["../../src/orchestration/runner.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"runner.test.js","sourceRoot":"","sources":["../../src/orchestration/runner.test.ts"],"names":[],"mappings":"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"}
|
package/dist/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AA6C5B,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AA4EjF,eAAO,MAAM,GAAG,4EAAa,CAAC;AAc9B,mGAAmG;AACnG,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,YAAY,EACnB,QAAQ,EAAE,eAAe,EACzB,OAAO,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAAE,GACvD,MAAM,GAAG,IAAI,CAUf;AAED,gFAAgF;AAChF,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAS;IAEhB,QAAQ,IAAI,OAAO;IAMnB,MAAM,IAAI,IAAI;IAId,QAAQ,IAAI,OAAO;CAG3B;AAuKD,yEAAyE;AACzE,qBAAa,eAAgB,SAAQ,KAAK;gBAC5B,OAAO,SAA2B;CAI/C;AAcD,kFAAkF;AAClF,wBAAgB,oBAAoB,CAAC,aAAa,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAE9E;AAID;;;GAGG;AACH,wBAAgB,6BAA6B,CAC3C,QAAQ,GAAE,MAAM,CAAC,QAA2B,EAC5C,YAAY,GAAE,MAAM,CAAC,YAA2B,EAChD,GAAG,GAAE,MAAM,CAAC,UAAwB,EACpC,eAAe,GAAE,MAAM,OAMtB,GACA,OAAO,CAeT;AA8BD,0EAA0E;AAC1E,wBAAgB,eAAe,CAAC,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE/E;AAsDD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAc7D;AAorED,wBAAgB,WAAW,CACzB,IAAI,SAAO,EACX,IAAI,GAAE;IAAE,UAAU,CAAC,EAAE,OAAO,CAAA;CAAO,GAClC,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,GAAG,CAAA;CAAE,CAAC,CA0BxC"}
|
package/dist/server.js
CHANGED
|
@@ -17,13 +17,14 @@ import * as os from 'node:os';
|
|
|
17
17
|
import { pipeline } from 'node:stream/promises';
|
|
18
18
|
import { spawn } from 'node:child_process';
|
|
19
19
|
import { loadConfig, saveConfig, getConfigDir } from './core/config.js';
|
|
20
|
+
import { configPatchSchema } from './core/config-schema.js';
|
|
20
21
|
import { listStorageProviders } from './core/adapters/registry.js';
|
|
21
22
|
import { scanForRepos } from './core/scanner.js';
|
|
22
|
-
import { createNewRepo } from './core/new-repo.js';
|
|
23
|
+
import { createNewRepo, isValidProjectName } from './core/new-repo.js';
|
|
23
24
|
import { loadProjects, createProject, updateProject, removeProject, slugifyProjectName } from './core/projects.js';
|
|
24
25
|
import { getSessionCwd, isInPlace, resolveFeatureRepoPath } from './utils/feature.js';
|
|
25
26
|
import { listBranches } from './utils/git.js';
|
|
26
|
-
import { createWorkspace, listWorkspaces, loadFeatureConfig, loadWorkspaceManifest, deleteWorkspace, addRepoToWorkspace } from './core/workspace.js';
|
|
27
|
+
import { createWorkspace, listWorkspaces, loadFeatureConfig, loadWorkspaceManifest, deleteWorkspace, addRepoToWorkspace, isolateWorkspaceRepo } from './core/workspace.js';
|
|
27
28
|
import { loadWorkspaceState } from './core/workspace-state.js';
|
|
28
29
|
import { analyzeAllRepos } from './analyzers/index.js';
|
|
29
30
|
import { generateContextFiles } from './generators/index.js';
|
|
@@ -435,6 +436,22 @@ app.use('/api/*', cors({
|
|
|
435
436
|
}
|
|
436
437
|
},
|
|
437
438
|
}));
|
|
439
|
+
// --- host guard: DNS rebinding protection ---
|
|
440
|
+
function isAllowedHost(hostHeader) {
|
|
441
|
+
if (!hostHeader)
|
|
442
|
+
return true; // Internal Hono programmatic invocations / test requests
|
|
443
|
+
const hostname = hostHeader.startsWith('[')
|
|
444
|
+
? hostHeader.slice(1, hostHeader.indexOf(']'))
|
|
445
|
+
: hostHeader.split(':')[0]?.toLowerCase() ?? '';
|
|
446
|
+
return ['localhost', '127.0.0.1', '::1'].includes(hostname);
|
|
447
|
+
}
|
|
448
|
+
app.use('*', async (c, next) => {
|
|
449
|
+
const host = c.req.header('host');
|
|
450
|
+
if (!isAllowedHost(host)) {
|
|
451
|
+
return c.text('Forbidden: invalid Host header', 403);
|
|
452
|
+
}
|
|
453
|
+
await next();
|
|
454
|
+
});
|
|
438
455
|
// Enforce trusted local origin on all mutating HTTP methods across /api/* to defend against
|
|
439
456
|
// cross-site request forgery and browser form posts from untrusted web pages.
|
|
440
457
|
app.use('/api/*', async (c, next) => {
|
|
@@ -500,9 +517,15 @@ app.get('/api/adapters', async (c) => {
|
|
|
500
517
|
// 2. Save configuration
|
|
501
518
|
app.post('/api/config', async (c) => {
|
|
502
519
|
try {
|
|
503
|
-
const
|
|
504
|
-
|
|
505
|
-
|
|
520
|
+
const body = await c.req.json().catch(() => null);
|
|
521
|
+
const parsed = configPatchSchema.safeParse(body);
|
|
522
|
+
if (!parsed.success) {
|
|
523
|
+
return c.json({ error: 'Invalid config payload', issues: parsed.error.flatten() }, 400);
|
|
524
|
+
}
|
|
525
|
+
const current = await loadConfig();
|
|
526
|
+
const next = { ...current, ...parsed.data };
|
|
527
|
+
await saveConfig(next);
|
|
528
|
+
return c.json({ success: true, config: next });
|
|
506
529
|
}
|
|
507
530
|
catch (error) {
|
|
508
531
|
return errorResponse(c, error);
|
|
@@ -883,6 +906,19 @@ app.post('/api/workspace', async (c) => {
|
|
|
883
906
|
return c.json({ error: 'Missing "branchName" in request body' }, 400);
|
|
884
907
|
}
|
|
885
908
|
const config = await loadConfig();
|
|
909
|
+
// Validate repo names and paths synchronously before starting the job.
|
|
910
|
+
for (const r of body.repos || []) {
|
|
911
|
+
if (inPlace) {
|
|
912
|
+
if (config.devDir && r.path) {
|
|
913
|
+
assertWithin(config.devDir, path.resolve(r.path));
|
|
914
|
+
}
|
|
915
|
+
}
|
|
916
|
+
else {
|
|
917
|
+
if (r.name && !isValidProjectName(r.name)) {
|
|
918
|
+
return c.json({ error: `Invalid repository name: ${JSON.stringify(r.name)}` }, 400);
|
|
919
|
+
}
|
|
920
|
+
}
|
|
921
|
+
}
|
|
886
922
|
// The job id doubles as the workspace directory name.
|
|
887
923
|
const jobId = inPlace ? slugifyProjectName(body.name) : body.branchName;
|
|
888
924
|
if (!jobId) {
|
|
@@ -1010,6 +1046,9 @@ app.post('/api/workspace/:id/repo', async (c) => {
|
|
|
1010
1046
|
const id = decodeURIComponent(c.req.param('id'));
|
|
1011
1047
|
const { repoPath } = await c.req.json();
|
|
1012
1048
|
const config = await loadConfig();
|
|
1049
|
+
if (config.devDir) {
|
|
1050
|
+
assertWithin(config.devDir, path.resolve(repoPath));
|
|
1051
|
+
}
|
|
1013
1052
|
const workspacePath = resolveWorkspacePath(config.workspacesDir, id);
|
|
1014
1053
|
await addRepoToWorkspace(workspacePath, repoPath);
|
|
1015
1054
|
return c.json({ success: true });
|
|
@@ -1018,6 +1057,29 @@ app.post('/api/workspace/:id/repo', async (c) => {
|
|
|
1018
1057
|
return errorResponse(c, error);
|
|
1019
1058
|
}
|
|
1020
1059
|
});
|
|
1060
|
+
// 7.7b. Isolate repo in in-place workspace
|
|
1061
|
+
app.post('/api/workspace/:id/isolate', async (c) => {
|
|
1062
|
+
try {
|
|
1063
|
+
const id = decodeURIComponent(c.req.param('id'));
|
|
1064
|
+
const body = await c.req.json().catch(() => ({}));
|
|
1065
|
+
const repo = typeof body.repo === 'string' ? body.repo.trim() : '';
|
|
1066
|
+
if (!repo) {
|
|
1067
|
+
return c.json({ error: 'Missing "repo" parameter in request body' }, 400);
|
|
1068
|
+
}
|
|
1069
|
+
const branchName = typeof body.branchName === 'string' && body.branchName.trim() ? body.branchName.trim() : undefined;
|
|
1070
|
+
const baseBranch = typeof body.baseBranch === 'string' && body.baseBranch.trim() ? body.baseBranch.trim() : undefined;
|
|
1071
|
+
const config = await loadConfig();
|
|
1072
|
+
const workspacePath = resolveWorkspacePath(config.workspacesDir, id);
|
|
1073
|
+
const result = await isolateWorkspaceRepo(workspacePath, repo, {
|
|
1074
|
+
branchName,
|
|
1075
|
+
baseBranch,
|
|
1076
|
+
});
|
|
1077
|
+
return c.json({ success: true, ...result });
|
|
1078
|
+
}
|
|
1079
|
+
catch (error) {
|
|
1080
|
+
return errorResponse(c, error);
|
|
1081
|
+
}
|
|
1082
|
+
});
|
|
1021
1083
|
// 7.8. Suggest workflow strategy based on feature description & selected repos
|
|
1022
1084
|
app.post('/api/workspace/suggest-workflow', async (c) => {
|
|
1023
1085
|
try {
|