@chainingintention/pi-web-cn 1.202607.5 → 1.202607.7

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 (128) hide show
  1. package/README.md +3 -0
  2. package/dist/cli.js +283 -315
  3. package/dist/cli.js.map +1 -1
  4. package/dist/client/assets/CodeViewer-DxWBEGHy.js +4 -0
  5. package/dist/client/assets/TerminalPanel-CLBbwrSg.js +184 -0
  6. package/dist/client/assets/UnifiedDiffViewer-CvVtrOUV.js +39 -0
  7. package/dist/client/assets/index-CEswQiQV.js +3149 -0
  8. package/dist/client/assets/vendor-editor-core-vUi74DnD.js +12 -0
  9. package/dist/client/assets/vendor-editor-languages-DoaXUodB.js +46 -0
  10. package/dist/client/assets/vendor-editor-legacy-CYBnW6ZU.js +1 -0
  11. package/dist/client/assets/vendor-terminal-BrP-ENHg.css +1 -0
  12. package/dist/client/assets/vendor-terminal-D8k4UKM2.js +35 -0
  13. package/dist/client/index.html +6 -6
  14. package/dist/client/manifest.webmanifest +4 -4
  15. package/dist/config.js +221 -9
  16. package/dist/config.js.map +1 -1
  17. package/dist/nativeServices/serviceDoctor.js +480 -0
  18. package/dist/nativeServices/serviceDoctor.js.map +1 -0
  19. package/dist/nativeServices/serviceInstall.js +35 -0
  20. package/dist/nativeServices/serviceInstall.js.map +1 -0
  21. package/dist/nativeServices/servicePlan.js +357 -0
  22. package/dist/nativeServices/servicePlan.js.map +1 -0
  23. package/dist/nativeServices/serviceProbe.js +445 -0
  24. package/dist/nativeServices/serviceProbe.js.map +1 -0
  25. package/dist/nativeServices/serviceRendering.js +122 -0
  26. package/dist/nativeServices/serviceRendering.js.map +1 -0
  27. package/dist/pi-web-plugins/updates/pi-web-plugin.js +11 -0
  28. package/dist/plugin-api.d.ts +2 -0
  29. package/dist/server/activeAgentProfileProvider.js +25 -0
  30. package/dist/server/activeAgentProfileProvider.js.map +1 -0
  31. package/dist/server/app.js +63 -16
  32. package/dist/server/app.js.map +1 -1
  33. package/dist/server/browserMessageProjection.js +56 -0
  34. package/dist/server/browserMessageProjection.js.map +1 -0
  35. package/dist/server/configRoutes.js +152 -10
  36. package/dist/server/configRoutes.js.map +1 -1
  37. package/dist/server/machines/machineClient.js +19 -9
  38. package/dist/server/machines/machineClient.js.map +1 -1
  39. package/dist/server/machines/machinePluginProxyRoutes.js +7 -4
  40. package/dist/server/machines/machinePluginProxyRoutes.js.map +1 -1
  41. package/dist/server/machines/machineProxyRoutes.js +16 -4
  42. package/dist/server/machines/machineProxyRoutes.js.map +1 -1
  43. package/dist/server/machines/machineRoutes.js +1 -1
  44. package/dist/server/machines/machineRoutes.js.map +1 -1
  45. package/dist/server/machines/machineService.js +2 -2
  46. package/dist/server/machines/machineService.js.map +1 -1
  47. package/dist/server/managementEmbed.js +28 -11
  48. package/dist/server/managementEmbed.js.map +1 -1
  49. package/dist/server/piPackageRoutes.js +7 -3
  50. package/dist/server/piPackageRoutes.js.map +1 -1
  51. package/dist/server/piPackageService.js +34 -2
  52. package/dist/server/piPackageService.js.map +1 -1
  53. package/dist/server/piWebPluginService.js +48 -12
  54. package/dist/server/piWebPluginService.js.map +1 -1
  55. package/dist/server/piWebReleaseLookupCache.js +37 -0
  56. package/dist/server/piWebReleaseLookupCache.js.map +1 -0
  57. package/dist/server/piWebStatus.js +48 -49
  58. package/dist/server/piWebStatus.js.map +1 -1
  59. package/dist/server/piWebStatusCache.js +19 -6
  60. package/dist/server/piWebStatusCache.js.map +1 -1
  61. package/dist/server/realtime/sessionEventHub.js +2 -1
  62. package/dist/server/realtime/sessionEventHub.js.map +1 -1
  63. package/dist/server/realtime/sessionEventScope.js +0 -3
  64. package/dist/server/realtime/sessionEventScope.js.map +1 -1
  65. package/dist/server/sessiond/sessionDaemonStartup.js +49 -0
  66. package/dist/server/sessiond/sessionDaemonStartup.js.map +1 -0
  67. package/dist/server/sessiond.js +113 -70
  68. package/dist/server/sessiond.js.map +1 -1
  69. package/dist/server/sessions/authProviderOptions.js +23 -22
  70. package/dist/server/sessions/authProviderOptions.js.map +1 -1
  71. package/dist/server/sessions/authRoutes.js +14 -12
  72. package/dist/server/sessions/authRoutes.js.map +1 -1
  73. package/dist/server/sessions/authService.js +28 -22
  74. package/dist/server/sessions/authService.js.map +1 -1
  75. package/dist/server/sessions/oauthLoginFlowService.js +17 -19
  76. package/dist/server/sessions/oauthLoginFlowService.js.map +1 -1
  77. package/dist/server/sessions/piSessionManagerGateway.js +22 -21
  78. package/dist/server/sessions/piSessionManagerGateway.js.map +1 -1
  79. package/dist/server/sessions/piSessionService.js +261 -111
  80. package/dist/server/sessions/piSessionService.js.map +1 -1
  81. package/dist/server/sessions/projectAuthService.js +135 -0
  82. package/dist/server/sessions/projectAuthService.js.map +1 -0
  83. package/dist/server/sessions/projectSettingsScope.js +263 -0
  84. package/dist/server/sessions/projectSettingsScope.js.map +1 -0
  85. package/dist/server/sessions/sessionArchiveMigration.js +590 -0
  86. package/dist/server/sessions/sessionArchiveMigration.js.map +1 -0
  87. package/dist/server/sessions/sessionArchiveStore.js +7 -4
  88. package/dist/server/sessions/sessionArchiveStore.js.map +1 -1
  89. package/dist/server/sessions/sessionRoutes.js +15 -4
  90. package/dist/server/sessions/sessionRoutes.js.map +1 -1
  91. package/dist/server/sessions/sessionService.js +2 -0
  92. package/dist/server/sessions/sessionService.js.map +1 -0
  93. package/dist/server/sessions/spawnSubsessionTool.js +71 -31
  94. package/dist/server/sessions/spawnSubsessionTool.js.map +1 -1
  95. package/dist/server/terminals/terminalService.js +2 -2
  96. package/dist/server/terminals/terminalService.js.map +1 -1
  97. package/dist/sessiond/activeAgentProfile.js +31 -0
  98. package/dist/sessiond/activeAgentProfile.js.map +1 -0
  99. package/dist/sessiond/sessionDaemonClient.js +38 -0
  100. package/dist/sessiond/sessionDaemonClient.js.map +1 -1
  101. package/dist/shared/activeAgentProfile.js +76 -0
  102. package/dist/shared/activeAgentProfile.js.map +1 -0
  103. package/dist/shared/apiTypes.d.ts +26 -0
  104. package/dist/shared/apiTypes.js +2 -0
  105. package/dist/shared/apiTypes.js.map +1 -1
  106. package/dist/shared/capabilities.js +5 -0
  107. package/dist/shared/capabilities.js.map +1 -1
  108. package/dist/shared/federatedRoutes.js +1 -0
  109. package/dist/shared/federatedRoutes.js.map +1 -1
  110. package/dist/shared/piWebConfigParsing.js +0 -5
  111. package/dist/shared/piWebConfigParsing.js.map +1 -1
  112. package/dist/shared/piWebStatusParsing.js +6 -0
  113. package/dist/shared/piWebStatusParsing.js.map +1 -1
  114. package/dist/shared/thinkingLevels.d.ts +1 -1
  115. package/dist/shared/thinkingLevels.js +1 -1
  116. package/dist/shared/thinkingLevels.js.map +1 -1
  117. package/docs/config.md +63 -9
  118. package/docs/plugins.md +18 -5
  119. package/package.json +35 -31
  120. package/dist/client/assets/CodeViewer-CfZodNYb.js +0 -4
  121. package/dist/client/assets/TerminalPanel-eua763mA.js +0 -126
  122. package/dist/client/assets/UnifiedDiffViewer-C9-QeGMj.js +0 -34
  123. package/dist/client/assets/index-BiFWXoRZ.js +0 -3084
  124. package/dist/client/assets/vendor-editor-core-C7aWiQy0.js +0 -12
  125. package/dist/client/assets/vendor-editor-languages-EW34FfVy.js +0 -26
  126. package/dist/client/assets/vendor-editor-legacy-B4QLsWF8.js +0 -1
  127. package/dist/client/assets/vendor-terminal-DDGTF8rc.css +0 -1
  128. package/dist/client/assets/vendor-terminal-DjQ08hXu.js +0 -16
