@chainingintention/pi-web-cn 1.202610.4 → 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 +2 -2
- package/dist/cli.js +31 -7
- package/dist/cli.js.map +1 -1
- 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-DOCw3vc9.js → vendor-editor-languages-bNquDJP0.js} +1 -1
- package/dist/client/index.html +3 -47
- package/dist/config.js +11 -2
- package/dist/config.js.map +1 -1
- package/dist/nativeServices/installedServiceDefinitions.js +10 -7
- package/dist/nativeServices/installedServiceDefinitions.js.map +1 -1
- package/dist/pi-packages/captains-log/dist/browser/index.js +43 -47
- package/dist/pi-packages/captains-log/dist/browser/panel.js +6 -10
- package/dist/pi-packages/captains-log/dist/companion.js +1 -1
- package/dist/pi-packages/captains-log/package.json +4 -4
- package/dist/pi-packages/relays/extensions/index.js +61 -0
- package/dist/pi-packages/relays/package.json +10 -1
- package/dist/pi-packages/relays/pi-web-plugin.js +52 -2
- package/dist/pi-packages/relays/prompts/relay-worktree.md +6 -16
- package/dist/pi-packages/relays/prompts/relay.md +6 -33
- package/dist/pi-packages/relays/relayDispatch.js +67 -0
- package/dist/pi-packages/relays/relayIdentity.js +37 -0
- package/dist/pi-packages/relays/relaysPanelElement.js +75 -37
- package/dist/pi-packages/relays/skills/relay/SKILL.md +24 -68
- package/dist/pi-packages/relays/skills/relay-runner/SKILL.md +40 -219
- 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/pi-web-plugin.js +115 -105
- package/dist/pi-web-plugins/git/browser/git-panel.js +60 -46
- package/dist/pi-web-plugins/git/browser/pi-web-plugin.js +23 -3
- package/dist/pi-web-plugins/git/git-backend.js +20 -1
- package/dist/pi-web-plugins/git/server-plugin.js +20 -3
- 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/infoInternals.js +3 -3
- package/dist/pi-web-plugins/info/pi-web-plugin.js +1 -1
- package/dist/pi-web-plugins/mermaid/browser/mermaid-engine.js +1087 -422
- package/dist/pi-web-plugins/mermaid/browser/pi-web-plugin.js +8 -3
- package/dist/pi-web-plugins/terminal/browser/pi-web-plugin.js +39 -33
- package/dist/pi-web-plugins/updates/pi-web-plugin.js +13 -13
- package/dist/pi-web-plugins/updates/updatesLogic.js +4 -5
- package/dist/pi-web-plugins/workspace-tasks/pi-web-plugin.js +21 -1
- package/dist/pi-web-plugins/workspace-tasks/tasksPanelElement.js +39 -22
- package/dist/pi-web-plugins/zh-cn/bundled.json +44 -1
- package/dist/pi-web-plugins/zh-cn/cli.json +60 -1
- package/dist/pi-web-plugins/zh-cn/client.json +7 -1
- package/dist/pi-web-plugins/zh-cn/components.json +252 -2
- package/dist/pi-web-plugins/zh-cn/config-errors.json +17 -1
- package/dist/pi-web-plugins/zh-cn/files.json +10 -1
- package/dist/pi-web-plugins/zh-cn/main.json +1 -1
- package/dist/pi-web-plugins/zh-cn/provider-auth.json +2 -1
- package/dist/pi-web-plugins/zh-cn/server.json +83 -1
- 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 +43 -1
- package/dist/piWebVersionReport.js.map +1 -1
- package/dist/plugin-api.d.ts +393 -51
- package/dist/server/activity/workspaceActivityService.js +8 -1
- package/dist/server/activity/workspaceActivityService.js.map +1 -1
- package/dist/server/app.js +19 -4
- package/dist/server/app.js.map +1 -1
- package/dist/server/browserMessageProjection.js +39 -20
- package/dist/server/browserMessageProjection.js.map +1 -1
- package/dist/server/configRoutes.js +8 -0
- package/dist/server/configRoutes.js.map +1 -1
- package/dist/server/index.js +10 -1
- package/dist/server/index.js.map +1 -1
- package/dist/server/knownAutoInstallPiPackages.js +6 -0
- package/dist/server/knownAutoInstallPiPackages.js.map +1 -1
- package/dist/server/machines/machineProxyRoutes.js +37 -2
- package/dist/server/machines/machineProxyRoutes.js.map +1 -1
- package/dist/server/navigationPreferenceRoutes.js +59 -0
- package/dist/server/navigationPreferenceRoutes.js.map +1 -0
- package/dist/server/piPackageService.js +1 -1
- package/dist/server/piPackageService.js.map +1 -1
- package/dist/server/piWebPluginCatalog.js +1 -1
- package/dist/server/piWebPluginCatalog.js.map +1 -1
- package/dist/server/piWebPluginService.js +7 -1
- package/dist/server/piWebPluginService.js.map +1 -1
- package/dist/server/piWebStatus.js +17 -56
- package/dist/server/piWebStatus.js.map +1 -1
- package/dist/server/plugins/pluginBackendChannelProxyAdmission.js +1 -1
- package/dist/server/plugins/pluginBackendChannelProxyAdmission.js.map +1 -1
- package/dist/server/plugins/pluginBackendChannelProxyRoutes.js +40 -42
- package/dist/server/plugins/pluginBackendChannelProxyRoutes.js.map +1 -1
- package/dist/server/plugins/pluginBackendProxyRoutes.js +40 -44
- package/dist/server/plugins/pluginBackendProxyRoutes.js.map +1 -1
- package/dist/server/plugins/pluginBackendRegistry.js +66 -35
- package/dist/server/plugins/pluginBackendRegistry.js.map +1 -1
- 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/serverPluginRuntime.js +47 -11
- package/dist/server/plugins/serverPluginRuntime.js.map +1 -1
- package/dist/server/projectTrustRoutes.js +1 -1
- package/dist/server/projectTrustRoutes.js.map +1 -1
- package/dist/server/projects/projectLifecycleService.js +17 -7
- package/dist/server/projects/projectLifecycleService.js.map +1 -1
- package/dist/server/realtime/sessionEventHub.js +22 -9
- package/dist/server/realtime/sessionEventHub.js.map +1 -1
- package/dist/server/sessiond/agentHttpDispatcher.js +1 -1
- package/dist/server/sessiond/agentHttpDispatcher.js.map +1 -1
- package/dist/server/sessiond/autoInstallPiPackages.js +3 -3
- package/dist/server/sessiond/pluginBackendChannelRoutes.js +27 -14
- package/dist/server/sessiond/pluginBackendChannelRoutes.js.map +1 -1
- package/dist/server/sessiond/pluginBackendRoutes.js +56 -49
- 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/sessionProxyRoutes.js +46 -1
- package/dist/server/sessiond/sessionProxyRoutes.js.map +1 -1
- package/dist/server/sessiond/sessionServiceDependencies.js +1 -0
- package/dist/server/sessiond/sessionServiceDependencies.js.map +1 -1
- package/dist/server/sessiond/workspaceCatalogRoutes.js +6 -2
- 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.js +58 -8
- 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 -18
- package/dist/server/sessions/askUserTool.js.map +1 -1
- package/dist/server/sessions/attachmentService.js +1 -1
- package/dist/server/sessions/attachmentService.js.map +1 -1
- package/dist/server/sessions/authRoutes.js +12 -0
- package/dist/server/sessions/authRoutes.js.map +1 -1
- package/dist/server/sessions/authService.js +11 -1
- package/dist/server/sessions/authService.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/companionBackend.js +286 -0
- package/dist/server/sessions/companionBackend.js.map +1 -0
- package/dist/server/sessions/dockerEnvironmentFacts.js +16 -1
- 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 +2 -2
- package/dist/server/sessions/managementAgentTools.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/piSessionEventConnections.js +5 -2
- package/dist/server/sessions/piSessionEventConnections.js.map +1 -1
- package/dist/server/sessions/piSessionManagerGateway.js +32 -27
- package/dist/server/sessions/piSessionManagerGateway.js.map +1 -1
- package/dist/server/sessions/piSessionService.js +1296 -341
- 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 +1 -1
- package/dist/server/sessions/projectAuthService.js.map +1 -1
- package/dist/server/sessions/projectSettingsScope.js +1 -1
- package/dist/server/sessions/projectSettingsScope.js.map +1 -1
- package/dist/server/sessions/projectTrust.js +1 -1
- package/dist/server/sessions/projectTrust.js.map +1 -1
- package/dist/server/sessions/queuedMessageMutation.js +170 -0
- package/dist/server/sessions/queuedMessageMutation.js.map +1 -0
- package/dist/server/sessions/relaySkill.js +57 -7
- package/dist/server/sessions/relaySkill.js.map +1 -1
- package/dist/server/sessions/sessionArchiveMapping.js +6 -0
- 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/sessionCommandService.js +11 -24
- package/dist/server/sessions/sessionCommandService.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 +2 -2
- package/dist/server/sessions/sessionModelScope.js.map +1 -1
- package/dist/server/sessions/sessionNameGenerator.js +13 -33
- package/dist/server/sessions/sessionNameGenerator.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 +61 -6
- 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/sessionUiEvents.js +17 -4
- package/dist/server/sessions/sessionUiEvents.js.map +1 -1
- package/dist/server/sessions/spawnSessionTool.js +11 -3
- package/dist/server/sessions/spawnSessionTool.js.map +1 -1
- package/dist/server/sessions/spawnSubsessionTool.js +35 -19
- package/dist/server/sessions/spawnSubsessionTool.js.map +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/transcriptMarkdown.js +48 -0
- package/dist/server/sessions/transcriptMarkdown.js.map +1 -0
- package/dist/server/sessions/transcriptMessages.js +3 -0
- package/dist/server/sessions/transcriptMessages.js.map +1 -1
- 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 -9
- 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/webSocketBridge.js +9 -0
- package/dist/server/webSocketBridge.js.map +1 -1
- package/dist/server/workbench/skillSync.js +1 -1
- package/dist/server/workbench/skillSync.js.map +1 -1
- package/dist/server/workbench/workbenchTools.js +2 -2
- package/dist/server/workbench/workbenchTools.js.map +1 -1
- package/dist/server/workspaces/filePreviewService.js +5 -2
- package/dist/server/workspaces/filePreviewService.js.map +1 -1
- package/dist/server/workspaces/projectPiWebConfig.js +87 -6
- package/dist/server/workspaces/projectPiWebConfig.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/workspaceNotificationCommand.js +64 -0
- package/dist/server/workspaces/workspaceNotificationCommand.js.map +1 -0
- package/dist/server/workspaces/workspaceProviderRegistry.js +53 -0
- package/dist/server/workspaces/workspaceProviderRegistry.js.map +1 -1
- package/dist/server-plugin-api.d.ts +83 -15
- package/dist/server-plugin-api.js +25 -0
- package/dist/server-plugin-api.js.map +1 -1
- package/dist/sessiond/sessionDaemonClient.js +27 -3
- package/dist/sessiond/sessionDaemonClient.js.map +1 -1
- package/dist/shared/apiTypes.js +3 -2
- package/dist/shared/apiTypes.js.map +1 -1
- package/dist/shared/capabilities.js +3 -0
- package/dist/shared/capabilities.js.map +1 -1
- package/dist/shared/federatedRoutes.js +25 -5
- package/dist/shared/federatedRoutes.js.map +1 -1
- package/dist/shared/machineStatus.js +11 -2
- 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 +54 -0
- package/dist/shared/piWebConfigParsing.js.map +1 -1
- package/dist/shared/pluginApiTypes.d.ts +55 -0
- package/dist/shared/pluginBackendProtocol.js +56 -1
- 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/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/workspaceNotificationCli.js +95 -0
- package/dist/workspaceNotificationCli.js.map +1 -0
- package/docs/README.md +31 -0
- package/docs/config.md +77 -4
- package/docs/plugins.md +60 -11
- package/examples/session-bridge-plugin/package.json +2 -2
- package/examples/session-bridge-plugin/src/browser/index.ts +1 -1
- package/examples/session-bridge-plugin/src/companion.ts +1 -1
- package/extensions/pi-web.ts +3 -1
- package/package.json +46 -34
- package/skills/README.md +10 -9
- package/skills/relay/SKILL.md +24 -68
- package/skills/relay-runner/SKILL.md +40 -219
- package/dist/client/assets/PiWebApp-CN3g7SqA.js +0 -4362
- package/dist/client/assets/external-DUGCSDhZ.js +0 -2
- package/dist/client/assets/index-JduZlbIF.js +0 -2
- package/dist/client/assets/vendor-editor-core-YWog6mAR.js +0 -10
- package/dist/server/sessions/pendingAskStore.js +0 -275
- package/dist/server/sessions/pendingAskStore.js.map +0 -1
package/dist/plugin-api.d.ts
CHANGED
|
@@ -1,14 +1,88 @@
|
|
|
1
|
-
import type { TemplateResult } from "lit";
|
|
1
|
+
import type { ReactiveControllerHost, TemplateResult } from "lit";
|
|
2
2
|
import type { LocalizationContribution, Translator } from "./shared/pluginApiTypes.js";
|
|
3
|
-
import type { DeleteWorkspaceFileResponse, FileContentResponse, FileTreeResponse, JsonValue, MachineKind, 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, MachineKind, PiWebComponentStatus, PiWebDockerMode, PiWebInstallationInfo, PiWebInstallationKind, PiWebReleaseStatus, PiWebServiceComponent, PiWebStatusMessage, PiWebStatusResponse, PiWebStatusSeverity, PiWebVersionResponse, PluginCapability, PluginCapabilityProvision, TerminalCommandRun, TerminalCommandRunHandle, TerminalCommandRunStatus, WorkspaceProviderCapabilities, WorkspaceProviderMetadata, WorkspaceRemovalPresentation, WriteWorkspaceFileOptions, WriteWorkspaceFileResponse, DeleteWorkspaceFileResponse, MoveWorkspaceFileOptions, MoveWorkspaceFileResponse, } 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
|
+
});
|
|
5
78
|
export type PluginId = string;
|
|
6
79
|
export type LocalContributionId = string;
|
|
7
80
|
export type QualifiedContributionId = string;
|
|
8
81
|
export type HtmlTemplateTag = (strings: TemplateStringsArray, ...values: unknown[]) => TemplateResult;
|
|
9
82
|
export type SvgTemplateTag = (strings: TemplateStringsArray, ...values: unknown[]) => TemplateResult;
|
|
10
83
|
type MaybePromise<T> = T | Promise<T>;
|
|
11
|
-
|
|
84
|
+
/** @deprecated Browser API v4 remains supported; use PiWebPluginV5 for catalog and scoped backend access. */
|
|
85
|
+
export interface LegacyPiWebPlugin {
|
|
12
86
|
apiVersion: 4;
|
|
13
87
|
name: string;
|
|
14
88
|
/** Exact capability versions that must be active before this plugin starts. */
|
|
@@ -29,6 +103,8 @@ export interface PluginActivationContext {
|
|
|
29
103
|
readonly signal: AbortSignal;
|
|
30
104
|
/** Aborted before failed-start rollback or browser-host shutdown disposal. */
|
|
31
105
|
readonly lifetimeSignal: AbortSignal;
|
|
106
|
+
/** Current browser selection, independent of panel mounting. Omitted by older hosts. */
|
|
107
|
+
readonly selection?: PluginSelectionService;
|
|
32
108
|
}
|
|
33
109
|
/** Resolver containing only the exact capability requirements declared by a plugin. */
|
|
34
110
|
export interface PluginCapabilityResolver {
|
|
@@ -66,6 +142,48 @@ export interface ContentRendererContribution {
|
|
|
66
142
|
/** Synchronous Lit template; own async work and activation efficiency in a component and honor signal. */
|
|
67
143
|
render(input: ContentRendererInput): TemplateResult;
|
|
68
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
|
+
}
|
|
69
187
|
export interface ContentRenderRequest {
|
|
70
188
|
machineId: string;
|
|
71
189
|
text: string;
|
|
@@ -76,6 +194,7 @@ export interface ContentRenderRequest {
|
|
|
76
194
|
export interface ContentRendererOption {
|
|
77
195
|
readonly id: string;
|
|
78
196
|
readonly label: string;
|
|
197
|
+
readonly title?: string;
|
|
79
198
|
readonly renderMode: "manual" | "automatic";
|
|
80
199
|
}
|
|
81
200
|
export type ContentTextRenderRequest = ContentRenderRequest & {
|
|
@@ -98,12 +217,12 @@ export interface ContentMarkdownRenderRequest {
|
|
|
98
217
|
}
|
|
99
218
|
/** Host capability token: { pluginId: "pi-web", id: "content-rendering", version: 1, parse }. */
|
|
100
219
|
export interface ContentRenderingCapability {
|
|
101
|
-
/** Eligible choices in
|
|
220
|
+
/** Eligible choices in plugin discovery order, then contribution declaration order. */
|
|
102
221
|
listRenderers(request: ContentRenderRequest): readonly ContentRendererOption[];
|
|
103
222
|
/**
|
|
104
223
|
* Undefined when no renderer claims the complete text file.
|
|
105
224
|
* External controls require the caller to provide raw-source access, mode switching and a renderer chooser.
|
|
106
|
-
* Only external controls accept rendererId; absent or unavailable IDs use the first match.
|
|
225
|
+
* Only external controls accept rendererId; absent or unavailable IDs use the last automatic match, otherwise the first manual match.
|
|
107
226
|
* Consumers authorize manual previews according to their own user-intent policy.
|
|
108
227
|
* Listing and creating templates never call render.
|
|
109
228
|
*/
|
|
@@ -117,9 +236,12 @@ export interface ContentRenderingCapability {
|
|
|
117
236
|
export interface PluginContributions {
|
|
118
237
|
localizations?: LocalizationContribution[];
|
|
119
238
|
contentRenderers?: ContentRendererContribution[];
|
|
239
|
+
messageActions?: MessageActionContribution[];
|
|
120
240
|
actions?: PluginAction[];
|
|
241
|
+
applicationPanels?: ApplicationPanelContribution[];
|
|
121
242
|
workspacePanels?: WorkspacePanelContribution[];
|
|
122
243
|
workspaceLabels?: WorkspaceLabelContribution[];
|
|
244
|
+
sessionLabels?: SessionLabelContribution[];
|
|
123
245
|
themes?: ThemeContribution[];
|
|
124
246
|
themePairs?: ThemePairContribution[];
|
|
125
247
|
}
|
|
@@ -128,25 +250,74 @@ export interface PluginMachine {
|
|
|
128
250
|
name: string;
|
|
129
251
|
kind: MachineKind;
|
|
130
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
|
+
}
|
|
131
271
|
/** Selected conversation snapshot, scoped to PluginRuntimeState.selectedMachine. */
|
|
132
272
|
export interface PluginSelectedSession {
|
|
133
273
|
id: string;
|
|
134
274
|
/** Workspace working directory. */
|
|
135
275
|
cwd: string;
|
|
136
276
|
name?: string;
|
|
277
|
+
/** Detached, explicitly UI-safe data by package/plugin namespace. Absent on older hosts. */
|
|
278
|
+
metadata?: import("./shared/pluginApiTypes.js").SessionUiMetadata;
|
|
137
279
|
archived: boolean;
|
|
138
280
|
/** True while the browser is waiting for session creation to finish. */
|
|
139
281
|
pending: boolean;
|
|
140
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
|
+
}
|
|
141
302
|
export interface PluginRuntimeState {
|
|
142
303
|
/** Identity of the currently selected machine. Undefined only on older hosts or before machines load. */
|
|
143
304
|
selectedMachine?: PluginMachine;
|
|
305
|
+
selectedProject?: PluginProject;
|
|
144
306
|
selectedWorkspace?: Workspace;
|
|
145
307
|
selectedSession?: PluginSelectedSession;
|
|
146
308
|
workspaceTool?: string;
|
|
147
309
|
mainView?: "navigation" | "chat" | "workspace";
|
|
148
310
|
piWebStatus?: PiWebStatusResponse;
|
|
149
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
|
+
}
|
|
150
321
|
export interface PluginPromptEditor {
|
|
151
322
|
/** Insert text at the current cursor position. Replaces any selection.
|
|
152
323
|
* If the editor is not focused, focuses it first.
|
|
@@ -160,20 +331,64 @@ export interface PluginPromptEditor {
|
|
|
160
331
|
end: number;
|
|
161
332
|
text: string;
|
|
162
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;
|
|
163
344
|
}
|
|
164
|
-
/** A complete
|
|
345
|
+
/** A non-null destination: complete by default, or a current-URL patch with mode: "patch". */
|
|
165
346
|
export interface PluginNavigationDestination {
|
|
166
347
|
machineId?: string;
|
|
167
348
|
projectId?: string;
|
|
168
349
|
workspaceId?: string;
|
|
350
|
+
/** Full, exact session ID in the target workspace; prefixes are not resolved. */
|
|
169
351
|
sessionId?: string;
|
|
170
352
|
view?: "navigation" | "chat" | "workspace";
|
|
171
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>;
|
|
172
385
|
}
|
|
173
386
|
export interface PluginRuntimeContext {
|
|
174
387
|
/** Navigate using host restoration defaults. Route failures appear in the host UI. */
|
|
175
|
-
navigate:
|
|
388
|
+
navigate: PluginNavigate;
|
|
176
389
|
state: PluginRuntimeState;
|
|
390
|
+
/** Read-only discovery on this context's machine. Omitted by older hosts. */
|
|
391
|
+
projects?: PluginProjects;
|
|
177
392
|
prompt: PluginPromptEditor;
|
|
178
393
|
openActionPalette: () => void;
|
|
179
394
|
focusPrompt: () => void;
|
|
@@ -200,6 +415,79 @@ export interface PluginRuntimeContext {
|
|
|
200
415
|
archiveSession: () => void | Promise<void>;
|
|
201
416
|
stopActiveWork: () => void | Promise<void>;
|
|
202
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;
|
|
203
491
|
export interface PluginAction {
|
|
204
492
|
id: LocalContributionId;
|
|
205
493
|
title: string;
|
|
@@ -307,44 +595,6 @@ export type WorkspacePanelFiles = WorkspaceFiles;
|
|
|
307
595
|
export interface WorkspaceBackend {
|
|
308
596
|
request(operation: string, input: JsonValue): Promise<JsonValue>;
|
|
309
597
|
}
|
|
310
|
-
export interface PluginPeerRequestOptions {
|
|
311
|
-
/** Cancels this bounded request through local or federated host transport. */
|
|
312
|
-
readonly signal?: AbortSignal;
|
|
313
|
-
}
|
|
314
|
-
/** Callbacks and cancellation for one bounded package-peer channel. */
|
|
315
|
-
export interface PluginPeerChannelOptions {
|
|
316
|
-
/** Cancels the channel open or closes the live channel through every host hop. */
|
|
317
|
-
readonly signal?: AbortSignal;
|
|
318
|
-
/** Receives one plugin-authored JSON frame after the channel is ready. */
|
|
319
|
-
readonly onData: (data: JsonValue) => void;
|
|
320
|
-
}
|
|
321
|
-
export interface PluginPeerChannelClose {
|
|
322
|
-
readonly code: number;
|
|
323
|
-
readonly reason: string;
|
|
324
|
-
readonly wasClean: boolean;
|
|
325
|
-
/** Attributed host or server-plugin failure when one preceded the close. */
|
|
326
|
-
readonly error?: Readonly<{
|
|
327
|
-
code: string;
|
|
328
|
-
message: string;
|
|
329
|
-
}>;
|
|
330
|
-
}
|
|
331
|
-
export interface PluginPeerChannel {
|
|
332
|
-
readonly closed: Promise<PluginPeerChannelClose>;
|
|
333
|
-
/** Queue one bounded JSON frame or throw. Success means queue acceptance, not remote receipt. */
|
|
334
|
-
send(data: JsonValue): void;
|
|
335
|
-
close(reason?: string): void;
|
|
336
|
-
}
|
|
337
|
-
/**
|
|
338
|
-
* Exact revision-paired path to this browser package's active server entry.
|
|
339
|
-
* A peer supplies a request handler, a channel handler, or both, but never neither.
|
|
340
|
-
*/
|
|
341
|
-
export type PluginPeer = {
|
|
342
|
-
request(operation: string, input: JsonValue, options?: PluginPeerRequestOptions): Promise<JsonValue>;
|
|
343
|
-
openChannel?(operation: string, input: JsonValue, options: PluginPeerChannelOptions): Promise<PluginPeerChannel>;
|
|
344
|
-
} | {
|
|
345
|
-
request?: undefined;
|
|
346
|
-
openChannel(operation: string, input: JsonValue, options: PluginPeerChannelOptions): Promise<PluginPeerChannel>;
|
|
347
|
-
};
|
|
348
598
|
export interface WorkspaceHost {
|
|
349
599
|
requestRender(): void;
|
|
350
600
|
}
|
|
@@ -356,6 +606,8 @@ export interface WorkspaceContext {
|
|
|
356
606
|
files: WorkspaceFilesContextValue;
|
|
357
607
|
/** Legacy request path to the server module that owns this workspace. */
|
|
358
608
|
backend?: WorkspaceBackend;
|
|
609
|
+
/** Read-only discovery on this context's machine. Omitted by older hosts. */
|
|
610
|
+
projects?: PluginProjects;
|
|
359
611
|
/** Exact package-paired request/channel capabilities, independent of workspace ownership. */
|
|
360
612
|
peer?: PluginPeer;
|
|
361
613
|
host: WorkspaceHost;
|
|
@@ -383,12 +635,37 @@ export interface WorkspacePanelNavigationV1 {
|
|
|
383
635
|
}
|
|
384
636
|
export interface WorkspacePanelContext extends WorkspaceContext {
|
|
385
637
|
/** Navigate using host restoration defaults. Route failures appear in the host UI. */
|
|
386
|
-
navigate:
|
|
638
|
+
navigate: PluginNavigate;
|
|
387
639
|
prompt: PluginPromptEditor;
|
|
388
640
|
terminal: WorkspacePanelTerminal;
|
|
389
641
|
/** Contribution-scoped address-bar state for deep links and browser history. */
|
|
390
642
|
navigation?: WorkspacePanelNavigationV1;
|
|
391
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;
|
|
668
|
+
}
|
|
392
669
|
export type WorkspacePanelIcon = TemplateResult;
|
|
393
670
|
export type WorkspaceResource = "workspace.files";
|
|
394
671
|
export type WorkspaceInvalidationReason = "manual" | "mutation" | "agent-activity";
|
|
@@ -397,14 +674,12 @@ export interface WorkspaceInvalidation {
|
|
|
397
674
|
readonly resources: readonly WorkspaceResource[];
|
|
398
675
|
}
|
|
399
676
|
export interface WorkspacePanelContribution {
|
|
677
|
+
routeAliases?: string[];
|
|
678
|
+
navigationAliases?: string[];
|
|
400
679
|
id: LocalContributionId;
|
|
401
680
|
title: string;
|
|
402
681
|
icon?: WorkspacePanelIcon;
|
|
403
682
|
order?: number;
|
|
404
|
-
/** Former URL tool/view values that should resolve to this panel. */
|
|
405
|
-
routeAliases?: string[];
|
|
406
|
-
/** Former qualified contribution ids whose namespaced query keys remain readable. */
|
|
407
|
-
navigationAliases?: QualifiedContributionId[];
|
|
408
683
|
visible?: (context: WorkspacePanelContext) => boolean;
|
|
409
684
|
/** Return a deep-link query to open a workspace-relative file, or undefined if unsupported. */
|
|
410
685
|
fileOpenQuery?: (context: WorkspacePanelContext, path: string) => Readonly<Record<string, ContributionQueryValue>> | undefined;
|
|
@@ -445,6 +720,36 @@ export interface WorkspaceLabelContribution {
|
|
|
445
720
|
visible?: (context: WorkspaceLabelContext) => boolean;
|
|
446
721
|
items: (context: WorkspaceLabelContext) => WorkspaceLabelItem[];
|
|
447
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
|
+
}
|
|
448
753
|
export type ThemeColorScheme = "dark" | "light";
|
|
449
754
|
export type ThemeTokens = Record<string, string>;
|
|
450
755
|
export interface ThemeContribution {
|
|
@@ -463,3 +768,40 @@ export interface ThemePairContribution {
|
|
|
463
768
|
light: LocalContributionId;
|
|
464
769
|
dark: LocalContributionId;
|
|
465
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
|
+
}
|
|
@@ -9,7 +9,14 @@ export class WorkspaceActivityService {
|
|
|
9
9
|
}
|
|
10
10
|
/** Activity projection consumed by the daemon-owned machine status tree. */
|
|
11
11
|
activeSnapshot(scope = NORMAL_SESSION_EVENT_SCOPE) {
|
|
12
|
-
return {
|
|
12
|
+
return {
|
|
13
|
+
workspaces: this.activeCwds(scope).map((cwd) => this.summaryForCwd(cwd, scope)),
|
|
14
|
+
sessions: [...this.sessions].flatMap(([key, record]) => {
|
|
15
|
+
const identity = unscopedKey(key);
|
|
16
|
+
return identity.scope === scope && isSessionActive(record.status, record.activity)
|
|
17
|
+
? [{ sessionId: identity.id, cwd: record.cwd }] : [];
|
|
18
|
+
}),
|
|
19
|
+
};
|
|
13
20
|
}
|
|
14
21
|
applySessionStatus(cwd, status, scope = NORMAL_SESSION_EVENT_SCOPE) {
|
|
15
22
|
const key = scopedKey(status.sessionId, scope);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspaceActivityService.js","sourceRoot":"","sources":["../../../src/server/activity/workspaceActivityService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAE3D,OAAO,EAAE,0BAA0B,EAA0B,MAAM,kCAAkC,CAAC;AAsBtG,MAAM,OAAO,wBAAwB;IAOnC,YAAY,oBAAwF,EAAE,SAA8C;QANnI,aAAQ,GAAG,IAAI,GAAG,EAAyB,CAAC;QAC5C,cAAS,GAAG,IAAI,GAAG,EAA0B,CAAC;QAM7D,IAAI,CAAC,SAAS,GAAG,OAAO,oBAAoB,KAAK,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,oBAAoB,CAAC;QAC/F,IAAI,CAAC,SAAS,GAAG,OAAO,oBAAoB,KAAK,UAAU,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,SAAS,CAAC;IACjG,CAAC;IAED,4EAA4E;IAC5E,cAAc,CAAC,QAA2B,0BAA0B;QAClE,OAAO,
|
|
1
|
+
{"version":3,"file":"workspaceActivityService.js","sourceRoot":"","sources":["../../../src/server/activity/workspaceActivityService.ts"],"names":[],"mappings":"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"}
|