@progmruansilva/omp-web 1.202608.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.
Files changed (234) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +181 -0
  3. package/dist/cli.js +1015 -0
  4. package/dist/cli.js.map +1 -0
  5. package/dist/client/assets/CodeViewer-Da66baHj.js +4 -0
  6. package/dist/client/assets/TerminalPanel-Bj9an79F.js +126 -0
  7. package/dist/client/assets/UnifiedDiffViewer-eK_kynTO.js +34 -0
  8. package/dist/client/assets/index-DytaeWNd.js +3070 -0
  9. package/dist/client/assets/vendor-editor-core-CL2gOCIg.js +12 -0
  10. package/dist/client/assets/vendor-editor-languages-zOM9I4iZ.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-16x16.png +0 -0
  15. package/dist/client/favicon-180x180.png +0 -0
  16. package/dist/client/favicon-192x192.png +0 -0
  17. package/dist/client/favicon-32x32.png +0 -0
  18. package/dist/client/favicon-512x512.png +0 -0
  19. package/dist/client/favicon.ico +0 -0
  20. package/dist/client/favicon.png +0 -0
  21. package/dist/client/favicon.svg +11 -0
  22. package/dist/client/index.html +67 -0
  23. package/dist/client/manifest.webmanifest +36 -0
  24. package/dist/config.js +272 -0
  25. package/dist/config.js.map +1 -0
  26. package/dist/docker/ompWebDockerCommandPlan.js +211 -0
  27. package/dist/docker/ompWebDockerCommandPlan.js.map +1 -0
  28. package/dist/omp-web-plugins/info/omp-web-plugin.js +51 -0
  29. package/dist/omp-web-plugins/info/package.json +9 -0
  30. package/dist/omp-web-plugins/schedule-prompts/omp-web-plugin.js +43 -0
  31. package/dist/omp-web-plugins/schedule-prompts/package.json +9 -0
  32. package/dist/omp-web-plugins/schedule-prompts/schedulePromptsPanelElement.js +242 -0
  33. package/dist/omp-web-plugins/schedule-prompts/types.js +2 -0
  34. package/dist/omp-web-plugins/updates/omp-web-plugin.js +173 -0
  35. package/dist/omp-web-plugins/updates/package.json +9 -0
  36. package/dist/omp-web-plugins/updates/updatesLogic.js +97 -0
  37. package/dist/ompWebVersionReport.js +217 -0
  38. package/dist/ompWebVersionReport.js.map +1 -0
  39. package/dist/plugin-api/unstable.d.ts +22 -0
  40. package/dist/plugin-api.d.ts +197 -0
  41. package/dist/server/activity/workspaceActivityRoutes.js +4 -0
  42. package/dist/server/activity/workspaceActivityRoutes.js.map +1 -0
  43. package/dist/server/activity/workspaceActivityService.js +98 -0
  44. package/dist/server/activity/workspaceActivityService.js.map +1 -0
  45. package/dist/server/app.js +162 -0
  46. package/dist/server/app.js.map +1 -0
  47. package/dist/server/configRoutes.js +270 -0
  48. package/dist/server/configRoutes.js.map +1 -0
  49. package/dist/server/diagnostics/nodePtySpawnHelper.js +130 -0
  50. package/dist/server/diagnostics/nodePtySpawnHelper.js.map +1 -0
  51. package/dist/server/git/gitEnv.js +15 -0
  52. package/dist/server/git/gitEnv.js.map +1 -0
  53. package/dist/server/git/gitService.js +119 -0
  54. package/dist/server/git/gitService.js.map +1 -0
  55. package/dist/server/gitRoutes.js +23 -0
  56. package/dist/server/gitRoutes.js.map +1 -0
  57. package/dist/server/index.js +7 -0
  58. package/dist/server/index.js.map +1 -0
  59. package/dist/server/machines/machineClient.js +162 -0
  60. package/dist/server/machines/machineClient.js.map +1 -0
  61. package/dist/server/machines/machinePluginProxyRoutes.js +157 -0
  62. package/dist/server/machines/machinePluginProxyRoutes.js.map +1 -0
  63. package/dist/server/machines/machineProxyRoutes.js +127 -0
  64. package/dist/server/machines/machineProxyRoutes.js.map +1 -0
  65. package/dist/server/machines/machineRoutes.js +54 -0
  66. package/dist/server/machines/machineRoutes.js.map +1 -0
  67. package/dist/server/machines/machineService.js +230 -0
  68. package/dist/server/machines/machineService.js.map +1 -0
  69. package/dist/server/machines/machineStore.js +123 -0
  70. package/dist/server/machines/machineStore.js.map +1 -0
  71. package/dist/server/machines/proxyUtils.js +30 -0
  72. package/dist/server/machines/proxyUtils.js.map +1 -0
  73. package/dist/server/ompWebPluginService.js +279 -0
  74. package/dist/server/ompWebPluginService.js.map +1 -0
  75. package/dist/server/ompWebStatus.js +601 -0
  76. package/dist/server/ompWebStatus.js.map +1 -0
  77. package/dist/server/ompWebStatusCache.js +31 -0
  78. package/dist/server/ompWebStatusCache.js.map +1 -0
  79. package/dist/server/piPackageRoutes.js +82 -0
  80. package/dist/server/piPackageRoutes.js.map +1 -0
  81. package/dist/server/piPackageService.js +65 -0
  82. package/dist/server/piPackageService.js.map +1 -0
  83. package/dist/server/projects/directorySuggestions.js +37 -0
  84. package/dist/server/projects/directorySuggestions.js.map +1 -0
  85. package/dist/server/projects/projectService.js +31 -0
  86. package/dist/server/projects/projectService.js.map +1 -0
  87. package/dist/server/push/PushNotificationService.js +137 -0
  88. package/dist/server/push/PushNotificationService.js.map +1 -0
  89. package/dist/server/push/pushRoutes.js +55 -0
  90. package/dist/server/push/pushRoutes.js.map +1 -0
  91. package/dist/server/realtime/sessionEventHub.js +39 -0
  92. package/dist/server/realtime/sessionEventHub.js.map +1 -0
  93. package/dist/server/sessiond/sessionProxyRoutes.js +61 -0
  94. package/dist/server/sessiond/sessionProxyRoutes.js.map +1 -0
  95. package/dist/server/sessiond.js +92 -0
  96. package/dist/server/sessiond.js.map +1 -0
  97. package/dist/server/sessions/attachmentService.js +112 -0
  98. package/dist/server/sessions/attachmentService.js.map +1 -0
  99. package/dist/server/sessions/authProviderOptions.js +52 -0
  100. package/dist/server/sessions/authProviderOptions.js.map +1 -0
  101. package/dist/server/sessions/authRoutes.js +59 -0
  102. package/dist/server/sessions/authRoutes.js.map +1 -0
  103. package/dist/server/sessions/authService.js +105 -0
  104. package/dist/server/sessions/authService.js.map +1 -0
  105. package/dist/server/sessions/builtinCommands.js +29 -0
  106. package/dist/server/sessions/builtinCommands.js.map +1 -0
  107. package/dist/server/sessions/editPreview.js +196 -0
  108. package/dist/server/sessions/editPreview.js.map +1 -0
  109. package/dist/server/sessions/messagePaging.js +41 -0
  110. package/dist/server/sessions/messagePaging.js.map +1 -0
  111. package/dist/server/sessions/oauthLoginFlowService.js +136 -0
  112. package/dist/server/sessions/oauthLoginFlowService.js.map +1 -0
  113. package/dist/server/sessions/piSessionManagerGateway.js +97 -0
  114. package/dist/server/sessions/piSessionManagerGateway.js.map +1 -0
  115. package/dist/server/sessions/piSessionService.js +2401 -0
  116. package/dist/server/sessions/piSessionService.js.map +1 -0
  117. package/dist/server/sessions/schedulePrompt/schedulePromptService.js +46 -0
  118. package/dist/server/sessions/schedulePrompt/schedulePromptService.js.map +1 -0
  119. package/dist/server/sessions/schedulePrompt/scheduler.js +315 -0
  120. package/dist/server/sessions/schedulePrompt/scheduler.js.map +1 -0
  121. package/dist/server/sessions/schedulePrompt/storage.js +118 -0
  122. package/dist/server/sessions/schedulePrompt/storage.js.map +1 -0
  123. package/dist/server/sessions/schedulePrompt/tool.js +252 -0
  124. package/dist/server/sessions/schedulePrompt/tool.js.map +1 -0
  125. package/dist/server/sessions/schedulePrompt/types.js +2 -0
  126. package/dist/server/sessions/schedulePrompt/types.js.map +1 -0
  127. package/dist/server/sessions/sessionArchiveStore.js +254 -0
  128. package/dist/server/sessions/sessionArchiveStore.js.map +1 -0
  129. package/dist/server/sessions/sessionArchiveTree.js +35 -0
  130. package/dist/server/sessions/sessionArchiveTree.js.map +1 -0
  131. package/dist/server/sessions/sessionCleanup.js +157 -0
  132. package/dist/server/sessions/sessionCleanup.js.map +1 -0
  133. package/dist/server/sessions/sessionCommandService.js +260 -0
  134. package/dist/server/sessions/sessionCommandService.js.map +1 -0
  135. package/dist/server/sessions/sessionNameGenerator.js +61 -0
  136. package/dist/server/sessions/sessionNameGenerator.js.map +1 -0
  137. package/dist/server/sessions/sessionRoutes.js +344 -0
  138. package/dist/server/sessions/sessionRoutes.js.map +1 -0
  139. package/dist/server/sessions/sessionRuntimeStore.js +2 -0
  140. package/dist/server/sessions/sessionRuntimeStore.js.map +1 -0
  141. package/dist/server/sessions/spawnSessionTool.js +41 -0
  142. package/dist/server/sessions/spawnSessionTool.js.map +1 -0
  143. package/dist/server/sessions/spawnSubsessionTool.js +203 -0
  144. package/dist/server/sessions/spawnSubsessionTool.js.map +1 -0
  145. package/dist/server/sessions/spawnTargetResolver.js +36 -0
  146. package/dist/server/sessions/spawnTargetResolver.js.map +1 -0
  147. package/dist/server/sessions/subsessionTranscript.js +233 -0
  148. package/dist/server/sessions/subsessionTranscript.js.map +1 -0
  149. package/dist/server/storage/projectStore.js +83 -0
  150. package/dist/server/storage/projectStore.js.map +1 -0
  151. package/dist/server/terminalProxyRoutes.js +140 -0
  152. package/dist/server/terminalProxyRoutes.js.map +1 -0
  153. package/dist/server/terminals/terminalRoutes.js +153 -0
  154. package/dist/server/terminals/terminalRoutes.js.map +1 -0
  155. package/dist/server/terminals/terminalService.js +320 -0
  156. package/dist/server/terminals/terminalService.js.map +1 -0
  157. package/dist/server/terminals/terminalSize.js +17 -0
  158. package/dist/server/terminals/terminalSize.js.map +1 -0
  159. package/dist/server/types.js +2 -0
  160. package/dist/server/types.js.map +1 -0
  161. package/dist/server/utils.js +8 -0
  162. package/dist/server/utils.js.map +1 -0
  163. package/dist/server/webSocketBridge.js +32 -0
  164. package/dist/server/webSocketBridge.js.map +1 -0
  165. package/dist/server/workingDirectory.js +44 -0
  166. package/dist/server/workingDirectory.js.map +1 -0
  167. package/dist/server/workspaceExplorerRoutes.js +109 -0
  168. package/dist/server/workspaceExplorerRoutes.js.map +1 -0
  169. package/dist/server/workspaces/effectivePathAccess.js +27 -0
  170. package/dist/server/workspaces/effectivePathAccess.js.map +1 -0
  171. package/dist/server/workspaces/fileContentService.js +181 -0
  172. package/dist/server/workspaces/fileContentService.js.map +1 -0
  173. package/dist/server/workspaces/fileSuggestions.js +512 -0
  174. package/dist/server/workspaces/fileSuggestions.js.map +1 -0
  175. package/dist/server/workspaces/fileTreeService.js +27 -0
  176. package/dist/server/workspaces/fileTreeService.js.map +1 -0
  177. package/dist/server/workspaces/gitWorktreeDiscovery.js +34 -0
  178. package/dist/server/workspaces/gitWorktreeDiscovery.js.map +1 -0
  179. package/dist/server/workspaces/imagePreviewService.js +40 -0
  180. package/dist/server/workspaces/imagePreviewService.js.map +1 -0
  181. package/dist/server/workspaces/pathAccessPolicy.js +87 -0
  182. package/dist/server/workspaces/pathAccessPolicy.js.map +1 -0
  183. package/dist/server/workspaces/pathSafety.js +54 -0
  184. package/dist/server/workspaces/pathSafety.js.map +1 -0
  185. package/dist/server/workspaces/projectOmpWebConfig.js +56 -0
  186. package/dist/server/workspaces/projectOmpWebConfig.js.map +1 -0
  187. package/dist/server/workspaces/workspaceContext.js +8 -0
  188. package/dist/server/workspaces/workspaceContext.js.map +1 -0
  189. package/dist/server/workspaces/workspaceDeletionRoutes.js +111 -0
  190. package/dist/server/workspaces/workspaceDeletionRoutes.js.map +1 -0
  191. package/dist/server/workspaces/workspaceService.js +39 -0
  192. package/dist/server/workspaces/workspaceService.js.map +1 -0
  193. package/dist/sessiond/config.js +9 -0
  194. package/dist/sessiond/config.js.map +1 -0
  195. package/dist/sessiond/sessionDaemonClient.js +65 -0
  196. package/dist/sessiond/sessionDaemonClient.js.map +1 -0
  197. package/dist/shared/activity.js +26 -0
  198. package/dist/shared/activity.js.map +1 -0
  199. package/dist/shared/apiTypes.d.ts +688 -0
  200. package/dist/shared/apiTypes.js +11 -0
  201. package/dist/shared/apiTypes.js.map +1 -0
  202. package/dist/shared/capabilities.js +52 -0
  203. package/dist/shared/capabilities.js.map +1 -0
  204. package/dist/shared/federatedRoutes.js +79 -0
  205. package/dist/shared/federatedRoutes.js.map +1 -0
  206. package/dist/shared/machinePluginIds.js +41 -0
  207. package/dist/shared/machinePluginIds.js.map +1 -0
  208. package/dist/shared/ompWebStatusParsing.js +100 -0
  209. package/dist/shared/ompWebStatusParsing.js.map +1 -0
  210. package/dist/shared/pluginIds.js +5 -0
  211. package/dist/shared/pluginIds.js.map +1 -0
  212. package/dist/shared/promptAttachments.js +90 -0
  213. package/dist/shared/promptAttachments.js.map +1 -0
  214. package/dist/shared/thinkingLevels.d.ts +19 -0
  215. package/dist/shared/thinkingLevels.js +24 -0
  216. package/dist/shared/thinkingLevels.js.map +1 -0
  217. package/dist/shared/utils.js +4 -0
  218. package/dist/shared/utils.js.map +1 -0
  219. package/dist/shared/workspaceDeletion.js +12 -0
  220. package/dist/shared/workspaceDeletion.js.map +1 -0
  221. package/dist/shared/workspaceFiles.js +3 -0
  222. package/dist/shared/workspaceFiles.js.map +1 -0
  223. package/docs/assets/favicon.svg +11 -0
  224. package/docs/assets/omp-web-banner.png +0 -0
  225. package/docs/assets/omp-web-desktop.png +0 -0
  226. package/docs/assets/omp-web-mobile.png +0 -0
  227. package/docs/assets/omp-web-tablet.png +0 -0
  228. package/docs/config.md +208 -0
  229. package/docs/plugins.md +916 -0
  230. package/extensions/omp-web.ts +133 -0
  231. package/install.sh +5 -0
  232. package/package.json +141 -0
  233. package/plugin-api/unstable.d.ts +1 -0
  234. package/plugin-api.d.ts +1 -0