@@ -0,0 +1,25 @@
1
+ import { getSessionDaemonActiveAgentProfile, } from "../sessiond/sessionDaemonClient.js";
2
+ /** Reads the daemon-owned profile on every call so a new sessiond epoch is observed. */
3
+ export class SessionDaemonActiveAgentProfileProvider {
4
+ constructor(daemon) {
5
+ this.daemon = daemon;
6
+ }
7
+ getActiveAgentProfile() {
8
+ return getSessionDaemonActiveAgentProfile(this.daemon);
9
+ }
10
+ }
11
+ export class ActiveAgentProfileAccessError extends Error {
12
+ constructor(result) {
13
+ const label = result.status === "unavailable" ? "unavailable" : "invalid";
14
+ super(`Active agent profile is ${label}: ${result.error}`);
15
+ this.name = "ActiveAgentProfileAccessError";
16
+ this.profileStatus = result.status;
17
+ }
18
+ }
19
+ export async function requireActiveAgentProfile(provider) {
20
+ const result = await provider.getActiveAgentProfile();
21
+ if (result.status !== "available")
22
+ throw new ActiveAgentProfileAccessError(result);
23
+ return result.profile;
24
+ }
25
+ //# sourceMappingURL=activeAgentProfileProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"activeAgentProfileProvider.js","sourceRoot":"","sources":["../../src/server/activeAgentProfileProvider.ts"],"names":[],"mappings":"AACA,OAAO,EACL,kCAAkC,GAGnC,MAAM,oCAAoC,CAAC;AAM5C,wFAAwF;AACxF,MAAM,OAAO,uCAAuC;IAClD,YAA6B,MAAkC;QAAlC,WAAM,GAAN,MAAM,CAA4B;IAAG,CAAC;IAEnE,qBAAqB;QACnB,OAAO,kCAAkC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACzD,CAAC;CACF;AAED,MAAM,OAAO,6BAA8B,SAAQ,KAAK;IAGtD,YAAY,MAAyE;QACnF,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,KAAK,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC;QAC1E,KAAK,CAAC,2BAA2B,KAAK,KAAK,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;QAC3D,IAAI,CAAC,IAAI,GAAG,+BAA+B,CAAC;QAC5C,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC;IACrC,CAAC;CACF;AAED,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAAC,QAAoC;IAClF,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,qBAAqB,EAAE,CAAC;IACtD,IAAI,MAAM,CAAC,MAAM,KAAK,WAAW;QAAE,MAAM,IAAI,6BAA6B,CAAC,MAAM,CAAC,CAAC;IACnF,OAAO,MAAM,CAAC,OAAO,CAAC;AACxB,CAAC"}
@@ -2,6 +2,7 @@ import { existsSync } from "node:fs";
2
2
  import { dirname, join } from "node:path";
