@agimon-ai/po-core 0.0.0-alpha.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/LICENSE +21 -0
- package/README.md +7 -0
- package/dist/_virtual/_rolldown/runtime.cjs +23 -0
- package/dist/agentModel.cjs +4 -0
- package/dist/agentModel.d.mts +2 -0
- package/dist/agentModel.mjs +2 -0
- package/dist/apiContracts.cjs +2094 -0
- package/dist/apiContracts.cjs.map +1 -0
- package/dist/apiContracts.d.mts +1086 -0
- package/dist/apiContracts.d.mts.map +1 -0
- package/dist/apiContracts.mjs +2074 -0
- package/dist/apiContracts.mjs.map +1 -0
- package/dist/askUser.cjs +8 -0
- package/dist/askUser.d.mts +2 -0
- package/dist/askUser.mjs +2 -0
- package/dist/authorTools.cjs +5 -0
- package/dist/authorTools.d.mts +2 -0
- package/dist/authorTools.mjs +2 -0
- package/dist/backgroundWork.cjs +9 -0
- package/dist/backgroundWork.d.mts +2 -0
- package/dist/backgroundWork.mjs +2 -0
- package/dist/bundleAssetPolicy.cjs +5 -0
- package/dist/bundleAssetPolicy.d.mts +2 -0
- package/dist/bundleAssetPolicy.mjs +2 -0
- package/dist/childProcess.cjs +15 -0
- package/dist/childProcess.d.mts +2 -0
- package/dist/childProcess.mjs +2 -0
- package/dist/childSession.cjs +9 -0
- package/dist/childSession.d.mts +3 -0
- package/dist/childSession.mjs +3 -0
- package/dist/cockpitContainer.cjs +4 -0
- package/dist/cockpitContainer.d.mts +2 -0
- package/dist/cockpitContainer.mjs +2 -0
- package/dist/config.cjs +13 -0
- package/dist/config.d.mts +3 -0
- package/dist/config.mjs +2 -0
- package/dist/contextApi.cjs +12 -0
- package/dist/contextApi.d.mts +4 -0
- package/dist/contextApi.mjs +3 -0
- package/dist/contextContributions.cjs +7 -0
- package/dist/contextContributions.d.mts +3 -0
- package/dist/contextContributions.mjs +3 -0
- package/dist/contextDetail.cjs +65 -0
- package/dist/contextDetail.cjs.map +1 -0
- package/dist/contextDetail.d.mts +19 -0
- package/dist/contextDetail.d.mts.map +1 -0
- package/dist/contextDetail.mjs +64 -0
- package/dist/contextDetail.mjs.map +1 -0
- package/dist/contextDetailStore.cjs +96 -0
- package/dist/contextDetailStore.cjs.map +1 -0
- package/dist/contextDetailStore.d.mts +21 -0
- package/dist/contextDetailStore.d.mts.map +1 -0
- package/dist/contextDetailStore.mjs +87 -0
- package/dist/contextDetailStore.mjs.map +1 -0
- package/dist/contextProjection.cjs +121 -0
- package/dist/contextProjection.cjs.map +1 -0
- package/dist/contextProjection.d.mts +130 -0
- package/dist/contextProjection.d.mts.map +1 -0
- package/dist/contextProjection.mjs +117 -0
- package/dist/contextProjection.mjs.map +1 -0
- package/dist/cordisHost.cjs +13 -0
- package/dist/cordisHost.d.mts +2 -0
- package/dist/cordisHost.mjs +2 -0
- package/dist/delegation.cjs +18 -0
- package/dist/delegation.d.mts +2 -0
- package/dist/delegation.mjs +2 -0
- package/dist/doomPackage.cjs +61 -0
- package/dist/doomPackage.cjs.map +1 -0
- package/dist/doomPackage.d.mts +17 -0
- package/dist/doomPackage.d.mts.map +1 -0
- package/dist/doomPackage.mjs +54 -0
- package/dist/doomPackage.mjs.map +1 -0
- package/dist/executionBudget.cjs +232 -0
- package/dist/executionBudget.cjs.map +1 -0
- package/dist/executionBudget.d.mts +11 -0
- package/dist/executionBudget.d.mts.map +1 -0
- package/dist/executionBudget.mjs +226 -0
- package/dist/executionBudget.mjs.map +1 -0
- package/dist/extensionFile.cjs +19 -0
- package/dist/extensionFile.d.mts +3 -0
- package/dist/extensionFile.mjs +2 -0
- package/dist/footer.cjs +6 -0
- package/dist/footer.d.mts +2 -0
- package/dist/footer.mjs +2 -0
- package/dist/headless.cjs +16 -0
- package/dist/headless.d.mts +2 -0
- package/dist/headless.mjs +2 -0
- package/dist/headlessHub.cjs +1008 -0
- package/dist/headlessHub.cjs.map +1 -0
- package/dist/headlessHub.d.mts +176 -0
- package/dist/headlessHub.d.mts.map +1 -0
- package/dist/headlessHub.mjs +1005 -0
- package/dist/headlessHub.mjs.map +1 -0
- package/dist/headlessServer.cjs +956 -0
- package/dist/headlessServer.cjs.map +1 -0
- package/dist/headlessServer.d.mts +66 -0
- package/dist/headlessServer.d.mts.map +1 -0
- package/dist/headlessServer.mjs +949 -0
- package/dist/headlessServer.mjs.map +1 -0
- package/dist/headlessSessionHost.cjs +0 -0
- package/dist/headlessSessionHost.d.mts +89 -0
- package/dist/headlessSessionHost.d.mts.map +1 -0
- package/dist/headlessSessionHost.mjs +1 -0
- package/dist/headlessSessionManager.cjs +51 -0
- package/dist/headlessSessionManager.cjs.map +1 -0
- package/dist/headlessSessionManager.d.mts +6 -0
- package/dist/headlessSessionManager.d.mts.map +1 -0
- package/dist/headlessSessionManager.mjs +50 -0
- package/dist/headlessSessionManager.mjs.map +1 -0
- package/dist/help.cjs +24 -0
- package/dist/help.d.mts +3 -0
- package/dist/help.mjs +3 -0
- package/dist/history.cjs +25 -0
- package/dist/history.d.mts +10 -0
- package/dist/history.mjs +10 -0
- package/dist/historyOwnership.cjs +253 -0
- package/dist/historyOwnership.cjs.map +1 -0
- package/dist/historyOwnership.d.mts +23 -0
- package/dist/historyOwnership.d.mts.map +1 -0
- package/dist/historyOwnership.mjs +247 -0
- package/dist/historyOwnership.mjs.map +1 -0
- package/dist/hubChannel.cjs +4 -0
- package/dist/hubChannel.d.mts +2 -0
- package/dist/hubChannel.mjs +2 -0
- package/dist/index.cjs +44 -0
- package/dist/index.d.mts +6 -0
- package/dist/index.mjs +6 -0
- package/dist/json.cjs +6 -0
- package/dist/json.d.mts +2 -0
- package/dist/json.mjs +2 -0
- package/dist/jsonlSessionRepo.cjs +44 -0
- package/dist/jsonlSessionRepo.cjs.map +1 -0
- package/dist/jsonlSessionRepo.d.mts +7 -0
- package/dist/jsonlSessionRepo.d.mts.map +1 -0
- package/dist/jsonlSessionRepo.mjs +42 -0
- package/dist/jsonlSessionRepo.mjs.map +1 -0
- package/dist/kernel.cjs +3 -0
- package/dist/kernel.d.mts +3 -0
- package/dist/kernel.mjs +2 -0
- package/dist/leader.cjs +9 -0
- package/dist/leader.d.mts +2 -0
- package/dist/leader.mjs +2 -0
- package/dist/logSinkTelemetry.cjs +5 -0
- package/dist/logSinkTelemetry.d.mts +2 -0
- package/dist/logSinkTelemetry.mjs +2 -0
- package/dist/machineApi.cjs +92 -0
- package/dist/machineApi.cjs.map +1 -0
- package/dist/machineApi.d.mts +7 -0
- package/dist/machineApi.d.mts.map +1 -0
- package/dist/machineApi.mjs +88 -0
- package/dist/machineApi.mjs.map +1 -0
- package/dist/main.cjs +11 -0
- package/dist/main.d.mts +5 -0
- package/dist/main.mjs +4 -0
- package/dist/mcpFacet.cjs +9 -0
- package/dist/mcpFacet.d.mts +4 -0
- package/dist/mcpFacet.mjs +3 -0
- package/dist/mcpProjection.cjs +16 -0
- package/dist/mcpProjection.d.mts +2 -0
- package/dist/mcpProjection.mjs +2 -0
- package/dist/mcpSchemaCost.cjs +195 -0
- package/dist/mcpSchemaCost.cjs.map +1 -0
- package/dist/mcpSchemaCost.d.mts +35 -0
- package/dist/mcpSchemaCost.d.mts.map +1 -0
- package/dist/mcpSchemaCost.mjs +190 -0
- package/dist/mcpSchemaCost.mjs.map +1 -0
- package/dist/mcpSession.cjs +9 -0
- package/dist/mcpSession.d.mts +2 -0
- package/dist/mcpSession.mjs +2 -0
- package/dist/mcpStatus.cjs +7 -0
- package/dist/mcpStatus.d.mts +2 -0
- package/dist/mcpStatus.mjs +2 -0
- package/dist/mcpToolResolver.cjs +5 -0
- package/dist/mcpToolResolver.d.mts +2 -0
- package/dist/mcpToolResolver.mjs +2 -0
- package/dist/mcpWidget.cjs +0 -0
- package/dist/mcpWidget.d.mts +2 -0
- package/dist/mcpWidget.mjs +1 -0
- package/dist/moduleResolution.cjs +412 -0
- package/dist/moduleResolution.cjs.map +1 -0
- package/dist/moduleResolution.d.mts +72 -0
- package/dist/moduleResolution.d.mts.map +1 -0
- package/dist/moduleResolution.mjs +396 -0
- package/dist/moduleResolution.mjs.map +1 -0
- package/dist/narration.cjs +10 -0
- package/dist/narration.d.mts +2 -0
- package/dist/narration.mjs +2 -0
- package/dist/native.cjs +29 -0
- package/dist/native.d.mts +12 -0
- package/dist/native.mjs +8 -0
- package/dist/notification.cjs +17 -0
- package/dist/notification.d.mts +2 -0
- package/dist/notification.mjs +2 -0
- package/dist/packageApi.cjs +17 -0
- package/dist/packageApi.d.mts +3 -0
- package/dist/packageApi.mjs +3 -0
- package/dist/packageApiServer.cjs +196 -0
- package/dist/packageApiServer.cjs.map +1 -0
- package/dist/packageApiServer.d.mts +62 -0
- package/dist/packageApiServer.d.mts.map +1 -0
- package/dist/packageApiServer.mjs +194 -0
- package/dist/packageApiServer.mjs.map +1 -0
- package/dist/piSettings.cjs +20 -0
- package/dist/piSettings.d.mts +2 -0
- package/dist/piSettings.mjs +2 -0
- package/dist/pluginProtocol.cjs +10 -0
- package/dist/pluginProtocol.d.mts +2 -0
- package/dist/pluginProtocol.mjs +2 -0
- package/dist/profileIdentity.cjs +6 -0
- package/dist/profileIdentity.d.mts +2 -0
- package/dist/profileIdentity.mjs +2 -0
- package/dist/protocol.cjs +10 -0
- package/dist/protocol.d.mts +2 -0
- package/dist/protocol.mjs +2 -0
- package/dist/readiness.cjs +8 -0
- package/dist/readiness.d.mts +2 -0
- package/dist/readiness.mjs +2 -0
- package/dist/remoteApi.cjs +45 -0
- package/dist/remoteApi.cjs.map +1 -0
- package/dist/remoteApi.d.mts +7 -0
- package/dist/remoteApi.d.mts.map +1 -0
- package/dist/remoteApi.mjs +44 -0
- package/dist/remoteApi.mjs.map +1 -0
- package/dist/remoteRuntime.cjs +498 -0
- package/dist/remoteRuntime.cjs.map +1 -0
- package/dist/remoteRuntime.d.mts +36 -0
- package/dist/remoteRuntime.d.mts.map +1 -0
- package/dist/remoteRuntime.mjs +494 -0
- package/dist/remoteRuntime.mjs.map +1 -0
- package/dist/runtimeConfig.cjs +232 -0
- package/dist/runtimeConfig.cjs.map +1 -0
- package/dist/runtimeConfig.d.mts +313 -0
- package/dist/runtimeConfig.d.mts.map +1 -0
- package/dist/runtimeConfig.mjs +221 -0
- package/dist/runtimeConfig.mjs.map +1 -0
- package/dist/runtimeContextApi.cjs +64 -0
- package/dist/runtimeContextApi.cjs.map +1 -0
- package/dist/runtimeContextApi.d.mts +16 -0
- package/dist/runtimeContextApi.d.mts.map +1 -0
- package/dist/runtimeContextApi.mjs +62 -0
- package/dist/runtimeContextApi.mjs.map +1 -0
- package/dist/runtimeCordisHost.cjs +223 -0
- package/dist/runtimeCordisHost.cjs.map +1 -0
- package/dist/runtimeCordisHost.d.mts +78 -0
- package/dist/runtimeCordisHost.d.mts.map +1 -0
- package/dist/runtimeCordisHost.mjs +212 -0
- package/dist/runtimeCordisHost.mjs.map +1 -0
- package/dist/runtimeHeadlessSessionManager.cjs +0 -0
- package/dist/runtimeHeadlessSessionManager.d.mts +18 -0
- package/dist/runtimeHeadlessSessionManager.d.mts.map +1 -0
- package/dist/runtimeHeadlessSessionManager.mjs +1 -0
- package/dist/runtimeIdentity.cjs +26 -0
- package/dist/runtimeIdentity.cjs.map +1 -0
- package/dist/runtimeIdentity.d.mts +7 -0
- package/dist/runtimeIdentity.d.mts.map +1 -0
- package/dist/runtimeIdentity.mjs +21 -0
- package/dist/runtimeIdentity.mjs.map +1 -0
- package/dist/runtimeJson.cjs +46 -0
- package/dist/runtimeJson.cjs.map +1 -0
- package/dist/runtimeJson.d.mts +22 -0
- package/dist/runtimeJson.d.mts.map +1 -0
- package/dist/runtimeJson.mjs +39 -0
- package/dist/runtimeJson.mjs.map +1 -0
- package/dist/runtimeLogSinkTelemetry.cjs +102 -0
- package/dist/runtimeLogSinkTelemetry.cjs.map +1 -0
- package/dist/runtimeLogSinkTelemetry.d.mts +49 -0
- package/dist/runtimeLogSinkTelemetry.d.mts.map +1 -0
- package/dist/runtimeLogSinkTelemetry.mjs +99 -0
- package/dist/runtimeLogSinkTelemetry.mjs.map +1 -0
- package/dist/runtimePackages.cjs +120 -0
- package/dist/runtimePackages.cjs.map +1 -0
- package/dist/runtimePackages.d.mts +57 -0
- package/dist/runtimePackages.d.mts.map +1 -0
- package/dist/runtimePackages.mjs +110 -0
- package/dist/runtimePackages.mjs.map +1 -0
- package/dist/runtimePiSettings.cjs +257 -0
- package/dist/runtimePiSettings.cjs.map +1 -0
- package/dist/runtimePiSettings.d.mts +70 -0
- package/dist/runtimePiSettings.d.mts.map +1 -0
- package/dist/runtimePiSettings.mjs +235 -0
- package/dist/runtimePiSettings.mjs.map +1 -0
- package/dist/runtimeProtocol.cjs +228 -0
- package/dist/runtimeProtocol.cjs.map +1 -0
- package/dist/runtimeProtocol.d.mts +86 -0
- package/dist/runtimeProtocol.d.mts.map +1 -0
- package/dist/runtimeProtocol.mjs +219 -0
- package/dist/runtimeProtocol.mjs.map +1 -0
- package/dist/runtimeToolNames.cjs +51 -0
- package/dist/runtimeToolNames.cjs.map +1 -0
- package/dist/runtimeToolNames.d.mts +24 -0
- package/dist/runtimeToolNames.d.mts.map +1 -0
- package/dist/runtimeToolNames.mjs +49 -0
- package/dist/runtimeToolNames.mjs.map +1 -0
- package/dist/runtimeTransition.cjs +27 -0
- package/dist/runtimeTransition.cjs.map +1 -0
- package/dist/runtimeTransition.d.mts +114 -0
- package/dist/runtimeTransition.d.mts.map +1 -0
- package/dist/runtimeTransition.mjs +24 -0
- package/dist/runtimeTransition.mjs.map +1 -0
- package/dist/sandboxHarness.cjs +6 -0
- package/dist/sandboxHarness.d.mts +2 -0
- package/dist/sandboxHarness.mjs +2 -0
- package/dist/server.cjs +17 -0
- package/dist/server.d.mts +10 -0
- package/dist/server.mjs +7 -0
- package/dist/serverFacet.cjs +34 -0
- package/dist/serverFacet.d.mts +10 -0
- package/dist/serverFacet.mjs +9 -0
- package/dist/serverTelemetry.cjs +25 -0
- package/dist/serverTelemetry.cjs.map +1 -0
- package/dist/serverTelemetry.d.mts +12 -0
- package/dist/serverTelemetry.d.mts.map +1 -0
- package/dist/serverTelemetry.mjs +23 -0
- package/dist/serverTelemetry.mjs.map +1 -0
- package/dist/sessionFilesApi.cjs +96 -0
- package/dist/sessionFilesApi.cjs.map +1 -0
- package/dist/sessionFilesApi.d.mts +7 -0
- package/dist/sessionFilesApi.d.mts.map +1 -0
- package/dist/sessionFilesApi.mjs +91 -0
- package/dist/sessionFilesApi.mjs.map +1 -0
- package/dist/sessionMcp.cjs +6 -0
- package/dist/sessionMcp.d.mts +5 -0
- package/dist/sessionMcp.mjs +3 -0
- package/dist/sessionProtocol.cjs +8 -0
- package/dist/sessionProtocol.d.mts +3 -0
- package/dist/sessionProtocol.mjs +2 -0
- package/dist/skills.cjs +9 -0
- package/dist/skills.d.mts +2 -0
- package/dist/skills.mjs +2 -0
- package/dist/sqliteSessionStorage.cjs +168 -0
- package/dist/sqliteSessionStorage.cjs.map +1 -0
- package/dist/sqliteSessionStorage.d.mts +35 -0
- package/dist/sqliteSessionStorage.d.mts.map +1 -0
- package/dist/sqliteSessionStorage.mjs +158 -0
- package/dist/sqliteSessionStorage.mjs.map +1 -0
- package/dist/src/constants/authorTools.cjs +10 -0
- package/dist/src/constants/authorTools.cjs.map +1 -0
- package/dist/src/constants/authorTools.d.mts +6 -0
- package/dist/src/constants/authorTools.d.mts.map +1 -0
- package/dist/src/constants/authorTools.mjs +8 -0
- package/dist/src/constants/authorTools.mjs.map +1 -0
- package/dist/src/constants/contextApi.cjs +31 -0
- package/dist/src/constants/contextApi.cjs.map +1 -0
- package/dist/src/constants/contextApi.d.mts +23 -0
- package/dist/src/constants/contextApi.d.mts.map +1 -0
- package/dist/src/constants/contextApi.mjs +25 -0
- package/dist/src/constants/contextApi.mjs.map +1 -0
- package/dist/src/constants/nativeHost.cjs +56 -0
- package/dist/src/constants/nativeHost.cjs.map +1 -0
- package/dist/src/constants/nativeHost.d.mts +21 -0
- package/dist/src/constants/nativeHost.d.mts.map +1 -0
- package/dist/src/constants/nativeHost.mjs +53 -0
- package/dist/src/constants/nativeHost.mjs.map +1 -0
- package/dist/src/constants/remote.cjs +132 -0
- package/dist/src/constants/remote.cjs.map +1 -0
- package/dist/src/constants/remote.mjs +99 -0
- package/dist/src/constants/remote.mjs.map +1 -0
- package/dist/src/constants/sessionFiles.cjs +27 -0
- package/dist/src/constants/sessionFiles.cjs.map +1 -0
- package/dist/src/constants/sessionFiles.mjs +25 -0
- package/dist/src/constants/sessionFiles.mjs.map +1 -0
- package/dist/src/constants/voiceReloadHandoff.cjs +12 -0
- package/dist/src/constants/voiceReloadHandoff.cjs.map +1 -0
- package/dist/src/constants/voiceReloadHandoff.d.mts +7 -0
- package/dist/src/constants/voiceReloadHandoff.d.mts.map +1 -0
- package/dist/src/constants/voiceReloadHandoff.mjs +9 -0
- package/dist/src/constants/voiceReloadHandoff.mjs.map +1 -0
- package/dist/src/constants/voiceTools.cjs +96 -0
- package/dist/src/constants/voiceTools.cjs.map +1 -0
- package/dist/src/constants/voiceTools.d.mts +58 -0
- package/dist/src/constants/voiceTools.d.mts.map +1 -0
- package/dist/src/constants/voiceTools.mjs +60 -0
- package/dist/src/constants/voiceTools.mjs.map +1 -0
- package/dist/src/extensions/extensionFile.cjs +140 -0
- package/dist/src/extensions/extensionFile.cjs.map +1 -0
- package/dist/src/extensions/extensionFile.d.mts +69 -0
- package/dist/src/extensions/extensionFile.d.mts.map +1 -0
- package/dist/src/extensions/extensionFile.mjs +124 -0
- package/dist/src/extensions/extensionFile.mjs.map +1 -0
- package/dist/src/extensions/serverPlugin.cjs +107 -0
- package/dist/src/extensions/serverPlugin.cjs.map +1 -0
- package/dist/src/extensions/serverPlugin.d.mts +5 -0
- package/dist/src/extensions/serverPlugin.d.mts.map +1 -0
- package/dist/src/extensions/serverPlugin.mjs +107 -0
- package/dist/src/extensions/serverPlugin.mjs.map +1 -0
- package/dist/src/extensions/webPlugin.cjs +136 -0
- package/dist/src/extensions/webPlugin.cjs.map +1 -0
- package/dist/src/extensions/webPlugin.d.mts +68 -0
- package/dist/src/extensions/webPlugin.d.mts.map +1 -0
- package/dist/src/extensions/webPlugin.mjs +114 -0
- package/dist/src/extensions/webPlugin.mjs.map +1 -0
- package/dist/src/pi/piSessionRuntime.cjs +625 -0
- package/dist/src/pi/piSessionRuntime.cjs.map +1 -0
- package/dist/src/pi/piSessionRuntime.d.mts +43 -0
- package/dist/src/pi/piSessionRuntime.d.mts.map +1 -0
- package/dist/src/pi/piSessionRuntime.mjs +624 -0
- package/dist/src/pi/piSessionRuntime.mjs.map +1 -0
- package/dist/src/pi/piWebSocketListener.cjs +115 -0
- package/dist/src/pi/piWebSocketListener.cjs.map +1 -0
- package/dist/src/pi/piWebSocketListener.mjs +115 -0
- package/dist/src/pi/piWebSocketListener.mjs.map +1 -0
- package/dist/src/schemas/agentModel.cjs +33 -0
- package/dist/src/schemas/agentModel.cjs.map +1 -0
- package/dist/src/schemas/agentModel.d.mts +26 -0
- package/dist/src/schemas/agentModel.d.mts.map +1 -0
- package/dist/src/schemas/agentModel.mjs +32 -0
- package/dist/src/schemas/agentModel.mjs.map +1 -0
- package/dist/src/schemas/apiContracts.d.mts +58 -0
- package/dist/src/schemas/apiContracts.d.mts.map +1 -0
- package/dist/src/schemas/askUser.cjs +42 -0
- package/dist/src/schemas/askUser.cjs.map +1 -0
- package/dist/src/schemas/askUser.d.mts +47 -0
- package/dist/src/schemas/askUser.d.mts.map +1 -0
- package/dist/src/schemas/askUser.mjs +37 -0
- package/dist/src/schemas/askUser.mjs.map +1 -0
- package/dist/src/schemas/backgroundWork.cjs +44 -0
- package/dist/src/schemas/backgroundWork.cjs.map +1 -0
- package/dist/src/schemas/backgroundWork.d.mts +76 -0
- package/dist/src/schemas/backgroundWork.d.mts.map +1 -0
- package/dist/src/schemas/backgroundWork.mjs +38 -0
- package/dist/src/schemas/backgroundWork.mjs.map +1 -0
- package/dist/src/schemas/childProcess.cjs +67 -0
- package/dist/src/schemas/childProcess.cjs.map +1 -0
- package/dist/src/schemas/childProcess.d.mts +30 -0
- package/dist/src/schemas/childProcess.d.mts.map +1 -0
- package/dist/src/schemas/childProcess.mjs +55 -0
- package/dist/src/schemas/childProcess.mjs.map +1 -0
- package/dist/src/schemas/cockpitContainer.cjs +31 -0
- package/dist/src/schemas/cockpitContainer.cjs.map +1 -0
- package/dist/src/schemas/cockpitContainer.d.mts +80 -0
- package/dist/src/schemas/cockpitContainer.d.mts.map +1 -0
- package/dist/src/schemas/cockpitContainer.mjs +30 -0
- package/dist/src/schemas/cockpitContainer.mjs.map +1 -0
- package/dist/src/schemas/contextContributions.cjs +17 -0
- package/dist/src/schemas/contextContributions.cjs.map +1 -0
- package/dist/src/schemas/contextContributions.d.mts +49 -0
- package/dist/src/schemas/contextContributions.d.mts.map +1 -0
- package/dist/src/schemas/contextContributions.mjs +15 -0
- package/dist/src/schemas/contextContributions.mjs.map +1 -0
- package/dist/src/schemas/delegation.cjs +91 -0
- package/dist/src/schemas/delegation.cjs.map +1 -0
- package/dist/src/schemas/delegation.d.mts +95 -0
- package/dist/src/schemas/delegation.d.mts.map +1 -0
- package/dist/src/schemas/delegation.mjs +76 -0
- package/dist/src/schemas/delegation.mjs.map +1 -0
- package/dist/src/schemas/extensionFile.d.mts +116 -0
- package/dist/src/schemas/extensionFile.d.mts.map +1 -0
- package/dist/src/schemas/footer.cjs +48 -0
- package/dist/src/schemas/footer.cjs.map +1 -0
- package/dist/src/schemas/footer.d.mts +48 -0
- package/dist/src/schemas/footer.d.mts.map +1 -0
- package/dist/src/schemas/footer.mjs +45 -0
- package/dist/src/schemas/footer.mjs.map +1 -0
- package/dist/src/schemas/headless.cjs +97 -0
- package/dist/src/schemas/headless.cjs.map +1 -0
- package/dist/src/schemas/headless.d.mts +472 -0
- package/dist/src/schemas/headless.d.mts.map +1 -0
- package/dist/src/schemas/headless.mjs +84 -0
- package/dist/src/schemas/headless.mjs.map +1 -0
- package/dist/src/schemas/help.cjs +281 -0
- package/dist/src/schemas/help.cjs.map +1 -0
- package/dist/src/schemas/help.d.mts +119 -0
- package/dist/src/schemas/help.d.mts.map +1 -0
- package/dist/src/schemas/help.mjs +262 -0
- package/dist/src/schemas/help.mjs.map +1 -0
- package/dist/src/schemas/hubChannel.cjs +20 -0
- package/dist/src/schemas/hubChannel.cjs.map +1 -0
- package/dist/src/schemas/hubChannel.d.mts +271 -0
- package/dist/src/schemas/hubChannel.d.mts.map +1 -0
- package/dist/src/schemas/hubChannel.mjs +19 -0
- package/dist/src/schemas/hubChannel.mjs.map +1 -0
- package/dist/src/schemas/leader.cjs +57 -0
- package/dist/src/schemas/leader.cjs.map +1 -0
- package/dist/src/schemas/leader.d.mts +107 -0
- package/dist/src/schemas/leader.d.mts.map +1 -0
- package/dist/src/schemas/leader.mjs +51 -0
- package/dist/src/schemas/leader.mjs.map +1 -0
- package/dist/src/schemas/mcpBundle.d.mts +13 -0
- package/dist/src/schemas/mcpBundle.d.mts.map +1 -0
- package/dist/src/schemas/mcpFacet.cjs +24 -0
- package/dist/src/schemas/mcpFacet.cjs.map +1 -0
- package/dist/src/schemas/mcpFacet.d.mts +91 -0
- package/dist/src/schemas/mcpFacet.d.mts.map +1 -0
- package/dist/src/schemas/mcpFacet.mjs +21 -0
- package/dist/src/schemas/mcpFacet.mjs.map +1 -0
- package/dist/src/schemas/mcpProjection.cjs +117 -0
- package/dist/src/schemas/mcpProjection.cjs.map +1 -0
- package/dist/src/schemas/mcpProjection.d.mts +124 -0
- package/dist/src/schemas/mcpProjection.d.mts.map +1 -0
- package/dist/src/schemas/mcpProjection.mjs +104 -0
- package/dist/src/schemas/mcpProjection.mjs.map +1 -0
- package/dist/src/schemas/mcpSession.cjs +57 -0
- package/dist/src/schemas/mcpSession.cjs.map +1 -0
- package/dist/src/schemas/mcpSession.d.mts +57 -0
- package/dist/src/schemas/mcpSession.d.mts.map +1 -0
- package/dist/src/schemas/mcpSession.mjs +51 -0
- package/dist/src/schemas/mcpSession.mjs.map +1 -0
- package/dist/src/schemas/mcpStatus.cjs +52 -0
- package/dist/src/schemas/mcpStatus.cjs.map +1 -0
- package/dist/src/schemas/mcpStatus.d.mts +73 -0
- package/dist/src/schemas/mcpStatus.d.mts.map +1 -0
- package/dist/src/schemas/mcpStatus.mjs +48 -0
- package/dist/src/schemas/mcpStatus.mjs.map +1 -0
- package/dist/src/schemas/mcpToolResolver.cjs +17 -0
- package/dist/src/schemas/mcpToolResolver.cjs.map +1 -0
- package/dist/src/schemas/mcpToolResolver.d.mts +24 -0
- package/dist/src/schemas/mcpToolResolver.d.mts.map +1 -0
- package/dist/src/schemas/mcpToolResolver.mjs +15 -0
- package/dist/src/schemas/mcpToolResolver.mjs.map +1 -0
- package/dist/src/schemas/narration.cjs +54 -0
- package/dist/src/schemas/narration.cjs.map +1 -0
- package/dist/src/schemas/narration.d.mts +29 -0
- package/dist/src/schemas/narration.d.mts.map +1 -0
- package/dist/src/schemas/narration.mjs +47 -0
- package/dist/src/schemas/narration.mjs.map +1 -0
- package/dist/src/schemas/notification.cjs +122 -0
- package/dist/src/schemas/notification.cjs.map +1 -0
- package/dist/src/schemas/notification.d.mts +48 -0
- package/dist/src/schemas/notification.d.mts.map +1 -0
- package/dist/src/schemas/notification.mjs +108 -0
- package/dist/src/schemas/notification.mjs.map +1 -0
- package/dist/src/schemas/packageApi.cjs +76 -0
- package/dist/src/schemas/packageApi.cjs.map +1 -0
- package/dist/src/schemas/packageApi.d.mts +302 -0
- package/dist/src/schemas/packageApi.d.mts.map +1 -0
- package/dist/src/schemas/packageApi.mjs +66 -0
- package/dist/src/schemas/packageApi.mjs.map +1 -0
- package/dist/src/schemas/pluginContributions.cjs +19 -0
- package/dist/src/schemas/pluginContributions.cjs.map +1 -0
- package/dist/src/schemas/pluginContributions.d.mts +56 -0
- package/dist/src/schemas/pluginContributions.d.mts.map +1 -0
- package/dist/src/schemas/pluginContributions.mjs +18 -0
- package/dist/src/schemas/pluginContributions.mjs.map +1 -0
- package/dist/src/schemas/pluginProtocol.cjs +103 -0
- package/dist/src/schemas/pluginProtocol.cjs.map +1 -0
- package/dist/src/schemas/pluginProtocol.d.mts +70 -0
- package/dist/src/schemas/pluginProtocol.d.mts.map +1 -0
- package/dist/src/schemas/pluginProtocol.mjs +96 -0
- package/dist/src/schemas/pluginProtocol.mjs.map +1 -0
- package/dist/src/schemas/profileIdentity.cjs +67 -0
- package/dist/src/schemas/profileIdentity.cjs.map +1 -0
- package/dist/src/schemas/profileIdentity.d.mts +50 -0
- package/dist/src/schemas/profileIdentity.d.mts.map +1 -0
- package/dist/src/schemas/profileIdentity.mjs +64 -0
- package/dist/src/schemas/profileIdentity.mjs.map +1 -0
- package/dist/src/schemas/readiness.cjs +251 -0
- package/dist/src/schemas/readiness.cjs.map +1 -0
- package/dist/src/schemas/readiness.d.mts +84 -0
- package/dist/src/schemas/readiness.d.mts.map +1 -0
- package/dist/src/schemas/readiness.mjs +246 -0
- package/dist/src/schemas/readiness.mjs.map +1 -0
- package/dist/src/schemas/sandboxHarness.cjs +29 -0
- package/dist/src/schemas/sandboxHarness.cjs.map +1 -0
- package/dist/src/schemas/sandboxHarness.d.mts +39 -0
- package/dist/src/schemas/sandboxHarness.d.mts.map +1 -0
- package/dist/src/schemas/sandboxHarness.mjs +26 -0
- package/dist/src/schemas/sandboxHarness.mjs.map +1 -0
- package/dist/src/schemas/serverBundle.d.mts +19 -0
- package/dist/src/schemas/serverBundle.d.mts.map +1 -0
- package/dist/src/schemas/serverFacet.cjs +111 -0
- package/dist/src/schemas/serverFacet.cjs.map +1 -0
- package/dist/src/schemas/serverFacet.d.mts +152 -0
- package/dist/src/schemas/serverFacet.d.mts.map +1 -0
- package/dist/src/schemas/serverFacet.mjs +101 -0
- package/dist/src/schemas/serverFacet.mjs.map +1 -0
- package/dist/src/schemas/sessionMcpActivity.d.mts +47 -0
- package/dist/src/schemas/sessionMcpActivity.d.mts.map +1 -0
- package/dist/src/schemas/sessionProtocol.cjs +17 -0
- package/dist/src/schemas/sessionProtocol.cjs.map +1 -0
- package/dist/src/schemas/sessionProtocol.d.mts +313 -0
- package/dist/src/schemas/sessionProtocol.d.mts.map +1 -0
- package/dist/src/schemas/sessionProtocol.mjs +12 -0
- package/dist/src/schemas/sessionProtocol.mjs.map +1 -0
- package/dist/src/schemas/sessionUpdates.d.mts +34 -0
- package/dist/src/schemas/sessionUpdates.d.mts.map +1 -0
- package/dist/src/schemas/skills.cjs +115 -0
- package/dist/src/schemas/skills.cjs.map +1 -0
- package/dist/src/schemas/skills.d.mts +65 -0
- package/dist/src/schemas/skills.d.mts.map +1 -0
- package/dist/src/schemas/skills.mjs +109 -0
- package/dist/src/schemas/skills.mjs.map +1 -0
- package/dist/src/schemas/toolOverrides.cjs +17 -0
- package/dist/src/schemas/toolOverrides.cjs.map +1 -0
- package/dist/src/schemas/toolOverrides.d.mts +29 -0
- package/dist/src/schemas/toolOverrides.d.mts.map +1 -0
- package/dist/src/schemas/toolOverrides.mjs +15 -0
- package/dist/src/schemas/toolOverrides.mjs.map +1 -0
- package/dist/src/schemas/toolSurface.cjs +17 -0
- package/dist/src/schemas/toolSurface.cjs.map +1 -0
- package/dist/src/schemas/toolSurface.d.mts +70 -0
- package/dist/src/schemas/toolSurface.d.mts.map +1 -0
- package/dist/src/schemas/toolSurface.mjs +15 -0
- package/dist/src/schemas/toolSurface.mjs.map +1 -0
- package/dist/src/schemas/uiHub.cjs +17 -0
- package/dist/src/schemas/uiHub.cjs.map +1 -0
- package/dist/src/schemas/uiHub.d.mts +23 -0
- package/dist/src/schemas/uiHub.d.mts.map +1 -0
- package/dist/src/schemas/uiHub.mjs +15 -0
- package/dist/src/schemas/uiHub.mjs.map +1 -0
- package/dist/src/schemas/voiceReloadHandoff.cjs +78 -0
- package/dist/src/schemas/voiceReloadHandoff.cjs.map +1 -0
- package/dist/src/schemas/voiceReloadHandoff.d.mts +31 -0
- package/dist/src/schemas/voiceReloadHandoff.d.mts.map +1 -0
- package/dist/src/schemas/voiceReloadHandoff.mjs +75 -0
- package/dist/src/schemas/voiceReloadHandoff.mjs.map +1 -0
- package/dist/src/schemas/voiceTools.cjs +205 -0
- package/dist/src/schemas/voiceTools.cjs.map +1 -0
- package/dist/src/schemas/voiceTools.d.mts +120 -0
- package/dist/src/schemas/voiceTools.d.mts.map +1 -0
- package/dist/src/schemas/voiceTools.mjs +194 -0
- package/dist/src/schemas/voiceTools.mjs.map +1 -0
- package/dist/src/server/devProxyForward.cjs +141 -0
- package/dist/src/server/devProxyForward.cjs.map +1 -0
- package/dist/src/server/devProxyForward.mjs +139 -0
- package/dist/src/server/devProxyForward.mjs.map +1 -0
- package/dist/src/server/devProxyRoutes.cjs +97 -0
- package/dist/src/server/devProxyRoutes.cjs.map +1 -0
- package/dist/src/server/devProxyRoutes.mjs +97 -0
- package/dist/src/server/devProxyRoutes.mjs.map +1 -0
- package/dist/src/server/devProxySocket.cjs +93 -0
- package/dist/src/server/devProxySocket.cjs.map +1 -0
- package/dist/src/server/devProxySocket.d.mts +25 -0
- package/dist/src/server/devProxySocket.d.mts.map +1 -0
- package/dist/src/server/devProxySocket.mjs +93 -0
- package/dist/src/server/devProxySocket.mjs.map +1 -0
- package/dist/src/server/directHarnessRuntime.cjs +2387 -0
- package/dist/src/server/directHarnessRuntime.cjs.map +1 -0
- package/dist/src/server/directHarnessRuntime.d.mts +4 -0
- package/dist/src/server/directHarnessRuntime.mjs +2384 -0
- package/dist/src/server/directHarnessRuntime.mjs.map +1 -0
- package/dist/src/server/harnessErrorMessage.cjs +13 -0
- package/dist/src/server/harnessErrorMessage.cjs.map +1 -0
- package/dist/src/server/harnessErrorMessage.mjs +13 -0
- package/dist/src/server/harnessErrorMessage.mjs.map +1 -0
- package/dist/src/server/headlessProtocol.cjs +382 -0
- package/dist/src/server/headlessProtocol.cjs.map +1 -0
- package/dist/src/server/headlessProtocol.mjs +382 -0
- package/dist/src/server/headlessProtocol.mjs.map +1 -0
- package/dist/src/server/liveImport.cjs +37 -0
- package/dist/src/server/liveImport.cjs.map +1 -0
- package/dist/src/server/liveImport.d.mts +27 -0
- package/dist/src/server/liveImport.d.mts.map +1 -0
- package/dist/src/server/liveImport.mjs +34 -0
- package/dist/src/server/liveImport.mjs.map +1 -0
- package/dist/src/server/mcpBundleLoader.cjs +108 -0
- package/dist/src/server/mcpBundleLoader.cjs.map +1 -0
- package/dist/src/server/mcpBundleLoader.d.mts +46 -0
- package/dist/src/server/mcpBundleLoader.d.mts.map +1 -0
- package/dist/src/server/mcpBundleLoader.mjs +107 -0
- package/dist/src/server/mcpBundleLoader.mjs.map +1 -0
- package/dist/src/server/nativeChildTranscriptReader.cjs +20 -0
- package/dist/src/server/nativeChildTranscriptReader.cjs.map +1 -0
- package/dist/src/server/nativeChildTranscriptReader.mjs +18 -0
- package/dist/src/server/nativeChildTranscriptReader.mjs.map +1 -0
- package/dist/src/server/remoteRoutes.cjs +463 -0
- package/dist/src/server/remoteRoutes.cjs.map +1 -0
- package/dist/src/server/remoteRoutes.mjs +463 -0
- package/dist/src/server/remoteRoutes.mjs.map +1 -0
- package/dist/src/server/serverFacetLoader.cjs +214 -0
- package/dist/src/server/serverFacetLoader.cjs.map +1 -0
- package/dist/src/server/serverFacetLoader.d.mts +72 -0
- package/dist/src/server/serverFacetLoader.d.mts.map +1 -0
- package/dist/src/server/serverFacetLoader.mjs +212 -0
- package/dist/src/server/serverFacetLoader.mjs.map +1 -0
- package/dist/src/server/sessionMcpHandler.cjs +585 -0
- package/dist/src/server/sessionMcpHandler.cjs.map +1 -0
- package/dist/src/server/sessionMcpHandler.d.mts +50 -0
- package/dist/src/server/sessionMcpHandler.d.mts.map +1 -0
- package/dist/src/server/sessionMcpHandler.mjs +582 -0
- package/dist/src/server/sessionMcpHandler.mjs.map +1 -0
- package/dist/src/server/sessionMcpRoutes.cjs +809 -0
- package/dist/src/server/sessionMcpRoutes.cjs.map +1 -0
- package/dist/src/server/sessionMcpRoutes.mjs +804 -0
- package/dist/src/server/sessionMcpRoutes.mjs.map +1 -0
- package/dist/src/server/threadJournals.cjs +172 -0
- package/dist/src/server/threadJournals.cjs.map +1 -0
- package/dist/src/server/threadJournals.mjs +169 -0
- package/dist/src/server/threadJournals.mjs.map +1 -0
- package/dist/src/services/acpSessionUpdates/index.cjs +129 -0
- package/dist/src/services/acpSessionUpdates/index.cjs.map +1 -0
- package/dist/src/services/acpSessionUpdates/index.mjs +129 -0
- package/dist/src/services/acpSessionUpdates/index.mjs.map +1 -0
- package/dist/src/services/apiSurfaceAssert/index.cjs +60 -0
- package/dist/src/services/apiSurfaceAssert/index.cjs.map +1 -0
- package/dist/src/services/apiSurfaceAssert/index.d.mts +24 -0
- package/dist/src/services/apiSurfaceAssert/index.d.mts.map +1 -0
- package/dist/src/services/apiSurfaceAssert/index.mjs +60 -0
- package/dist/src/services/apiSurfaceAssert/index.mjs.map +1 -0
- package/dist/src/services/bundlePublication/index.cjs +89 -0
- package/dist/src/services/bundlePublication/index.cjs.map +1 -0
- package/dist/src/services/bundlePublication/index.mjs +86 -0
- package/dist/src/services/bundlePublication/index.mjs.map +1 -0
- package/dist/src/services/contextApiUrls/index.cjs +53 -0
- package/dist/src/services/contextApiUrls/index.cjs.map +1 -0
- package/dist/src/services/contextApiUrls/index.d.mts +8 -0
- package/dist/src/services/contextApiUrls/index.d.mts.map +1 -0
- package/dist/src/services/contextApiUrls/index.mjs +52 -0
- package/dist/src/services/contextApiUrls/index.mjs.map +1 -0
- package/dist/src/services/contextContributions/index.cjs +79 -0
- package/dist/src/services/contextContributions/index.cjs.map +1 -0
- package/dist/src/services/contextContributions/index.d.mts +6 -0
- package/dist/src/services/contextContributions/index.d.mts.map +1 -0
- package/dist/src/services/contextContributions/index.mjs +79 -0
- package/dist/src/services/contextContributions/index.mjs.map +1 -0
- package/dist/src/services/contextUsage/index.cjs +27 -0
- package/dist/src/services/contextUsage/index.cjs.map +1 -0
- package/dist/src/services/contextUsage/index.mjs +25 -0
- package/dist/src/services/contextUsage/index.mjs.map +1 -0
- package/dist/src/services/devProxyPolicy/index.cjs +168 -0
- package/dist/src/services/devProxyPolicy/index.cjs.map +1 -0
- package/dist/src/services/devProxyPolicy/index.mjs +165 -0
- package/dist/src/services/devProxyPolicy/index.mjs.map +1 -0
- package/dist/src/services/devProxyStore/index.cjs +107 -0
- package/dist/src/services/devProxyStore/index.cjs.map +1 -0
- package/dist/src/services/devProxyStore/index.mjs +104 -0
- package/dist/src/services/devProxyStore/index.mjs.map +1 -0
- package/dist/src/services/deviceAuth/index.cjs +146 -0
- package/dist/src/services/deviceAuth/index.cjs.map +1 -0
- package/dist/src/services/deviceAuth/index.d.mts +9 -0
- package/dist/src/services/deviceAuth/index.d.mts.map +1 -0
- package/dist/src/services/deviceAuth/index.mjs +146 -0
- package/dist/src/services/deviceAuth/index.mjs.map +1 -0
- package/dist/src/services/deviceSessions/index.cjs +147 -0
- package/dist/src/services/deviceSessions/index.cjs.map +1 -0
- package/dist/src/services/deviceSessions/index.d.mts +18 -0
- package/dist/src/services/deviceSessions/index.d.mts.map +1 -0
- package/dist/src/services/deviceSessions/index.mjs +141 -0
- package/dist/src/services/deviceSessions/index.mjs.map +1 -0
- package/dist/src/services/deviceTrust/index.cjs +294 -0
- package/dist/src/services/deviceTrust/index.cjs.map +1 -0
- package/dist/src/services/deviceTrust/index.mjs +282 -0
- package/dist/src/services/deviceTrust/index.mjs.map +1 -0
- package/dist/src/services/durableNavigation/index.cjs +46 -0
- package/dist/src/services/durableNavigation/index.cjs.map +1 -0
- package/dist/src/services/durableNavigation/index.mjs +45 -0
- package/dist/src/services/durableNavigation/index.mjs.map +1 -0
- package/dist/src/services/headlessClient/index.cjs +126 -0
- package/dist/src/services/headlessClient/index.cjs.map +1 -0
- package/dist/src/services/headlessClient/index.mjs +126 -0
- package/dist/src/services/headlessClient/index.mjs.map +1 -0
- package/dist/src/services/historyImport/index.cjs +8 -0
- package/dist/src/services/historyImport/index.cjs.map +1 -0
- package/dist/src/services/historyImport/index.d.mts +68 -0
- package/dist/src/services/historyImport/index.d.mts.map +1 -0
- package/dist/src/services/historyImport/index.mjs +8 -0
- package/dist/src/services/historyImport/index.mjs.map +1 -0
- package/dist/src/services/hubChannelHarness/index.cjs +50 -0
- package/dist/src/services/hubChannelHarness/index.cjs.map +1 -0
- package/dist/src/services/hubChannelHarness/index.d.mts +17 -0
- package/dist/src/services/hubChannelHarness/index.d.mts.map +1 -0
- package/dist/src/services/hubChannelHarness/index.mjs +50 -0
- package/dist/src/services/hubChannelHarness/index.mjs.map +1 -0
- package/dist/src/services/kernel/index.cjs +147 -0
- package/dist/src/services/kernel/index.cjs.map +1 -0
- package/dist/src/services/kernel/index.d.mts +9 -0
- package/dist/src/services/kernel/index.d.mts.map +1 -0
- package/dist/src/services/kernel/index.mjs +147 -0
- package/dist/src/services/kernel/index.mjs.map +1 -0
- package/dist/src/services/loginFlow/index.cjs +131 -0
- package/dist/src/services/loginFlow/index.cjs.map +1 -0
- package/dist/src/services/loginFlow/index.mjs +131 -0
- package/dist/src/services/loginFlow/index.mjs.map +1 -0
- package/dist/src/services/loopbackAddress/index.cjs +58 -0
- package/dist/src/services/loopbackAddress/index.cjs.map +1 -0
- package/dist/src/services/loopbackAddress/index.mjs +56 -0
- package/dist/src/services/loopbackAddress/index.mjs.map +1 -0
- package/dist/src/services/openSessionRegistry/index.cjs +134 -0
- package/dist/src/services/openSessionRegistry/index.cjs.map +1 -0
- package/dist/src/services/openSessionRegistry/index.d.mts +36 -0
- package/dist/src/services/openSessionRegistry/index.d.mts.map +1 -0
- package/dist/src/services/openSessionRegistry/index.mjs +131 -0
- package/dist/src/services/openSessionRegistry/index.mjs.map +1 -0
- package/dist/src/services/packageApiHarness/index.cjs +36 -0
- package/dist/src/services/packageApiHarness/index.cjs.map +1 -0
- package/dist/src/services/packageApiHarness/index.d.mts +40 -0
- package/dist/src/services/packageApiHarness/index.d.mts.map +1 -0
- package/dist/src/services/packageApiHarness/index.mjs +36 -0
- package/dist/src/services/packageApiHarness/index.mjs.map +1 -0
- package/dist/src/services/packageResource/index.cjs +54 -0
- package/dist/src/services/packageResource/index.cjs.map +1 -0
- package/dist/src/services/packageResource/index.d.mts +26 -0
- package/dist/src/services/packageResource/index.d.mts.map +1 -0
- package/dist/src/services/packageResource/index.mjs +51 -0
- package/dist/src/services/packageResource/index.mjs.map +1 -0
- package/dist/src/services/pairingFlow/index.cjs +145 -0
- package/dist/src/services/pairingFlow/index.cjs.map +1 -0
- package/dist/src/services/pairingFlow/index.d.mts +44 -0
- package/dist/src/services/pairingFlow/index.d.mts.map +1 -0
- package/dist/src/services/pairingFlow/index.mjs +145 -0
- package/dist/src/services/pairingFlow/index.mjs.map +1 -0
- package/dist/src/services/pairingPage/index.cjs +450 -0
- package/dist/src/services/pairingPage/index.cjs.map +1 -0
- package/dist/src/services/pairingPage/index.mjs +447 -0
- package/dist/src/services/pairingPage/index.mjs.map +1 -0
- package/dist/src/services/piExtensionHost/index.cjs +889 -0
- package/dist/src/services/piExtensionHost/index.cjs.map +1 -0
- package/dist/src/services/piExtensionHost/index.mjs +885 -0
- package/dist/src/services/piExtensionHost/index.mjs.map +1 -0
- package/dist/src/services/piHelpTools/index.cjs +68 -0
- package/dist/src/services/piHelpTools/index.cjs.map +1 -0
- package/dist/src/services/piHelpTools/index.d.mts +10 -0
- package/dist/src/services/piHelpTools/index.d.mts.map +1 -0
- package/dist/src/services/piHelpTools/index.mjs +68 -0
- package/dist/src/services/piHelpTools/index.mjs.map +1 -0
- package/dist/src/services/piSessionEntries/index.cjs +121 -0
- package/dist/src/services/piSessionEntries/index.cjs.map +1 -0
- package/dist/src/services/piSessionEntries/index.mjs +117 -0
- package/dist/src/services/piSessionEntries/index.mjs.map +1 -0
- package/dist/src/services/pluginLifecycle/index.cjs +71 -0
- package/dist/src/services/pluginLifecycle/index.cjs.map +1 -0
- package/dist/src/services/pluginLifecycle/index.d.mts +8 -0
- package/dist/src/services/pluginLifecycle/index.d.mts.map +1 -0
- package/dist/src/services/pluginLifecycle/index.mjs +71 -0
- package/dist/src/services/pluginLifecycle/index.mjs.map +1 -0
- package/dist/src/services/providerAuth/index.cjs +156 -0
- package/dist/src/services/providerAuth/index.cjs.map +1 -0
- package/dist/src/services/providerAuth/index.mjs +154 -0
- package/dist/src/services/providerAuth/index.mjs.map +1 -0
- package/dist/src/services/publicFileShares/index.cjs +192 -0
- package/dist/src/services/publicFileShares/index.cjs.map +1 -0
- package/dist/src/services/publicFileShares/index.d.mts +16 -0
- package/dist/src/services/publicFileShares/index.d.mts.map +1 -0
- package/dist/src/services/publicFileShares/index.mjs +188 -0
- package/dist/src/services/publicFileShares/index.mjs.map +1 -0
- package/dist/src/services/remoteAccess/index.cjs +567 -0
- package/dist/src/services/remoteAccess/index.cjs.map +1 -0
- package/dist/src/services/remoteAccess/index.d.mts +121 -0
- package/dist/src/services/remoteAccess/index.d.mts.map +1 -0
- package/dist/src/services/remoteAccess/index.mjs +567 -0
- package/dist/src/services/remoteAccess/index.mjs.map +1 -0
- package/dist/src/services/remoteAccessSettings/index.cjs +151 -0
- package/dist/src/services/remoteAccessSettings/index.cjs.map +1 -0
- package/dist/src/services/remoteAccessSettings/index.mjs +149 -0
- package/dist/src/services/remoteAccessSettings/index.mjs.map +1 -0
- package/dist/src/services/remoteAccessStore/index.cjs +197 -0
- package/dist/src/services/remoteAccessStore/index.cjs.map +1 -0
- package/dist/src/services/remoteAccessStore/index.mjs +192 -0
- package/dist/src/services/remoteAccessStore/index.mjs.map +1 -0
- package/dist/src/services/remoteGuardPolicy/index.cjs +200 -0
- package/dist/src/services/remoteGuardPolicy/index.cjs.map +1 -0
- package/dist/src/services/remoteGuardPolicy/index.d.mts +7 -0
- package/dist/src/services/remoteGuardPolicy/index.d.mts.map +1 -0
- package/dist/src/services/remoteGuardPolicy/index.mjs +196 -0
- package/dist/src/services/remoteGuardPolicy/index.mjs.map +1 -0
- package/dist/src/services/requestReceipts/index.cjs +167 -0
- package/dist/src/services/requestReceipts/index.cjs.map +1 -0
- package/dist/src/services/requestReceipts/index.d.mts +11 -0
- package/dist/src/services/requestReceipts/index.d.mts.map +1 -0
- package/dist/src/services/requestReceipts/index.mjs +167 -0
- package/dist/src/services/requestReceipts/index.mjs.map +1 -0
- package/dist/src/services/rpcTranscript/index.cjs +633 -0
- package/dist/src/services/rpcTranscript/index.cjs.map +1 -0
- package/dist/src/services/rpcTranscript/index.d.mts +50 -0
- package/dist/src/services/rpcTranscript/index.d.mts.map +1 -0
- package/dist/src/services/rpcTranscript/index.mjs +632 -0
- package/dist/src/services/rpcTranscript/index.mjs.map +1 -0
- package/dist/src/services/serverFacet/index.cjs +197 -0
- package/dist/src/services/serverFacet/index.cjs.map +1 -0
- package/dist/src/services/serverFacet/index.d.mts +31 -0
- package/dist/src/services/serverFacet/index.d.mts.map +1 -0
- package/dist/src/services/serverFacet/index.mjs +197 -0
- package/dist/src/services/serverFacet/index.mjs.map +1 -0
- package/dist/src/services/sessionAttachments/index.cjs +111 -0
- package/dist/src/services/sessionAttachments/index.cjs.map +1 -0
- package/dist/src/services/sessionAttachments/index.d.mts +11 -0
- package/dist/src/services/sessionAttachments/index.d.mts.map +1 -0
- package/dist/src/services/sessionAttachments/index.mjs +107 -0
- package/dist/src/services/sessionAttachments/index.mjs.map +1 -0
- package/dist/src/services/sessionGitStatus/index.cjs +46 -0
- package/dist/src/services/sessionGitStatus/index.cjs.map +1 -0
- package/dist/src/services/sessionGitStatus/index.mjs +46 -0
- package/dist/src/services/sessionGitStatus/index.mjs.map +1 -0
- package/dist/src/services/sessionGitStatus/type.d.mts +8 -0
- package/dist/src/services/sessionGitStatus/type.d.mts.map +1 -0
- package/dist/src/services/sessionMcpActivity/index.cjs +115 -0
- package/dist/src/services/sessionMcpActivity/index.cjs.map +1 -0
- package/dist/src/services/sessionMcpActivity/index.mjs +111 -0
- package/dist/src/services/sessionMcpActivity/index.mjs.map +1 -0
- package/dist/src/services/sessionMcpAuthorization/index.cjs +473 -0
- package/dist/src/services/sessionMcpAuthorization/index.cjs.map +1 -0
- package/dist/src/services/sessionMcpAuthorization/index.d.mts +125 -0
- package/dist/src/services/sessionMcpAuthorization/index.d.mts.map +1 -0
- package/dist/src/services/sessionMcpAuthorization/index.mjs +469 -0
- package/dist/src/services/sessionMcpAuthorization/index.mjs.map +1 -0
- package/dist/src/services/sessionMcpConversations/index.cjs +217 -0
- package/dist/src/services/sessionMcpConversations/index.cjs.map +1 -0
- package/dist/src/services/sessionMcpConversations/index.mjs +212 -0
- package/dist/src/services/sessionMcpConversations/index.mjs.map +1 -0
- package/dist/src/services/sessionMcpRegistrationStore/index.cjs +86 -0
- package/dist/src/services/sessionMcpRegistrationStore/index.cjs.map +1 -0
- package/dist/src/services/sessionMcpRegistrationStore/index.mjs +83 -0
- package/dist/src/services/sessionMcpRegistrationStore/index.mjs.map +1 -0
- package/dist/src/services/sessionPresentation/index.cjs +120 -0
- package/dist/src/services/sessionPresentation/index.cjs.map +1 -0
- package/dist/src/services/sessionPresentation/index.mjs +120 -0
- package/dist/src/services/sessionPresentation/index.mjs.map +1 -0
- package/dist/src/services/sqliteSessionHistory/index.cjs +97 -0
- package/dist/src/services/sqliteSessionHistory/index.cjs.map +1 -0
- package/dist/src/services/sqliteSessionHistory/index.d.mts +28 -0
- package/dist/src/services/sqliteSessionHistory/index.d.mts.map +1 -0
- package/dist/src/services/sqliteSessionHistory/index.mjs +92 -0
- package/dist/src/services/sqliteSessionHistory/index.mjs.map +1 -0
- package/dist/src/services/sqliteTranscriptReader/index.cjs +67 -0
- package/dist/src/services/sqliteTranscriptReader/index.cjs.map +1 -0
- package/dist/src/services/sqliteTranscriptReader/index.d.mts +14 -0
- package/dist/src/services/sqliteTranscriptReader/index.d.mts.map +1 -0
- package/dist/src/services/sqliteTranscriptReader/index.mjs +65 -0
- package/dist/src/services/sqliteTranscriptReader/index.mjs.map +1 -0
- package/dist/src/services/toolCost/index.cjs +47 -0
- package/dist/src/services/toolCost/index.cjs.map +1 -0
- package/dist/src/services/toolCost/index.d.mts +38 -0
- package/dist/src/services/toolCost/index.d.mts.map +1 -0
- package/dist/src/services/toolCost/index.mjs +46 -0
- package/dist/src/services/toolCost/index.mjs.map +1 -0
- package/dist/src/services/toolOverrides/index.cjs +45 -0
- package/dist/src/services/toolOverrides/index.cjs.map +1 -0
- package/dist/src/services/toolOverrides/index.d.mts +6 -0
- package/dist/src/services/toolOverrides/index.d.mts.map +1 -0
- package/dist/src/services/toolOverrides/index.mjs +45 -0
- package/dist/src/services/toolOverrides/index.mjs.map +1 -0
- package/dist/src/services/toolPrompt/index.cjs +13 -0
- package/dist/src/services/toolPrompt/index.cjs.map +1 -0
- package/dist/src/services/toolPrompt/index.mjs +13 -0
- package/dist/src/services/toolPrompt/index.mjs.map +1 -0
- package/dist/src/services/toolSurface/index.cjs +134 -0
- package/dist/src/services/toolSurface/index.cjs.map +1 -0
- package/dist/src/services/toolSurface/index.d.mts +19 -0
- package/dist/src/services/toolSurface/index.d.mts.map +1 -0
- package/dist/src/services/toolSurface/index.mjs +134 -0
- package/dist/src/services/toolSurface/index.mjs.map +1 -0
- package/dist/src/services/traceContext/index.cjs +13 -0
- package/dist/src/services/traceContext/index.cjs.map +1 -0
- package/dist/src/services/traceContext/index.mjs +13 -0
- package/dist/src/services/traceContext/index.mjs.map +1 -0
- package/dist/src/services/transcriptPages/index.cjs +117 -0
- package/dist/src/services/transcriptPages/index.cjs.map +1 -0
- package/dist/src/services/transcriptPages/index.mjs +115 -0
- package/dist/src/services/transcriptPages/index.mjs.map +1 -0
- package/dist/src/services/tunnelOutput/index.cjs +58 -0
- package/dist/src/services/tunnelOutput/index.cjs.map +1 -0
- package/dist/src/services/tunnelOutput/index.mjs +54 -0
- package/dist/src/services/tunnelOutput/index.mjs.map +1 -0
- package/dist/src/services/tunnelProcess/index.cjs +487 -0
- package/dist/src/services/tunnelProcess/index.cjs.map +1 -0
- package/dist/src/services/tunnelProcess/index.mjs +481 -0
- package/dist/src/services/tunnelProcess/index.mjs.map +1 -0
- package/dist/src/services/voiceReloadHandoff/index.cjs +136 -0
- package/dist/src/services/voiceReloadHandoff/index.cjs.map +1 -0
- package/dist/src/services/voiceReloadHandoff/index.d.mts +34 -0
- package/dist/src/services/voiceReloadHandoff/index.d.mts.map +1 -0
- package/dist/src/services/voiceReloadHandoff/index.mjs +135 -0
- package/dist/src/services/voiceReloadHandoff/index.mjs.map +1 -0
- package/dist/src/services/voiceToolsContract/index.cjs +26 -0
- package/dist/src/services/voiceToolsContract/index.cjs.map +1 -0
- package/dist/src/services/voiceToolsContract/index.d.mts +76 -0
- package/dist/src/services/voiceToolsContract/index.d.mts.map +1 -0
- package/dist/src/services/voiceToolsContract/index.mjs +24 -0
- package/dist/src/services/voiceToolsContract/index.mjs.map +1 -0
- package/dist/src/services/webauthn/index.cjs +262 -0
- package/dist/src/services/webauthn/index.cjs.map +1 -0
- package/dist/src/services/webauthn/index.d.mts +39 -0
- package/dist/src/services/webauthn/index.d.mts.map +1 -0
- package/dist/src/services/webauthn/index.mjs +262 -0
- package/dist/src/services/webauthn/index.mjs.map +1 -0
- package/dist/src/services/webauthnPolicy/index.cjs +174 -0
- package/dist/src/services/webauthnPolicy/index.cjs.map +1 -0
- package/dist/src/services/webauthnPolicy/index.d.mts +41 -0
- package/dist/src/services/webauthnPolicy/index.d.mts.map +1 -0
- package/dist/src/services/webauthnPolicy/index.mjs +167 -0
- package/dist/src/services/webauthnPolicy/index.mjs.map +1 -0
- package/dist/src/services/workspaceRegistry/index.cjs +187 -0
- package/dist/src/services/workspaceRegistry/index.cjs.map +1 -0
- package/dist/src/services/workspaceRegistry/index.d.mts +47 -0
- package/dist/src/services/workspaceRegistry/index.d.mts.map +1 -0
- package/dist/src/services/workspaceRegistry/index.mjs +179 -0
- package/dist/src/services/workspaceRegistry/index.mjs.map +1 -0
- package/dist/src/systems/child/adapters/headlessChildSessionService.cjs +466 -0
- package/dist/src/systems/child/adapters/headlessChildSessionService.cjs.map +1 -0
- package/dist/src/systems/child/adapters/headlessChildSessionService.d.mts +36 -0
- package/dist/src/systems/child/adapters/headlessChildSessionService.d.mts.map +1 -0
- package/dist/src/systems/child/adapters/headlessChildSessionService.mjs +457 -0
- package/dist/src/systems/child/adapters/headlessChildSessionService.mjs.map +1 -0
- package/dist/src/systems/child/adapters/nativeChildRuntimes.cjs +28 -0
- package/dist/src/systems/child/adapters/nativeChildRuntimes.cjs.map +1 -0
- package/dist/src/systems/child/adapters/nativeChildRuntimes.mjs +25 -0
- package/dist/src/systems/child/adapters/nativeChildRuntimes.mjs.map +1 -0
- package/dist/src/systems/child/services/childSession/index.cjs +219 -0
- package/dist/src/systems/child/services/childSession/index.cjs.map +1 -0
- package/dist/src/systems/child/services/childSession/index.d.mts +14 -0
- package/dist/src/systems/child/services/childSession/index.d.mts.map +1 -0
- package/dist/src/systems/child/services/childSession/index.mjs +219 -0
- package/dist/src/systems/child/services/childSession/index.mjs.map +1 -0
- package/dist/src/systems/child/types/childSession.cjs +21 -0
- package/dist/src/systems/child/types/childSession.cjs.map +1 -0
- package/dist/src/systems/child/types/childSession.d.mts +182 -0
- package/dist/src/systems/child/types/childSession.d.mts.map +1 -0
- package/dist/src/systems/child/types/childSession.mjs +17 -0
- package/dist/src/systems/child/types/childSession.mjs.map +1 -0
- package/dist/src/systems/main/adapters/headlessHost.cjs +597 -0
- package/dist/src/systems/main/adapters/headlessHost.cjs.map +1 -0
- package/dist/src/systems/main/adapters/headlessHost.d.mts +116 -0
- package/dist/src/systems/main/adapters/headlessHost.d.mts.map +1 -0
- package/dist/src/systems/main/adapters/headlessHost.mjs +595 -0
- package/dist/src/systems/main/adapters/headlessHost.mjs.map +1 -0
- package/dist/src/systems/main/adapters/headlessSessionHost.cjs +1668 -0
- package/dist/src/systems/main/adapters/headlessSessionHost.cjs.map +1 -0
- package/dist/src/systems/main/adapters/headlessSessionHost.d.mts +20 -0
- package/dist/src/systems/main/adapters/headlessSessionHost.d.mts.map +1 -0
- package/dist/src/systems/main/adapters/headlessSessionHost.mjs +1663 -0
- package/dist/src/systems/main/adapters/headlessSessionHost.mjs.map +1 -0
- package/dist/src/systems/main/types/headlessHost.d.mts +37 -0
- package/dist/src/systems/main/types/headlessHost.d.mts.map +1 -0
- package/dist/src/testing/pi/extensionScenarios.cjs +73 -0
- package/dist/src/testing/pi/extensionScenarios.cjs.map +1 -0
- package/dist/src/testing/pi/extensionScenarios.d.mts +41 -0
- package/dist/src/testing/pi/extensionScenarios.d.mts.map +1 -0
- package/dist/src/testing/pi/extensionScenarios.mjs +73 -0
- package/dist/src/testing/pi/extensionScenarios.mjs.map +1 -0
- package/dist/src/testing/pi/testHost.cjs +399 -0
- package/dist/src/testing/pi/testHost.cjs.map +1 -0
- package/dist/src/testing/pi/testHost.d.mts +160 -0
- package/dist/src/testing/pi/testHost.d.mts.map +1 -0
- package/dist/src/testing/pi/testHost.mjs +399 -0
- package/dist/src/testing/pi/testHost.mjs.map +1 -0
- package/dist/src/types/config.d.mts +20 -0
- package/dist/src/types/config.d.mts.map +1 -0
- package/dist/src/types/kernel.d.mts +69 -0
- package/dist/src/types/kernel.d.mts.map +1 -0
- package/dist/src/types/remote.d.mts +152 -0
- package/dist/src/types/remote.d.mts.map +1 -0
- package/dist/src/types/server/directHarnessRuntime.d.mts +526 -0
- package/dist/src/types/server/directHarnessRuntime.d.mts.map +1 -0
- package/dist/src/types/server/session.d.mts +5 -0
- package/dist/src/types/server/session.d.mts.map +1 -0
- package/dist/src/types/server/sessionToolSurface.d.mts +44 -0
- package/dist/src/types/server/sessionToolSurface.d.mts.map +1 -0
- package/dist/src/web/models/globalStore.cjs +23 -0
- package/dist/src/web/models/globalStore.cjs.map +1 -0
- package/dist/src/web/models/globalStore.d.mts +6 -0
- package/dist/src/web/models/globalStore.d.mts.map +1 -0
- package/dist/src/web/models/globalStore.mjs +23 -0
- package/dist/src/web/models/globalStore.mjs.map +1 -0
- package/dist/src/web/models/sessionStore.cjs +56 -0
- package/dist/src/web/models/sessionStore.cjs.map +1 -0
- package/dist/src/web/models/sessionStore.d.mts +14 -0
- package/dist/src/web/models/sessionStore.d.mts.map +1 -0
- package/dist/src/web/models/sessionStore.mjs +56 -0
- package/dist/src/web/models/sessionStore.mjs.map +1 -0
- package/dist/src/web/models/workspaceStore.cjs +50 -0
- package/dist/src/web/models/workspaceStore.cjs.map +1 -0
- package/dist/src/web/models/workspaceStore.d.mts +18 -0
- package/dist/src/web/models/workspaceStore.d.mts.map +1 -0
- package/dist/src/web/models/workspaceStore.mjs +50 -0
- package/dist/src/web/models/workspaceStore.mjs.map +1 -0
- package/dist/src/web/schemas/bundleAssetPolicy.cjs +20 -0
- package/dist/src/web/schemas/bundleAssetPolicy.cjs.map +1 -0
- package/dist/src/web/schemas/bundleAssetPolicy.d.mts +10 -0
- package/dist/src/web/schemas/bundleAssetPolicy.d.mts.map +1 -0
- package/dist/src/web/schemas/bundleAssetPolicy.mjs +18 -0
- package/dist/src/web/schemas/bundleAssetPolicy.mjs.map +1 -0
- package/dist/src/web/schemas/template.cjs +35 -0
- package/dist/src/web/schemas/template.cjs.map +1 -0
- package/dist/src/web/schemas/template.d.mts +9 -0
- package/dist/src/web/schemas/template.d.mts.map +1 -0
- package/dist/src/web/schemas/template.mjs +34 -0
- package/dist/src/web/schemas/template.mjs.map +1 -0
- package/dist/src/web/services/apiClient/index.cjs +156 -0
- package/dist/src/web/services/apiClient/index.cjs.map +1 -0
- package/dist/src/web/services/apiClient/index.d.mts +152 -0
- package/dist/src/web/services/apiClient/index.d.mts.map +1 -0
- package/dist/src/web/services/apiClient/index.mjs +154 -0
- package/dist/src/web/services/apiClient/index.mjs.map +1 -0
- package/dist/src/web/services/apiPaths/index.cjs +83 -0
- package/dist/src/web/services/apiPaths/index.cjs.map +1 -0
- package/dist/src/web/services/apiPaths/index.d.mts +81 -0
- package/dist/src/web/services/apiPaths/index.d.mts.map +1 -0
- package/dist/src/web/services/apiPaths/index.mjs +78 -0
- package/dist/src/web/services/apiPaths/index.mjs.map +1 -0
- package/dist/src/web/services/apiRoutes/index.cjs +47 -0
- package/dist/src/web/services/apiRoutes/index.cjs.map +1 -0
- package/dist/src/web/services/apiRoutes/index.d.mts +21 -0
- package/dist/src/web/services/apiRoutes/index.d.mts.map +1 -0
- package/dist/src/web/services/apiRoutes/index.mjs +43 -0
- package/dist/src/web/services/apiRoutes/index.mjs.map +1 -0
- package/dist/src/web/services/mcpWidget.cjs +9 -0
- package/dist/src/web/services/mcpWidget.cjs.map +1 -0
- package/dist/src/web/services/mcpWidget.d.mts +6 -0
- package/dist/src/web/services/mcpWidget.d.mts.map +1 -0
- package/dist/src/web/services/mcpWidget.mjs +9 -0
- package/dist/src/web/services/mcpWidget.mjs.map +1 -0
- package/dist/src/web/services/sessionRegistry/index.cjs +70 -0
- package/dist/src/web/services/sessionRegistry/index.cjs.map +1 -0
- package/dist/src/web/services/sessionRegistry/index.d.mts +29 -0
- package/dist/src/web/services/sessionRegistry/index.d.mts.map +1 -0
- package/dist/src/web/services/sessionRegistry/index.mjs +66 -0
- package/dist/src/web/services/sessionRegistry/index.mjs.map +1 -0
- package/dist/src/web/services/testing/channels.cjs +11 -0
- package/dist/src/web/services/testing/channels.cjs.map +1 -0
- package/dist/src/web/services/testing/channels.d.mts +8 -0
- package/dist/src/web/services/testing/channels.d.mts.map +1 -0
- package/dist/src/web/services/testing/channels.mjs +11 -0
- package/dist/src/web/services/testing/channels.mjs.map +1 -0
- package/dist/src/web/services/testing/index.cjs +27 -0
- package/dist/src/web/services/testing/index.cjs.map +1 -0
- package/dist/src/web/services/testing/index.d.mts +31 -0
- package/dist/src/web/services/testing/index.d.mts.map +1 -0
- package/dist/src/web/services/testing/index.mjs +27 -0
- package/dist/src/web/services/testing/index.mjs.map +1 -0
- package/dist/src/web/services/testing/rpcStub.cjs +58 -0
- package/dist/src/web/services/testing/rpcStub.cjs.map +1 -0
- package/dist/src/web/services/testing/rpcStub.d.mts +37 -0
- package/dist/src/web/services/testing/rpcStub.d.mts.map +1 -0
- package/dist/src/web/services/testing/rpcStub.mjs +58 -0
- package/dist/src/web/services/testing/rpcStub.mjs.map +1 -0
- package/dist/src/web/services/testing/slotProps.cjs +97 -0
- package/dist/src/web/services/testing/slotProps.cjs.map +1 -0
- package/dist/src/web/services/testing/slotProps.d.mts +69 -0
- package/dist/src/web/services/testing/slotProps.d.mts.map +1 -0
- package/dist/src/web/services/testing/slotProps.mjs +96 -0
- package/dist/src/web/services/testing/slotProps.mjs.map +1 -0
- package/dist/src/web/services/testing/templateRail.cjs +156 -0
- package/dist/src/web/services/testing/templateRail.cjs.map +1 -0
- package/dist/src/web/services/testing/templateRail.d.mts +32 -0
- package/dist/src/web/services/testing/templateRail.d.mts.map +1 -0
- package/dist/src/web/services/testing/templateRail.mjs +154 -0
- package/dist/src/web/services/testing/templateRail.mjs.map +1 -0
- package/dist/src/web/services/toolResult/index.cjs +30 -0
- package/dist/src/web/services/toolResult/index.cjs.map +1 -0
- package/dist/src/web/services/toolResult/index.d.mts +14 -0
- package/dist/src/web/services/toolResult/index.d.mts.map +1 -0
- package/dist/src/web/services/toolResult/index.mjs +29 -0
- package/dist/src/web/services/toolResult/index.mjs.map +1 -0
- package/dist/src/web/types/extensionFile.d.mts +62 -0
- package/dist/src/web/types/extensionFile.d.mts.map +1 -0
- package/dist/src/web/types/mcpWidget.d.mts +14 -0
- package/dist/src/web/types/mcpWidget.d.mts.map +1 -0
- package/dist/src/web/types/modelContext.d.mts +43 -0
- package/dist/src/web/types/modelContext.d.mts.map +1 -0
- package/dist/src/web/types/nativeTemplate.d.mts +29 -0
- package/dist/src/web/types/nativeTemplate.d.mts.map +1 -0
- package/dist/src/web/types/sessionRegistry.d.mts +46 -0
- package/dist/src/web/types/sessionRegistry.d.mts.map +1 -0
- package/dist/src/web/types/template.d.mts +135 -0
- package/dist/src/web/types/template.d.mts.map +1 -0
- package/dist/src/web/types/webPlugin.d.mts +915 -0
- package/dist/src/web/types/webPlugin.d.mts.map +1 -0
- package/dist/terminalPiChildSessionService.cjs +324 -0
- package/dist/terminalPiChildSessionService.cjs.map +1 -0
- package/dist/terminalPiChildSessionService.d.mts +46 -0
- package/dist/terminalPiChildSessionService.d.mts.map +1 -0
- package/dist/terminalPiChildSessionService.mjs +318 -0
- package/dist/terminalPiChildSessionService.mjs.map +1 -0
- package/dist/testing.cjs +11 -0
- package/dist/testing.d.mts +6 -0
- package/dist/testing.mjs +6 -0
- package/dist/toolInventory.cjs +136 -0
- package/dist/toolInventory.cjs.map +1 -0
- package/dist/toolInventory.d.mts +66 -0
- package/dist/toolInventory.d.mts.map +1 -0
- package/dist/toolInventory.mjs +133 -0
- package/dist/toolInventory.mjs.map +1 -0
- package/dist/toolNames.cjs +4 -0
- package/dist/toolNames.d.mts +2 -0
- package/dist/toolNames.mjs +2 -0
- package/dist/toolOverrides.cjs +7 -0
- package/dist/toolOverrides.d.mts +3 -0
- package/dist/toolOverrides.mjs +3 -0
- package/dist/toolSurface.cjs +7 -0
- package/dist/toolSurface.d.mts +3 -0
- package/dist/toolSurface.mjs +3 -0
- package/dist/transition.cjs +5 -0
- package/dist/transition.d.cjs +5 -0
- package/dist/transition.d.mts +2 -0
- package/dist/transition.mjs +2 -0
- package/dist/transitionClassifier.cjs +112 -0
- package/dist/transitionClassifier.cjs.map +1 -0
- package/dist/transitionClassifier.d.mts +18 -0
- package/dist/transitionClassifier.d.mts.map +1 -0
- package/dist/transitionClassifier.mjs +111 -0
- package/dist/transitionClassifier.mjs.map +1 -0
- package/dist/transitionCoordinator.cjs +131 -0
- package/dist/transitionCoordinator.cjs.map +1 -0
- package/dist/transitionCoordinator.d.mts +16 -0
- package/dist/transitionCoordinator.d.mts.map +1 -0
- package/dist/transitionCoordinator.mjs +130 -0
- package/dist/transitionCoordinator.mjs.map +1 -0
- package/dist/typesContextApi.cjs +0 -0
- package/dist/typesContextApi.d.mts +79 -0
- package/dist/typesContextApi.d.mts.map +1 -0
- package/dist/typesContextApi.mjs +1 -0
- package/dist/uiHub.cjs +5 -0
- package/dist/uiHub.d.mts +2 -0
- package/dist/uiHub.mjs +2 -0
- package/dist/v3Export.cjs +10 -0
- package/dist/v3Export.cjs.map +1 -0
- package/dist/v3Export.d.mts +35 -0
- package/dist/v3Export.d.mts.map +1 -0
- package/dist/v3Export.mjs +9 -0
- package/dist/v3Export.mjs.map +1 -0
- package/dist/voiceReloadHandoff.cjs +14 -0
- package/dist/voiceReloadHandoff.d.mts +4 -0
- package/dist/voiceReloadHandoff.mjs +4 -0
- package/dist/voiceTools.cjs +56 -0
- package/dist/voiceTools.d.mts +4 -0
- package/dist/voiceTools.mjs +4 -0
- package/dist/web.cjs +65 -0
- package/dist/web.d.mts +20 -0
- package/dist/web.mjs +13 -0
- package/dist/webCompositions.cjs +181 -0
- package/dist/webCompositions.cjs.map +1 -0
- package/dist/webCompositions.d.mts +79 -0
- package/dist/webCompositions.d.mts.map +1 -0
- package/dist/webCompositions.mjs +174 -0
- package/dist/webCompositions.mjs.map +1 -0
- package/dist/webTesting.cjs +14 -0
- package/dist/webTesting.d.mts +6 -0
- package/dist/webTesting.mjs +6 -0
- package/package.json +586 -0
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
const require_runtime = require("../../../_virtual/_rolldown/runtime.cjs");
|
|
2
|
+
const require_runtimePiSettings = require("../../../runtimePiSettings.cjs");
|
|
3
|
+
const require_contextDetailStore = require("../../../contextDetailStore.cjs");
|
|
4
|
+
const require_sessionFiles = require("../../constants/sessionFiles.cjs");
|
|
5
|
+
let node_crypto = require("node:crypto");
|
|
6
|
+
let node_fs = require("node:fs");
|
|
7
|
+
node_fs = require_runtime.__toESM(node_fs, 1);
|
|
8
|
+
let node_path = require("node:path");
|
|
9
|
+
node_path = require_runtime.__toESM(node_path, 1);
|
|
10
|
+
//#region src/services/sessionAttachments/index.ts
|
|
11
|
+
/**
|
|
12
|
+
* Where composer attachments live on the host, so a tool can be handed one by path.
|
|
13
|
+
*
|
|
14
|
+
* Each upload gets its own random directory under the session's root, which keeps
|
|
15
|
+
* two files with the same name apart and lets the original name survive. The
|
|
16
|
+
* directory is owner-only because an attachment is whatever the user dropped in.
|
|
17
|
+
*/
|
|
18
|
+
const DIRECTORY_NAME = "doom-attachments";
|
|
19
|
+
const PRIVATE_DIRECTORY_MODE = 448;
|
|
20
|
+
const PRIVATE_FILE_MODE = 384;
|
|
21
|
+
const MAX_NAME_BYTES = 200;
|
|
22
|
+
const FALLBACK_NAME = "file";
|
|
23
|
+
const RETENTION_MS = 6048e5;
|
|
24
|
+
/** Throws for an id whose directory would be the attachment root itself or its parent. */
|
|
25
|
+
function sessionAttachmentRoot(sessionId, environment = process.env) {
|
|
26
|
+
const directory = require_contextDetailStore.safeName(sessionId);
|
|
27
|
+
if (directory === "" || directory === "." || directory === "..") throw new Error("This session id cannot hold attachments.");
|
|
28
|
+
return node_path.default.join(require_runtimePiSettings.piAgentDirectory(environment), DIRECTORY_NAME, directory);
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* One plain file name: no separators or control characters, and no leading dot, so
|
|
32
|
+
* an attachment is never hidden and never `.` or `..`. Cut on a code point boundary
|
|
33
|
+
* to fit common file-name limits.
|
|
34
|
+
*/
|
|
35
|
+
function attachmentName(name) {
|
|
36
|
+
const plain = name.replace(/[\u0000-\u001f\u007f/\\]/gu, "").replace(/^\.+/u, "");
|
|
37
|
+
let fitted = "";
|
|
38
|
+
for (const character of plain) {
|
|
39
|
+
if (Buffer.byteLength(fitted + character) > MAX_NAME_BYTES) break;
|
|
40
|
+
fitted += character;
|
|
41
|
+
}
|
|
42
|
+
return fitted === "" ? FALLBACK_NAME : fitted;
|
|
43
|
+
}
|
|
44
|
+
/** Best effort: a sweep that cannot read or remove a directory leaves it for the next write. */
|
|
45
|
+
async function sweepExpired(root) {
|
|
46
|
+
const cutoff = Date.now() - RETENTION_MS;
|
|
47
|
+
let sessions;
|
|
48
|
+
try {
|
|
49
|
+
sessions = await node_fs.default.promises.readdir(root, { withFileTypes: true });
|
|
50
|
+
} catch {
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
for (const session of sessions) {
|
|
54
|
+
if (!session.isDirectory()) continue;
|
|
55
|
+
const sessionDirectory = node_path.default.join(root, session.name);
|
|
56
|
+
let uploads;
|
|
57
|
+
try {
|
|
58
|
+
uploads = await node_fs.default.promises.readdir(sessionDirectory, { withFileTypes: true });
|
|
59
|
+
} catch {
|
|
60
|
+
continue;
|
|
61
|
+
}
|
|
62
|
+
for (const upload of uploads) {
|
|
63
|
+
if (!upload.isDirectory()) continue;
|
|
64
|
+
const uploadDirectory = node_path.default.join(sessionDirectory, upload.name);
|
|
65
|
+
try {
|
|
66
|
+
if ((await node_fs.default.promises.lstat(uploadDirectory)).mtimeMs < cutoff) await node_fs.default.promises.rm(uploadDirectory, {
|
|
67
|
+
recursive: true,
|
|
68
|
+
force: true
|
|
69
|
+
});
|
|
70
|
+
} catch {}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
/** Stores one attachment and returns where it landed. Written through a temporary file, then renamed. */
|
|
75
|
+
async function writeSessionAttachment(sessionId, name, bytes, environment = process.env) {
|
|
76
|
+
const root = sessionAttachmentRoot(sessionId, environment);
|
|
77
|
+
const fileName = attachmentName(name);
|
|
78
|
+
await node_fs.default.promises.mkdir(root, {
|
|
79
|
+
recursive: true,
|
|
80
|
+
mode: PRIVATE_DIRECTORY_MODE
|
|
81
|
+
});
|
|
82
|
+
await sweepExpired(node_path.default.dirname(root));
|
|
83
|
+
const directory = node_path.default.join(root, (0, node_crypto.randomUUID)());
|
|
84
|
+
await node_fs.default.promises.mkdir(directory, { mode: PRIVATE_DIRECTORY_MODE });
|
|
85
|
+
const target = node_path.default.join(directory, fileName);
|
|
86
|
+
const temporary = node_path.default.join(directory, `.${(0, node_crypto.randomUUID)()}.tmp`);
|
|
87
|
+
try {
|
|
88
|
+
await node_fs.default.promises.writeFile(temporary, bytes, {
|
|
89
|
+
mode: PRIVATE_FILE_MODE,
|
|
90
|
+
flag: "wx"
|
|
91
|
+
});
|
|
92
|
+
await node_fs.default.promises.rename(temporary, target);
|
|
93
|
+
} catch (error) {
|
|
94
|
+
await node_fs.default.promises.rm(directory, {
|
|
95
|
+
recursive: true,
|
|
96
|
+
force: true
|
|
97
|
+
});
|
|
98
|
+
throw error;
|
|
99
|
+
}
|
|
100
|
+
return {
|
|
101
|
+
path: target,
|
|
102
|
+
name: fileName,
|
|
103
|
+
size: bytes.byteLength,
|
|
104
|
+
mimeType: require_sessionFiles.SESSION_FILE_CONTENT_TYPES[node_path.default.extname(fileName).toLowerCase()] ?? "application/octet-stream"
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
//#endregion
|
|
108
|
+
exports.sessionAttachmentRoot = sessionAttachmentRoot;
|
|
109
|
+
exports.writeSessionAttachment = writeSessionAttachment;
|
|
110
|
+
|
|
111
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","names":["safeName","path","piAgentDirectory","fs","randomUUID","SESSION_FILE_CONTENT_TYPES"],"sources":["../../../../src/services/sessionAttachments/index.ts"],"sourcesContent":["import { randomUUID } from 'node:crypto';\nimport fs from 'node:fs';\nimport path from 'node:path';\n\nimport { SESSION_FILE_CONTENT_TYPES, SESSION_FILE_DEFAULT_CONTENT_TYPE } from '../../constants/sessionFiles';\nimport { safeName } from '../contextDetailStore';\nimport { piAgentDirectory } from '../piSettings';\n\n/**\n * Where composer attachments live on the host, so a tool can be handed one by path.\n *\n * Each upload gets its own random directory under the session's root, which keeps\n * two files with the same name apart and lets the original name survive. The\n * directory is owner-only because an attachment is whatever the user dropped in.\n */\n\nconst DIRECTORY_NAME = 'doom-attachments';\nconst PRIVATE_DIRECTORY_MODE = 0o700;\nconst PRIVATE_FILE_MODE = 0o600;\nconst MAX_NAME_BYTES = 200;\nconst FALLBACK_NAME = 'file';\nconst RETENTION_MS = 7 * 24 * 60 * 60 * 1000;\n\nexport interface SessionAttachment {\n path: string;\n name: string;\n size: number;\n mimeType: string;\n}\n\n/** Throws for an id whose directory would be the attachment root itself or its parent. */\nexport function sessionAttachmentRoot(\n sessionId: string,\n environment: Readonly<Record<string, string | undefined>> = process.env,\n): string {\n const directory = safeName(sessionId);\n if (directory === '' || directory === '.' || directory === '..')\n throw new Error('This session id cannot hold attachments.');\n return path.join(piAgentDirectory(environment), DIRECTORY_NAME, directory);\n}\n\n/**\n * One plain file name: no separators or control characters, and no leading dot, so\n * an attachment is never hidden and never `.` or `..`. Cut on a code point boundary\n * to fit common file-name limits.\n */\nfunction attachmentName(name: string): string {\n // oxlint-disable-next-line no-control-regex -- stripping control characters is the point\n const plain = name.replace(/[\\u0000-\\u001f\\u007f/\\\\]/gu, '').replace(/^\\.+/u, '');\n let fitted = '';\n for (const character of plain) {\n if (Buffer.byteLength(fitted + character) > MAX_NAME_BYTES) break;\n fitted += character;\n }\n return fitted === '' ? FALLBACK_NAME : fitted;\n}\n\n/** Best effort: a sweep that cannot read or remove a directory leaves it for the next write. */\nasync function sweepExpired(root: string): Promise<void> {\n const cutoff = Date.now() - RETENTION_MS;\n let sessions: fs.Dirent[];\n try {\n sessions = await fs.promises.readdir(root, { withFileTypes: true });\n } catch {\n return;\n }\n for (const session of sessions) {\n if (!session.isDirectory()) continue;\n const sessionDirectory = path.join(root, session.name);\n let uploads: fs.Dirent[];\n try {\n uploads = await fs.promises.readdir(sessionDirectory, { withFileTypes: true });\n } catch {\n continue;\n }\n for (const upload of uploads) {\n if (!upload.isDirectory()) continue;\n const uploadDirectory = path.join(sessionDirectory, upload.name);\n try {\n if ((await fs.promises.lstat(uploadDirectory)).mtimeMs < cutoff)\n await fs.promises.rm(uploadDirectory, { recursive: true, force: true });\n } catch {\n // Left for the next sweep.\n }\n }\n }\n}\n\n/** Stores one attachment and returns where it landed. Written through a temporary file, then renamed. */\nexport async function writeSessionAttachment(\n sessionId: string,\n name: string,\n bytes: Uint8Array,\n environment: Readonly<Record<string, string | undefined>> = process.env,\n): Promise<SessionAttachment> {\n const root = sessionAttachmentRoot(sessionId, environment);\n const fileName = attachmentName(name);\n await fs.promises.mkdir(root, { recursive: true, mode: PRIVATE_DIRECTORY_MODE });\n await sweepExpired(path.dirname(root));\n const directory = path.join(root, randomUUID());\n await fs.promises.mkdir(directory, { mode: PRIVATE_DIRECTORY_MODE });\n const target = path.join(directory, fileName);\n const temporary = path.join(directory, `.${randomUUID()}.tmp`);\n try {\n await fs.promises.writeFile(temporary, bytes, { mode: PRIVATE_FILE_MODE, flag: 'wx' });\n await fs.promises.rename(temporary, target);\n } catch (error) {\n await fs.promises.rm(directory, { recursive: true, force: true });\n throw error;\n }\n return {\n path: target,\n name: fileName,\n size: bytes.byteLength,\n mimeType: SESSION_FILE_CONTENT_TYPES[path.extname(fileName).toLowerCase()] ?? SESSION_FILE_DEFAULT_CONTENT_TYPE,\n };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AAgBA,MAAM,iBAAiB;AACvB,MAAM,yBAAyB;AAC/B,MAAM,oBAAoB;AAC1B,MAAM,iBAAiB;AACvB,MAAM,gBAAgB;AACtB,MAAM,eAAe;;AAUrB,SAAgB,sBACd,WACA,cAA4D,QAAQ,KAC5D;CACR,MAAM,YAAYA,2BAAAA,SAAS,SAAS;CACpC,IAAI,cAAc,MAAM,cAAc,OAAO,cAAc,MACzD,MAAM,IAAI,MAAM,0CAA0C;CAC5D,OAAOC,UAAAA,QAAK,KAAKC,0BAAAA,iBAAiB,WAAW,GAAG,gBAAgB,SAAS;AAC3E;;;;;;AAOA,SAAS,eAAe,MAAsB;CAE5C,MAAM,QAAQ,KAAK,QAAQ,8BAA8B,EAAE,CAAC,CAAC,QAAQ,SAAS,EAAE;CAChF,IAAI,SAAS;CACb,KAAK,MAAM,aAAa,OAAO;EAC7B,IAAI,OAAO,WAAW,SAAS,SAAS,IAAI,gBAAgB;EAC5D,UAAU;CACZ;CACA,OAAO,WAAW,KAAK,gBAAgB;AACzC;;AAGA,eAAe,aAAa,MAA6B;CACvD,MAAM,SAAS,KAAK,IAAI,IAAI;CAC5B,IAAI;CACJ,IAAI;EACF,WAAW,MAAMC,QAAAA,QAAG,SAAS,QAAQ,MAAM,EAAE,eAAe,KAAK,CAAC;CACpE,QAAQ;EACN;CACF;CACA,KAAK,MAAM,WAAW,UAAU;EAC9B,IAAI,CAAC,QAAQ,YAAY,GAAG;EAC5B,MAAM,mBAAmBF,UAAAA,QAAK,KAAK,MAAM,QAAQ,IAAI;EACrD,IAAI;EACJ,IAAI;GACF,UAAU,MAAME,QAAAA,QAAG,SAAS,QAAQ,kBAAkB,EAAE,eAAe,KAAK,CAAC;EAC/E,QAAQ;GACN;EACF;EACA,KAAK,MAAM,UAAU,SAAS;GAC5B,IAAI,CAAC,OAAO,YAAY,GAAG;GAC3B,MAAM,kBAAkBF,UAAAA,QAAK,KAAK,kBAAkB,OAAO,IAAI;GAC/D,IAAI;IACF,KAAK,MAAME,QAAAA,QAAG,SAAS,MAAM,eAAe,EAAA,CAAG,UAAU,QACvD,MAAMA,QAAAA,QAAG,SAAS,GAAG,iBAAiB;KAAE,WAAW;KAAM,OAAO;IAAK,CAAC;GAC1E,QAAQ,CAER;EACF;CACF;AACF;;AAGA,eAAsB,uBACpB,WACA,MACA,OACA,cAA4D,QAAQ,KACxC;CAC5B,MAAM,OAAO,sBAAsB,WAAW,WAAW;CACzD,MAAM,WAAW,eAAe,IAAI;CACpC,MAAMA,QAAAA,QAAG,SAAS,MAAM,MAAM;EAAE,WAAW;EAAM,MAAM;CAAuB,CAAC;CAC/E,MAAM,aAAaF,UAAAA,QAAK,QAAQ,IAAI,CAAC;CACrC,MAAM,YAAYA,UAAAA,QAAK,KAAK,OAAA,GAAMG,YAAAA,WAAAA,CAAW,CAAC;CAC9C,MAAMD,QAAAA,QAAG,SAAS,MAAM,WAAW,EAAE,MAAM,uBAAuB,CAAC;CACnE,MAAM,SAASF,UAAAA,QAAK,KAAK,WAAW,QAAQ;CAC5C,MAAM,YAAYA,UAAAA,QAAK,KAAK,WAAW,KAAA,GAAIG,YAAAA,WAAAA,CAAW,EAAE,KAAK;CAC7D,IAAI;EACF,MAAMD,QAAAA,QAAG,SAAS,UAAU,WAAW,OAAO;GAAE,MAAM;GAAmB,MAAM;EAAK,CAAC;EACrF,MAAMA,QAAAA,QAAG,SAAS,OAAO,WAAW,MAAM;CAC5C,SAAS,OAAO;EACd,MAAMA,QAAAA,QAAG,SAAS,GAAG,WAAW;GAAE,WAAW;GAAM,OAAO;EAAK,CAAC;EAChE,MAAM;CACR;CACA,OAAO;EACL,MAAM;EACN,MAAM;EACN,MAAM,MAAM;EACZ,UAAUE,qBAAAA,2BAA2BJ,UAAAA,QAAK,QAAQ,QAAQ,CAAC,CAAC,YAAY,MAAA;CAC1E;AACF"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
//#region src/services/sessionAttachments/index.d.ts
|
|
2
|
+
export interface SessionAttachment {
|
|
3
|
+
path: string;
|
|
4
|
+
name: string;
|
|
5
|
+
size: number;
|
|
6
|
+
mimeType: string;
|
|
7
|
+
}
|
|
8
|
+
/** Stores one attachment and returns where it landed. Written through a temporary file, then renamed. */
|
|
9
|
+
export declare function writeSessionAttachment(sessionId: string, name: string, bytes: Uint8Array, environment?: Readonly<Record<string, string | undefined>>): Promise<SessionAttachment>;
|
|
10
|
+
//#endregion
|
|
11
|
+
//# sourceMappingURL=index.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.mts","names":[],"sources":["../../../../src/services/sessionAttachments/index.ts"],"mappings":";iBAuBiB;EACf;EACA;EACA;EACA;;;wBA8DoB,uBACpB,mBACA,cACA,OAAO,YACP,cAAa,SAAS,sCACrB,QAAQ"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { piAgentDirectory } from "../../../runtimePiSettings.mjs";
|
|
2
|
+
import { safeName } from "../../../contextDetailStore.mjs";
|
|
3
|
+
import { SESSION_FILE_CONTENT_TYPES } from "../../constants/sessionFiles.mjs";
|
|
4
|
+
import { randomUUID } from "node:crypto";
|
|
5
|
+
import fs from "node:fs";
|
|
6
|
+
import path from "node:path";
|
|
7
|
+
//#region src/services/sessionAttachments/index.ts
|
|
8
|
+
/**
|
|
9
|
+
* Where composer attachments live on the host, so a tool can be handed one by path.
|
|
10
|
+
*
|
|
11
|
+
* Each upload gets its own random directory under the session's root, which keeps
|
|
12
|
+
* two files with the same name apart and lets the original name survive. The
|
|
13
|
+
* directory is owner-only because an attachment is whatever the user dropped in.
|
|
14
|
+
*/
|
|
15
|
+
const DIRECTORY_NAME = "doom-attachments";
|
|
16
|
+
const PRIVATE_DIRECTORY_MODE = 448;
|
|
17
|
+
const PRIVATE_FILE_MODE = 384;
|
|
18
|
+
const MAX_NAME_BYTES = 200;
|
|
19
|
+
const FALLBACK_NAME = "file";
|
|
20
|
+
const RETENTION_MS = 6048e5;
|
|
21
|
+
/** Throws for an id whose directory would be the attachment root itself or its parent. */
|
|
22
|
+
function sessionAttachmentRoot(sessionId, environment = process.env) {
|
|
23
|
+
const directory = safeName(sessionId);
|
|
24
|
+
if (directory === "" || directory === "." || directory === "..") throw new Error("This session id cannot hold attachments.");
|
|
25
|
+
return path.join(piAgentDirectory(environment), DIRECTORY_NAME, directory);
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* One plain file name: no separators or control characters, and no leading dot, so
|
|
29
|
+
* an attachment is never hidden and never `.` or `..`. Cut on a code point boundary
|
|
30
|
+
* to fit common file-name limits.
|
|
31
|
+
*/
|
|
32
|
+
function attachmentName(name) {
|
|
33
|
+
const plain = name.replace(/[\u0000-\u001f\u007f/\\]/gu, "").replace(/^\.+/u, "");
|
|
34
|
+
let fitted = "";
|
|
35
|
+
for (const character of plain) {
|
|
36
|
+
if (Buffer.byteLength(fitted + character) > MAX_NAME_BYTES) break;
|
|
37
|
+
fitted += character;
|
|
38
|
+
}
|
|
39
|
+
return fitted === "" ? FALLBACK_NAME : fitted;
|
|
40
|
+
}
|
|
41
|
+
/** Best effort: a sweep that cannot read or remove a directory leaves it for the next write. */
|
|
42
|
+
async function sweepExpired(root) {
|
|
43
|
+
const cutoff = Date.now() - RETENTION_MS;
|
|
44
|
+
let sessions;
|
|
45
|
+
try {
|
|
46
|
+
sessions = await fs.promises.readdir(root, { withFileTypes: true });
|
|
47
|
+
} catch {
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
for (const session of sessions) {
|
|
51
|
+
if (!session.isDirectory()) continue;
|
|
52
|
+
const sessionDirectory = path.join(root, session.name);
|
|
53
|
+
let uploads;
|
|
54
|
+
try {
|
|
55
|
+
uploads = await fs.promises.readdir(sessionDirectory, { withFileTypes: true });
|
|
56
|
+
} catch {
|
|
57
|
+
continue;
|
|
58
|
+
}
|
|
59
|
+
for (const upload of uploads) {
|
|
60
|
+
if (!upload.isDirectory()) continue;
|
|
61
|
+
const uploadDirectory = path.join(sessionDirectory, upload.name);
|
|
62
|
+
try {
|
|
63
|
+
if ((await fs.promises.lstat(uploadDirectory)).mtimeMs < cutoff) await fs.promises.rm(uploadDirectory, {
|
|
64
|
+
recursive: true,
|
|
65
|
+
force: true
|
|
66
|
+
});
|
|
67
|
+
} catch {}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
/** Stores one attachment and returns where it landed. Written through a temporary file, then renamed. */
|
|
72
|
+
async function writeSessionAttachment(sessionId, name, bytes, environment = process.env) {
|
|
73
|
+
const root = sessionAttachmentRoot(sessionId, environment);
|
|
74
|
+
const fileName = attachmentName(name);
|
|
75
|
+
await fs.promises.mkdir(root, {
|
|
76
|
+
recursive: true,
|
|
77
|
+
mode: PRIVATE_DIRECTORY_MODE
|
|
78
|
+
});
|
|
79
|
+
await sweepExpired(path.dirname(root));
|
|
80
|
+
const directory = path.join(root, randomUUID());
|
|
81
|
+
await fs.promises.mkdir(directory, { mode: PRIVATE_DIRECTORY_MODE });
|
|
82
|
+
const target = path.join(directory, fileName);
|
|
83
|
+
const temporary = path.join(directory, `.${randomUUID()}.tmp`);
|
|
84
|
+
try {
|
|
85
|
+
await fs.promises.writeFile(temporary, bytes, {
|
|
86
|
+
mode: PRIVATE_FILE_MODE,
|
|
87
|
+
flag: "wx"
|
|
88
|
+
});
|
|
89
|
+
await fs.promises.rename(temporary, target);
|
|
90
|
+
} catch (error) {
|
|
91
|
+
await fs.promises.rm(directory, {
|
|
92
|
+
recursive: true,
|
|
93
|
+
force: true
|
|
94
|
+
});
|
|
95
|
+
throw error;
|
|
96
|
+
}
|
|
97
|
+
return {
|
|
98
|
+
path: target,
|
|
99
|
+
name: fileName,
|
|
100
|
+
size: bytes.byteLength,
|
|
101
|
+
mimeType: SESSION_FILE_CONTENT_TYPES[path.extname(fileName).toLowerCase()] ?? "application/octet-stream"
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
//#endregion
|
|
105
|
+
export { sessionAttachmentRoot, writeSessionAttachment };
|
|
106
|
+
|
|
107
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","names":[],"sources":["../../../../src/services/sessionAttachments/index.ts"],"sourcesContent":["import { randomUUID } from 'node:crypto';\nimport fs from 'node:fs';\nimport path from 'node:path';\n\nimport { SESSION_FILE_CONTENT_TYPES, SESSION_FILE_DEFAULT_CONTENT_TYPE } from '../../constants/sessionFiles';\nimport { safeName } from '../contextDetailStore';\nimport { piAgentDirectory } from '../piSettings';\n\n/**\n * Where composer attachments live on the host, so a tool can be handed one by path.\n *\n * Each upload gets its own random directory under the session's root, which keeps\n * two files with the same name apart and lets the original name survive. The\n * directory is owner-only because an attachment is whatever the user dropped in.\n */\n\nconst DIRECTORY_NAME = 'doom-attachments';\nconst PRIVATE_DIRECTORY_MODE = 0o700;\nconst PRIVATE_FILE_MODE = 0o600;\nconst MAX_NAME_BYTES = 200;\nconst FALLBACK_NAME = 'file';\nconst RETENTION_MS = 7 * 24 * 60 * 60 * 1000;\n\nexport interface SessionAttachment {\n path: string;\n name: string;\n size: number;\n mimeType: string;\n}\n\n/** Throws for an id whose directory would be the attachment root itself or its parent. */\nexport function sessionAttachmentRoot(\n sessionId: string,\n environment: Readonly<Record<string, string | undefined>> = process.env,\n): string {\n const directory = safeName(sessionId);\n if (directory === '' || directory === '.' || directory === '..')\n throw new Error('This session id cannot hold attachments.');\n return path.join(piAgentDirectory(environment), DIRECTORY_NAME, directory);\n}\n\n/**\n * One plain file name: no separators or control characters, and no leading dot, so\n * an attachment is never hidden and never `.` or `..`. Cut on a code point boundary\n * to fit common file-name limits.\n */\nfunction attachmentName(name: string): string {\n // oxlint-disable-next-line no-control-regex -- stripping control characters is the point\n const plain = name.replace(/[\\u0000-\\u001f\\u007f/\\\\]/gu, '').replace(/^\\.+/u, '');\n let fitted = '';\n for (const character of plain) {\n if (Buffer.byteLength(fitted + character) > MAX_NAME_BYTES) break;\n fitted += character;\n }\n return fitted === '' ? FALLBACK_NAME : fitted;\n}\n\n/** Best effort: a sweep that cannot read or remove a directory leaves it for the next write. */\nasync function sweepExpired(root: string): Promise<void> {\n const cutoff = Date.now() - RETENTION_MS;\n let sessions: fs.Dirent[];\n try {\n sessions = await fs.promises.readdir(root, { withFileTypes: true });\n } catch {\n return;\n }\n for (const session of sessions) {\n if (!session.isDirectory()) continue;\n const sessionDirectory = path.join(root, session.name);\n let uploads: fs.Dirent[];\n try {\n uploads = await fs.promises.readdir(sessionDirectory, { withFileTypes: true });\n } catch {\n continue;\n }\n for (const upload of uploads) {\n if (!upload.isDirectory()) continue;\n const uploadDirectory = path.join(sessionDirectory, upload.name);\n try {\n if ((await fs.promises.lstat(uploadDirectory)).mtimeMs < cutoff)\n await fs.promises.rm(uploadDirectory, { recursive: true, force: true });\n } catch {\n // Left for the next sweep.\n }\n }\n }\n}\n\n/** Stores one attachment and returns where it landed. Written through a temporary file, then renamed. */\nexport async function writeSessionAttachment(\n sessionId: string,\n name: string,\n bytes: Uint8Array,\n environment: Readonly<Record<string, string | undefined>> = process.env,\n): Promise<SessionAttachment> {\n const root = sessionAttachmentRoot(sessionId, environment);\n const fileName = attachmentName(name);\n await fs.promises.mkdir(root, { recursive: true, mode: PRIVATE_DIRECTORY_MODE });\n await sweepExpired(path.dirname(root));\n const directory = path.join(root, randomUUID());\n await fs.promises.mkdir(directory, { mode: PRIVATE_DIRECTORY_MODE });\n const target = path.join(directory, fileName);\n const temporary = path.join(directory, `.${randomUUID()}.tmp`);\n try {\n await fs.promises.writeFile(temporary, bytes, { mode: PRIVATE_FILE_MODE, flag: 'wx' });\n await fs.promises.rename(temporary, target);\n } catch (error) {\n await fs.promises.rm(directory, { recursive: true, force: true });\n throw error;\n }\n return {\n path: target,\n name: fileName,\n size: bytes.byteLength,\n mimeType: SESSION_FILE_CONTENT_TYPES[path.extname(fileName).toLowerCase()] ?? SESSION_FILE_DEFAULT_CONTENT_TYPE,\n };\n}\n"],"mappings":";;;;;;;;;;;;;;AAgBA,MAAM,iBAAiB;AACvB,MAAM,yBAAyB;AAC/B,MAAM,oBAAoB;AAC1B,MAAM,iBAAiB;AACvB,MAAM,gBAAgB;AACtB,MAAM,eAAe;;AAUrB,SAAgB,sBACd,WACA,cAA4D,QAAQ,KAC5D;CACR,MAAM,YAAY,SAAS,SAAS;CACpC,IAAI,cAAc,MAAM,cAAc,OAAO,cAAc,MACzD,MAAM,IAAI,MAAM,0CAA0C;CAC5D,OAAO,KAAK,KAAK,iBAAiB,WAAW,GAAG,gBAAgB,SAAS;AAC3E;;;;;;AAOA,SAAS,eAAe,MAAsB;CAE5C,MAAM,QAAQ,KAAK,QAAQ,8BAA8B,EAAE,CAAC,CAAC,QAAQ,SAAS,EAAE;CAChF,IAAI,SAAS;CACb,KAAK,MAAM,aAAa,OAAO;EAC7B,IAAI,OAAO,WAAW,SAAS,SAAS,IAAI,gBAAgB;EAC5D,UAAU;CACZ;CACA,OAAO,WAAW,KAAK,gBAAgB;AACzC;;AAGA,eAAe,aAAa,MAA6B;CACvD,MAAM,SAAS,KAAK,IAAI,IAAI;CAC5B,IAAI;CACJ,IAAI;EACF,WAAW,MAAM,GAAG,SAAS,QAAQ,MAAM,EAAE,eAAe,KAAK,CAAC;CACpE,QAAQ;EACN;CACF;CACA,KAAK,MAAM,WAAW,UAAU;EAC9B,IAAI,CAAC,QAAQ,YAAY,GAAG;EAC5B,MAAM,mBAAmB,KAAK,KAAK,MAAM,QAAQ,IAAI;EACrD,IAAI;EACJ,IAAI;GACF,UAAU,MAAM,GAAG,SAAS,QAAQ,kBAAkB,EAAE,eAAe,KAAK,CAAC;EAC/E,QAAQ;GACN;EACF;EACA,KAAK,MAAM,UAAU,SAAS;GAC5B,IAAI,CAAC,OAAO,YAAY,GAAG;GAC3B,MAAM,kBAAkB,KAAK,KAAK,kBAAkB,OAAO,IAAI;GAC/D,IAAI;IACF,KAAK,MAAM,GAAG,SAAS,MAAM,eAAe,EAAA,CAAG,UAAU,QACvD,MAAM,GAAG,SAAS,GAAG,iBAAiB;KAAE,WAAW;KAAM,OAAO;IAAK,CAAC;GAC1E,QAAQ,CAER;EACF;CACF;AACF;;AAGA,eAAsB,uBACpB,WACA,MACA,OACA,cAA4D,QAAQ,KACxC;CAC5B,MAAM,OAAO,sBAAsB,WAAW,WAAW;CACzD,MAAM,WAAW,eAAe,IAAI;CACpC,MAAM,GAAG,SAAS,MAAM,MAAM;EAAE,WAAW;EAAM,MAAM;CAAuB,CAAC;CAC/E,MAAM,aAAa,KAAK,QAAQ,IAAI,CAAC;CACrC,MAAM,YAAY,KAAK,KAAK,MAAM,WAAW,CAAC;CAC9C,MAAM,GAAG,SAAS,MAAM,WAAW,EAAE,MAAM,uBAAuB,CAAC;CACnE,MAAM,SAAS,KAAK,KAAK,WAAW,QAAQ;CAC5C,MAAM,YAAY,KAAK,KAAK,WAAW,IAAI,WAAW,EAAE,KAAK;CAC7D,IAAI;EACF,MAAM,GAAG,SAAS,UAAU,WAAW,OAAO;GAAE,MAAM;GAAmB,MAAM;EAAK,CAAC;EACrF,MAAM,GAAG,SAAS,OAAO,WAAW,MAAM;CAC5C,SAAS,OAAO;EACd,MAAM,GAAG,SAAS,GAAG,WAAW;GAAE,WAAW;GAAM,OAAO;EAAK,CAAC;EAChE,MAAM;CACR;CACA,OAAO;EACL,MAAM;EACN,MAAM;EACN,MAAM,MAAM;EACZ,UAAU,2BAA2B,KAAK,QAAQ,QAAQ,CAAC,CAAC,YAAY,MAAA;CAC1E;AACF"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
let node_child_process = require("node:child_process");
|
|
2
|
+
//#region src/services/sessionGitStatus/index.ts
|
|
3
|
+
const GIT_TIMEOUT_MS = 5e3;
|
|
4
|
+
const BRANCH_HEAD_PREFIX = "# branch.head ";
|
|
5
|
+
const BRANCH_OID_PREFIX = "# branch.oid ";
|
|
6
|
+
const DETACHED_HEAD = "(detached)";
|
|
7
|
+
const SHORT_OID_LENGTH = 7;
|
|
8
|
+
/**
|
|
9
|
+
* Reads the branch and dirty flag for a session cwd with one `git status` call.
|
|
10
|
+
* Resolves undefined when the cwd is not a git work tree or git is unavailable,
|
|
11
|
+
* which the session summary documents as "no git status".
|
|
12
|
+
*/
|
|
13
|
+
function readSessionGitStatus(cwd) {
|
|
14
|
+
return new Promise((resolve) => {
|
|
15
|
+
(0, node_child_process.execFile)("git", [
|
|
16
|
+
"status",
|
|
17
|
+
"--porcelain=v2",
|
|
18
|
+
"--branch",
|
|
19
|
+
"--untracked-files=no"
|
|
20
|
+
], {
|
|
21
|
+
cwd,
|
|
22
|
+
timeout: GIT_TIMEOUT_MS,
|
|
23
|
+
windowsHide: true
|
|
24
|
+
}, (error, stdout) => {
|
|
25
|
+
if (error) {
|
|
26
|
+
resolve(void 0);
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
let head;
|
|
30
|
+
let oid;
|
|
31
|
+
let dirty = false;
|
|
32
|
+
for (const line of stdout.split("\n")) if (line.startsWith(BRANCH_HEAD_PREFIX)) head = line.slice(14).trim();
|
|
33
|
+
else if (line.startsWith(BRANCH_OID_PREFIX)) oid = line.slice(13).trim();
|
|
34
|
+
else if (line !== "" && !line.startsWith("#")) dirty = true;
|
|
35
|
+
const branch = head === DETACHED_HEAD ? oid?.slice(0, SHORT_OID_LENGTH) : head;
|
|
36
|
+
resolve(branch ? {
|
|
37
|
+
branch,
|
|
38
|
+
dirty
|
|
39
|
+
} : void 0);
|
|
40
|
+
});
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
//#endregion
|
|
44
|
+
exports.readSessionGitStatus = readSessionGitStatus;
|
|
45
|
+
|
|
46
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","names":[],"sources":["../../../../src/services/sessionGitStatus/index.ts"],"sourcesContent":["import { execFile } from 'node:child_process';\n\nimport type { SessionGitStatus } from './type';\n\nconst GIT_TIMEOUT_MS = 5_000;\nconst BRANCH_HEAD_PREFIX = '# branch.head ';\nconst BRANCH_OID_PREFIX = '# branch.oid ';\nconst DETACHED_HEAD = '(detached)';\nconst SHORT_OID_LENGTH = 7;\n\n/**\n * Reads the branch and dirty flag for a session cwd with one `git status` call.\n * Resolves undefined when the cwd is not a git work tree or git is unavailable,\n * which the session summary documents as \"no git status\".\n */\nexport function readSessionGitStatus(cwd: string): Promise<SessionGitStatus | undefined> {\n return new Promise((resolve) => {\n execFile(\n 'git',\n ['status', '--porcelain=v2', '--branch', '--untracked-files=no'],\n { cwd, timeout: GIT_TIMEOUT_MS, windowsHide: true },\n (error, stdout) => {\n if (error) {\n resolve(undefined);\n return;\n }\n let head: string | undefined;\n let oid: string | undefined;\n let dirty = false;\n for (const line of stdout.split('\\n')) {\n if (line.startsWith(BRANCH_HEAD_PREFIX)) head = line.slice(BRANCH_HEAD_PREFIX.length).trim();\n else if (line.startsWith(BRANCH_OID_PREFIX)) oid = line.slice(BRANCH_OID_PREFIX.length).trim();\n else if (line !== '' && !line.startsWith('#')) dirty = true;\n }\n const branch = head === DETACHED_HEAD ? oid?.slice(0, SHORT_OID_LENGTH) : head;\n resolve(branch ? { branch, dirty } : undefined);\n },\n );\n });\n}\n"],"mappings":";;AAIA,MAAM,iBAAiB;AACvB,MAAM,qBAAqB;AAC3B,MAAM,oBAAoB;AAC1B,MAAM,gBAAgB;AACtB,MAAM,mBAAmB;;;;;;AAOzB,SAAgB,qBAAqB,KAAoD;CACvF,OAAO,IAAI,SAAS,YAAY;EAC9B,CAAA,GAAA,mBAAA,SAAA,CACE,OACA;GAAC;GAAU;GAAkB;GAAY;EAAsB,GAC/D;GAAE;GAAK,SAAS;GAAgB,aAAa;EAAK,IACjD,OAAO,WAAW;GACjB,IAAI,OAAO;IACT,QAAQ,KAAA,CAAS;IACjB;GACF;GACA,IAAI;GACJ,IAAI;GACJ,IAAI,QAAQ;GACZ,KAAK,MAAM,QAAQ,OAAO,MAAM,IAAI,GAClC,IAAI,KAAK,WAAW,kBAAkB,GAAG,OAAO,KAAK,MAAM,EAAyB,CAAC,CAAC,KAAK;QACtF,IAAI,KAAK,WAAW,iBAAiB,GAAG,MAAM,KAAK,MAAM,EAAwB,CAAC,CAAC,KAAK;QACxF,IAAI,SAAS,MAAM,CAAC,KAAK,WAAW,GAAG,GAAG,QAAQ;GAEzD,MAAM,SAAS,SAAS,gBAAgB,KAAK,MAAM,GAAG,gBAAgB,IAAI;GAC1E,QAAQ,SAAS;IAAE;IAAQ;GAAM,IAAI,KAAA,CAAS;EAChD,CACF;CACF,CAAC;AACH"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { execFile } from "node:child_process";
|
|
2
|
+
//#region src/services/sessionGitStatus/index.ts
|
|
3
|
+
const GIT_TIMEOUT_MS = 5e3;
|
|
4
|
+
const BRANCH_HEAD_PREFIX = "# branch.head ";
|
|
5
|
+
const BRANCH_OID_PREFIX = "# branch.oid ";
|
|
6
|
+
const DETACHED_HEAD = "(detached)";
|
|
7
|
+
const SHORT_OID_LENGTH = 7;
|
|
8
|
+
/**
|
|
9
|
+
* Reads the branch and dirty flag for a session cwd with one `git status` call.
|
|
10
|
+
* Resolves undefined when the cwd is not a git work tree or git is unavailable,
|
|
11
|
+
* which the session summary documents as "no git status".
|
|
12
|
+
*/
|
|
13
|
+
function readSessionGitStatus(cwd) {
|
|
14
|
+
return new Promise((resolve) => {
|
|
15
|
+
execFile("git", [
|
|
16
|
+
"status",
|
|
17
|
+
"--porcelain=v2",
|
|
18
|
+
"--branch",
|
|
19
|
+
"--untracked-files=no"
|
|
20
|
+
], {
|
|
21
|
+
cwd,
|
|
22
|
+
timeout: GIT_TIMEOUT_MS,
|
|
23
|
+
windowsHide: true
|
|
24
|
+
}, (error, stdout) => {
|
|
25
|
+
if (error) {
|
|
26
|
+
resolve(void 0);
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
let head;
|
|
30
|
+
let oid;
|
|
31
|
+
let dirty = false;
|
|
32
|
+
for (const line of stdout.split("\n")) if (line.startsWith(BRANCH_HEAD_PREFIX)) head = line.slice(14).trim();
|
|
33
|
+
else if (line.startsWith(BRANCH_OID_PREFIX)) oid = line.slice(13).trim();
|
|
34
|
+
else if (line !== "" && !line.startsWith("#")) dirty = true;
|
|
35
|
+
const branch = head === DETACHED_HEAD ? oid?.slice(0, SHORT_OID_LENGTH) : head;
|
|
36
|
+
resolve(branch ? {
|
|
37
|
+
branch,
|
|
38
|
+
dirty
|
|
39
|
+
} : void 0);
|
|
40
|
+
});
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
//#endregion
|
|
44
|
+
export { readSessionGitStatus };
|
|
45
|
+
|
|
46
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","names":[],"sources":["../../../../src/services/sessionGitStatus/index.ts"],"sourcesContent":["import { execFile } from 'node:child_process';\n\nimport type { SessionGitStatus } from './type';\n\nconst GIT_TIMEOUT_MS = 5_000;\nconst BRANCH_HEAD_PREFIX = '# branch.head ';\nconst BRANCH_OID_PREFIX = '# branch.oid ';\nconst DETACHED_HEAD = '(detached)';\nconst SHORT_OID_LENGTH = 7;\n\n/**\n * Reads the branch and dirty flag for a session cwd with one `git status` call.\n * Resolves undefined when the cwd is not a git work tree or git is unavailable,\n * which the session summary documents as \"no git status\".\n */\nexport function readSessionGitStatus(cwd: string): Promise<SessionGitStatus | undefined> {\n return new Promise((resolve) => {\n execFile(\n 'git',\n ['status', '--porcelain=v2', '--branch', '--untracked-files=no'],\n { cwd, timeout: GIT_TIMEOUT_MS, windowsHide: true },\n (error, stdout) => {\n if (error) {\n resolve(undefined);\n return;\n }\n let head: string | undefined;\n let oid: string | undefined;\n let dirty = false;\n for (const line of stdout.split('\\n')) {\n if (line.startsWith(BRANCH_HEAD_PREFIX)) head = line.slice(BRANCH_HEAD_PREFIX.length).trim();\n else if (line.startsWith(BRANCH_OID_PREFIX)) oid = line.slice(BRANCH_OID_PREFIX.length).trim();\n else if (line !== '' && !line.startsWith('#')) dirty = true;\n }\n const branch = head === DETACHED_HEAD ? oid?.slice(0, SHORT_OID_LENGTH) : head;\n resolve(branch ? { branch, dirty } : undefined);\n },\n );\n });\n}\n"],"mappings":";;AAIA,MAAM,iBAAiB;AACvB,MAAM,qBAAqB;AAC3B,MAAM,oBAAoB;AAC1B,MAAM,gBAAgB;AACtB,MAAM,mBAAmB;;;;;;AAOzB,SAAgB,qBAAqB,KAAoD;CACvF,OAAO,IAAI,SAAS,YAAY;EAC9B,SACE,OACA;GAAC;GAAU;GAAkB;GAAY;EAAsB,GAC/D;GAAE;GAAK,SAAS;GAAgB,aAAa;EAAK,IACjD,OAAO,WAAW;GACjB,IAAI,OAAO;IACT,QAAQ,KAAA,CAAS;IACjB;GACF;GACA,IAAI;GACJ,IAAI;GACJ,IAAI,QAAQ;GACZ,KAAK,MAAM,QAAQ,OAAO,MAAM,IAAI,GAClC,IAAI,KAAK,WAAW,kBAAkB,GAAG,OAAO,KAAK,MAAM,EAAyB,CAAC,CAAC,KAAK;QACtF,IAAI,KAAK,WAAW,iBAAiB,GAAG,MAAM,KAAK,MAAM,EAAwB,CAAC,CAAC,KAAK;QACxF,IAAI,SAAS,MAAM,CAAC,KAAK,WAAW,GAAG,GAAG,QAAQ;GAEzD,MAAM,SAAS,SAAS,gBAAgB,KAAK,MAAM,GAAG,gBAAgB,IAAI;GAC1E,QAAQ,SAAS;IAAE;IAAQ;GAAM,IAAI,KAAA,CAAS;EAChD,CACF;CACF,CAAC;AACH"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
//#region src/services/sessionGitStatus/type.d.ts
|
|
2
|
+
export interface SessionGitStatus {
|
|
3
|
+
readonly branch: string;
|
|
4
|
+
/** True when tracked files have uncommitted changes. Untracked files are ignored to keep large trees cheap. */
|
|
5
|
+
readonly dirty: boolean;
|
|
6
|
+
}
|
|
7
|
+
//#endregion
|
|
8
|
+
//# sourceMappingURL=type.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"type.d.mts","names":[],"sources":["../../../../src/services/sessionGitStatus/type.ts"],"mappings":";iBAAiB;WACN;;WAEA"}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
const require_runtime = require("../../../_virtual/_rolldown/runtime.cjs");
|
|
2
|
+
let node_fs = require("node:fs");
|
|
3
|
+
node_fs = require_runtime.__toESM(node_fs, 1);
|
|
4
|
+
let node_path = require("node:path");
|
|
5
|
+
node_path = require_runtime.__toESM(node_path, 1);
|
|
6
|
+
let node_sqlite = require("node:sqlite");
|
|
7
|
+
//#region src/services/sessionMcpActivity/index.ts
|
|
8
|
+
const PREVIEW_LIMIT = 16384;
|
|
9
|
+
const PAGE_SIZE = 50;
|
|
10
|
+
const SECRET_KEY = /password|passphrase|secret|token|authorization|cookie|credential|api[-_]?key|private[-_]?key/iu;
|
|
11
|
+
/** Bounded text previews only. Do not persist binary MCP content or authentication material. */
|
|
12
|
+
function sessionMcpPreview(value) {
|
|
13
|
+
let remaining = PREVIEW_LIMIT;
|
|
14
|
+
const seen = /* @__PURE__ */ new WeakSet();
|
|
15
|
+
const clean = (item, depth) => {
|
|
16
|
+
if (remaining <= 0 || depth > 12) return "[truncated]";
|
|
17
|
+
if (typeof item === "string") {
|
|
18
|
+
const text = item.replace(/Bearer\s+[^\s"']+/giu, "Bearer [redacted]").replace(/\beyJ[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\b/gu, "[redacted]").replace(/([?&](?:token|api_key|key|secret|password)=)[^&#\s"']*/giu, "$1[redacted]").replace(/(https?:\/\/)[^\s/@]+:[^\s/@]+@/giu, "$1[redacted]@");
|
|
19
|
+
const bounded = text.slice(0, remaining);
|
|
20
|
+
remaining -= bounded.length;
|
|
21
|
+
return bounded.length < text.length ? `${bounded}\n[truncated]` : bounded;
|
|
22
|
+
}
|
|
23
|
+
if (item === null || typeof item !== "object") return item;
|
|
24
|
+
if (seen.has(item)) return "[circular]";
|
|
25
|
+
seen.add(item);
|
|
26
|
+
if (Array.isArray(item)) return item.slice(0, 100).map((entry) => clean(entry, depth + 1));
|
|
27
|
+
return Object.fromEntries(Object.entries(item).slice(0, 100).map(([key, entry]) => [key, SECRET_KEY.test(key) ? "[redacted]" : key === "data" && typeof entry === "string" ? "[binary omitted]" : clean(entry, depth + 1)]));
|
|
28
|
+
};
|
|
29
|
+
try {
|
|
30
|
+
const text = JSON.stringify(clean(value, 0), null, 2) ?? "";
|
|
31
|
+
return text.length > PREVIEW_LIMIT ? `${text.slice(0, PREVIEW_LIMIT)}\n[truncated]` : text;
|
|
32
|
+
} catch {
|
|
33
|
+
return "[preview unavailable]";
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
/** One process owns this private ledger. Pagination never drops older tool calls. */
|
|
37
|
+
function createSessionMcpActivityStore(stateDir) {
|
|
38
|
+
node_fs.default.mkdirSync(stateDir, {
|
|
39
|
+
recursive: true,
|
|
40
|
+
mode: 448
|
|
41
|
+
});
|
|
42
|
+
const file = node_path.default.join(stateDir, "session-mcp-activity.sqlite");
|
|
43
|
+
node_fs.default.closeSync(node_fs.default.openSync(file, "a", 384));
|
|
44
|
+
const database = new node_sqlite.DatabaseSync(file);
|
|
45
|
+
database.exec(`
|
|
46
|
+
PRAGMA journal_mode = WAL;
|
|
47
|
+
PRAGMA busy_timeout = 5000;
|
|
48
|
+
CREATE TABLE IF NOT EXISTS calls (
|
|
49
|
+
sequence INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
50
|
+
id TEXT NOT NULL UNIQUE,
|
|
51
|
+
workspace_id TEXT NOT NULL,
|
|
52
|
+
session_id TEXT NOT NULL,
|
|
53
|
+
record TEXT NOT NULL
|
|
54
|
+
);
|
|
55
|
+
CREATE INDEX IF NOT EXISTS calls_session ON calls(workspace_id, session_id, sequence);
|
|
56
|
+
`);
|
|
57
|
+
const unfinished = database.prepare("SELECT id, record FROM calls WHERE json_extract(record, '$.status') = 'running'").all();
|
|
58
|
+
const update = database.prepare("UPDATE calls SET record = ? WHERE id = ?");
|
|
59
|
+
for (const row of unfinished) {
|
|
60
|
+
const record = JSON.parse(String(row.record));
|
|
61
|
+
update.run(JSON.stringify({
|
|
62
|
+
...record,
|
|
63
|
+
status: "interrupted",
|
|
64
|
+
finishedAt: Date.now()
|
|
65
|
+
}), String(row.id));
|
|
66
|
+
}
|
|
67
|
+
let failure;
|
|
68
|
+
const save = database.prepare(`
|
|
69
|
+
INSERT INTO calls (id, workspace_id, session_id, record) VALUES (?, ?, ?, ?)
|
|
70
|
+
ON CONFLICT(id) DO UPDATE SET workspace_id = excluded.workspace_id, session_id = excluded.session_id, record = excluded.record
|
|
71
|
+
`);
|
|
72
|
+
return {
|
|
73
|
+
record(workspaceId, sessionId, clientName, invocation) {
|
|
74
|
+
try {
|
|
75
|
+
const record = {
|
|
76
|
+
id: invocation.id,
|
|
77
|
+
toolName: invocation.toolName,
|
|
78
|
+
clientName,
|
|
79
|
+
startedAt: invocation.startedAt,
|
|
80
|
+
finishedAt: invocation.finishedAt,
|
|
81
|
+
status: invocation.status,
|
|
82
|
+
input: sessionMcpPreview(invocation.input),
|
|
83
|
+
...invocation.output === void 0 ? {} : { output: sessionMcpPreview(invocation.output) }
|
|
84
|
+
};
|
|
85
|
+
save.run(invocation.id, workspaceId, sessionId, JSON.stringify(record));
|
|
86
|
+
} catch (error) {
|
|
87
|
+
failure = new Error("MCP call history could not be saved. Check the host storage.", { cause: error });
|
|
88
|
+
throw failure;
|
|
89
|
+
}
|
|
90
|
+
},
|
|
91
|
+
read(workspaceId, sessionId, before) {
|
|
92
|
+
if (failure) throw failure;
|
|
93
|
+
const rows = database.prepare(`SELECT sequence, record FROM calls
|
|
94
|
+
WHERE workspace_id = ? AND session_id = ? AND sequence < ? ORDER BY sequence DESC LIMIT ?`).all(workspaceId, sessionId, before ?? Number.MAX_SAFE_INTEGER, 51);
|
|
95
|
+
const calls = rows.slice(0, PAGE_SIZE).map((row) => ({
|
|
96
|
+
...JSON.parse(String(row.record)),
|
|
97
|
+
sequence: Number(row.sequence)
|
|
98
|
+
}));
|
|
99
|
+
const count = database.prepare("SELECT COUNT(*) AS total FROM calls WHERE workspace_id = ? AND session_id = ?").get(workspaceId, sessionId);
|
|
100
|
+
return {
|
|
101
|
+
calls,
|
|
102
|
+
total: Number(count?.total ?? 0),
|
|
103
|
+
...rows.length > PAGE_SIZE ? { nextBefore: calls.at(-1).sequence } : {}
|
|
104
|
+
};
|
|
105
|
+
},
|
|
106
|
+
close() {
|
|
107
|
+
database.close();
|
|
108
|
+
}
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
//#endregion
|
|
112
|
+
exports.createSessionMcpActivityStore = createSessionMcpActivityStore;
|
|
113
|
+
exports.sessionMcpPreview = sessionMcpPreview;
|
|
114
|
+
|
|
115
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","names":["path","fs","DatabaseSync"],"sources":["../../../../src/services/sessionMcpActivity/index.ts"],"sourcesContent":["import fs from 'node:fs';\nimport path from 'node:path';\nimport { DatabaseSync } from 'node:sqlite';\n\nimport type { SessionMcpCall, SessionMcpInvocation } from '../../schemas/sessionMcpActivity';\n\nconst PREVIEW_LIMIT = 16_384;\nconst PAGE_SIZE = 50;\nconst SECRET_KEY = /password|passphrase|secret|token|authorization|cookie|credential|api[-_]?key|private[-_]?key/iu;\n\n/** Bounded text previews only. Do not persist binary MCP content or authentication material. */\nexport function sessionMcpPreview(value: unknown): string {\n let remaining = PREVIEW_LIMIT;\n const seen = new WeakSet<object>();\n const clean = (item: unknown, depth: number): unknown => {\n if (remaining <= 0 || depth > 12) return '[truncated]';\n if (typeof item === 'string') {\n const text = item\n .replace(/Bearer\\s+[^\\s\"']+/giu, 'Bearer [redacted]')\n .replace(/\\beyJ[A-Za-z0-9_-]+\\.[A-Za-z0-9_-]+\\.[A-Za-z0-9_-]+\\b/gu, '[redacted]')\n .replace(/([?&](?:token|api_key|key|secret|password)=)[^&#\\s\"']*/giu, '$1[redacted]')\n .replace(/(https?:\\/\\/)[^\\s/@]+:[^\\s/@]+@/giu, '$1[redacted]@');\n const bounded = text.slice(0, remaining);\n remaining -= bounded.length;\n return bounded.length < text.length ? `${bounded}\\n[truncated]` : bounded;\n }\n if (item === null || typeof item !== 'object') return item;\n if (seen.has(item)) return '[circular]';\n seen.add(item);\n if (Array.isArray(item)) return item.slice(0, 100).map((entry) => clean(entry, depth + 1));\n return Object.fromEntries(\n Object.entries(item)\n .slice(0, 100)\n .map(([key, entry]) => [\n key,\n SECRET_KEY.test(key)\n ? '[redacted]'\n : key === 'data' && typeof entry === 'string'\n ? '[binary omitted]'\n : clean(entry, depth + 1),\n ]),\n );\n };\n try {\n const text = JSON.stringify(clean(value, 0), null, 2) ?? '';\n return text.length > PREVIEW_LIMIT ? `${text.slice(0, PREVIEW_LIMIT)}\\n[truncated]` : text;\n } catch {\n return '[preview unavailable]';\n }\n}\n\n/** One process owns this private ledger. Pagination never drops older tool calls. */\nexport function createSessionMcpActivityStore(stateDir: string) {\n fs.mkdirSync(stateDir, { recursive: true, mode: 0o700 });\n const file = path.join(stateDir, 'session-mcp-activity.sqlite');\n fs.closeSync(fs.openSync(file, 'a', 0o600));\n const database = new DatabaseSync(file);\n database.exec(`\n PRAGMA journal_mode = WAL;\n PRAGMA busy_timeout = 5000;\n CREATE TABLE IF NOT EXISTS calls (\n sequence INTEGER PRIMARY KEY AUTOINCREMENT,\n id TEXT NOT NULL UNIQUE,\n workspace_id TEXT NOT NULL,\n session_id TEXT NOT NULL,\n record TEXT NOT NULL\n );\n CREATE INDEX IF NOT EXISTS calls_session ON calls(workspace_id, session_id, sequence);\n `);\n // A process restart cannot truthfully keep an in-flight call marked as running.\n const unfinished = database\n .prepare(\"SELECT id, record FROM calls WHERE json_extract(record, '$.status') = 'running'\")\n .all();\n const update = database.prepare('UPDATE calls SET record = ? WHERE id = ?');\n for (const row of unfinished) {\n const record = JSON.parse(String(row.record)) as SessionMcpCall;\n update.run(JSON.stringify({ ...record, status: 'interrupted', finishedAt: Date.now() }), String(row.id));\n }\n let failure: Error | undefined;\n const save = database.prepare(`\n INSERT INTO calls (id, workspace_id, session_id, record) VALUES (?, ?, ?, ?)\n ON CONFLICT(id) DO UPDATE SET workspace_id = excluded.workspace_id, session_id = excluded.session_id, record = excluded.record\n `);\n return {\n record(workspaceId: string, sessionId: string, clientName: string, invocation: SessionMcpInvocation): void {\n try {\n const record: Omit<SessionMcpCall, 'sequence'> = {\n id: invocation.id,\n toolName: invocation.toolName,\n clientName,\n startedAt: invocation.startedAt,\n finishedAt: invocation.finishedAt,\n status: invocation.status,\n input: sessionMcpPreview(invocation.input),\n ...(invocation.output === undefined ? {} : { output: sessionMcpPreview(invocation.output) }),\n };\n save.run(invocation.id, workspaceId, sessionId, JSON.stringify(record));\n } catch (error) {\n failure = new Error('MCP call history could not be saved. Check the host storage.', { cause: error });\n throw failure;\n }\n },\n read(workspaceId: string, sessionId: string, before?: number) {\n if (failure) throw failure;\n const rows = database\n .prepare(`SELECT sequence, record FROM calls\n WHERE workspace_id = ? AND session_id = ? AND sequence < ? ORDER BY sequence DESC LIMIT ?`)\n .all(workspaceId, sessionId, before ?? Number.MAX_SAFE_INTEGER, PAGE_SIZE + 1);\n const calls = rows.slice(0, PAGE_SIZE).map((row) => ({\n ...(JSON.parse(String(row.record)) as Omit<SessionMcpCall, 'sequence'>),\n sequence: Number(row.sequence),\n }));\n const count = database\n .prepare('SELECT COUNT(*) AS total FROM calls WHERE workspace_id = ? AND session_id = ?')\n .get(workspaceId, sessionId);\n return {\n calls,\n total: Number(count?.total ?? 0),\n ...(rows.length > PAGE_SIZE ? { nextBefore: calls.at(-1)!.sequence } : {}),\n };\n },\n close(): void {\n database.close();\n },\n };\n}\n\nexport type SessionMcpActivityStore = ReturnType<typeof createSessionMcpActivityStore>;\n"],"mappings":";;;;;;;AAMA,MAAM,gBAAgB;AACtB,MAAM,YAAY;AAClB,MAAM,aAAa;;AAGnB,SAAgB,kBAAkB,OAAwB;CACxD,IAAI,YAAY;CAChB,MAAM,uBAAO,IAAI,QAAgB;CACjC,MAAM,SAAS,MAAe,UAA2B;EACvD,IAAI,aAAa,KAAK,QAAQ,IAAI,OAAO;EACzC,IAAI,OAAO,SAAS,UAAU;GAC5B,MAAM,OAAO,KACV,QAAQ,wBAAwB,mBAAmB,CAAC,CACpD,QAAQ,2DAA2D,YAAY,CAAC,CAChF,QAAQ,6DAA6D,cAAc,CAAC,CACpF,QAAQ,sCAAsC,eAAe;GAChE,MAAM,UAAU,KAAK,MAAM,GAAG,SAAS;GACvC,aAAa,QAAQ;GACrB,OAAO,QAAQ,SAAS,KAAK,SAAS,GAAG,QAAQ,iBAAiB;EACpE;EACA,IAAI,SAAS,QAAQ,OAAO,SAAS,UAAU,OAAO;EACtD,IAAI,KAAK,IAAI,IAAI,GAAG,OAAO;EAC3B,KAAK,IAAI,IAAI;EACb,IAAI,MAAM,QAAQ,IAAI,GAAG,OAAO,KAAK,MAAM,GAAG,GAAG,CAAC,CAAC,KAAK,UAAU,MAAM,OAAO,QAAQ,CAAC,CAAC;EACzF,OAAO,OAAO,YACZ,OAAO,QAAQ,IAAI,CAAC,CACjB,MAAM,GAAG,GAAG,CAAC,CACb,KAAK,CAAC,KAAK,WAAW,CACrB,KACA,WAAW,KAAK,GAAG,IACf,eACA,QAAQ,UAAU,OAAO,UAAU,WACjC,qBACA,MAAM,OAAO,QAAQ,CAAC,CAC9B,CAAC,CACL;CACF;CACA,IAAI;EACF,MAAM,OAAO,KAAK,UAAU,MAAM,OAAO,CAAC,GAAG,MAAM,CAAC,KAAK;EACzD,OAAO,KAAK,SAAS,gBAAgB,GAAG,KAAK,MAAM,GAAG,aAAa,EAAE,iBAAiB;CACxF,QAAQ;EACN,OAAO;CACT;AACF;;AAGA,SAAgB,8BAA8B,UAAkB;CAC9D,QAAA,QAAG,UAAU,UAAU;EAAE,WAAW;EAAM,MAAM;CAAM,CAAC;CACvD,MAAM,OAAOA,UAAAA,QAAK,KAAK,UAAU,6BAA6B;CAC9D,QAAA,QAAG,UAAUC,QAAAA,QAAG,SAAS,MAAM,KAAK,GAAK,CAAC;CAC1C,MAAM,WAAW,IAAIC,YAAAA,aAAa,IAAI;CACtC,SAAS,KAAK;;;;;;;;;;;GAWb;CAED,MAAM,aAAa,SAChB,QAAQ,iFAAiF,CAAC,CAC1F,IAAI;CACP,MAAM,SAAS,SAAS,QAAQ,0CAA0C;CAC1E,KAAK,MAAM,OAAO,YAAY;EAC5B,MAAM,SAAS,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC;EAC5C,OAAO,IAAI,KAAK,UAAU;GAAE,GAAG;GAAQ,QAAQ;GAAe,YAAY,KAAK,IAAI;EAAE,CAAC,GAAG,OAAO,IAAI,EAAE,CAAC;CACzG;CACA,IAAI;CACJ,MAAM,OAAO,SAAS,QAAQ;;;GAG7B;CACD,OAAO;EACL,OAAO,aAAqB,WAAmB,YAAoB,YAAwC;GACzG,IAAI;IACF,MAAM,SAA2C;KAC/C,IAAI,WAAW;KACf,UAAU,WAAW;KACrB;KACA,WAAW,WAAW;KACtB,YAAY,WAAW;KACvB,QAAQ,WAAW;KACnB,OAAO,kBAAkB,WAAW,KAAK;KACzC,GAAI,WAAW,WAAW,KAAA,IAAY,CAAC,IAAI,EAAE,QAAQ,kBAAkB,WAAW,MAAM,EAAE;IAC5F;IACA,KAAK,IAAI,WAAW,IAAI,aAAa,WAAW,KAAK,UAAU,MAAM,CAAC;GACxE,SAAS,OAAO;IACd,UAAU,IAAI,MAAM,gEAAgE,EAAE,OAAO,MAAM,CAAC;IACpG,MAAM;GACR;EACF;EACA,KAAK,aAAqB,WAAmB,QAAiB;GAC5D,IAAI,SAAS,MAAM;GACnB,MAAM,OAAO,SACV,QAAQ;kGACiF,CAAC,CAC1F,IAAI,aAAa,WAAW,UAAU,OAAO,kBAAkB,EAAa;GAC/E,MAAM,QAAQ,KAAK,MAAM,GAAG,SAAS,CAAC,CAAC,KAAK,SAAS;IACnD,GAAI,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC;IACjC,UAAU,OAAO,IAAI,QAAQ;GAC/B,EAAE;GACF,MAAM,QAAQ,SACX,QAAQ,+EAA+E,CAAC,CACxF,IAAI,aAAa,SAAS;GAC7B,OAAO;IACL;IACA,OAAO,OAAO,OAAO,SAAS,CAAC;IAC/B,GAAI,KAAK,SAAS,YAAY,EAAE,YAAY,MAAM,GAAG,EAAE,CAAC,CAAE,SAAS,IAAI,CAAC;GAC1E;EACF;EACA,QAAc;GACZ,SAAS,MAAM;EACjB;CACF;AACF"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import fs from "node:fs";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { DatabaseSync } from "node:sqlite";
|
|
4
|
+
//#region src/services/sessionMcpActivity/index.ts
|
|
5
|
+
const PREVIEW_LIMIT = 16384;
|
|
6
|
+
const PAGE_SIZE = 50;
|
|
7
|
+
const SECRET_KEY = /password|passphrase|secret|token|authorization|cookie|credential|api[-_]?key|private[-_]?key/iu;
|
|
8
|
+
/** Bounded text previews only. Do not persist binary MCP content or authentication material. */
|
|
9
|
+
function sessionMcpPreview(value) {
|
|
10
|
+
let remaining = PREVIEW_LIMIT;
|
|
11
|
+
const seen = /* @__PURE__ */ new WeakSet();
|
|
12
|
+
const clean = (item, depth) => {
|
|
13
|
+
if (remaining <= 0 || depth > 12) return "[truncated]";
|
|
14
|
+
if (typeof item === "string") {
|
|
15
|
+
const text = item.replace(/Bearer\s+[^\s"']+/giu, "Bearer [redacted]").replace(/\beyJ[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\b/gu, "[redacted]").replace(/([?&](?:token|api_key|key|secret|password)=)[^&#\s"']*/giu, "$1[redacted]").replace(/(https?:\/\/)[^\s/@]+:[^\s/@]+@/giu, "$1[redacted]@");
|
|
16
|
+
const bounded = text.slice(0, remaining);
|
|
17
|
+
remaining -= bounded.length;
|
|
18
|
+
return bounded.length < text.length ? `${bounded}\n[truncated]` : bounded;
|
|
19
|
+
}
|
|
20
|
+
if (item === null || typeof item !== "object") return item;
|
|
21
|
+
if (seen.has(item)) return "[circular]";
|
|
22
|
+
seen.add(item);
|
|
23
|
+
if (Array.isArray(item)) return item.slice(0, 100).map((entry) => clean(entry, depth + 1));
|
|
24
|
+
return Object.fromEntries(Object.entries(item).slice(0, 100).map(([key, entry]) => [key, SECRET_KEY.test(key) ? "[redacted]" : key === "data" && typeof entry === "string" ? "[binary omitted]" : clean(entry, depth + 1)]));
|
|
25
|
+
};
|
|
26
|
+
try {
|
|
27
|
+
const text = JSON.stringify(clean(value, 0), null, 2) ?? "";
|
|
28
|
+
return text.length > PREVIEW_LIMIT ? `${text.slice(0, PREVIEW_LIMIT)}\n[truncated]` : text;
|
|
29
|
+
} catch {
|
|
30
|
+
return "[preview unavailable]";
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
/** One process owns this private ledger. Pagination never drops older tool calls. */
|
|
34
|
+
function createSessionMcpActivityStore(stateDir) {
|
|
35
|
+
fs.mkdirSync(stateDir, {
|
|
36
|
+
recursive: true,
|
|
37
|
+
mode: 448
|
|
38
|
+
});
|
|
39
|
+
const file = path.join(stateDir, "session-mcp-activity.sqlite");
|
|
40
|
+
fs.closeSync(fs.openSync(file, "a", 384));
|
|
41
|
+
const database = new DatabaseSync(file);
|
|
42
|
+
database.exec(`
|
|
43
|
+
PRAGMA journal_mode = WAL;
|
|
44
|
+
PRAGMA busy_timeout = 5000;
|
|
45
|
+
CREATE TABLE IF NOT EXISTS calls (
|
|
46
|
+
sequence INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
47
|
+
id TEXT NOT NULL UNIQUE,
|
|
48
|
+
workspace_id TEXT NOT NULL,
|
|
49
|
+
session_id TEXT NOT NULL,
|
|
50
|
+
record TEXT NOT NULL
|
|
51
|
+
);
|
|
52
|
+
CREATE INDEX IF NOT EXISTS calls_session ON calls(workspace_id, session_id, sequence);
|
|
53
|
+
`);
|
|
54
|
+
const unfinished = database.prepare("SELECT id, record FROM calls WHERE json_extract(record, '$.status') = 'running'").all();
|
|
55
|
+
const update = database.prepare("UPDATE calls SET record = ? WHERE id = ?");
|
|
56
|
+
for (const row of unfinished) {
|
|
57
|
+
const record = JSON.parse(String(row.record));
|
|
58
|
+
update.run(JSON.stringify({
|
|
59
|
+
...record,
|
|
60
|
+
status: "interrupted",
|
|
61
|
+
finishedAt: Date.now()
|
|
62
|
+
}), String(row.id));
|
|
63
|
+
}
|
|
64
|
+
let failure;
|
|
65
|
+
const save = database.prepare(`
|
|
66
|
+
INSERT INTO calls (id, workspace_id, session_id, record) VALUES (?, ?, ?, ?)
|
|
67
|
+
ON CONFLICT(id) DO UPDATE SET workspace_id = excluded.workspace_id, session_id = excluded.session_id, record = excluded.record
|
|
68
|
+
`);
|
|
69
|
+
return {
|
|
70
|
+
record(workspaceId, sessionId, clientName, invocation) {
|
|
71
|
+
try {
|
|
72
|
+
const record = {
|
|
73
|
+
id: invocation.id,
|
|
74
|
+
toolName: invocation.toolName,
|
|
75
|
+
clientName,
|
|
76
|
+
startedAt: invocation.startedAt,
|
|
77
|
+
finishedAt: invocation.finishedAt,
|
|
78
|
+
status: invocation.status,
|
|
79
|
+
input: sessionMcpPreview(invocation.input),
|
|
80
|
+
...invocation.output === void 0 ? {} : { output: sessionMcpPreview(invocation.output) }
|
|
81
|
+
};
|
|
82
|
+
save.run(invocation.id, workspaceId, sessionId, JSON.stringify(record));
|
|
83
|
+
} catch (error) {
|
|
84
|
+
failure = new Error("MCP call history could not be saved. Check the host storage.", { cause: error });
|
|
85
|
+
throw failure;
|
|
86
|
+
}
|
|
87
|
+
},
|
|
88
|
+
read(workspaceId, sessionId, before) {
|
|
89
|
+
if (failure) throw failure;
|
|
90
|
+
const rows = database.prepare(`SELECT sequence, record FROM calls
|
|
91
|
+
WHERE workspace_id = ? AND session_id = ? AND sequence < ? ORDER BY sequence DESC LIMIT ?`).all(workspaceId, sessionId, before ?? Number.MAX_SAFE_INTEGER, 51);
|
|
92
|
+
const calls = rows.slice(0, PAGE_SIZE).map((row) => ({
|
|
93
|
+
...JSON.parse(String(row.record)),
|
|
94
|
+
sequence: Number(row.sequence)
|
|
95
|
+
}));
|
|
96
|
+
const count = database.prepare("SELECT COUNT(*) AS total FROM calls WHERE workspace_id = ? AND session_id = ?").get(workspaceId, sessionId);
|
|
97
|
+
return {
|
|
98
|
+
calls,
|
|
99
|
+
total: Number(count?.total ?? 0),
|
|
100
|
+
...rows.length > PAGE_SIZE ? { nextBefore: calls.at(-1).sequence } : {}
|
|
101
|
+
};
|
|
102
|
+
},
|
|
103
|
+
close() {
|
|
104
|
+
database.close();
|
|
105
|
+
}
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
//#endregion
|
|
109
|
+
export { createSessionMcpActivityStore, sessionMcpPreview };
|
|
110
|
+
|
|
111
|
+
//# sourceMappingURL=index.mjs.map
|