@jmfederico/pi-web 1.202606.6 → 1.202607.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 +87 -293
- package/dist/cli.js +25 -7
- package/dist/cli.js.map +1 -1
- package/dist/client/assets/CodeViewer-tXF3UTsY.js +4 -0
- package/dist/client/assets/TerminalPanel-D_ihiWAt.js +187 -0
- package/dist/client/assets/UnifiedDiffViewer-BziirXBJ.js +39 -0
- package/dist/client/assets/index-Brfk1lwl.js +2950 -0
- package/dist/client/assets/vendor-editor-core-vUi74DnD.js +12 -0
- package/dist/client/assets/vendor-editor-languages-DoaXUodB.js +46 -0
- package/dist/client/assets/vendor-editor-legacy-CYBnW6ZU.js +1 -0
- package/dist/client/assets/vendor-terminal-BrP-ENHg.css +1 -0
- package/dist/client/assets/vendor-terminal-D8k4UKM2.js +35 -0
- package/dist/client/index.html +6 -3
- package/dist/config.js +33 -1
- package/dist/config.js.map +1 -1
- package/dist/docker/piWebDockerCommandPlan.js +211 -0
- package/dist/docker/piWebDockerCommandPlan.js.map +1 -0
- package/dist/pi-web-plugins/updates/pi-web-plugin.js +15 -5
- package/dist/pi-web-plugins/updates/updatesLogic.js +37 -5
- package/dist/piWebVersionReport.js +4 -0
- package/dist/piWebVersionReport.js.map +1 -1
- package/dist/plugin-api.d.ts +30 -2
- package/dist/server/app.js +32 -5
- package/dist/server/app.js.map +1 -1
- package/dist/server/browserMessageProjection.js +56 -0
- package/dist/server/browserMessageProjection.js.map +1 -0
- package/dist/server/configRoutes.js +112 -2
- package/dist/server/configRoutes.js.map +1 -1
- package/dist/server/machines/machineClient.js +51 -13
- package/dist/server/machines/machineClient.js.map +1 -1
- package/dist/server/machines/machineProxyRoutes.js +72 -4
- package/dist/server/machines/machineProxyRoutes.js.map +1 -1
- package/dist/server/machines/machineService.js +4 -26
- package/dist/server/machines/machineService.js.map +1 -1
- package/dist/server/piPackageRoutes.js +87 -0
- package/dist/server/piPackageRoutes.js.map +1 -0
- package/dist/server/piPackageService.js +69 -0
- package/dist/server/piPackageService.js.map +1 -0
- package/dist/server/piWebPluginService.js +43 -8
- package/dist/server/piWebPluginService.js.map +1 -1
- package/dist/server/piWebStatus.js +57 -0
- package/dist/server/piWebStatus.js.map +1 -1
- package/dist/server/realtime/sessionEventHub.js +2 -1
- package/dist/server/realtime/sessionEventHub.js.map +1 -1
- package/dist/server/sessions/attachmentService.js +69 -11
- package/dist/server/sessions/attachmentService.js.map +1 -1
- package/dist/server/sessions/builtinCommands.js +1 -1
- package/dist/server/sessions/builtinCommands.js.map +1 -1
- package/dist/server/sessions/piSessionManagerGateway.js +20 -2
- package/dist/server/sessions/piSessionManagerGateway.js.map +1 -1
- package/dist/server/sessions/piSessionService.js +905 -73
- package/dist/server/sessions/piSessionService.js.map +1 -1
- package/dist/server/sessions/sessionArchiveStore.js +51 -22
- package/dist/server/sessions/sessionArchiveStore.js.map +1 -1
- package/dist/server/sessions/sessionCleanup.js +157 -0
- package/dist/server/sessions/sessionCleanup.js.map +1 -0
- package/dist/server/sessions/sessionCommandService.js +16 -0
- package/dist/server/sessions/sessionCommandService.js.map +1 -1
- package/dist/server/sessions/sessionNameGenerator.js +27 -44
- package/dist/server/sessions/sessionNameGenerator.js.map +1 -1
- package/dist/server/sessions/sessionRoutes.js +55 -1
- package/dist/server/sessions/sessionRoutes.js.map +1 -1
- package/dist/server/sessions/spawnSessionTool.js +9 -4
- package/dist/server/sessions/spawnSessionTool.js.map +1 -1
- package/dist/server/sessions/spawnSubsessionTool.js +28 -18
- package/dist/server/sessions/spawnSubsessionTool.js.map +1 -1
- package/dist/server/workspaceExplorerRoutes.js +55 -3
- package/dist/server/workspaceExplorerRoutes.js.map +1 -1
- package/dist/server/workspaces/fileContentService.js +112 -1
- package/dist/server/workspaces/fileContentService.js.map +1 -1
- package/dist/server/workspaces/fileSuggestions.js +7 -3
- package/dist/server/workspaces/fileSuggestions.js.map +1 -1
- package/dist/server/workspaces/pathSafety.js +16 -1
- package/dist/server/workspaces/pathSafety.js.map +1 -1
- package/dist/server/workspaces/projectPiWebConfig.js +6 -1
- package/dist/server/workspaces/projectPiWebConfig.js.map +1 -1
- package/dist/shared/activity.js +0 -15
- package/dist/shared/activity.js.map +1 -1
- package/dist/shared/apiTypes.d.ts +146 -7
- package/dist/shared/apiTypes.js +5 -0
- package/dist/shared/apiTypes.js.map +1 -1
- package/dist/shared/capabilities.js +29 -2
- package/dist/shared/capabilities.js.map +1 -1
- package/dist/shared/federatedRoutes.js +15 -0
- package/dist/shared/federatedRoutes.js.map +1 -1
- package/dist/shared/piWebStatusParsing.js +20 -8
- package/dist/shared/piWebStatusParsing.js.map +1 -1
- package/dist/shared/promptAttachments.js +30 -11
- package/dist/shared/promptAttachments.js.map +1 -1
- package/dist/shared/thinkingLevels.d.ts +1 -1
- package/dist/shared/thinkingLevels.js +1 -1
- package/dist/shared/thinkingLevels.js.map +1 -1
- package/docs/config.md +62 -14
- package/docs/plugins.md +155 -17
- package/package.json +35 -31
- package/dist/client/assets/CodeViewer-Bv8l_MFi.js +0 -4
- package/dist/client/assets/TerminalPanel-BZKsaE9s.js +0 -126
- package/dist/client/assets/index-C9oPLpm7.js +0 -2408
- package/dist/client/assets/vendor-editor-core-Bc1A7SO7.js +0 -12
- package/dist/client/assets/vendor-editor-languages-D0CnB2js.js +0 -26
- package/dist/client/assets/vendor-editor-legacy-B4QLsWF8.js +0 -1
- package/dist/client/assets/vendor-terminal-DDGTF8rc.css +0 -1
- package/dist/client/assets/vendor-terminal-DjQ08hXu.js +0 -16
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { readFile } from "node:fs/promises";
|
|
2
2
|
import { join } from "node:path";
|
|
3
|
-
import { parsePathAccessConfig } from "../../config.js";
|
|
3
|
+
import { effectiveUploadsConfig, parsePathAccessConfig, parseUploadsConfig } from "../../config.js";
|
|
4
4
|
export const PROJECT_PI_WEB_CONFIG_PATH = ".pi-web/config.json";
|
|
5
5
|
export async function loadProjectPiWebConfig(projectPath) {
|
|
6
6
|
const path = join(projectPath, PROJECT_PI_WEB_CONFIG_PATH);
|
|
@@ -20,6 +20,10 @@ export async function loadEffectiveProjectPathAccess(projectPath, globalConfig)
|
|
|
20
20
|
const projectConfig = await loadProjectPiWebConfig(projectPath);
|
|
21
21
|
return mergePathAccessConfigs(globalConfig.pathAccess, projectConfig.config.pathAccess);
|
|
22
22
|
}
|
|
23
|
+
export async function loadEffectiveProjectUploadsConfig(projectPath, globalConfig) {
|
|
24
|
+
const projectConfig = await loadProjectPiWebConfig(projectPath);
|
|
25
|
+
return effectiveUploadsConfig({ uploads: { ...(globalConfig.uploads ?? {}), ...(projectConfig.config.uploads ?? {}) } });
|
|
26
|
+
}
|
|
23
27
|
export function mergePathAccessConfigs(...configs) {
|
|
24
28
|
const allowedPaths = dedupe(configs.flatMap((config) => config?.allowedPaths ?? []));
|
|
25
29
|
return allowedPaths.length === 0 ? undefined : { allowedPaths };
|
|
@@ -29,6 +33,7 @@ function parseProjectPiWebConfig(value, path) {
|
|
|
29
33
|
return {
|
|
30
34
|
...(version !== undefined ? { version: parseProjectConfigVersion(version, path) } : {}),
|
|
31
35
|
...(value["pathAccess"] !== undefined ? { pathAccess: parsePathAccessConfig(value["pathAccess"], path) } : {}),
|
|
36
|
+
...(value["uploads"] !== undefined ? { uploads: parseUploadsConfig(value["uploads"], path) } : {}),
|
|
32
37
|
};
|
|
33
38
|
}
|
|
34
39
|
function parseProjectConfigVersion(value, path) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"projectPiWebConfig.js","sourceRoot":"","sources":["../../../src/server/workspaces/projectPiWebConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,qBAAqB,EAAoB,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"projectPiWebConfig.js","sourceRoot":"","sources":["../../../src/server/workspaces/projectPiWebConfig.ts"],"names":[],"mappings":"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"}
|
package/dist/shared/activity.js
CHANGED
|
@@ -5,21 +5,6 @@ export function isSessionActive(status, activity) {
|
|
|
5
5
|
|| status?.isCompacting === true
|
|
6
6
|
|| (status?.pendingMessageCount ?? 0) > 0;
|
|
7
7
|
}
|
|
8
|
-
export function sessionActivityLabel(status, activity) {
|
|
9
|
-
if (activity?.phase === "active")
|
|
10
|
-
return activity.detail !== undefined && activity.detail !== "" ? `${activity.label}: ${activity.detail}` : activity.label;
|
|
11
|
-
if (status === undefined)
|
|
12
|
-
return undefined;
|
|
13
|
-
if (status.isCompacting)
|
|
14
|
-
return "compacting";
|
|
15
|
-
if (status.isBashRunning)
|
|
16
|
-
return "bash";
|
|
17
|
-
if (status.isStreaming)
|
|
18
|
-
return "streaming";
|
|
19
|
-
if (status.pendingMessageCount > 0)
|
|
20
|
-
return `${String(status.pendingMessageCount)} pending`;
|
|
21
|
-
return undefined;
|
|
22
|
-
}
|
|
23
8
|
export function isWorkspaceActivityActive(activity) {
|
|
24
9
|
return activity !== undefined && (activity.hasSessionActivity || activity.hasTerminalActivity);
|
|
25
10
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"activity.js","sourceRoot":"","sources":["../../src/shared/activity.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,eAAe,CAAC,MAAsB,EAAE,QAA0B;IAChF,OAAO,QAAQ,EAAE,KAAK,KAAK,QAAQ;WAC9B,MAAM,EAAE,WAAW,KAAK,IAAI;WAC5B,MAAM,EAAE,aAAa,KAAK,IAAI;WAC9B,MAAM,EAAE,YAAY,KAAK,IAAI;WAC7B,CAAC,MAAM,EAAE,mBAAmB,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,
|
|
1
|
+
{"version":3,"file":"activity.js","sourceRoot":"","sources":["../../src/shared/activity.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,eAAe,CAAC,MAAsB,EAAE,QAA0B;IAChF,OAAO,QAAQ,EAAE,KAAK,KAAK,QAAQ;WAC9B,MAAM,EAAE,WAAW,KAAK,IAAI;WAC5B,MAAM,EAAE,aAAa,KAAK,IAAI;WAC9B,MAAM,EAAE,YAAY,KAAK,IAAI;WAC7B,CAAC,MAAM,EAAE,mBAAmB,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,QAAuC;IAC/E,OAAO,QAAQ,KAAK,SAAS,IAAI,CAAC,QAAQ,CAAC,kBAAkB,IAAI,QAAQ,CAAC,mBAAmB,CAAC,CAAC;AACjG,CAAC"}
|
|
@@ -2,9 +2,14 @@ export type MachineKind = "local" | "remote";
|
|
|
2
2
|
export type MachineStatus = "unknown" | "online" | "offline" | "error";
|
|
3
3
|
export declare const PI_WEB_CAPABILITIES: {
|
|
4
4
|
readonly sessionsDeleteArchived: "sessions.deleteArchived";
|
|
5
|
+
readonly sessionsBulkMutations: "sessions.bulkMutations";
|
|
6
|
+
readonly sessionsCleanup: "sessions.cleanup";
|
|
5
7
|
readonly sessionsReload: "sessions.reload";
|
|
8
|
+
readonly sessionsPersistedState: "sessions.persistedState";
|
|
6
9
|
readonly promptAttachments: "prompt.attachments";
|
|
7
10
|
readonly workspaceFileSuggestions: "workspace.fileSuggestions";
|
|
11
|
+
readonly piPackagesManage: "piPackages.manage";
|
|
12
|
+
readonly selectedMachineSettings: "settings.selectedMachine";
|
|
8
13
|
};
|
|
9
14
|
export type PiWebCapability = typeof PI_WEB_CAPABILITIES[keyof typeof PI_WEB_CAPABILITIES];
|
|
10
15
|
export interface Machine {
|
|
@@ -47,6 +52,9 @@ export interface PiWebPluginConfig {
|
|
|
47
52
|
export interface PiWebPathAccessConfig {
|
|
48
53
|
allowedPaths?: string[];
|
|
49
54
|
}
|
|
55
|
+
export interface PiWebUploadsConfig {
|
|
56
|
+
defaultFolder?: string;
|
|
57
|
+
}
|
|
50
58
|
export interface PiWebConfigValues {
|
|
51
59
|
host?: string;
|
|
52
60
|
port?: number;
|
|
@@ -55,6 +63,8 @@ export interface PiWebConfigValues {
|
|
|
55
63
|
plugins?: PiWebPluginConfigMap;
|
|
56
64
|
/** External filesystem roots PI WEB may expose outside a workspace. */
|
|
57
65
|
pathAccess?: PiWebPathAccessConfig;
|
|
66
|
+
/** Workspace-relative defaults for manual file uploads. */
|
|
67
|
+
uploads?: PiWebUploadsConfig;
|
|
58
68
|
/** Maximum accepted HTTP request body size in bytes (uploads/attachments). */
|
|
59
69
|
maxUploadBytes?: number;
|
|
60
70
|
/** When true, LLMs can start new sessions via the spawn_session tool. */
|
|
@@ -79,6 +89,35 @@ export interface PiWebPluginInfo {
|
|
|
79
89
|
export interface PiWebPluginsResponse {
|
|
80
90
|
plugins: PiWebPluginInfo[];
|
|
81
91
|
}
|
|
92
|
+
export type PiPackageScope = "user" | "project";
|
|
93
|
+
export interface PiPackageInfo {
|
|
94
|
+
source: string;
|
|
95
|
+
scope: PiPackageScope;
|
|
96
|
+
filtered: boolean;
|
|
97
|
+
installedPath?: string;
|
|
98
|
+
}
|
|
99
|
+
export interface PiPackagesResponse {
|
|
100
|
+
packages: PiPackageInfo[];
|
|
101
|
+
}
|
|
102
|
+
export interface PiPackageInstallRequest {
|
|
103
|
+
source: string;
|
|
104
|
+
}
|
|
105
|
+
export interface PiPackageRemoveRequest {
|
|
106
|
+
source: string;
|
|
107
|
+
/** Optional known scope from a listed package; not an install-location picker. */
|
|
108
|
+
scope?: PiPackageScope;
|
|
109
|
+
}
|
|
110
|
+
export interface PiPackageUpdateRequest {
|
|
111
|
+
/** Omit to update all configured Pi packages. */
|
|
112
|
+
source?: string;
|
|
113
|
+
}
|
|
114
|
+
export type PiPackageMutationAction = "install" | "remove" | "update";
|
|
115
|
+
export interface PiPackageMutationResponse extends PiPackagesResponse {
|
|
116
|
+
action: PiPackageMutationAction;
|
|
117
|
+
source?: string;
|
|
118
|
+
scope?: PiPackageScope;
|
|
119
|
+
removed?: boolean;
|
|
120
|
+
}
|
|
82
121
|
export interface PiWebConfigEnvOverrides {
|
|
83
122
|
host: boolean;
|
|
84
123
|
port: boolean;
|
|
@@ -99,6 +138,9 @@ export interface Project {
|
|
|
99
138
|
path: string;
|
|
100
139
|
createdAt: string;
|
|
101
140
|
}
|
|
141
|
+
export interface WorkspaceEffectiveConfig {
|
|
142
|
+
uploads?: PiWebUploadsConfig;
|
|
143
|
+
}
|
|
102
144
|
export interface Workspace {
|
|
103
145
|
id: string;
|
|
104
146
|
projectId: string;
|
|
@@ -108,6 +150,8 @@ export interface Workspace {
|
|
|
108
150
|
isMain: boolean;
|
|
109
151
|
isGitRepo: boolean;
|
|
110
152
|
isGitWorktree: boolean;
|
|
153
|
+
/** Workspace-effective project/global settings needed by workspace UI features. */
|
|
154
|
+
effectiveConfig?: WorkspaceEffectiveConfig;
|
|
111
155
|
}
|
|
112
156
|
export interface SessionRef {
|
|
113
157
|
id: string;
|
|
@@ -115,6 +159,8 @@ export interface SessionRef {
|
|
|
115
159
|
}
|
|
116
160
|
export interface SessionInfo extends SessionRef {
|
|
117
161
|
path: string;
|
|
162
|
+
/** True when the server has verified a backing session file exists; false when known transient. */
|
|
163
|
+
persisted?: boolean;
|
|
118
164
|
name?: string;
|
|
119
165
|
created: string;
|
|
120
166
|
modified: string;
|
|
@@ -130,6 +176,61 @@ export interface ArchiveSessionsResponse {
|
|
|
130
176
|
archivedCount?: number;
|
|
131
177
|
skippedAlreadyArchivedCount?: number;
|
|
132
178
|
}
|
|
179
|
+
export interface SessionBulkMutationRef {
|
|
180
|
+
id: string;
|
|
181
|
+
cwd?: string;
|
|
182
|
+
}
|
|
183
|
+
export interface SessionBulkMutationRequest {
|
|
184
|
+
sessions: SessionBulkMutationRef[];
|
|
185
|
+
}
|
|
186
|
+
export interface SessionBulkFailure {
|
|
187
|
+
sessionId: string;
|
|
188
|
+
error: string;
|
|
189
|
+
}
|
|
190
|
+
export interface SessionBulkArchiveResponse {
|
|
191
|
+
archived: true;
|
|
192
|
+
archivedSessionIds: string[];
|
|
193
|
+
failures: SessionBulkFailure[];
|
|
194
|
+
generatedAt: string;
|
|
195
|
+
}
|
|
196
|
+
export interface SessionBulkDeleteArchivedResponse {
|
|
197
|
+
deleted: true;
|
|
198
|
+
deletedSessionIds: string[];
|
|
199
|
+
failures: SessionBulkFailure[];
|
|
200
|
+
generatedAt: string;
|
|
201
|
+
}
|
|
202
|
+
export interface SessionCleanupRequest {
|
|
203
|
+
/** Archive non-archived sessions whose modified time is older than this many days. Omit/null to disable. */
|
|
204
|
+
archiveIdleDays?: number | null;
|
|
205
|
+
/** Permanently delete archived sessions whose archivedAt time is older than this many days. Omit/null to disable. */
|
|
206
|
+
deleteArchivedDays?: number | null;
|
|
207
|
+
/** Stored cwd paths selected from a preview. Omit/null to include all discovered project/workspace paths. */
|
|
208
|
+
projectCwds?: string[] | null;
|
|
209
|
+
}
|
|
210
|
+
export interface SessionCleanupThresholds {
|
|
211
|
+
archiveIdleDays?: number;
|
|
212
|
+
deleteArchivedDays?: number;
|
|
213
|
+
}
|
|
214
|
+
export interface SessionCleanupProjectSummary {
|
|
215
|
+
cwd: string;
|
|
216
|
+
archiveCount: number;
|
|
217
|
+
deleteCount: number;
|
|
218
|
+
}
|
|
219
|
+
export interface SessionCleanupTotals {
|
|
220
|
+
archiveCount: number;
|
|
221
|
+
deleteCount: number;
|
|
222
|
+
}
|
|
223
|
+
export interface SessionCleanupPreviewResponse {
|
|
224
|
+
generatedAt: string;
|
|
225
|
+
thresholds: SessionCleanupThresholds;
|
|
226
|
+
projects: SessionCleanupProjectSummary[];
|
|
227
|
+
totals: SessionCleanupTotals;
|
|
228
|
+
skippedBusySessionIds?: string[];
|
|
229
|
+
}
|
|
230
|
+
export interface SessionCleanupExecuteResponse extends SessionCleanupPreviewResponse {
|
|
231
|
+
archivedSessionIds: string[];
|
|
232
|
+
deletedSessionIds: string[];
|
|
233
|
+
}
|
|
133
234
|
export interface SessionActivity {
|
|
134
235
|
sessionId: string;
|
|
135
236
|
phase: "active" | "idle" | "error";
|
|
@@ -142,20 +243,30 @@ export interface QueuedSessionMessage {
|
|
|
142
243
|
text: string;
|
|
143
244
|
}
|
|
144
245
|
/**
|
|
145
|
-
* A
|
|
146
|
-
* `ImageContent` shape (`{ type: "image", data, mimeType }`) so
|
|
147
|
-
*
|
|
246
|
+
* A pi-native image attachment carried with a prompt. The wire format mirrors
|
|
247
|
+
* pi's own `ImageContent` shape (`{ type: "image", data, mimeType }`) so these
|
|
248
|
+
* attachments are compatible with native multimodal delivery after validation.
|
|
148
249
|
*/
|
|
149
|
-
export interface
|
|
150
|
-
/** Kind of attachment. Only images are supported by pi today. */
|
|
250
|
+
export interface PromptImageAttachment {
|
|
151
251
|
kind: "image";
|
|
152
|
-
/**
|
|
252
|
+
/** Supported image MIME type (image/png, image/jpeg, image/gif, or image/webp). */
|
|
153
253
|
mimeType: string;
|
|
154
254
|
/** Base64-encoded binary payload (no data: URL prefix). */
|
|
155
255
|
data: string;
|
|
156
256
|
/** Optional original filename, used for previews and folder-mode filenames. */
|
|
157
257
|
name?: string;
|
|
158
258
|
}
|
|
259
|
+
/** A general file attachment that must be saved into the workspace before use. */
|
|
260
|
+
export interface PromptFileAttachment {
|
|
261
|
+
kind: "file";
|
|
262
|
+
/** Non-empty IANA MIME type (for example "application/pdf"). */
|
|
263
|
+
mimeType: string;
|
|
264
|
+
/** Base64-encoded binary payload (no data: URL prefix). Empty for zero-byte files. */
|
|
265
|
+
data: string;
|
|
266
|
+
/** Optional original filename, used for previews and folder-mode filenames. */
|
|
267
|
+
name?: string;
|
|
268
|
+
}
|
|
269
|
+
export type PromptAttachment = PromptImageAttachment | PromptFileAttachment;
|
|
159
270
|
/**
|
|
160
271
|
* How prompt attachments should be delivered to the session.
|
|
161
272
|
* - "inline": send the binary to pi as native image content (multimodal input).
|
|
@@ -225,6 +336,8 @@ export interface ThinkingLevelsResponse {
|
|
|
225
336
|
}
|
|
226
337
|
export interface SessionStatus {
|
|
227
338
|
sessionId: string;
|
|
339
|
+
/** True when the server has verified a backing session file exists; false when known transient. */
|
|
340
|
+
persisted?: boolean;
|
|
228
341
|
model?: SessionModel;
|
|
229
342
|
thinkingLevel?: string;
|
|
230
343
|
isStreaming: boolean;
|
|
@@ -292,6 +405,30 @@ export interface FileContentResponse {
|
|
|
292
405
|
truncated: boolean;
|
|
293
406
|
binary: boolean;
|
|
294
407
|
}
|
|
408
|
+
export interface WriteWorkspaceFileOptions {
|
|
409
|
+
createDirs?: boolean;
|
|
410
|
+
overwrite?: boolean;
|
|
411
|
+
}
|
|
412
|
+
export interface WriteWorkspaceFileResponse {
|
|
413
|
+
path: string;
|
|
414
|
+
size: number;
|
|
415
|
+
modifiedAt: string;
|
|
416
|
+
created: boolean;
|
|
417
|
+
}
|
|
418
|
+
export interface DeleteWorkspaceFileResponse {
|
|
419
|
+
path: string;
|
|
420
|
+
existed: boolean;
|
|
421
|
+
}
|
|
422
|
+
export interface MoveWorkspaceFileOptions {
|
|
423
|
+
createDirs?: boolean;
|
|
424
|
+
overwrite?: boolean;
|
|
425
|
+
}
|
|
426
|
+
export interface MoveWorkspaceFileResponse {
|
|
427
|
+
fromPath: string;
|
|
428
|
+
toPath: string;
|
|
429
|
+
size: number;
|
|
430
|
+
modifiedAt: string;
|
|
431
|
+
}
|
|
295
432
|
export type GitFileState = "unmodified" | "modified" | "added" | "deleted" | "renamed" | "copied" | "untracked" | "ignored" | "conflicted";
|
|
296
433
|
export interface GitStatusFile {
|
|
297
434
|
path: string;
|
|
@@ -360,13 +497,15 @@ export interface TerminalCommandRunFilter {
|
|
|
360
497
|
}
|
|
361
498
|
export type PiWebServiceComponent = "web" | "sessiond";
|
|
362
499
|
export type PiWebStatusSeverity = "info" | "warning" | "error";
|
|
363
|
-
export type PiWebInstallationKind = "pi-package" | "npm-global" | "local" | "unknown";
|
|
500
|
+
export type PiWebInstallationKind = "pi-package" | "npm-global" | "local" | "docker" | "unknown";
|
|
501
|
+
export type PiWebDockerMode = "runtime" | "dev";
|
|
364
502
|
export interface PiWebInstallationInfo {
|
|
365
503
|
kind: PiWebInstallationKind;
|
|
366
504
|
path?: string;
|
|
367
505
|
source?: string;
|
|
368
506
|
scope?: "user" | "project";
|
|
369
507
|
npmRoot?: string;
|
|
508
|
+
dockerMode?: PiWebDockerMode;
|
|
370
509
|
}
|
|
371
510
|
export interface PiWebComponentStatus {
|
|
372
511
|
component: PiWebServiceComponent;
|
package/dist/shared/apiTypes.js
CHANGED
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
export const PI_WEB_CAPABILITIES = {
|
|
2
2
|
sessionsDeleteArchived: "sessions.deleteArchived",
|
|
3
|
+
sessionsBulkMutations: "sessions.bulkMutations",
|
|
4
|
+
sessionsCleanup: "sessions.cleanup",
|
|
3
5
|
sessionsReload: "sessions.reload",
|
|
6
|
+
sessionsPersistedState: "sessions.persistedState",
|
|
4
7
|
promptAttachments: "prompt.attachments",
|
|
5
8
|
workspaceFileSuggestions: "workspace.fileSuggestions",
|
|
9
|
+
piPackagesManage: "piPackages.manage",
|
|
10
|
+
selectedMachineSettings: "settings.selectedMachine",
|
|
6
11
|
};
|
|
7
12
|
//# sourceMappingURL=apiTypes.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apiTypes.js","sourceRoot":"","sources":["../../src/shared/apiTypes.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,sBAAsB,EAAE,yBAAyB;IACjD,cAAc,EAAE,iBAAiB;IACjC,iBAAiB,EAAE,oBAAoB;IACvC,wBAAwB,EAAE,2BAA2B;
|
|
1
|
+
{"version":3,"file":"apiTypes.js","sourceRoot":"","sources":["../../src/shared/apiTypes.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,sBAAsB,EAAE,yBAAyB;IACjD,qBAAqB,EAAE,wBAAwB;IAC/C,eAAe,EAAE,kBAAkB;IACnC,cAAc,EAAE,iBAAiB;IACjC,sBAAsB,EAAE,yBAAyB;IACjD,iBAAiB,EAAE,oBAAoB;IACvC,wBAAwB,EAAE,2BAA2B;IACrD,gBAAgB,EAAE,mBAAmB;IACrC,uBAAuB,EAAE,0BAA0B;CAC3C,CAAC"}
|
|
@@ -2,13 +2,35 @@ import { PI_WEB_CAPABILITIES } from "./apiTypes.js";
|
|
|
2
2
|
export { PI_WEB_CAPABILITIES };
|
|
3
3
|
export const KNOWN_PI_WEB_CAPABILITIES = Object.values(PI_WEB_CAPABILITIES);
|
|
4
4
|
const knownPiWebCapabilities = new Set(KNOWN_PI_WEB_CAPABILITIES);
|
|
5
|
-
export const WEB_RUNTIME_CAPABILITIES = [
|
|
6
|
-
|
|
5
|
+
export const WEB_RUNTIME_CAPABILITIES = [
|
|
6
|
+
PI_WEB_CAPABILITIES.sessionsDeleteArchived,
|
|
7
|
+
PI_WEB_CAPABILITIES.sessionsBulkMutations,
|
|
8
|
+
PI_WEB_CAPABILITIES.sessionsCleanup,
|
|
9
|
+
PI_WEB_CAPABILITIES.sessionsReload,
|
|
10
|
+
PI_WEB_CAPABILITIES.sessionsPersistedState,
|
|
11
|
+
PI_WEB_CAPABILITIES.promptAttachments,
|
|
12
|
+
PI_WEB_CAPABILITIES.workspaceFileSuggestions,
|
|
13
|
+
PI_WEB_CAPABILITIES.piPackagesManage,
|
|
14
|
+
PI_WEB_CAPABILITIES.selectedMachineSettings,
|
|
15
|
+
];
|
|
16
|
+
export const SESSIOND_RUNTIME_CAPABILITIES = [
|
|
17
|
+
PI_WEB_CAPABILITIES.sessionsDeleteArchived,
|
|
18
|
+
PI_WEB_CAPABILITIES.sessionsBulkMutations,
|
|
19
|
+
PI_WEB_CAPABILITIES.sessionsCleanup,
|
|
20
|
+
PI_WEB_CAPABILITIES.sessionsReload,
|
|
21
|
+
PI_WEB_CAPABILITIES.sessionsPersistedState,
|
|
22
|
+
PI_WEB_CAPABILITIES.promptAttachments,
|
|
23
|
+
];
|
|
7
24
|
const EFFECTIVE_CAPABILITY_REQUIREMENTS = {
|
|
8
25
|
[PI_WEB_CAPABILITIES.sessionsDeleteArchived]: ["web", "sessiond"],
|
|
26
|
+
[PI_WEB_CAPABILITIES.sessionsBulkMutations]: ["web", "sessiond"],
|
|
27
|
+
[PI_WEB_CAPABILITIES.sessionsCleanup]: ["web", "sessiond"],
|
|
9
28
|
[PI_WEB_CAPABILITIES.sessionsReload]: ["web", "sessiond"],
|
|
29
|
+
[PI_WEB_CAPABILITIES.sessionsPersistedState]: ["web", "sessiond"],
|
|
10
30
|
[PI_WEB_CAPABILITIES.promptAttachments]: ["web", "sessiond"],
|
|
11
31
|
[PI_WEB_CAPABILITIES.workspaceFileSuggestions]: ["web"],
|
|
32
|
+
[PI_WEB_CAPABILITIES.piPackagesManage]: ["web"],
|
|
33
|
+
[PI_WEB_CAPABILITIES.selectedMachineSettings]: ["web"],
|
|
12
34
|
};
|
|
13
35
|
export function isPiWebCapability(value) {
|
|
14
36
|
return typeof value === "string" && knownPiWebCapabilities.has(value);
|
|
@@ -16,6 +38,11 @@ export function isPiWebCapability(value) {
|
|
|
16
38
|
export function supportsPiWebCapability(source, capability) {
|
|
17
39
|
return source?.capabilities?.includes(capability) === true;
|
|
18
40
|
}
|
|
41
|
+
export function parseKnownPiWebCapabilities(value) {
|
|
42
|
+
if (!Array.isArray(value) || !value.every((capability) => typeof capability === "string"))
|
|
43
|
+
return undefined;
|
|
44
|
+
return value.filter(isPiWebCapability);
|
|
45
|
+
}
|
|
19
46
|
export function effectivePiWebCapabilities(components) {
|
|
20
47
|
return KNOWN_PI_WEB_CAPABILITIES.filter((capability) => {
|
|
21
48
|
const requiredComponents = EFFECTIVE_CAPABILITY_REQUIREMENTS[capability];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capabilities.js","sourceRoot":"","sources":["../../src/shared/capabilities.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAgF,MAAM,eAAe,CAAC;AAElI,OAAO,EAAE,mBAAmB,EAAE,CAAC;AAG/B,MAAM,CAAC,MAAM,yBAAyB,GAAG,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;AAC5E,MAAM,sBAAsB,GAAwB,IAAI,GAAG,CAAC,yBAAyB,CAAC,CAAC;AAEvF,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,mBAAmB,CAAC,
|
|
1
|
+
{"version":3,"file":"capabilities.js","sourceRoot":"","sources":["../../src/shared/capabilities.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,13 @@
|
|
|
1
|
+
export const PI_PACKAGE_MUTATION_PROXY_TIMEOUT_MS = 5 * 60_000;
|
|
1
2
|
export const FEDERATED_HTTP_ROUTES = [
|
|
2
3
|
{ method: "GET", path: "/pi-web/status" },
|
|
4
|
+
{ method: "GET", path: "/config" },
|
|
5
|
+
{ method: "PUT", path: "/config" },
|
|
6
|
+
{ method: "GET", path: "/plugins" },
|
|
7
|
+
{ method: "GET", path: "/pi-packages" },
|
|
8
|
+
{ method: "POST", path: "/pi-packages/install", timeoutMs: PI_PACKAGE_MUTATION_PROXY_TIMEOUT_MS },
|
|
9
|
+
{ method: "POST", path: "/pi-packages/remove", timeoutMs: PI_PACKAGE_MUTATION_PROXY_TIMEOUT_MS },
|
|
10
|
+
{ method: "POST", path: "/pi-packages/update", timeoutMs: PI_PACKAGE_MUTATION_PROXY_TIMEOUT_MS },
|
|
3
11
|
{ method: "GET", path: "/projects" },
|
|
4
12
|
{ method: "POST", path: "/projects" },
|
|
5
13
|
{ method: "DELETE", path: "/projects/:projectId" },
|
|
@@ -8,6 +16,9 @@ export const FEDERATED_HTTP_ROUTES = [
|
|
|
8
16
|
{ method: "DELETE", path: "/projects/:projectId/workspaces/:workspaceId" },
|
|
9
17
|
{ method: "GET", path: "/projects/:projectId/workspaces/:workspaceId/tree" },
|
|
10
18
|
{ method: "GET", path: "/projects/:projectId/workspaces/:workspaceId/file" },
|
|
19
|
+
{ method: "PUT", path: "/projects/:projectId/workspaces/:workspaceId/file" },
|
|
20
|
+
{ method: "DELETE", path: "/projects/:projectId/workspaces/:workspaceId/file" },
|
|
21
|
+
{ method: "POST", path: "/projects/:projectId/workspaces/:workspaceId/file/move" },
|
|
11
22
|
{ method: "GET", path: "/projects/:projectId/workspaces/:workspaceId/file/preview" },
|
|
12
23
|
{ method: "GET", path: "/projects/:projectId/workspaces/:workspaceId/files" },
|
|
13
24
|
{ method: "GET", path: "/projects/:projectId/workspaces/:workspaceId/git/status" },
|
|
@@ -25,6 +36,10 @@ export const FEDERATED_HTTP_ROUTES = [
|
|
|
25
36
|
{ method: "GET", path: "/activity" },
|
|
26
37
|
{ method: "GET", path: "/sessions" },
|
|
27
38
|
{ method: "POST", path: "/sessions" },
|
|
39
|
+
{ method: "POST", path: "/sessions/cleanup/preview" },
|
|
40
|
+
{ method: "POST", path: "/sessions/cleanup" },
|
|
41
|
+
{ method: "POST", path: "/sessions/bulk/archive" },
|
|
42
|
+
{ method: "POST", path: "/sessions/bulk/delete-archived" },
|
|
28
43
|
{ method: "GET", path: "/sessions/:sessionId/messages" },
|
|
29
44
|
{ method: "GET", path: "/sessions/:sessionId/status" },
|
|
30
45
|
{ method: "GET", path: "/sessions/:sessionId/models" },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"federatedRoutes.js","sourceRoot":"","sources":["../../src/shared/federatedRoutes.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"federatedRoutes.js","sourceRoot":"","sources":["../../src/shared/federatedRoutes.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { parseKnownPiWebCapabilities } from "./capabilities.js";
|
|
2
2
|
export function parsePiWebVersionResponse(value) {
|
|
3
3
|
if (!isRecord(value))
|
|
4
4
|
return undefined;
|
|
@@ -13,6 +13,21 @@ export function parsePiWebVersionResponse(value) {
|
|
|
13
13
|
return undefined;
|
|
14
14
|
return { packageName, generatedAt, components: { web, sessiond } };
|
|
15
15
|
}
|
|
16
|
+
export function parsePiWebRuntimeResponse(value) {
|
|
17
|
+
if (!isRecord(value))
|
|
18
|
+
return undefined;
|
|
19
|
+
const packageName = value["packageName"];
|
|
20
|
+
const generatedAt = value["generatedAt"];
|
|
21
|
+
const components = value["components"];
|
|
22
|
+
const capabilities = parseKnownPiWebCapabilities(value["capabilities"]);
|
|
23
|
+
if (typeof packageName !== "string" || packageName === "" || typeof generatedAt !== "string" || generatedAt === "" || !isRecord(components) || capabilities === undefined)
|
|
24
|
+
return undefined;
|
|
25
|
+
const web = parsePiWebRuntimeComponent(components["web"]);
|
|
26
|
+
const sessiond = parsePiWebRuntimeComponent(components["sessiond"]);
|
|
27
|
+
if (web === undefined || sessiond === undefined)
|
|
28
|
+
return undefined;
|
|
29
|
+
return { packageName, generatedAt, components: { web, sessiond }, capabilities };
|
|
30
|
+
}
|
|
16
31
|
export function parsePiWebRuntimeComponent(value) {
|
|
17
32
|
if (!isRecord(value))
|
|
18
33
|
return undefined;
|
|
@@ -20,7 +35,7 @@ export function parsePiWebRuntimeComponent(value) {
|
|
|
20
35
|
const label = value["label"];
|
|
21
36
|
const runtimeVersion = value["runtimeVersion"];
|
|
22
37
|
const available = value["available"];
|
|
23
|
-
const capabilities =
|
|
38
|
+
const capabilities = parseKnownPiWebCapabilities(value["capabilities"]);
|
|
24
39
|
const error = value["error"];
|
|
25
40
|
if (component !== "web" && component !== "sessiond")
|
|
26
41
|
return undefined;
|
|
@@ -61,11 +76,6 @@ export function parsePiWebComponentStatus(value) {
|
|
|
61
76
|
...(typeof error === "string" ? { error } : {}),
|
|
62
77
|
};
|
|
63
78
|
}
|
|
64
|
-
function parsePiWebCapabilities(value) {
|
|
65
|
-
if (!Array.isArray(value) || !value.every(isPiWebCapability))
|
|
66
|
-
return undefined;
|
|
67
|
-
return value;
|
|
68
|
-
}
|
|
69
79
|
export function parsePiWebInstallationInfo(value) {
|
|
70
80
|
if (!isRecord(value))
|
|
71
81
|
return undefined;
|
|
@@ -74,7 +84,8 @@ export function parsePiWebInstallationInfo(value) {
|
|
|
74
84
|
const source = value["source"];
|
|
75
85
|
const scope = value["scope"];
|
|
76
86
|
const npmRoot = value["npmRoot"];
|
|
77
|
-
|
|
87
|
+
const dockerMode = value["dockerMode"];
|
|
88
|
+
if (kind !== "pi-package" && kind !== "npm-global" && kind !== "local" && kind !== "docker" && kind !== "unknown")
|
|
78
89
|
return undefined;
|
|
79
90
|
return {
|
|
80
91
|
kind,
|
|
@@ -82,6 +93,7 @@ export function parsePiWebInstallationInfo(value) {
|
|
|
82
93
|
...(typeof source === "string" ? { source } : {}),
|
|
83
94
|
...(scope === "user" || scope === "project" ? { scope } : {}),
|
|
84
95
|
...(typeof npmRoot === "string" ? { npmRoot } : {}),
|
|
96
|
+
...(dockerMode === "runtime" || dockerMode === "dev" ? { dockerMode } : {}),
|
|
85
97
|
};
|
|
86
98
|
}
|
|
87
99
|
function isRecord(value) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"piWebStatusParsing.js","sourceRoot":"","sources":["../../src/shared/piWebStatusParsing.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"piWebStatusParsing.js","sourceRoot":"","sources":["../../src/shared/piWebStatusParsing.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,2BAA2B,EAAE,MAAM,mBAAmB,CAAC;AAEhE,MAAM,UAAU,yBAAyB,CAAC,KAAc;IACtD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IACvC,MAAM,WAAW,GAAG,KAAK,CAAC,aAAa,CAAC,CAAC;IACzC,MAAM,WAAW,GAAG,KAAK,CAAC,aAAa,CAAC,CAAC;IACzC,MAAM,UAAU,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC;IACvC,IAAI,OAAO,WAAW,KAAK,QAAQ,IAAI,WAAW,KAAK,EAAE,IAAI,OAAO,WAAW,KAAK,QAAQ,IAAI,WAAW,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;QAAE,OAAO,SAAS,CAAC;IAC9J,MAAM,GAAG,GAAG,yBAAyB,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;IACzD,MAAM,QAAQ,GAAG,yBAAyB,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC;IACnE,IAAI,GAAG,KAAK,SAAS,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAClE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,EAAE,CAAC;AACrE,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,KAAc;IACtD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IACvC,MAAM,WAAW,GAAG,KAAK,CAAC,aAAa,CAAC,CAAC;IACzC,MAAM,WAAW,GAAG,KAAK,CAAC,aAAa,CAAC,CAAC;IACzC,MAAM,UAAU,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC;IACvC,MAAM,YAAY,GAAG,2BAA2B,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC;IACxE,IAAI,OAAO,WAAW,KAAK,QAAQ,IAAI,WAAW,KAAK,EAAE,IAAI,OAAO,WAAW,KAAK,QAAQ,IAAI,WAAW,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,YAAY,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC5L,MAAM,GAAG,GAAG,0BAA0B,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;IAC1D,MAAM,QAAQ,GAAG,0BAA0B,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC;IACpE,IAAI,GAAG,KAAK,SAAS,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAClE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,EAAE,YAAY,EAAE,CAAC;AACnF,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,KAAc;IACvD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IACvC,MAAM,SAAS,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC;IACrC,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC;IAC7B,MAAM,cAAc,GAAG,KAAK,CAAC,gBAAgB,CAAC,CAAC;IAC/C,MAAM,SAAS,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC;IACrC,MAAM,YAAY,GAAG,2BAA2B,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC;IACxE,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC;IAC7B,IAAI,SAAS,KAAK,KAAK,IAAI,SAAS,KAAK,UAAU;QAAE,OAAO,SAAS,CAAC;IACtE,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,EAAE,IAAI,OAAO,SAAS,KAAK,SAAS,IAAI,YAAY,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAChI,OAAO;QACL,SAAS;QACT,KAAK;QACL,GAAG,CAAC,OAAO,cAAc,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjE,SAAS;QACT,YAAY;QACZ,GAAG,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAChD,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,KAAc;IACtD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IACvC,MAAM,SAAS,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC;IACrC,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC;IAC7B,MAAM,cAAc,GAAG,KAAK,CAAC,gBAAgB,CAAC,CAAC;IAC/C,MAAM,gBAAgB,GAAG,KAAK,CAAC,kBAAkB,CAAC,CAAC;IACnD,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC;IAC7B,MAAM,SAAS,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC;IACrC,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC;IAC7B,MAAM,YAAY,GAAG,0BAA0B,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC;IACvE,IAAI,SAAS,KAAK,KAAK,IAAI,SAAS,KAAK,UAAU;QAAE,OAAO,SAAS,CAAC;IACtE,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,EAAE,IAAI,OAAO,KAAK,KAAK,SAAS,IAAI,OAAO,SAAS,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAChI,OAAO;QACL,SAAS;QACT,KAAK;QACL,GAAG,CAAC,OAAO,cAAc,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjE,GAAG,CAAC,OAAO,gBAAgB,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACrE,KAAK;QACL,SAAS;QACT,GAAG,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC;QACvD,GAAG,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAChD,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,KAAc;IACvD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IACvC,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;IAC3B,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;IAC3B,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC/B,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC;IAC7B,MAAM,OAAO,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC;IACjC,MAAM,UAAU,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC;IACvC,IAAI,IAAI,KAAK,YAAY,IAAI,IAAI,KAAK,YAAY,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IACpI,OAAO;QACL,IAAI;QACJ,GAAG,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7C,GAAG,CAAC,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjD,GAAG,CAAC,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7D,GAAG,CAAC,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACnD,GAAG,CAAC,UAAU,KAAK,SAAS,IAAI,UAAU,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC5E,CAAC;AACJ,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC"}
|
|
@@ -29,10 +29,6 @@ export function base64ByteLength(data) {
|
|
|
29
29
|
const padding = data.endsWith("==") ? 2 : data.endsWith("=") ? 1 : 0;
|
|
30
30
|
return Math.max(0, Math.floor((data.length * 3) / 4) - padding);
|
|
31
31
|
}
|
|
32
|
-
/**
|
|
33
|
-
* Validate and normalize untrusted prompt attachments. Throws on malformed,
|
|
34
|
-
* unsupported, or oversized input so routes can return a 400.
|
|
35
|
-
*/
|
|
36
32
|
export function parsePromptAttachments(value, options = {}) {
|
|
37
33
|
if (value === undefined)
|
|
38
34
|
return [];
|
|
@@ -51,23 +47,46 @@ function parsePromptAttachment(value, index, options) {
|
|
|
51
47
|
throw new Error(`attachment ${String(index)} must be an object`);
|
|
52
48
|
const record = value;
|
|
53
49
|
const kind = record["kind"];
|
|
54
|
-
if (kind
|
|
55
|
-
|
|
50
|
+
if (kind === "image")
|
|
51
|
+
return parseImageAttachment(record, index, options);
|
|
52
|
+
if (kind === "file" && options.allowFileAttachments === true)
|
|
53
|
+
return parseFileAttachment(record, index);
|
|
54
|
+
throw new Error(`attachment ${String(index)} has unsupported kind`);
|
|
55
|
+
}
|
|
56
|
+
function parseImageAttachment(record, index, options) {
|
|
56
57
|
const mimeType = record["mimeType"];
|
|
57
58
|
if (!isSupportedImageMimeType(mimeType))
|
|
58
59
|
throw new Error(`attachment ${String(index)} has unsupported image type`);
|
|
59
|
-
const data = record["data"];
|
|
60
|
-
if (typeof data !== "string" || data === "" || !base64Pattern.test(data))
|
|
61
|
-
throw new Error(`attachment ${String(index)} has invalid base64 data`);
|
|
60
|
+
const data = requireBase64Data(record["data"], index, { allowEmpty: false });
|
|
62
61
|
if (options.enforceInlineSizeLimit === true && base64ByteLength(data) > MAX_INLINE_IMAGE_BASE64_BYTES) {
|
|
63
62
|
throw new Error(`attachment ${String(index)} exceeds the inline image size limit`);
|
|
64
63
|
}
|
|
65
|
-
const name = record["name"];
|
|
66
64
|
return {
|
|
67
65
|
kind: "image",
|
|
68
66
|
mimeType,
|
|
69
67
|
data,
|
|
70
|
-
...(
|
|
68
|
+
...attachmentName(record),
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
function parseFileAttachment(record, index) {
|
|
72
|
+
const mimeType = record["mimeType"];
|
|
73
|
+
if (typeof mimeType !== "string" || mimeType.trim() === "")
|
|
74
|
+
throw new Error(`attachment ${String(index)} has invalid file type`);
|
|
75
|
+
return {
|
|
76
|
+
kind: "file",
|
|
77
|
+
mimeType: mimeType.trim(),
|
|
78
|
+
data: requireBase64Data(record["data"], index, { allowEmpty: true }),
|
|
79
|
+
...attachmentName(record),
|
|
71
80
|
};
|
|
72
81
|
}
|
|
82
|
+
function requireBase64Data(value, index, options) {
|
|
83
|
+
if (typeof value !== "string" || (!options.allowEmpty && value === "") || !base64Pattern.test(value)) {
|
|
84
|
+
throw new Error(`attachment ${String(index)} has invalid base64 data`);
|
|
85
|
+
}
|
|
86
|
+
return value;
|
|
87
|
+
}
|
|
88
|
+
function attachmentName(record) {
|
|
89
|
+
const name = record["name"];
|
|
90
|
+
return typeof name === "string" && name !== "" ? { name } : {};
|
|
91
|
+
}
|
|
73
92
|
//# sourceMappingURL=promptAttachments.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"promptAttachments.js","sourceRoot":"","sources":["../../src/shared/promptAttachments.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,CAAU,CAAC;AAI1G,MAAM,uBAAuB,GAAwB,IAAI,GAAG,CAAC,0BAA0B,CAAC,CAAC;AAEzF;;;;GAIG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC;AAE3E,gEAAgE;AAChE,MAAM,CAAC,MAAM,sBAAsB,GAAG,EAAE,CAAC;AAEzC,MAAM,UAAU,wBAAwB,CAAC,KAAc;IACrD,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,uBAAuB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACzE,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,QAAgB;IACxD,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,YAAY,CAAC,CAAC,OAAO,KAAK,CAAC;QAChC,KAAK,WAAW,CAAC,CAAC,OAAO,KAAK,CAAC;QAC/B,KAAK,WAAW,CAAC,CAAC,OAAO,KAAK,CAAC;QAC/B,KAAK,YAAY,CAAC,CAAC,OAAO,MAAM,CAAC;QACjC,OAAO,CAAC,CAAC,OAAO,KAAK,CAAC;IACxB,CAAC;AACH,CAAC;AAED,MAAM,aAAa,GAAG,wBAAwB,CAAC;AAE/C,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACrE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC;AAClE,CAAC;
|
|
1
|
+
{"version":3,"file":"promptAttachments.js","sourceRoot":"","sources":["../../src/shared/promptAttachments.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,7 +7,7 @@ export type { ThinkingLevel };
|
|
|
7
7
|
* either breaks, update this list and give the new level a label/description
|
|
8
8
|
* where thinking levels are presented.
|
|
9
9
|
*/
|
|
10
|
-
export declare const KNOWN_THINKING_LEVELS: readonly ["off", "minimal", "low", "medium", "high", "xhigh"];
|
|
10
|
+
export declare const KNOWN_THINKING_LEVELS: readonly ["off", "minimal", "low", "medium", "high", "xhigh", "max"];
|
|
11
11
|
export declare function isKnownThinkingLevel(value: string): value is ThinkingLevel;
|
|
12
12
|
export declare function thinkingLevelLabel(level: string | undefined): string;
|
|
13
13
|
export interface ThinkingGauge {
|