@chainingintention/pi-web-cn 1.202606.3

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.
Files changed (163) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +364 -0
  3. package/dist/cli.js +960 -0
  4. package/dist/cli.js.map +1 -0
  5. package/dist/client/apple-touch-icon.png +0 -0
  6. package/dist/client/assets/CodeViewer-B4nxYc0g.js +4 -0
  7. package/dist/client/assets/TerminalPanel-htr2dU1I.js +122 -0
  8. package/dist/client/assets/index-BjUH4a8R.js +1994 -0
  9. package/dist/client/assets/vendor-editor-core-B4Sq6exx.js +12 -0
  10. package/dist/client/assets/vendor-editor-languages-DznYbTkJ.js +26 -0
  11. package/dist/client/assets/vendor-editor-legacy-B4QLsWF8.js +1 -0
  12. package/dist/client/assets/vendor-terminal-DDGTF8rc.css +1 -0
  13. package/dist/client/assets/vendor-terminal-DjQ08hXu.js +16 -0
  14. package/dist/client/favicon.svg +11 -0
  15. package/dist/client/index.html +60 -0
  16. package/dist/client/manifest.webmanifest +24 -0
  17. package/dist/client/pwa-icon-192.png +0 -0
  18. package/dist/client/pwa-icon-512.png +0 -0
  19. package/dist/config.js +154 -0
  20. package/dist/config.js.map +1 -0
  21. package/dist/pi-web-plugins/info/package.json +9 -0
  22. package/dist/pi-web-plugins/info/pi-web-plugin.js +51 -0
  23. package/dist/pi-web-plugins/updates/package.json +9 -0
  24. package/dist/pi-web-plugins/updates/pi-web-plugin.js +181 -0
  25. package/dist/pi-web-plugins/workspace-tasks/config.js +91 -0
  26. package/dist/pi-web-plugins/workspace-tasks/package.json +9 -0
  27. package/dist/pi-web-plugins/workspace-tasks/pi-web-plugin.js +48 -0
  28. package/dist/pi-web-plugins/workspace-tasks/taskRunner.js +12 -0
  29. package/dist/pi-web-plugins/workspace-tasks/tasksPanelElement.js +292 -0
  30. package/dist/pi-web-plugins/workspace-tasks/workspaceTasksClient.js +47 -0
  31. package/dist/piWebVersionReport.js +221 -0
  32. package/dist/piWebVersionReport.js.map +1 -0
  33. package/dist/plugin-api/unstable.d.ts +22 -0
  34. package/dist/plugin-api.d.ts +163 -0
  35. package/dist/server/activity/workspaceActivityRoutes.js +4 -0
  36. package/dist/server/activity/workspaceActivityRoutes.js.map +1 -0
  37. package/dist/server/activity/workspaceActivityService.js +98 -0
  38. package/dist/server/activity/workspaceActivityService.js.map +1 -0
  39. package/dist/server/app.js +115 -0
  40. package/dist/server/app.js.map +1 -0
  41. package/dist/server/configRoutes.js +123 -0
  42. package/dist/server/configRoutes.js.map +1 -0
  43. package/dist/server/diagnostics/nodePtySpawnHelper.js +135 -0
  44. package/dist/server/diagnostics/nodePtySpawnHelper.js.map +1 -0
  45. package/dist/server/git/gitEnv.js +15 -0
  46. package/dist/server/git/gitEnv.js.map +1 -0
  47. package/dist/server/git/gitService.js +119 -0
  48. package/dist/server/git/gitService.js.map +1 -0
  49. package/dist/server/gitRoutes.js +23 -0
  50. package/dist/server/gitRoutes.js.map +1 -0
  51. package/dist/server/index.js +7 -0
  52. package/dist/server/index.js.map +1 -0
  53. package/dist/server/machines/machineClient.js +134 -0
  54. package/dist/server/machines/machineClient.js.map +1 -0
  55. package/dist/server/machines/machineProxyRoutes.js +92 -0
  56. package/dist/server/machines/machineProxyRoutes.js.map +1 -0
  57. package/dist/server/machines/machineRoutes.js +50 -0
  58. package/dist/server/machines/machineRoutes.js.map +1 -0
  59. package/dist/server/machines/machineService.js +168 -0
  60. package/dist/server/machines/machineService.js.map +1 -0
  61. package/dist/server/machines/machineStore.js +128 -0
  62. package/dist/server/machines/machineStore.js.map +1 -0
  63. package/dist/server/piWebPluginService.js +235 -0
  64. package/dist/server/piWebPluginService.js.map +1 -0
  65. package/dist/server/piWebStatus.js +462 -0
  66. package/dist/server/piWebStatus.js.map +1 -0
  67. package/dist/server/projects/directorySuggestions.js +37 -0
  68. package/dist/server/projects/directorySuggestions.js.map +1 -0
  69. package/dist/server/projects/projectService.js +31 -0
  70. package/dist/server/projects/projectService.js.map +1 -0
  71. package/dist/server/realtime/sessionEventHub.js +39 -0
  72. package/dist/server/realtime/sessionEventHub.js.map +1 -0
  73. package/dist/server/sessiond/sessionProxyRoutes.js +60 -0
  74. package/dist/server/sessiond/sessionProxyRoutes.js.map +1 -0
  75. package/dist/server/sessiond.js +61 -0
  76. package/dist/server/sessiond.js.map +1 -0
  77. package/dist/server/sessions/authProviderOptions.js +56 -0
  78. package/dist/server/sessions/authProviderOptions.js.map +1 -0
  79. package/dist/server/sessions/authRoutes.js +59 -0
  80. package/dist/server/sessions/authRoutes.js.map +1 -0
  81. package/dist/server/sessions/authService.js +74 -0
  82. package/dist/server/sessions/authService.js.map +1 -0
  83. package/dist/server/sessions/builtinCommands.js +27 -0
  84. package/dist/server/sessions/builtinCommands.js.map +1 -0
  85. package/dist/server/sessions/editPreview.js +196 -0
  86. package/dist/server/sessions/editPreview.js.map +1 -0
  87. package/dist/server/sessions/messagePaging.js +43 -0
  88. package/dist/server/sessions/messagePaging.js.map +1 -0
  89. package/dist/server/sessions/oauthLoginFlowService.js +219 -0
  90. package/dist/server/sessions/oauthLoginFlowService.js.map +1 -0
  91. package/dist/server/sessions/piSessionService.js +1054 -0
  92. package/dist/server/sessions/piSessionService.js.map +1 -0
  93. package/dist/server/sessions/sessionArchiveStore.js +216 -0
  94. package/dist/server/sessions/sessionArchiveStore.js.map +1 -0
  95. package/dist/server/sessions/sessionArchiveTree.js +35 -0
  96. package/dist/server/sessions/sessionArchiveTree.js.map +1 -0
  97. package/dist/server/sessions/sessionCommandService.js +234 -0
  98. package/dist/server/sessions/sessionCommandService.js.map +1 -0
  99. package/dist/server/sessions/sessionNameGenerator.js +68 -0
  100. package/dist/server/sessions/sessionNameGenerator.js.map +1 -0
  101. package/dist/server/sessions/sessionRoutes.js +184 -0
  102. package/dist/server/sessions/sessionRoutes.js.map +1 -0
  103. package/dist/server/sessions/sessionRuntimeStore.js +2 -0
  104. package/dist/server/sessions/sessionRuntimeStore.js.map +1 -0
  105. package/dist/server/storage/projectStore.js +88 -0
  106. package/dist/server/storage/projectStore.js.map +1 -0
  107. package/dist/server/terminalProxyRoutes.js +130 -0
  108. package/dist/server/terminalProxyRoutes.js.map +1 -0
  109. package/dist/server/terminals/terminalRoutes.js +138 -0
  110. package/dist/server/terminals/terminalRoutes.js.map +1 -0
  111. package/dist/server/terminals/terminalService.js +293 -0
  112. package/dist/server/terminals/terminalService.js.map +1 -0
  113. package/dist/server/terminals/terminalSize.js +17 -0
  114. package/dist/server/terminals/terminalSize.js.map +1 -0
  115. package/dist/server/types.js +2 -0
  116. package/dist/server/types.js.map +1 -0
  117. package/dist/server/webSocketBridge.js +32 -0
  118. package/dist/server/webSocketBridge.js.map +1 -0
  119. package/dist/server/workspaceExplorerRoutes.js +42 -0
  120. package/dist/server/workspaceExplorerRoutes.js.map +1 -0
  121. package/dist/server/workspaces/fileContentService.js +70 -0
  122. package/dist/server/workspaces/fileContentService.js.map +1 -0
  123. package/dist/server/workspaces/fileSuggestions.js +148 -0
  124. package/dist/server/workspaces/fileSuggestions.js.map +1 -0
  125. package/dist/server/workspaces/fileTreeService.js +26 -0
  126. package/dist/server/workspaces/fileTreeService.js.map +1 -0
  127. package/dist/server/workspaces/gitWorktreeDiscovery.js +34 -0
  128. package/dist/server/workspaces/gitWorktreeDiscovery.js.map +1 -0
  129. package/dist/server/workspaces/imagePreviewService.js +40 -0
  130. package/dist/server/workspaces/imagePreviewService.js.map +1 -0
  131. package/dist/server/workspaces/pathSafety.js +45 -0
  132. package/dist/server/workspaces/pathSafety.js.map +1 -0
  133. package/dist/server/workspaces/workspaceContext.js +8 -0
  134. package/dist/server/workspaces/workspaceContext.js.map +1 -0
  135. package/dist/server/workspaces/workspaceService.js +39 -0
  136. package/dist/server/workspaces/workspaceService.js.map +1 -0
  137. package/dist/sessiond/config.js +9 -0
  138. package/dist/sessiond/config.js.map +1 -0
  139. package/dist/sessiond/sessionDaemonClient.js +65 -0
  140. package/dist/sessiond/sessionDaemonClient.js.map +1 -0
  141. package/dist/shared/activity.js +26 -0
  142. package/dist/shared/activity.js.map +1 -0
  143. package/dist/shared/apiTypes.d.ts +464 -0
  144. package/dist/shared/apiTypes.js +2 -0
  145. package/dist/shared/apiTypes.js.map +1 -0
  146. package/dist/shared/federatedRoutes.js +57 -0
  147. package/dist/shared/federatedRoutes.js.map +1 -0
  148. package/dist/shared/piWebStatusParsing.js +62 -0
  149. package/dist/shared/piWebStatusParsing.js.map +1 -0
  150. package/dist/shared/pluginIds.js +5 -0
  151. package/dist/shared/pluginIds.js.map +1 -0
  152. package/dist/shared/workspaceFiles.js +3 -0
  153. package/dist/shared/workspaceFiles.js.map +1 -0
  154. package/docs/assets/favicon.svg +11 -0
  155. package/docs/assets/pi-web-banner.png +0 -0
  156. package/docs/assets/pi-web-demo.gif +0 -0
  157. package/docs/assets/pi-web-demo.webm +0 -0
  158. package/docs/plugins.md +762 -0
  159. package/extensions/pi-web.ts +133 -0
  160. package/install.sh +5 -0
  161. package/package.json +127 -0
  162. package/plugin-api/unstable.d.ts +1 -0
  163. package/plugin-api.d.ts +1 -0
