@mrpatronz/nexusflow 2.7.0 → 2.8.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/README.md +1 -2
- package/dist/agent/ClaudeSdkAdapter.d.ts.map +1 -1
- package/dist/agent/ClaudeSdkAdapter.js +31 -8
- package/dist/agent/ClaudeSdkAdapter.js.map +1 -1
- package/dist/agent/ClaudeSdkAdapter.test.js +18 -6
- package/dist/agent/ClaudeSdkAdapter.test.js.map +1 -1
- package/dist/agent/CodexCliAdapter.d.ts +1 -1
- package/dist/agent/CodexCliAdapter.d.ts.map +1 -1
- package/dist/agent/CodexCliAdapter.js +5 -4
- package/dist/agent/CodexCliAdapter.js.map +1 -1
- package/dist/agent/CodexCliAdapter.test.js +16 -1
- package/dist/agent/CodexCliAdapter.test.js.map +1 -1
- package/dist/agent/CodexSdkAdapter.d.ts.map +1 -1
- package/dist/agent/CodexSdkAdapter.js +6 -0
- package/dist/agent/CodexSdkAdapter.js.map +1 -1
- package/dist/agent/ProviderRegistry.d.ts +5 -0
- package/dist/agent/ProviderRegistry.d.ts.map +1 -1
- package/dist/agent/ProviderRegistry.js +15 -0
- package/dist/agent/ProviderRegistry.js.map +1 -1
- package/dist/agent/ProviderRegistry.test.js +19 -0
- package/dist/agent/ProviderRegistry.test.js.map +1 -1
- package/dist/agent/adapters.d.ts.map +1 -1
- package/dist/agent/adapters.js +5 -0
- package/dist/agent/adapters.js.map +1 -1
- package/dist/agent/mcp-config.d.ts +16 -0
- package/dist/agent/mcp-config.d.ts.map +1 -0
- package/dist/agent/mcp-config.js +28 -0
- package/dist/agent/mcp-config.js.map +1 -0
- package/dist/agent/mcp-config.test.d.ts +2 -0
- package/dist/agent/mcp-config.test.d.ts.map +1 -0
- package/dist/agent/mcp-config.test.js +22 -0
- package/dist/agent/mcp-config.test.js.map +1 -0
- package/dist/agent/models.d.ts +10 -0
- package/dist/agent/models.d.ts.map +1 -0
- package/dist/agent/models.js +35 -0
- package/dist/agent/models.js.map +1 -0
- package/dist/agent/models.test.d.ts +2 -0
- package/dist/agent/models.test.d.ts.map +1 -0
- package/dist/agent/models.test.js +40 -0
- package/dist/agent/models.test.js.map +1 -0
- package/dist/agent/orchestrator.d.ts +65 -0
- package/dist/agent/orchestrator.d.ts.map +1 -0
- package/dist/agent/orchestrator.js +252 -0
- package/dist/agent/orchestrator.js.map +1 -0
- package/dist/agent/orchestrator.test.d.ts +2 -0
- package/dist/agent/orchestrator.test.d.ts.map +1 -0
- package/dist/agent/orchestrator.test.js +284 -0
- package/dist/agent/orchestrator.test.js.map +1 -0
- package/dist/agent/session.d.ts +1 -0
- package/dist/agent/session.d.ts.map +1 -1
- package/dist/agent/session.js +3 -2
- package/dist/agent/session.js.map +1 -1
- package/dist/agent/session.test.js +9 -0
- package/dist/agent/session.test.js.map +1 -1
- package/dist/agent/smoke-chat.test.d.ts +2 -0
- package/dist/agent/smoke-chat.test.d.ts.map +1 -0
- package/dist/agent/smoke-chat.test.js +166 -0
- package/dist/agent/smoke-chat.test.js.map +1 -0
- package/dist/commands/mcp.d.ts +7 -1
- package/dist/commands/mcp.d.ts.map +1 -1
- package/dist/commands/mcp.js +7 -2
- package/dist/commands/mcp.js.map +1 -1
- package/dist/core/locks.d.ts +4 -2
- package/dist/core/locks.d.ts.map +1 -1
- package/dist/core/locks.js +55 -7
- package/dist/core/locks.js.map +1 -1
- package/dist/core/locks.test.js +48 -0
- package/dist/core/locks.test.js.map +1 -1
- package/dist/gui/assets/AgentsPage-Bfyu13gc.js +3 -0
- package/dist/gui/assets/{CSPContext-BG7no5S_.js → CSPContext-DBUu9tE0.js} +1 -1
- package/dist/gui/assets/{DashboardPage-ByGTwAQa.js → DashboardPage-O5wj99kn.js} +1 -1
- package/dist/gui/assets/{GettingStartedPage-Xjx3M3RH.js → GettingStartedPage-DDWBueC7.js} +1 -1
- package/dist/gui/assets/ProjectsPage-NHkXrDM2.js +1 -0
- package/dist/gui/assets/ScaffoldRepoInline-Cmqg_s94.js +1 -0
- package/dist/gui/assets/{SettingsPage-B9iN6hsv.js → SettingsPage-Cc77HBp7.js} +1 -1
- package/dist/gui/assets/SkillsPage-D4CVxwrI.js +6 -0
- package/dist/gui/assets/StartWorkPage-RPZTN3Ui.js +1 -0
- package/dist/gui/assets/{StrategiesPage-DDu3jwJx.js → StrategiesPage-Dn66xfZN.js} +1 -1
- package/dist/gui/assets/WorkspacesPage-BgdoM5Hs.js +6 -0
- package/dist/gui/assets/{alert-dialog-CdqVrvZl.js → alert-dialog-BYZ7cgWA.js} +1 -1
- package/dist/gui/assets/index-BmH7a-Qy.css +2 -0
- package/dist/gui/assets/index-CoNaATPd.js +52 -0
- package/dist/gui/assets/isElementDisabled-uy_EOitH.js +1 -0
- package/dist/gui/assets/textarea-ByfoCb54.js +1 -0
- package/dist/gui/assets/{useAriaLabelledBy-DfRdwH8a.js → useAriaLabelledBy-ClesgjMe.js} +1 -1
- package/dist/gui/assets/useValueChanged-DeYvGnKs.js +1 -0
- package/dist/gui/assets/{vsc-D6UPv2ii.js → vsc-BTST_4ex.js} +1 -1
- package/dist/gui/index.html +5 -7
- package/dist/harness/claude.d.ts +3 -1
- package/dist/harness/claude.d.ts.map +1 -1
- package/dist/harness/claude.js +4 -2
- package/dist/harness/claude.js.map +1 -1
- package/dist/harness/codex.d.ts +3 -1
- package/dist/harness/codex.d.ts.map +1 -1
- package/dist/harness/codex.js +64 -12
- package/dist/harness/codex.js.map +1 -1
- package/dist/harness/contract.test.d.ts +2 -0
- package/dist/harness/contract.test.d.ts.map +1 -0
- package/dist/harness/contract.test.js +426 -0
- package/dist/harness/contract.test.js.map +1 -0
- package/dist/harness/harness.test.js +16 -1
- package/dist/harness/harness.test.js.map +1 -1
- package/dist/harness/types.d.ts +7 -1
- package/dist/harness/types.d.ts.map +1 -1
- package/dist/index.js +4 -1
- package/dist/index.js.map +1 -1
- package/dist/mcp/server.d.ts +8 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +11 -6
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/tools.d.ts +6 -2
- package/dist/mcp/tools.d.ts.map +1 -1
- package/dist/mcp/tools.js +213 -6
- package/dist/mcp/tools.js.map +1 -1
- package/dist/mcp/tools.test.js +115 -6
- package/dist/mcp/tools.test.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +15 -3
- package/dist/server.js.map +1 -1
- package/dist/server.test.js +12 -1
- package/dist/server.test.js.map +1 -1
- package/package.json +2 -1
- package/dist/gui/assets/AgentsPage-YyYRodOR.js +0 -3
- package/dist/gui/assets/ProjectsPage-BMdhqAGs.js +0 -1
- package/dist/gui/assets/ScaffoldRepoInline-gXyYSIz5.js +0 -1
- package/dist/gui/assets/SkillsPage-CxcsbIsQ.js +0 -6
- package/dist/gui/assets/StartWorkPage-DPVHcdy4.js +0 -1
- package/dist/gui/assets/WorkspacesPage-BWRmP0mY.js +0 -2
- package/dist/gui/assets/index-CZoZQkeC.css +0 -2
- package/dist/gui/assets/index-wy68EqfB.js +0 -50
- package/dist/gui/assets/isElementDisabled-D_fu2zfc.js +0 -1
- package/dist/gui/assets/store-D5DUHbxn.js +0 -3
- package/dist/gui/assets/styles-CVwNuFCx.js +0 -1
- package/dist/gui/assets/textarea-BNRuIXNs.js +0 -1
- package/dist/gui/assets/useValueChanged-CStSGSsD.js +0 -1
package/dist/mcp/tools.test.js
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
import { describe, it, expect, vi, beforeEach } from 'vitest';
|
|
2
|
-
import { findTool } from './tools.js';
|
|
2
|
+
import { findTool, enabledTools } from './tools.js';
|
|
3
3
|
import * as workspace from '../core/workspace.js';
|
|
4
|
+
import * as refresh from '../core/refresh.js';
|
|
5
|
+
import * as fs from 'node:fs/promises';
|
|
4
6
|
vi.mock('../core/workspace.js');
|
|
7
|
+
vi.mock('../core/refresh.js');
|
|
8
|
+
vi.mock('node:fs/promises');
|
|
5
9
|
const mockConfig = {
|
|
6
10
|
version: '1.0',
|
|
7
11
|
devDir: '/dev',
|
|
@@ -13,12 +17,101 @@ describe('MCP tools', () => {
|
|
|
13
17
|
beforeEach(() => {
|
|
14
18
|
vi.clearAllMocks();
|
|
15
19
|
});
|
|
16
|
-
it('registers
|
|
17
|
-
|
|
20
|
+
it('registers all Phase 2 workspace lifecycle tools', () => {
|
|
21
|
+
expect(findTool('create_workspace')).toBeDefined();
|
|
22
|
+
expect(findTool('list_workspaces')).toBeDefined();
|
|
23
|
+
expect(findTool('list_repos')).toBeDefined();
|
|
24
|
+
expect(findTool('isolate_repo')).toBeDefined();
|
|
25
|
+
expect(findTool('get_service_logs')).toBeDefined();
|
|
26
|
+
});
|
|
27
|
+
it('filters tool surfaces correctly based on agent roles and allow/deny lists', () => {
|
|
28
|
+
const allTools = enabledTools(mockConfig);
|
|
29
|
+
expect(allTools.length).toBeGreaterThanOrEqual(14);
|
|
30
|
+
const readonlyTools = enabledTools(mockConfig, 'readonly');
|
|
31
|
+
const readonlyNames = readonlyTools.map((t) => t.name);
|
|
32
|
+
expect(readonlyNames).toContain('search_workspace');
|
|
33
|
+
expect(readonlyNames).toContain('workspace_status');
|
|
34
|
+
expect(readonlyNames).toContain('get_workspace_diff');
|
|
35
|
+
expect(readonlyNames).toContain('list_workspaces');
|
|
36
|
+
expect(readonlyNames).toContain('list_repos');
|
|
37
|
+
expect(readonlyNames).not.toContain('create_workspace');
|
|
38
|
+
expect(readonlyNames).not.toContain('commit_workspace');
|
|
39
|
+
expect(readonlyNames).not.toContain('finish_workspace');
|
|
40
|
+
const explicitDenied = enabledTools(mockConfig, 'developer', undefined, ['commit_workspace']);
|
|
41
|
+
expect(explicitDenied.map((t) => t.name)).not.toContain('commit_workspace');
|
|
42
|
+
const explicitAllowed = enabledTools(mockConfig, undefined, ['search_workspace', 'list_repos']);
|
|
43
|
+
expect(explicitAllowed.map((t) => t.name)).toEqual(['search_workspace', 'list_repos']);
|
|
44
|
+
});
|
|
45
|
+
it('executes list_workspaces tool handler successfully', async () => {
|
|
46
|
+
const tool = findTool('list_workspaces');
|
|
18
47
|
expect(tool).toBeDefined();
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
48
|
+
vi.mocked(workspace.listWorkspaces).mockResolvedValue([
|
|
49
|
+
{
|
|
50
|
+
id: 'feat-auth',
|
|
51
|
+
branchName: 'feat-auth',
|
|
52
|
+
mode: 'worktree',
|
|
53
|
+
description: 'User auth feature',
|
|
54
|
+
repos: ['/dev/workspaces/feat-auth/api', '/dev/workspaces/feat-auth/web'],
|
|
55
|
+
assistants: ['claude'],
|
|
56
|
+
workspacePath: '/dev/workspaces/feat-auth',
|
|
57
|
+
createdAt: '2026-08-23T00:00:00Z',
|
|
58
|
+
},
|
|
59
|
+
]);
|
|
60
|
+
const result = await tool.handler({}, { config: mockConfig, workspacePath: '/dev/workspaces/feat-auth' });
|
|
61
|
+
expect(result.isError).toBeFalsy();
|
|
62
|
+
const content = JSON.parse(result.content[0].text);
|
|
63
|
+
expect(content).toHaveLength(1);
|
|
64
|
+
expect(content[0]).toEqual({
|
|
65
|
+
id: 'feat-auth',
|
|
66
|
+
branchName: 'feat-auth',
|
|
67
|
+
mode: 'worktree',
|
|
68
|
+
description: 'User auth feature',
|
|
69
|
+
reposCount: 2,
|
|
70
|
+
workspacePath: '/dev/workspaces/feat-auth',
|
|
71
|
+
createdAt: '2026-08-23T00:00:00Z',
|
|
72
|
+
});
|
|
73
|
+
});
|
|
74
|
+
it('executes list_repos tool handler successfully', async () => {
|
|
75
|
+
const tool = findTool('list_repos');
|
|
76
|
+
expect(tool).toBeDefined();
|
|
77
|
+
vi.mocked(workspace.loadFeatureConfig).mockResolvedValue({
|
|
78
|
+
id: 'feat-auth',
|
|
79
|
+
mode: 'worktree',
|
|
80
|
+
branchName: 'feat-auth',
|
|
81
|
+
description: 'test',
|
|
82
|
+
repos: ['/dev/workspaces/feat-auth/api', '/dev/workspaces/feat-auth/web'],
|
|
83
|
+
assistants: ['claude'],
|
|
84
|
+
workspacePath: '/dev/workspaces/feat-auth',
|
|
85
|
+
createdAt: '2026-08-23T00:00:00Z',
|
|
86
|
+
});
|
|
87
|
+
const result = await tool.handler({}, { config: mockConfig, workspacePath: '/dev/workspaces/feat-auth' });
|
|
88
|
+
expect(result.isError).toBeFalsy();
|
|
89
|
+
const content = JSON.parse(result.content[0].text);
|
|
90
|
+
expect(content).toHaveLength(2);
|
|
91
|
+
expect(content[0]?.name).toBe('api');
|
|
92
|
+
expect(content[1]?.name).toBe('web');
|
|
93
|
+
});
|
|
94
|
+
it('executes create_workspace tool handler successfully', async () => {
|
|
95
|
+
const tool = findTool('create_workspace');
|
|
96
|
+
expect(tool).toBeDefined();
|
|
97
|
+
vi.mocked(fs.access).mockResolvedValue(undefined);
|
|
98
|
+
vi.mocked(workspace.resolveRepoInfos).mockResolvedValue([
|
|
99
|
+
{ name: 'repo1', path: '/dev/repo1', defaultBranch: 'main' },
|
|
100
|
+
]);
|
|
101
|
+
vi.mocked(workspace.createWorkspace).mockResolvedValue('/dev/workspaces/feat-test');
|
|
102
|
+
vi.mocked(refresh.refreshWorkspace).mockResolvedValue({});
|
|
103
|
+
const result = await tool.handler({
|
|
104
|
+
branchName: 'feat-test',
|
|
105
|
+
repos: ['repo1'],
|
|
106
|
+
description: 'New feature',
|
|
107
|
+
}, { config: mockConfig, workspacePath: '/dev/workspaces' });
|
|
108
|
+
expect(result.isError).toBeFalsy();
|
|
109
|
+
const content = JSON.parse(result.content[0].text);
|
|
110
|
+
expect(content.id).toBe('feat-test');
|
|
111
|
+
expect(content.workspacePath).toContain('feat-test');
|
|
112
|
+
expect(content.status).toBe('created');
|
|
113
|
+
expect(workspace.createWorkspace).toHaveBeenCalledTimes(1);
|
|
114
|
+
expect(refresh.refreshWorkspace).toHaveBeenCalledTimes(1);
|
|
22
115
|
});
|
|
23
116
|
it('executes isolate_repo tool handler successfully', async () => {
|
|
24
117
|
const tool = findTool('isolate_repo');
|
|
@@ -66,5 +159,21 @@ describe('MCP tools', () => {
|
|
|
66
159
|
expect(result.isError).toBe(true);
|
|
67
160
|
expect(result.content[0].text).toContain('Repository name is required');
|
|
68
161
|
});
|
|
162
|
+
it('rejects path traversal attempts in get_service_logs', async () => {
|
|
163
|
+
const tool = findTool('get_service_logs');
|
|
164
|
+
expect(tool).toBeDefined();
|
|
165
|
+
const result = await tool.handler({ serviceName: '../../etc/passwd' }, { config: mockConfig, workspacePath: '/dev/workspaces/my-ws' });
|
|
166
|
+
expect(result.isError).toBe(true);
|
|
167
|
+
expect(result.content[0].text).toContain('Invalid service name');
|
|
168
|
+
});
|
|
169
|
+
it('reads service logs successfully when serviceName is valid', async () => {
|
|
170
|
+
const tool = findTool('get_service_logs');
|
|
171
|
+
expect(tool).toBeDefined();
|
|
172
|
+
vi.mocked(fs.access).mockResolvedValue(undefined);
|
|
173
|
+
vi.mocked(fs.readFile).mockResolvedValue('line1\nline2\nline3\n');
|
|
174
|
+
const result = await tool.handler({ serviceName: 'frontend' }, { config: mockConfig, workspacePath: '/dev/workspaces/my-ws' });
|
|
175
|
+
expect(result.isError).toBeFalsy();
|
|
176
|
+
expect(result.content[0].text).toContain('line1\nline2\nline3');
|
|
177
|
+
});
|
|
69
178
|
});
|
|
70
179
|
//# sourceMappingURL=tools.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.test.js","sourceRoot":"","sources":["../../src/mcp/tools.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAC9D,OAAO,EAAE,QAAQ,
|
|
1
|
+
{"version":3,"file":"tools.test.js","sourceRoot":"","sources":["../../src/mcp/tools.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;AA+C5B,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;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AA+C5B,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;AAgMD,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,CAe7D;AAktED,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
|
@@ -161,12 +161,23 @@ app.get('/ws', async (c, next) => {
|
|
|
161
161
|
return;
|
|
162
162
|
}
|
|
163
163
|
let session;
|
|
164
|
+
const model = ProviderRegistry.resolveModel(provider, payload.model);
|
|
165
|
+
if (model === null) {
|
|
166
|
+
ws.send(JSON.stringify({
|
|
167
|
+
type: 'error',
|
|
168
|
+
message: `The selected model is not available for ${provider.name}. Choose a model advertised by this provider or use Automatic.`,
|
|
169
|
+
}));
|
|
170
|
+
return;
|
|
171
|
+
}
|
|
164
172
|
if (payload.sessionId !== undefined && payload.sessionId !== null) {
|
|
165
173
|
if (!isValidSessionUuid(payload.sessionId)) {
|
|
166
174
|
ws.send(JSON.stringify({ type: 'error', message: 'Invalid session id.' }));
|
|
167
175
|
return;
|
|
168
176
|
}
|
|
169
|
-
session = { id: payload.sessionId, resume: Boolean(payload.resume) };
|
|
177
|
+
session = { id: payload.sessionId, resume: Boolean(payload.resume), model };
|
|
178
|
+
}
|
|
179
|
+
else if (model) {
|
|
180
|
+
session = { id: crypto.randomUUID(), resume: false, model };
|
|
170
181
|
}
|
|
171
182
|
const startedAgent = provider.createInstance();
|
|
172
183
|
agent = startedAgent;
|
|
@@ -500,10 +511,11 @@ app.post('/api/adapters/status/refresh', async (c) => {
|
|
|
500
511
|
return c.json({ error: 'A local browser origin is required.' }, 403);
|
|
501
512
|
}
|
|
502
513
|
const body = await c.req.json().catch(() => null);
|
|
503
|
-
|
|
514
|
+
const providerId = typeof body?.providerId === 'string' ? body.providerId : '';
|
|
515
|
+
if (!['claude-cli', 'codex-cli', 'claude-sdk', 'codex-sdk'].includes(providerId)) {
|
|
504
516
|
return c.json({ error: 'Only Claude Code and Codex status can be refreshed.' }, 400);
|
|
505
517
|
}
|
|
506
|
-
return c.json(ProviderRegistry.getAllStatus({ refreshProviderId:
|
|
518
|
+
return c.json(ProviderRegistry.getAllStatus({ refreshProviderId: providerId }));
|
|
507
519
|
});
|
|
508
520
|
// 1. Get current configuration
|
|
509
521
|
app.get('/api/config', async (c) => {
|