@chainingintention/pi-web-cn 1.202610.2 → 1.202610.4
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 -0
- package/dist/cli.js +129 -122
- package/dist/cli.js.map +1 -1
- package/dist/client/assets/PiWebApp-CN3g7SqA.js +4362 -0
- package/dist/client/assets/external-DUGCSDhZ.js +2 -0
- package/dist/client/assets/index-JduZlbIF.js +2 -0
- package/dist/client/index.html +4 -4
- package/dist/client/manifest.webmanifest +2 -1
- package/dist/localization.js +24 -0
- package/dist/localization.js.map +1 -0
- package/dist/nativeServices/serviceDoctor.js +45 -44
- package/dist/nativeServices/serviceDoctor.js.map +1 -1
- package/dist/pi-packages/captains-log/dist/browser/index.js +46 -45
- package/dist/pi-packages/captains-log/dist/browser/markdown.js +2 -1
- package/dist/pi-packages/captains-log/dist/browser/panel.js +56 -55
- package/dist/pi-packages/captains-log/i18n.js +7 -0
- package/dist/pi-packages/relays/i18n.js +7 -0
- package/dist/pi-packages/relays/markdownDocument.js +2 -1
- package/dist/pi-packages/relays/pi-web-plugin.js +8 -6
- package/dist/pi-packages/relays/relaysPanelElement.js +24 -23
- package/dist/pi-web-plugins/files/browser/pi-web-plugin.js +124 -124
- package/dist/pi-web-plugins/git/browser/git-contract.js +13 -12
- package/dist/pi-web-plugins/git/browser/git-panel.js +25 -24
- package/dist/pi-web-plugins/git/browser/i18n.js +7 -0
- package/dist/pi-web-plugins/git/browser/pi-web-plugin.js +7 -3
- package/dist/pi-web-plugins/git/git-backend.js +10 -9
- package/dist/pi-web-plugins/git/i18n.js +7 -0
- package/dist/pi-web-plugins/git/server-plugin.js +21 -19
- package/dist/pi-web-plugins/info/i18n.js +7 -0
- package/dist/pi-web-plugins/info/infoInternals.js +57 -62
- package/dist/pi-web-plugins/info/pi-web-plugin.js +34 -36
- package/dist/pi-web-plugins/mermaid/browser/pi-web-plugin.js +3 -3
- package/dist/pi-web-plugins/terminal/browser/pi-web-plugin.js +55 -52
- package/dist/pi-web-plugins/terminal/i18n.js +7 -0
- package/dist/pi-web-plugins/terminal/server-plugin.js +23 -21
- package/dist/pi-web-plugins/terminal/terminalService.js +22 -21
- package/dist/pi-web-plugins/updates/i18n.js +7 -0
- package/dist/pi-web-plugins/updates/pi-web-plugin.js +58 -54
- package/dist/pi-web-plugins/updates/updatesLogic.js +21 -20
- package/dist/pi-web-plugins/workspace-tasks/config.js +12 -11
- package/dist/pi-web-plugins/workspace-tasks/i18n.js +7 -0
- package/dist/pi-web-plugins/workspace-tasks/pi-web-plugin.js +8 -6
- package/dist/pi-web-plugins/workspace-tasks/tasksPanelElement.js +20 -19
- package/dist/pi-web-plugins/workspace-tasks/workspaceTasksClient.js +12 -11
- package/dist/pi-web-plugins/zh-cn/auth.json +9 -0
- package/dist/pi-web-plugins/zh-cn/bundled.json +176 -0
- package/dist/pi-web-plugins/zh-cn/cli.json +171 -0
- package/dist/pi-web-plugins/zh-cn/client.json +219 -0
- package/dist/pi-web-plugins/zh-cn/components.json +1002 -0
- package/dist/pi-web-plugins/zh-cn/config-errors.json +172 -0
- package/dist/pi-web-plugins/zh-cn/files.json +41 -0
- package/dist/pi-web-plugins/zh-cn/machines.json +28 -0
- package/dist/pi-web-plugins/zh-cn/main.json +459 -0
- package/dist/pi-web-plugins/zh-cn/management-errors.json +23 -0
- package/dist/pi-web-plugins/zh-cn/manifest.webmanifest +25 -0
- package/dist/pi-web-plugins/zh-cn/metadata.json +3 -0
- package/dist/pi-web-plugins/zh-cn/package.json +10 -0
- package/dist/pi-web-plugins/zh-cn/pi-web-plugin.js +16 -0
- package/dist/pi-web-plugins/zh-cn/projects.json +6 -0
- package/dist/pi-web-plugins/zh-cn/provider-auth.json +17 -0
- package/dist/pi-web-plugins/zh-cn/routing.json +68 -0
- package/dist/pi-web-plugins/zh-cn/server-main.json +99 -0
- package/dist/pi-web-plugins/zh-cn/server.json +174 -0
- package/dist/piWebVersionReport.js +17 -16
- package/dist/piWebVersionReport.js.map +1 -1
- package/dist/plugin-api.d.ts +4 -1
- package/dist/pluginRecoveryCli.js +25 -24
- package/dist/pluginRecoveryCli.js.map +1 -1
- package/dist/server/app.js +43 -28
- package/dist/server/app.js.map +1 -1
- package/dist/server/audit/normalToolAuditCli.js +45 -43
- package/dist/server/audit/normalToolAuditCli.js.map +1 -1
- package/dist/server/configRoutes.js +39 -30
- package/dist/server/configRoutes.js.map +1 -1
- package/dist/server/diagnostics/nodePtyNativeModule.js +7 -6
- package/dist/server/diagnostics/nodePtyNativeModule.js.map +1 -1
- package/dist/server/diagnostics/nodePtySpawnHelper.js +21 -20
- package/dist/server/diagnostics/nodePtySpawnHelper.js.map +1 -1
- package/dist/server/knownAutoInstallPiPackages.js +2 -2
- package/dist/server/knownAutoInstallPiPackages.js.map +1 -1
- package/dist/server/knownPiPackages.js +2 -2
- package/dist/server/knownPiPackages.js.map +1 -1
- package/dist/server/machines/machineClient.js +8 -6
- package/dist/server/machines/machineClient.js.map +1 -1
- package/dist/server/machines/machinePluginProxyRoutes.js +11 -10
- package/dist/server/machines/machinePluginProxyRoutes.js.map +1 -1
- package/dist/server/machines/machineProxyRoutes.js +27 -29
- package/dist/server/machines/machineProxyRoutes.js.map +1 -1
- package/dist/server/machines/machineRoutes.js +10 -12
- package/dist/server/machines/machineRoutes.js.map +1 -1
- package/dist/server/machines/machineService.js +17 -18
- package/dist/server/machines/machineService.js.map +1 -1
- package/dist/server/managementEmbed.js +26 -25
- package/dist/server/managementEmbed.js.map +1 -1
- package/dist/server/normalAuth.js +29 -26
- package/dist/server/normalAuth.js.map +1 -1
- package/dist/server/passwordVerifier.js +2 -1
- package/dist/server/passwordVerifier.js.map +1 -1
- package/dist/server/piPackageService.js +7 -5
- package/dist/server/piPackageService.js.map +1 -1
- package/dist/server/piWebPluginService.js +27 -11
- package/dist/server/piWebPluginService.js.map +1 -1
- package/dist/server/piWebStatus.js +16 -14
- package/dist/server/piWebStatus.js.map +1 -1
- package/dist/server/plugins/serverPluginRuntime.js +4 -2
- package/dist/server/plugins/serverPluginRuntime.js.map +1 -1
- package/dist/server/projects/projectService.js +4 -3
- package/dist/server/projects/projectService.js.map +1 -1
- package/dist/server/sessiond/projectMutationRoutes.js +5 -4
- package/dist/server/sessiond/projectMutationRoutes.js.map +1 -1
- package/dist/server/sessiond/sessionProxyRoutes.js +11 -8
- package/dist/server/sessiond/sessionProxyRoutes.js.map +1 -1
- package/dist/server/sessiond/workspaceCatalogRoutes.js +5 -3
- package/dist/server/sessiond/workspaceCatalogRoutes.js.map +1 -1
- package/dist/server/sessiond.js +8 -3
- package/dist/server/sessiond.js.map +1 -1
- package/dist/server/sessions/authRoutes.js +20 -19
- package/dist/server/sessions/authRoutes.js.map +1 -1
- package/dist/server/sessions/authService.js +13 -10
- package/dist/server/sessions/authService.js.map +1 -1
- package/dist/server/sessions/builtinCommands.js +28 -21
- package/dist/server/sessions/builtinCommands.js.map +1 -1
- package/dist/server/sessions/oauthLoginFlowService.js +17 -15
- package/dist/server/sessions/oauthLoginFlowService.js.map +1 -1
- package/dist/server/sessions/piSessionService.js +229 -208
- package/dist/server/sessions/piSessionService.js.map +1 -1
- package/dist/server/sessions/projectAuthService.js +5 -3
- package/dist/server/sessions/projectAuthService.js.map +1 -1
- package/dist/server/sessions/sessionArchiveMapping.js +8 -7
- package/dist/server/sessions/sessionArchiveMapping.js.map +1 -1
- package/dist/server/sessions/sessionCleanup.js +4 -3
- package/dist/server/sessions/sessionCleanup.js.map +1 -1
- package/dist/server/sessions/sessionCommandService.js +70 -67
- package/dist/server/sessions/sessionCommandService.js.map +1 -1
- package/dist/server/sessions/sessionNotificationStore.js +12 -11
- package/dist/server/sessions/sessionNotificationStore.js.map +1 -1
- package/dist/server/sessions/sessionRoutes.js +74 -72
- package/dist/server/sessions/sessionRoutes.js.map +1 -1
- package/dist/server/sessions/sessionTreeProjection.js +50 -49
- package/dist/server/sessions/sessionTreeProjection.js.map +1 -1
- package/dist/server/sessions/sessionUnreadStore.js +25 -2
- package/dist/server/sessions/sessionUnreadStore.js.map +1 -1
- package/dist/server/terminals/managementCommandRunService.js +13 -12
- package/dist/server/terminals/managementCommandRunService.js.map +1 -1
- package/dist/server/workbench/accessStateStore.js +9 -7
- package/dist/server/workbench/accessStateStore.js.map +1 -1
- package/dist/server/workbench/capabilitySearch.js +3 -2
- package/dist/server/workbench/capabilitySearch.js.map +1 -1
- package/dist/server/workbench/knowledgeSearch.js +8 -7
- package/dist/server/workbench/knowledgeSearch.js.map +1 -1
- package/dist/server/workbench/mcpClient.js +6 -5
- package/dist/server/workbench/mcpClient.js.map +1 -1
- package/dist/server/workbench/skillSync.js +4 -2
- package/dist/server/workbench/skillSync.js.map +1 -1
- package/dist/server/workbench/workbenchClient.js +8 -7
- package/dist/server/workbench/workbenchClient.js.map +1 -1
- package/dist/server/workbench/workbenchTools.js +8 -6
- package/dist/server/workbench/workbenchTools.js.map +1 -1
- package/dist/server/workingDirectory.js +3 -2
- package/dist/server/workingDirectory.js.map +1 -1
- package/dist/server/workspaceExplorerRoutes.js +16 -13
- package/dist/server/workspaceExplorerRoutes.js.map +1 -1
- package/dist/server/workspaces/fileContentService.js +11 -10
- package/dist/server/workspaces/fileContentService.js.map +1 -1
- package/dist/server/workspaces/fileOperationService.js +7 -6
- package/dist/server/workspaces/fileOperationService.js.map +1 -1
- package/dist/server/workspaces/filePreviewService.js +5 -4
- package/dist/server/workspaces/filePreviewService.js.map +1 -1
- package/dist/server/workspaces/fileSuggestions.js +2 -1
- package/dist/server/workspaces/fileSuggestions.js.map +1 -1
- package/dist/server/workspaces/pathAccessPolicy.js +24 -18
- package/dist/server/workspaces/pathAccessPolicy.js.map +1 -1
- package/dist/server/workspaces/pathSafety.js +6 -5
- package/dist/server/workspaces/pathSafety.js.map +1 -1
- package/dist/server/workspaces/projectPiWebConfig.js +3 -2
- package/dist/server/workspaces/projectPiWebConfig.js.map +1 -1
- package/dist/server/workspaces/workspaceRemovalService.js +4 -3
- package/dist/server/workspaces/workspaceRemovalService.js.map +1 -1
- package/dist/server/workspaces/workspaceRouteErrors.js +4 -2
- package/dist/server/workspaces/workspaceRouteErrors.js.map +1 -1
- package/dist/server/workspaces/workspaceUserError.js +18 -0
- package/dist/server/workspaces/workspaceUserError.js.map +1 -0
- package/dist/server-plugin-api.d.ts +3 -1
- package/dist/server-plugin-api.js.map +1 -1
- package/dist/serverPluginRecovery.js +3 -2
- package/dist/serverPluginRecovery.js.map +1 -1
- package/dist/shared/apiTypes.js.map +1 -1
- package/dist/shared/i18n.js +41 -0
- package/dist/shared/i18n.js.map +1 -0
- package/dist/shared/piWebConfigParsing.js +52 -49
- package/dist/shared/piWebConfigParsing.js.map +1 -1
- package/dist/shared/pluginApiTypes.d.ts +7 -0
- package/dist/shared/requiredTerminalPlugin.js +1 -1
- package/dist/shared/requiredTerminalPlugin.js.map +1 -1
- package/dist/shared/sessionDefaults.js +7 -6
- package/dist/shared/sessionDefaults.js.map +1 -1
- package/dist/shared/thinkingLevels.js +17 -16
- package/dist/shared/thinkingLevels.js.map +1 -1
- package/docs/config.md +10 -1
- package/docs/plugins.md +8 -0
- package/package.json +1 -1
- package/dist/client/assets/index-CFhaGb5m.js +0 -4357
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { UserFacingError, userFacingErrorMessage } from "../../shared/i18n.js";
|
|
2
|
+
import { loadNodeTranslator } from "../../localization.js";
|
|
1
3
|
import { ASK_USER_ID_MAX_LENGTH, ASK_USER_OPTION_LIMIT, ASK_USER_OTHER_TEXT_MAX_LENGTH, ASK_USER_QUESTION_LIMIT, EXTENSION_DIALOG_ID_MAX_LENGTH, EXTENSION_DIALOG_INPUT_MAX_LENGTH, SESSION_TREE_CUSTOM_INSTRUCTIONS_MAX_LENGTH, SESSION_UNREAD_CATALOG_ID_MAX_LENGTH, SESSION_UNREAD_CWD_MAX_LENGTH, SESSION_UNREAD_SESSION_ID_MAX_LENGTH } from "../../shared/apiTypes.js";
|
|
2
4
|
import { parseSessionDefaultsUpdate } from "../../shared/sessionDefaults.js";
|
|
3
5
|
import { projectBrowserMessageResponse } from "../browserMessageProjection.js";
|
|
@@ -9,7 +11,7 @@ const MAX_NOTIFICATION_SESSION_ID_LENGTH = 512;
|
|
|
9
11
|
const MAX_NOTIFICATION_CWD_LENGTH = 32 * 1024;
|
|
10
12
|
const MAX_NOTIFICATION_DAEMON_ID_LENGTH = 512;
|
|
11
13
|
const MAX_NOTIFICATION_ID_LENGTH = 1024;
|
|
12
|
-
export function registerSessionRoutes(app, sessions, eventHub, prefix = "") {
|
|
14
|
+
export function registerSessionRoutes(app, sessions, eventHub, prefix = "", t = loadNodeTranslator("server")) {
|
|
13
15
|
app.get(`${prefix}/sessions`, async (request, reply) => {
|
|
14
16
|
if (request.query.cwd === undefined || request.query.cwd === "")
|
|
15
17
|
return reply.code(400).send({ error: "cwd query parameter is required" });
|
|
@@ -17,7 +19,7 @@ export function registerSessionRoutes(app, sessions, eventHub, prefix = "") {
|
|
|
17
19
|
return await sessions.list(normalizeRequestCwd(request.query.cwd), managementContextFromHeaders(request.headers));
|
|
18
20
|
}
|
|
19
21
|
catch (error) {
|
|
20
|
-
return reply.code(400).send({ error: errorMessage(error) });
|
|
22
|
+
return reply.code(400).send({ error: errorMessage(error, t) });
|
|
21
23
|
}
|
|
22
24
|
});
|
|
23
25
|
app.get(`${prefix}/sessions/search`, async (request, reply) => {
|
|
@@ -29,7 +31,7 @@ export function registerSessionRoutes(app, sessions, eventHub, prefix = "") {
|
|
|
29
31
|
return await sessions.search(normalizeRequestCwd(request.query.cwd), request.query.q, managementContextFromHeaders(request.headers));
|
|
30
32
|
}
|
|
31
33
|
catch (error) {
|
|
32
|
-
return reply.code(400).send({ error: errorMessage(error) });
|
|
34
|
+
return reply.code(400).send({ error: errorMessage(error, t) });
|
|
33
35
|
}
|
|
34
36
|
});
|
|
35
37
|
app.get(`${prefix}/sessions/pins`, async (request, reply) => {
|
|
@@ -39,7 +41,7 @@ export function registerSessionRoutes(app, sessions, eventHub, prefix = "") {
|
|
|
39
41
|
return await sessions.listPinned(normalizeRequestCwd(request.query.cwd), managementContextFromHeaders(request.headers));
|
|
40
42
|
}
|
|
41
43
|
catch (error) {
|
|
42
|
-
return reply.code(400).send({ error: errorMessage(error) });
|
|
44
|
+
return reply.code(400).send({ error: errorMessage(error, t) });
|
|
43
45
|
}
|
|
44
46
|
});
|
|
45
47
|
app.post(`${prefix}/sessions`, async (request, reply) => {
|
|
@@ -56,7 +58,7 @@ export function registerSessionRoutes(app, sessions, eventHub, prefix = "") {
|
|
|
56
58
|
});
|
|
57
59
|
}
|
|
58
60
|
catch (error) {
|
|
59
|
-
return reply.code(400).send({ error: errorMessage(error) });
|
|
61
|
+
return reply.code(400).send({ error: errorMessage(error, t) });
|
|
60
62
|
}
|
|
61
63
|
});
|
|
62
64
|
app.get(`${prefix}/sessions/notifications`, async (request, reply) => {
|
|
@@ -64,7 +66,7 @@ export function registerSessionRoutes(app, sessions, eventHub, prefix = "") {
|
|
|
64
66
|
return await sessions.notificationCatalog(managementContextFromHeaders(request.headers));
|
|
65
67
|
}
|
|
66
68
|
catch (error) {
|
|
67
|
-
return reply.code(400).send({ error: errorMessage(error) });
|
|
69
|
+
return reply.code(400).send({ error: errorMessage(error, t) });
|
|
68
70
|
}
|
|
69
71
|
});
|
|
70
72
|
app.get(`${prefix}/sessions/unread`, async (request, reply) => {
|
|
@@ -72,7 +74,7 @@ export function registerSessionRoutes(app, sessions, eventHub, prefix = "") {
|
|
|
72
74
|
return await sessions.unreadCatalog(managementContextFromHeaders(request.headers));
|
|
73
75
|
}
|
|
74
76
|
catch (error) {
|
|
75
|
-
return reply.code(503).send({ error: errorMessage(error) });
|
|
77
|
+
return reply.code(503).send({ error: errorMessage(error, t) });
|
|
76
78
|
}
|
|
77
79
|
});
|
|
78
80
|
app.post(`${prefix}/sessions/:sessionId/unread/acknowledge`, async (request, reply) => {
|
|
@@ -88,13 +90,13 @@ export function registerSessionRoutes(app, sessions, eventHub, prefix = "") {
|
|
|
88
90
|
};
|
|
89
91
|
}
|
|
90
92
|
catch (error) {
|
|
91
|
-
return reply.code(400).send({ error: errorMessage(error) });
|
|
93
|
+
return reply.code(400).send({ error: errorMessage(error, t) });
|
|
92
94
|
}
|
|
93
95
|
try {
|
|
94
96
|
return await sessions.acknowledgeUnread(sessionId, acknowledgement, managementContextFromHeaders(request.headers));
|
|
95
97
|
}
|
|
96
98
|
catch (error) {
|
|
97
|
-
return reply.code(503).send({ error: errorMessage(error) });
|
|
99
|
+
return reply.code(503).send({ error: errorMessage(error, t) });
|
|
98
100
|
}
|
|
99
101
|
});
|
|
100
102
|
app.post(`${prefix}/sessions/cleanup/preview`, async (request, reply) => {
|
|
@@ -102,7 +104,7 @@ export function registerSessionRoutes(app, sessions, eventHub, prefix = "") {
|
|
|
102
104
|
return await sessions.cleanupPreview(normalizeSessionCleanupRequest(optionalRecord(request.body)));
|
|
103
105
|
}
|
|
104
106
|
catch (error) {
|
|
105
|
-
return reply.code(400).send({ error: errorMessage(error) });
|
|
107
|
+
return reply.code(400).send({ error: errorMessage(error, t) });
|
|
106
108
|
}
|
|
107
109
|
});
|
|
108
110
|
app.post(`${prefix}/sessions/cleanup`, async (request, reply) => {
|
|
@@ -110,7 +112,7 @@ export function registerSessionRoutes(app, sessions, eventHub, prefix = "") {
|
|
|
110
112
|
return await sessions.cleanup(normalizeSessionCleanupRequest(optionalRecord(request.body)), managementContextFromHeaders(request.headers));
|
|
111
113
|
}
|
|
112
114
|
catch (error) {
|
|
113
|
-
return reply.code(400).send({ error: errorMessage(error) });
|
|
115
|
+
return reply.code(400).send({ error: errorMessage(error, t) });
|
|
114
116
|
}
|
|
115
117
|
});
|
|
116
118
|
app.post(`${prefix}/sessions/bulk/archive`, async (request, reply) => {
|
|
@@ -118,7 +120,7 @@ export function registerSessionRoutes(app, sessions, eventHub, prefix = "") {
|
|
|
118
120
|
return await sessions.archiveMany(bulkMutationRefsFromBody(request.body), managementContextFromHeaders(request.headers));
|
|
119
121
|
}
|
|
120
122
|
catch (error) {
|
|
121
|
-
return reply.code(mutationErrorStatus(error)).send({ error: errorMessage(error) });
|
|
123
|
+
return reply.code(mutationErrorStatus(error)).send({ error: errorMessage(error, t) });
|
|
122
124
|
}
|
|
123
125
|
});
|
|
124
126
|
app.post(`${prefix}/sessions/bulk/delete-archived`, async (request, reply) => {
|
|
@@ -126,7 +128,7 @@ export function registerSessionRoutes(app, sessions, eventHub, prefix = "") {
|
|
|
126
128
|
return await sessions.deleteArchivedMany(bulkMutationRefsFromBody(request.body), managementContextFromHeaders(request.headers));
|
|
127
129
|
}
|
|
128
130
|
catch (error) {
|
|
129
|
-
return reply.code(mutationErrorStatus(error)).send({ error: errorMessage(error) });
|
|
131
|
+
return reply.code(mutationErrorStatus(error)).send({ error: errorMessage(error, t) });
|
|
130
132
|
}
|
|
131
133
|
});
|
|
132
134
|
app.put(`${prefix}/sessions/:sessionId/pin`, async (request, reply) => {
|
|
@@ -135,7 +137,7 @@ export function registerSessionRoutes(app, sessions, eventHub, prefix = "") {
|
|
|
135
137
|
return await sessions.setPinned(sessionLookupFromRequiredCwd(request.params.sessionId, body), true, managementContextFromHeaders(request.headers));
|
|
136
138
|
}
|
|
137
139
|
catch (error) {
|
|
138
|
-
return reply.code(mutationErrorStatus(error)).send({ error: errorMessage(error) });
|
|
140
|
+
return reply.code(mutationErrorStatus(error)).send({ error: errorMessage(error, t) });
|
|
139
141
|
}
|
|
140
142
|
});
|
|
141
143
|
app.delete(`${prefix}/sessions/:sessionId/pin`, async (request, reply) => {
|
|
@@ -143,7 +145,7 @@ export function registerSessionRoutes(app, sessions, eventHub, prefix = "") {
|
|
|
143
145
|
return await sessions.setPinned(sessionLookupFromRequiredCwd(request.params.sessionId, request.query), false, managementContextFromHeaders(request.headers));
|
|
144
146
|
}
|
|
145
147
|
catch (error) {
|
|
146
|
-
return reply.code(mutationErrorStatus(error)).send({ error: errorMessage(error) });
|
|
148
|
+
return reply.code(mutationErrorStatus(error)).send({ error: errorMessage(error, t) });
|
|
147
149
|
}
|
|
148
150
|
});
|
|
149
151
|
app.get(`${prefix}/sessions/:sessionId/notifications`, async (request, reply) => {
|
|
@@ -151,7 +153,7 @@ export function registerSessionRoutes(app, sessions, eventHub, prefix = "") {
|
|
|
151
153
|
return await sessions.notificationInbox(notificationRefFromQuery(request.params.sessionId, request.query), managementContextFromHeaders(request.headers));
|
|
152
154
|
}
|
|
153
155
|
catch (error) {
|
|
154
|
-
return reply.code(notificationErrorStatus(error)).send({ error: errorMessage(error) });
|
|
156
|
+
return reply.code(notificationErrorStatus(error)).send({ error: errorMessage(error, t) });
|
|
155
157
|
}
|
|
156
158
|
});
|
|
157
159
|
app.post(`${prefix}/sessions/:sessionId/notifications/dismiss`, async (request, reply) => {
|
|
@@ -164,7 +166,7 @@ export function registerSessionRoutes(app, sessions, eventHub, prefix = "") {
|
|
|
164
166
|
}, managementContextFromHeaders(request.headers));
|
|
165
167
|
}
|
|
166
168
|
catch (error) {
|
|
167
|
-
return reply.code(notificationErrorStatus(error)).send({ error: errorMessage(error) });
|
|
169
|
+
return reply.code(notificationErrorStatus(error)).send({ error: errorMessage(error, t) });
|
|
168
170
|
}
|
|
169
171
|
});
|
|
170
172
|
app.post(`${prefix}/sessions/:sessionId/notifications/dismiss-all`, async (request, reply) => {
|
|
@@ -178,11 +180,11 @@ export function registerSessionRoutes(app, sessions, eventHub, prefix = "") {
|
|
|
178
180
|
}, managementContextFromHeaders(request.headers));
|
|
179
181
|
}
|
|
180
182
|
catch (error) {
|
|
181
|
-
return reply.code(notificationErrorStatus(error)).send({ error: errorMessage(error) });
|
|
183
|
+
return reply.code(notificationErrorStatus(error)).send({ error: errorMessage(error, t) });
|
|
182
184
|
}
|
|
183
185
|
});
|
|
184
186
|
app.get(`${prefix}/sessions/:sessionId/messages`, async (request, reply) => {
|
|
185
|
-
const ref = sessionRefFromQueryOr400(request.params.sessionId, request.query, reply);
|
|
187
|
+
const ref = sessionRefFromQueryOr400(request.params.sessionId, request.query, reply, t);
|
|
186
188
|
if (ref === undefined)
|
|
187
189
|
return reply;
|
|
188
190
|
try {
|
|
@@ -191,18 +193,18 @@ export function registerSessionRoutes(app, sessions, eventHub, prefix = "") {
|
|
|
191
193
|
return projectBrowserMessageResponse(messages);
|
|
192
194
|
}
|
|
193
195
|
catch (error) {
|
|
194
|
-
return reply.code(404).send({ error: errorMessage(error) });
|
|
196
|
+
return reply.code(404).send({ error: errorMessage(error, t) });
|
|
195
197
|
}
|
|
196
198
|
});
|
|
197
199
|
app.get(`${prefix}/sessions/:sessionId/status`, async (request, reply) => {
|
|
198
|
-
const ref = sessionRefFromQueryOr400(request.params.sessionId, request.query, reply);
|
|
200
|
+
const ref = sessionRefFromQueryOr400(request.params.sessionId, request.query, reply, t);
|
|
199
201
|
if (ref === undefined)
|
|
200
202
|
return reply;
|
|
201
203
|
try {
|
|
202
204
|
return await sessions.status(ref, managementContextFromHeaders(request.headers));
|
|
203
205
|
}
|
|
204
206
|
catch (error) {
|
|
205
|
-
return reply.code(404).send({ error: errorMessage(error) });
|
|
207
|
+
return reply.code(404).send({ error: errorMessage(error, t) });
|
|
206
208
|
}
|
|
207
209
|
});
|
|
208
210
|
app.get(`${prefix}/sessions/search-content`, async (request, reply) => {
|
|
@@ -214,40 +216,40 @@ export function registerSessionRoutes(app, sessions, eventHub, prefix = "") {
|
|
|
214
216
|
return await sessions.searchContent(normalizeRequestCwd(request.query.cwd), request.query.q, managementContextFromHeaders(request.headers));
|
|
215
217
|
}
|
|
216
218
|
catch (error) {
|
|
217
|
-
return reply.code(400).send({ error: errorMessage(error) });
|
|
219
|
+
return reply.code(400).send({ error: errorMessage(error, t) });
|
|
218
220
|
}
|
|
219
221
|
});
|
|
220
222
|
app.get(`${prefix}/sessions/:sessionId/stream-snapshot`, async (request, reply) => {
|
|
221
|
-
const ref = sessionRefFromQueryOr400(request.params.sessionId, request.query, reply);
|
|
223
|
+
const ref = sessionRefFromQueryOr400(request.params.sessionId, request.query, reply, t);
|
|
222
224
|
if (ref === undefined)
|
|
223
225
|
return reply;
|
|
224
226
|
try {
|
|
225
227
|
return await sessions.streamSnapshot(ref, managementContextFromHeaders(request.headers));
|
|
226
228
|
}
|
|
227
229
|
catch (error) {
|
|
228
|
-
return reply.code(404).send({ error: errorMessage(error) });
|
|
230
|
+
return reply.code(404).send({ error: errorMessage(error, t) });
|
|
229
231
|
}
|
|
230
232
|
});
|
|
231
233
|
app.get(`${prefix}/sessions/:sessionId/models`, async (request, reply) => {
|
|
232
|
-
const ref = sessionRefFromQueryOr400(request.params.sessionId, request.query, reply);
|
|
234
|
+
const ref = sessionRefFromQueryOr400(request.params.sessionId, request.query, reply, t);
|
|
233
235
|
if (ref === undefined)
|
|
234
236
|
return reply;
|
|
235
237
|
try {
|
|
236
238
|
return { models: await sessions.availableModels(ref, managementContextFromHeaders(request.headers)) };
|
|
237
239
|
}
|
|
238
240
|
catch (error) {
|
|
239
|
-
return reply.code(404).send({ error: errorMessage(error) });
|
|
241
|
+
return reply.code(404).send({ error: errorMessage(error, t) });
|
|
240
242
|
}
|
|
241
243
|
});
|
|
242
244
|
app.get(`${prefix}/sessions/:sessionId/models/catalog`, async (request, reply) => {
|
|
243
|
-
const ref = sessionRefFromQueryOr400(request.params.sessionId, request.query, reply);
|
|
245
|
+
const ref = sessionRefFromQueryOr400(request.params.sessionId, request.query, reply, t);
|
|
244
246
|
if (ref === undefined)
|
|
245
247
|
return reply;
|
|
246
248
|
try {
|
|
247
249
|
return { models: await sessions.modelCatalog(ref, managementContextFromHeaders(request.headers)) };
|
|
248
250
|
}
|
|
249
251
|
catch (error) {
|
|
250
|
-
return reply.code(404).send({ error: errorMessage(error) });
|
|
252
|
+
return reply.code(404).send({ error: errorMessage(error, t) });
|
|
251
253
|
}
|
|
252
254
|
});
|
|
253
255
|
app.post(`${prefix}/sessions/:sessionId/models/enabled`, async (request, reply) => {
|
|
@@ -256,7 +258,7 @@ export function registerSessionRoutes(app, sessions, eventHub, prefix = "") {
|
|
|
256
258
|
return { models: await sessions.setModelEnabled(sessionLookupFromBody(request.params.sessionId, body), requireString(body, "provider"), requireString(body, "modelId"), requireBoolean(body, "enabled"), managementContextFromHeaders(request.headers)) };
|
|
257
259
|
}
|
|
258
260
|
catch (error) {
|
|
259
|
-
return reply.code(mutationErrorStatus(error)).send({ error: errorMessage(error) });
|
|
261
|
+
return reply.code(mutationErrorStatus(error)).send({ error: errorMessage(error, t) });
|
|
260
262
|
}
|
|
261
263
|
});
|
|
262
264
|
app.post(`${prefix}/sessions/:sessionId/models/scope`, async (request, reply) => {
|
|
@@ -264,11 +266,11 @@ export function registerSessionRoutes(app, sessions, eventHub, prefix = "") {
|
|
|
264
266
|
const body = optionalRecord(request.body);
|
|
265
267
|
const mode = body["mode"];
|
|
266
268
|
if (!isSessionModelScopeMode(mode))
|
|
267
|
-
throw new Error("mode
|
|
269
|
+
throw new Error(t("server.main.6a6ece1f173c", "mode field must be all or current"));
|
|
268
270
|
return { models: await sessions.setModelScope(sessionLookupFromBody(request.params.sessionId, body), mode, managementContextFromHeaders(request.headers)) };
|
|
269
271
|
}
|
|
270
272
|
catch (error) {
|
|
271
|
-
return reply.code(mutationErrorStatus(error)).send({ error: errorMessage(error) });
|
|
273
|
+
return reply.code(mutationErrorStatus(error)).send({ error: errorMessage(error, t) });
|
|
272
274
|
}
|
|
273
275
|
});
|
|
274
276
|
app.post(`${prefix}/sessions/:sessionId/model`, async (request, reply) => {
|
|
@@ -277,7 +279,7 @@ export function registerSessionRoutes(app, sessions, eventHub, prefix = "") {
|
|
|
277
279
|
return await sessions.setModel(sessionLookupFromBody(request.params.sessionId, body), requireString(body, "provider"), requireString(body, "modelId"), managementContextFromHeaders(request.headers));
|
|
278
280
|
}
|
|
279
281
|
catch (error) {
|
|
280
|
-
return reply.code(mutationErrorStatus(error)).send({ error: errorMessage(error) });
|
|
282
|
+
return reply.code(mutationErrorStatus(error)).send({ error: errorMessage(error, t) });
|
|
281
283
|
}
|
|
282
284
|
});
|
|
283
285
|
app.post(`${prefix}/sessions/:sessionId/model/cycle`, async (request, reply) => {
|
|
@@ -289,7 +291,7 @@ export function registerSessionRoutes(app, sessions, eventHub, prefix = "") {
|
|
|
289
291
|
return await sessions.cycleModel(sessionLookupFromBody(request.params.sessionId, body), direction ?? "forward", managementContextFromHeaders(request.headers));
|
|
290
292
|
}
|
|
291
293
|
catch (error) {
|
|
292
|
-
return reply.code(mutationErrorStatus(error)).send({ error: errorMessage(error) });
|
|
294
|
+
return reply.code(mutationErrorStatus(error)).send({ error: errorMessage(error, t) });
|
|
293
295
|
}
|
|
294
296
|
});
|
|
295
297
|
app.get(`${prefix}/sessions/:sessionId/defaults`, async (request, reply) => {
|
|
@@ -297,7 +299,7 @@ export function registerSessionRoutes(app, sessions, eventHub, prefix = "") {
|
|
|
297
299
|
return await sessions.getSessionDefaults(sessionLookupFromQuery(request.params.sessionId, request.query), managementContextFromHeaders(request.headers));
|
|
298
300
|
}
|
|
299
301
|
catch (error) {
|
|
300
|
-
return reply.code(mutationErrorStatus(error)).send({ error: errorMessage(error) });
|
|
302
|
+
return reply.code(mutationErrorStatus(error)).send({ error: errorMessage(error, t) });
|
|
301
303
|
}
|
|
302
304
|
});
|
|
303
305
|
app.post(`${prefix}/sessions/:sessionId/defaults`, async (request, reply) => {
|
|
@@ -306,18 +308,18 @@ export function registerSessionRoutes(app, sessions, eventHub, prefix = "") {
|
|
|
306
308
|
return await sessions.setSessionDefaults(sessionLookupFromBody(request.params.sessionId, body), parseSessionDefaultsUpdate(body), managementContextFromHeaders(request.headers));
|
|
307
309
|
}
|
|
308
310
|
catch (error) {
|
|
309
|
-
return reply.code(mutationErrorStatus(error)).send({ error: errorMessage(error) });
|
|
311
|
+
return reply.code(mutationErrorStatus(error)).send({ error: errorMessage(error, t) });
|
|
310
312
|
}
|
|
311
313
|
});
|
|
312
314
|
app.get(`${prefix}/sessions/:sessionId/thinking-levels`, async (request, reply) => {
|
|
313
|
-
const ref = sessionRefFromQueryOr400(request.params.sessionId, request.query, reply);
|
|
315
|
+
const ref = sessionRefFromQueryOr400(request.params.sessionId, request.query, reply, t);
|
|
314
316
|
if (ref === undefined)
|
|
315
317
|
return reply;
|
|
316
318
|
try {
|
|
317
319
|
return { levels: await sessions.availableThinkingLevels(ref, managementContextFromHeaders(request.headers)) };
|
|
318
320
|
}
|
|
319
321
|
catch (error) {
|
|
320
|
-
return reply.code(404).send({ error: errorMessage(error) });
|
|
322
|
+
return reply.code(404).send({ error: errorMessage(error, t) });
|
|
321
323
|
}
|
|
322
324
|
});
|
|
323
325
|
app.post(`${prefix}/sessions/:sessionId/thinking-level`, async (request, reply) => {
|
|
@@ -328,7 +330,7 @@ export function registerSessionRoutes(app, sessions, eventHub, prefix = "") {
|
|
|
328
330
|
return await sessions.setThinkingLevel(sessionLookupFromBody(request.params.sessionId, body), requireThinkingLevel(body["level"]), managementContextFromHeaders(request.headers));
|
|
329
331
|
}
|
|
330
332
|
catch (error) {
|
|
331
|
-
return reply.code(mutationErrorStatus(error)).send({ error: errorMessage(error) });
|
|
333
|
+
return reply.code(mutationErrorStatus(error)).send({ error: errorMessage(error, t) });
|
|
332
334
|
}
|
|
333
335
|
});
|
|
334
336
|
app.post(`${prefix}/sessions/:sessionId/thinking-level/cycle`, async (request, reply) => {
|
|
@@ -337,18 +339,18 @@ export function registerSessionRoutes(app, sessions, eventHub, prefix = "") {
|
|
|
337
339
|
return await sessions.cycleThinkingLevel(sessionLookupFromBody(request.params.sessionId, body), managementContextFromHeaders(request.headers));
|
|
338
340
|
}
|
|
339
341
|
catch (error) {
|
|
340
|
-
return reply.code(mutationErrorStatus(error)).send({ error: errorMessage(error) });
|
|
342
|
+
return reply.code(mutationErrorStatus(error)).send({ error: errorMessage(error, t) });
|
|
341
343
|
}
|
|
342
344
|
});
|
|
343
345
|
app.get(`${prefix}/sessions/:sessionId/commands`, async (request, reply) => {
|
|
344
|
-
const ref = sessionRefFromQueryOr400(request.params.sessionId, request.query, reply);
|
|
346
|
+
const ref = sessionRefFromQueryOr400(request.params.sessionId, request.query, reply, t);
|
|
345
347
|
if (ref === undefined)
|
|
346
348
|
return reply;
|
|
347
349
|
try {
|
|
348
350
|
return await sessions.commands(ref, managementContextFromHeaders(request.headers));
|
|
349
351
|
}
|
|
350
352
|
catch (error) {
|
|
351
|
-
return reply.code(404).send({ error: errorMessage(error) });
|
|
353
|
+
return reply.code(404).send({ error: errorMessage(error, t) });
|
|
352
354
|
}
|
|
353
355
|
});
|
|
354
356
|
app.post(`${prefix}/sessions/:sessionId/prompt`, async (request, reply) => {
|
|
@@ -359,7 +361,7 @@ export function registerSessionRoutes(app, sessions, eventHub, prefix = "") {
|
|
|
359
361
|
return { accepted: true };
|
|
360
362
|
}
|
|
361
363
|
catch (error) {
|
|
362
|
-
return reply.code(mutationErrorStatus(error)).send({ error: errorMessage(error) });
|
|
364
|
+
return reply.code(mutationErrorStatus(error)).send({ error: errorMessage(error, t) });
|
|
363
365
|
}
|
|
364
366
|
});
|
|
365
367
|
app.post(`${prefix}/sessions/:sessionId/queue/clear`, async (request, reply) => {
|
|
@@ -367,7 +369,7 @@ export function registerSessionRoutes(app, sessions, eventHub, prefix = "") {
|
|
|
367
369
|
return await sessions.clearQueue(sessionLookupFromBody(request.params.sessionId, optionalRecord(request.body)), managementContextFromHeaders(request.headers));
|
|
368
370
|
}
|
|
369
371
|
catch (error) {
|
|
370
|
-
return reply.code(mutationErrorStatus(error)).send({ error: errorMessage(error) });
|
|
372
|
+
return reply.code(mutationErrorStatus(error)).send({ error: errorMessage(error, t) });
|
|
371
373
|
}
|
|
372
374
|
});
|
|
373
375
|
app.post(`${prefix}/sessions/:sessionId/ask/submit`, async (request, reply) => {
|
|
@@ -377,7 +379,7 @@ export function registerSessionRoutes(app, sessions, eventHub, prefix = "") {
|
|
|
377
379
|
return await sessions.submitAsk(sessionLookupFromBody(request.params.sessionId, body), askId, askUserSubmissionFromBody(body), managementContextFromHeaders(request.headers));
|
|
378
380
|
}
|
|
379
381
|
catch (error) {
|
|
380
|
-
return reply.code(mutationErrorStatus(error)).send({ error: errorMessage(error) });
|
|
382
|
+
return reply.code(mutationErrorStatus(error)).send({ error: errorMessage(error, t) });
|
|
381
383
|
}
|
|
382
384
|
});
|
|
383
385
|
app.post(`${prefix}/sessions/:sessionId/ask/cancel`, async (request, reply) => {
|
|
@@ -386,7 +388,7 @@ export function registerSessionRoutes(app, sessions, eventHub, prefix = "") {
|
|
|
386
388
|
return await sessions.cancelAsk(sessionLookupFromBody(request.params.sessionId, body), requireBoundedId(body["askId"], "askId"), managementContextFromHeaders(request.headers));
|
|
387
389
|
}
|
|
388
390
|
catch (error) {
|
|
389
|
-
return reply.code(mutationErrorStatus(error)).send({ error: errorMessage(error) });
|
|
391
|
+
return reply.code(mutationErrorStatus(error)).send({ error: errorMessage(error, t) });
|
|
390
392
|
}
|
|
391
393
|
});
|
|
392
394
|
app.post(`${prefix}/sessions/:sessionId/dialogs/answer`, async (request, reply) => {
|
|
@@ -396,7 +398,7 @@ export function registerSessionRoutes(app, sessions, eventHub, prefix = "") {
|
|
|
396
398
|
return await sessions.answerDialog(sessionLookupFromBody(request.params.sessionId, body), answer.dialogId, answer.value, managementContextFromHeaders(request.headers));
|
|
397
399
|
}
|
|
398
400
|
catch (error) {
|
|
399
|
-
return reply.code(mutationErrorStatus(error)).send({ error: errorMessage(error) });
|
|
401
|
+
return reply.code(mutationErrorStatus(error)).send({ error: errorMessage(error, t) });
|
|
400
402
|
}
|
|
401
403
|
});
|
|
402
404
|
app.post(`${prefix}/sessions/:sessionId/dialogs/cancel`, async (request, reply) => {
|
|
@@ -406,7 +408,7 @@ export function registerSessionRoutes(app, sessions, eventHub, prefix = "") {
|
|
|
406
408
|
return await sessions.cancelDialog(sessionLookupFromBody(request.params.sessionId, body), cancel.dialogId, managementContextFromHeaders(request.headers));
|
|
407
409
|
}
|
|
408
410
|
catch (error) {
|
|
409
|
-
return reply.code(mutationErrorStatus(error)).send({ error: errorMessage(error) });
|
|
411
|
+
return reply.code(mutationErrorStatus(error)).send({ error: errorMessage(error, t) });
|
|
410
412
|
}
|
|
411
413
|
});
|
|
412
414
|
app.post(`${prefix}/sessions/:sessionId/warnings/dismiss`, async (request, reply) => {
|
|
@@ -415,7 +417,7 @@ export function registerSessionRoutes(app, sessions, eventHub, prefix = "") {
|
|
|
415
417
|
return await sessions.dismissWarning(sessionLookupFromBody(request.params.sessionId, body), requireString(body, "dismissId"), managementContextFromHeaders(request.headers));
|
|
416
418
|
}
|
|
417
419
|
catch (error) {
|
|
418
|
-
return reply.code(mutationErrorStatus(error)).send({ error: errorMessage(error) });
|
|
420
|
+
return reply.code(mutationErrorStatus(error)).send({ error: errorMessage(error, t) });
|
|
419
421
|
}
|
|
420
422
|
});
|
|
421
423
|
app.post(`${prefix}/sessions/:sessionId/attachments`, async (request, reply) => {
|
|
@@ -428,7 +430,7 @@ export function registerSessionRoutes(app, sessions, eventHub, prefix = "") {
|
|
|
428
430
|
return { attachments };
|
|
429
431
|
}
|
|
430
432
|
catch (error) {
|
|
431
|
-
return reply.code(mutationErrorStatus(error)).send({ error: errorMessage(error) });
|
|
433
|
+
return reply.code(mutationErrorStatus(error)).send({ error: errorMessage(error, t) });
|
|
432
434
|
}
|
|
433
435
|
});
|
|
434
436
|
app.post(`${prefix}/sessions/:sessionId/shell`, async (request, reply) => {
|
|
@@ -438,7 +440,7 @@ export function registerSessionRoutes(app, sessions, eventHub, prefix = "") {
|
|
|
438
440
|
return { accepted: true };
|
|
439
441
|
}
|
|
440
442
|
catch (error) {
|
|
441
|
-
return reply.code(mutationErrorStatus(error)).send({ error: errorMessage(error) });
|
|
443
|
+
return reply.code(mutationErrorStatus(error)).send({ error: errorMessage(error, t) });
|
|
442
444
|
}
|
|
443
445
|
});
|
|
444
446
|
app.post(`${prefix}/sessions/:sessionId/commands/run`, async (request, reply) => {
|
|
@@ -447,7 +449,7 @@ export function registerSessionRoutes(app, sessions, eventHub, prefix = "") {
|
|
|
447
449
|
return await sessions.runCommand(sessionLookupFromBody(request.params.sessionId, body), requireString(body, "text"), managementContextFromHeaders(request.headers));
|
|
448
450
|
}
|
|
449
451
|
catch (error) {
|
|
450
|
-
return reply.code(mutationErrorStatus(error)).send({ error: errorMessage(error) });
|
|
452
|
+
return reply.code(mutationErrorStatus(error)).send({ error: errorMessage(error, t) });
|
|
451
453
|
}
|
|
452
454
|
});
|
|
453
455
|
app.post(`${prefix}/sessions/:sessionId/commands/respond`, async (request, reply) => {
|
|
@@ -456,7 +458,7 @@ export function registerSessionRoutes(app, sessions, eventHub, prefix = "") {
|
|
|
456
458
|
return await sessions.respondToCommand(sessionLookupFromBody(request.params.sessionId, body), requireString(body, "requestId"), requireString(body, "value"), managementContextFromHeaders(request.headers));
|
|
457
459
|
}
|
|
458
460
|
catch (error) {
|
|
459
|
-
return reply.code(mutationErrorStatus(error)).send({ error: errorMessage(error) });
|
|
461
|
+
return reply.code(mutationErrorStatus(error)).send({ error: errorMessage(error, t) });
|
|
460
462
|
}
|
|
461
463
|
});
|
|
462
464
|
app.post(`${prefix}/sessions/:sessionId/tree/navigate`, async (request, reply) => {
|
|
@@ -465,7 +467,7 @@ export function registerSessionRoutes(app, sessions, eventHub, prefix = "") {
|
|
|
465
467
|
return await sessions.navigateTree(sessionLookupFromBody(request.params.sessionId, body), sessionTreeNavigateRequestFromBody(body), managementContextFromHeaders(request.headers));
|
|
466
468
|
}
|
|
467
469
|
catch (error) {
|
|
468
|
-
return reply.code(mutationErrorStatus(error)).send({ error: errorMessage(error) });
|
|
470
|
+
return reply.code(mutationErrorStatus(error)).send({ error: errorMessage(error, t) });
|
|
469
471
|
}
|
|
470
472
|
});
|
|
471
473
|
app.post(`${prefix}/sessions/:sessionId/tree/fork`, async (request, reply) => {
|
|
@@ -474,7 +476,7 @@ export function registerSessionRoutes(app, sessions, eventHub, prefix = "") {
|
|
|
474
476
|
return await sessions.forkFromTree(sessionLookupFromBody(request.params.sessionId, body), sessionTreeForkRequestFromBody(body), managementContextFromHeaders(request.headers));
|
|
475
477
|
}
|
|
476
478
|
catch (error) {
|
|
477
|
-
return reply.code(mutationErrorStatus(error)).send({ error: errorMessage(error) });
|
|
479
|
+
return reply.code(mutationErrorStatus(error)).send({ error: errorMessage(error, t) });
|
|
478
480
|
}
|
|
479
481
|
});
|
|
480
482
|
app.post(`${prefix}/sessions/:sessionId/abort`, async (request, reply) => {
|
|
@@ -483,7 +485,7 @@ export function registerSessionRoutes(app, sessions, eventHub, prefix = "") {
|
|
|
483
485
|
return { aborted: true };
|
|
484
486
|
}
|
|
485
487
|
catch (error) {
|
|
486
|
-
return reply.code(mutationErrorStatus(error)).send({ error: errorMessage(error) });
|
|
488
|
+
return reply.code(mutationErrorStatus(error)).send({ error: errorMessage(error, t) });
|
|
487
489
|
}
|
|
488
490
|
});
|
|
489
491
|
app.post(`${prefix}/sessions/:sessionId/stop`, async (request, reply) => {
|
|
@@ -492,7 +494,7 @@ export function registerSessionRoutes(app, sessions, eventHub, prefix = "") {
|
|
|
492
494
|
return { stopped: true };
|
|
493
495
|
}
|
|
494
496
|
catch (error) {
|
|
495
|
-
return reply.code(mutationErrorStatus(error)).send({ error: errorMessage(error) });
|
|
497
|
+
return reply.code(mutationErrorStatus(error)).send({ error: errorMessage(error, t) });
|
|
496
498
|
}
|
|
497
499
|
});
|
|
498
500
|
app.post(`${prefix}/sessions/:sessionId/archive`, async (request, reply) => {
|
|
@@ -501,7 +503,7 @@ export function registerSessionRoutes(app, sessions, eventHub, prefix = "") {
|
|
|
501
503
|
return { archived: true };
|
|
502
504
|
}
|
|
503
505
|
catch (error) {
|
|
504
|
-
return reply.code(mutationErrorStatus(error)).send({ error: errorMessage(error) });
|
|
506
|
+
return reply.code(mutationErrorStatus(error)).send({ error: errorMessage(error, t) });
|
|
505
507
|
}
|
|
506
508
|
});
|
|
507
509
|
app.post(`${prefix}/sessions/:sessionId/archive-tree`, async (request, reply) => {
|
|
@@ -509,7 +511,7 @@ export function registerSessionRoutes(app, sessions, eventHub, prefix = "") {
|
|
|
509
511
|
return await sessions.archiveTree(sessionLookupFromBody(request.params.sessionId, optionalRecord(request.body)), managementContextFromHeaders(request.headers));
|
|
510
512
|
}
|
|
511
513
|
catch (error) {
|
|
512
|
-
return reply.code(mutationErrorStatus(error)).send({ error: errorMessage(error) });
|
|
514
|
+
return reply.code(mutationErrorStatus(error)).send({ error: errorMessage(error, t) });
|
|
513
515
|
}
|
|
514
516
|
});
|
|
515
517
|
app.post(`${prefix}/sessions/:sessionId/restore`, async (request, reply) => {
|
|
@@ -518,7 +520,7 @@ export function registerSessionRoutes(app, sessions, eventHub, prefix = "") {
|
|
|
518
520
|
return { restored: true };
|
|
519
521
|
}
|
|
520
522
|
catch (error) {
|
|
521
|
-
return reply.code(mutationErrorStatus(error)).send({ error: errorMessage(error) });
|
|
523
|
+
return reply.code(mutationErrorStatus(error)).send({ error: errorMessage(error, t) });
|
|
522
524
|
}
|
|
523
525
|
});
|
|
524
526
|
app.delete(`${prefix}/sessions/:sessionId`, async (request, reply) => {
|
|
@@ -527,7 +529,7 @@ export function registerSessionRoutes(app, sessions, eventHub, prefix = "") {
|
|
|
527
529
|
return { deleted: true };
|
|
528
530
|
}
|
|
529
531
|
catch (error) {
|
|
530
|
-
return reply.code(mutationErrorStatus(error)).send({ error: errorMessage(error) });
|
|
532
|
+
return reply.code(mutationErrorStatus(error)).send({ error: errorMessage(error, t) });
|
|
531
533
|
}
|
|
532
534
|
});
|
|
533
535
|
app.post(`${prefix}/sessions/:sessionId/reload`, async (request, reply) => {
|
|
@@ -536,7 +538,7 @@ export function registerSessionRoutes(app, sessions, eventHub, prefix = "") {
|
|
|
536
538
|
return { reloaded: true };
|
|
537
539
|
}
|
|
538
540
|
catch (error) {
|
|
539
|
-
return reply.code(mutationErrorStatus(error)).send({ error: errorMessage(error) });
|
|
541
|
+
return reply.code(mutationErrorStatus(error)).send({ error: errorMessage(error, t) });
|
|
540
542
|
}
|
|
541
543
|
});
|
|
542
544
|
app.post(`${prefix}/sessions/:sessionId/detach-parent`, async (request, reply) => {
|
|
@@ -545,7 +547,7 @@ export function registerSessionRoutes(app, sessions, eventHub, prefix = "") {
|
|
|
545
547
|
return { detached: true };
|
|
546
548
|
}
|
|
547
549
|
catch (error) {
|
|
548
|
-
return reply.code(mutationErrorStatus(error)).send({ error: errorMessage(error) });
|
|
550
|
+
return reply.code(mutationErrorStatus(error)).send({ error: errorMessage(error, t) });
|
|
549
551
|
}
|
|
550
552
|
});
|
|
551
553
|
app.get(`${prefix}/sessions/:sessionId/events`, { websocket: true }, (socket, request) => {
|
|
@@ -574,7 +576,7 @@ function parseBulkMutationRef(value) {
|
|
|
574
576
|
throw new Error("id field must not be empty");
|
|
575
577
|
const cwd = record["cwd"];
|
|
576
578
|
if (typeof cwd !== "string" || cwd === "")
|
|
577
|
-
throw new
|
|
579
|
+
throw new UserFacingError("routing.cwdRequired", "cwd field is required");
|
|
578
580
|
return { id, cwd: normalizeRequestCwd(cwd) };
|
|
579
581
|
}
|
|
580
582
|
function notificationRefFromQuery(id, query) {
|
|
@@ -591,12 +593,12 @@ function notificationRef(id, cwd) {
|
|
|
591
593
|
cwd: normalizeRequestCwd(cwd),
|
|
592
594
|
};
|
|
593
595
|
}
|
|
594
|
-
function sessionRefFromQueryOr400(id, query, reply) {
|
|
596
|
+
function sessionRefFromQueryOr400(id, query, reply, t) {
|
|
595
597
|
try {
|
|
596
598
|
return sessionLookupFromQuery(id, query);
|
|
597
599
|
}
|
|
598
600
|
catch (error) {
|
|
599
|
-
reply.code(400).send({ error: errorMessage(error) });
|
|
601
|
+
reply.code(400).send({ error: errorMessage(error, t) });
|
|
600
602
|
return undefined;
|
|
601
603
|
}
|
|
602
604
|
}
|
|
@@ -620,7 +622,7 @@ function sessionLookupFromBody(id, body) {
|
|
|
620
622
|
function sessionLookupFromRequiredCwd(id, value, message = "cwd query parameter is required") {
|
|
621
623
|
const cwd = value.cwd;
|
|
622
624
|
if (typeof cwd !== "string" || cwd === "")
|
|
623
|
-
throw new
|
|
625
|
+
throw new UserFacingError(message === "cwd field is required" ? "routing.cwdRequired" : "routing.cwdQueryRequired", message);
|
|
624
626
|
return { id, cwd: normalizeRequestCwd(cwd) };
|
|
625
627
|
}
|
|
626
628
|
function sessionTreeNavigateRequestFromBody(body) {
|
|
@@ -701,10 +703,10 @@ function extensionDialogAnswerFromBody(body) {
|
|
|
701
703
|
return { dialogId, value };
|
|
702
704
|
if (typeof value === "string") {
|
|
703
705
|
if (value.length > EXTENSION_DIALOG_INPUT_MAX_LENGTH)
|
|
704
|
-
throw new
|
|
706
|
+
throw new UserFacingError("routing.valueLength", "value exceeds its length limit");
|
|
705
707
|
return { dialogId, value };
|
|
706
708
|
}
|
|
707
|
-
throw new
|
|
709
|
+
throw new UserFacingError("routing.valueType", "value must be a boolean or string");
|
|
708
710
|
}
|
|
709
711
|
function extensionDialogCancelFromBody(body) {
|
|
710
712
|
return { dialogId: requireNonEmptyBoundedString(body["dialogId"], "dialogId", EXTENSION_DIALOG_ID_MAX_LENGTH) };
|
|
@@ -787,8 +789,8 @@ function optionalNumber(value) {
|
|
|
787
789
|
function isSessionModelScopeMode(value) {
|
|
788
790
|
return value === "all" || value === "current";
|
|
789
791
|
}
|
|
790
|
-
function errorMessage(error) {
|
|
791
|
-
return error
|
|
792
|
+
function errorMessage(error, t = loadNodeTranslator("server")) {
|
|
793
|
+
return userFacingErrorMessage(error, t);
|
|
792
794
|
}
|
|
793
795
|
function mutationErrorStatus(error) {
|
|
794
796
|
return isSessionNotFoundError(error) ? 404 : 400;
|
|
@@ -797,7 +799,7 @@ function notificationErrorStatus(error) {
|
|
|
797
799
|
return isSessionNotFoundError(error) ? 404 : 400;
|
|
798
800
|
}
|
|
799
801
|
function isSessionNotFoundError(error) {
|
|
800
|
-
const message =
|
|
802
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
801
803
|
return message === "Session not found" || message === "Archived session not found" || message === "未找到会话" || message === "未找到已归档会话";
|
|
802
804
|
}
|
|
803
805
|
function isRecord(value) {
|