3
3
  import { fileURLToPath } from "node:url";
4
4
  import Fastify from "fastify";
5
+ import fastifyCompress from "@fastify/compress";
5
6
  import fastifyStatic from "@fastify/static";
6
7
  import fastifyWebsocket from "@fastify/websocket";
7
8
  import { effectivePiWebConfig } from "../config.js";
@@ -21,10 +22,11 @@ import { registerTerminalProxyRoutes } from "./terminalProxyRoutes.js";
21
22
  import { registerWorkspaceDeletionRoutes } from "./workspaces/workspaceDeletionRoutes.js";
22
23
  import { createFilePiWebConfigService, registerConfigRoutes, registerLocalMachineConfigRoutes } from "./configRoutes.js";
23
24
  import { PiWebPluginService } from "./piWebPluginService.js";
24
- import { createDefaultPiPackageService } from "./piPackageService.js";
25
+ import { createActiveProfilePiPackageService } from "./piPackageService.js";
25
26
  import { registerPiPackageRoutes } from "./piPackageRoutes.js";
26
27
  import { createPiWebStatusCache } from "./piWebStatusCache.js";
27
28
  import { getPiWebRuntime, getPiWebStatus, getPiWebVersionStatus } from "./piWebStatus.js";
29
+ import { ActiveAgentProfileAccessError, requireActiveAgentProfile, SessionDaemonActiveAgentProfileProvider, } from "./activeAgentProfileProvider.js";
28
30
  import { MachineService } from "./machines/machineService.js";
29
31
  import { registerMachineRoutes } from "./machines/machineRoutes.js";
30
32
  import { registerMachineProxyRoutes } from "./machines/machineProxyRoutes.js";
@@ -121,18 +123,55 @@ function registerLocalFileSuggestionRoutes(app, projects, workspaces, prefix, op
121
123
  }
122
124
  });
123
125
  }
