@chainingintention/pi-web-cn 2.0.0 → 2.202610.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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-BXSziMEg.js +4921 -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-cdtUOfOW.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 +155 -77
- 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
package/dist/plugin-api.d.ts
CHANGED
|
@@ -1,33 +1,247 @@
|
|
|
1
|
-
import type { TemplateResult } from "lit";
|
|
2
|
-
import type {
|
|
3
|
-
|
|
1
|
+
import type { ReactiveControllerHost, TemplateResult } from "lit";
|
|
2
|
+
import type { LocalizationContribution, Translator } from "./shared/pluginApiTypes.js";
|
|
3
|
+
import type { DeleteWorkspaceFileResponse, FileContentResponse, FileTreeResponse, JsonValue, MachineKind, PluginBackend, PluginPeer, MoveWorkspaceFileOptions, MoveWorkspaceFileResponse, PiWebStatusResponse, PluginCapability, PluginCapabilityProvision, TerminalCommandRunHandle, WorkspaceProviderMetadata, WorkspaceRemovalPresentation, WriteWorkspaceFileOptions, WriteWorkspaceFileResponse } from "./shared/pluginApiTypes.js";
|
|
4
|
+
export type { LocalizationContribution, TranslationMessages, TranslationParameters, Translator, FileContentMediaType, FileContentResponse, FileTreeEntry, FileTreeResponse, JsonObject, JsonPrimitive, JsonValue, PluginBackend, PluginBackendScope, PluginPeer, PluginPeerRequestOptions, PluginPeerChannelOptions, PluginPeerChannelClose, PluginPeerChannel, MachineKind, PiWebComponentStatus, PiWebDockerMode, PiWebInstallationInfo, PiWebInstallationKind, PiWebReleaseStatus, PiWebServiceComponent, PiWebStatusMessage, PiWebStatusResponse, PiWebStatusSeverity, PiWebVersionResponse, PluginCapability, PluginCapabilityProvision, SessionUiMetadata, TerminalCommandRun, TerminalCommandRunHandle, TerminalCommandRunStatus, WorkspaceProviderCapabilities, WorkspaceProviderMetadata, WorkspaceRemovalPresentation, WriteWorkspaceFileOptions, WriteWorkspaceFileResponse, DeleteWorkspaceFileResponse, MoveWorkspaceFileOptions, MoveWorkspaceFileResponse, } from "./shared/pluginApiTypes.js";
|
|
5
|
+
export type { PluginCatalogV1, PluginCatalogProject, PluginCatalogWorkspace, PluginSessionSnapshot, PluginWorkspaceSelection, PluginSessionSelection, PluginCatalogReadOptions } from "./shared/pluginCatalogTypes.js";
|
|
6
|
+
import type { PluginCatalogV1 } from "./shared/pluginCatalogTypes.js";
|
|
7
|
+
export type PiWebPlugin = LegacyPiWebPlugin | PiWebPluginV5;
|
|
8
|
+
/** Current browser entrypoint. Existing contribution kinds and lifecycle behavior are unchanged. */
|
|
9
|
+
export interface PiWebPluginV5 {
|
|
10
|
+
apiVersion: 5;
|
|
11
|
+
name: string;
|
|
12
|
+
requires?: readonly PluginCapability[];
|
|
13
|
+
activate(context: PluginActivationContextV5): MaybePromise<PluginActivationResultV5>;
|
|
14
|
+
}
|
|
15
|
+
export type PluginActivationContextV5 = Omit<PluginActivationContext, "apiVersion"> & {
|
|
16
|
+
readonly apiVersion: 5;
|
|
17
|
+
};
|
|
18
|
+
export type PluginActivationResultV5 = Omit<PluginActivationResult, "contributions"> & {
|
|
19
|
+
contributions: PluginContributionsV5;
|
|
20
|
+
};
|
|
21
|
+
/** Captured machine target; changing selection never retargets this catalog. */
|
|
22
|
+
export interface PluginCatalog extends PluginCatalogV1 {
|
|
23
|
+
readonly machineId: string;
|
|
24
|
+
}
|
|
25
|
+
export interface PluginDiscoveryContext {
|
|
26
|
+
readonly catalog: PluginCatalog;
|
|
27
|
+
readonly backend?: PluginBackend;
|
|
28
|
+
}
|
|
29
|
+
export type PluginRuntimeContextV5 = PluginRuntimeContext & PluginDiscoveryContext;
|
|
30
|
+
export type ApplicationPanelContextV5 = ApplicationPanelContext & PluginDiscoveryContext;
|
|
31
|
+
export type WorkspacePanelContextV5 = Omit<WorkspacePanelContext, "backend"> & PluginDiscoveryContext;
|
|
32
|
+
export type WorkspaceLabelContextV5 = Omit<WorkspaceLabelContext, "backend"> & PluginDiscoveryContext;
|
|
33
|
+
export type SessionLabelContextV5 = SessionLabelContext & PluginDiscoveryContext;
|
|
34
|
+
export type MessageActionContextV5 = MessageActionContext & PluginDiscoveryContext;
|
|
35
|
+
export type DisplayedMessageActionContextV5 = DisplayedMessageActionContext & PluginDiscoveryContext;
|
|
36
|
+
export interface PluginContributionsV5 extends Omit<PluginContributions, "actions" | "applicationPanels" | "workspacePanels" | "workspaceLabels" | "sessionLabels" | "messageActions" | "contentRenderers" | "themes"> {
|
|
37
|
+
stylesheets?: StylesheetContribution[];
|
|
38
|
+
syntaxHighlighters?: SyntaxHighlighterContribution[];
|
|
39
|
+
contentRenderers?: ContentRendererContributionV5[];
|
|
40
|
+
themes?: ThemeContributionV5[];
|
|
41
|
+
actions?: PluginActionV5[];
|
|
42
|
+
applicationPanels?: ApplicationPanelContributionV5[];
|
|
43
|
+
workspacePanels?: WorkspacePanelContributionV5[];
|
|
44
|
+
workspaceLabels?: WorkspaceLabelContributionV5[];
|
|
45
|
+
sessionLabels?: SessionLabelContributionV5[];
|
|
46
|
+
messageActions?: MessageActionContributionV5[];
|
|
47
|
+
}
|
|
48
|
+
export type PluginActionV5 = Omit<PluginAction, "enabled" | "disabledReason" | "run"> & {
|
|
49
|
+
enabled?: (context: PluginRuntimeContextV5) => boolean;
|
|
50
|
+
disabledReason?: (context: PluginRuntimeContextV5) => string | undefined;
|
|
51
|
+
run: (context: PluginRuntimeContextV5) => MaybePromise<void>;
|
|
52
|
+
};
|
|
53
|
+
export type ApplicationPanelContributionV5 = Omit<ApplicationPanelContribution, "visible" | "badge" | "render"> & {
|
|
54
|
+
visible?: (context: ApplicationPanelContextV5) => boolean;
|
|
55
|
+
badge?: (context: ApplicationPanelContextV5) => string | number | TemplateResult | undefined;
|
|
56
|
+
render: (context: ApplicationPanelContextV5) => TemplateResult;
|
|
57
|
+
};
|
|
58
|
+
export type WorkspacePanelContributionV5 = Omit<WorkspacePanelContribution, "visible" | "badge" | "render" | "fileOpenQuery" | "onInvalidate"> & {
|
|
59
|
+
visible?: (context: WorkspacePanelContextV5) => boolean;
|
|
60
|
+
badge?: (context: WorkspacePanelContextV5) => string | number | TemplateResult | undefined;
|
|
61
|
+
render: (context: WorkspacePanelContextV5) => TemplateResult;
|
|
62
|
+
fileOpenQuery?: (context: WorkspacePanelContextV5, path: string) => Readonly<Record<string, ContributionQueryValue>> | undefined;
|
|
63
|
+
onInvalidate?: (context: WorkspacePanelContextV5, invalidation?: WorkspaceInvalidation) => MaybePromise<void>;
|
|
64
|
+
};
|
|
65
|
+
export type WorkspaceLabelContributionV5 = Omit<WorkspaceLabelContribution, "visible" | "items"> & {
|
|
66
|
+
visible?: (context: WorkspaceLabelContextV5) => boolean;
|
|
67
|
+
items: (context: WorkspaceLabelContextV5) => WorkspaceLabelItem[];
|
|
68
|
+
};
|
|
69
|
+
export type SessionLabelContributionV5 = Omit<SessionLabelContribution, "visible" | "items"> & {
|
|
70
|
+
visible?: (context: SessionLabelContextV5) => boolean;
|
|
71
|
+
items: (context: SessionLabelContextV5) => SessionLabelItem[];
|
|
72
|
+
};
|
|
73
|
+
export type MessageActionContributionV5 = (Omit<EntryMessageActionContribution, "run"> & {
|
|
74
|
+
run: (context: MessageActionContextV5) => MaybePromise<MessageActionResult>;
|
|
75
|
+
}) | (Omit<DisplayedMessageActionContribution, "run"> & {
|
|
76
|
+
run: (context: DisplayedMessageActionContextV5) => MaybePromise<MessageActionResult>;
|
|
77
|
+
});
|
|
4
78
|
export type PluginId = string;
|
|
5
79
|
export type LocalContributionId = string;
|
|
6
80
|
export type QualifiedContributionId = string;
|
|
7
81
|
export type HtmlTemplateTag = (strings: TemplateStringsArray, ...values: unknown[]) => TemplateResult;
|
|
8
82
|
export type SvgTemplateTag = (strings: TemplateStringsArray, ...values: unknown[]) => TemplateResult;
|
|
9
|
-
|
|
10
|
-
|
|
83
|
+
type MaybePromise<T> = T | Promise<T>;
|
|
84
|
+
/** @deprecated Browser API v4 remains supported; use PiWebPluginV5 for catalog and scoped backend access. */
|
|
85
|
+
export interface LegacyPiWebPlugin {
|
|
86
|
+
apiVersion: 4;
|
|
11
87
|
name: string;
|
|
12
|
-
|
|
88
|
+
/** Exact capability versions that must be active before this plugin starts. */
|
|
89
|
+
requires?: readonly PluginCapability[];
|
|
90
|
+
activate: (context: PluginActivationContext) => MaybePromise<PluginActivationResult>;
|
|
13
91
|
}
|
|
14
92
|
/** Host-owned frozen values supplied once during browser plugin activation. */
|
|
15
93
|
export interface PluginActivationContext {
|
|
16
|
-
readonly
|
|
94
|
+
readonly translate?: Translator;
|
|
95
|
+
readonly apiVersion: 4;
|
|
17
96
|
/** Stable package/source identity, including on federated machines. */
|
|
18
97
|
readonly pluginId: PluginId;
|
|
19
98
|
/** Host-unique identity for qualified contribution references in this runtime. */
|
|
20
|
-
readonly runtimePluginId
|
|
99
|
+
readonly runtimePluginId: PluginId;
|
|
21
100
|
readonly html: HtmlTemplateTag;
|
|
22
101
|
readonly svg: SvgTemplateTag;
|
|
102
|
+
/** Signal for this bounded activation invocation, not the plugin lifetime. */
|
|
103
|
+
readonly signal: AbortSignal;
|
|
104
|
+
/** Aborted before failed-start rollback or browser-host shutdown disposal. */
|
|
105
|
+
readonly lifetimeSignal: AbortSignal;
|
|
106
|
+
/** Current browser selection, independent of panel mounting. Omitted by older hosts. */
|
|
107
|
+
readonly selection?: PluginSelectionService;
|
|
108
|
+
}
|
|
109
|
+
/** Resolver containing only the exact capability requirements declared by a plugin. */
|
|
110
|
+
export interface PluginCapabilityResolver {
|
|
111
|
+
readonly resolve: <Value>(capability: PluginCapability<Value>) => Value;
|
|
112
|
+
}
|
|
113
|
+
/** Frozen values supplied after every declared dependency is active. */
|
|
114
|
+
export interface PluginStartContext {
|
|
115
|
+
readonly capabilities: PluginCapabilityResolver;
|
|
116
|
+
/** Signal for this bounded start invocation, not the plugin lifetime. */
|
|
117
|
+
readonly signal: AbortSignal;
|
|
23
118
|
}
|
|
24
119
|
export interface PluginActivationResult {
|
|
25
120
|
contributions: PluginContributions;
|
|
121
|
+
/** Typed capability values owned by this plugin and published only after start succeeds. */
|
|
122
|
+
provides?: readonly PluginCapabilityProvision[];
|
|
123
|
+
/** Initialize resources after every exact declared capability requirement is active. */
|
|
124
|
+
start?(context: PluginStartContext): MaybePromise<void>;
|
|
125
|
+
/** Release resources within one host-bounded disposal invocation. */
|
|
126
|
+
dispose?(signal: AbortSignal): MaybePromise<void>;
|
|
127
|
+
}
|
|
128
|
+
export interface ContentRendererInput {
|
|
129
|
+
readonly text: string;
|
|
130
|
+
/** Aborted when source, renderer, mode, mounting, or plugin lifetime changes. */
|
|
131
|
+
readonly signal: AbortSignal;
|
|
132
|
+
/** Report asynchronous failure; calls from obsolete renders are ignored. */
|
|
133
|
+
readonly fail: (error: unknown) => void;
|
|
134
|
+
}
|
|
135
|
+
export interface ContentRendererContribution {
|
|
136
|
+
id: LocalContributionId;
|
|
137
|
+
languages?: readonly string[];
|
|
138
|
+
/** Extensions without a leading dot, matched case-insensitively. */
|
|
139
|
+
fileExtensions?: readonly string[];
|
|
140
|
+
/** Defaults to manual: render is not called until the user chooses 渲染. */
|
|
141
|
+
renderMode?: "manual" | "automatic";
|
|
142
|
+
/** Synchronous Lit template; own async work and activation efficiency in a component and honor signal. */
|
|
143
|
+
render(input: ContentRendererInput): TemplateResult;
|
|
144
|
+
}
|
|
145
|
+
export interface ContentRendererInputV5 extends ContentRendererInput {
|
|
146
|
+
readonly machineId?: string;
|
|
147
|
+
readonly language?: string;
|
|
148
|
+
readonly filePath?: string;
|
|
149
|
+
}
|
|
150
|
+
export interface ContentRendererContributionV5 extends Omit<ContentRendererContribution, "render"> {
|
|
151
|
+
/** Human-readable name used for renderer view buttons. */
|
|
152
|
+
title?: string;
|
|
153
|
+
/** Synchronous eligibility; replaces absent selectors or further restricts declared selectors. */
|
|
154
|
+
supports?(request: Readonly<ContentRenderRequest>): boolean;
|
|
155
|
+
render(input: ContentRendererInputV5): TemplateResult;
|
|
156
|
+
}
|
|
157
|
+
export type SyntaxHighlightTokenKind = "keyword" | "string" | "number" | "comment" | "type" | "function" | "variable" | "operator" | "punctuation" | "property" | "literal" | "meta";
|
|
158
|
+
export interface SyntaxHighlightToken {
|
|
159
|
+
/** UTF-16 code-unit offsets: inclusive start, exclusive end. Sorted and nonoverlapping. */
|
|
160
|
+
readonly from: number;
|
|
161
|
+
readonly to: number;
|
|
162
|
+
readonly kind: SyntaxHighlightTokenKind;
|
|
163
|
+
}
|
|
164
|
+
export interface SyntaxHighlighterContribution {
|
|
165
|
+
id: LocalContributionId;
|
|
166
|
+
languages?: readonly string[];
|
|
167
|
+
/** Extensions without a leading dot, matched case-insensitively. */
|
|
168
|
+
fileExtensions?: readonly string[];
|
|
169
|
+
highlight(input: {
|
|
170
|
+
readonly text: string;
|
|
171
|
+
readonly signal: AbortSignal;
|
|
172
|
+
}): readonly SyntaxHighlightToken[] | Promise<readonly SyntaxHighlightToken[]>;
|
|
173
|
+
}
|
|
174
|
+
export interface SyntaxHighlightRequest {
|
|
175
|
+
machineId: string;
|
|
176
|
+
text: string;
|
|
177
|
+
language?: string;
|
|
178
|
+
filePath?: string;
|
|
179
|
+
signal: AbortSignal;
|
|
180
|
+
}
|
|
181
|
+
/** Host capability token: { pluginId: "pi-web", id: "syntax-highlighting", version: 1, parse }. */
|
|
182
|
+
export interface SyntaxHighlightingCapability {
|
|
183
|
+
supports(request: Pick<ContentRenderRequest, "machineId" | "language" | "filePath">): boolean;
|
|
184
|
+
/** Last discovered match; undefined when no match or over 100,000 UTF-16 units. Errors reject. */
|
|
185
|
+
highlight(request: SyntaxHighlightRequest): Promise<readonly SyntaxHighlightToken[] | undefined>;
|
|
186
|
+
}
|
|
187
|
+
export interface ContentRenderRequest {
|
|
188
|
+
machineId: string;
|
|
189
|
+
text: string;
|
|
190
|
+
language?: string;
|
|
191
|
+
filePath?: string;
|
|
192
|
+
truncated?: boolean;
|
|
193
|
+
}
|
|
194
|
+
export interface ContentRendererOption {
|
|
195
|
+
readonly id: string;
|
|
196
|
+
readonly label: string;
|
|
197
|
+
readonly title?: string;
|
|
198
|
+
readonly renderMode: "manual" | "automatic";
|
|
199
|
+
}
|
|
200
|
+
export type ContentTextRenderRequest = ContentRenderRequest & {
|
|
201
|
+
/** Authorize manual previews; false/omitted retains automatic defaults. Never overrides user 原始. */
|
|
202
|
+
allowManualPreview?: boolean;
|
|
203
|
+
} & ({
|
|
204
|
+
controls: "external";
|
|
205
|
+
rendererId?: string;
|
|
206
|
+
} | {
|
|
207
|
+
controls?: never;
|
|
208
|
+
rendererId?: never;
|
|
209
|
+
});
|
|
210
|
+
export interface ContentMarkdownRenderRequest {
|
|
211
|
+
machineId: string;
|
|
212
|
+
text: string;
|
|
213
|
+
truncated?: boolean;
|
|
214
|
+
toSafeHtml: (text: string) => string;
|
|
215
|
+
/** Authorize manual fence previews; false/omitted retains automatic defaults. Never overrides user 原始. */
|
|
216
|
+
allowManualPreview?: boolean;
|
|
217
|
+
}
|
|
218
|
+
/** Host capability token: { pluginId: "pi-web", id: "content-rendering", version: 1, parse }. */
|
|
219
|
+
export interface ContentRenderingCapability {
|
|
220
|
+
/** Eligible choices in plugin discovery order, then contribution declaration order. */
|
|
221
|
+
listRenderers(request: ContentRenderRequest): readonly ContentRendererOption[];
|
|
222
|
+
/**
|
|
223
|
+
* Undefined when no renderer claims the complete text file.
|
|
224
|
+
* External controls require the caller to provide raw-source access, mode switching and a renderer chooser.
|
|
225
|
+
* Only external controls accept rendererId; absent or unavailable IDs use the last automatic match, otherwise the first manual match.
|
|
226
|
+
* Consumers authorize manual previews according to their own user-intent policy.
|
|
227
|
+
* Listing and creating templates never call render.
|
|
228
|
+
*/
|
|
229
|
+
renderText(request: ContentTextRenderRequest): TemplateResult | undefined;
|
|
230
|
+
/**
|
|
231
|
+
* The caller supplies its existing trusted HTML sanitizer; policies are not shared.
|
|
232
|
+
* Each eligible fence owns its chooser and 原始 control. No remembered intent is stored.
|
|
233
|
+
*/
|
|
234
|
+
renderMarkdown(request: ContentMarkdownRenderRequest): TemplateResult;
|
|
26
235
|
}
|
|
27
236
|
export interface PluginContributions {
|
|
237
|
+
localizations?: LocalizationContribution[];
|
|
238
|
+
contentRenderers?: ContentRendererContribution[];
|
|
239
|
+
messageActions?: MessageActionContribution[];
|
|
28
240
|
actions?: PluginAction[];
|
|
241
|
+
applicationPanels?: ApplicationPanelContribution[];
|
|
29
242
|
workspacePanels?: WorkspacePanelContribution[];
|
|
30
243
|
workspaceLabels?: WorkspaceLabelContribution[];
|
|
244
|
+
sessionLabels?: SessionLabelContribution[];
|
|
31
245
|
themes?: ThemeContribution[];
|
|
32
246
|
themePairs?: ThemePairContribution[];
|
|
33
247
|
}
|
|
@@ -36,15 +250,74 @@ export interface PluginMachine {
|
|
|
36
250
|
name: string;
|
|
37
251
|
kind: MachineKind;
|
|
38
252
|
}
|
|
253
|
+
/** Basic registered project information on a host-bound machine. */
|
|
254
|
+
export interface PluginProject {
|
|
255
|
+
readonly id: string;
|
|
256
|
+
readonly name: string;
|
|
257
|
+
readonly path: string;
|
|
258
|
+
}
|
|
259
|
+
/** A directory suggested by the target machine's project directory search. */
|
|
260
|
+
export interface PluginProjectDirectorySuggestion {
|
|
261
|
+
readonly path: string;
|
|
262
|
+
}
|
|
263
|
+
/** Read-only project discovery with a fixed machine target, independent of later selection. */
|
|
264
|
+
export interface PluginProjects {
|
|
265
|
+
readonly machineId: string;
|
|
266
|
+
/** List registered projects, not every directory on the machine. */
|
|
267
|
+
listProjects(): Promise<readonly PluginProject[]>;
|
|
268
|
+
/** Suggest directories matching a path query using the host's project picker rules. */
|
|
269
|
+
suggestDirectories(query: string): Promise<readonly PluginProjectDirectorySuggestion[]>;
|
|
270
|
+
}
|
|
271
|
+
/** Selected conversation snapshot, scoped to PluginRuntimeState.selectedMachine. */
|
|
272
|
+
export interface PluginSelectedSession {
|
|
273
|
+
id: string;
|
|
274
|
+
/** Workspace working directory. */
|
|
275
|
+
cwd: string;
|
|
276
|
+
name?: string;
|
|
277
|
+
/** Detached, explicitly UI-safe data by package/plugin namespace. Absent on older hosts. */
|
|
278
|
+
metadata?: import("./shared/pluginApiTypes.js").SessionUiMetadata;
|
|
279
|
+
archived: boolean;
|
|
280
|
+
/** True while the browser is waiting for session creation to finish. */
|
|
281
|
+
pending: boolean;
|
|
282
|
+
}
|
|
283
|
+
/** Basic selection only; no transcript, route query, or status data. */
|
|
284
|
+
export interface PluginSelectionSnapshot {
|
|
285
|
+
/** Undefined before machines load. */
|
|
286
|
+
readonly selectedMachine?: Readonly<PluginMachine>;
|
|
287
|
+
readonly selectedProject?: PluginProject;
|
|
288
|
+
readonly selectedWorkspace?: Readonly<Workspace>;
|
|
289
|
+
readonly selectedSession?: Readonly<PluginSelectedSession>;
|
|
290
|
+
}
|
|
291
|
+
export interface PluginSelectionService {
|
|
292
|
+
/** Read a fresh, detached snapshot synchronously. */
|
|
293
|
+
getSnapshot(): PluginSelectionSnapshot;
|
|
294
|
+
/**
|
|
295
|
+
* Notify after host UI commits that change basic selection; does not call immediately.
|
|
296
|
+
* Multiple changes within one commit may be coalesced.
|
|
297
|
+
* Works while panels are closed. Ends at plugin lifetime abort, or earlier via
|
|
298
|
+
* the returned idempotent unsubscribe. Subscriber failures are logged in isolation.
|
|
299
|
+
*/
|
|
300
|
+
subscribe(listener: (snapshot: PluginSelectionSnapshot) => void | Promise<void>): () => void;
|
|
301
|
+
}
|
|
39
302
|
export interface PluginRuntimeState {
|
|
40
303
|
/** Identity of the currently selected machine. Undefined only on older hosts or before machines load. */
|
|
41
304
|
selectedMachine?: PluginMachine;
|
|
305
|
+
selectedProject?: PluginProject;
|
|
42
306
|
selectedWorkspace?: Workspace;
|
|
43
|
-
selectedSession?:
|
|
307
|
+
selectedSession?: PluginSelectedSession;
|
|
44
308
|
workspaceTool?: string;
|
|
45
|
-
mainView?:
|
|
309
|
+
mainView?: "navigation" | "chat" | "workspace";
|
|
46
310
|
piWebStatus?: PiWebStatusResponse;
|
|
47
311
|
}
|
|
312
|
+
export interface PluginPromptChip {
|
|
313
|
+
/** Plugin-local identity; setting the same id replaces its data and callback. */
|
|
314
|
+
readonly id: string;
|
|
315
|
+
readonly label: string;
|
|
316
|
+
/** Non-empty text appended verbatim to the message, separated by blank lines. */
|
|
317
|
+
readonly text: string;
|
|
318
|
+
/** User removal or server-accepted submission; programmatic withdrawal is silent. */
|
|
319
|
+
readonly onRemove?: (reason: "user" | "submitted") => void | Promise<void>;
|
|
320
|
+
}
|
|
48
321
|
export interface PluginPromptEditor {
|
|
49
322
|
/** Insert text at the current cursor position. Replaces any selection.
|
|
50
323
|
* If the editor is not focused, focuses it first.
|
|
@@ -58,9 +331,64 @@ export interface PluginPromptEditor {
|
|
|
58
331
|
end: number;
|
|
59
332
|
text: string;
|
|
60
333
|
} | null;
|
|
334
|
+
/**
|
|
335
|
+
* Stage or replace this plugin's chip in the machine/conversation captured by
|
|
336
|
+
* this context. Requires a ready, non-archived selected conversation when the
|
|
337
|
+
* context is created. Throws when that target or plugin is unavailable.
|
|
338
|
+
* Browser memory only; survives panel closure/navigation, not page reload.
|
|
339
|
+
* Omitted by older hosts. Call from event handlers, not render callbacks.
|
|
340
|
+
*/
|
|
341
|
+
setChip?(chip: PluginPromptChip): void;
|
|
342
|
+
/** Withdraw this plugin's chip from the captured conversation without notification. */
|
|
343
|
+
removeChip?(id: string): void;
|
|
344
|
+
}
|
|
345
|
+
/** A non-null destination: complete by default, or a current-URL patch with mode: "patch". */
|
|
346
|
+
export interface PluginNavigationDestination {
|
|
347
|
+
machineId?: string;
|
|
348
|
+
projectId?: string;
|
|
349
|
+
workspaceId?: string;
|
|
350
|
+
/** Full, exact session ID in the target workspace; prefixes are not resolved. */
|
|
351
|
+
sessionId?: string;
|
|
352
|
+
view?: "navigation" | "chat" | "workspace";
|
|
353
|
+
tool?: QualifiedContributionId;
|
|
354
|
+
/** Local query keys for tool. Requires a tool/project/workspace
|
|
355
|
+
* (explicit in replace mode, optionally inherited in patch mode).
|
|
356
|
+
* Replace mode replaces all contribution query state; patch mode merges only these keys. */
|
|
357
|
+
query?: Readonly<Record<string, ContributionQueryValue>>;
|
|
358
|
+
}
|
|
359
|
+
/** Current-URL patch, accepted only with mode: "patch". Undefined fields are preserved. */
|
|
360
|
+
export interface PluginNavigationPatchDestination {
|
|
361
|
+
/** Null resets the machine to local; other null route fields remove that URL field. */
|
|
362
|
+
machineId?: string | null;
|
|
363
|
+
projectId?: string | null;
|
|
364
|
+
workspaceId?: string | null;
|
|
365
|
+
/** Full, exact session ID in the target workspace; prefixes are not resolved. */
|
|
366
|
+
sessionId?: string | null;
|
|
367
|
+
view?: "navigation" | "chat" | "workspace" | null;
|
|
368
|
+
tool?: QualifiedContributionId | null;
|
|
369
|
+
/** Merge local keys into the effective tool/project/workspace query; null values remove keys. */
|
|
370
|
+
query?: Readonly<Record<string, ContributionQueryValue | null>>;
|
|
371
|
+
}
|
|
372
|
+
export interface PluginNavigationOptions {
|
|
373
|
+
/** Defaults to replace. Patch preserves omitted fields and clears inherited descendants
|
|
374
|
+
* when their machine/project/workspace changes. Null route fields are valid only in patch mode. */
|
|
375
|
+
mode?: "replace" | "patch";
|
|
376
|
+
/** Browser history behavior, independent of mode. Defaults to push. */
|
|
377
|
+
history?: "push" | "replace";
|
|
378
|
+
}
|
|
379
|
+
/** Shared navigation callable; nullable destinations require explicit patch options. */
|
|
380
|
+
export interface PluginNavigate {
|
|
381
|
+
(destination: PluginNavigationDestination, options?: PluginNavigationOptions): Promise<void>;
|
|
382
|
+
(destination: PluginNavigationPatchDestination, options: PluginNavigationOptions & {
|
|
383
|
+
mode: "patch";
|
|
384
|
+
}): Promise<void>;
|
|
61
385
|
}
|
|
62
386
|
export interface PluginRuntimeContext {
|
|
387
|
+
/** Navigate using host restoration defaults. Route failures appear in the host UI. */
|
|
388
|
+
navigate: PluginNavigate;
|
|
63
389
|
state: PluginRuntimeState;
|
|
390
|
+
/** Read-only discovery on this context's machine. Omitted by older hosts. */
|
|
391
|
+
projects?: PluginProjects;
|
|
64
392
|
prompt: PluginPromptEditor;
|
|
65
393
|
openActionPalette: () => void;
|
|
66
394
|
focusPrompt: () => void;
|
|
@@ -68,15 +396,17 @@ export interface PluginRuntimeContext {
|
|
|
68
396
|
configureAuth: () => void | Promise<void>;
|
|
69
397
|
logoutAuth: () => void | Promise<void>;
|
|
70
398
|
openThemePicker: () => void;
|
|
71
|
-
selectMainView: (view:
|
|
399
|
+
selectMainView: (view: "navigation" | "chat" | "workspace") => void;
|
|
72
400
|
selectWorkspaceTool: (tool: QualifiedContributionId) => void;
|
|
73
401
|
openTerminal: (options?: {
|
|
74
402
|
terminalId?: string | undefined;
|
|
75
403
|
}) => void;
|
|
404
|
+
/** @deprecated Compatibility alias that publishes `workspace.files` invalidation for the selected workspace. */
|
|
76
405
|
refreshFiles: () => void | Promise<void>;
|
|
406
|
+
/** Legacy compatibility alias for refreshing the selected workspace Git panel. */
|
|
77
407
|
refreshGit: () => void | Promise<void>;
|
|
78
408
|
/** Invalidate plugin workspace-panel data for the selected workspace, optionally targeting one qualified panel id. */
|
|
79
|
-
refreshWorkspacePanels
|
|
409
|
+
refreshWorkspacePanels: (panelId?: QualifiedContributionId) => void | Promise<void>;
|
|
80
410
|
refreshAppData: () => void | Promise<void>;
|
|
81
411
|
/** Force a fresh PI WEB release check on the selected machine. Optional for compatibility with older hosts. */
|
|
82
412
|
checkForPiWebUpdates?: () => void | Promise<void>;
|
|
@@ -85,6 +415,79 @@ export interface PluginRuntimeContext {
|
|
|
85
415
|
archiveSession: () => void | Promise<void>;
|
|
86
416
|
stopActiveWork: () => void | Promise<void>;
|
|
87
417
|
}
|
|
418
|
+
/** A durable message displayed in the transcript; text excludes thinking and tool payloads. */
|
|
419
|
+
export interface MessageActionMessage {
|
|
420
|
+
readonly entryId: string;
|
|
421
|
+
readonly role: "user" | "assistant" | "tool" | "system" | "bash" | "skill";
|
|
422
|
+
readonly text: string;
|
|
423
|
+
/** True for the durable ask_user result that can be reopened through history. */
|
|
424
|
+
readonly isQuestion?: boolean;
|
|
425
|
+
}
|
|
426
|
+
/** Small, detached inputs for synchronous, side-effect-free availability checks. */
|
|
427
|
+
export interface MessageActionAvailabilityContext {
|
|
428
|
+
readonly machine: Readonly<PluginMachine>;
|
|
429
|
+
readonly session: Readonly<PluginSelectedSession & {
|
|
430
|
+
busy: boolean;
|
|
431
|
+
}>;
|
|
432
|
+
readonly message: MessageActionMessage;
|
|
433
|
+
}
|
|
434
|
+
/** Created on invocation, with helpers scoped to the initiating machine/conversation. */
|
|
435
|
+
export interface MessageActionContext extends MessageActionAvailabilityContext {
|
|
436
|
+
readonly prompt: PluginPromptEditor;
|
|
437
|
+
readonly navigate: PluginNavigate;
|
|
438
|
+
readonly projects: PluginProjects;
|
|
439
|
+
readonly workspace?: Workspace;
|
|
440
|
+
readonly files?: WorkspaceFilesContextValue;
|
|
441
|
+
readonly peer?: PluginPeer;
|
|
442
|
+
readonly terminal?: WorkspacePanelTerminal;
|
|
443
|
+
/** Guarded, fresh-history operations on this message; confirmation is the plugin's choice. */
|
|
444
|
+
readonly history: {
|
|
445
|
+
readonly fork: () => Promise<void>;
|
|
446
|
+
readonly goBack: () => Promise<void>;
|
|
447
|
+
};
|
|
448
|
+
}
|
|
449
|
+
/** Optional successful-action presentation, shown by the host for 1.2 seconds. */
|
|
450
|
+
export interface MessageActionFeedback {
|
|
451
|
+
readonly title: string;
|
|
452
|
+
readonly ariaLabel?: string;
|
|
453
|
+
readonly icon?: TemplateResult;
|
|
454
|
+
}
|
|
455
|
+
export type MessageActionResult = void | MessageActionFeedback;
|
|
456
|
+
interface MessageActionDefinition<AvailabilityContext, Context> {
|
|
457
|
+
id: LocalContributionId;
|
|
458
|
+
title: string;
|
|
459
|
+
icon?: TemplateResult;
|
|
460
|
+
/** Defaults to title. Synchronous and side-effect-free, like availability checks. */
|
|
461
|
+
ariaLabel?: (context: AvailabilityContext) => string;
|
|
462
|
+
/** Checks run only when their message/session inputs or active contributions change. No I/O. */
|
|
463
|
+
visible?: (context: AvailabilityContext) => boolean;
|
|
464
|
+
enabled?: (context: AvailabilityContext) => boolean;
|
|
465
|
+
/** Plugin-defined workflow; the host does not add a confirmation. */
|
|
466
|
+
run: (context: Context) => MaybePromise<MessageActionResult>;
|
|
467
|
+
}
|
|
468
|
+
/** Default action target: an identified transcript entry with guarded history helpers. */
|
|
469
|
+
export interface EntryMessageActionContribution extends MessageActionDefinition<MessageActionAvailabilityContext, MessageActionContext> {
|
|
470
|
+
target?: "entry";
|
|
471
|
+
}
|
|
472
|
+
/** The ordinary original text in one displayed header's slice, excluding thinking/tool payloads. */
|
|
473
|
+
export interface DisplayedMessageActionMessage {
|
|
474
|
+
/** Absent for optimistic or streaming messages. */
|
|
475
|
+
readonly entryId?: string;
|
|
476
|
+
readonly role: MessageActionMessage["role"];
|
|
477
|
+
/** Nonempty original text parts, trimmed individually and joined with blank lines. */
|
|
478
|
+
readonly text: string;
|
|
479
|
+
}
|
|
480
|
+
export interface DisplayedMessageActionAvailabilityContext extends Omit<MessageActionAvailabilityContext, "message"> {
|
|
481
|
+
readonly message: DisplayedMessageActionMessage;
|
|
482
|
+
}
|
|
483
|
+
/** Display-only workflows have no history helpers and can run alongside entry actions. */
|
|
484
|
+
export interface DisplayedMessageActionContext extends Omit<MessageActionContext, "message" | "history"> {
|
|
485
|
+
readonly message: DisplayedMessageActionMessage;
|
|
486
|
+
}
|
|
487
|
+
export interface DisplayedMessageActionContribution extends MessageActionDefinition<DisplayedMessageActionAvailabilityContext, DisplayedMessageActionContext> {
|
|
488
|
+
target: "display";
|
|
489
|
+
}
|
|
490
|
+
export type MessageActionContribution = EntryMessageActionContribution | DisplayedMessageActionContribution;
|
|
88
491
|
export interface PluginAction {
|
|
89
492
|
id: LocalContributionId;
|
|
90
493
|
title: string;
|
|
@@ -111,26 +514,84 @@ export interface Workspace {
|
|
|
111
514
|
readonly provider?: WorkspaceProviderMetadata;
|
|
112
515
|
readonly removal?: WorkspaceRemovalPresentation;
|
|
113
516
|
}
|
|
517
|
+
export interface WorkspaceFileRequestOptions {
|
|
518
|
+
readonly signal?: AbortSignal;
|
|
519
|
+
}
|
|
520
|
+
export interface WorkspaceFileReferenceOptions {
|
|
521
|
+
/** Opaque cache discriminator, such as the file's modified time. */
|
|
522
|
+
readonly version?: string;
|
|
523
|
+
/** Legacy alias for version. */
|
|
524
|
+
readonly modifiedAt?: string;
|
|
525
|
+
}
|
|
526
|
+
export interface WorkspaceFileUploadProgress {
|
|
527
|
+
readonly loaded: number;
|
|
528
|
+
readonly total: number;
|
|
529
|
+
readonly percent: number;
|
|
530
|
+
readonly lengthComputable: boolean;
|
|
531
|
+
}
|
|
532
|
+
export interface WorkspaceFileUploadOptions {
|
|
533
|
+
readonly destinationFolder?: string;
|
|
534
|
+
readonly createDirs?: boolean;
|
|
535
|
+
readonly overwrite?: boolean;
|
|
536
|
+
readonly onProgress?: (progress: WorkspaceFileUploadProgress) => void;
|
|
537
|
+
/** Legacy alias for destinationFolder. */
|
|
538
|
+
readonly folder?: string;
|
|
539
|
+
readonly signal?: AbortSignal;
|
|
540
|
+
}
|
|
541
|
+
export interface WorkspaceFileUploadTask {
|
|
542
|
+
readonly path: string;
|
|
543
|
+
readonly completed: Promise<WriteWorkspaceFileResponse>;
|
|
544
|
+
cancel(): void;
|
|
545
|
+
}
|
|
546
|
+
/** The five workspace-file operations published by browser API v2 hosts. */
|
|
114
547
|
export interface WorkspaceFiles {
|
|
115
548
|
/** Read a file from the workspace. Works for local and federated machines. */
|
|
116
|
-
readFile(path: string): Promise<FileContentResponse>;
|
|
117
|
-
readOptionalFile?(path: string): Promise<FileContentResponse | undefined>;
|
|
549
|
+
readFile(path: string, options?: WorkspaceFileRequestOptions): Promise<FileContentResponse>;
|
|
550
|
+
readOptionalFile?(path: string, options?: WorkspaceFileRequestOptions): Promise<FileContentResponse | undefined>;
|
|
118
551
|
/** List the entries of a workspace directory. Pass "" for the workspace root.
|
|
119
552
|
* Works for local and federated machines. Rejects when the directory does not
|
|
120
553
|
* exist or cannot be read, matching readFile error behavior. */
|
|
121
|
-
listFiles(path: string): Promise<FileTreeResponse>;
|
|
122
|
-
/** Write content to a workspace file. Creates intermediate directories by default.
|
|
123
|
-
* Works for local and federated machines. Auto-refreshes the file explorer after success. */
|
|
554
|
+
listFiles(path: string, options?: WorkspaceFileRequestOptions): Promise<FileTreeResponse>;
|
|
555
|
+
/** Write content to a workspace file. Creates intermediate directories by default. */
|
|
124
556
|
writeFile(path: string, content: string | Uint8Array, options?: WriteWorkspaceFileOptions): Promise<WriteWorkspaceFileResponse>;
|
|
125
|
-
/** Delete a file from the workspace. Idempotent — returns { existed: false } if
|
|
126
|
-
* Deletes the entry itself (for symlinks, removes the symlink not the target). */
|
|
557
|
+
/** Delete a file from the workspace. Idempotent — returns { existed: false } if it does not exist. */
|
|
127
558
|
deleteFile(path: string): Promise<DeleteWorkspaceFileResponse>;
|
|
128
|
-
/** Move or rename a file within the workspace.
|
|
129
|
-
* Default overwrite: false (safer than writeFile). Auto-refreshes the file explorer after success. */
|
|
559
|
+
/** Move or rename a file within the workspace. Default overwrite: false. */
|
|
130
560
|
moveFile(fromPath: string, toPath: string, options?: MoveWorkspaceFileOptions): Promise<MoveWorkspaceFileResponse>;
|
|
131
561
|
}
|
|
562
|
+
/** Structural workspace-files value supplied by browser API v2 hosts before capability versioning. */
|
|
563
|
+
export interface LegacyWorkspaceFiles extends WorkspaceFiles {
|
|
564
|
+
readonly capabilityVersion?: undefined;
|
|
565
|
+
}
|
|
566
|
+
/** Versioned workspace-scoped host capability available to first- and third-party browser plugins. */
|
|
567
|
+
export interface WorkspaceFilesCapabilityV1 extends WorkspaceFiles {
|
|
568
|
+
readonly capabilityVersion: 1;
|
|
569
|
+
readonly defaultUploadFolder: string;
|
|
570
|
+
readonly maxInlinePreviewBytes: number;
|
|
571
|
+
readFile(path: string, options?: WorkspaceFileRequestOptions): Promise<FileContentResponse>;
|
|
572
|
+
listFiles(path: string, options?: WorkspaceFileRequestOptions): Promise<FileTreeResponse>;
|
|
573
|
+
/** Return a browser-ready URL already resolved by the host for this deployment and machine. */
|
|
574
|
+
previewUrl(path: string, options?: WorkspaceFileReferenceOptions): string;
|
|
575
|
+
/** Return a browser-ready download URL already resolved by the host for this deployment and machine. */
|
|
576
|
+
downloadUrl(path: string, options?: WorkspaceFileReferenceOptions): string;
|
|
577
|
+
/** Start one upload transport operation. Cancellation rejects `completed` with an AbortError. */
|
|
578
|
+
uploadFile(file: File, options?: WorkspaceFileUploadOptions): WorkspaceFileUploadTask;
|
|
579
|
+
/** Optional directory operations; older hosts can omit them. Paths stay workspace-relative. */
|
|
580
|
+
createDirectory?(path: string): Promise<{
|
|
581
|
+
path: string;
|
|
582
|
+
}>;
|
|
583
|
+
moveDirectory?(fromPath: string, toPath: string): Promise<{
|
|
584
|
+
path: string;
|
|
585
|
+
}>;
|
|
586
|
+
deleteDirectory?(path: string): Promise<{
|
|
587
|
+
path: string;
|
|
588
|
+
deleted: true;
|
|
589
|
+
}>;
|
|
590
|
+
}
|
|
591
|
+
/** Host context value used to feature-detect versioned workspace-file additions. */
|
|
592
|
+
export type WorkspaceFilesContextValue = LegacyWorkspaceFiles | WorkspaceFilesCapabilityV1;
|
|
132
593
|
export type WorkspacePanelFiles = WorkspaceFiles;
|
|
133
|
-
/**
|
|
594
|
+
/** Legacy owner request compatibility; new plugins use the revision-paired peer. */
|
|
134
595
|
export interface WorkspaceBackend {
|
|
135
596
|
request(operation: string, input: JsonValue): Promise<JsonValue>;
|
|
136
597
|
}
|
|
@@ -142,9 +603,13 @@ export interface WorkspaceContext {
|
|
|
142
603
|
machine: PluginMachine;
|
|
143
604
|
workspace: Workspace;
|
|
144
605
|
state?: PluginRuntimeState;
|
|
145
|
-
files:
|
|
146
|
-
/**
|
|
606
|
+
files: WorkspaceFilesContextValue;
|
|
607
|
+
/** Legacy request path to the server module that owns this workspace. */
|
|
147
608
|
backend?: WorkspaceBackend;
|
|
609
|
+
/** Read-only discovery on this context's machine. Omitted by older hosts. */
|
|
610
|
+
projects?: PluginProjects;
|
|
611
|
+
/** Exact package-paired request/channel capabilities, independent of workspace ownership. */
|
|
612
|
+
peer?: PluginPeer;
|
|
148
613
|
host: WorkspaceHost;
|
|
149
614
|
}
|
|
150
615
|
export interface WorkspaceTerminalCommandInput {
|
|
@@ -159,29 +624,77 @@ export interface WorkspacePanelTerminal {
|
|
|
159
624
|
}): void;
|
|
160
625
|
runCommand(input: WorkspaceTerminalCommandInput): Promise<TerminalCommandRunHandle>;
|
|
161
626
|
}
|
|
627
|
+
export type ContributionQueryValue = string | number | boolean | readonly (string | number | boolean)[];
|
|
628
|
+
export interface WorkspacePanelNavigationV1 {
|
|
629
|
+
readonly version: 1;
|
|
630
|
+
readonly contributionId: QualifiedContributionId;
|
|
631
|
+
readonly query: Readonly<Record<string, string | readonly string[]>>;
|
|
632
|
+
set(key: string, value: ContributionQueryValue | undefined | null, options?: {
|
|
633
|
+
replace?: boolean | undefined;
|
|
634
|
+
}): void;
|
|
635
|
+
}
|
|
162
636
|
export interface WorkspacePanelContext extends WorkspaceContext {
|
|
637
|
+
/** Navigate using host restoration defaults. Route failures appear in the host UI. */
|
|
638
|
+
navigate: PluginNavigate;
|
|
163
639
|
prompt: PluginPromptEditor;
|
|
164
640
|
terminal: WorkspacePanelTerminal;
|
|
641
|
+
/** Contribution-scoped address-bar state for deep links and browser history. */
|
|
642
|
+
navigation?: WorkspacePanelNavigationV1;
|
|
643
|
+
}
|
|
644
|
+
/** Fresh selection context; available even when no project, workspace, or session is selected. */
|
|
645
|
+
export interface ApplicationPanelContext {
|
|
646
|
+
machine: PluginMachine;
|
|
647
|
+
state: PluginRuntimeState;
|
|
648
|
+
/** Read-only discovery on this context's machine. Omitted by older hosts. */
|
|
649
|
+
projects?: PluginProjects;
|
|
650
|
+
/** Present only when a workspace is selected on this machine. */
|
|
651
|
+
workspace?: Workspace;
|
|
652
|
+
/** Workspace-bound terminal; present only with a selected workspace and an available Terminal provider. */
|
|
653
|
+
terminal?: WorkspacePanelTerminal;
|
|
654
|
+
navigate: PluginNavigate;
|
|
655
|
+
prompt: PluginPromptEditor;
|
|
656
|
+
host: WorkspaceHost;
|
|
657
|
+
}
|
|
658
|
+
/** A third-column tool tab that does not require a workspace. */
|
|
659
|
+
export interface ApplicationPanelContribution {
|
|
660
|
+
id: LocalContributionId;
|
|
661
|
+
title: string;
|
|
662
|
+
icon?: TemplateResult;
|
|
663
|
+
order?: number;
|
|
664
|
+
routeAliases?: string[];
|
|
665
|
+
visible?: (context: ApplicationPanelContext) => boolean;
|
|
666
|
+
badge?: (context: ApplicationPanelContext) => string | number | TemplateResult | undefined;
|
|
667
|
+
render: (context: ApplicationPanelContext) => TemplateResult;
|
|
165
668
|
}
|
|
166
669
|
export type WorkspacePanelIcon = TemplateResult;
|
|
670
|
+
export type WorkspaceResource = "workspace.files";
|
|
671
|
+
export type WorkspaceInvalidationReason = "manual" | "mutation" | "agent-activity";
|
|
672
|
+
export interface WorkspaceInvalidation {
|
|
673
|
+
readonly reason: WorkspaceInvalidationReason;
|
|
674
|
+
readonly resources: readonly WorkspaceResource[];
|
|
675
|
+
}
|
|
167
676
|
export interface WorkspacePanelContribution {
|
|
677
|
+
routeAliases?: string[];
|
|
678
|
+
navigationAliases?: string[];
|
|
168
679
|
id: LocalContributionId;
|
|
169
680
|
title: string;
|
|
170
681
|
icon?: WorkspacePanelIcon;
|
|
171
682
|
order?: number;
|
|
172
|
-
/** Former URL tool/view values that should resolve to this panel. */
|
|
173
|
-
routeAliases?: string[];
|
|
174
683
|
visible?: (context: WorkspacePanelContext) => boolean;
|
|
684
|
+
/** Return a deep-link query to open a workspace-relative file, or undefined if unsupported. */
|
|
685
|
+
fileOpenQuery?: (context: WorkspacePanelContext, path: string) => Readonly<Record<string, ContributionQueryValue>> | undefined;
|
|
175
686
|
badge?: (context: WorkspacePanelContext) => string | number | TemplateResult | undefined;
|
|
176
|
-
/**
|
|
177
|
-
|
|
687
|
+
/** Fixed workspace resources whose automatic invalidations this contribution receives. */
|
|
688
|
+
invalidationResources?: readonly WorkspaceResource[];
|
|
689
|
+
/** Called for manual panel invalidation or a declared resource invalidation. */
|
|
690
|
+
onInvalidate?: (context: WorkspacePanelContext, invalidation?: WorkspaceInvalidation) => void | Promise<void>;
|
|
178
691
|
render: (context: WorkspacePanelContext) => TemplateResult;
|
|
179
692
|
}
|
|
180
693
|
export interface WorkspaceLabelContext extends WorkspaceContext {
|
|
181
694
|
machine: PluginMachine;
|
|
182
695
|
workspace: Workspace;
|
|
183
696
|
state?: PluginRuntimeState;
|
|
184
|
-
files:
|
|
697
|
+
files: WorkspaceFilesContextValue;
|
|
185
698
|
host: WorkspaceHost;
|
|
186
699
|
}
|
|
187
700
|
export type WorkspaceLabelItem = WorkspaceLabelTextItem | WorkspaceLabelLinkItem | WorkspaceLabelRenderItem;
|
|
@@ -207,6 +720,36 @@ export interface WorkspaceLabelContribution {
|
|
|
207
720
|
visible?: (context: WorkspaceLabelContext) => boolean;
|
|
208
721
|
items: (context: WorkspaceLabelContext) => WorkspaceLabelItem[];
|
|
209
722
|
}
|
|
723
|
+
/** Context for one session-list row, including unselected and archived sessions. */
|
|
724
|
+
export interface SessionLabelContext extends WorkspaceContext {
|
|
725
|
+
/** Basic detached row snapshot, not necessarily state.selectedSession. */
|
|
726
|
+
session: Readonly<PluginSelectedSession>;
|
|
727
|
+
navigate: PluginNavigate;
|
|
728
|
+
}
|
|
729
|
+
export type SessionLabelItem = SessionLabelTextItem | SessionLabelLinkItem | SessionLabelRenderItem;
|
|
730
|
+
export interface SessionLabelTextItem {
|
|
731
|
+
type: "text";
|
|
732
|
+
text: string;
|
|
733
|
+
title?: string;
|
|
734
|
+
}
|
|
735
|
+
export interface SessionLabelLinkItem {
|
|
736
|
+
type: "link";
|
|
737
|
+
text: string;
|
|
738
|
+
href: string;
|
|
739
|
+
title?: string;
|
|
740
|
+
target?: "_blank" | "_self";
|
|
741
|
+
}
|
|
742
|
+
export interface SessionLabelRenderItem {
|
|
743
|
+
type: "render";
|
|
744
|
+
render: () => TemplateResult;
|
|
745
|
+
}
|
|
746
|
+
/** Indicators on session-list rows only. Callbacks are synchronous and side-effect-free. */
|
|
747
|
+
export interface SessionLabelContribution {
|
|
748
|
+
id: LocalContributionId;
|
|
749
|
+
order?: number;
|
|
750
|
+
visible?: (context: SessionLabelContext) => boolean;
|
|
751
|
+
items: (context: SessionLabelContext) => SessionLabelItem[];
|
|
752
|
+
}
|
|
210
753
|
export type ThemeColorScheme = "dark" | "light";
|
|
211
754
|
export type ThemeTokens = Record<string, string>;
|
|
212
755
|
export interface ThemeContribution {
|
|
@@ -225,3 +768,40 @@ export interface ThemePairContribution {
|
|
|
225
768
|
light: LocalContributionId;
|
|
226
769
|
dark: LocalContributionId;
|
|
227
770
|
}
|
|
771
|
+
/** Styling is experimental: shared classes, tokens and presentation may change between releases. */
|
|
772
|
+
export interface StylesheetRootOptions {
|
|
773
|
+
/** Inject the host's shared controls and file/tree-row styles into this root. Defaults to false. */
|
|
774
|
+
readonly sharedUi?: boolean;
|
|
775
|
+
}
|
|
776
|
+
/**
|
|
777
|
+
* Host capability token: { pluginId: "pi-web", id: "stylesheet-integration", version: 1, parse }.
|
|
778
|
+
* Direct stylesheet rules reach only explicitly registered roots; custom properties can inherit further.
|
|
779
|
+
* Opt into shared UI styles per root; the host owns injection, ordering and cleanup.
|
|
780
|
+
* Styling, including shared classes and internal host markup, is experimental rather than a stable API.
|
|
781
|
+
*/
|
|
782
|
+
export interface StylesheetIntegrationCapabilityV1 {
|
|
783
|
+
/** Register a retained open or closed root. Release on disconnect; register again on reconnect. */
|
|
784
|
+
readonly registerRoot: (root: ShadowRoot, options?: StylesheetRootOptions) => () => void;
|
|
785
|
+
/**
|
|
786
|
+
* Subscribe to active stylesheet changes after adoption in all registered roots.
|
|
787
|
+
* Includes removal, not initial subscription or root registration. Read initial values
|
|
788
|
+
* after registering your root. Listeners run synchronously; failures are logged in isolation.
|
|
789
|
+
* Release on disconnect. This does not observe arbitrary CSS mutations or media queries.
|
|
790
|
+
*/
|
|
791
|
+
readonly subscribe: (listener: () => void) => () => void;
|
|
792
|
+
/** Installs a Lit lifecycle controller; call once when constructing the component. */
|
|
793
|
+
readonly createController: (host: ReactiveControllerHost & {
|
|
794
|
+
readonly renderRoot?: HTMLElement | DocumentFragment;
|
|
795
|
+
}, options?: StylesheetRootOptions) => void;
|
|
796
|
+
}
|
|
797
|
+
/** A CSS file, normally new URL("./custom.css", import.meta.url).href. Inline CSS and runtime @import are unsupported. */
|
|
798
|
+
export interface StylesheetContribution {
|
|
799
|
+
id: string;
|
|
800
|
+
/** Absolute HTTP(S) URL. Assets resolve relative to the CSS file, including redirects. */
|
|
801
|
+
url: string;
|
|
802
|
+
/** Lower numbers load first; default 1000. Ties use qualified contribution IDs. */
|
|
803
|
+
order?: number;
|
|
804
|
+
}
|
|
805
|
+
export interface ThemeContributionV5 extends Omit<ThemeContribution, "tokens"> {
|
|
806
|
+
stylesheets?: StylesheetContribution[];
|
|
807
|
+
}
|