@hyperdreamer/pi-webui 1.6.1
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/LICENSE +23 -0
- package/README.md +148 -0
- package/dist/cli.js +975 -0
- package/dist/cli.js.map +1 -0
- package/dist/client/apple-touch-icon.png +0 -0
- package/dist/client/assets/CodeViewer-aB4ZVzEu.js +4 -0
- package/dist/client/assets/UnifiedDiffViewer-f8X7aTkU.js +39 -0
- package/dist/client/assets/index-Cffeusjy.js +6022 -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/favicon.svg +8 -0
- package/dist/client/index.html +65 -0
- package/dist/client/manifest.webmanifest +24 -0
- package/dist/client/pwa-icon-192.png +0 -0
- package/dist/client/pwa-icon-512.png +0 -0
- package/dist/config.js +417 -0
- package/dist/config.js.map +1 -0
- package/dist/docker/piWebUiDockerCommandPlan.js +211 -0
- package/dist/docker/piWebUiDockerCommandPlan.js.map +1 -0
- package/dist/nativeServices/serviceDoctor.js +480 -0
- package/dist/nativeServices/serviceDoctor.js.map +1 -0
- package/dist/nativeServices/serviceInstall.js +35 -0
- package/dist/nativeServices/serviceInstall.js.map +1 -0
- package/dist/nativeServices/servicePlan.js +358 -0
- package/dist/nativeServices/servicePlan.js.map +1 -0
- package/dist/nativeServices/serviceProbe.js +447 -0
- package/dist/nativeServices/serviceProbe.js.map +1 -0
- package/dist/nativeServices/serviceRendering.js +122 -0
- package/dist/nativeServices/serviceRendering.js.map +1 -0
- package/dist/pi-webui-plugins/info/package.json +9 -0
- package/dist/pi-webui-plugins/info/pi-webui-plugin.js +51 -0
- package/dist/pi-webui-plugins/updates/package.json +9 -0
- package/dist/pi-webui-plugins/updates/pi-webui-plugin.js +185 -0
- package/dist/pi-webui-plugins/updates/updatesLogic.js +97 -0
- package/dist/pi-webui-plugins/workspace-tasks/config.js +91 -0
- package/dist/pi-webui-plugins/workspace-tasks/package.json +9 -0
- package/dist/pi-webui-plugins/workspace-tasks/pi-webui-plugin.js +48 -0
- package/dist/pi-webui-plugins/workspace-tasks/taskRunner.js +12 -0
- package/dist/pi-webui-plugins/workspace-tasks/tasksPanelElement.js +288 -0
- package/dist/pi-webui-plugins/workspace-tasks/workspaceTasksClient.js +47 -0
- package/dist/piWebUiVersionReport.js +225 -0
- package/dist/piWebUiVersionReport.js.map +1 -0
- package/dist/plugin-api/unstable.d.ts +22 -0
- package/dist/plugin-api.d.ts +199 -0
- package/dist/server/activeAgentProfileProvider.js +25 -0
- package/dist/server/activeAgentProfileProvider.js.map +1 -0
- package/dist/server/activity/workspaceActivityRoutes.js +4 -0
- package/dist/server/activity/workspaceActivityRoutes.js.map +1 -0
- package/dist/server/activity/workspaceActivityService.js +98 -0
- package/dist/server/activity/workspaceActivityService.js.map +1 -0
- package/dist/server/app.js +211 -0
- package/dist/server/app.js.map +1 -0
- package/dist/server/browserMessageProjection.js +56 -0
- package/dist/server/browserMessageProjection.js.map +1 -0
- package/dist/server/configRoutes.js +309 -0
- package/dist/server/configRoutes.js.map +1 -0
- package/dist/server/diagnostics/nodePtyNativeModule.js +36 -0
- package/dist/server/diagnostics/nodePtyNativeModule.js.map +1 -0
- package/dist/server/diagnostics/nodePtySpawnHelper.js +135 -0
- package/dist/server/diagnostics/nodePtySpawnHelper.js.map +1 -0
- package/dist/server/git/gitEnv.js +15 -0
- package/dist/server/git/gitEnv.js.map +1 -0
- package/dist/server/git/gitService.js +123 -0
- package/dist/server/git/gitService.js.map +1 -0
- package/dist/server/gitRoutes.js +23 -0
- package/dist/server/gitRoutes.js.map +1 -0
- package/dist/server/index.js +7 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/machines/machineClient.js +172 -0
- package/dist/server/machines/machineClient.js.map +1 -0
- package/dist/server/machines/machinePluginProxyRoutes.js +190 -0
- package/dist/server/machines/machinePluginProxyRoutes.js.map +1 -0
- package/dist/server/machines/machineProxyRoutes.js +172 -0
- package/dist/server/machines/machineProxyRoutes.js.map +1 -0
- package/dist/server/machines/machineRoutes.js +56 -0
- package/dist/server/machines/machineRoutes.js.map +1 -0
- package/dist/server/machines/machineService.js +238 -0
- package/dist/server/machines/machineService.js.map +1 -0
- package/dist/server/machines/machineStore.js +128 -0
- package/dist/server/machines/machineStore.js.map +1 -0
- package/dist/server/models/modelsConfigRoutes.js +40 -0
- package/dist/server/models/modelsConfigRoutes.js.map +1 -0
- package/dist/server/models/modelsConfigService.js +339 -0
- package/dist/server/models/modelsConfigService.js.map +1 -0
- package/dist/server/piPackagePluginsConfigRoutes.js +86 -0
- package/dist/server/piPackagePluginsConfigRoutes.js.map +1 -0
- package/dist/server/piPackagePluginsConfigService.js +311 -0
- package/dist/server/piPackagePluginsConfigService.js.map +1 -0
- package/dist/server/piPackageRoutes.js +91 -0
- package/dist/server/piPackageRoutes.js.map +1 -0
- package/dist/server/piPackageService.js +101 -0
- package/dist/server/piPackageService.js.map +1 -0
- package/dist/server/piWebUiPluginService.js +326 -0
- package/dist/server/piWebUiPluginService.js.map +1 -0
- package/dist/server/piWebUiReleaseLookupCache.js +37 -0
- package/dist/server/piWebUiReleaseLookupCache.js.map +1 -0
- package/dist/server/piWebUiStatus.js +622 -0
- package/dist/server/piWebUiStatus.js.map +1 -0
- package/dist/server/piWebUiStatusCache.js +45 -0
- package/dist/server/piWebUiStatusCache.js.map +1 -0
- package/dist/server/projects/directorySuggestions.js +37 -0
- package/dist/server/projects/directorySuggestions.js.map +1 -0
- package/dist/server/projects/projectService.js +31 -0
- package/dist/server/projects/projectService.js.map +1 -0
- package/dist/server/realtime/sessionEventHub.js +70 -0
- package/dist/server/realtime/sessionEventHub.js.map +1 -0
- package/dist/server/sessiond/sessionDaemonStartup.js +49 -0
- package/dist/server/sessiond/sessionDaemonStartup.js.map +1 -0
- package/dist/server/sessiond/sessionProxyRoutes.js +87 -0
- package/dist/server/sessiond/sessionProxyRoutes.js.map +1 -0
- package/dist/server/sessiond/skillsGithubToken.js +7 -0
- package/dist/server/sessiond/skillsGithubToken.js.map +1 -0
- package/dist/server/sessiond.js +152 -0
- package/dist/server/sessiond.js.map +1 -0
- package/dist/server/sessions/attachmentService.js +119 -0
- package/dist/server/sessions/attachmentService.js.map +1 -0
- package/dist/server/sessions/authProviderOptions.js +50 -0
- package/dist/server/sessions/authProviderOptions.js.map +1 -0
- package/dist/server/sessions/authRoutes.js +69 -0
- package/dist/server/sessions/authRoutes.js.map +1 -0
- package/dist/server/sessions/authService.js +134 -0
- package/dist/server/sessions/authService.js.map +1 -0
- package/dist/server/sessions/builtinCommands.js +27 -0
- package/dist/server/sessions/builtinCommands.js.map +1 -0
- package/dist/server/sessions/editPreview.js +196 -0
- package/dist/server/sessions/editPreview.js.map +1 -0
- package/dist/server/sessions/messagePaging.js +43 -0
- package/dist/server/sessions/messagePaging.js.map +1 -0
- package/dist/server/sessions/oauthLoginFlowService.js +349 -0
- package/dist/server/sessions/oauthLoginFlowService.js.map +1 -0
- package/dist/server/sessions/piSessionManagerGateway.js +115 -0
- package/dist/server/sessions/piSessionManagerGateway.js.map +1 -0
- package/dist/server/sessions/piSessionService.js +3230 -0
- package/dist/server/sessions/piSessionService.js.map +1 -0
- package/dist/server/sessions/plainTextTheme.js +112 -0
- package/dist/server/sessions/plainTextTheme.js.map +1 -0
- package/dist/server/sessions/sessionArchiveMigration.js +590 -0
- package/dist/server/sessions/sessionArchiveMigration.js.map +1 -0
- package/dist/server/sessions/sessionArchiveStore.js +262 -0
- package/dist/server/sessions/sessionArchiveStore.js.map +1 -0
- package/dist/server/sessions/sessionArchiveTree.js +35 -0
- package/dist/server/sessions/sessionArchiveTree.js.map +1 -0
- package/dist/server/sessions/sessionCleanup.js +157 -0
- package/dist/server/sessions/sessionCleanup.js.map +1 -0
- package/dist/server/sessions/sessionCommandService.js +313 -0
- package/dist/server/sessions/sessionCommandService.js.map +1 -0
- package/dist/server/sessions/sessionDefaultsRoutes.js +65 -0
- package/dist/server/sessions/sessionDefaultsRoutes.js.map +1 -0
- package/dist/server/sessions/sessionDefaultsService.js +90 -0
- package/dist/server/sessions/sessionDefaultsService.js.map +1 -0
- package/dist/server/sessions/sessionHistoryExport.js +115 -0
- package/dist/server/sessions/sessionHistoryExport.js.map +1 -0
- package/dist/server/sessions/sessionMetadataStore.js +102 -0
- package/dist/server/sessions/sessionMetadataStore.js.map +1 -0
- package/dist/server/sessions/sessionNameGenerator.js +90 -0
- package/dist/server/sessions/sessionNameGenerator.js.map +1 -0
- package/dist/server/sessions/sessionNotificationStore.js +484 -0
- package/dist/server/sessions/sessionNotificationStore.js.map +1 -0
- package/dist/server/sessions/sessionRoutes.js +590 -0
- package/dist/server/sessions/sessionRoutes.js.map +1 -0
- package/dist/server/sessions/sessionRuntimeStore.js +2 -0
- package/dist/server/sessions/sessionRuntimeStore.js.map +1 -0
- package/dist/server/sessions/sessionService.js +2 -0
- package/dist/server/sessions/sessionService.js.map +1 -0
- package/dist/server/sessions/sessionTreeProjection.js +250 -0
- package/dist/server/sessions/sessionTreeProjection.js.map +1 -0
- package/dist/server/sessions/sessionUnreadStore.js +520 -0
- package/dist/server/sessions/sessionUnreadStore.js.map +1 -0
- package/dist/server/sessions/spawnSessionTool.js +41 -0
- package/dist/server/sessions/spawnSessionTool.js.map +1 -0
- package/dist/server/sessions/spawnSubsessionTool.js +214 -0
- package/dist/server/sessions/spawnSubsessionTool.js.map +1 -0
- package/dist/server/sessions/spawnTargetResolver.js +36 -0
- package/dist/server/sessions/spawnTargetResolver.js.map +1 -0
- package/dist/server/sessions/subsessionTranscript.js +235 -0
- package/dist/server/sessions/subsessionTranscript.js.map +1 -0
- package/dist/server/skills/runNpx.js +30 -0
- package/dist/server/skills/runNpx.js.map +1 -0
- package/dist/server/skills/skillLock.js +115 -0
- package/dist/server/skills/skillLock.js.map +1 -0
- package/dist/server/skills/skillUpdates.js +194 -0
- package/dist/server/skills/skillUpdates.js.map +1 -0
- package/dist/server/skills/skillsConfigRoutes.js +64 -0
- package/dist/server/skills/skillsConfigRoutes.js.map +1 -0
- package/dist/server/skills/skillsConfigService.js +391 -0
- package/dist/server/skills/skillsConfigService.js.map +1 -0
- package/dist/server/storage/projectStore.js +88 -0
- package/dist/server/storage/projectStore.js.map +1 -0
- package/dist/server/systemInfoRoutes.js +265 -0
- package/dist/server/systemInfoRoutes.js.map +1 -0
- package/dist/server/terminalProxyRoutes.js +140 -0
- package/dist/server/terminalProxyRoutes.js.map +1 -0
- package/dist/server/terminals/terminalRoutes.js +155 -0
- package/dist/server/terminals/terminalRoutes.js.map +1 -0
- package/dist/server/terminals/terminalService.js +305 -0
- package/dist/server/terminals/terminalService.js.map +1 -0
- package/dist/server/terminals/terminalSize.js +17 -0
- package/dist/server/terminals/terminalSize.js.map +1 -0
- package/dist/server/types.js +2 -0
- package/dist/server/types.js.map +1 -0
- package/dist/server/webSocketBridge.js +32 -0
- package/dist/server/webSocketBridge.js.map +1 -0
- package/dist/server/workingDirectory.js +44 -0
- package/dist/server/workingDirectory.js.map +1 -0
- package/dist/server/workspaceExplorerRoutes.js +109 -0
- package/dist/server/workspaceExplorerRoutes.js.map +1 -0
- package/dist/server/workspaces/effectivePathAccess.js +27 -0
- package/dist/server/workspaces/effectivePathAccess.js.map +1 -0
- package/dist/server/workspaces/fileContentService.js +181 -0
- package/dist/server/workspaces/fileContentService.js.map +1 -0
- package/dist/server/workspaces/fileSuggestions.js +520 -0
- package/dist/server/workspaces/fileSuggestions.js.map +1 -0
- package/dist/server/workspaces/fileTreeService.js +35 -0
- package/dist/server/workspaces/fileTreeService.js.map +1 -0
- package/dist/server/workspaces/gitWorktreeDiscovery.js +34 -0
- package/dist/server/workspaces/gitWorktreeDiscovery.js.map +1 -0
- package/dist/server/workspaces/imagePreviewService.js +40 -0
- package/dist/server/workspaces/imagePreviewService.js.map +1 -0
- package/dist/server/workspaces/pathAccessPolicy.js +90 -0
- package/dist/server/workspaces/pathAccessPolicy.js.map +1 -0
- package/dist/server/workspaces/pathSafety.js +45 -0
- package/dist/server/workspaces/pathSafety.js.map +1 -0
- package/dist/server/workspaces/projectPiWebUiConfig.js +61 -0
- package/dist/server/workspaces/projectPiWebUiConfig.js.map +1 -0
- package/dist/server/workspaces/workspaceContext.js +8 -0
- package/dist/server/workspaces/workspaceContext.js.map +1 -0
- package/dist/server/workspaces/workspaceDeletionRoutes.js +113 -0
- package/dist/server/workspaces/workspaceDeletionRoutes.js.map +1 -0
- package/dist/server/workspaces/workspaceService.js +39 -0
- package/dist/server/workspaces/workspaceService.js.map +1 -0
- package/dist/sessiond/activeAgentProfile.js +31 -0
- package/dist/sessiond/activeAgentProfile.js.map +1 -0
- package/dist/sessiond/config.js +9 -0
- package/dist/sessiond/config.js.map +1 -0
- package/dist/sessiond/sessionDaemonClient.js +103 -0
- package/dist/sessiond/sessionDaemonClient.js.map +1 -0
- package/dist/shared/activeAgentProfile.js +76 -0
- package/dist/shared/activeAgentProfile.js.map +1 -0
- package/dist/shared/activity.js +11 -0
- package/dist/shared/activity.js.map +1 -0
- package/dist/shared/apiTypes.d.ts +1212 -0
- package/dist/shared/apiTypes.js +25 -0
- package/dist/shared/apiTypes.js.map +1 -0
- package/dist/shared/capabilities.js +69 -0
- package/dist/shared/capabilities.js.map +1 -0
- package/dist/shared/federatedRoutes.js +109 -0
- package/dist/shared/federatedRoutes.js.map +1 -0
- package/dist/shared/machinePluginIds.js +41 -0
- package/dist/shared/machinePluginIds.js.map +1 -0
- package/dist/shared/piWebUiStatusParsing.js +108 -0
- package/dist/shared/piWebUiStatusParsing.js.map +1 -0
- package/dist/shared/pluginIds.js +5 -0
- package/dist/shared/pluginIds.js.map +1 -0
- package/dist/shared/promptAttachments.js +92 -0
- package/dist/shared/promptAttachments.js.map +1 -0
- package/dist/shared/thinkingLevels.d.ts +27 -0
- package/dist/shared/thinkingLevels.js +31 -0
- package/dist/shared/thinkingLevels.js.map +1 -0
- package/dist/shared/workspaceDeletion.js +12 -0
- package/dist/shared/workspaceDeletion.js.map +1 -0
- package/dist/shared/workspaceFiles.js +3 -0
- package/dist/shared/workspaceFiles.js.map +1 -0
- package/docs/assets/favicon.svg +8 -0
- package/docs/assets/pi-webui-banner.png +0 -0
- package/docs/assets/pi-webui-desktop.png +0 -0
- package/docs/assets/pi-webui-mobile.png +0 -0
- package/docs/assets/pi-webui-tablet.png +0 -0
- package/docs/config.md +265 -0
- package/docs/plugins.md +988 -0
- package/extensions/pi-webui.ts +133 -0
- package/package.json +143 -0
- package/plugin-api/unstable.d.ts +1 -0
- package/plugin-api.d.ts +1 -0
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export const PI_WEBUI_CAPABILITIES = {
|
|
2
|
+
sessionsDeleteArchived: "sessions.deleteArchived",
|
|
3
|
+
sessionsBulkMutations: "sessions.bulkMutations",
|
|
4
|
+
sessionsCleanup: "sessions.cleanup",
|
|
5
|
+
sessionsReload: "sessions.reload",
|
|
6
|
+
sessionsClearQueue: "sessions.clearQueue",
|
|
7
|
+
sessionsSystemPrompt: "sessions.systemPrompt",
|
|
8
|
+
sessionsPersistedState: "sessions.persistedState",
|
|
9
|
+
sessionsNotifications: "sessions.notifications",
|
|
10
|
+
sessionsUnread: "sessions.unread",
|
|
11
|
+
promptAttachments: "prompt.attachments",
|
|
12
|
+
workspaceFileSuggestions: "workspace.fileSuggestions",
|
|
13
|
+
piPackagesManage: "piPackages.manage",
|
|
14
|
+
selectedMachineSettings: "settings.selectedMachine",
|
|
15
|
+
agentProfileConfig: "settings.agentProfile",
|
|
16
|
+
};
|
|
17
|
+
export const SESSION_UNREAD_LIMIT = 1_000;
|
|
18
|
+
export const SESSION_UNREAD_SESSION_ID_MAX_LENGTH = 512;
|
|
19
|
+
export const SESSION_UNREAD_CWD_MAX_LENGTH = 32 * 1024;
|
|
20
|
+
export const SESSION_UNREAD_CATALOG_ID_MAX_LENGTH = 512;
|
|
21
|
+
export const SESSION_UNREAD_COMPLETED_AT_MAX_LENGTH = 64;
|
|
22
|
+
export const SESSION_NOTIFICATION_LIMIT = 100;
|
|
23
|
+
export const SESSION_NOTIFICATION_MESSAGE_BYTES = 8 * 1024;
|
|
24
|
+
export const SESSION_TREE_CUSTOM_INSTRUCTIONS_MAX_LENGTH = 10_000;
|
|
25
|
+
//# sourceMappingURL=apiTypes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apiTypes.js","sourceRoot":"","sources":["../../src/shared/apiTypes.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,sBAAsB,EAAE,yBAAyB;IACjD,qBAAqB,EAAE,wBAAwB;IAC/C,eAAe,EAAE,kBAAkB;IACnC,cAAc,EAAE,iBAAiB;IACjC,kBAAkB,EAAE,qBAAqB;IACzC,oBAAoB,EAAE,uBAAuB;IAC7C,sBAAsB,EAAE,yBAAyB;IACjD,qBAAqB,EAAE,wBAAwB;IAC/C,cAAc,EAAE,iBAAiB;IACjC,iBAAiB,EAAE,oBAAoB;IACvC,wBAAwB,EAAE,2BAA2B;IACrD,gBAAgB,EAAE,mBAAmB;IACrC,uBAAuB,EAAE,0BAA0B;IACnD,kBAAkB,EAAE,uBAAuB;CACnC,CAAC;AAqVX,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,CAAC;AAC1C,MAAM,CAAC,MAAM,oCAAoC,GAAG,GAAG,CAAC;AACxD,MAAM,CAAC,MAAM,6BAA6B,GAAG,EAAE,GAAG,IAAI,CAAC;AACvD,MAAM,CAAC,MAAM,oCAAoC,GAAG,GAAG,CAAC;AACxD,MAAM,CAAC,MAAM,sCAAsC,GAAG,EAAE,CAAC;AAqCzD,MAAM,CAAC,MAAM,0BAA0B,GAAG,GAAG,CAAC;AAC9C,MAAM,CAAC,MAAM,kCAAkC,GAAG,CAAC,GAAG,IAAI,CAAC;AAiuB3D,MAAM,CAAC,MAAM,2CAA2C,GAAG,MAAM,CAAC"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { PI_WEBUI_CAPABILITIES } from "./apiTypes.js";
|
|
2
|
+
export { PI_WEBUI_CAPABILITIES };
|
|
3
|
+
export const KNOWN_PI_WEBUI_CAPABILITIES = Object.values(PI_WEBUI_CAPABILITIES);
|
|
4
|
+
const knownPiWebUiCapabilities = new Set(KNOWN_PI_WEBUI_CAPABILITIES);
|
|
5
|
+
export const WEB_RUNTIME_CAPABILITIES = [
|
|
6
|
+
PI_WEBUI_CAPABILITIES.sessionsDeleteArchived,
|
|
7
|
+
PI_WEBUI_CAPABILITIES.sessionsBulkMutations,
|
|
8
|
+
PI_WEBUI_CAPABILITIES.sessionsCleanup,
|
|
9
|
+
PI_WEBUI_CAPABILITIES.sessionsReload,
|
|
10
|
+
PI_WEBUI_CAPABILITIES.sessionsClearQueue,
|
|
11
|
+
PI_WEBUI_CAPABILITIES.sessionsSystemPrompt,
|
|
12
|
+
PI_WEBUI_CAPABILITIES.sessionsPersistedState,
|
|
13
|
+
PI_WEBUI_CAPABILITIES.sessionsNotifications,
|
|
14
|
+
PI_WEBUI_CAPABILITIES.sessionsUnread,
|
|
15
|
+
PI_WEBUI_CAPABILITIES.promptAttachments,
|
|
16
|
+
PI_WEBUI_CAPABILITIES.workspaceFileSuggestions,
|
|
17
|
+
PI_WEBUI_CAPABILITIES.piPackagesManage,
|
|
18
|
+
PI_WEBUI_CAPABILITIES.selectedMachineSettings,
|
|
19
|
+
PI_WEBUI_CAPABILITIES.agentProfileConfig,
|
|
20
|
+
];
|
|
21
|
+
export const SESSIOND_RUNTIME_CAPABILITIES = [
|
|
22
|
+
PI_WEBUI_CAPABILITIES.sessionsDeleteArchived,
|
|
23
|
+
PI_WEBUI_CAPABILITIES.sessionsBulkMutations,
|
|
24
|
+
PI_WEBUI_CAPABILITIES.sessionsCleanup,
|
|
25
|
+
PI_WEBUI_CAPABILITIES.sessionsReload,
|
|
26
|
+
PI_WEBUI_CAPABILITIES.sessionsClearQueue,
|
|
27
|
+
PI_WEBUI_CAPABILITIES.sessionsSystemPrompt,
|
|
28
|
+
PI_WEBUI_CAPABILITIES.sessionsPersistedState,
|
|
29
|
+
PI_WEBUI_CAPABILITIES.sessionsNotifications,
|
|
30
|
+
PI_WEBUI_CAPABILITIES.sessionsUnread,
|
|
31
|
+
PI_WEBUI_CAPABILITIES.promptAttachments,
|
|
32
|
+
];
|
|
33
|
+
const EFFECTIVE_CAPABILITY_REQUIREMENTS = {
|
|
34
|
+
[PI_WEBUI_CAPABILITIES.sessionsDeleteArchived]: ["web", "sessiond"],
|
|
35
|
+
[PI_WEBUI_CAPABILITIES.sessionsBulkMutations]: ["web", "sessiond"],
|
|
36
|
+
[PI_WEBUI_CAPABILITIES.sessionsCleanup]: ["web", "sessiond"],
|
|
37
|
+
[PI_WEBUI_CAPABILITIES.sessionsReload]: ["web", "sessiond"],
|
|
38
|
+
[PI_WEBUI_CAPABILITIES.sessionsClearQueue]: ["web", "sessiond"],
|
|
39
|
+
[PI_WEBUI_CAPABILITIES.sessionsSystemPrompt]: ["web", "sessiond"],
|
|
40
|
+
[PI_WEBUI_CAPABILITIES.sessionsPersistedState]: ["web", "sessiond"],
|
|
41
|
+
[PI_WEBUI_CAPABILITIES.sessionsNotifications]: ["web", "sessiond"],
|
|
42
|
+
[PI_WEBUI_CAPABILITIES.sessionsUnread]: ["web", "sessiond"],
|
|
43
|
+
[PI_WEBUI_CAPABILITIES.promptAttachments]: ["web", "sessiond"],
|
|
44
|
+
[PI_WEBUI_CAPABILITIES.workspaceFileSuggestions]: ["web"],
|
|
45
|
+
[PI_WEBUI_CAPABILITIES.piPackagesManage]: ["web"],
|
|
46
|
+
[PI_WEBUI_CAPABILITIES.selectedMachineSettings]: ["web"],
|
|
47
|
+
[PI_WEBUI_CAPABILITIES.agentProfileConfig]: ["web"],
|
|
48
|
+
};
|
|
49
|
+
export function isPiWebUiCapability(value) {
|
|
50
|
+
return typeof value === "string" && knownPiWebUiCapabilities.has(value);
|
|
51
|
+
}
|
|
52
|
+
export function supportsPiWebUiCapability(source, capability) {
|
|
53
|
+
return source?.capabilities?.includes(capability) === true;
|
|
54
|
+
}
|
|
55
|
+
export function parseKnownPiWebUiCapabilities(value) {
|
|
56
|
+
if (!Array.isArray(value) || !value.every((capability) => typeof capability === "string"))
|
|
57
|
+
return undefined;
|
|
58
|
+
return value.filter(isPiWebUiCapability);
|
|
59
|
+
}
|
|
60
|
+
export function effectivePiWebUiCapabilities(components) {
|
|
61
|
+
return KNOWN_PI_WEBUI_CAPABILITIES.filter((capability) => {
|
|
62
|
+
const requiredComponents = EFFECTIVE_CAPABILITY_REQUIREMENTS[capability];
|
|
63
|
+
return requiredComponents.every((component) => {
|
|
64
|
+
const runtime = components[component];
|
|
65
|
+
return runtime?.available === true && supportsPiWebUiCapability(runtime, capability);
|
|
66
|
+
});
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=capabilities.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"capabilities.js","sourceRoot":"","sources":["../../src/shared/capabilities.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
export const PI_PACKAGE_MUTATION_PROXY_TIMEOUT_MS = 5 * 60_000;
|
|
2
|
+
export const PI_PACKAGE_PLUGINS_OPERATION_PROXY_TIMEOUT_MS = 5 * 60_000;
|
|
3
|
+
export const SKILLS_OPERATION_PROXY_TIMEOUT_MS = 5 * 60_000;
|
|
4
|
+
export const SESSION_TREE_NAVIGATION_PROXY_TIMEOUT_MS = 5 * 60_000;
|
|
5
|
+
export const FEDERATED_HTTP_ROUTES = [
|
|
6
|
+
{ method: "GET", path: "/pi-webui/status" },
|
|
7
|
+
{ method: "GET", path: "/config" },
|
|
8
|
+
{ method: "PUT", path: "/config" },
|
|
9
|
+
{ method: "GET", path: "/models-config" },
|
|
10
|
+
{ method: "PUT", path: "/models-config" },
|
|
11
|
+
{ method: "POST", path: "/models-config/test" },
|
|
12
|
+
{ method: "POST", path: "/models-config/discover" },
|
|
13
|
+
{ method: "GET", path: "/session-defaults" },
|
|
14
|
+
{ method: "PUT", path: "/session-defaults" },
|
|
15
|
+
{ method: "GET", path: "/skills" },
|
|
16
|
+
{ method: "PATCH", path: "/skills" },
|
|
17
|
+
{ method: "POST", path: "/skills/search", timeoutMs: SKILLS_OPERATION_PROXY_TIMEOUT_MS },
|
|
18
|
+
{ method: "POST", path: "/skills/install", timeoutMs: SKILLS_OPERATION_PROXY_TIMEOUT_MS },
|
|
19
|
+
{ method: "POST", path: "/skills/check", timeoutMs: SKILLS_OPERATION_PROXY_TIMEOUT_MS },
|
|
20
|
+
{ method: "POST", path: "/skills/update", timeoutMs: SKILLS_OPERATION_PROXY_TIMEOUT_MS },
|
|
21
|
+
{ method: "GET", path: "/plugins" },
|
|
22
|
+
{ method: "GET", path: "/package-plugins" },
|
|
23
|
+
{ method: "POST", path: "/package-plugins", timeoutMs: PI_PACKAGE_PLUGINS_OPERATION_PROXY_TIMEOUT_MS },
|
|
24
|
+
{ method: "GET", path: "/pi-packages" },
|
|
25
|
+
{ method: "POST", path: "/pi-packages/install", timeoutMs: PI_PACKAGE_MUTATION_PROXY_TIMEOUT_MS },
|
|
26
|
+
{ method: "POST", path: "/pi-packages/remove", timeoutMs: PI_PACKAGE_MUTATION_PROXY_TIMEOUT_MS },
|
|
27
|
+
{ method: "POST", path: "/pi-packages/update", timeoutMs: PI_PACKAGE_MUTATION_PROXY_TIMEOUT_MS },
|
|
28
|
+
{ method: "GET", path: "/projects" },
|
|
29
|
+
{ method: "POST", path: "/projects" },
|
|
30
|
+
{ method: "DELETE", path: "/projects/:projectId" },
|
|
31
|
+
{ method: "GET", path: "/project-directories" },
|
|
32
|
+
{ method: "GET", path: "/projects/:projectId/workspaces" },
|
|
33
|
+
{ method: "DELETE", path: "/projects/:projectId/workspaces/:workspaceId" },
|
|
34
|
+
{ method: "GET", path: "/projects/:projectId/workspaces/:workspaceId/tree" },
|
|
35
|
+
{ method: "GET", path: "/projects/:projectId/workspaces/:workspaceId/file" },
|
|
36
|
+
{ method: "PUT", path: "/projects/:projectId/workspaces/:workspaceId/file" },
|
|
37
|
+
{ method: "DELETE", path: "/projects/:projectId/workspaces/:workspaceId/file" },
|
|
38
|
+
{ method: "POST", path: "/projects/:projectId/workspaces/:workspaceId/file/move" },
|
|
39
|
+
{ method: "GET", path: "/projects/:projectId/workspaces/:workspaceId/file/preview" },
|
|
40
|
+
{ method: "GET", path: "/projects/:projectId/workspaces/:workspaceId/files" },
|
|
41
|
+
{ method: "GET", path: "/projects/:projectId/workspaces/:workspaceId/git/status" },
|
|
42
|
+
{ method: "GET", path: "/projects/:projectId/workspaces/:workspaceId/git/diff" },
|
|
43
|
+
{ method: "GET", path: "/projects/:projectId/workspaces/:workspaceId/terminals" },
|
|
44
|
+
{ method: "POST", path: "/projects/:projectId/workspaces/:workspaceId/terminals" },
|
|
45
|
+
{ method: "DELETE", path: "/projects/:projectId/workspaces/:workspaceId/terminals" },
|
|
46
|
+
{ method: "POST", path: "/projects/:projectId/workspaces/:workspaceId/terminals/:terminalId/continue" },
|
|
47
|
+
{ method: "DELETE", path: "/projects/:projectId/workspaces/:workspaceId/terminals/:terminalId" },
|
|
48
|
+
{ method: "POST", path: "/projects/:projectId/workspaces/:workspaceId/terminal-command-runs" },
|
|
49
|
+
{ method: "GET", path: "/terminal-command-runs" },
|
|
50
|
+
{ method: "GET", path: "/terminal-command-runs/:runId" },
|
|
51
|
+
{ method: "POST", path: "/terminal-command-runs/:runId/cancel" },
|
|
52
|
+
{ method: "GET", path: "/files" },
|
|
53
|
+
{ method: "GET", path: "/activity" },
|
|
54
|
+
{ method: "GET", path: "/sessions" },
|
|
55
|
+
{ method: "POST", path: "/sessions" },
|
|
56
|
+
{ method: "GET", path: "/sessions/unread" },
|
|
57
|
+
{ method: "GET", path: "/sessions/notifications" },
|
|
58
|
+
{ method: "POST", path: "/sessions/cleanup/preview" },
|
|
59
|
+
{ method: "POST", path: "/sessions/cleanup" },
|
|
60
|
+
{ method: "POST", path: "/sessions/bulk/archive" },
|
|
61
|
+
{ method: "POST", path: "/sessions/bulk/delete-archived" },
|
|
62
|
+
{ method: "GET", path: "/sessions/:sessionId/export" },
|
|
63
|
+
{ method: "GET", path: "/sessions/:sessionId/messages" },
|
|
64
|
+
{ method: "GET", path: "/sessions/:sessionId/notifications" },
|
|
65
|
+
{ method: "POST", path: "/sessions/:sessionId/notifications/dismiss" },
|
|
66
|
+
{ method: "POST", path: "/sessions/:sessionId/notifications/dismiss-all" },
|
|
67
|
+
{ method: "POST", path: "/sessions/:sessionId/unread/acknowledge" },
|
|
68
|
+
{ method: "GET", path: "/sessions/:sessionId/status" },
|
|
69
|
+
{ method: "GET", path: "/sessions/:sessionId/system-prompt" },
|
|
70
|
+
{ method: "GET", path: "/sessions/:sessionId/stream-snapshot" },
|
|
71
|
+
{ method: "GET", path: "/sessions/:sessionId/models" },
|
|
72
|
+
{ method: "POST", path: "/sessions/:sessionId/model" },
|
|
73
|
+
{ method: "POST", path: "/sessions/:sessionId/model/cycle" },
|
|
74
|
+
{ method: "GET", path: "/sessions/:sessionId/thinking-levels" },
|
|
75
|
+
{ method: "POST", path: "/sessions/:sessionId/thinking-level" },
|
|
76
|
+
{ method: "POST", path: "/sessions/:sessionId/thinking-level/cycle" },
|
|
77
|
+
{ method: "GET", path: "/sessions/:sessionId/commands" },
|
|
78
|
+
{ method: "POST", path: "/sessions/:sessionId/prompt" },
|
|
79
|
+
{ method: "POST", path: "/sessions/:sessionId/queue/clear" },
|
|
80
|
+
{ method: "POST", path: "/sessions/:sessionId/warnings/dismiss" },
|
|
81
|
+
{ method: "POST", path: "/sessions/:sessionId/attachments" },
|
|
82
|
+
{ method: "POST", path: "/sessions/:sessionId/shell" },
|
|
83
|
+
{ method: "POST", path: "/sessions/:sessionId/commands/run" },
|
|
84
|
+
{ method: "POST", path: "/sessions/:sessionId/commands/respond" },
|
|
85
|
+
{ method: "POST", path: "/sessions/:sessionId/tree/navigate", timeoutMs: SESSION_TREE_NAVIGATION_PROXY_TIMEOUT_MS },
|
|
86
|
+
{ method: "POST", path: "/sessions/:sessionId/abort" },
|
|
87
|
+
{ method: "POST", path: "/sessions/:sessionId/stop" },
|
|
88
|
+
{ method: "POST", path: "/sessions/:sessionId/archive" },
|
|
89
|
+
{ method: "POST", path: "/sessions/:sessionId/archive-tree" },
|
|
90
|
+
{ method: "POST", path: "/sessions/:sessionId/restore" },
|
|
91
|
+
{ method: "DELETE", path: "/sessions/:sessionId" },
|
|
92
|
+
{ method: "POST", path: "/sessions/:sessionId/reload" },
|
|
93
|
+
{ method: "POST", path: "/sessions/:sessionId/detach-parent" },
|
|
94
|
+
{ method: "GET", path: "/auth/providers" },
|
|
95
|
+
{ method: "POST", path: "/auth/api-key" },
|
|
96
|
+
{ method: "POST", path: "/auth/api-key/interactive" },
|
|
97
|
+
{ method: "POST", path: "/auth/logout" },
|
|
98
|
+
{ method: "POST", path: "/auth/oauth" },
|
|
99
|
+
{ method: "GET", path: "/auth/oauth/:flowId" },
|
|
100
|
+
{ method: "POST", path: "/auth/oauth/:flowId/respond" },
|
|
101
|
+
{ method: "POST", path: "/auth/oauth/:flowId/cancel" },
|
|
102
|
+
];
|
|
103
|
+
export const FEDERATED_WEBSOCKET_ROUTES = [
|
|
104
|
+
"/events",
|
|
105
|
+
"/sessions/events",
|
|
106
|
+
"/sessions/:sessionId/events",
|
|
107
|
+
"/projects/:projectId/workspaces/:workspaceId/terminals/:terminalId/socket",
|
|
108
|
+
];
|
|
109
|
+
//# sourceMappingURL=federatedRoutes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"federatedRoutes.js","sourceRoot":"","sources":["../../src/shared/federatedRoutes.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,oCAAoC,GAAG,CAAC,GAAG,MAAM,CAAC;AAC/D,MAAM,CAAC,MAAM,6CAA6C,GAAG,CAAC,GAAG,MAAM,CAAC;AACxE,MAAM,CAAC,MAAM,iCAAiC,GAAG,CAAC,GAAG,MAAM,CAAC;AAC5D,MAAM,CAAC,MAAM,wCAAwC,GAAG,CAAC,GAAG,MAAM,CAAC;AAQnE,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,kBAAkB,EAAE;IAC3C,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE;IAClC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE;IAClC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,gBAAgB,EAAE;IACzC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,gBAAgB,EAAE;IACzC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,qBAAqB,EAAE;IAC/C,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,yBAAyB,EAAE;IACnD,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,mBAAmB,EAAE;IAC5C,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,mBAAmB,EAAE;IAC5C,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE;IAClC,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE;IACpC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,EAAE,SAAS,EAAE,iCAAiC,EAAE;IACxF,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,EAAE,SAAS,EAAE,iCAAiC,EAAE;IACzF,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,EAAE,SAAS,EAAE,iCAAiC,EAAE;IACvF,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,EAAE,SAAS,EAAE,iCAAiC,EAAE;IACxF,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE;IACnC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,kBAAkB,EAAE;IAC3C,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,EAAE,SAAS,EAAE,6CAA6C,EAAE;IACtG,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,cAAc,EAAE;IACvC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,sBAAsB,EAAE,SAAS,EAAE,oCAAoC,EAAE;IACjG,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,qBAAqB,EAAE,SAAS,EAAE,oCAAoC,EAAE;IAChG,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,qBAAqB,EAAE,SAAS,EAAE,oCAAoC,EAAE;IAChG,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE;IACpC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE;IACrC,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,sBAAsB,EAAE;IAClD,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,sBAAsB,EAAE;IAC/C,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,iCAAiC,EAAE;IAC1D,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,8CAA8C,EAAE;IAC1E,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,mDAAmD,EAAE;IAC5E,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,mDAAmD,EAAE;IAC5E,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,mDAAmD,EAAE;IAC5E,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,mDAAmD,EAAE;IAC/E,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,wDAAwD,EAAE;IAClF,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,2DAA2D,EAAE;IACpF,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,oDAAoD,EAAE;IAC7E,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,yDAAyD,EAAE;IAClF,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,uDAAuD,EAAE;IAChF,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,wDAAwD,EAAE;IACjF,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,wDAAwD,EAAE;IAClF,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,wDAAwD,EAAE;IACpF,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,6EAA6E,EAAE;IACvG,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,oEAAoE,EAAE;IAChG,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,oEAAoE,EAAE;IAC9F,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,wBAAwB,EAAE;IACjD,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,+BAA+B,EAAE;IACxD,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,sCAAsC,EAAE;IAChE,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE;IACjC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE;IACpC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE;IACpC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE;IACrC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,kBAAkB,EAAE;IAC3C,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,yBAAyB,EAAE;IAClD,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,2BAA2B,EAAE;IACrD,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,mBAAmB,EAAE;IAC7C,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,wBAAwB,EAAE;IAClD,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,gCAAgC,EAAE;IAC1D,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,6BAA6B,EAAE;IACtD,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,+BAA+B,EAAE;IACxD,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,oCAAoC,EAAE;IAC7D,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,4CAA4C,EAAE;IACtE,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,gDAAgD,EAAE;IAC1E,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,yCAAyC,EAAE;IACnE,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,6BAA6B,EAAE;IACtD,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,oCAAoC,EAAE;IAC7D,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,sCAAsC,EAAE;IAC/D,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,6BAA6B,EAAE;IACtD,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,4BAA4B,EAAE;IACtD,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,kCAAkC,EAAE;IAC5D,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,sCAAsC,EAAE;IAC/D,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,qCAAqC,EAAE;IAC/D,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,2CAA2C,EAAE;IACrE,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,+BAA+B,EAAE;IACxD,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,6BAA6B,EAAE;IACvD,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,kCAAkC,EAAE;IAC5D,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,uCAAuC,EAAE;IACjE,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,kCAAkC,EAAE;IAC5D,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,4BAA4B,EAAE;IACtD,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,mCAAmC,EAAE;IAC7D,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,uCAAuC,EAAE;IACjE,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,oCAAoC,EAAE,SAAS,EAAE,wCAAwC,EAAE;IACnH,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,4BAA4B,EAAE;IACtD,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,2BAA2B,EAAE;IACrD,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,8BAA8B,EAAE;IACxD,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,mCAAmC,EAAE;IAC7D,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,8BAA8B,EAAE;IACxD,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,sBAAsB,EAAE;IAClD,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,6BAA6B,EAAE;IACvD,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,oCAAoC,EAAE;IAC9D,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,iBAAiB,EAAE;IAC1C,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,EAAE;IACzC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,2BAA2B,EAAE;IACrD,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,EAAE;IACxC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE;IACvC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,qBAAqB,EAAE;IAC9C,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,6BAA6B,EAAE;IACvD,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,4BAA4B,EAAE;CACF,CAAC;AAEvD,MAAM,CAAC,MAAM,0BAA0B,GAAG;IACxC,SAAS;IACT,kBAAkB;IAClB,6BAA6B;IAC7B,2EAA2E;CACvC,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { isPiWebUiPluginId } from "./pluginIds.js";
|
|
2
|
+
const MACHINE_PLUGIN_ID_PREFIX = "machine.";
|
|
3
|
+
export function machineScopedPluginId(machineId, pluginId) {
|
|
4
|
+
if (machineId === "")
|
|
5
|
+
throw new Error("Machine id is required");
|
|
6
|
+
if (!isPiWebUiPluginId(pluginId))
|
|
7
|
+
throw new Error(`Invalid PI WEBUI plugin id: ${pluginId}`);
|
|
8
|
+
return `${MACHINE_PLUGIN_ID_PREFIX}${stringToHex(machineId)}.${pluginId}`;
|
|
9
|
+
}
|
|
10
|
+
export function parseMachineScopedPluginId(pluginId) {
|
|
11
|
+
if (!pluginId.startsWith(MACHINE_PLUGIN_ID_PREFIX))
|
|
12
|
+
return undefined;
|
|
13
|
+
const rest = pluginId.slice(MACHINE_PLUGIN_ID_PREFIX.length);
|
|
14
|
+
const separator = rest.indexOf(".");
|
|
15
|
+
if (separator < 1)
|
|
16
|
+
return undefined;
|
|
17
|
+
const encodedMachineId = rest.slice(0, separator);
|
|
18
|
+
const sourcePluginId = rest.slice(separator + 1);
|
|
19
|
+
if (!isHexString(encodedMachineId) || !isPiWebUiPluginId(sourcePluginId))
|
|
20
|
+
return undefined;
|
|
21
|
+
const machineId = hexToString(encodedMachineId);
|
|
22
|
+
if (machineId === "")
|
|
23
|
+
return undefined;
|
|
24
|
+
return { machineId, pluginId: sourcePluginId };
|
|
25
|
+
}
|
|
26
|
+
function stringToHex(value) {
|
|
27
|
+
return [...new TextEncoder().encode(value)]
|
|
28
|
+
.map((byte) => byte.toString(16).padStart(2, "0"))
|
|
29
|
+
.join("");
|
|
30
|
+
}
|
|
31
|
+
function hexToString(value) {
|
|
32
|
+
const bytes = new Uint8Array(value.length / 2);
|
|
33
|
+
for (let index = 0; index < value.length; index += 2) {
|
|
34
|
+
bytes[index / 2] = Number.parseInt(value.slice(index, index + 2), 16);
|
|
35
|
+
}
|
|
36
|
+
return new TextDecoder().decode(bytes);
|
|
37
|
+
}
|
|
38
|
+
function isHexString(value) {
|
|
39
|
+
return value.length > 0 && value.length % 2 === 0 && /^[0-9a-f]+$/u.test(value);
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=machinePluginIds.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"machinePluginIds.js","sourceRoot":"","sources":["../../src/shared/machinePluginIds.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAEnD,MAAM,wBAAwB,GAAG,UAAU,CAAC;AAO5C,MAAM,UAAU,qBAAqB,CAAC,SAAiB,EAAE,QAAgB;IACvE,IAAI,SAAS,KAAK,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAChE,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,+BAA+B,QAAQ,EAAE,CAAC,CAAC;IAC7F,OAAO,GAAG,wBAAwB,GAAG,WAAW,CAAC,SAAS,CAAC,IAAI,QAAQ,EAAE,CAAC;AAC5E,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,QAAgB;IACzD,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,wBAAwB,CAAC;QAAE,OAAO,SAAS,CAAC;IACrE,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC;IAC7D,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACpC,IAAI,SAAS,GAAG,CAAC;QAAE,OAAO,SAAS,CAAC;IAEpC,MAAM,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;IAClD,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;IACjD,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,IAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC;QAAE,OAAO,SAAS,CAAC;IAE3F,MAAM,SAAS,GAAG,WAAW,CAAC,gBAAgB,CAAC,CAAC;IAChD,IAAI,SAAS,KAAK,EAAE;QAAE,OAAO,SAAS,CAAC;IACvC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,cAAc,EAAE,CAAC;AACjD,CAAC;AAED,SAAS,WAAW,CAAC,KAAa;IAChC,OAAO,CAAC,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;SACxC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;SACjD,IAAI,CAAC,EAAE,CAAC,CAAC;AACd,CAAC;AAED,SAAS,WAAW,CAAC,KAAa;IAChC,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC/C,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACrD,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACxE,CAAC;IACD,OAAO,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACzC,CAAC;AAED,SAAS,WAAW,CAAC,KAAa;IAChC,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAClF,CAAC"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import { parseActiveAgentProfileDescriptor } from "./activeAgentProfile.js";
|
|
2
|
+
import { parseKnownPiWebUiCapabilities } from "./capabilities.js";
|
|
3
|
+
export function parsePiWebUiVersionResponse(value) {
|
|
4
|
+
if (!isRecord(value))
|
|
5
|
+
return undefined;
|
|
6
|
+
const packageName = value["packageName"];
|
|
7
|
+
const generatedAt = value["generatedAt"];
|
|
8
|
+
const components = value["components"];
|
|
9
|
+
if (typeof packageName !== "string" || packageName === "" || typeof generatedAt !== "string" || generatedAt === "" || !isRecord(components))
|
|
10
|
+
return undefined;
|
|
11
|
+
const web = parsePiWebUiComponentStatus(components["web"]);
|
|
12
|
+
const sessiond = parsePiWebUiComponentStatus(components["sessiond"]);
|
|
13
|
+
if (web === undefined || sessiond === undefined)
|
|
14
|
+
return undefined;
|
|
15
|
+
return { packageName, generatedAt, components: { web, sessiond } };
|
|
16
|
+
}
|
|
17
|
+
export function parsePiWebUiRuntimeResponse(value) {
|
|
18
|
+
if (!isRecord(value))
|
|
19
|
+
return undefined;
|
|
20
|
+
const packageName = value["packageName"];
|
|
21
|
+
const generatedAt = value["generatedAt"];
|
|
22
|
+
const components = value["components"];
|
|
23
|
+
const capabilities = parseKnownPiWebUiCapabilities(value["capabilities"]);
|
|
24
|
+
if (typeof packageName !== "string" || packageName === "" || typeof generatedAt !== "string" || generatedAt === "" || !isRecord(components) || capabilities === undefined)
|
|
25
|
+
return undefined;
|
|
26
|
+
const web = parsePiWebUiRuntimeComponent(components["web"]);
|
|
27
|
+
const sessiond = parsePiWebUiRuntimeComponent(components["sessiond"]);
|
|
28
|
+
if (web === undefined || sessiond === undefined)
|
|
29
|
+
return undefined;
|
|
30
|
+
return { packageName, generatedAt, components: { web, sessiond }, capabilities };
|
|
31
|
+
}
|
|
32
|
+
export function parsePiWebUiRuntimeComponent(value) {
|
|
33
|
+
if (!isRecord(value))
|
|
34
|
+
return undefined;
|
|
35
|
+
const component = value["component"];
|
|
36
|
+
const label = value["label"];
|
|
37
|
+
const runtimeVersion = value["runtimeVersion"];
|
|
38
|
+
const available = value["available"];
|
|
39
|
+
const capabilities = parseKnownPiWebUiCapabilities(value["capabilities"]);
|
|
40
|
+
const activeAgentProfileValue = value["activeAgentProfile"];
|
|
41
|
+
const activeAgentProfile = activeAgentProfileValue === undefined ? undefined : parseActiveAgentProfileDescriptor(activeAgentProfileValue);
|
|
42
|
+
const error = value["error"];
|
|
43
|
+
if (component !== "web" && component !== "sessiond")
|
|
44
|
+
return undefined;
|
|
45
|
+
if (typeof label !== "string" || label === "" || typeof available !== "boolean" || capabilities === undefined)
|
|
46
|
+
return undefined;
|
|
47
|
+
if (activeAgentProfileValue !== undefined && (component !== "sessiond" || activeAgentProfile === undefined))
|
|
48
|
+
return undefined;
|
|
49
|
+
return {
|
|
50
|
+
component,
|
|
51
|
+
label,
|
|
52
|
+
...(typeof runtimeVersion === "string" ? { runtimeVersion } : {}),
|
|
53
|
+
available,
|
|
54
|
+
capabilities,
|
|
55
|
+
...(activeAgentProfile === undefined ? {} : { activeAgentProfile }),
|
|
56
|
+
...(typeof error === "string" ? { error } : {}),
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
export function parsePiWebUiComponentStatus(value) {
|
|
60
|
+
if (!isRecord(value))
|
|
61
|
+
return undefined;
|
|
62
|
+
const component = value["component"];
|
|
63
|
+
const label = value["label"];
|
|
64
|
+
const runtimeVersion = value["runtimeVersion"];
|
|
65
|
+
const installedVersion = value["installedVersion"];
|
|
66
|
+
const stale = value["stale"];
|
|
67
|
+
const available = value["available"];
|
|
68
|
+
const error = value["error"];
|
|
69
|
+
const installation = parsePiWebUiInstallationInfo(value["installation"]);
|
|
70
|
+
if (component !== "web" && component !== "sessiond")
|
|
71
|
+
return undefined;
|
|
72
|
+
if (typeof label !== "string" || label === "" || typeof stale !== "boolean" || typeof available !== "boolean")
|
|
73
|
+
return undefined;
|
|
74
|
+
return {
|
|
75
|
+
component,
|
|
76
|
+
label,
|
|
77
|
+
...(typeof runtimeVersion === "string" ? { runtimeVersion } : {}),
|
|
78
|
+
...(typeof installedVersion === "string" ? { installedVersion } : {}),
|
|
79
|
+
stale,
|
|
80
|
+
available,
|
|
81
|
+
...(installation === undefined ? {} : { installation }),
|
|
82
|
+
...(typeof error === "string" ? { error } : {}),
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
export function parsePiWebUiInstallationInfo(value) {
|
|
86
|
+
if (!isRecord(value))
|
|
87
|
+
return undefined;
|
|
88
|
+
const kind = value["kind"];
|
|
89
|
+
const path = value["path"];
|
|
90
|
+
const source = value["source"];
|
|
91
|
+
const scope = value["scope"];
|
|
92
|
+
const npmRoot = value["npmRoot"];
|
|
93
|
+
const dockerMode = value["dockerMode"];
|
|
94
|
+
if (kind !== "pi-package" && kind !== "npm-global" && kind !== "local" && kind !== "docker" && kind !== "unknown")
|
|
95
|
+
return undefined;
|
|
96
|
+
return {
|
|
97
|
+
kind,
|
|
98
|
+
...(typeof path === "string" ? { path } : {}),
|
|
99
|
+
...(typeof source === "string" ? { source } : {}),
|
|
100
|
+
...(scope === "user" || scope === "project" ? { scope } : {}),
|
|
101
|
+
...(typeof npmRoot === "string" ? { npmRoot } : {}),
|
|
102
|
+
...(dockerMode === "runtime" || dockerMode === "dev" ? { dockerMode } : {}),
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
function isRecord(value) {
|
|
106
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
107
|
+
}
|
|
108
|
+
//# sourceMappingURL=piWebUiStatusParsing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"piWebUiStatusParsing.js","sourceRoot":"","sources":["../../src/shared/piWebUiStatusParsing.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pluginIds.js","sourceRoot":"","sources":["../../src/shared/pluginIds.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,sBAAsB,GAAG,qBAAqB,CAAC;AAE5D,MAAM,UAAU,iBAAiB,CAAC,KAAa;IAC7C,OAAO,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC5C,CAAC"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Image mime types supported by the pi coding agent. Mirrors
|
|
3
|
+
* `detectSupportedImageMimeType` in `@earendil-works/pi-coding-agent`.
|
|
4
|
+
*/
|
|
5
|
+
export const SUPPORTED_IMAGE_MIME_TYPES = ["image/jpeg", "image/png", "image/gif", "image/webp"];
|
|
6
|
+
const supportedImageMimeTypes = new Set(SUPPORTED_IMAGE_MIME_TYPES);
|
|
7
|
+
/**
|
|
8
|
+
* Maximum base64 payload per image. Matches pi's `DEFAULT_MAX_BYTES`
|
|
9
|
+
* (4.5MB, headroom below Anthropic's 5MB inline image limit). pi resizes
|
|
10
|
+
* images down to this size; we validate against it as the hard upper bound.
|
|
11
|
+
*/
|
|
12
|
+
export const MAX_INLINE_IMAGE_BASE64_BYTES = Math.round(4.5 * 1024 * 1024);
|
|
13
|
+
/** Maximum number of attachments allowed on a single prompt. */
|
|
14
|
+
export const MAX_PROMPT_ATTACHMENTS = 16;
|
|
15
|
+
export function isSupportedImageMimeType(value) {
|
|
16
|
+
return typeof value === "string" && supportedImageMimeTypes.has(value);
|
|
17
|
+
}
|
|
18
|
+
export function extensionForImageMimeType(mimeType) {
|
|
19
|
+
switch (mimeType) {
|
|
20
|
+
case "image/jpeg": return "jpg";
|
|
21
|
+
case "image/png": return "png";
|
|
22
|
+
case "image/gif": return "gif";
|
|
23
|
+
case "image/webp": return "webp";
|
|
24
|
+
default: return "bin";
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
const base64Pattern = /^[A-Za-z0-9+/]*={0,2}$/;
|
|
28
|
+
export function base64ByteLength(data) {
|
|
29
|
+
const padding = data.endsWith("==") ? 2 : data.endsWith("=") ? 1 : 0;
|
|
30
|
+
return Math.max(0, Math.floor((data.length * 3) / 4) - padding);
|
|
31
|
+
}
|
|
32
|
+
export function parsePromptAttachments(value, options = {}) {
|
|
33
|
+
if (value === undefined)
|
|
34
|
+
return [];
|
|
35
|
+
if (!Array.isArray(value))
|
|
36
|
+
throw new Error("attachments must be an array");
|
|
37
|
+
const maxAttachments = options.maxAttachments ?? MAX_PROMPT_ATTACHMENTS;
|
|
38
|
+
if (value.length > maxAttachments)
|
|
39
|
+
throw new Error(`too many attachments (max ${String(maxAttachments)})`);
|
|
40
|
+
return value.map((entry, index) => parsePromptAttachment(entry, index, options));
|
|
41
|
+
}
|
|
42
|
+
function isRecord(value) {
|
|
43
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
44
|
+
}
|
|
45
|
+
function parsePromptAttachment(value, index, options) {
|
|
46
|
+
if (!isRecord(value))
|
|
47
|
+
throw new Error(`attachment ${String(index)} must be an object`);
|
|
48
|
+
const record = value;
|
|
49
|
+
const kind = record["kind"];
|
|
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) {
|
|
57
|
+
const mimeType = record["mimeType"];
|
|
58
|
+
if (!isSupportedImageMimeType(mimeType))
|
|
59
|
+
throw new Error(`attachment ${String(index)} has unsupported image type`);
|
|
60
|
+
const data = requireBase64Data(record["data"], index, { allowEmpty: false });
|
|
61
|
+
if (options.enforceInlineSizeLimit === true && base64ByteLength(data) > MAX_INLINE_IMAGE_BASE64_BYTES) {
|
|
62
|
+
throw new Error(`attachment ${String(index)} exceeds the inline image size limit`);
|
|
63
|
+
}
|
|
64
|
+
return {
|
|
65
|
+
kind: "image",
|
|
66
|
+
mimeType,
|
|
67
|
+
data,
|
|
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),
|
|
80
|
+
};
|
|
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
|
+
}
|
|
92
|
+
//# sourceMappingURL=promptAttachments.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"promptAttachments.js","sourceRoot":"","sources":["../../src/shared/promptAttachments.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { ThinkingLevel } from "@earendil-works/pi-agent-core";
|
|
2
|
+
export type { ThinkingLevel };
|
|
3
|
+
/**
|
|
4
|
+
* Known levels in increasing intensity, derived from pi's `ThinkingLevel` union.
|
|
5
|
+
* The `satisfies` clause makes this fail to compile if pi removes or renames a
|
|
6
|
+
* level; thinkingLevels.test.ts adds a compile-time check for additions too. When
|
|
7
|
+
* either breaks, update this list and give the new level a label/description
|
|
8
|
+
* where thinking levels are presented.
|
|
9
|
+
*/
|
|
10
|
+
export declare const KNOWN_THINKING_LEVELS: readonly ["off", "minimal", "low", "medium", "high", "xhigh", "max"];
|
|
11
|
+
export declare function isKnownThinkingLevel(value: string): value is ThinkingLevel;
|
|
12
|
+
export declare function thinkingLevelLabel(level: string | undefined): string;
|
|
13
|
+
export interface ThinkingGauge {
|
|
14
|
+
/** Number of bars to render (the non-"off" levels). */
|
|
15
|
+
total: number;
|
|
16
|
+
/** Number of filled bars for the current level. */
|
|
17
|
+
filled: number;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Describe a thinking-level gauge from the available set rather than a hardcoded
|
|
21
|
+
* table, so it stays correct even if pi changes the available levels at runtime.
|
|
22
|
+
*
|
|
23
|
+
* Convention: the first available level is treated as "no thinking". The gauge
|
|
24
|
+
* therefore renders one bar per remaining level, and fills up to the current
|
|
25
|
+
* level's rank. An unknown current level fills 0 bars instead of throwing.
|
|
26
|
+
*/
|
|
27
|
+
export declare function thinkingGauge(level: string | undefined, available: readonly string[]): ThinkingGauge;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Known levels in increasing intensity, derived from pi's `ThinkingLevel` union.
|
|
3
|
+
* The `satisfies` clause makes this fail to compile if pi removes or renames a
|
|
4
|
+
* level; thinkingLevels.test.ts adds a compile-time check for additions too. When
|
|
5
|
+
* either breaks, update this list and give the new level a label/description
|
|
6
|
+
* where thinking levels are presented.
|
|
7
|
+
*/
|
|
8
|
+
export const KNOWN_THINKING_LEVELS = ["off", "minimal", "low", "medium", "high", "xhigh", "max"];
|
|
9
|
+
export function isKnownThinkingLevel(value) {
|
|
10
|
+
return KNOWN_THINKING_LEVELS.some((level) => level === value);
|
|
11
|
+
}
|
|
12
|
+
export function thinkingLevelLabel(level) {
|
|
13
|
+
return level === undefined || level === "" ? "off" : level;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Describe a thinking-level gauge from the available set rather than a hardcoded
|
|
17
|
+
* table, so it stays correct even if pi changes the available levels at runtime.
|
|
18
|
+
*
|
|
19
|
+
* Convention: the first available level is treated as "no thinking". The gauge
|
|
20
|
+
* therefore renders one bar per remaining level, and fills up to the current
|
|
21
|
+
* level's rank. An unknown current level fills 0 bars instead of throwing.
|
|
22
|
+
*/
|
|
23
|
+
export function thinkingGauge(level, available) {
|
|
24
|
+
const pool = available.length >= 2 ? available : KNOWN_THINKING_LEVELS;
|
|
25
|
+
const total = pool.length - 1;
|
|
26
|
+
const normalized = thinkingLevelLabel(level);
|
|
27
|
+
const index = pool.indexOf(normalized);
|
|
28
|
+
const filled = index <= 0 ? 0 : Math.min(index, total);
|
|
29
|
+
return { total, filled };
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=thinkingLevels.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"thinkingLevels.js","sourceRoot":"","sources":["../../src/shared/thinkingLevels.ts"],"names":[],"mappings":"AAQA;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,CAA6C,CAAC;AAE7I,MAAM,UAAU,oBAAoB,CAAC,KAAa;IAChD,OAAO,qBAAqB,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC;AAChE,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,KAAyB;IAC1D,OAAO,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;AAC7D,CAAC;AASD;;;;;;;GAOG;AACH,MAAM,UAAU,aAAa,CAAC,KAAyB,EAAE,SAA4B;IACnF,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,qBAAqB,CAAC;IACvE,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IAC9B,MAAM,UAAU,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAC7C,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IACvC,MAAM,MAAM,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACvD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;AAC3B,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export const workspaceDeleteOperation = "workspace.delete";
|
|
2
|
+
export const workspaceDeleteOperationMetadataKey = "pi.operation";
|
|
3
|
+
export const targetWorkspaceIdMetadataKey = "target.workspaceId";
|
|
4
|
+
const targetWorkspacePathMetadataKey = "target.workspacePath";
|
|
5
|
+
export function workspaceDeletionMetadata(workspace) {
|
|
6
|
+
return {
|
|
7
|
+
[workspaceDeleteOperationMetadataKey]: workspaceDeleteOperation,
|
|
8
|
+
[targetWorkspaceIdMetadataKey]: workspace.id,
|
|
9
|
+
[targetWorkspacePathMetadataKey]: workspace.path,
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=workspaceDeletion.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspaceDeletion.js","sourceRoot":"","sources":["../../src/shared/workspaceDeletion.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,wBAAwB,GAAG,kBAAkB,CAAC;AAC3D,MAAM,CAAC,MAAM,mCAAmC,GAAG,cAAc,CAAC;AAClE,MAAM,CAAC,MAAM,4BAA4B,GAAG,oBAAoB,CAAC;AACjE,MAAM,8BAA8B,GAAG,sBAAsB,CAAC;AAO9D,MAAM,UAAU,yBAAyB,CAAC,SAAkC;IAC1E,OAAO;QACL,CAAC,mCAAmC,CAAC,EAAE,wBAAwB;QAC/D,CAAC,4BAA4B,CAAC,EAAE,SAAS,CAAC,EAAE;QAC5C,CAAC,8BAA8B,CAAC,EAAE,SAAS,CAAC,IAAI;KACjD,CAAC;AACJ,CAAC"}
|
|
@@ -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,8 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" role="img" aria-labelledby="title desc">
|
|
2
|
+
<title id="title">PI WEBUI icon</title>
|
|
3
|
+
<desc id="desc">A thin green rounded speech-bubble outline framing a bold mathematical pi symbol.</desc>
|
|
4
|
+
<g id="speech-bubble" fill="none" stroke="#1E9E4A" stroke-width="32" stroke-linecap="round" stroke-linejoin="round">
|
|
5
|
+
<path d="M120 88H392A48 48 0 0 1 440 136V304A48 48 0 0 1 392 352H224L152 416L168 352H120A48 48 0 0 1 72 304V136A48 48 0 0 1 120 88Z"/>
|
|
6
|
+
</g>
|
|
7
|
+
<path id="pi-symbol" fill="#1E9E4A" transform="translate(121 311) scale(.17 -.17)" d="M86 1120H1499V864H1303V362Q1303 233 1327.5 201.5Q1352 170 1408 170Q1465 170 1497 174V-14Q1435 -39 1223 -39Q1156 -39 1091 -20Q987 11 958 102Q945 145 945 233V864H640V0H282V864H86Z"/>
|
|
8
|
+
</svg>
|
|
Binary file
|
|
Binary file
|
|
Binary file
|