@chainingintention/pi-web-cn 2.0.0 → 2.202610.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/README.md +61 -106
- package/dist/.plugins-ready +1 -0
- package/dist/cli.js +331 -174
- package/dist/cli.js.map +1 -1
- package/dist/client/apple-touch-icon-dev.png +0 -0
- package/dist/client/assets/PiWebApp-vueV4eKR.js +4938 -0
- package/dist/client/assets/classic-CyM97Akm.css +54 -0
- package/dist/client/assets/external-B9K8duyP.js +2 -0
- package/dist/client/assets/graphite-DquaqFXU.css +54 -0
- package/dist/client/assets/index-C8f0d0CR.js +2 -0
- package/dist/client/assets/paper-CB1oLuRr.css +54 -0
- package/dist/client/assets/pi-web-dark-D_KtbM95.css +54 -0
- package/dist/client/assets/pi-web-light-DSNLMIBI.css +54 -0
- package/dist/client/assets/vendor-editor-core-BfnHL1Dg.js +10 -0
- package/dist/client/assets/vendor-editor-languages-bNquDJP0.js +28 -0
- package/dist/client/favicon-dev.svg +8 -0
- package/dist/client/index.html +7 -51
- package/dist/client/manifest.webmanifest +2 -1
- package/dist/client/pwa-icon-dev-192.png +0 -0
- package/dist/client/pwa-icon-dev-512.png +0 -0
- package/dist/config.js +55 -8
- package/dist/config.js.map +1 -1
- package/dist/docker/piWebDockerCommandPlan.js +13 -4
- package/dist/docker/piWebDockerCommandPlan.js.map +1 -1
- package/dist/environment.js +4 -0
- package/dist/environment.js.map +1 -0
- package/dist/localization.js +24 -0
- package/dist/localization.js.map +1 -0
- package/dist/nativeServices/installedServiceDefinitions.js +617 -0
- package/dist/nativeServices/installedServiceDefinitions.js.map +1 -0
- package/dist/nativeServices/serviceAction.js +78 -20
- package/dist/nativeServices/serviceAction.js.map +1 -1
- package/dist/nativeServices/serviceDoctor.js +418 -114
- package/dist/nativeServices/serviceDoctor.js.map +1 -1
- package/dist/nativeServices/servicePlan.js +2 -2
- package/dist/nativeServices/servicePlan.js.map +1 -1
- package/dist/pi-packages/captains-log/README.md +11 -0
- package/dist/pi-packages/captains-log/dist/browser/channelProtocol.js +29 -0
- package/dist/pi-packages/captains-log/dist/browser/index.js +143 -0
- package/dist/pi-packages/captains-log/dist/browser/markdown.js +68 -0
- package/dist/pi-packages/captains-log/dist/browser/panel.js +148 -0
- package/dist/pi-packages/captains-log/dist/browser/protocol.js +26 -0
- package/dist/pi-packages/captains-log/dist/companion.js +126 -0
- package/dist/pi-packages/captains-log/dist/roundtrip.js +62 -0
- package/dist/pi-packages/captains-log/dist/server.js +210 -0
- package/dist/pi-packages/captains-log/dist/store.js +75 -0
- package/dist/pi-packages/captains-log/docs/usage.md +29 -0
- package/dist/pi-packages/captains-log/i18n.js +7 -0
- package/dist/pi-packages/captains-log/package.json +35 -0
- package/dist/pi-packages/captains-log/tsconfig.json +21 -0
- package/dist/pi-packages/captains-log/vite.config.mjs +28 -0
- package/dist/pi-packages/relays/extensions/index.js +61 -0
- package/dist/pi-packages/relays/i18n.js +7 -0
- package/dist/{pi-web-plugins → pi-packages}/relays/markdownDocument.js +3 -2
- package/dist/pi-packages/relays/package.json +20 -0
- package/dist/pi-packages/relays/pi-web-plugin.js +96 -0
- package/dist/pi-packages/relays/prompts/relay-worktree.md +18 -0
- package/dist/pi-packages/relays/prompts/relay.md +18 -0
- package/dist/{pi-web-plugins → pi-packages}/relays/relayDiscovery.js +2 -2
- package/dist/pi-packages/relays/relayDispatch.js +67 -0
- package/dist/pi-packages/relays/relayIdentity.js +37 -0
- package/dist/{pi-web-plugins → pi-packages}/relays/relaysPanelElement.js +98 -59
- package/dist/pi-packages/relays/skills/relay/SKILL.md +50 -0
- package/dist/pi-packages/relays/skills/relay-runner/SKILL.md +74 -0
- package/dist/pi-packages/workflows/browser/pi-web-plugin.js +42 -0
- package/dist/pi-packages/workflows/browser/worktreeDialog.js +170 -0
- package/dist/pi-packages/workflows/package.json +23 -0
- package/dist/pi-packages/workflows/prompts/worktree.md +21 -0
- package/dist/pi-packages/workflows/server-plugin.js +586 -0
- package/dist/pi-packages/workflows/vite.config.mjs +17 -0
- package/dist/pi-web-plugins/code-highlight/browser/pi-web-plugin.js +22 -0
- package/dist/pi-web-plugins/code-highlight/package.json +13 -0
- package/dist/pi-web-plugins/files/browser/assets/files-icon-DZObYhxb.svg +3 -0
- package/dist/pi-web-plugins/files/browser/pi-web-plugin.js +466 -0
- package/dist/pi-web-plugins/files/package.json +15 -0
- package/dist/pi-web-plugins/git/browser/git-contract.js +22 -11
- package/dist/pi-web-plugins/git/browser/git-panel.js +228 -100
- package/dist/pi-web-plugins/git/browser/i18n.js +7 -0
- package/dist/pi-web-plugins/git/browser/pi-web-plugin.js +28 -4
- package/dist/pi-web-plugins/git/git-backend.js +61 -21
- package/dist/pi-web-plugins/git/gitStatusCache.js +48 -0
- package/dist/pi-web-plugins/git/i18n.js +7 -0
- package/dist/pi-web-plugins/git/package.json +1 -0
- package/dist/pi-web-plugins/git/server-plugin.js +45 -24
- package/dist/pi-web-plugins/git/workspace-discovery-notify.cjs +14 -0
- package/dist/pi-web-plugins/git/workspaceDiscoveryHooks.js +186 -0
- package/dist/pi-web-plugins/info/i18n.js +7 -0
- package/dist/pi-web-plugins/info/infoInternals.js +76 -65
- package/dist/pi-web-plugins/info/package.json +1 -1
- package/dist/pi-web-plugins/info/pi-web-plugin.js +40 -42
- package/dist/pi-web-plugins/mermaid/browser/mermaid-engine.js +4255 -0
- package/dist/pi-web-plugins/mermaid/browser/pi-web-plugin.js +11 -0
- package/dist/pi-web-plugins/mermaid/package.json +13 -0
- package/dist/pi-web-plugins/terminal/browser/pi-web-plugin.js +219 -0
- package/dist/pi-web-plugins/terminal/i18n.js +7 -0
- package/dist/pi-web-plugins/terminal/package.json +16 -0
- package/dist/pi-web-plugins/terminal/server-plugin.js +367 -0
- package/dist/pi-web-plugins/terminal/terminalService.js +436 -0
- package/dist/pi-web-plugins/updates/i18n.js +7 -0
- package/dist/pi-web-plugins/updates/package.json +1 -1
- package/dist/pi-web-plugins/updates/pi-web-plugin.js +143 -140
- package/dist/pi-web-plugins/updates/updatesLogic.js +24 -24
- package/dist/pi-web-plugins/workspace-tasks/config.js +12 -11
- package/dist/pi-web-plugins/workspace-tasks/i18n.js +7 -0
- package/dist/pi-web-plugins/workspace-tasks/package.json +1 -1
- package/dist/pi-web-plugins/workspace-tasks/pi-web-plugin.js +31 -9
- package/dist/pi-web-plugins/workspace-tasks/tasksPanelElement.js +54 -36
- package/dist/pi-web-plugins/workspace-tasks/workspaceTasksClient.js +12 -11
- package/dist/pi-web-plugins/zh-cn/auth.json +9 -0
- package/dist/pi-web-plugins/zh-cn/bundled.json +219 -0
- package/dist/pi-web-plugins/zh-cn/cli.json +230 -0
- package/dist/pi-web-plugins/zh-cn/client.json +225 -0
- package/dist/pi-web-plugins/zh-cn/components.json +1252 -0
- package/dist/pi-web-plugins/zh-cn/config-errors.json +188 -0
- package/dist/pi-web-plugins/zh-cn/files.json +50 -0
- package/dist/pi-web-plugins/zh-cn/machines.json +28 -0
- package/dist/pi-web-plugins/zh-cn/main.json +459 -0
- package/dist/pi-web-plugins/zh-cn/management-errors.json +23 -0
- package/dist/pi-web-plugins/zh-cn/manifest.webmanifest +25 -0
- package/dist/pi-web-plugins/zh-cn/metadata.json +3 -0
- package/dist/pi-web-plugins/zh-cn/package.json +10 -0
- package/dist/pi-web-plugins/zh-cn/pi-web-plugin.js +16 -0
- package/dist/pi-web-plugins/zh-cn/projects.json +6 -0
- package/dist/pi-web-plugins/zh-cn/provider-auth.json +18 -0
- package/dist/pi-web-plugins/zh-cn/routing.json +68 -0
- package/dist/pi-web-plugins/zh-cn/server-main.json +99 -0
- package/dist/pi-web-plugins/zh-cn/server.json +256 -0
- package/dist/piAi.js +4 -0
- package/dist/piAi.js.map +1 -0
- package/dist/piRuntime.js +150 -0
- package/dist/piRuntime.js.map +1 -0
- package/dist/piSdk.js +5 -0
- package/dist/piSdk.js.map +1 -0
- package/dist/piWebUpdate.js +508 -0
- package/dist/piWebUpdate.js.map +1 -0
- package/dist/piWebVersionReport.js +109 -41
- package/dist/piWebVersionReport.js.map +1 -1
- package/dist/plugin-api.d.ts +609 -29
- package/dist/plugin-api.js +1 -0
- package/dist/pluginRecoveryCli.js +27 -25
- package/dist/pluginRecoveryCli.js.map +1 -1
- package/dist/server/activity/workspaceActivityService.js +13 -6
- package/dist/server/activity/workspaceActivityService.js.map +1 -1
- package/dist/server/app.js +158 -89
- package/dist/server/app.js.map +1 -1
- package/dist/server/audit/managementAuditStore.js +6 -1
- package/dist/server/audit/managementAuditStore.js.map +1 -1
- package/dist/server/audit/normalToolAuditCli.js +45 -43
- package/dist/server/audit/normalToolAuditCli.js.map +1 -1
- package/dist/server/browserMessageProjection.js +39 -22
- package/dist/server/browserMessageProjection.js.map +1 -1
- package/dist/server/configRoutes.js +54 -33
- package/dist/server/configRoutes.js.map +1 -1
- package/dist/server/deploymentIdentity.js +67 -0
- package/dist/server/deploymentIdentity.js.map +1 -0
- package/dist/server/deploymentIdentityRoutes.js +22 -0
- package/dist/server/deploymentIdentityRoutes.js.map +1 -0
- package/dist/server/diagnostics/nodePtyNativeModule.js +7 -6
- package/dist/server/diagnostics/nodePtyNativeModule.js.map +1 -1
- package/dist/server/diagnostics/nodePtySpawnHelper.js +21 -20
- package/dist/server/diagnostics/nodePtySpawnHelper.js.map +1 -1
- package/dist/server/index.js +10 -1
- package/dist/server/index.js.map +1 -1
- package/dist/server/knownAutoInstallPiPackages.js +36 -0
- package/dist/server/knownAutoInstallPiPackages.js.map +1 -0
- package/dist/server/knownPiPackages.js +12 -0
- package/dist/server/knownPiPackages.js.map +1 -0
- package/dist/server/machines/machineClient.js +23 -19
- package/dist/server/machines/machineClient.js.map +1 -1
- package/dist/server/machines/machinePluginProxyRoutes.js +131 -31
- package/dist/server/machines/machinePluginProxyRoutes.js.map +1 -1
- package/dist/server/machines/machineProxyRoutes.js +138 -47
- package/dist/server/machines/machineProxyRoutes.js.map +1 -1
- package/dist/server/machines/machineRoutes.js +18 -13
- package/dist/server/machines/machineRoutes.js.map +1 -1
- package/dist/server/machines/machineService.js +40 -18
- package/dist/server/machines/machineService.js.map +1 -1
- package/dist/server/managementEmbed.js +149 -30
- package/dist/server/managementEmbed.js.map +1 -1
- package/dist/server/managementPrivileges.js +21 -0
- package/dist/server/managementPrivileges.js.map +1 -0
- package/dist/server/managementTerminalProxyRoutes.js +124 -0
- package/dist/server/managementTerminalProxyRoutes.js.map +1 -0
- package/dist/server/navigationPreferenceRoutes.js +59 -0
- package/dist/server/navigationPreferenceRoutes.js.map +1 -0
- package/dist/server/normalAuth.js +77 -53
- package/dist/server/normalAuth.js.map +1 -1
- package/dist/server/notices/serverNoticeRoutes.js +43 -0
- package/dist/server/notices/serverNoticeRoutes.js.map +1 -0
- package/dist/server/notices/serverNoticeService.js +26 -0
- package/dist/server/notices/serverNoticeService.js.map +1 -0
- package/dist/server/notices/serverNoticeStore.js +122 -0
- package/dist/server/notices/serverNoticeStore.js.map +1 -0
- package/dist/server/passwordVerifier.js +91 -0
- package/dist/server/passwordVerifier.js.map +1 -0
- package/dist/server/piPackageIdentity.js +25 -0
- package/dist/server/piPackageIdentity.js.map +1 -0
- package/dist/server/piPackageService.js +72 -9
- package/dist/server/piPackageService.js.map +1 -1
- package/dist/server/piWebPluginCatalog.js +212 -35
- package/dist/server/piWebPluginCatalog.js.map +1 -1
- package/dist/server/piWebPluginLifecycle.js +29 -3
- package/dist/server/piWebPluginLifecycle.js.map +1 -1
- package/dist/server/piWebPluginService.js +199 -292
- package/dist/server/piWebPluginService.js.map +1 -1
- package/dist/server/piWebStatus.js +57 -100
- package/dist/server/piWebStatus.js.map +1 -1
- package/dist/server/pluginCallbackDrain.js +35 -0
- package/dist/server/pluginCallbackDrain.js.map +1 -0
- package/dist/server/plugins/pluginBackendChannelProxyAdmission.js +84 -0
- package/dist/server/plugins/pluginBackendChannelProxyAdmission.js.map +1 -0
- package/dist/server/plugins/pluginBackendChannelProxyCoordinator.js +234 -0
- package/dist/server/plugins/pluginBackendChannelProxyCoordinator.js.map +1 -0
- package/dist/server/plugins/pluginBackendChannelProxyRoutes.js +61 -0
- package/dist/server/plugins/pluginBackendChannelProxyRoutes.js.map +1 -0
- package/dist/server/plugins/pluginBackendProxyRoutes.js +47 -57
- package/dist/server/plugins/pluginBackendProxyRoutes.js.map +1 -1
- package/dist/server/plugins/pluginBackendRegistry.js +804 -0
- package/dist/server/plugins/pluginBackendRegistry.js.map +1 -0
- package/dist/server/plugins/projectPluginSettings.js +95 -0
- package/dist/server/plugins/projectPluginSettings.js.map +1 -0
- package/dist/server/plugins/serverPluginCatalogCapability.js +106 -0
- package/dist/server/plugins/serverPluginCatalogCapability.js.map +1 -0
- package/dist/server/plugins/serverPluginPiSessionEventsCapability.js +34 -0
- package/dist/server/plugins/serverPluginPiSessionEventsCapability.js.map +1 -0
- package/dist/server/plugins/serverPluginPiSessionsCapability.js +185 -0
- package/dist/server/plugins/serverPluginPiSessionsCapability.js.map +1 -0
- package/dist/server/plugins/serverPluginRuntime.js +1088 -108
- package/dist/server/plugins/serverPluginRuntime.js.map +1 -1
- package/dist/server/plugins/serverPluginWorkspacesCapability.js +114 -0
- package/dist/server/plugins/serverPluginWorkspacesCapability.js.map +1 -0
- package/dist/server/projectTrustRoutes.js +86 -0
- package/dist/server/projectTrustRoutes.js.map +1 -0
- package/dist/server/projects/projectLifecycleService.js +94 -0
- package/dist/server/projects/projectLifecycleService.js.map +1 -0
- package/dist/server/projects/projectService.js +7 -4
- package/dist/server/projects/projectService.js.map +1 -1
- package/dist/server/realtime/sessionEventHub.js +58 -39
- package/dist/server/realtime/sessionEventHub.js.map +1 -1
- package/dist/server/realtime/sessionEventScope.js +4 -0
- package/dist/server/realtime/sessionEventScope.js.map +1 -1
- package/dist/server/requestCancellation.js +15 -1
- package/dist/server/requestCancellation.js.map +1 -1
- package/dist/server/sessiond/agentHttpDispatcher.js +108 -0
- package/dist/server/sessiond/agentHttpDispatcher.js.map +1 -0
- package/dist/server/sessiond/autoInstallPiPackages.js +63 -0
- package/dist/server/sessiond/autoInstallPiPackages.js.map +1 -0
- package/dist/server/sessiond/pluginBackendChannelRoutes.js +410 -0
- package/dist/server/sessiond/pluginBackendChannelRoutes.js.map +1 -0
- package/dist/server/sessiond/pluginBackendRoutes.js +64 -47
- package/dist/server/sessiond/pluginBackendRoutes.js.map +1 -1
- package/dist/server/sessiond/pluginCatalogRoutes.js +41 -0
- package/dist/server/sessiond/pluginCatalogRoutes.js.map +1 -0
- package/dist/server/sessiond/projectMutationRoutes.js +39 -0
- package/dist/server/sessiond/projectMutationRoutes.js.map +1 -0
- package/dist/server/sessiond/sessionDaemonShutdown.js +36 -0
- package/dist/server/sessiond/sessionDaemonShutdown.js.map +1 -0
- package/dist/server/sessiond/sessionDaemonStartup.js +30 -4
- package/dist/server/sessiond/sessionDaemonStartup.js.map +1 -1
- package/dist/server/sessiond/sessionProxyRoutes.js +263 -91
- package/dist/server/sessiond/sessionProxyRoutes.js.map +1 -1
- package/dist/server/sessiond/sessionServiceDependencies.js +5 -0
- package/dist/server/sessiond/sessionServiceDependencies.js.map +1 -1
- package/dist/server/sessiond/sessiondStateOwnership.js +174 -39
- package/dist/server/sessiond/sessiondStateOwnership.js.map +1 -1
- package/dist/server/sessiond/workspaceCatalogRoutes.js +11 -5
- package/dist/server/sessiond/workspaceCatalogRoutes.js.map +1 -1
- package/dist/server/sessiond/workspaceNotificationRoutes.js +55 -0
- package/dist/server/sessiond/workspaceNotificationRoutes.js.map +1 -0
- package/dist/server/sessiond/workspaceRemovalRoutes.js +1 -1
- package/dist/server/sessiond/workspaceRemovalRoutes.js.map +1 -1
- package/dist/server/sessiond.js +313 -69
- package/dist/server/sessiond.js.map +1 -1
- package/dist/server/sessions/askUserDomain.js +232 -0
- package/dist/server/sessions/askUserDomain.js.map +1 -0
- package/dist/server/sessions/askUserTool.js +18 -21
- package/dist/server/sessions/askUserTool.js.map +1 -1
- package/dist/server/sessions/attachmentService.js +2 -6
- package/dist/server/sessions/attachmentService.js.map +1 -1
- package/dist/server/sessions/authRoutes.js +32 -19
- package/dist/server/sessions/authRoutes.js.map +1 -1
- package/dist/server/sessions/authService.js +31 -11
- package/dist/server/sessions/authService.js.map +1 -1
- package/dist/server/sessions/builtinCommands.js +28 -21
- package/dist/server/sessions/builtinCommands.js.map +1 -1
- package/dist/server/sessions/builtinExtensionFactories.js +36 -0
- package/dist/server/sessions/builtinExtensionFactories.js.map +1 -0
- package/dist/server/sessions/clientSessionPreview.js +14 -0
- package/dist/server/sessions/clientSessionPreview.js.map +1 -0
- package/dist/server/sessions/companionBackend.js +286 -0
- package/dist/server/sessions/companionBackend.js.map +1 -0
- package/dist/server/sessions/dockerEnvironmentFacts.js +98 -10
- package/dist/server/sessions/dockerEnvironmentFacts.js.map +1 -1
- package/dist/server/sessions/extensionSessionDispatch.js +76 -0
- package/dist/server/sessions/extensionSessionDispatch.js.map +1 -0
- package/dist/server/sessions/globalProviderPolicy.js +88 -19
- package/dist/server/sessions/globalProviderPolicy.js.map +1 -1
- package/dist/server/sessions/managementAgentTools.js +116 -6
- package/dist/server/sessions/managementAgentTools.js.map +1 -1
- package/dist/server/sessions/managementPermissionSystem.js +36 -14
- package/dist/server/sessions/managementPermissionSystem.js.map +1 -1
- package/dist/server/sessions/managementSandbox.js +7 -18
- package/dist/server/sessions/managementSandbox.js.map +1 -1
- package/dist/server/sessions/mcpAuthFlowService.js +289 -0
- package/dist/server/sessions/mcpAuthFlowService.js.map +1 -0
- package/dist/server/sessions/mcpAuthRoutes.js +104 -0
- package/dist/server/sessions/mcpAuthRoutes.js.map +1 -0
- package/dist/server/sessions/mcpOAuthCredentialAdapter.js +92 -0
- package/dist/server/sessions/mcpOAuthCredentialAdapter.js.map +1 -0
- package/dist/server/sessions/messageHistoryTarget.js +79 -0
- package/dist/server/sessions/messageHistoryTarget.js.map +1 -0
- package/dist/server/sessions/messagePaging.js +2 -2
- package/dist/server/sessions/messagePaging.js.map +1 -1
- package/dist/server/sessions/modelCatalogRefresher.js +4 -3
- package/dist/server/sessions/modelCatalogRefresher.js.map +1 -1
- package/dist/server/sessions/oauthLoginFlowService.js +19 -20
- package/dist/server/sessions/oauthLoginFlowService.js.map +1 -1
- package/dist/server/sessions/piSessionEventConnections.js +68 -0
- package/dist/server/sessions/piSessionEventConnections.js.map +1 -0
- package/dist/server/sessions/piSessionManagerGateway.js +206 -27
- package/dist/server/sessions/piSessionManagerGateway.js.map +1 -1
- package/dist/server/sessions/piSessionService.js +2508 -991
- package/dist/server/sessions/piSessionService.js.map +1 -1
- package/dist/server/sessions/plainTextTheme.js +1 -1
- package/dist/server/sessions/plainTextTheme.js.map +1 -1
- package/dist/server/sessions/projectAuthService.js +35 -6
- package/dist/server/sessions/projectAuthService.js.map +1 -1
- package/dist/server/sessions/projectSettingsScope.js +88 -33
- package/dist/server/sessions/projectSettingsScope.js.map +1 -1
- package/dist/server/sessions/projectTrust.js +119 -0
- package/dist/server/sessions/projectTrust.js.map +1 -0
- package/dist/server/sessions/queuedMessageMutation.js +170 -0
- package/dist/server/sessions/queuedMessageMutation.js.map +1 -0
- package/dist/server/sessions/relaySkill.js +169 -0
- package/dist/server/sessions/relaySkill.js.map +1 -0
- package/dist/server/sessions/sessionActivityMarker.js +105 -0
- package/dist/server/sessions/sessionActivityMarker.js.map +1 -0
- package/dist/server/sessions/sessionArchiveMapping.js +16 -15
- package/dist/server/sessions/sessionArchiveMapping.js.map +1 -1
- package/dist/server/sessions/sessionArchiveStore.js +5 -1
- package/dist/server/sessions/sessionArchiveStore.js.map +1 -1
- package/dist/server/sessions/sessionArchiveTree.js +2 -2
- package/dist/server/sessions/sessionArchiveTree.js.map +1 -1
- package/dist/server/sessions/sessionCleanup.js +4 -3
- package/dist/server/sessions/sessionCleanup.js.map +1 -1
- package/dist/server/sessions/sessionCommandService.js +79 -87
- package/dist/server/sessions/sessionCommandService.js.map +1 -1
- package/dist/server/sessions/sessionEnvironmentFacts.js +5 -4
- package/dist/server/sessions/sessionEnvironmentFacts.js.map +1 -1
- package/dist/server/sessions/sessionFileHeader.js +41 -0
- package/dist/server/sessions/sessionFileHeader.js.map +1 -1
- package/dist/server/sessions/sessionImageDimensions.js +31 -0
- package/dist/server/sessions/sessionImageDimensions.js.map +1 -0
- package/dist/server/sessions/sessionMediaIndex.js +191 -0
- package/dist/server/sessions/sessionMediaIndex.js.map +1 -0
- package/dist/server/sessions/sessionMetadata.js +51 -0
- package/dist/server/sessions/sessionMetadata.js.map +1 -0
- package/dist/server/sessions/sessionModelScope.js +160 -0
- package/dist/server/sessions/sessionModelScope.js.map +1 -0
- package/dist/server/sessions/sessionNameGenerator.js +16 -35
- package/dist/server/sessions/sessionNameGenerator.js.map +1 -1
- package/dist/server/sessions/sessionNotificationStore.js +14 -11
- package/dist/server/sessions/sessionNotificationStore.js.map +1 -1
- package/dist/server/sessions/sessionReadAccess.js +41 -0
- package/dist/server/sessions/sessionReadAccess.js.map +1 -0
- package/dist/server/sessions/sessionRoutes.js +221 -78
- package/dist/server/sessions/sessionRoutes.js.map +1 -1
- package/dist/server/sessions/sessionSummaryScanner.js +62 -5
- package/dist/server/sessions/sessionSummaryScanner.js.map +1 -1
- package/dist/server/sessions/sessionTreeProjection.js +50 -49
- package/dist/server/sessions/sessionTreeProjection.js.map +1 -1
- package/dist/server/sessions/sessionUiEvents.js +22 -10
- package/dist/server/sessions/sessionUiEvents.js.map +1 -1
- package/dist/server/sessions/sessionUnreadStore.js +53 -3
- package/dist/server/sessions/sessionUnreadStore.js.map +1 -1
- package/dist/server/sessions/spawnSessionTool.js +14 -6
- package/dist/server/sessions/spawnSessionTool.js.map +1 -1
- package/dist/server/sessions/spawnSubsessionTool.js +40 -24
- package/dist/server/sessions/spawnSubsessionTool.js.map +1 -1
- package/dist/server/sessions/spawnTargetResolver.js +1 -1
- package/dist/server/sessions/subsessionCompletionDelivery.js +15 -0
- package/dist/server/sessions/subsessionCompletionDelivery.js.map +1 -0
- package/dist/server/sessions/subsessionCompletionInbox.js +134 -0
- package/dist/server/sessions/subsessionCompletionInbox.js.map +1 -0
- package/dist/server/sessions/subsessionProvenance.js +27 -0
- package/dist/server/sessions/subsessionProvenance.js.map +1 -0
- package/dist/server/sessions/transcriptBranchCache.js +81 -0
- package/dist/server/sessions/transcriptBranchCache.js.map +1 -0
- package/dist/server/sessions/transcriptMarkdown.js +48 -0
- package/dist/server/sessions/transcriptMarkdown.js.map +1 -0
- package/dist/server/sessions/transcriptMessages.js +57 -0
- package/dist/server/sessions/transcriptMessages.js.map +1 -0
- package/dist/server/startupLogger.js +13 -0
- package/dist/server/startupLogger.js.map +1 -0
- package/dist/server/startupUrls.js +27 -0
- package/dist/server/startupUrls.js.map +1 -0
- package/dist/server/status/machineStatusService.js +15 -7
- package/dist/server/status/machineStatusService.js.map +1 -1
- package/dist/server/storage/navigationPreferenceStore.js +138 -0
- package/dist/server/storage/navigationPreferenceStore.js.map +1 -0
- package/dist/server/storage/piPackageDismissalStore.js +78 -0
- package/dist/server/storage/piPackageDismissalStore.js.map +1 -0
- package/dist/server/terminals/{terminalService.js → managementCommandRunService.js} +98 -102
- package/dist/server/terminals/managementCommandRunService.js.map +1 -0
- package/dist/server/terminals/managementTerminalRoutes.js +91 -0
- package/dist/server/terminals/managementTerminalRoutes.js.map +1 -0
- package/dist/server/terminals/requiredTerminalService.js +103 -0
- package/dist/server/terminals/requiredTerminalService.js.map +1 -0
- package/dist/server/webSocketBridge.js +348 -0
- package/dist/server/webSocketBridge.js.map +1 -1
- package/dist/server/workbench/accessStateStore.js +33 -5
- package/dist/server/workbench/accessStateStore.js.map +1 -1
- package/dist/server/workbench/capabilitySearch.js +3 -2
- package/dist/server/workbench/capabilitySearch.js.map +1 -1
- package/dist/server/workbench/gatewayIntegration.js +40 -13
- package/dist/server/workbench/gatewayIntegration.js.map +1 -1
- package/dist/server/workbench/knowledgeSearch.js +100 -0
- package/dist/server/workbench/knowledgeSearch.js.map +1 -0
- package/dist/server/workbench/mcpClient.js +41 -8
- package/dist/server/workbench/mcpClient.js.map +1 -1
- package/dist/server/workbench/skillSync.js +11 -3
- package/dist/server/workbench/skillSync.js.map +1 -1
- package/dist/server/workbench/workbenchClient.js +130 -7
- package/dist/server/workbench/workbenchClient.js.map +1 -1
- package/dist/server/workbench/workbenchTools.js +196 -14
- package/dist/server/workbench/workbenchTools.js.map +1 -1
- package/dist/server/workingDirectory.js +3 -2
- package/dist/server/workingDirectory.js.map +1 -1
- package/dist/server/workspaceExplorerRoutes.js +53 -21
- package/dist/server/workspaceExplorerRoutes.js.map +1 -1
- package/dist/server/workspaces/fileContentService.js +31 -16
- package/dist/server/workspaces/fileContentService.js.map +1 -1
- package/dist/server/workspaces/fileOperationService.js +11 -9
- package/dist/server/workspaces/fileOperationService.js.map +1 -1
- package/dist/server/workspaces/filePreviewService.js +10 -6
- package/dist/server/workspaces/filePreviewService.js.map +1 -1
- package/dist/server/workspaces/fileSuggestions.js +77 -10
- package/dist/server/workspaces/fileSuggestions.js.map +1 -1
- package/dist/server/workspaces/fileTreeService.js +103 -15
- package/dist/server/workspaces/fileTreeService.js.map +1 -1
- package/dist/server/workspaces/normalProjectCwdResolver.js +35 -0
- package/dist/server/workspaces/normalProjectCwdResolver.js.map +1 -0
- package/dist/server/workspaces/pathAccessPolicy.js +24 -18
- package/dist/server/workspaces/pathAccessPolicy.js.map +1 -1
- package/dist/server/workspaces/pathSafety.js +6 -5
- package/dist/server/workspaces/pathSafety.js.map +1 -1
- package/dist/server/workspaces/projectPiWebConfig.js +95 -8
- package/dist/server/workspaces/projectPiWebConfig.js.map +1 -1
- package/dist/server/workspaces/projectWorkspaceCwds.js +0 -5
- package/dist/server/workspaces/projectWorkspaceCwds.js.map +1 -1
- package/dist/server/workspaces/sessionDaemonWorkspaceCatalog.js +37 -22
- package/dist/server/workspaces/sessionDaemonWorkspaceCatalog.js.map +1 -1
- package/dist/server/workspaces/workspaceCatalog.js +6 -4
- package/dist/server/workspaces/workspaceCatalog.js.map +1 -1
- package/dist/server/workspaces/workspaceChangeNotifier.js +12 -0
- package/dist/server/workspaces/workspaceChangeNotifier.js.map +1 -0
- package/dist/server/workspaces/workspaceDeletionRoutes.js +9 -70
- package/dist/server/workspaces/workspaceDeletionRoutes.js.map +1 -1
- package/dist/server/workspaces/workspaceNotificationCommand.js +64 -0
- package/dist/server/workspaces/workspaceNotificationCommand.js.map +1 -0
- package/dist/server/workspaces/workspaceProviderRegistry.js +128 -24
- package/dist/server/workspaces/workspaceProviderRegistry.js.map +1 -1
- package/dist/server/workspaces/workspaceRemovalService.js +41 -7
- package/dist/server/workspaces/workspaceRemovalService.js.map +1 -1
- package/dist/server/workspaces/workspaceRouteContext.js +1 -1
- package/dist/server/workspaces/workspaceRouteContext.js.map +1 -1
- package/dist/server/workspaces/workspaceRouteErrors.js +4 -2
- package/dist/server/workspaces/workspaceRouteErrors.js.map +1 -1
- package/dist/server/workspaces/workspaceUserError.js +18 -0
- package/dist/server/workspaces/workspaceUserError.js.map +1 -0
- package/dist/server-plugin-api.d.ts +349 -49
- package/dist/server-plugin-api.js +344 -2
- package/dist/server-plugin-api.js.map +1 -1
- package/dist/serverPluginRecovery.js +6 -1
- package/dist/serverPluginRecovery.js.map +1 -1
- package/dist/sessiond/activeAgentProfile.js +27 -2
- package/dist/sessiond/activeAgentProfile.js.map +1 -1
- package/dist/sessiond/config.js +4 -3
- package/dist/sessiond/config.js.map +1 -1
- package/dist/sessiond/sessionDaemonClient.js +75 -19
- package/dist/sessiond/sessionDaemonClient.js.map +1 -1
- package/dist/sessiond/sessionDaemonErrors.js +49 -0
- package/dist/sessiond/sessionDaemonErrors.js.map +1 -0
- package/dist/shared/activeAgentProfile.js +2 -34
- package/dist/shared/activeAgentProfile.js.map +1 -1
- package/dist/shared/activity.js +0 -3
- package/dist/shared/activity.js.map +1 -1
- package/dist/shared/apiTypes.js +10 -3
- package/dist/shared/apiTypes.js.map +1 -1
- package/dist/shared/capabilities.js +8 -0
- package/dist/shared/capabilities.js.map +1 -1
- package/dist/shared/federatedRoutes.js +77 -11
- package/dist/shared/federatedRoutes.js.map +1 -1
- package/dist/shared/i18n.js +41 -0
- package/dist/shared/i18n.js.map +1 -0
- package/dist/shared/machinePluginIds.js +30 -7
- package/dist/shared/machinePluginIds.js.map +1 -1
- package/dist/shared/machineStatus.js +46 -3
- package/dist/shared/machineStatus.js.map +1 -1
- package/dist/shared/navigationPreferences.js +6 -0
- package/dist/shared/navigationPreferences.js.map +1 -0
- package/dist/shared/piWebConfigParsing.js +118 -49
- package/dist/shared/piWebConfigParsing.js.map +1 -1
- package/dist/shared/piWebStatusParsing.js +33 -0
- package/dist/shared/piWebStatusParsing.js.map +1 -1
- package/dist/shared/pluginApiTypes.d.ts +87 -8
- package/dist/shared/pluginApiTypes.js +2 -0
- package/dist/shared/pluginApiTypes.js.map +1 -0
- package/dist/shared/pluginBackendProtocol.js +218 -2
- package/dist/shared/pluginBackendProtocol.js.map +1 -1
- package/dist/shared/pluginCatalogTypes.d.ts +49 -0
- package/dist/shared/pluginCatalogTypes.js +156 -0
- package/dist/shared/pluginCatalogTypes.js.map +1 -0
- package/dist/shared/pluginIds.js +10 -1
- package/dist/shared/pluginIds.js.map +1 -1
- package/dist/shared/requiredTerminalPlugin.js +6 -0
- package/dist/shared/requiredTerminalPlugin.js.map +1 -0
- package/dist/shared/serverNoticeContract.js +88 -0
- package/dist/shared/serverNoticeContract.js.map +1 -0
- package/dist/shared/sessionDefaults.js +42 -0
- package/dist/shared/sessionDefaults.js.map +1 -0
- package/dist/shared/sessionMedia.js +12 -0
- package/dist/shared/sessionMedia.js.map +1 -0
- package/dist/shared/streamingBehavior.js +8 -0
- package/dist/shared/streamingBehavior.js.map +1 -0
- package/dist/shared/themePreference.js +24 -0
- package/dist/shared/themePreference.js.map +1 -0
- package/dist/shared/thinkingLevels.js +17 -16
- package/dist/shared/thinkingLevels.js.map +1 -1
- package/dist/shared/workspaceFiles.js.map +1 -1
- package/dist/workspaceNotificationCli.js +95 -0
- package/dist/workspaceNotificationCli.js.map +1 -0
- package/docs/README.md +31 -0
- package/docs/config.md +344 -277
- package/docs/plugins.md +204 -930
- package/examples/session-bridge-plugin/README.md +20 -0
- package/examples/session-bridge-plugin/docs/usage.md +54 -0
- package/examples/session-bridge-plugin/package.json +26 -0
- package/examples/session-bridge-plugin/src/browser/index.ts +87 -0
- package/examples/session-bridge-plugin/src/browser/protocol.ts +24 -0
- package/examples/session-bridge-plugin/src/companion.ts +65 -0
- package/examples/session-bridge-plugin/src/reviewRun.ts +39 -0
- package/examples/session-bridge-plugin/src/server.ts +85 -0
- package/examples/session-bridge-plugin/src/store.ts +80 -0
- package/examples/session-bridge-plugin/tsconfig.json +21 -0
- package/examples/workspace-provider-plugin/README.md +39 -0
- package/examples/workspace-provider-plugin/package.json +25 -0
- package/examples/workspace-provider-plugin/src/browser/index.ts +69 -0
- package/examples/workspace-provider-plugin/src/server.ts +68 -0
- package/examples/workspace-provider-plugin/tsconfig.json +21 -0
- package/extensions/pi-web.ts +3 -1
- package/package.json +59 -36
- package/skills/README.md +28 -2
- package/skills/relay/SKILL.md +24 -89
- package/skills/relay-runner/SKILL.md +74 -0
- package/dist/client/assets/CodeViewer-DCl56K0Z.js +0 -4
- package/dist/client/assets/TerminalPanel-DCvoEjUF.js +0 -187
- package/dist/client/assets/index-CMvms5cF.js +0 -4325
- package/dist/client/assets/vendor-editor-core-vUi74DnD.js +0 -12
- package/dist/client/assets/vendor-editor-languages-DoaXUodB.js +0 -46
- package/dist/client/assets/vendor-editor-legacy-CYBnW6ZU.js +0 -1
- package/dist/client/assets/vendor-terminal-BrP-ENHg.css +0 -1
- package/dist/client/assets/vendor-terminal-D8k4UKM2.js +0 -35
- package/dist/pi-web-plugins/relays/package.json +0 -9
- package/dist/pi-web-plugins/relays/pi-web-plugin.js +0 -44
- package/dist/server/git/gitService.js +0 -290
- package/dist/server/git/gitService.js.map +0 -1
- package/dist/server/gitRoutes.js +0 -23
- package/dist/server/gitRoutes.js.map +0 -1
- package/dist/server/sessions/pendingAskStore.js +0 -278
- package/dist/server/sessions/pendingAskStore.js.map +0 -1
- package/dist/server/terminalProxyRoutes.js +0 -178
- package/dist/server/terminalProxyRoutes.js.map +0 -1
- package/dist/server/terminals/terminalRoutes.js +0 -164
- package/dist/server/terminals/terminalRoutes.js.map +0 -1
- package/dist/server/terminals/terminalService.js.map +0 -1
- package/dist/server/terminals/terminalSize.js +0 -17
- package/dist/server/terminals/terminalSize.js.map +0 -1
- package/dist/server/workspaces/gitWorktreeDiscovery.js +0 -43
- package/dist/server/workspaces/gitWorktreeDiscovery.js.map +0 -1
- package/dist/server/workspaces/workspaceService.js +0 -52
- package/dist/server/workspaces/workspaceService.js.map +0 -1
- /package/dist/{pi-web-plugins → pi-packages}/relays/vendor/README.md +0 -0
- /package/dist/{pi-web-plugins → pi-packages}/relays/vendor/marked.esm.js +0 -0
|
@@ -1,127 +1,129 @@
|
|
|
1
1
|
import { writeFileSync } from "node:fs";
|
|
2
|
+
import { createTranslator } from "../../shared/i18n.js";
|
|
2
3
|
import { DEFAULT_NORMAL_TOOL_AUDIT_MAX_ROWS, effectivePiWebConfig } from "../../config.js";
|
|
3
4
|
import { normalToolAuditDatabasePath, normalToolAuditStats, pruneNormalToolAudit, queryNormalToolAudit, vacuumNormalToolAudit, } from "./normalToolAuditStore.js";
|
|
4
5
|
export function runNormalToolAuditCommand(args, options = {}) {
|
|
6
|
+
const t = options.translator ?? createTranslator("en", {});
|
|
5
7
|
const [subcommand, ...optionArgs] = args;
|
|
6
8
|
if (subcommand === undefined || subcommand === "help" || subcommand === "--help" || subcommand === "-h") {
|
|
7
|
-
(options.stdout ?? console.log)(normalToolAuditHelp());
|
|
9
|
+
(options.stdout ?? console.log)(normalToolAuditHelp(t));
|
|
8
10
|
return;
|
|
9
11
|
}
|
|
10
|
-
const values = parseOptions(optionArgs);
|
|
12
|
+
const values = parseOptions(optionArgs, t);
|
|
11
13
|
const path = options.databasePath ?? normalToolAuditDatabasePath();
|
|
12
14
|
const now = options.now?.() ?? new Date();
|
|
13
15
|
const stdout = options.stdout ?? console.log;
|
|
14
16
|
if (subcommand === "list") {
|
|
15
|
-
requireAllowedOptions(values, ["since", "status", "session", "tool", "limit"]);
|
|
16
|
-
for (const row of queryNormalToolAudit(path, auditQuery(values, now)))
|
|
17
|
+
requireAllowedOptions(values, ["since", "status", "session", "tool", "limit"], t);
|
|
18
|
+
for (const row of queryNormalToolAudit(path, auditQuery(values, now, 100, t)))
|
|
17
19
|
stdout(JSON.stringify(row));
|
|
18
20
|
return;
|
|
19
21
|
}
|
|
20
22
|
if (subcommand === "stats") {
|
|
21
|
-
requireAllowedOptions(values, ["since"]);
|
|
22
|
-
stdout(JSON.stringify(normalToolAuditStats(path, optionalBoundary(values.get("since"), now)), null, 2));
|
|
23
|
+
requireAllowedOptions(values, ["since"], t);
|
|
24
|
+
stdout(JSON.stringify(normalToolAuditStats(path, optionalBoundary(values.get("since"), now, t)), null, 2));
|
|
23
25
|
return;
|
|
24
26
|
}
|
|
25
27
|
if (subcommand === "export") {
|
|
26
|
-
requireAllowedOptions(values, ["since", "status", "session", "tool", "limit", "format", "output"]);
|
|
28
|
+
requireAllowedOptions(values, ["since", "status", "session", "tool", "limit", "format", "output"], t);
|
|
27
29
|
const format = values.get("format") ?? "jsonl";
|
|
28
30
|
if (format !== "jsonl" && format !== "csv")
|
|
29
|
-
throw new Error("--format must be jsonl or csv");
|
|
30
|
-
const output = requiredOption(values, "output");
|
|
31
|
-
const rows = queryNormalToolAudit(path, auditQuery(values, now, 10_000));
|
|
31
|
+
throw new Error(t("audit.invalidFormat", "--format must be jsonl or csv"));
|
|
32
|
+
const output = requiredOption(values, "output", t);
|
|
33
|
+
const rows = queryNormalToolAudit(path, auditQuery(values, now, 10_000, t));
|
|
32
34
|
(options.writeOutput ?? ((target, content) => { writeFileSync(target, content, "utf8"); }))(output, format === "csv" ? rowsCsv(rows) : rowsJsonl(rows));
|
|
33
|
-
stdout(
|
|
35
|
+
stdout(t("audit.exported", "Exported {count} audit rows to {path}", { count: rows.length, path: output }));
|
|
34
36
|
return;
|
|
35
37
|
}
|
|
36
38
|
if (subcommand === "prune") {
|
|
37
|
-
requireAllowedOptions(values, ["before"]);
|
|
38
|
-
const before = parseBoundary(requiredOption(values, "before"), now);
|
|
39
|
+
requireAllowedOptions(values, ["before"], t);
|
|
40
|
+
const before = parseBoundary(requiredOption(values, "before", t), now, t);
|
|
39
41
|
const maxRows = options.maxRows ?? effectivePiWebConfig().config.auditLog?.normalMode?.maxRows ?? DEFAULT_NORMAL_TOOL_AUDIT_MAX_ROWS;
|
|
40
|
-
stdout(
|
|
42
|
+
stdout(t("audit.pruned", "Deleted {count} audit rows", { count: pruneNormalToolAudit(path, before, maxRows) }));
|
|
41
43
|
return;
|
|
42
44
|
}
|
|
43
45
|
if (subcommand === "vacuum") {
|
|
44
|
-
requireAllowedOptions(values, []);
|
|
46
|
+
requireAllowedOptions(values, [], t);
|
|
45
47
|
vacuumNormalToolAudit(path);
|
|
46
|
-
stdout("Audit database vacuum completed");
|
|
48
|
+
stdout(t("audit.vacuumed", "Audit database vacuum completed"));
|
|
47
49
|
return;
|
|
48
50
|
}
|
|
49
|
-
throw new Error(
|
|
51
|
+
throw new Error(t("audit.unknownCommand", "Unknown audit command: {command}", { command: subcommand }));
|
|
50
52
|
}
|
|
51
|
-
export function normalToolAuditHelp() {
|
|
52
|
-
return `PI WEB ordinary-mode tool audit
|
|
53
|
+
export function normalToolAuditHelp(t = createTranslator("en", {})) {
|
|
54
|
+
return t("audit.help", `PI WEB ordinary-mode tool audit
|
|
53
55
|
|
|
54
56
|
Usage:
|
|
55
57
|
pi-web audit list [--since 24h] [--status failed] [--session ID] [--tool NAME] [--limit 100]
|
|
56
58
|
pi-web audit stats [--since 30d]
|
|
57
59
|
pi-web audit export --output FILE [--format jsonl|csv] [--since 30d] [--status STATUS] [--session ID] [--tool NAME] [--limit 10000]
|
|
58
60
|
pi-web audit prune --before DATE
|
|
59
|
-
pi-web audit vacuum
|
|
61
|
+
pi-web audit vacuum`);
|
|
60
62
|
}
|
|
61
|
-
function parseOptions(args) {
|
|
63
|
+
function parseOptions(args, t) {
|
|
62
64
|
const values = new Map();
|
|
63
65
|
for (let index = 0; index < args.length; index += 1) {
|
|
64
66
|
const argument = args[index];
|
|
65
67
|
if (argument === undefined || !argument.startsWith("--") || argument.length === 2)
|
|
66
|
-
throw new Error(
|
|
68
|
+
throw new Error(t("audit.unexpectedArgument", "Unexpected audit argument: {argument}", { argument: argument ?? "" }));
|
|
67
69
|
const name = argument.slice(2);
|
|
68
70
|
if (values.has(name))
|
|
69
|
-
throw new Error(
|
|
71
|
+
throw new Error(t("audit.duplicateOption", "Audit option --{name} was provided more than once", { name }));
|
|
70
72
|
const value = args[index + 1];
|
|
71
73
|
if (value === undefined || value.startsWith("--"))
|
|
72
|
-
throw new Error(
|
|
74
|
+
throw new Error(t("audit.optionValueRequired", "Audit option --{name} requires a value", { name }));
|
|
73
75
|
values.set(name, value);
|
|
74
76
|
index += 1;
|
|
75
77
|
}
|
|
76
78
|
return values;
|
|
77
79
|
}
|
|
78
|
-
function requireAllowedOptions(values, allowed) {
|
|
80
|
+
function requireAllowedOptions(values, allowed, t) {
|
|
79
81
|
const allowedSet = new Set(allowed);
|
|
80
82
|
const unknown = [...values.keys()].find((key) => !allowedSet.has(key));
|
|
81
83
|
if (unknown !== undefined)
|
|
82
|
-
throw new Error(
|
|
84
|
+
throw new Error(t("audit.unsupportedOption", "Audit command does not support --{name}", { name: unknown }));
|
|
83
85
|
}
|
|
84
|
-
function auditQuery(values, now, defaultLimit
|
|
86
|
+
function auditQuery(values, now, defaultLimit, t) {
|
|
85
87
|
const status = values.get("status");
|
|
86
88
|
return {
|
|
87
|
-
...(values.get("since") === undefined ? {} : { since: parseBoundary(requiredOption(values, "since"), now) }),
|
|
88
|
-
...(status === undefined ? {} : { status: parseStatus(status) }),
|
|
89
|
-
...(values.get("session") === undefined ? {} : { sessionId: requiredOption(values, "session") }),
|
|
90
|
-
...(values.get("tool") === undefined ? {} : { toolName: requiredOption(values, "tool") }),
|
|
91
|
-
limit: values.get("limit") === undefined ? defaultLimit : positiveInteger(requiredOption(values, "limit"), "--limit"),
|
|
89
|
+
...(values.get("since") === undefined ? {} : { since: parseBoundary(requiredOption(values, "since", t), now, t) }),
|
|
90
|
+
...(status === undefined ? {} : { status: parseStatus(status, t) }),
|
|
91
|
+
...(values.get("session") === undefined ? {} : { sessionId: requiredOption(values, "session", t) }),
|
|
92
|
+
...(values.get("tool") === undefined ? {} : { toolName: requiredOption(values, "tool", t) }),
|
|
93
|
+
limit: values.get("limit") === undefined ? defaultLimit : positiveInteger(requiredOption(values, "limit", t), "--limit", t),
|
|
92
94
|
};
|
|
93
95
|
}
|
|
94
|
-
function optionalBoundary(value, now) {
|
|
95
|
-
return value === undefined ? undefined : parseBoundary(value, now);
|
|
96
|
+
function optionalBoundary(value, now, t) {
|
|
97
|
+
return value === undefined ? undefined : parseBoundary(value, now, t);
|
|
96
98
|
}
|
|
97
|
-
function parseBoundary(value, now) {
|
|
99
|
+
function parseBoundary(value, now, t) {
|
|
98
100
|
const duration = /^(\d+)(m|h|d)$/u.exec(value);
|
|
99
101
|
if (duration !== null) {
|
|
100
|
-
const amount = positiveInteger(duration[1] ?? "", "time range");
|
|
102
|
+
const amount = positiveInteger(duration[1] ?? "", t("audit.timeRange", "time range"), t);
|
|
101
103
|
const unit = duration[2];
|
|
102
104
|
const multiplier = unit === "m" ? 60_000 : unit === "h" ? 3_600_000 : 86_400_000;
|
|
103
105
|
return new Date(now.getTime() - amount * multiplier);
|
|
104
106
|
}
|
|
105
107
|
const parsed = new Date(value);
|
|
106
108
|
if (Number.isNaN(parsed.getTime()))
|
|
107
|
-
throw new Error(
|
|
109
|
+
throw new Error(t("audit.invalidTime", "Invalid audit time boundary: {value}", { value }));
|
|
108
110
|
return parsed;
|
|
109
111
|
}
|
|
110
|
-
function parseStatus(value) {
|
|
112
|
+
function parseStatus(value, t) {
|
|
111
113
|
if (value === "started" || value === "completed" || value === "failed" || value === "interrupted")
|
|
112
114
|
return value;
|
|
113
|
-
throw new Error("--status must be started, completed, failed, or interrupted");
|
|
115
|
+
throw new Error(t("audit.invalidStatus", "--status must be started, completed, failed, or interrupted"));
|
|
114
116
|
}
|
|
115
|
-
function positiveInteger(value, label) {
|
|
117
|
+
function positiveInteger(value, label, t) {
|
|
116
118
|
const number = Number(value);
|
|
117
119
|
if (!Number.isSafeInteger(number) || number < 1)
|
|
118
|
-
throw new Error(
|
|
120
|
+
throw new Error(t("audit.positiveInteger", "{label} must be a positive integer", { label }));
|
|
119
121
|
return number;
|
|
120
122
|
}
|
|
121
|
-
function requiredOption(values, name) {
|
|
123
|
+
function requiredOption(values, name, t) {
|
|
122
124
|
const value = values.get(name);
|
|
123
125
|
if (value === undefined || value === "")
|
|
124
|
-
throw new Error(
|
|
126
|
+
throw new Error(t("audit.optionRequired", "Audit option --{name} is required", { name }));
|
|
125
127
|
return value;
|
|
126
128
|
}
|
|
127
129
|
function rowsJsonl(rows) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"normalToolAuditCli.js","sourceRoot":"","sources":["../../../src/server/audit/normalToolAuditCli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,EAAE,kCAAkC,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAC3F,OAAO,EACL,2BAA2B,EAC3B,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,EACpB,qBAAqB,GAItB,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"normalToolAuditCli.js","sourceRoot":"","sources":["../../../src/server/audit/normalToolAuditCli.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,34 +1,51 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
* blocks are copied.
|
|
2
|
+
* Strip provider-only thinking data and optionally reference images at the
|
|
3
|
+
* browser transport boundary. Runtime messages stay unchanged: only affected
|
|
4
|
+
* messages and content blocks are copied.
|
|
5
5
|
*/
|
|
6
|
-
export function projectBrowserMessage(message) {
|
|
6
|
+
export function projectBrowserMessage(message, images) {
|
|
7
7
|
if (!isRecord(message))
|
|
8
8
|
return message;
|
|
9
9
|
const originalContent = message["content"];
|
|
10
|
-
|
|
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
|
-
});
|
|
10
|
+
const content = projectBrowserContent(originalContent, images);
|
|
19
11
|
return content === originalContent ? message : { ...message, content };
|
|
20
12
|
}
|
|
21
|
-
|
|
22
|
-
if (
|
|
23
|
-
return mapChanged(
|
|
24
|
-
|
|
13
|
+
function projectBrowserContent(content, images) {
|
|
14
|
+
if (isUnknownArray(content))
|
|
15
|
+
return mapChanged(content, (part) => projectBrowserContent(part, images));
|
|
16
|
+
if (!isRecord(content))
|
|
17
|
+
return content;
|
|
18
|
+
if (content["type"] === "image" && images !== undefined)
|
|
19
|
+
return images(content) ?? content;
|
|
20
|
+
if (content["type"] !== "thinking" || !Object.hasOwn(content, "thinkingSignature"))
|
|
21
|
+
return content;
|
|
22
|
+
const projected = { ...content };
|
|
23
|
+
delete projected["thinkingSignature"];
|
|
24
|
+
return projected;
|
|
25
|
+
}
|
|
26
|
+
export function projectBrowserMessageResponse(response, images) {
|
|
27
|
+
const messages = mapChanged(response.messages, (message) => projectBrowserMessage(message, images));
|
|
25
28
|
return messages === response.messages ? response : { ...response, messages };
|
|
26
29
|
}
|
|
27
|
-
export function
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
30
|
+
export function projectBrowserStreamSnapshot(snapshot, images) {
|
|
31
|
+
const partial = projectBrowserMessage(snapshot.partial, images);
|
|
32
|
+
return partial === snapshot.partial ? snapshot : { ...snapshot, partial };
|
|
33
|
+
}
|
|
34
|
+
export function projectBrowserTranscriptSnapshot(snapshot, images) {
|
|
35
|
+
const stream = projectBrowserStreamSnapshot(snapshot, images);
|
|
36
|
+
const page = projectBrowserMessageResponse(snapshot.page, images);
|
|
37
|
+
return page === snapshot.page ? stream : { ...stream, page };
|
|
38
|
+
}
|
|
39
|
+
export function projectBrowserSessionEvent(event, images) {
|
|
40
|
+
if ((event.type === "assistant.start" || event.type === "message.end" || event.type === "message.append") && event.message !== undefined) {
|
|
41
|
+
const message = projectBrowserMessage(event.message, images);
|
|
42
|
+
return message === event.message ? event : { ...event, message };
|
|
43
|
+
}
|
|
44
|
+
if (event.type === "tool.end" || event.type === "tool.update") {
|
|
45
|
+
const content = projectBrowserContent(event.content, images);
|
|
46
|
+
return content === event.content ? event : { ...event, content };
|
|
47
|
+
}
|
|
48
|
+
return event;
|
|
32
49
|
}
|
|
33
50
|
function mapChanged(values, project) {
|
|
34
51
|
let projectedValues;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browserMessageProjection.js","sourceRoot":"","sources":["../../src/server/browserMessageProjection.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"browserMessageProjection.js","sourceRoot":"","sources":["../../src/server/browserMessageProjection.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,16 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { UserFacingError, createTranslator, userFacingErrorMessage } from "../shared/i18n.js";
|
|
2
|
+
import { agentDirEnvSource, hasAgentDirEnvOverride, hasAgentSessionDirEnvOverride, loadPiWebConfig, parseAgentConfig, parseAttachmentsConfig, parseUploadsConfig, resolveEffectivePiWebConfig, savePiWebConfig } from "../config.js";
|
|
3
|
+
import { requireDefaultThemePreference } from "../shared/themePreference.js";
|
|
4
|
+
import { requireDefaultStreamingBehavior } from "../shared/streamingBehavior.js";
|
|
2
5
|
import { isPiWebPluginId } from "../shared/pluginIds.js";
|
|
3
6
|
import { parsePiWebConfigRequest } from "../shared/piWebConfigParsing.js";
|
|
4
7
|
export const SELECTED_MACHINE_CONFIG_KEYS = [
|
|
5
8
|
"plugins",
|
|
6
9
|
"pathAccess",
|
|
7
10
|
"uploads",
|
|
11
|
+
"attachments",
|
|
8
12
|
"maxUploadBytes",
|
|
13
|
+
"sessionNaming",
|
|
9
14
|
"spawnSessions",
|
|
10
15
|
"subsessions",
|
|
11
16
|
"askUser",
|
|
@@ -33,13 +38,13 @@ export function currentPiWebConfigResponse(options = {}) {
|
|
|
33
38
|
envOverrides: piWebConfigEnvOverrides(env),
|
|
34
39
|
};
|
|
35
40
|
}
|
|
36
|
-
export function registerConfigRoutes(app, service = createFilePiWebConfigService()) {
|
|
41
|
+
export function registerConfigRoutes(app, service = createFilePiWebConfigService(), translate = createTranslator("en", {})) {
|
|
37
42
|
app.get("/api/config", async (_request, reply) => {
|
|
38
43
|
try {
|
|
39
44
|
return await service.read();
|
|
40
45
|
}
|
|
41
46
|
catch (error) {
|
|
42
|
-
return reply.code(500).send({ error:
|
|
47
|
+
return reply.code(500).send({ error: userFacingErrorMessage(error, translate) });
|
|
43
48
|
}
|
|
44
49
|
});
|
|
45
50
|
app.put("/api/config", async (request, reply) => {
|
|
@@ -48,17 +53,17 @@ export function registerConfigRoutes(app, service = createFilePiWebConfigService
|
|
|
48
53
|
}
|
|
49
54
|
catch (error) {
|
|
50
55
|
const status = isConfigValidationError(error) ? 400 : 500;
|
|
51
|
-
return reply.code(status).send({ error:
|
|
56
|
+
return reply.code(status).send({ error: userFacingErrorMessage(error, translate) });
|
|
52
57
|
}
|
|
53
58
|
});
|
|
54
59
|
}
|
|
55
|
-
export function registerLocalMachineConfigRoutes(app, service = createFilePiWebConfigService()) {
|
|
60
|
+
export function registerLocalMachineConfigRoutes(app, service = createFilePiWebConfigService(), translate = createTranslator("en", {})) {
|
|
56
61
|
app.get("/api/machines/local/config", async (_request, reply) => {
|
|
57
62
|
try {
|
|
58
63
|
return selectedMachineConfigResponse(await service.read());
|
|
59
64
|
}
|
|
60
65
|
catch (error) {
|
|
61
|
-
return reply.code(500).send({ error:
|
|
66
|
+
return reply.code(500).send({ error: userFacingErrorMessage(error, translate) });
|
|
62
67
|
}
|
|
63
68
|
});
|
|
64
69
|
app.put("/api/machines/local/config", async (request, reply) => {
|
|
@@ -69,21 +74,29 @@ export function registerLocalMachineConfigRoutes(app, service = createFilePiWebC
|
|
|
69
74
|
}
|
|
70
75
|
catch (error) {
|
|
71
76
|
const status = isConfigValidationError(error) ? 400 : 500;
|
|
72
|
-
return reply.code(status).send({ error:
|
|
77
|
+
return reply.code(status).send({ error: userFacingErrorMessage(error, translate) });
|
|
73
78
|
}
|
|
74
79
|
});
|
|
75
80
|
}
|
|
76
81
|
export function parseSelectedMachineConfigRequest(value, agentPathHost = "current") {
|
|
77
82
|
if (!isRecord(value))
|
|
78
|
-
throw new
|
|
83
|
+
throw new UserFacingError("configError.pi.web.selected.machine.config.update.must.include.a.config.object.14b6bb", "PI WEB selected-machine config update must include a config object");
|
|
79
84
|
for (const key of Object.keys(value)) {
|
|
80
85
|
if (!SELECTED_MACHINE_CONFIG_KEY_SET.has(key))
|
|
81
|
-
throw new
|
|
86
|
+
throw new UserFacingError("configError.pi.web.selected.machine.config.key.is.not.allowed.field.f05005", "PI WEB selected-machine config key is not allowed: {value1}", { value1: key });
|
|
82
87
|
}
|
|
83
88
|
try {
|
|
84
89
|
return pickSelectedMachineConfig(parseConfigRequest(value, agentPathHost));
|
|
85
90
|
}
|
|
86
91
|
catch (error) {
|
|
92
|
+
if (error instanceof UserFacingError) {
|
|
93
|
+
const fallback = error.fallback.startsWith("PI WEB config ")
|
|
94
|
+
? `PI WEB selected-machine config ${error.fallback.slice("PI WEB config ".length)}`
|
|
95
|
+
: `PI WEB selected-machine config ${error.fallback}`;
|
|
96
|
+
const wrapped = new UserFacingError(`${error.messageKey}.selectedMachine`, fallback, error.parameters);
|
|
97
|
+
Object.defineProperty(wrapped, "cause", { value: error, configurable: true, writable: true });
|
|
98
|
+
throw wrapped;
|
|
99
|
+
}
|
|
87
100
|
throw new Error(selectedMachineConfigErrorMessage(error), { cause: error });
|
|
88
101
|
}
|
|
89
102
|
}
|
|
@@ -109,7 +122,7 @@ export function parsePiWebConfigResponseBody(value, source = "PI WEB config resp
|
|
|
109
122
|
}
|
|
110
123
|
function parseConfigRequest(value, agentPathHost = "current") {
|
|
111
124
|
if (!isRecord(value))
|
|
112
|
-
throw new
|
|
125
|
+
throw new UserFacingError("configError.pi.web.config.update.must.include.a.config.object.ec8277", "PI WEB config update must include a config object");
|
|
113
126
|
const config = parsePiWebConfigRequest(value);
|
|
114
127
|
const host = value["host"];
|
|
115
128
|
const port = value["port"];
|
|
@@ -118,6 +131,7 @@ function parseConfigRequest(value, agentPathHost = "current") {
|
|
|
118
131
|
const plugins = value["plugins"];
|
|
119
132
|
const pathAccess = value["pathAccess"];
|
|
120
133
|
const uploads = value["uploads"];
|
|
134
|
+
const attachments = value["attachments"];
|
|
121
135
|
const maxUploadBytes = value["maxUploadBytes"];
|
|
122
136
|
const spawnSessions = value["spawnSessions"];
|
|
123
137
|
const subsessions = value["subsessions"];
|
|
@@ -125,39 +139,45 @@ function parseConfigRequest(value, agentPathHost = "current") {
|
|
|
125
139
|
const agent = value["agent"];
|
|
126
140
|
if (host !== undefined) {
|
|
127
141
|
if (typeof host !== "string")
|
|
128
|
-
throw new
|
|
142
|
+
throw new UserFacingError("configError.pi.web.config.host.must.be.a.string.c8d259", "PI WEB config host must be a string");
|
|
129
143
|
config.host = host;
|
|
130
144
|
}
|
|
131
145
|
if (port !== undefined) {
|
|
132
146
|
if (typeof port !== "number")
|
|
133
|
-
throw new
|
|
147
|
+
throw new UserFacingError("configError.pi.web.config.port.must.be.a.number.8ac8cd", "PI WEB config port must be a number");
|
|
134
148
|
config.port = port;
|
|
135
149
|
}
|
|
136
150
|
if (allowedHosts !== undefined)
|
|
137
151
|
config.allowedHosts = parseAllowedHostsRequest(allowedHosts);
|
|
138
152
|
if (shortcuts !== undefined)
|
|
139
153
|
config.shortcuts = parseShortcutsRequest(shortcuts);
|
|
154
|
+
if (value["defaultTheme"] !== undefined)
|
|
155
|
+
config.defaultTheme = requireDefaultThemePreference(value["defaultTheme"], "request");
|
|
156
|
+
if (value["defaultStreamingBehavior"] !== undefined)
|
|
157
|
+
config.defaultStreamingBehavior = requireDefaultStreamingBehavior(value["defaultStreamingBehavior"], "request");
|
|
140
158
|
if (plugins !== undefined)
|
|
141
159
|
config.plugins = parsePluginsRequest(plugins);
|
|
142
160
|
if (pathAccess !== undefined)
|
|
143
161
|
config.pathAccess = parsePathAccessRequest(pathAccess);
|
|
144
162
|
if (uploads !== undefined)
|
|
145
163
|
config.uploads = parseUploadsConfig(uploads, "request");
|
|
164
|
+
if (attachments !== undefined)
|
|
165
|
+
config.attachments = parseAttachmentsConfig(attachments, "request");
|
|
146
166
|
if (maxUploadBytes !== undefined)
|
|
147
167
|
config.maxUploadBytes = parseMaxUploadBytesRequest(maxUploadBytes);
|
|
148
168
|
if (spawnSessions !== undefined) {
|
|
149
169
|
if (typeof spawnSessions !== "boolean")
|
|
150
|
-
throw new
|
|
170
|
+
throw new UserFacingError("configError.pi.web.config.spawnsessions.must.be.a.boolean.344a04", "PI WEB config spawnSessions must be a boolean");
|
|
151
171
|
config.spawnSessions = spawnSessions;
|
|
152
172
|
}
|
|
153
173
|
if (subsessions !== undefined) {
|
|
154
174
|
if (typeof subsessions !== "boolean")
|
|
155
|
-
throw new
|
|
175
|
+
throw new UserFacingError("configError.pi.web.config.subsessions.must.be.a.boolean.2777c0", "PI WEB config subsessions must be a boolean");
|
|
156
176
|
config.subsessions = subsessions;
|
|
157
177
|
}
|
|
158
178
|
if (askUser !== undefined) {
|
|
159
179
|
if (typeof askUser !== "boolean")
|
|
160
|
-
throw new
|
|
180
|
+
throw new UserFacingError("configError.pi.web.config.askuser.must.be.a.boolean.be8bd4", "PI WEB config askUser must be a boolean");
|
|
161
181
|
config.askUser = askUser;
|
|
162
182
|
}
|
|
163
183
|
if (agent !== undefined)
|
|
@@ -169,7 +189,9 @@ function pickSelectedMachineConfig(config) {
|
|
|
169
189
|
...(config.plugins !== undefined ? { plugins: config.plugins } : {}),
|
|
170
190
|
...(config.pathAccess !== undefined ? { pathAccess: config.pathAccess } : {}),
|
|
171
191
|
...(config.uploads !== undefined ? { uploads: config.uploads } : {}),
|
|
192
|
+
...(config.attachments !== undefined ? { attachments: config.attachments } : {}),
|
|
172
193
|
...(config.maxUploadBytes !== undefined ? { maxUploadBytes: config.maxUploadBytes } : {}),
|
|
194
|
+
...(config.sessionNaming !== undefined ? { sessionNaming: config.sessionNaming } : {}),
|
|
173
195
|
...(config.spawnSessions !== undefined ? { spawnSessions: config.spawnSessions } : {}),
|
|
174
196
|
...(config.subsessions !== undefined ? { subsessions: config.subsessions } : {}),
|
|
175
197
|
...(config.askUser !== undefined ? { askUser: config.askUser } : {}),
|
|
@@ -186,22 +208,22 @@ function parseAllowedHostsRequest(value) {
|
|
|
186
208
|
if (value === true)
|
|
187
209
|
return true;
|
|
188
210
|
if (!Array.isArray(value) || !value.every((item) => typeof item === "string")) {
|
|
189
|
-
throw new
|
|
211
|
+
throw new UserFacingError("configError.pi.web.config.allowedhosts.must.be.true.or.an.array.of.strings.4d8d83", "PI WEB config allowedHosts must be true or an array of strings");
|
|
190
212
|
}
|
|
191
213
|
return value;
|
|
192
214
|
}
|
|
193
215
|
function parseShortcutsRequest(value) {
|
|
194
216
|
if (!isRecord(value))
|
|
195
|
-
throw new
|
|
217
|
+
throw new UserFacingError("configError.pi.web.config.shortcuts.must.be.an.object.146099", "PI WEB config shortcuts must be an object");
|
|
196
218
|
return Object.fromEntries(Object.entries(value).map(([actionId, shortcut]) => {
|
|
197
219
|
if (shortcut !== null && (typeof shortcut !== "string" || shortcut === ""))
|
|
198
|
-
throw new
|
|
220
|
+
throw new UserFacingError("configError.pi.web.config.shortcut.values.must.be.non.empty.strings.or.null.2025e9", "PI WEB config shortcut values must be non-empty strings or null");
|
|
199
221
|
return [actionId, shortcut];
|
|
200
222
|
}));
|
|
201
223
|
}
|
|
202
224
|
function parsePathAccessRequest(value) {
|
|
203
225
|
if (!isRecord(value))
|
|
204
|
-
throw new
|
|
226
|
+
throw new UserFacingError("configError.pi.web.config.pathaccess.must.be.an.object.d7d8d2", "PI WEB config pathAccess must be an object");
|
|
205
227
|
const allowedPaths = value["allowedPaths"];
|
|
206
228
|
return {
|
|
207
229
|
...(allowedPaths === undefined ? {} : { allowedPaths: parseAllowedPathsRequest(allowedPaths) }),
|
|
@@ -209,7 +231,7 @@ function parsePathAccessRequest(value) {
|
|
|
209
231
|
}
|
|
210
232
|
function parseAllowedPathsRequest(value) {
|
|
211
233
|
if (!isNonEmptyStringArray(value)) {
|
|
212
|
-
throw new
|
|
234
|
+
throw new UserFacingError("configError.pi.web.config.pathaccess.allowedpaths.must.be.an.array.of.non.empty.strings.5e0fd8", "PI WEB config pathAccess.allowedPaths must be an array of non-empty strings");
|
|
213
235
|
}
|
|
214
236
|
return value;
|
|
215
237
|
}
|
|
@@ -218,7 +240,7 @@ function isNonEmptyStringArray(value) {
|
|
|
218
240
|
}
|
|
219
241
|
function parseMaxUploadBytesRequest(value) {
|
|
220
242
|
if (typeof value !== "number" || !Number.isInteger(value) || value < 1)
|
|
221
|
-
throw new
|
|
243
|
+
throw new UserFacingError("configError.pi.web.config.maxuploadbytes.must.be.a.positive.integer.08d269", "PI WEB config maxUploadBytes must be a positive integer");
|
|
222
244
|
return value;
|
|
223
245
|
}
|
|
224
246
|
function parseAgentRequest(value, pathHost) {
|
|
@@ -226,18 +248,18 @@ function parseAgentRequest(value, pathHost) {
|
|
|
226
248
|
}
|
|
227
249
|
function parsePluginsRequest(value) {
|
|
228
250
|
if (!isRecord(value) || Array.isArray(value))
|
|
229
|
-
throw new
|
|
251
|
+
throw new UserFacingError("configError.pi.web.config.plugins.must.be.an.object.2d870f", "PI WEB config plugins must be an object");
|
|
230
252
|
return Object.fromEntries(Object.entries(value).map(([pluginId, config]) => {
|
|
231
253
|
if (!isPiWebPluginId(pluginId))
|
|
232
|
-
throw new
|
|
254
|
+
throw new UserFacingError("configError.pi.web.config.plugin.ids.are.invalid.674ddc", "PI WEB config plugin ids are invalid");
|
|
233
255
|
if (!isRecord(config) || Array.isArray(config))
|
|
234
|
-
throw new
|
|
256
|
+
throw new UserFacingError("configError.pi.web.config.plugin.entries.must.be.objects.45e442", "PI WEB config plugin entries must be objects");
|
|
235
257
|
const enabled = config["enabled"];
|
|
236
258
|
if (enabled !== undefined && typeof enabled !== "boolean")
|
|
237
|
-
throw new
|
|
259
|
+
throw new UserFacingError("configError.pi.web.config.plugin.enabled.values.must.be.booleans.ab8416", "PI WEB config plugin enabled values must be booleans");
|
|
238
260
|
const settings = config["settings"];
|
|
239
261
|
if (settings !== undefined && (!isRecord(settings) || Array.isArray(settings)))
|
|
240
|
-
throw new
|
|
262
|
+
throw new UserFacingError("configError.pi.web.config.plugin.settings.must.be.objects.efc582", "PI WEB config plugin settings must be objects");
|
|
241
263
|
return [pluginId, config];
|
|
242
264
|
}));
|
|
243
265
|
}
|
|
@@ -249,8 +271,7 @@ function parsePiWebConfigEnvOverridesResponse(value, source) {
|
|
|
249
271
|
allowedHosts: requireResponseBoolean(record, "allowedHosts", source),
|
|
250
272
|
spawnSessions: requireResponseBoolean(record, "spawnSessions", source),
|
|
251
273
|
subsessions: requireResponseBoolean(record, "subsessions", source),
|
|
252
|
-
|
|
253
|
-
askUser: optionalResponseBoolean(record, "askUser", source) ?? false,
|
|
274
|
+
askUser: requireResponseBoolean(record, "askUser", source),
|
|
254
275
|
agentCommand: optionalResponseBoolean(record, "agentCommand", source) ?? false,
|
|
255
276
|
agentDir: optionalResponseBoolean(record, "agentDir", source) ?? false,
|
|
256
277
|
...optionalAgentDirSource(record, source),
|
|
@@ -259,19 +280,19 @@ function parsePiWebConfigEnvOverridesResponse(value, source) {
|
|
|
259
280
|
}
|
|
260
281
|
function requireResponseRecord(value, source) {
|
|
261
282
|
if (!isRecord(value))
|
|
262
|
-
throw new
|
|
283
|
+
throw new UserFacingError("configError.field.must.be.an.object.bab512", "{value1} must be an object", { value1: source });
|
|
263
284
|
return value;
|
|
264
285
|
}
|
|
265
286
|
function requireResponseString(record, key, source) {
|
|
266
287
|
const value = record[key];
|
|
267
288
|
if (typeof value !== "string")
|
|
268
|
-
throw new
|
|
289
|
+
throw new UserFacingError("configError.field.field.must.be.a.string.field.6e7ac7", "{value1} field must be a string: {value2}", { value1: source, value2: key });
|
|
269
290
|
return value;
|
|
270
291
|
}
|
|
271
292
|
function requireResponseBoolean(record, key, source) {
|
|
272
293
|
const value = record[key];
|
|
273
294
|
if (typeof value !== "boolean")
|
|
274
|
-
throw new
|
|
295
|
+
throw new UserFacingError("configError.field.field.must.be.a.boolean.field.be00df", "{value1} field must be a boolean: {value2}", { value1: source, value2: key });
|
|
275
296
|
return value;
|
|
276
297
|
}
|
|
277
298
|
function optionalResponseBoolean(record, key, source) {
|
|
@@ -279,7 +300,7 @@ function optionalResponseBoolean(record, key, source) {
|
|
|
279
300
|
if (value === undefined)
|
|
280
301
|
return undefined;
|
|
281
302
|
if (typeof value !== "boolean")
|
|
282
|
-
throw new
|
|
303
|
+
throw new UserFacingError("configError.field.field.must.be.a.boolean.field.be00df", "{value1} field must be a boolean: {value2}", { value1: source, value2: key });
|
|
283
304
|
return value;
|
|
284
305
|
}
|
|
285
306
|
function optionalAgentDirSource(record, source) {
|
|
@@ -287,7 +308,7 @@ function optionalAgentDirSource(record, source) {
|
|
|
287
308
|
if (value === undefined)
|
|
288
309
|
return {};
|
|
289
310
|
if (value !== "pi-web" && value !== "pi-compatibility")
|
|
290
|
-
throw new
|
|
311
|
+
throw new UserFacingError("configError.field.field.must.be.a.valid.agent.directory.source.agentdirsource.934d85", "{value1} field must be a valid agent directory source: agentDirSource", { value1: source });
|
|
291
312
|
return { agentDirSource: value };
|
|
292
313
|
}
|
|
293
314
|
function piWebConfigEnvOverrides(env) {
|