@@ -0,0 +1,52 @@
1
+ import { OMP_WEB_CAPABILITIES } from "./apiTypes.js";
2
+ export { OMP_WEB_CAPABILITIES };
3
+ export const KNOWN_OMP_WEB_CAPABILITIES = Object.values(OMP_WEB_CAPABILITIES);
4
+ const knownOmpWebCapabilities = new Set(KNOWN_OMP_WEB_CAPABILITIES);
5
+ export const WEB_RUNTIME_CAPABILITIES = [
6
+ OMP_WEB_CAPABILITIES.sessionsDeleteArchived,
7
+ OMP_WEB_CAPABILITIES.sessionsBulkMutations,
8
+ OMP_WEB_CAPABILITIES.sessionsCleanup,
9
+ OMP_WEB_CAPABILITIES.sessionsReload,
10
+ OMP_WEB_CAPABILITIES.promptAttachments,
11
+ OMP_WEB_CAPABILITIES.workspaceFileSuggestions,
12
+ OMP_WEB_CAPABILITIES.piPackagesManage,
13
+ OMP_WEB_CAPABILITIES.selectedMachineSettings,
14
+ ];
15
+ export const SESSIOND_RUNTIME_CAPABILITIES = [
16
+ OMP_WEB_CAPABILITIES.sessionsDeleteArchived,
17
+ OMP_WEB_CAPABILITIES.sessionsBulkMutations,
18
+ OMP_WEB_CAPABILITIES.sessionsCleanup,
19
+ OMP_WEB_CAPABILITIES.sessionsReload,
20
+ OMP_WEB_CAPABILITIES.promptAttachments,
21
+ ];
22
+ const EFFECTIVE_CAPABILITY_REQUIREMENTS = {
23
+ [OMP_WEB_CAPABILITIES.sessionsDeleteArchived]: ["web", "sessiond"],
24
+ [OMP_WEB_CAPABILITIES.sessionsBulkMutations]: ["web", "sessiond"],
25
+ [OMP_WEB_CAPABILITIES.sessionsCleanup]: ["web", "sessiond"],
26
+ [OMP_WEB_CAPABILITIES.sessionsReload]: ["web", "sessiond"],
27
+ [OMP_WEB_CAPABILITIES.promptAttachments]: ["web", "sessiond"],
28
+ [OMP_WEB_CAPABILITIES.workspaceFileSuggestions]: ["web"],
29
+ [OMP_WEB_CAPABILITIES.piPackagesManage]: ["web"],
30
+ [OMP_WEB_CAPABILITIES.selectedMachineSettings]: ["web"],
31
+ };
32
+ export function isOmpWebCapability(value) {
33
+ return typeof value === "string" && knownOmpWebCapabilities.has(value);
34
+ }
35
+ export function supportsOmpWebCapability(source, capability) {
36
+ return source?.capabilities?.includes(capability) === true;
37
+ }
38
+ export function parseKnownOmpWebCapabilities(value) {
39
+ if (!Array.isArray(value) || !value.every((capability) => typeof capability === "string"))
40
+ return undefined;
41
+ return value.filter(isOmpWebCapability);
42
+ }
43
+ export function effectiveOmpWebCapabilities(components) {
44
+ return KNOWN_OMP_WEB_CAPABILITIES.filter((capability) => {
45
+ const requiredComponents = EFFECTIVE_CAPABILITY_REQUIREMENTS[capability];
46
+ return requiredComponents.every((component) => {
47
+ const runtime = components[component];
48
+ return runtime?.available === true && supportsOmpWebCapability(runtime, capability);
49
+ });
50
+ });
51
+ }
52
+ //# sourceMappingURL=capabilities.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capabilities.js","sourceRoot":"","sources":["../../src/shared/capabilities.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAmF,MAAM,eAAe,CAAC;AAEtI,OAAO,EAAE,oBAAoB,EAAE,CAAC;AAGhC,MAAM,CAAC,MAAM,0BAA0B,GAAG,MAAM,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;AAC9E,MAAM,uBAAuB,GAAwB,IAAI,GAAG,CAAC,0BAA0B,CAAC,CAAC;AAEzF,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,oBAAoB,CAAC,sBAAsB;IAC3C,oBAAoB,CAAC,qBAAqB;IAC1C,oBAAoB,CAAC,eAAe;IACpC,oBAAoB,CAAC,cAAc;IACnC,oBAAoB,CAAC,iBAAiB;IACtC,oBAAoB,CAAC,wBAAwB;IAC7C,oBAAoB,CAAC,gBAAgB;IACrC,oBAAoB,CAAC,uBAAuB;CACE,CAAC;AAEjD,MAAM,CAAC,MAAM,6BAA6B,GAAG;IAC3C,oBAAoB,CAAC,sBAAsB;IAC3C,oBAAoB,CAAC,qBAAqB;IAC1C,oBAAoB,CAAC,eAAe;IACpC,oBAAoB,CAAC,cAAc;IACnC,oBAAoB,CAAC,iBAAiB;CACQ,CAAC;AAEjD,MAAM,iCAAiC,GAAG;IACxC,CAAC,oBAAoB,CAAC,sBAAsB,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC;IAClE,CAAC,oBAAoB,CAAC,qBAAqB,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC;IACjE,CAAC,oBAAoB,CAAC,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC;IAC3D,CAAC,oBAAoB,CAAC,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC;IAC1D,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC;IAC7D,CAAC,oBAAoB,CAAC,wBAAwB,CAAC,EAAE,CAAC,KAAK,CAAC;IACxD,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,EAAE,CAAC,KAAK,CAAC;IAChD,CAAC,oBAAoB,CAAC,uBAAuB,CAAC,EAAE,CAAC,KAAK,CAAC;CACuB,CAAC;AAEjF,MAAM,UAAU,kBAAkB,CAAC,KAAc;IAC/C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,uBAAuB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACzE,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,MAAkE,EAAE,UAA4B;IACvI,OAAO,MAAM,EAAE,YAAY,EAAE,QAAQ,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC;AAC7D,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAC,KAAc;IACzD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,OAAO,UAAU,KAAK,QAAQ,CAAC;QAAE,OAAO,SAAS,CAAC;IAC5G,OAAO,KAAK,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,UAA+G;IACzJ,OAAO,0BAA0B,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,EAAE;QACtD,MAAM,kBAAkB,GAAG,iCAAiC,CAAC,UAAU,CAAC,CAAC;QACzE,OAAO,kBAAkB,CAAC,KAAK,CAAC,CAAC,SAAS,EAAE,EAAE;YAC5C,MAAM,OAAO,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;YACtC,OAAO,OAAO,EAAE,SAAS,KAAK,IAAI,IAAI,wBAAwB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QACtF,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,79 @@
1
+ export const PI_PACKAGE_MUTATION_PROXY_TIMEOUT_MS = 5 * 60_000;
2
+ export const FEDERATED_HTTP_ROUTES = [
3
+ { method: "GET", path: "/omp-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 },
11
+ { method: "GET", path: "/projects" },
12
+ { method: "POST", path: "/projects" },
13
+ { method: "DELETE", path: "/projects/:projectId" },
14
+ { method: "GET", path: "/project-directories" },
15
+ { method: "GET", path: "/projects/:projectId/workspaces" },
16
+ { method: "DELETE", path: "/projects/:projectId/workspaces/:workspaceId" },
17
+ { method: "GET", path: "/projects/:projectId/workspaces/:workspaceId/tree" },
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" },
22
+ { method: "GET", path: "/projects/:projectId/workspaces/:workspaceId/file/preview" },
23
+ { method: "GET", path: "/projects/:projectId/workspaces/:workspaceId/files" },
24
+ { method: "GET", path: "/projects/:projectId/workspaces/:workspaceId/git/status" },
25
+ { method: "GET", path: "/projects/:projectId/workspaces/:workspaceId/git/diff" },
26
+ { method: "GET", path: "/projects/:projectId/workspaces/:workspaceId/terminals" },
27
+ { method: "POST", path: "/projects/:projectId/workspaces/:workspaceId/terminals" },
28
+ { method: "DELETE", path: "/projects/:projectId/workspaces/:workspaceId/terminals" },
29
+ { method: "POST", path: "/projects/:projectId/workspaces/:workspaceId/terminals/:terminalId/continue" },
30
+ { method: "DELETE", path: "/projects/:projectId/workspaces/:workspaceId/terminals/:terminalId" },
31
+ { method: "POST", path: "/projects/:projectId/workspaces/:workspaceId/terminal-command-runs" },
32
+ { method: "GET", path: "/terminal-command-runs" },
33
+ { method: "GET", path: "/terminal-command-runs/:runId" },
34
+ { method: "POST", path: "/terminal-command-runs/:runId/cancel" },
35
+ { method: "GET", path: "/files" },
36
+ { method: "GET", path: "/activity" },
37
+ { method: "GET", path: "/sessions" },
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" },
43
+ { method: "GET", path: "/sessions/:sessionId/messages" },
44
+ { method: "GET", path: "/sessions/:sessionId/status" },
45
+ { method: "GET", path: "/sessions/:sessionId/models" },
46
+ { method: "POST", path: "/sessions/:sessionId/model" },
47
+ { method: "POST", path: "/sessions/:sessionId/model/cycle" },
48
+ { method: "GET", path: "/sessions/:sessionId/thinking-levels" },
49
+ { method: "POST", path: "/sessions/:sessionId/thinking-level" },
50
+ { method: "POST", path: "/sessions/:sessionId/thinking-level/cycle" },
51
+ { method: "GET", path: "/sessions/:sessionId/commands" },
52
+ { method: "POST", path: "/sessions/:sessionId/prompt" },
53
+ { method: "POST", path: "/sessions/:sessionId/attachments" },
54
+ { method: "POST", path: "/sessions/:sessionId/shell" },
55
+ { method: "POST", path: "/sessions/:sessionId/commands/run" },
56
+ { method: "POST", path: "/sessions/:sessionId/commands/respond" },
57
+ { method: "POST", path: "/sessions/:sessionId/abort" },
58
+ { method: "POST", path: "/sessions/:sessionId/stop" },
59
+ { method: "POST", path: "/sessions/:sessionId/archive" },
60
+ { method: "POST", path: "/sessions/:sessionId/archive-tree" },
61
+ { method: "POST", path: "/sessions/:sessionId/restore" },
62
+ { method: "DELETE", path: "/sessions/:sessionId" },
63
+ { method: "POST", path: "/sessions/:sessionId/reload" },
64
+ { method: "POST", path: "/sessions/:sessionId/detach-parent" },
65
+ { method: "GET", path: "/auth/providers" },
66
+ { method: "POST", path: "/auth/api-key" },
67
+ { method: "POST", path: "/auth/logout" },
68
+ { method: "POST", path: "/auth/oauth" },
69
+ { method: "GET", path: "/auth/oauth/:flowId" },
70
+ { method: "POST", path: "/auth/oauth/:flowId/respond" },
71
+ { method: "POST", path: "/auth/oauth/:flowId/cancel" },
72
+ ];
73
+ export const FEDERATED_WEBSOCKET_ROUTES = [
74
+ "/events",
75
+ "/sessions/events",
76
+ "/sessions/:sessionId/events",
77
+ "/projects/:projectId/workspaces/:workspaceId/terminals/:terminalId/socket",
78
+ ];
79
+ //# 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,41 @@
1
+ import { isOmpWebPluginId } 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 (!isOmpWebPluginId(pluginId))
7
+ throw new Error(`Invalid PI WEB 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) || !isOmpWebPluginId(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,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAElD,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,gBAAgB,CAAC,QAAQ,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,QAAQ,EAAE,CAAC,CAAC;IAC1F,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,gBAAgB,CAAC,cAAc,CAAC;QAAE,OAAO,SAAS,CAAC;IAE1F,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,100 @@
1
+ import { parseKnownOmpWebCapabilities } from "./capabilities.js";
2
+ import { isRecord } from "./utils.js";
3
+ export function parseOmpWebVersionResponse(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 = parseOmpWebComponentStatus(components["web"]);
12
+ const sessiond = parseOmpWebComponentStatus(components["sessiond"]);
13
+ if (web === undefined || sessiond === undefined)
14
+ return undefined;
15
+ return { packageName, generatedAt, components: { web, sessiond } };
16
+ }
17
+ export function parseOmpWebRuntimeResponse(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 = parseKnownOmpWebCapabilities(value["capabilities"]);
24
+ if (typeof packageName !== "string" || packageName === "" || typeof generatedAt !== "string" || generatedAt === "" || !isRecord(components) || capabilities === undefined)
25
+ return undefined;
26
+ const web = parseOmpWebRuntimeComponent(components["web"]);
27
+ const sessiond = parseOmpWebRuntimeComponent(components["sessiond"]);
28
+ if (web === undefined || sessiond === undefined)
29
+ return undefined;
30
+ return { packageName, generatedAt, components: { web, sessiond }, capabilities };
31
+ }
32
+ export function parseOmpWebRuntimeComponent(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 = parseKnownOmpWebCapabilities(value["capabilities"]);
40
+ const error = value["error"];
41
+ if (component !== "web" && component !== "sessiond")
42
+ return undefined;
43
+ if (typeof label !== "string" || label === "" || typeof available !== "boolean" || capabilities === undefined)
44
+ return undefined;
45
+ return {
46
+ component,
47
+ label,
48
+ ...(typeof runtimeVersion === "string" ? { runtimeVersion } : {}),
49
+ available,
50
+ capabilities,
51
+ ...(typeof error === "string" ? { error } : {}),
52
+ };
53
+ }
54
+ export function parseOmpWebComponentStatus(value) {
55
+ if (!isRecord(value))
56
+ return undefined;
57
+ const component = value["component"];
58
+ const label = value["label"];
59
+ const runtimeVersion = value["runtimeVersion"];
60
+ const installedVersion = value["installedVersion"];
61
+ const stale = value["stale"];
62
+ const available = value["available"];
63
+ const error = value["error"];
64
+ const installation = parseOmpWebInstallationInfo(value["installation"]);
65
+ if (component !== "web" && component !== "sessiond")
66
+ return undefined;
67
+ if (typeof label !== "string" || label === "" || typeof stale !== "boolean" || typeof available !== "boolean")
68
+ return undefined;
69
+ return {
70
+ component,
71
+ label,
72
+ ...(typeof runtimeVersion === "string" ? { runtimeVersion } : {}),
73
+ ...(typeof installedVersion === "string" ? { installedVersion } : {}),
74
+ stale,
75
+ available,
76
+ ...(installation === undefined ? {} : { installation }),
77
+ ...(typeof error === "string" ? { error } : {}),
78
+ };
79
+ }
80
+ export function parseOmpWebInstallationInfo(value) {
81
+ if (!isRecord(value))
82
+ return undefined;
83
+ const kind = value["kind"];
84
+ const path = value["path"];
85
+ const source = value["source"];
86
+ const scope = value["scope"];
87
+ const npmRoot = value["npmRoot"];
88
+ const dockerMode = value["dockerMode"];
89
+ if (kind !== "pi-package" && kind !== "npm-global" && kind !== "local" && kind !== "docker" && kind !== "unknown")
90
+ return undefined;
91
+ return {
92
+ kind,
93
+ ...(typeof path === "string" ? { path } : {}),
94
+ ...(typeof source === "string" ? { source } : {}),
95
+ ...(scope === "user" || scope === "project" ? { scope } : {}),
96
+ ...(typeof npmRoot === "string" ? { npmRoot } : {}),
97
+ ...(dockerMode === "runtime" || dockerMode === "dev" ? { dockerMode } : {}),
98
+ };
99
+ }
100
+ //# sourceMappingURL=ompWebStatusParsing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ompWebStatusParsing.js","sourceRoot":"","sources":["../../src/shared/ompWebStatusParsing.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export const ompWebPluginIdPattern = /^[a-z][a-z0-9.-]*$/u;
2
+ export function isOmpWebPluginId(value) {
3
+ return ompWebPluginIdPattern.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,qBAAqB,GAAG,qBAAqB,CAAC;AAE3D,MAAM,UAAU,gBAAgB,CAAC,KAAa;IAC5C,OAAO,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC3C,CAAC"}
@@ -0,0 +1,90 @@
1
+ import { isRecord } from "./utils.js";
2
+ /**
3
+ * Image mime types supported by the pi coding agent. Mirrors
4
+ * `detectSupportedImageMimeType` in `@earendil-works/pi-coding-agent`.
5
+ */
6
+ export const SUPPORTED_IMAGE_MIME_TYPES = ["image/jpeg", "image/png", "image/gif", "image/webp"];
7
+ const supportedImageMimeTypes = new Set(SUPPORTED_IMAGE_MIME_TYPES);
8
+ /**
9
+ * Maximum base64 payload per image. Matches pi's `DEFAULT_MAX_BYTES`
10
+ * (4.5MB, headroom below Anthropic's 5MB inline image limit). pi resizes
11
+ * images down to this size; we validate against it as the hard upper bound.
12
+ */
13
+ export const MAX_INLINE_IMAGE_BASE64_BYTES = Math.round(4.5 * 1024 * 1024);
14
+ /** Maximum number of attachments allowed on a single prompt. */
15
+ export const MAX_PROMPT_ATTACHMENTS = 16;
16
+ export function isSupportedImageMimeType(value) {
17
+ return typeof value === "string" && supportedImageMimeTypes.has(value);
18
+ }
19
+ export function extensionForImageMimeType(mimeType) {
20
+ switch (mimeType) {
21
+ case "image/jpeg": return "jpg";
22
+ case "image/png": return "png";
23
+ case "image/gif": return "gif";
24
+ case "image/webp": return "webp";
25
+ default: return "bin";
26
+ }
27
+ }
28
+ const base64Pattern = /^[A-Za-z0-9+/]*={0,2}$/;
29
+ export function base64ByteLength(data) {
30
+ const padding = data.endsWith("==") ? 2 : data.endsWith("=") ? 1 : 0;
31
+ return Math.max(0, Math.floor((data.length * 3) / 4) - padding);
32
+ }
33
+ export function parsePromptAttachments(value, options = {}) {
34
+ if (value === undefined)
35
+ return [];
36
+ if (!Array.isArray(value))
37
+ throw new Error("attachments must be an array");
38
+ const maxAttachments = options.maxAttachments ?? MAX_PROMPT_ATTACHMENTS;
39
+ if (value.length > maxAttachments)
40
+ throw new Error(`too many attachments (max ${String(maxAttachments)})`);
41
+ return value.map((entry, index) => parsePromptAttachment(entry, index, options));
42
+ }
43
+ function parsePromptAttachment(value, index, options) {
44
+ if (!isRecord(value))
45
+ throw new Error(`attachment ${String(index)} must be an object`);
46
+ const record = value;
47
+ const kind = record["kind"];
48
+ if (kind === "image")
49
+ return parseImageAttachment(record, index, options);
50
+ if (kind === "file" && options.allowFileAttachments === true)
51
+ return parseFileAttachment(record, index);
52
+ throw new Error(`attachment ${String(index)} has unsupported kind`);
53
+ }
54
+ function parseImageAttachment(record, index, options) {
55
+ const mimeType = record["mimeType"];
56
+ if (!isSupportedImageMimeType(mimeType))
57
+ throw new Error(`attachment ${String(index)} has unsupported image type`);
58
+ const data = requireBase64Data(record["data"], index, { allowEmpty: false });
59
+ if (options.enforceInlineSizeLimit === true && base64ByteLength(data) > MAX_INLINE_IMAGE_BASE64_BYTES) {
60
+ throw new Error(`attachment ${String(index)} exceeds the inline image size limit`);
61
+ }
62
+ return {
63
+ kind: "image",
64
+ mimeType,
65
+ data,
66
+ ...attachmentName(record),
67
+ };
68
+ }
69
+ function parseFileAttachment(record, index) {
70
+ const mimeType = record["mimeType"];
71
+ if (typeof mimeType !== "string" || mimeType.trim() === "")
72
+ throw new Error(`attachment ${String(index)} has invalid file type`);
73
+ return {
74
+ kind: "file",
75
+ mimeType: mimeType.trim(),
76
+ data: requireBase64Data(record["data"], index, { allowEmpty: true }),
77
+ ...attachmentName(record),
78
+ };
79
+ }
80
+ function requireBase64Data(value, index, options) {
81
+ if (typeof value !== "string" || (!options.allowEmpty && value === "") || !base64Pattern.test(value)) {
82
+ throw new Error(`attachment ${String(index)} has invalid base64 data`);
83
+ }
84
+ return value;
85
+ }
86
+ function attachmentName(record) {
87
+ const name = record["name"];
88
+ return typeof name === "string" && name !== "" ? { name } : {};
89
+ }
90
+ //# sourceMappingURL=promptAttachments.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"promptAttachments.js","sourceRoot":"","sources":["../../src/shared/promptAttachments.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC;;;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;IACtD,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,uBAAuB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACxE,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,QAAgB;IACzD,QAAQ,QAAQ,EAAE,CAAC;QAClB,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;IACvB,CAAC;AACF,CAAC;AAED,MAAM,aAAa,GAAG,wBAAwB,CAAC;AAE/C,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC5C,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;AACjE,CAAC;AAmBD,MAAM,UAAU,sBAAsB,CAAC,KAAc,EAAE,UAAuC,EAAE;IAC/F,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC;IACnC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAC3E,MAAM,cAAc,GAAG,OAAO,CAAC,cAAc,IAAI,sBAAsB,CAAC;IACxE,IAAI,KAAK,CAAC,MAAM,GAAG,cAAc;QAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;IAC3G,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,qBAAqB,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;AAClF,CAAC;AAGD,SAAS,qBAAqB,CAAC,KAAc,EAAE,KAAa,EAAE,OAAoC;IACjG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,cAAc,MAAM,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;IACvF,MAAM,MAAM,GAAG,KAAK,CAAC;IACrB,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;IAC5B,IAAI,IAAI,KAAK,OAAO;QAAE,OAAO,oBAAoB,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IAC1E,IAAI,IAAI,KAAK,MAAM,IAAI,OAAO,CAAC,oBAAoB,KAAK,IAAI;QAAE,OAAO,mBAAmB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACxG,MAAM,IAAI,KAAK,CAAC,cAAc,MAAM,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;AACrE,CAAC;AAED,SAAS,oBAAoB,CAAC,MAA+B,EAAE,KAAa,EAAE,OAAoC;IACjH,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;IACpC,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,cAAc,MAAM,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;IACnH,MAAM,IAAI,GAAG,iBAAiB,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;IAC7E,IAAI,OAAO,CAAC,sBAAsB,KAAK,IAAI,IAAI,gBAAgB,CAAC,IAAI,CAAC,GAAG,6BAA6B,EAAE,CAAC;QACvG,MAAM,IAAI,KAAK,CAAC,cAAc,MAAM,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAC;IACpF,CAAC;IACD,OAAO;QACN,IAAI,EAAE,OAAO;QACb,QAAQ;QACR,IAAI;QACJ,GAAG,cAAc,CAAC,MAAM,CAAC;KACzB,CAAC;AACH,CAAC;AAED,SAAS,mBAAmB,CAAC,MAA+B,EAAE,KAAa;IAC1E,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;IACpC,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,cAAc,MAAM,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;IACjI,OAAO;QACN,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,QAAQ,CAAC,IAAI,EAAE;QACzB,IAAI,EAAE,iBAAiB,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;QACpE,GAAG,cAAc,CAAC,MAAM,CAAC;KACzB,CAAC;AACH,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAc,EAAE,KAAa,EAAE,OAAgC;IACzF,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,CAAC,OAAO,CAAC,UAAU,IAAI,KAAK,KAAK,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACtG,MAAM,IAAI,KAAK,CAAC,cAAc,MAAM,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;IACxE,CAAC;IACD,OAAO,KAAK,CAAC;AACd,CAAC;AAED,SAAS,cAAc,CAAC,MAA+B;IACtD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;IAC5B,OAAO,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AAChE,CAAC"}
@@ -0,0 +1,19 @@
1
+ export type ThinkingLevel = "off" | "inherit" | "minimal" | "low" | "medium" | "high" | "xhigh";
2
+ export declare const KNOWN_THINKING_LEVELS: readonly ["off", "minimal", "low", "medium", "high", "xhigh"];
3
+ export declare function isKnownThinkingLevel(value: string): value is ThinkingLevel;
4
+ export declare function thinkingLevelLabel(level: string | undefined): string;
5
+ export interface ThinkingGauge {
6
+ /** Number of bars to render (the non-"off" levels). */
7
+ total: number;
8
+ /** Number of filled bars for the current level. */
9
+ filled: number;
10
+ }
11
+ /**
12
+ * Describe a thinking-level gauge from the available set rather than a hardcoded
13
+ * table, so it stays correct even if pi changes the available levels at runtime.
14
+ *
15
+ * Convention: the first available level is treated as "no thinking". The gauge
16
+ * therefore renders one bar per remaining level, and fills up to the current
17
+ * level's rank. An unknown current level fills 0 bars instead of throwing.
18
+ */
19
+ export declare function thinkingGauge(level: string | undefined, available: readonly string[]): ThinkingGauge;
@@ -0,0 +1,24 @@
1
+ export const KNOWN_THINKING_LEVELS = ["off", "minimal", "low", "medium", "high", "xhigh"];
2
+ export function isKnownThinkingLevel(value) {
3
+ return KNOWN_THINKING_LEVELS.some((level) => level === value);
4
+ }
5
+ export function thinkingLevelLabel(level) {
6
+ return level === undefined || level === "" ? "off" : level;
7
+ }
8
+ /**
9
+ * Describe a thinking-level gauge from the available set rather than a hardcoded
10
+ * table, so it stays correct even if pi changes the available levels at runtime.
11
+ *
12
+ * Convention: the first available level is treated as "no thinking". The gauge
13
+ * therefore renders one bar per remaining level, and fills up to the current
14
+ * level's rank. An unknown current level fills 0 bars instead of throwing.
15
+ */
16
+ export function thinkingGauge(level, available) {
17
+ const pool = available.length >= 2 ? available : KNOWN_THINKING_LEVELS;
18
+ const total = pool.length - 1;
19
+ const normalized = thinkingLevelLabel(level);
20
+ const index = pool.indexOf(normalized);
21
+ const filled = index <= 0 ? 0 : Math.min(index, total);
22
+ return { total, filled };
23
+ }
24
+ //# sourceMappingURL=thinkingLevels.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"thinkingLevels.js","sourceRoot":"","sources":["../../src/shared/thinkingLevels.ts"],"names":[],"mappings":"AAMA,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAA6C,CAAC;AAEtI,MAAM,UAAU,oBAAoB,CAAC,KAAa;IACjD,OAAO,qBAAqB,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC;AAC/D,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,KAAyB;IAC3D,OAAO,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;AAC5D,CAAC;AASD;;;;;;;GAOG;AACH,MAAM,UAAU,aAAa,CAAC,KAAyB,EAAE,SAA4B;IACpF,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;AAC1B,CAAC"}
@@ -0,0 +1,4 @@
1
+ export function isRecord(value) {
2
+ return typeof value === "object" && value !== null && !Array.isArray(value);
3
+ }
4
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/shared/utils.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,QAAQ,CAAC,KAAc;IACrC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,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,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
Binary file