126
+ async function readEffectiveConfig(config) {
127
+ return (await config.read()).effectiveConfig;
128
+ }
129
+ function invalidatePiWebStatusOnWrite(config, statusCache) {
130
+ return {
131
+ read: () => config.read(),
132
+ write: async (nextConfig) => {
133
+ const response = await config.write(nextConfig);
134
+ statusCache.invalidate();
135
+ return response;
136
+ },
137
+ };
138
+ }
139
+ async function withProfileDependency(reply, operation) {
140
+ try {
141
+ return await operation();
142
+ }
143
+ catch (error) {
144
+ if (!(error instanceof ActiveAgentProfileAccessError))
145
+ throw error;
146
+ return reply.code(503).send({ error: error.message });
147
+ }
148
+ }
124
149
  export async function buildApp(deps = {}) {
125
150
  const app = Fastify({ logger: deps.logger ?? requestLoggerOptions(), ...(deps.bodyLimit === undefined ? {} : { bodyLimit: deps.bodyLimit }) });
151
+ await app.register(fastifyCompress, {
152
+ globalCompression: true,
153
+ globalDecompression: false,
154
+ threshold: 1024,
155
+ });
126
156
  await app.register(fastifyWebsocket);
127
157
  const projects = deps.projects ?? new ProjectService(new ProjectStore());
128
158
  const workspaces = deps.workspaces ?? new WorkspaceService();
129
- const piWebPlugins = deps.piWebPlugins ?? new PiWebPluginService();
130
- const piPackages = deps.piPackages ?? createDefaultPiPackageService();
131
159
  const configService = deps.config ?? createFilePiWebConfigService();
160
+ const readConfig = () => readEffectiveConfig(configService);
132
161
  const sessionDaemon = deps.sessionDaemon ?? new SessionDaemonClient();
133
- const piWebStatusCache = createPiWebStatusCache(() => getPiWebStatus(sessionDaemon), {
134
- onError: (error) => { app.log.warn({ err: error }, "failed to refresh PI WEB status cache"); },
162
+ const agentProfileProvider = deps.agentProfileProvider ?? new SessionDaemonActiveAgentProfileProvider(sessionDaemon);
163
+ const piWebPlugins = deps.piWebPlugins ?? new PiWebPluginService({
164
+ configProvider: readConfig,
165
+ agentDirProvider: async () => (await requireActiveAgentProfile(agentProfileProvider)).dir,
135
166
  });
167
+ const piPackages = deps.piPackages ?? createActiveProfilePiPackageService(agentProfileProvider);
168
+ const piWebStatusCache = deps.piWebStatusCache ?? createPiWebStatusCache(async ({ force }) => {
169
+ const activeAgentProfile = await agentProfileProvider.getActiveAgentProfile();
170
+ return getPiWebStatus(sessionDaemon, {
171
+ forceReleaseCheck: force,
172
+ ...(activeAgentProfile.status === "available" ? { activeAgentProfile: activeAgentProfile.profile } : {}),
173
+ });
174
+ }, { onError: (error) => { app.log.warn({ err: error }, "failed to refresh PI WEB status cache"); } });
136
175
  const machines = deps.machines ?? new MachineService(undefined, {
137
176
  localRuntime: () => getPiWebRuntime(sessionDaemon),
138
177
  });
@@ -140,24 +179,32 @@ export async function buildApp(deps = {}) {
140
179
  const normalAuth = new NormalModeAuthService(configService);
141
180
  const normalAuthLoginAttempts = registerNormalAuthRoutes(app, normalAuth);
142
181
  registerNormalModeAuthGate(app, normalAuth, managementEmbed, normalAuthLoginAttempts);
143
- app.get("/pi-web-plugins/manifest.json", async () => piWebPlugins.manifest());
182
+ app.get("/pi-web-plugins/manifest.json", async (_request, reply) => withProfileDependency(reply, () => piWebPlugins.manifest()));
144
183
  app.get("/pi-web-plugins/:pluginId/*", async (request, reply) => {
145
184
  if (await proxyMachinePluginAsset(machines, request.params.pluginId, request.params["*"], request.url, reply))
146
185
  return;
147
- const asset = await piWebPlugins.readAsset(request.params.pluginId, request.params["*"]);
148
- if (asset === undefined)
149
- return reply.code(404).send({ error: "Plugin asset not found" });
150
- return reply.type(asset.contentType).send(asset.content);
186
+ return withProfileDependency(reply, async () => {
187
+ const asset = await piWebPlugins.readAsset(request.params.pluginId, request.params["*"]);
188
+ if (asset === undefined)
189
+ return reply.code(404).send({ error: "Plugin asset not found" });
190
+ return reply.type(asset.contentType).send(asset.content);
191
+ });
192
+ });
193
+ app.get("/api/pi-web/status", async (request) => request.query.refresh === "1"
194
+ ? piWebStatusCache.refresh({ force: true })
195
+ : piWebStatusCache.get());
196
+ app.get("/api/pi-web/version", async () => {
197
+ const activeAgentProfile = await agentProfileProvider.getActiveAgentProfile();
198
+ return getPiWebVersionStatus(sessionDaemon, activeAgentProfile.status === "available" ? { activeAgentProfile: activeAgentProfile.profile } : {});
151
199
  });
152
- app.get("/api/pi-web/status", async () => piWebStatusCache.get());
153
- app.get("/api/pi-web/version", async () => getPiWebVersionStatus(sessionDaemon));
154
200
  app.get("/api/pi-web/runtime", async () => getPiWebRuntime(sessionDaemon));
155
- app.get("/api/plugins", async () => piWebPlugins.plugins());
156
- app.get("/api/machines/local/plugins", async () => piWebPlugins.plugins());
201
+ app.get("/api/plugins", async (_request, reply) => withProfileDependency(reply, () => piWebPlugins.plugins()));
202
+ app.get("/api/machines/local/plugins", async (_request, reply) => withProfileDependency(reply, () => piWebPlugins.plugins()));
157
203
  registerPiPackageRoutes(app, piPackages);
158
204
  registerPiPackageRoutes(app, piPackages, "/api/machines/local");
159
- registerConfigRoutes(app, configService);
160
- registerLocalMachineConfigRoutes(app, configService);
205
+ const invalidatingConfigService = invalidatePiWebStatusOnWrite(configService, piWebStatusCache);
206
+ registerConfigRoutes(app, invalidatingConfigService);
207
+ registerLocalMachineConfigRoutes(app, invalidatingConfigService);
161
208
  registerMachineRoutes(app, machines);
162
209
  registerMachinePluginProxyRoutes(app, machines);
163
210
  registerLocalProjectRoutes(app, projects, workspaces, "/api", { config: configService, managementEmbed });
@@ -1 +1 @@
1
- {"version":3,"file":"app.js","sourceRoot":"","sources":["../../src/server/app.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"app.js","sourceRoot":"","sources":["../../src/server/app.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,56 @@
1
+ /**
2
+ * Remove provider-only thinking data at the browser transport boundary. The
3
+ * runtime message remains unchanged because only affected messages and content
4
+ * blocks are copied.
5
+ */
6
+ export function projectBrowserMessage(message) {
7
+ if (!isRecord(message))
8
+ return message;
9
+ const originalContent = message["content"];
10
+ if (!isUnknownArray(originalContent))
11
+ return message;
12
+ const content = mapChanged(originalContent, (part) => {
13
+ if (!isRecord(part) || part["type"] !== "thinking" || !Object.hasOwn(part, "thinkingSignature"))
14
+ return part;
15
+ const projected = { ...part };
16
+ delete projected["thinkingSignature"];
17
+ return projected;
18
+ });
19
+ return content === originalContent ? message : { ...message, content };
20
+ }
21
+ export function projectBrowserMessageResponse(response) {
22
+ if (Array.isArray(response))
23
+ return mapChanged(response, projectBrowserMessage);
24
+ const messages = mapChanged(response.messages, projectBrowserMessage);
25
+ return messages === response.messages ? response : { ...response, messages };
26
+ }
27
+ export function projectBrowserSessionEvent(event) {
28
+ if (event.type !== "message.end" || event.message === undefined)
29
+ return event;
30
+ const message = projectBrowserMessage(event.message);
31
+ return message === event.message ? event : { ...event, message };
32
+ }
33
+ function mapChanged(values, project) {
34
+ let projectedValues;
35
+ let index = 0;
36
+ for (const value of values) {
37
+ const projected = project(value);
38
+ if (projectedValues === undefined) {
39
+ if (projected === value) {
40
+ index += 1;
41
+ continue;
42
+ }
43
+ projectedValues = values.slice(0, index);
44
+ }
45
+ projectedValues.push(projected);
46
+ index += 1;
47
+ }
48
+ return projectedValues ?? values;
49
+ }
50
+ function isUnknownArray(value) {
51
+ return Array.isArray(value);
52
+ }
53
+ function isRecord(value) {
54
+ return typeof value === "object" && value !== null && !Array.isArray(value);
55
+ }
56
+ //# sourceMappingURL=browserMessageProjection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browserMessageProjection.js","sourceRoot":"","sources":["../../src/server/browserMessageProjection.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CAAC,OAAgB;IACpD,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;QAAE,OAAO,OAAO,CAAC;IACvC,MAAM,eAAe,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;IAC3C,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC;QAAE,OAAO,OAAO,CAAC;IAErD,MAAM,OAAO,GAAG,UAAU,CAAC,eAAe,EAAE,CAAC,IAAI,EAAE,EAAE;QACnD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,mBAAmB,CAAC;YAAE,OAAO,IAAI,CAAC;QAC7G,MAAM,SAAS,GAAG,EAAE,GAAG,IAAI,EAAE,CAAC;QAC9B,OAAO,SAAS,CAAC,mBAAmB,CAAC,CAAC;QACtC,OAAO,SAAS,CAAC;IACnB,CAAC,CAAC,CAAC;IAEH,OAAO,OAAO,KAAK,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,CAAC;AACzE,CAAC;AAED,MAAM,UAAU,6BAA6B,CAAC,QAAiC;IAC7E,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;QAAE,OAAO,UAAU,CAAC,QAAQ,EAAE,qBAAqB,CAAC,CAAC;IAChF,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC,QAAQ,EAAE,qBAAqB,CAAC,CAAC;IACtE,OAAO,QAAQ,KAAK,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,QAAQ,EAAE,QAAQ,EAAE,CAAC;AAC/E,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,KAAqB;IAC9D,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IAC9E,MAAM,OAAO,GAAG,qBAAqB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACrD,OAAO,OAAO,KAAK,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,OAAO,EAAE,CAAC;AACnE,CAAC;AAED,SAAS,UAAU,CAAI,MAAW,EAAE,OAAwB;IAC1D,IAAI,eAAgC,CAAC;IACrC,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;QACjC,IAAI,eAAe,KAAK,SAAS,EAAE,CAAC;YAClC,IAAI,SAAS,KAAK,KAAK,EAAE,CAAC;gBACxB,KAAK,IAAI,CAAC,CAAC;gBACX,SAAS;YACX,CAAC;YACD,eAAe,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAC3C,CAAC;QACD,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAChC,KAAK,IAAI,CAAC,CAAC;IACb,CAAC;IACD,OAAO,eAAe,IAAI,MAAM,CAAC;AACnC,CAAC;AAED,SAAS,cAAc,CAAC,KAAc;IACpC,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9B,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC"}
@@ -1,5 +1,6 @@
1
- import { effectivePiWebConfig, loadPiWebConfig, savePiWebConfig } from "../config.js";
2
- import { isRecord, parsePiWebConfigRequest } from "../shared/piWebConfigParsing.js";
1
+ import { agentDirEnvSource, hasAgentDirEnvOverride, hasAgentSessionDirEnvOverride, loadPiWebConfig, parseAgentConfig, parseUploadsConfig, resolveEffectivePiWebConfig, savePiWebConfig } from "../config.js";
2
+ import { isPiWebPluginId } from "../shared/pluginIds.js";
3
+ import { parsePiWebConfigRequest } from "../shared/piWebConfigParsing.js";
3
4
  export const SELECTED_MACHINE_CONFIG_KEYS = [
4
5
  "plugins",
5
6
  "pathAccess",
@@ -7,6 +8,7 @@ export const SELECTED_MACHINE_CONFIG_KEYS = [
7
8
  "maxUploadBytes",
8
9
  "spawnSessions",
9
10
  "subsessions",
11
+ "agent",
10
12
  ];
11
13
  const SELECTED_MACHINE_CONFIG_KEY_SET = new Set(SELECTED_MACHINE_CONFIG_KEYS);
12
14
  export function createFilePiWebConfigService(options = {}) {
@@ -20,14 +22,14 @@ export function createFilePiWebConfigService(options = {}) {
20
22
  }
21
23
  export function currentPiWebConfigResponse(options = {}) {
22
24
  const loaded = loadPiWebConfig(options);
23
- const effective = effectivePiWebConfig(options);
25
+ const effective = resolveEffectivePiWebConfig(loaded, options);
24
26
  const env = options.env ?? process.env;
25
27
  return {
26
28
  path: loaded.path,
27
29
  exists: loaded.exists,
28
30
  config: loaded.config,
29
31
  effectiveConfig: effective.config,
30
- envOverrides: piWebConfigEnvOverrides(env),
32
+ envOverrides: piWebConfigEnvOverrides(env, effective.config),
31
33
  };
32
34
  }
33
35
  export function registerConfigRoutes(app, service = createFilePiWebConfigService()) {
@@ -41,7 +43,7 @@ export function registerConfigRoutes(app, service = createFilePiWebConfigService
41
43
  });
42
44
  app.put("/api/config", async (request, reply) => {
43
45
  try {
44
- return await service.write(parsePiWebConfigRequest(request.body?.config));
46
+ return await service.write(parseConfigRequest(request.body?.config));
45
47
  }
46
48
  catch (error) {
47
49
  const status = isConfigValidationError(error) ? 400 : 500;
@@ -70,7 +72,7 @@ export function registerLocalMachineConfigRoutes(app, service = createFilePiWebC
70
72
  }
71
73
  });
72
74
  }
73
- export function parseSelectedMachineConfigRequest(value) {
75
+ export function parseSelectedMachineConfigRequest(value, agentPathHost = "current") {
74
76
  if (!isRecord(value))
75
77
  throw new Error("PI WEB selected-machine config update must include a config object");
76
78
  for (const key of Object.keys(value)) {
@@ -78,7 +80,7 @@ export function parseSelectedMachineConfigRequest(value) {
78
80
  throw new Error(`PI WEB selected-machine config key is not allowed: ${key}`);
79
81
  }
80
82
  try {
81
- return pickSelectedMachineConfig(parsePiWebConfigRequest(value));
83
+ return pickSelectedMachineConfig(parseConfigRequest(value, agentPathHost));
82
84
  }
83
85
  catch (error) {
84
86
  throw new Error(selectedMachineConfigErrorMessage(error), { cause: error });
@@ -99,11 +101,62 @@ export function parsePiWebConfigResponseBody(value, source = "PI WEB config resp
99
101
  return {
100
102
  path: requireResponseString(record, "path", source),
101
103
  exists: requireResponseBoolean(record, "exists", source),
102
- config: parsePiWebConfigRequest(record["config"]),
103
- effectiveConfig: parsePiWebConfigRequest(record["effectiveConfig"]),
104
+ config: parseConfigRequest(record["config"], "portable"),
105
+ effectiveConfig: parseConfigRequest(record["effectiveConfig"], "portable"),
104
106
  envOverrides: parsePiWebConfigEnvOverridesResponse(record["envOverrides"], source),
105
107
  };
106
108
  }
109
+ function parseConfigRequest(value, agentPathHost = "current") {
110
+ if (!isRecord(value))
111
+ throw new Error("PI WEB config update must include a config object");
112
+ const config = parsePiWebConfigRequest(value);
113
+ const host = value["host"];
114
+ const port = value["port"];
115
+ const allowedHosts = value["allowedHosts"];
116
+ const shortcuts = value["shortcuts"];
117
+ const plugins = value["plugins"];
118
+ const pathAccess = value["pathAccess"];
119
+ const uploads = value["uploads"];
120
+ const maxUploadBytes = value["maxUploadBytes"];
121
+ const spawnSessions = value["spawnSessions"];
122
+ const subsessions = value["subsessions"];
123
+ const agent = value["agent"];
124
+ if (host !== undefined) {
125
+ if (typeof host !== "string")
126
+ throw new Error("PI WEB config host must be a string");
127
+ config.host = host;
128
+ }
129
+ if (port !== undefined) {
130
+ if (typeof port !== "number")
131
+ throw new Error("PI WEB config port must be a number");
132
+ config.port = port;
133
+ }
134
+ if (allowedHosts !== undefined)
135
+ config.allowedHosts = parseAllowedHostsRequest(allowedHosts);
136
+ if (shortcuts !== undefined)
137
+ config.shortcuts = parseShortcutsRequest(shortcuts);
138
+ if (plugins !== undefined)
139
+ config.plugins = parsePluginsRequest(plugins);
140
+ if (pathAccess !== undefined)
141
+ config.pathAccess = parsePathAccessRequest(pathAccess);
142
+ if (uploads !== undefined)
143
+ config.uploads = parseUploadsConfig(uploads, "request");
144
+ if (maxUploadBytes !== undefined)
145
+ config.maxUploadBytes = parseMaxUploadBytesRequest(maxUploadBytes);
146
+ if (spawnSessions !== undefined) {
147
+ if (typeof spawnSessions !== "boolean")
148
+ throw new Error("PI WEB config spawnSessions must be a boolean");
149
+ config.spawnSessions = spawnSessions;
150
+ }
151
+ if (subsessions !== undefined) {
152
+ if (typeof subsessions !== "boolean")
153
+ throw new Error("PI WEB config subsessions must be a boolean");
154
+ config.subsessions = subsessions;
155
+ }
156
+ if (agent !== undefined)
157
+ config.agent = parseAgentRequest(agent, agentPathHost);
158
+ return config;
159
+ }
107
160
  function pickSelectedMachineConfig(config) {
108
161
  return {
109
162
  ...(config.plugins !== undefined ? { plugins: config.plugins } : {}),
@@ -112,6 +165,7 @@ function pickSelectedMachineConfig(config) {
112
165
  ...(config.maxUploadBytes !== undefined ? { maxUploadBytes: config.maxUploadBytes } : {}),
113
166
  ...(config.spawnSessions !== undefined ? { spawnSessions: config.spawnSessions } : {}),
114
167
  ...(config.subsessions !== undefined ? { subsessions: config.subsessions } : {}),
168
+ ...(config.agent !== undefined ? { agent: config.agent } : {}),
115
169
  };
116
170
  }
117
171
  function selectedMachineConfigErrorMessage(error) {
@@ -120,6 +174,65 @@ function selectedMachineConfigErrorMessage(error) {
120
174
  return `PI WEB selected-machine config ${message.slice("PI WEB config ".length)}`;
121
175
  return `PI WEB selected-machine config ${message}`;
122
176
  }
177
+ function parseAllowedHostsRequest(value) {
178
+ if (value === true)
179
+ return true;
180
+ if (!Array.isArray(value) || !value.every((item) => typeof item === "string")) {
181
+ throw new Error("PI WEB config allowedHosts must be true or an array of strings");
182
+ }
183
+ return value;
184
+ }
185
+ function parseShortcutsRequest(value) {
186
+ if (!isRecord(value))
187
+ throw new Error("PI WEB config shortcuts must be an object");
188
+ return Object.fromEntries(Object.entries(value).map(([actionId, shortcut]) => {
189
+ if (shortcut !== null && (typeof shortcut !== "string" || shortcut === ""))
190
+ throw new Error("PI WEB config shortcut values must be non-empty strings or null");
191
+ return [actionId, shortcut];
192
+ }));
193
+ }
194
+ function parsePathAccessRequest(value) {
195
+ if (!isRecord(value))
196
+ throw new Error("PI WEB config pathAccess must be an object");
197
+ const allowedPaths = value["allowedPaths"];
198
+ return {
199
+ ...(allowedPaths === undefined ? {} : { allowedPaths: parseAllowedPathsRequest(allowedPaths) }),
200
+ };
201
+ }
202
+ function parseAllowedPathsRequest(value) {
203
+ if (!isNonEmptyStringArray(value)) {
204
+ throw new Error("PI WEB config pathAccess.allowedPaths must be an array of non-empty strings");
205
+ }
206
+ return value;
207
+ }
208
+ function isNonEmptyStringArray(value) {
209
+ return Array.isArray(value) && value.every((item) => typeof item === "string" && item !== "");
210
+ }
211
+ function parseMaxUploadBytesRequest(value) {
212
+ if (typeof value !== "number" || !Number.isInteger(value) || value < 1)
213
+ throw new Error("PI WEB config maxUploadBytes must be a positive integer");
214
+ return value;
215
+ }
216
+ function parseAgentRequest(value, pathHost) {
217
+ return parseAgentConfig(value, "request", pathHost);
218
+ }
219
+ function parsePluginsRequest(value) {
220
+ if (!isRecord(value) || Array.isArray(value))
221
+ throw new Error("PI WEB config plugins must be an object");
222
+ return Object.fromEntries(Object.entries(value).map(([pluginId, config]) => {
223
+ if (!isPiWebPluginId(pluginId))
224
+ throw new Error("PI WEB config plugin ids are invalid");
225
+ if (!isRecord(config) || Array.isArray(config))
226
+ throw new Error("PI WEB config plugin entries must be objects");
227
+ const enabled = config["enabled"];
228
+ if (enabled !== undefined && typeof enabled !== "boolean")
229
+ throw new Error("PI WEB config plugin enabled values must be booleans");
230
+ const settings = config["settings"];
231
+ if (settings !== undefined && (!isRecord(settings) || Array.isArray(settings)))
232
+ throw new Error("PI WEB config plugin settings must be objects");
233
+ return [pluginId, config];
234
+ }));
235
+ }
123
236
  function parsePiWebConfigEnvOverridesResponse(value, source) {
124
237
  const record = requireResponseRecord(value, `${source} envOverrides`);
125
238
  return {
@@ -128,6 +241,10 @@ function parsePiWebConfigEnvOverridesResponse(value, source) {
128
241
  allowedHosts: requireResponseBoolean(record, "allowedHosts", source),
129
242
  spawnSessions: requireResponseBoolean(record, "spawnSessions", source),
130
243
  subsessions: requireResponseBoolean(record, "subsessions", source),
244
+ agentCommand: optionalResponseBoolean(record, "agentCommand", source) ?? false,
245
+ agentDir: optionalResponseBoolean(record, "agentDir", source) ?? false,
246
+ ...optionalAgentDirSource(record, source),
247
+ agentSessionDir: optionalResponseBoolean(record, "agentSessionDir", source) ?? false,
131
248
  };
132
249
  }
133
250
  function requireResponseRecord(value, source) {
@@ -147,13 +264,35 @@ function requireResponseBoolean(record, key, source) {
147
264
  throw new Error(`${source} field must be a boolean: ${key}`);
148
265
  return value;
149
266
  }
150
- function piWebConfigEnvOverrides(env) {
267
+ function optionalResponseBoolean(record, key, source) {
268
+ const value = record[key];
269
+ if (value === undefined)
270
+ return undefined;
271
+ if (typeof value !== "boolean")
272
+ throw new Error(`${source} field must be a boolean: ${key}`);
273
+ return value;
274
+ }
275
+ function optionalAgentDirSource(record, source) {
276
+ const value = record["agentDirSource"];
277
+ if (value === undefined)
278
+ return {};
279
+ if (value !== "pi-web" && value !== "pi-compatibility")
280
+ throw new Error(`${source} field must be a valid agent directory source: agentDirSource`);
281
+ return { agentDirSource: value };
282
+ }
283
+ function piWebConfigEnvOverrides(env, config = {}) {
284
+ const command = config.agent?.command;
285
+ const dirEnvSource = agentDirEnvSource(env);
151
286
  return {
152
287
  host: isEnvSet(env["PI_WEB_HOST"]),
153
288
  port: isEnvSet(env["PI_WEB_PORT"]) || isEnvSet(env["PORT"]),
154
289
  allowedHosts: isEnvSet(env["PI_WEB_ALLOWED_HOSTS"]),
155
290
  spawnSessions: isEnvSet(env["PI_WEB_SPAWN_SESSIONS"]),
156
291
  subsessions: isEnvSet(env["PI_WEB_SUBSESSIONS"]),
292
+ agentCommand: isEnvSet(env["PI_WEB_AGENT_COMMAND"]),
293
+ agentDir: hasAgentDirEnvOverride(env, command),
294
+ ...(dirEnvSource === undefined ? {} : { agentDirSource: dirEnvSource }),
295
+ agentSessionDir: hasAgentSessionDirEnvOverride(env, command),
157
296
  };
158
297
  }
159
298
  function isEnvSet(value) {
@@ -165,4 +304,7 @@ function isConfigValidationError(error) {
165
304
  function errorMessage(error) {
166
305
  return error instanceof Error ? error.message : String(error);
167
306
  }
307
+ function isRecord(value) {
308
+ return typeof value === "object" && value !== null && !Array.isArray(value);
309
+ }
168
310
  //# sourceMappingURL=configRoutes.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"configRoutes.js","sourceRoot":"","sources":["../../src/server/configRoutes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"configRoutes.js","sourceRoot":"","sources":["../../src/server/configRoutes.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,7 @@ import { Readable } from "node:stream";
2
2
  import { WebSocket } from "ws";
3
3
  export const DEFAULT_REMOTE_REQUEST_TIMEOUT_MS = 30_000;
4
4
  export const DEFAULT_REMOTE_HEALTH_TIMEOUT_MS = 3_000;
5
+ const REMOTE_RESPONSE_ACCEPT_ENCODING = "gzip, deflate";
5
6
  const BLOCKED_CONFIGURED_HEADER_NAMES = new Set([
6
7
  "host",
7
8
  "connection",
@@ -32,7 +33,7 @@ export class RemoteMachineClient {
32
33
  const response = await this.fetchResponse(method, path, body, options);
33
34
  return {
34
35
  statusCode: response.status,
35
- headers: headersToRecord(response.headers),
36
+ headers: decodedResponseHeaders(response.headers),
36
37
  ...(response.body === null ? {} : { body: readableFromWebResponseBody(response.body) }),
37
38
  };
38
39
  }
@@ -42,7 +43,7 @@ export class RemoteMachineClient {
42
43
  const parsed = text === "" ? undefined : JSON.parse(text);
43
44
  return {
44
45
  statusCode: response.status,
45
- headers: headersToRecord(response.headers),
46
+ headers: decodedResponseHeaders(response.headers),
46
47
  body: parsed,
47
48
  };
48
49
  }
@@ -76,11 +77,12 @@ export class RemoteMachineClient {
76
77
  }
77
78
  }
78
79
  requestHeaders(body, options) {
79
- return {
80
- ...this.remoteHeaders(),
81
- accept: "*/*",
82
- ...(body === undefined ? {} : { "content-type": options.contentType ?? defaultContentTypeForBody(body) }),
83
- };
80
+ const headers = new Headers(this.remoteHeaders());
81
+ headers.set("accept", "*/*");
82
+ headers.set("accept-encoding", REMOTE_RESPONSE_ACCEPT_ENCODING);
83
+ if (body !== undefined)
84
+ headers.set("content-type", options.contentType ?? defaultContentTypeForBody(body));
85
+ return headers;
84
86
  }
85
87
  remoteHeaders() {
86
88
  return {
@@ -120,8 +122,16 @@ function filterConfiguredHeaders(headers) {
120
122
  return {};
121
123
  return Object.fromEntries(Object.entries(headers).filter(([key]) => !BLOCKED_CONFIGURED_HEADER_NAMES.has(key.toLowerCase())));
122
124
  }
123
- function headersToRecord(headers) {
124
- return Object.fromEntries(headers.entries());
125
+ function decodedResponseHeaders(headers) {
126
+ const values = Object.fromEntries(headers.entries());
127
+ const contentEncoding = values["content-encoding"];
128
+ if (contentEncoding !== undefined && contentEncoding !== "identity") {
129
+ // Fetch decodes response bodies but retains headers for the encoded wire
130
+ // representation. The outer HTTP edge must negotiate and frame the decoded body.
131
+ delete values["content-encoding"];
132
+ delete values["content-length"];
133
+ }
134
+ return values;
125
135
  }
126
136
  function serializeRequestBody(method, body) {
127
137
  if (body === undefined || method === "GET" || method === "HEAD")