@@ -0,0 +1,464 @@
1
+ export type MachineKind = "local" | "remote";
2
+ export type MachineStatus = "unknown" | "online" | "offline" | "error";
3
+ export interface Machine {
4
+ id: string;
5
+ name: string;
6
+ kind: MachineKind;
7
+ baseUrl?: string;
8
+ createdAt: string;
9
+ updatedAt: string;
10
+ status?: MachineStatus;
11
+ statusMessage?: string;
12
+ }
13
+ export interface MachineHealth {
14
+ machineId: string;
15
+ ok: boolean;
16
+ checkedAt: string;
17
+ status?: MachineStatus;
18
+ web?: PiWebComponentStatus;
19
+ sessiond?: PiWebComponentStatus;
20
+ error?: string;
21
+ }
22
+ export type PiWebShortcutConfig = Record<string, string | null>;
23
+ export type PiWebPluginSettings = Record<string, unknown>;
24
+ export type PiWebPluginConfigMap = Record<string, PiWebPluginConfig>;
25
+ export interface PiWebPluginConfig {
26
+ enabled?: boolean;
27
+ settings?: PiWebPluginSettings;
28
+ [key: string]: unknown;
29
+ }
30
+ export interface PiWebConfigValues {
31
+ host?: string;
32
+ port?: number;
33
+ allowedHosts?: string[] | true;
34
+ shortcuts?: PiWebShortcutConfig;
35
+ plugins?: PiWebPluginConfigMap;
36
+ }
37
+ export type PiWebPluginScope = "bundled" | "local" | "user" | "project";
38
+ export interface PiWebPluginInfo {
39
+ id: string;
40
+ module: string;
41
+ source: string;
42
+ scope: PiWebPluginScope;
43
+ enabled: boolean;
44
+ }
45
+ export interface PiWebPluginsResponse {
46
+ plugins: PiWebPluginInfo[];
47
+ }
48
+ export interface PiWebConfigEnvOverrides {
49
+ host: boolean;
50
+ port: boolean;
51
+ allowedHosts: boolean;
52
+ }
53
+ export interface PiWebConfigResponse {
54
+ path: string;
55
+ exists: boolean;
56
+ config: PiWebConfigValues;
57
+ effectiveConfig: PiWebConfigValues;
58
+ envOverrides: PiWebConfigEnvOverrides;
59
+ }
60
+ export interface Project {
61
+ id: string;
62
+ name: string;
63
+ path: string;
64
+ createdAt: string;
65
+ }
66
+ export interface Workspace {
67
+ id: string;
68
+ projectId: string;
69
+ path: string;
70
+ label: string;
71
+ branch?: string;
72
+ isMain: boolean;
73
+ isGitRepo: boolean;
74
+ isGitWorktree: boolean;
75
+ }
76
+ export interface SessionInfo {
77
+ id: string;
78
+ path: string;
79
+ cwd: string;
80
+ name?: string;
81
+ created: string;
82
+ modified: string;
83
+ messageCount: number;
84
+ firstMessage: string;
85
+ parentSessionPath?: string;
86
+ archived?: boolean;
87
+ archivedAt?: string;
88
+ }
89
+ export interface ArchiveSessionsResponse {
90
+ archived: true;
91
+ sessionIds?: string[];
92
+ archivedCount?: number;
93
+ skippedAlreadyArchivedCount?: number;
94
+ }
95
+ export interface SessionActivity {
96
+ sessionId: string;
97
+ phase: "active" | "idle" | "error";
98
+ label: string;
99
+ detail?: string;
100
+ at: string;
101
+ }
102
+ export interface QueuedSessionMessage {
103
+ kind: "steer" | "followUp";
104
+ text: string;
105
+ }
106
+ export interface SessionModel {
107
+ provider?: string;
108
+ id?: string;
109
+ name?: string;
110
+ contextWindow?: number;
111
+ reasoning?: unknown;
112
+ }
113
+ export type ThinkingLevel = "off" | "minimal" | "low" | "medium" | "high" | "xhigh";
114
+ export type AuthType = "oauth" | "api_key";
115
+ export type AuthStatusSource = "stored" | "runtime" | "environment" | "fallback" | "models_json_key" | "models_json_command";
116
+ export interface AuthProviderStatus {
117
+ configured: boolean;
118
+ source?: AuthStatusSource;
119
+ label?: string;
120
+ }
121
+ export interface AuthProviderOption {
122
+ id: string;
123
+ name: string;
124
+ authType: AuthType;
125
+ status: AuthProviderStatus;
126
+ }
127
+ export interface AuthProvidersResponse {
128
+ providers: AuthProviderOption[];
129
+ }
130
+ export interface OAuthFlowState {
131
+ flowId: string;
132
+ providerId: string;
133
+ providerName: string;
134
+ status: "running" | "complete" | "error" | "cancelled";
135
+ auth?: {
136
+ url: string;
137
+ instructions?: string;
138
+ };
139
+ prompt?: {
140
+ requestId: string;
141
+ message: string;
142
+ placeholder?: string;
143
+ allowEmpty?: boolean;
144
+ kind: "prompt" | "manual";
145
+ };
146
+ select?: {
147
+ requestId: string;
148
+ message: string;
149
+ options: CommandOption[];
150
+ };
151
+ progress: string[];
152
+ error?: string;
153
+ }
154
+ export interface ModelSelectionResponse {
155
+ models: SessionModel[];
156
+ }
157
+ export interface ThinkingLevelsResponse {
158
+ levels: ThinkingLevel[];
159
+ }
160
+ export interface SessionStatus {
161
+ sessionId: string;
162
+ model?: SessionModel;
163
+ thinkingLevel?: string;
164
+ isStreaming: boolean;
165
+ isCompacting: boolean;
166
+ isBashRunning: boolean;
167
+ pendingMessageCount: number;
168
+ queuedMessages: QueuedSessionMessage[];
169
+ messageCount?: number;
170
+ tokens: {
171
+ input: number;
172
+ output: number;
173
+ cacheRead: number;
174
+ cacheWrite: number;
175
+ total: number;
176
+ };
177
+ cost: number;
178
+ contextUsage?: {
179
+ tokens: number | null;
180
+ contextWindow: number;
181
+ percent: number | null;
182
+ };
183
+ }
184
+ export interface WorkspaceActivity {
185
+ cwd: string;
186
+ hasSessionActivity: boolean;
187
+ hasTerminalActivity: boolean;
188
+ updatedAt: string;
189
+ }
190
+ export interface WorkspaceActivityResponse {
191
+ workspaces: WorkspaceActivity[];
192
+ generatedAt: string;
193
+ }
194
+ export interface SlashCommand {
195
+ name: string;
196
+ description?: string;
197
+ source: "extension" | "prompt" | "skill" | "builtin";
198
+ }
199
+ export interface FileSuggestion {
200
+ path: string;
201
+ kind: "tracked" | "untracked" | "other";
202
+ }
203
+ export interface FileTreeEntry {
204
+ name: string;
205
+ path: string;
206
+ type: "file" | "directory" | "symlink";
207
+ size?: number;
208
+ modifiedAt?: string;
209
+ }
210
+ export interface FileTreeResponse {
211
+ path: string;
212
+ entries: FileTreeEntry[];
213
+ scannedAt: string;
214
+ truncated: boolean;
215
+ }
216
+ export type FileContentMediaType = "image";
217
+ export interface FileContentResponse {
218
+ path: string;
219
+ language?: string;
220
+ mediaType?: FileContentMediaType;
221
+ mimeType?: string;
222
+ encoding: "utf8";
223
+ size: number;
224
+ modifiedAt: string;
225
+ content: string;
226
+ truncated: boolean;
227
+ binary: boolean;
228
+ }
229
+ export type GitFileState = "unmodified" | "modified" | "added" | "deleted" | "renamed" | "copied" | "untracked" | "ignored" | "conflicted";
230
+ export interface GitStatusFile {
231
+ path: string;
232
+ oldPath?: string;
233
+ index: GitFileState;
234
+ workingTree: GitFileState;
235
+ }
236
+ export interface GitStatusResponse {
237
+ isGitRepo: boolean;
238
+ hash: string;
239
+ branch?: string;
240
+ upstream?: string;
241
+ ahead?: number;
242
+ behind?: number;
243
+ files: GitStatusFile[];
244
+ }
245
+ export interface GitDiffResponse {
246
+ path?: string;
247
+ staged: boolean;
248
+ hash: string;
249
+ diff: string;
250
+ truncated: boolean;
251
+ }
252
+ export interface TerminalInfo {
253
+ id: string;
254
+ cwd: string;
255
+ name: string;
256
+ createdAt: string;
257
+ exited: boolean;
258
+ exitCode?: number;
259
+ commandRunId?: string;
260
+ }
261
+ export type TerminalCommandRunStatus = "queued" | "running" | "succeeded" | "failed";
262
+ export interface TerminalCommandRun {
263
+ id: string;
264
+ origin: string;
265
+ projectId: string;
266
+ workspaceId: string;
267
+ terminalId: string;
268
+ title: string;
269
+ command: string;
270
+ status: TerminalCommandRunStatus;
271
+ exitCode?: number;
272
+ createdAt: string;
273
+ startedAt?: string;
274
+ completedAt?: string;
275
+ metadata: Record<string, string>;
276
+ }
277
+ export interface RunTerminalCommandInput {
278
+ workspace: Workspace;
279
+ title: string;
280
+ command: string;
281
+ metadata?: Record<string, string>;
282
+ open?: boolean;
283
+ }
284
+ export interface TerminalCommandRunHandle {
285
+ run: TerminalCommandRun;
286
+ completed: Promise<TerminalCommandRun>;
287
+ }
288
+ export interface TerminalCommandRunFilter {
289
+ projectId?: string;
290
+ workspaceId?: string;
291
+ terminalId?: string;
292
+ statuses?: TerminalCommandRunStatus[];
293
+ metadata?: Record<string, string>;
294
+ }
295
+ export type PiWebServiceComponent = "web" | "sessiond";
296
+ export type PiWebStatusSeverity = "info" | "warning" | "error";
297
+ export type PiWebInstallationKind = "pi-package" | "npm-global" | "local" | "unknown";
298
+ export interface PiWebInstallationInfo {
299
+ kind: PiWebInstallationKind;
300
+ path?: string;
301
+ source?: string;
302
+ scope?: "user" | "project";
303
+ npmRoot?: string;
304
+ }
305
+ export interface PiWebComponentStatus {
306
+ component: PiWebServiceComponent;
307
+ label: string;
308
+ runtimeVersion?: string;
309
+ installedVersion?: string;
310
+ stale: boolean;
311
+ available: boolean;
312
+ installation?: PiWebInstallationInfo;
313
+ error?: string;
314
+ }
315
+ export interface PiWebReleaseStatus {
316
+ packageName: string;
317
+ latestVersion?: string;
318
+ updateAvailable: boolean;
319
+ checkedAt?: string;
320
+ skipped?: boolean;
321
+ error?: string;
322
+ }
323
+ export interface PiWebStatusMessage {
324
+ id: string;
325
+ severity: PiWebStatusSeverity;
326
+ title: string;
327
+ body: string;
328
+ command?: string;
329
+ }
330
+ export interface PiWebVersionResponse {
331
+ packageName: string;
332
+ generatedAt: string;
333
+ components: {
334
+ web: PiWebComponentStatus;
335
+ sessiond: PiWebComponentStatus;
336
+ };
337
+ }
338
+ export interface PiWebStatusResponse extends PiWebVersionResponse {
339
+ release: PiWebReleaseStatus;
340
+ commands: {
341
+ update?: string;
342
+ restart?: string;
343
+ restartWeb?: string;
344
+ restartSessiond?: string;
345
+ status?: string;
346
+ };
347
+ messages: PiWebStatusMessage[];
348
+ }
349
+ export type TerminalUiEvent = {
350
+ type: "terminal.created";
351
+ terminal: TerminalInfo;
352
+ } | {
353
+ type: "terminal.exited";
354
+ terminal: TerminalInfo;
355
+ } | {
356
+ type: "terminal.closed";
357
+ terminalId: string;
358
+ cwd: string;
359
+ };
360
+ export interface WorkspaceActivityUiEvent {
361
+ type: "workspace.activity";
362
+ activity: WorkspaceActivity;
363
+ }
364
+ export interface CommandOption {
365
+ value: string;
366
+ label: string;
367
+ description?: string;
368
+ }
369
+ export interface MessagePage {
370
+ messages: unknown[];
371
+ start: number;
372
+ total: number;
373
+ }
374
+ export type CommandResult = {
375
+ type: "done";
376
+ message?: string;
377
+ session?: SessionInfo;
378
+ promptDraft?: string;
379
+ } | {
380
+ type: "select";
381
+ requestId: string;
382
+ title: string;
383
+ options: CommandOption[];
384
+ } | {
385
+ type: "unsupported";
386
+ message: string;
387
+ };
388
+ export type SessionUiEvent = {
389
+ type: "message.append";
390
+ message: unknown;
391
+ } | {
392
+ type: "assistant.delta";
393
+ text: string;
394
+ } | {
395
+ type: "assistant.thinking.delta";
396
+ text: string;
397
+ } | {
398
+ type: "tool.start";
399
+ toolName: string;
400
+ toolCallId: string;
401
+ summary: string;
402
+ args?: unknown;
403
+ } | {
404
+ type: "tool.update";
405
+ toolName: string;
406
+ toolCallId: string;
407
+ text: string;
408
+ content?: unknown;
409
+ details?: unknown;
410
+ } | {
411
+ type: "tool.end";
412
+ toolName: string;
413
+ toolCallId: string;
414
+ text: string;
415
+ isError: boolean;
416
+ content?: unknown;
417
+ details?: unknown;
418
+ } | {
419
+ type: "shell.start";
420
+ command: string;
421
+ excludeFromContext?: boolean;
422
+ } | {
423
+ type: "shell.chunk";
424
+ chunk: string;
425
+ } | {
426
+ type: "shell.end";
427
+ output?: string;
428
+ exitCode?: number | null;
429
+ cancelled?: boolean;
430
+ truncated?: boolean;
431
+ fullOutputPath?: string;
432
+ isError?: boolean;
433
+ } | {
434
+ type: "agent.start";
435
+ } | {
436
+ type: "agent.end";
437
+ } | {
438
+ type: "message.end";
439
+ message?: unknown;
440
+ } | {
441
+ type: "status.update";
442
+ status: SessionStatus;
443
+ } | {
444
+ type: "activity.update";
445
+ activity: SessionActivity;
446
+ } | {
447
+ type: "command.output";
448
+ level: "info" | "success" | "error";
449
+ message: string;
450
+ } | {
451
+ type: "session.error";
452
+ message: string;
453
+ } | {
454
+ type: "session.name";
455
+ sessionId: string;
456
+ name?: string;
457
+ } | {
458
+ type: "pi.event";
459
+ eventType: string;
460
+ };
461
+ export type GlobalSessionEvent = Extract<SessionUiEvent, {
462
+ type: "status.update" | "activity.update" | "session.name";
463
+ }>;
464
+ export type RealtimeEvent = GlobalSessionEvent | TerminalUiEvent | WorkspaceActivityUiEvent;
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=apiTypes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apiTypes.js","sourceRoot":"","sources":["../../src/shared/apiTypes.ts"],"names":[],"mappings":""}
@@ -0,0 +1,57 @@
1
+ export const FEDERATED_HTTP_ROUTES = [
2
+ { method: "GET", path: "/projects" },
3
+ { method: "POST", path: "/projects" },
4
+ { method: "DELETE", path: "/projects/:projectId" },
5
+ { method: "GET", path: "/project-directories" },
6
+ { method: "GET", path: "/projects/:projectId/workspaces" },
7
+ { method: "GET", path: "/projects/:projectId/workspaces/:workspaceId/tree" },
8
+ { method: "GET", path: "/projects/:projectId/workspaces/:workspaceId/file" },
9
+ { method: "GET", path: "/projects/:projectId/workspaces/:workspaceId/file/preview" },
10
+ { method: "GET", path: "/projects/:projectId/workspaces/:workspaceId/git/status" },
11
+ { method: "GET", path: "/projects/:projectId/workspaces/:workspaceId/git/diff" },
12
+ { method: "GET", path: "/projects/:projectId/workspaces/:workspaceId/terminals" },
13
+ { method: "POST", path: "/projects/:projectId/workspaces/:workspaceId/terminals" },
14
+ { method: "POST", path: "/projects/:projectId/workspaces/:workspaceId/terminals/:terminalId/continue" },
15
+ { method: "DELETE", path: "/projects/:projectId/workspaces/:workspaceId/terminals/:terminalId" },
16
+ { method: "POST", path: "/projects/:projectId/workspaces/:workspaceId/terminal-command-runs" },
17
+ { method: "GET", path: "/terminal-command-runs" },
18
+ { method: "GET", path: "/terminal-command-runs/:runId" },
19
+ { method: "POST", path: "/terminal-command-runs/:runId/cancel" },
20
+ { method: "GET", path: "/files" },
21
+ { method: "GET", path: "/activity" },
22
+ { method: "GET", path: "/sessions" },
23
+ { method: "POST", path: "/sessions" },
24
+ { method: "GET", path: "/sessions/:sessionId/messages" },
25
+ { method: "GET", path: "/sessions/:sessionId/status" },
26
+ { method: "GET", path: "/sessions/:sessionId/models" },
27
+ { method: "POST", path: "/sessions/:sessionId/model" },
28
+ { method: "POST", path: "/sessions/:sessionId/model/cycle" },
29
+ { method: "GET", path: "/sessions/:sessionId/thinking-levels" },
30
+ { method: "POST", path: "/sessions/:sessionId/thinking-level" },
31
+ { method: "POST", path: "/sessions/:sessionId/thinking-level/cycle" },
32
+ { method: "GET", path: "/sessions/:sessionId/commands" },
33
+ { method: "POST", path: "/sessions/:sessionId/prompt" },
34
+ { method: "POST", path: "/sessions/:sessionId/shell" },
35
+ { method: "POST", path: "/sessions/:sessionId/commands/run" },
36
+ { method: "POST", path: "/sessions/:sessionId/commands/respond" },
37
+ { method: "POST", path: "/sessions/:sessionId/abort" },
38
+ { method: "POST", path: "/sessions/:sessionId/stop" },
39
+ { method: "POST", path: "/sessions/:sessionId/archive" },
40
+ { method: "POST", path: "/sessions/:sessionId/archive-tree" },
41
+ { method: "POST", path: "/sessions/:sessionId/restore" },
42
+ { method: "POST", path: "/sessions/:sessionId/detach-parent" },
43
+ { method: "GET", path: "/auth/providers" },
44
+ { method: "POST", path: "/auth/api-key" },
45
+ { method: "POST", path: "/auth/logout" },
46
+ { method: "POST", path: "/auth/oauth" },
47
+ { method: "GET", path: "/auth/oauth/:flowId" },
48
+ { method: "POST", path: "/auth/oauth/:flowId/respond" },
49
+ { method: "POST", path: "/auth/oauth/:flowId/cancel" },
50
+ ];
51
+ export const FEDERATED_WEBSOCKET_ROUTES = [
52
+ "/events",
53
+ "/sessions/events",
54
+ "/sessions/:sessionId/events",
55
+ "/projects/:projectId/workspaces/:workspaceId/terminals/:terminalId/socket",
56
+ ];
57
+ //# sourceMappingURL=federatedRoutes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"federatedRoutes.js","sourceRoot":"","sources":["../../src/shared/federatedRoutes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,62 @@
1
+ export function parsePiWebVersionResponse(value) {
2
+ if (!isRecord(value))
3
+ return undefined;
4
+ const packageName = value["packageName"];
5
+ const generatedAt = value["generatedAt"];
6
+ const components = value["components"];
7
+ if (typeof packageName !== "string" || packageName === "" || typeof generatedAt !== "string" || generatedAt === "" || !isRecord(components))
8
+ return undefined;
9
+ const web = parsePiWebComponentStatus(components["web"]);
10
+ const sessiond = parsePiWebComponentStatus(components["sessiond"]);
11
+ if (web === undefined || sessiond === undefined)
12
+ return undefined;
13
+ return { packageName, generatedAt, components: { web, sessiond } };
14
+ }
15
+ export function parsePiWebComponentStatus(value) {
16
+ if (!isRecord(value))
17
+ return undefined;
18
+ const component = value["component"];
19
+ const label = value["label"];
20
+ const runtimeVersion = value["runtimeVersion"];
21
+ const installedVersion = value["installedVersion"];
22
+ const stale = value["stale"];
23
+ const available = value["available"];
24
+ const error = value["error"];
25
+ const installation = parsePiWebInstallationInfo(value["installation"]);
26
+ if (component !== "web" && component !== "sessiond")
27
+ return undefined;
28
+ if (typeof label !== "string" || label === "" || typeof stale !== "boolean" || typeof available !== "boolean")
29
+ return undefined;
30
+ return {
31
+ component,
32
+ label,
33
+ ...(typeof runtimeVersion === "string" ? { runtimeVersion } : {}),
34
+ ...(typeof installedVersion === "string" ? { installedVersion } : {}),
35
+ stale,
36
+ available,
37
+ ...(installation === undefined ? {} : { installation }),
38
+ ...(typeof error === "string" ? { error } : {}),
39
+ };
40
+ }
41
+ export function parsePiWebInstallationInfo(value) {
42
+ if (!isRecord(value))
43
+ return undefined;
44
+ const kind = value["kind"];
45
+ const path = value["path"];
46
+ const source = value["source"];
47
+ const scope = value["scope"];
48
+ const npmRoot = value["npmRoot"];
49
+ if (kind !== "pi-package" && kind !== "npm-global" && kind !== "local" && kind !== "unknown")
50
+ return undefined;
51
+ return {
52
+ kind,
53
+ ...(typeof path === "string" ? { path } : {}),
54
+ ...(typeof source === "string" ? { source } : {}),
55
+ ...(scope === "user" || scope === "project" ? { scope } : {}),
56
+ ...(typeof npmRoot === "string" ? { npmRoot } : {}),
57
+ };
58
+ }
59
+ function isRecord(value) {
60
+ return typeof value === "object" && value !== null && !Array.isArray(value);
61
+ }
62
+ //# sourceMappingURL=piWebStatusParsing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"piWebStatusParsing.js","sourceRoot":"","sources":["../../src/shared/piWebStatusParsing.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export const piWebPluginIdPattern = /^[a-z][a-z0-9.-]*$/u;
2
+ export function isPiWebPluginId(value) {
3
+ return piWebPluginIdPattern.test(value);
4
+ }
5
+ //# sourceMappingURL=pluginIds.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pluginIds.js","sourceRoot":"","sources":["../../src/shared/pluginIds.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,oBAAoB,GAAG,qBAAqB,CAAC;AAE1D,MAAM,UAAU,eAAe,CAAC,KAAa;IAC3C,OAAO,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC1C,CAAC"}
@@ -0,0 +1,3 @@
1
+ export const MAX_IMAGE_PREVIEW_BYTES = 10 * 1024 * 1024;
2
+ export const MAX_IMAGE_PREVIEW_LABEL = "10 MB";
3
+ //# sourceMappingURL=workspaceFiles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspaceFiles.js","sourceRoot":"","sources":["../../src/shared/workspaceFiles.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,uBAAuB,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;AACxD,MAAM,CAAC,MAAM,uBAAuB,GAAG,OAAO,CAAC"}
@@ -0,0 +1,11 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024" role="img" aria-labelledby="title desc">
2
+ <title id="title">PI WEB mark</title>
3
+ <desc id="desc">A horizontal brand bar.</desc>
4
+ <style>
5
+ .bar { fill: #00f0d8; }
6
+ @media (prefers-color-scheme: light) {
7
+ .bar { fill: #008c82; }
8
+ }
9
+ </style>
10
+ <rect class="bar" x="128" y="448" width="768" height="128"/>
11
+ </svg>
Binary file
Binary file
Binary file