@agimon-ai/po 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 +755 -0
- package/assets/banner.png +0 -0
- package/assets/banner.svg +25 -0
- package/assets/favicon.svg +15 -0
- package/assets/logo-light.png +0 -0
- package/assets/logo-light.svg +25 -0
- package/assets/logo.png +0 -0
- package/assets/logo.svg +25 -0
- package/assets/mascot.png +0 -0
- package/assets/mascot.svg +25 -0
- package/dist/_virtual/_rolldown/runtime.cjs +23 -0
- package/dist/antigravity.cjs +5 -0
- package/dist/antigravity.d.mts +2 -0
- package/dist/antigravity.mjs +2 -0
- package/dist/apiContracts.cjs +11 -0
- package/dist/apiContracts.cjs.map +1 -0
- package/dist/apiContracts.d.mts +52 -0
- package/dist/apiContracts.d.mts.map +1 -0
- package/dist/apiContracts.mjs +7 -0
- package/dist/apiContracts.mjs.map +1 -0
- package/dist/baseCommand.cjs +3 -0
- package/dist/baseCommand.d.mts +2 -0
- package/dist/baseCommand.mjs +2 -0
- package/dist/bin/cli.cjs +24 -0
- package/dist/bin/cli.cjs.map +1 -0
- package/dist/bin/cli.d.mts +1 -0
- package/dist/bin/cli.mjs +25 -0
- package/dist/bin/cli.mjs.map +1 -0
- package/dist/bin/doomRunner.cjs +33 -0
- package/dist/bin/doomRunner.cjs.map +1 -0
- package/dist/bin/doomRunner.d.mts +4 -0
- package/dist/bin/doomRunner.d.mts.map +1 -0
- package/dist/bin/doomRunner.mjs +32 -0
- package/dist/bin/doomRunner.mjs.map +1 -0
- package/dist/bin/serve.cjs +30 -0
- package/dist/bin/serve.cjs.map +1 -0
- package/dist/bin/serve.d.mts +1 -0
- package/dist/bin/serve.mjs +31 -0
- package/dist/bin/serve.mjs.map +1 -0
- package/dist/builders/cli/extensionAssembler/index.cjs +342 -0
- package/dist/builders/cli/extensionAssembler/index.cjs.map +1 -0
- package/dist/builders/cli/extensionAssembler/index.d.mts +85 -0
- package/dist/builders/cli/extensionAssembler/index.d.mts.map +1 -0
- package/dist/builders/cli/extensionAssembler/index.mjs +335 -0
- package/dist/builders/cli/extensionAssembler/index.mjs.map +1 -0
- package/dist/catalog/index.json +430 -0
- package/dist/cli.cjs +28 -0
- package/dist/cli.d.mts +11 -0
- package/dist/cli.mjs +11 -0
- package/dist/cliApp.cjs +6 -0
- package/dist/cliApp.d.mts +2 -0
- package/dist/cliApp.mjs +2 -0
- package/dist/codex.cjs +8 -0
- package/dist/codex.d.mts +2 -0
- package/dist/codex.mjs +2 -0
- package/dist/commands.cjs +18 -0
- package/dist/commands.d.mts +9 -0
- package/dist/commands.mjs +9 -0
- package/dist/compatibility.cjs +27 -0
- package/dist/compatibility.d.mts +6 -0
- package/dist/compatibility.mjs +6 -0
- package/dist/compatibilityCommand.cjs +4 -0
- package/dist/compatibilityCommand.d.mts +2 -0
- package/dist/compatibilityCommand.mjs +2 -0
- package/dist/compatibilityContext.cjs +3 -0
- package/dist/compatibilityContext.d.mts +2 -0
- package/dist/compatibilityContext.mjs +2 -0
- package/dist/compatibilityOptions.cjs +5 -0
- package/dist/compatibilityOptions.d.mts +2 -0
- package/dist/compatibilityOptions.mjs +2 -0
- package/dist/config.cjs +163 -0
- package/dist/config.d.mts +7 -0
- package/dist/config.mjs +7 -0
- package/dist/doctorCommand.cjs +5 -0
- package/dist/doctorCommand.d.mts +2 -0
- package/dist/doctorCommand.mjs +2 -0
- package/dist/emitMcpCommand.cjs +4 -0
- package/dist/emitMcpCommand.d.mts +2 -0
- package/dist/emitMcpCommand.mjs +2 -0
- package/dist/explainCommand.cjs +5 -0
- package/dist/explainCommand.d.mts +2 -0
- package/dist/explainCommand.mjs +2 -0
- package/dist/extensions/server.cjs +39 -0
- package/dist/extensions/server.cjs.map +1 -0
- package/dist/extensions/server.d.mts +5 -0
- package/dist/extensions/server.d.mts.map +1 -0
- package/dist/extensions/server.mjs +34 -0
- package/dist/extensions/server.mjs.map +1 -0
- package/dist/harnessContext.cjs +5 -0
- package/dist/harnessContext.d.mts +2 -0
- package/dist/harnessContext.mjs +2 -0
- package/dist/harnessState.cjs +19 -0
- package/dist/harnessState.d.mts +2 -0
- package/dist/harnessState.mjs +2 -0
- package/dist/help.cjs +12 -0
- package/dist/help.d.mts +6 -0
- package/dist/help.mjs +6 -0
- package/dist/index.cjs +306 -0
- package/dist/index.d.mts +40 -0
- package/dist/index.mjs +37 -0
- package/dist/initCommand.cjs +4 -0
- package/dist/initCommand.d.mts +2 -0
- package/dist/initCommand.mjs +2 -0
- package/dist/matrixOptions.cjs +28 -0
- package/dist/matrixOptions.d.mts +2 -0
- package/dist/matrixOptions.mjs +2 -0
- package/dist/matrixSwitcher.cjs +11 -0
- package/dist/matrixSwitcher.d.mts +3 -0
- package/dist/matrixSwitcher.mjs +3 -0
- package/dist/mcpFilter.cjs +9 -0
- package/dist/mcpFilter.d.mts +1 -0
- package/dist/mcpFilter.mjs +2 -0
- package/dist/options.cjs +3 -0
- package/dist/options.d.mts +2 -0
- package/dist/options.mjs +2 -0
- package/dist/process.cjs +12 -0
- package/dist/process.d.mts +2 -0
- package/dist/process.mjs +2 -0
- package/dist/projectTrust.cjs +6 -0
- package/dist/projectTrust.d.mts +2 -0
- package/dist/projectTrust.mjs +2 -0
- package/dist/repository.cjs +5 -0
- package/dist/repository.d.mts +2 -0
- package/dist/repository.mjs +2 -0
- package/dist/resourceCollector.cjs +9 -0
- package/dist/resourceCollector.d.mts +1 -0
- package/dist/resourceCollector.mjs +2 -0
- package/dist/router.cjs +6 -0
- package/dist/router.d.mts +2 -0
- package/dist/router.mjs +2 -0
- package/dist/services.cjs +97 -0
- package/dist/services.d.mts +12 -0
- package/dist/services.mjs +12 -0
- package/dist/shared.cjs +18 -0
- package/dist/shared.d.mts +2 -0
- package/dist/shared.mjs +2 -0
- package/dist/src/bin/agentDirectory.cjs +27 -0
- package/dist/src/bin/agentDirectory.cjs.map +1 -0
- package/dist/src/bin/agentDirectory.mjs +26 -0
- package/dist/src/bin/agentDirectory.mjs.map +1 -0
- package/dist/src/builders/apiContractExport/index.cjs +126 -0
- package/dist/src/builders/apiContractExport/index.cjs.map +1 -0
- package/dist/src/builders/apiContractExport/index.mjs +123 -0
- package/dist/src/builders/apiContractExport/index.mjs.map +1 -0
- package/dist/src/builders/cli/entryResolution.cjs +39 -0
- package/dist/src/builders/cli/entryResolution.cjs.map +1 -0
- package/dist/src/builders/cli/entryResolution.mjs +35 -0
- package/dist/src/builders/cli/entryResolution.mjs.map +1 -0
- package/dist/src/builders/cli/harnessContext.cjs +175 -0
- package/dist/src/builders/cli/harnessContext.cjs.map +1 -0
- package/dist/src/builders/cli/harnessContext.d.mts +48 -0
- package/dist/src/builders/cli/harnessContext.d.mts.map +1 -0
- package/dist/src/builders/cli/harnessContext.mjs +167 -0
- package/dist/src/builders/cli/harnessContext.mjs.map +1 -0
- package/dist/src/builders/cli/sessionComposition.cjs +27 -0
- package/dist/src/builders/cli/sessionComposition.cjs.map +1 -0
- package/dist/src/builders/cli/sessionComposition.mjs +26 -0
- package/dist/src/builders/cli/sessionComposition.mjs.map +1 -0
- package/dist/src/builders/hooks/index.cjs +238 -0
- package/dist/src/builders/hooks/index.cjs.map +1 -0
- package/dist/src/builders/hooks/index.mjs +231 -0
- package/dist/src/builders/hooks/index.mjs.map +1 -0
- package/dist/src/builders/native/index.cjs +176 -0
- package/dist/src/builders/native/index.cjs.map +1 -0
- package/dist/src/builders/native/index.d.mts +36 -0
- package/dist/src/builders/native/index.d.mts.map +1 -0
- package/dist/src/builders/native/index.mjs +170 -0
- package/dist/src/builders/native/index.mjs.map +1 -0
- package/dist/src/builders/server/backgroundSync.cjs +333 -0
- package/dist/src/builders/server/backgroundSync.cjs.map +1 -0
- package/dist/src/builders/server/backgroundSync.mjs +320 -0
- package/dist/src/builders/server/backgroundSync.mjs.map +1 -0
- package/dist/src/builders/server/computerUseBinding.cjs +273 -0
- package/dist/src/builders/server/computerUseBinding.cjs.map +1 -0
- package/dist/src/builders/server/computerUseBinding.mjs +269 -0
- package/dist/src/builders/server/computerUseBinding.mjs.map +1 -0
- package/dist/src/builders/server/computerUseRecordings.cjs +188 -0
- package/dist/src/builders/server/computerUseRecordings.cjs.map +1 -0
- package/dist/src/builders/server/computerUseRecordings.mjs +184 -0
- package/dist/src/builders/server/computerUseRecordings.mjs.map +1 -0
- package/dist/src/builders/server/defaultWorkspace.cjs +38 -0
- package/dist/src/builders/server/defaultWorkspace.cjs.map +1 -0
- package/dist/src/builders/server/defaultWorkspace.mjs +35 -0
- package/dist/src/builders/server/defaultWorkspace.mjs.map +1 -0
- package/dist/src/builders/server/idleRestart.cjs +149 -0
- package/dist/src/builders/server/idleRestart.cjs.map +1 -0
- package/dist/src/builders/server/idleRestart.mjs +136 -0
- package/dist/src/builders/server/idleRestart.mjs.map +1 -0
- package/dist/src/builders/server/index.cjs +63 -0
- package/dist/src/builders/server/index.cjs.map +1 -0
- package/dist/src/builders/server/index.mjs +60 -0
- package/dist/src/builders/server/index.mjs.map +1 -0
- package/dist/src/builders/server/logSink.cjs +57 -0
- package/dist/src/builders/server/logSink.cjs.map +1 -0
- package/dist/src/builders/server/logSink.mjs +57 -0
- package/dist/src/builders/server/logSink.mjs.map +1 -0
- package/dist/src/builders/server/mcpApp.cjs +152 -0
- package/dist/src/builders/server/mcpApp.cjs.map +1 -0
- package/dist/src/builders/server/mcpApp.d.mts +18 -0
- package/dist/src/builders/server/mcpApp.d.mts.map +1 -0
- package/dist/src/builders/server/mcpApp.mjs +147 -0
- package/dist/src/builders/server/mcpApp.mjs.map +1 -0
- package/dist/src/builders/server/mcpAppBuild.cjs +111 -0
- package/dist/src/builders/server/mcpAppBuild.cjs.map +1 -0
- package/dist/src/builders/server/mcpAppBuild.d.mts +24 -0
- package/dist/src/builders/server/mcpAppBuild.d.mts.map +1 -0
- package/dist/src/builders/server/mcpAppBuild.mjs +105 -0
- package/dist/src/builders/server/mcpAppBuild.mjs.map +1 -0
- package/dist/src/builders/server/mcpBundle.cjs +87 -0
- package/dist/src/builders/server/mcpBundle.cjs.map +1 -0
- package/dist/src/builders/server/mcpBundle.d.mts +23 -0
- package/dist/src/builders/server/mcpBundle.d.mts.map +1 -0
- package/dist/src/builders/server/mcpBundle.mjs +84 -0
- package/dist/src/builders/server/mcpBundle.mjs.map +1 -0
- package/dist/src/builders/server/packageReloadCheck.cjs +62 -0
- package/dist/src/builders/server/packageReloadCheck.cjs.map +1 -0
- package/dist/src/builders/server/packageReloadCheck.mjs +61 -0
- package/dist/src/builders/server/packageReloadCheck.mjs.map +1 -0
- package/dist/src/builders/server/packageUrl.cjs +210 -0
- package/dist/src/builders/server/packageUrl.cjs.map +1 -0
- package/dist/src/builders/server/packageUrl.mjs +203 -0
- package/dist/src/builders/server/packageUrl.mjs.map +1 -0
- package/dist/src/builders/server/runtime.cjs +1428 -0
- package/dist/src/builders/server/runtime.cjs.map +1 -0
- package/dist/src/builders/server/runtime.mjs +1420 -0
- package/dist/src/builders/server/runtime.mjs.map +1 -0
- package/dist/src/builders/server/runtimeResources.cjs +72 -0
- package/dist/src/builders/server/runtimeResources.cjs.map +1 -0
- package/dist/src/builders/server/runtimeResources.mjs +71 -0
- package/dist/src/builders/server/runtimeResources.mjs.map +1 -0
- package/dist/src/builders/server/selectionStatus.cjs +12 -0
- package/dist/src/builders/server/selectionStatus.cjs.map +1 -0
- package/dist/src/builders/server/selectionStatus.mjs +12 -0
- package/dist/src/builders/server/selectionStatus.mjs.map +1 -0
- package/dist/src/builders/server/sessionArguments.cjs +63 -0
- package/dist/src/builders/server/sessionArguments.cjs.map +1 -0
- package/dist/src/builders/server/sessionArguments.mjs +62 -0
- package/dist/src/builders/server/sessionArguments.mjs.map +1 -0
- package/dist/src/builders/server/shutdown.cjs +16 -0
- package/dist/src/builders/server/shutdown.cjs.map +1 -0
- package/dist/src/builders/server/shutdown.mjs +16 -0
- package/dist/src/builders/server/shutdown.mjs.map +1 -0
- package/dist/src/builders/server/webTemplateDecision.cjs +34 -0
- package/dist/src/builders/server/webTemplateDecision.cjs.map +1 -0
- package/dist/src/builders/server/webTemplateDecision.mjs +32 -0
- package/dist/src/builders/server/webTemplateDecision.mjs.map +1 -0
- package/dist/src/builders/server/workspaceCheckout.cjs +31 -0
- package/dist/src/builders/server/workspaceCheckout.cjs.map +1 -0
- package/dist/src/builders/server/workspaceCheckout.mjs +29 -0
- package/dist/src/builders/server/workspaceCheckout.mjs.map +1 -0
- package/dist/src/builders/web/bundle.cjs +225 -0
- package/dist/src/builders/web/bundle.cjs.map +1 -0
- package/dist/src/builders/web/bundle.d.mts +65 -0
- package/dist/src/builders/web/bundle.d.mts.map +1 -0
- package/dist/src/builders/web/bundle.mjs +221 -0
- package/dist/src/builders/web/bundle.mjs.map +1 -0
- package/dist/src/builders/web/bundleAssetPolicy.cjs +96 -0
- package/dist/src/builders/web/bundleAssetPolicy.cjs.map +1 -0
- package/dist/src/builders/web/bundleAssetPolicy.d.mts +22 -0
- package/dist/src/builders/web/bundleAssetPolicy.d.mts.map +1 -0
- package/dist/src/builders/web/bundleAssetPolicy.mjs +95 -0
- package/dist/src/builders/web/bundleAssetPolicy.mjs.map +1 -0
- package/dist/src/builders/web/index.cjs +361 -0
- package/dist/src/builders/web/index.cjs.map +1 -0
- package/dist/src/builders/web/index.d.mts +109 -0
- package/dist/src/builders/web/index.d.mts.map +1 -0
- package/dist/src/builders/web/index.mjs +342 -0
- package/dist/src/builders/web/index.mjs.map +1 -0
- package/dist/src/builders/web/webDevRoots.cjs +27 -0
- package/dist/src/builders/web/webDevRoots.cjs.map +1 -0
- package/dist/src/builders/web/webDevRoots.d.mts +22 -0
- package/dist/src/builders/web/webDevRoots.d.mts.map +1 -0
- package/dist/src/builders/web/webDevRoots.mjs +25 -0
- package/dist/src/builders/web/webDevRoots.mjs.map +1 -0
- package/dist/src/builders/web/webPluginGenerate.cjs +188 -0
- package/dist/src/builders/web/webPluginGenerate.cjs.map +1 -0
- package/dist/src/builders/web/webPluginGenerate.d.mts +56 -0
- package/dist/src/builders/web/webPluginGenerate.d.mts.map +1 -0
- package/dist/src/builders/web/webPluginGenerate.mjs +178 -0
- package/dist/src/builders/web/webPluginGenerate.mjs.map +1 -0
- package/dist/src/builders/web/webPluginManifest.cjs +128 -0
- package/dist/src/builders/web/webPluginManifest.cjs.map +1 -0
- package/dist/src/builders/web/webPluginManifest.d.mts +64 -0
- package/dist/src/builders/web/webPluginManifest.d.mts.map +1 -0
- package/dist/src/builders/web/webPluginManifest.mjs +118 -0
- package/dist/src/builders/web/webPluginManifest.mjs.map +1 -0
- package/dist/src/builders/web/webPluginScan.cjs +57 -0
- package/dist/src/builders/web/webPluginScan.cjs.map +1 -0
- package/dist/src/builders/web/webPluginScan.d.mts +19 -0
- package/dist/src/builders/web/webPluginScan.d.mts.map +1 -0
- package/dist/src/builders/web/webPluginScan.mjs +54 -0
- package/dist/src/builders/web/webPluginScan.mjs.map +1 -0
- package/dist/src/builders/web/webPluginVite.cjs +255 -0
- package/dist/src/builders/web/webPluginVite.cjs.map +1 -0
- package/dist/src/builders/web/webPluginVite.d.mts +64 -0
- package/dist/src/builders/web/webPluginVite.d.mts.map +1 -0
- package/dist/src/builders/web/webPluginVite.mjs +242 -0
- package/dist/src/builders/web/webPluginVite.mjs.map +1 -0
- package/dist/src/cli/cliApp.cjs +187 -0
- package/dist/src/cli/cliApp.cjs.map +1 -0
- package/dist/src/cli/cliApp.d.mts +32 -0
- package/dist/src/cli/cliApp.d.mts.map +1 -0
- package/dist/src/cli/cliApp.mjs +184 -0
- package/dist/src/cli/cliApp.mjs.map +1 -0
- package/dist/src/cli/commands/api-export/index.cjs +66 -0
- package/dist/src/cli/commands/api-export/index.cjs.map +1 -0
- package/dist/src/cli/commands/api-export/index.mjs +62 -0
- package/dist/src/cli/commands/api-export/index.mjs.map +1 -0
- package/dist/src/cli/commands/baseCommand.cjs +16 -0
- package/dist/src/cli/commands/baseCommand.cjs.map +1 -0
- package/dist/src/cli/commands/baseCommand.d.mts +24 -0
- package/dist/src/cli/commands/baseCommand.d.mts.map +1 -0
- package/dist/src/cli/commands/baseCommand.mjs +16 -0
- package/dist/src/cli/commands/baseCommand.mjs.map +1 -0
- package/dist/src/cli/commands/compat/context.cjs +115 -0
- package/dist/src/cli/commands/compat/context.cjs.map +1 -0
- package/dist/src/cli/commands/compat/context.d.mts +22 -0
- package/dist/src/cli/commands/compat/context.d.mts.map +1 -0
- package/dist/src/cli/commands/compat/context.mjs +110 -0
- package/dist/src/cli/commands/compat/context.mjs.map +1 -0
- package/dist/src/cli/commands/compat/help.cjs +26 -0
- package/dist/src/cli/commands/compat/help.cjs.map +1 -0
- package/dist/src/cli/commands/compat/help.d.mts +4 -0
- package/dist/src/cli/commands/compat/help.d.mts.map +1 -0
- package/dist/src/cli/commands/compat/help.mjs +25 -0
- package/dist/src/cli/commands/compat/help.mjs.map +1 -0
- package/dist/src/cli/commands/compat/index.cjs +73 -0
- package/dist/src/cli/commands/compat/index.cjs.map +1 -0
- package/dist/src/cli/commands/compat/index.d.mts +14 -0
- package/dist/src/cli/commands/compat/index.d.mts.map +1 -0
- package/dist/src/cli/commands/compat/index.mjs +70 -0
- package/dist/src/cli/commands/compat/index.mjs.map +1 -0
- package/dist/src/cli/commands/compat/options.cjs +88 -0
- package/dist/src/cli/commands/compat/options.cjs.map +1 -0
- package/dist/src/cli/commands/compat/options.d.mts +15 -0
- package/dist/src/cli/commands/compat/options.d.mts.map +1 -0
- package/dist/src/cli/commands/compat/options.mjs +86 -0
- package/dist/src/cli/commands/compat/options.mjs.map +1 -0
- package/dist/src/cli/commands/compat/providers/antigravity.cjs +294 -0
- package/dist/src/cli/commands/compat/providers/antigravity.cjs.map +1 -0
- package/dist/src/cli/commands/compat/providers/antigravity.d.mts +9 -0
- package/dist/src/cli/commands/compat/providers/antigravity.d.mts.map +1 -0
- package/dist/src/cli/commands/compat/providers/antigravity.mjs +289 -0
- package/dist/src/cli/commands/compat/providers/antigravity.mjs.map +1 -0
- package/dist/src/cli/commands/compat/providers/codex.cjs +178 -0
- package/dist/src/cli/commands/compat/providers/codex.cjs.map +1 -0
- package/dist/src/cli/commands/compat/providers/codex.d.mts +17 -0
- package/dist/src/cli/commands/compat/providers/codex.d.mts.map +1 -0
- package/dist/src/cli/commands/compat/providers/codex.mjs +170 -0
- package/dist/src/cli/commands/compat/providers/codex.mjs.map +1 -0
- package/dist/src/cli/commands/compat/providers/index.cjs +65 -0
- package/dist/src/cli/commands/compat/providers/index.cjs.map +1 -0
- package/dist/src/cli/commands/compat/providers/index.d.mts +15 -0
- package/dist/src/cli/commands/compat/providers/index.d.mts.map +1 -0
- package/dist/src/cli/commands/compat/providers/index.mjs +45 -0
- package/dist/src/cli/commands/compat/providers/index.mjs.map +1 -0
- package/dist/src/cli/commands/compat/providers/process.cjs +172 -0
- package/dist/src/cli/commands/compat/providers/process.cjs.map +1 -0
- package/dist/src/cli/commands/compat/providers/process.d.mts +33 -0
- package/dist/src/cli/commands/compat/providers/process.d.mts.map +1 -0
- package/dist/src/cli/commands/compat/providers/process.mjs +159 -0
- package/dist/src/cli/commands/compat/providers/process.mjs.map +1 -0
- package/dist/src/cli/commands/compat/providers/shared.cjs +76 -0
- package/dist/src/cli/commands/compat/providers/shared.cjs.map +1 -0
- package/dist/src/cli/commands/compat/providers/shared.d.mts +40 -0
- package/dist/src/cli/commands/compat/providers/shared.d.mts.map +1 -0
- package/dist/src/cli/commands/compat/providers/shared.mjs +61 -0
- package/dist/src/cli/commands/compat/providers/shared.mjs.map +1 -0
- package/dist/src/cli/commands/compat/types.d.mts +31 -0
- package/dist/src/cli/commands/compat/types.d.mts.map +1 -0
- package/dist/src/cli/commands/doctor/help.cjs +19 -0
- package/dist/src/cli/commands/doctor/help.cjs.map +1 -0
- package/dist/src/cli/commands/doctor/help.d.mts +4 -0
- package/dist/src/cli/commands/doctor/help.d.mts.map +1 -0
- package/dist/src/cli/commands/doctor/help.mjs +19 -0
- package/dist/src/cli/commands/doctor/help.mjs.map +1 -0
- package/dist/src/cli/commands/doctor/index.cjs +118 -0
- package/dist/src/cli/commands/doctor/index.cjs.map +1 -0
- package/dist/src/cli/commands/doctor/index.d.mts +33 -0
- package/dist/src/cli/commands/doctor/index.d.mts.map +1 -0
- package/dist/src/cli/commands/doctor/index.mjs +113 -0
- package/dist/src/cli/commands/doctor/index.mjs.map +1 -0
- package/dist/src/cli/commands/emit-mcp/index.cjs +32 -0
- package/dist/src/cli/commands/emit-mcp/index.cjs.map +1 -0
- package/dist/src/cli/commands/emit-mcp/index.d.mts +19 -0
- package/dist/src/cli/commands/emit-mcp/index.d.mts.map +1 -0
- package/dist/src/cli/commands/emit-mcp/index.mjs +31 -0
- package/dist/src/cli/commands/emit-mcp/index.mjs.map +1 -0
- package/dist/src/cli/commands/explain/index.cjs +155 -0
- package/dist/src/cli/commands/explain/index.cjs.map +1 -0
- package/dist/src/cli/commands/explain/index.d.mts +57 -0
- package/dist/src/cli/commands/explain/index.d.mts.map +1 -0
- package/dist/src/cli/commands/explain/index.mjs +150 -0
- package/dist/src/cli/commands/explain/index.mjs.map +1 -0
- package/dist/src/cli/commands/init/constants.cjs +11 -0
- package/dist/src/cli/commands/init/constants.cjs.map +1 -0
- package/dist/src/cli/commands/init/constants.mjs +11 -0
- package/dist/src/cli/commands/init/constants.mjs.map +1 -0
- package/dist/src/cli/commands/init/help.cjs +17 -0
- package/dist/src/cli/commands/init/help.cjs.map +1 -0
- package/dist/src/cli/commands/init/help.d.mts +4 -0
- package/dist/src/cli/commands/init/help.d.mts.map +1 -0
- package/dist/src/cli/commands/init/help.mjs +17 -0
- package/dist/src/cli/commands/init/help.mjs.map +1 -0
- package/dist/src/cli/commands/init/index.cjs +67 -0
- package/dist/src/cli/commands/init/index.cjs.map +1 -0
- package/dist/src/cli/commands/init/index.d.mts +12 -0
- package/dist/src/cli/commands/init/index.d.mts.map +1 -0
- package/dist/src/cli/commands/init/index.mjs +63 -0
- package/dist/src/cli/commands/init/index.mjs.map +1 -0
- package/dist/src/cli/commands/init/presenter.cjs +140 -0
- package/dist/src/cli/commands/init/presenter.cjs.map +1 -0
- package/dist/src/cli/commands/init/presenter.d.mts +8 -0
- package/dist/src/cli/commands/init/presenter.d.mts.map +1 -0
- package/dist/src/cli/commands/init/presenter.mjs +140 -0
- package/dist/src/cli/commands/init/presenter.mjs.map +1 -0
- package/dist/src/cli/commands/sync/help.cjs +34 -0
- package/dist/src/cli/commands/sync/help.cjs.map +1 -0
- package/dist/src/cli/commands/sync/help.d.mts +4 -0
- package/dist/src/cli/commands/sync/help.d.mts.map +1 -0
- package/dist/src/cli/commands/sync/help.mjs +34 -0
- package/dist/src/cli/commands/sync/help.mjs.map +1 -0
- package/dist/src/cli/commands/sync/index.cjs +215 -0
- package/dist/src/cli/commands/sync/index.cjs.map +1 -0
- package/dist/src/cli/commands/sync/index.d.mts +20 -0
- package/dist/src/cli/commands/sync/index.d.mts.map +1 -0
- package/dist/src/cli/commands/sync/index.mjs +206 -0
- package/dist/src/cli/commands/sync/index.mjs.map +1 -0
- package/dist/src/cli/commands/sync/presenter.cjs +58 -0
- package/dist/src/cli/commands/sync/presenter.cjs.map +1 -0
- package/dist/src/cli/commands/sync/presenter.d.mts +16 -0
- package/dist/src/cli/commands/sync/presenter.d.mts.map +1 -0
- package/dist/src/cli/commands/sync/presenter.mjs +57 -0
- package/dist/src/cli/commands/sync/presenter.mjs.map +1 -0
- package/dist/src/cli/commands/sync/workflow.cjs +16 -0
- package/dist/src/cli/commands/sync/workflow.cjs.map +1 -0
- package/dist/src/cli/commands/sync/workflow.mjs +16 -0
- package/dist/src/cli/commands/sync/workflow.mjs.map +1 -0
- package/dist/src/cli/commands/web/index.cjs +88 -0
- package/dist/src/cli/commands/web/index.cjs.map +1 -0
- package/dist/src/cli/commands/web/index.mjs +85 -0
- package/dist/src/cli/commands/web/index.mjs.map +1 -0
- package/dist/src/cli/harnessOptions.cjs +70 -0
- package/dist/src/cli/harnessOptions.cjs.map +1 -0
- package/dist/src/cli/harnessOptions.d.mts +26 -0
- package/dist/src/cli/harnessOptions.d.mts.map +1 -0
- package/dist/src/cli/harnessOptions.mjs +66 -0
- package/dist/src/cli/harnessOptions.mjs.map +1 -0
- package/dist/src/cli/help.cjs +82 -0
- package/dist/src/cli/help.cjs.map +1 -0
- package/dist/src/cli/help.d.mts +10 -0
- package/dist/src/cli/help.d.mts.map +1 -0
- package/dist/src/cli/help.mjs +78 -0
- package/dist/src/cli/help.mjs.map +1 -0
- package/dist/src/cli/matrixOptions.cjs +178 -0
- package/dist/src/cli/matrixOptions.cjs.map +1 -0
- package/dist/src/cli/matrixOptions.d.mts +90 -0
- package/dist/src/cli/matrixOptions.d.mts.map +1 -0
- package/dist/src/cli/matrixOptions.mjs +151 -0
- package/dist/src/cli/matrixOptions.mjs.map +1 -0
- package/dist/src/cli/options.cjs +281 -0
- package/dist/src/cli/options.cjs.map +1 -0
- package/dist/src/cli/options.d.mts +5 -0
- package/dist/src/cli/options.d.mts.map +1 -0
- package/dist/src/cli/options.mjs +279 -0
- package/dist/src/cli/options.mjs.map +1 -0
- package/dist/src/cli/router.cjs +57 -0
- package/dist/src/cli/router.cjs.map +1 -0
- package/dist/src/cli/router.d.mts +32 -0
- package/dist/src/cli/router.d.mts.map +1 -0
- package/dist/src/cli/router.mjs +54 -0
- package/dist/src/cli/router.mjs.map +1 -0
- package/dist/src/cli/server/options.cjs +71 -0
- package/dist/src/cli/server/options.cjs.map +1 -0
- package/dist/src/cli/server/options.mjs +70 -0
- package/dist/src/cli/server/options.mjs.map +1 -0
- package/dist/src/cli/server/processGuards.cjs +83 -0
- package/dist/src/cli/server/processGuards.cjs.map +1 -0
- package/dist/src/cli/server/processGuards.mjs +79 -0
- package/dist/src/cli/server/processGuards.mjs.map +1 -0
- package/dist/src/cli/server/run.cjs +69 -0
- package/dist/src/cli/server/run.cjs.map +1 -0
- package/dist/src/cli/server/run.mjs +66 -0
- package/dist/src/cli/server/run.mjs.map +1 -0
- package/dist/src/composition/harnessState/index.cjs +48 -0
- package/dist/src/composition/harnessState/index.cjs.map +1 -0
- package/dist/src/composition/harnessState/index.d.mts +19 -0
- package/dist/src/composition/harnessState/index.d.mts.map +1 -0
- package/dist/src/composition/harnessState/index.mjs +34 -0
- package/dist/src/composition/harnessState/index.mjs.map +1 -0
- package/dist/src/composition/layerPackageInstaller/index.cjs +651 -0
- package/dist/src/composition/layerPackageInstaller/index.cjs.map +1 -0
- package/dist/src/composition/layerPackageInstaller/index.d.mts +74 -0
- package/dist/src/composition/layerPackageInstaller/index.d.mts.map +1 -0
- package/dist/src/composition/layerPackageInstaller/index.mjs +637 -0
- package/dist/src/composition/layerPackageInstaller/index.mjs.map +1 -0
- package/dist/src/composition/poHomeMigration/index.cjs +234 -0
- package/dist/src/composition/poHomeMigration/index.cjs.map +1 -0
- package/dist/src/composition/poHomeMigration/index.d.mts +12 -0
- package/dist/src/composition/poHomeMigration/index.d.mts.map +1 -0
- package/dist/src/composition/poHomeMigration/index.mjs +226 -0
- package/dist/src/composition/poHomeMigration/index.mjs.map +1 -0
- package/dist/src/composition/projectTrust/index.cjs +51 -0
- package/dist/src/composition/projectTrust/index.cjs.map +1 -0
- package/dist/src/composition/projectTrust/index.d.mts +22 -0
- package/dist/src/composition/projectTrust/index.d.mts.map +1 -0
- package/dist/src/composition/projectTrust/index.mjs +48 -0
- package/dist/src/composition/projectTrust/index.mjs.map +1 -0
- package/dist/src/composition/repository/index.cjs +68 -0
- package/dist/src/composition/repository/index.cjs.map +1 -0
- package/dist/src/composition/repository/index.d.mts +22 -0
- package/dist/src/composition/repository/index.d.mts.map +1 -0
- package/dist/src/composition/repository/index.mjs +63 -0
- package/dist/src/composition/repository/index.mjs.map +1 -0
- package/dist/src/composition/syncPrune/index.cjs +85 -0
- package/dist/src/composition/syncPrune/index.cjs.map +1 -0
- package/dist/src/composition/syncPrune/index.d.mts +33 -0
- package/dist/src/composition/syncPrune/index.d.mts.map +1 -0
- package/dist/src/composition/syncPrune/index.mjs +82 -0
- package/dist/src/composition/syncPrune/index.mjs.map +1 -0
- package/dist/src/composition/syncService/index.cjs +808 -0
- package/dist/src/composition/syncService/index.cjs.map +1 -0
- package/dist/src/composition/syncService/index.d.mts +65 -0
- package/dist/src/composition/syncService/index.d.mts.map +1 -0
- package/dist/src/composition/syncService/index.mjs +792 -0
- package/dist/src/composition/syncService/index.mjs.map +1 -0
- package/dist/src/composition/syncService/localBuilds.cjs +367 -0
- package/dist/src/composition/syncService/localBuilds.cjs.map +1 -0
- package/dist/src/composition/syncService/localBuilds.mjs +358 -0
- package/dist/src/composition/syncService/localBuilds.mjs.map +1 -0
- package/dist/src/composition/transitionLayers.cjs +17 -0
- package/dist/src/composition/transitionLayers.cjs.map +1 -0
- package/dist/src/composition/transitionLayers.d.mts +6 -0
- package/dist/src/composition/transitionLayers.d.mts.map +1 -0
- package/dist/src/composition/transitionLayers.mjs +16 -0
- package/dist/src/composition/transitionLayers.mjs.map +1 -0
- package/dist/src/composition/types/harness.d.mts +52 -0
- package/dist/src/composition/types/harness.d.mts.map +1 -0
- package/dist/src/extensions/setupDiagnostics.cjs +65 -0
- package/dist/src/extensions/setupDiagnostics.cjs.map +1 -0
- package/dist/src/extensions/setupDiagnostics.mjs +64 -0
- package/dist/src/extensions/setupDiagnostics.mjs.map +1 -0
- package/dist/utils.cjs +4 -0
- package/dist/utils.d.mts +2 -0
- package/dist/utils.mjs +2 -0
- package/dist/webBuilder.cjs +59 -0
- package/dist/webBuilder.d.mts +9 -0
- package/dist/webBuilder.mjs +9 -0
- package/docs/server/api-export.md +86 -0
- package/docs/server/api.md +144 -0
- package/docs/server/getting-started.md +114 -0
- package/docs/server/index.md +67 -0
- package/docs/server/ipc.md +97 -0
- package/docs/server/lifecycle.md +108 -0
- package/docs/server/security.md +101 -0
- package/llms.txt +12 -0
- package/package.json +295 -0
- package/src/prompts/po-author-extension/SKILL.md +35 -0
- package/src/prompts/po-author-extension/references/extension-contract.md +134 -0
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
import fs from "node:fs";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { pathToFileURL } from "node:url";
|
|
4
|
+
import crypto from "node:crypto";
|
|
5
|
+
//#region src/builders/server/packageUrl.ts
|
|
6
|
+
/** Realpath fragments of version-scoped package stores: a new version is a new path. */
|
|
7
|
+
const VERSIONED_STORES = [".upm", ".pnpm"].map((store) => `${path.sep}node_modules${path.sep}${store}${path.sep}`);
|
|
8
|
+
const SNAPSHOT_DIRECTORY = path.join("node_modules", ".po-snapshots");
|
|
9
|
+
const SETTLE_MS = 300;
|
|
10
|
+
const STABLE_ATTEMPTS = 5;
|
|
11
|
+
/** Build outputs a host never imports. */
|
|
12
|
+
const SKIPPED_SUFFIXES = [
|
|
13
|
+
".map",
|
|
14
|
+
".d.ts",
|
|
15
|
+
".d.mts",
|
|
16
|
+
".d.cts",
|
|
17
|
+
".tsbuildinfo"
|
|
18
|
+
];
|
|
19
|
+
function packageRootOf(file) {
|
|
20
|
+
let directory = path.dirname(file);
|
|
21
|
+
for (;;) {
|
|
22
|
+
if (fs.existsSync(path.join(directory, "package.json"))) return directory;
|
|
23
|
+
const parent = path.dirname(directory);
|
|
24
|
+
if (parent === directory) return void 0;
|
|
25
|
+
directory = parent;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
function isVersioned(root) {
|
|
29
|
+
return VERSIONED_STORES.some((store) => `${root}${path.sep}`.includes(store));
|
|
30
|
+
}
|
|
31
|
+
function exportTargets(value, condition, into) {
|
|
32
|
+
if (condition === "types") return;
|
|
33
|
+
if (typeof value === "string") {
|
|
34
|
+
if (!value.includes("*")) into.push(value);
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
if (Array.isArray(value)) {
|
|
38
|
+
for (const item of value) exportTargets(item, condition, into);
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
if (typeof value === "object" && value !== null) for (const [key, item] of Object.entries(value)) exportTargets(item, key, into);
|
|
42
|
+
}
|
|
43
|
+
function record(value) {
|
|
44
|
+
return typeof value === "object" && value !== null && !Array.isArray(value) ? value : void 0;
|
|
45
|
+
}
|
|
46
|
+
/** Package-relative entry targets the manifest declares for a server-side host. */
|
|
47
|
+
function declaredTargets(manifest) {
|
|
48
|
+
const targets = [];
|
|
49
|
+
exportTargets(manifest.exports, void 0, targets);
|
|
50
|
+
if (typeof manifest.main === "string") targets.push(manifest.main);
|
|
51
|
+
const pi = record(manifest.pi);
|
|
52
|
+
if (Array.isArray(pi?.extensions)) {
|
|
53
|
+
for (const entry of pi.extensions) if (typeof entry === "string") targets.push(entry);
|
|
54
|
+
}
|
|
55
|
+
const server = record(manifest.poServer);
|
|
56
|
+
if (typeof server?.dist === "string") targets.push(server.dist);
|
|
57
|
+
const mcp = record(manifest.poMcp);
|
|
58
|
+
if (typeof mcp?.dist === "string") targets.push(mcp.dist);
|
|
59
|
+
return targets;
|
|
60
|
+
}
|
|
61
|
+
function inside(relative) {
|
|
62
|
+
return relative !== "" && relative !== ".." && !relative.startsWith(`..${path.sep}`) && !path.isAbsolute(relative);
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* The files a snapshot carries, package-relative and sorted.
|
|
66
|
+
*
|
|
67
|
+
* A target's whole top-level directory goes with it: bundlers split entries into
|
|
68
|
+
* sibling chunks the entry imports relatively, so copying only the named file would
|
|
69
|
+
* break the import graph.
|
|
70
|
+
*/
|
|
71
|
+
function snapshotFiles(root, entry) {
|
|
72
|
+
const manifest = JSON.parse(fs.readFileSync(path.join(root, "package.json"), "utf8"));
|
|
73
|
+
const targets = [.../* @__PURE__ */ new Set([...declaredTargets(manifest), path.relative(root, entry)])].map((target) => path.normalize(target));
|
|
74
|
+
const files = /* @__PURE__ */ new Set(["package.json"]);
|
|
75
|
+
for (const target of targets) {
|
|
76
|
+
if (!inside(target) || target.split(path.sep)[0] === "node_modules") continue;
|
|
77
|
+
const absolute = path.join(root, target);
|
|
78
|
+
if (!fs.existsSync(absolute)) throw new Error(`declared entry is missing: ${target}`);
|
|
79
|
+
const top = target.split(path.sep)[0];
|
|
80
|
+
const topPath = path.join(root, top);
|
|
81
|
+
if (top === target || !fs.statSync(topPath).isDirectory()) {
|
|
82
|
+
files.add(target);
|
|
83
|
+
continue;
|
|
84
|
+
}
|
|
85
|
+
const collect = (directory) => {
|
|
86
|
+
for (const dirent of fs.readdirSync(directory, { withFileTypes: true })) {
|
|
87
|
+
const file = path.join(directory, dirent.name);
|
|
88
|
+
if (dirent.isDirectory()) {
|
|
89
|
+
if (dirent.name !== "node_modules") collect(file);
|
|
90
|
+
} else if ((dirent.isFile() || dirent.isSymbolicLink()) && !SKIPPED_SUFFIXES.some((suffix) => dirent.name.endsWith(suffix))) files.add(path.relative(root, file));
|
|
91
|
+
}
|
|
92
|
+
};
|
|
93
|
+
collect(topPath);
|
|
94
|
+
}
|
|
95
|
+
return [...files].sort();
|
|
96
|
+
}
|
|
97
|
+
function statSignature(root, files) {
|
|
98
|
+
return files.map((file) => {
|
|
99
|
+
const stat = fs.statSync(path.join(root, file));
|
|
100
|
+
return `${file}\0${String(stat.size)}\0${String(stat.mtimeMs)}`;
|
|
101
|
+
}).join("\n");
|
|
102
|
+
}
|
|
103
|
+
function contentHash(root, files) {
|
|
104
|
+
const hash = crypto.createHash("sha256");
|
|
105
|
+
for (const file of files) {
|
|
106
|
+
hash.update(file).update("\0");
|
|
107
|
+
hash.update(fs.readFileSync(path.join(root, file))).update("\0");
|
|
108
|
+
}
|
|
109
|
+
return hash.digest("hex").slice(0, 32);
|
|
110
|
+
}
|
|
111
|
+
function pruneOthers(snapshots, keep) {
|
|
112
|
+
if (!fs.existsSync(snapshots)) return;
|
|
113
|
+
for (const name of fs.readdirSync(snapshots)) if (name !== keep) fs.rmSync(path.join(snapshots, name), {
|
|
114
|
+
recursive: true,
|
|
115
|
+
force: true
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Maps resolved package entries to import URLs that change only when content changes.
|
|
120
|
+
*
|
|
121
|
+
* A package under a versioned store imports in place: an upgrade is already a new path.
|
|
122
|
+
* Any other package (repo-local, or npm-installed) is snapshotted by content into
|
|
123
|
+
* `<package>/node_modules/.po-snapshots/<hash>/`, with its `package.json` so a
|
|
124
|
+
* self-import by name resolves to the snapshot, while dependencies still resolve
|
|
125
|
+
* from `<package>/node_modules`. A snapshot is taken only when every declared entry
|
|
126
|
+
* exists and two reads `settleMs` apart agree, so a build in progress is never
|
|
127
|
+
* captured. The first snapshot of a package in this process prunes its older ones;
|
|
128
|
+
* later ones keep them, because live sessions may still lazily import from them.
|
|
129
|
+
*/
|
|
130
|
+
function createPackageUrls(options = {}) {
|
|
131
|
+
const settleMs = options.settleMs ?? SETTLE_MS;
|
|
132
|
+
const sleep = options.sleep ?? ((ms) => new Promise((resolve) => setTimeout(resolve, ms)));
|
|
133
|
+
const states = /* @__PURE__ */ new Map();
|
|
134
|
+
const pending = /* @__PURE__ */ new Map();
|
|
135
|
+
const snapshot = async (root, entry) => {
|
|
136
|
+
const snapshots = path.join(root, SNAPSHOT_DIRECTORY);
|
|
137
|
+
for (let attempt = 0; attempt < STABLE_ATTEMPTS; attempt++) {
|
|
138
|
+
const files = snapshotFiles(root, entry);
|
|
139
|
+
const signature = statSignature(root, files);
|
|
140
|
+
const previous = states.get(root);
|
|
141
|
+
if (previous?.signature === signature && fs.existsSync(path.join(snapshots, previous.hash))) return previous.hash;
|
|
142
|
+
const hash = contentHash(root, files);
|
|
143
|
+
const target = path.join(snapshots, hash);
|
|
144
|
+
if (!fs.existsSync(target)) {
|
|
145
|
+
await sleep(settleMs);
|
|
146
|
+
const settled = snapshotFiles(root, entry);
|
|
147
|
+
if (settled.join("\n") !== files.join("\n") || contentHash(root, settled) !== hash) continue;
|
|
148
|
+
const staging = path.join(snapshots, `.${hash}.${String(process.pid)}.${crypto.randomUUID()}`);
|
|
149
|
+
for (const file of files) {
|
|
150
|
+
fs.mkdirSync(path.dirname(path.join(staging, file)), { recursive: true });
|
|
151
|
+
fs.copyFileSync(path.join(root, file), path.join(staging, file));
|
|
152
|
+
}
|
|
153
|
+
if (contentHash(staging, files) !== hash) {
|
|
154
|
+
fs.rmSync(staging, {
|
|
155
|
+
recursive: true,
|
|
156
|
+
force: true
|
|
157
|
+
});
|
|
158
|
+
continue;
|
|
159
|
+
}
|
|
160
|
+
try {
|
|
161
|
+
fs.renameSync(staging, target);
|
|
162
|
+
} catch (error) {
|
|
163
|
+
fs.rmSync(staging, {
|
|
164
|
+
recursive: true,
|
|
165
|
+
force: true
|
|
166
|
+
});
|
|
167
|
+
if (!fs.existsSync(target)) throw error;
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
if (!previous?.pruned) pruneOthers(snapshots, hash);
|
|
171
|
+
states.set(root, {
|
|
172
|
+
signature,
|
|
173
|
+
hash,
|
|
174
|
+
pruned: true
|
|
175
|
+
});
|
|
176
|
+
return hash;
|
|
177
|
+
}
|
|
178
|
+
throw new Error(`package content kept changing while it was read: ${root}`);
|
|
179
|
+
};
|
|
180
|
+
const pathFor = async (entry) => {
|
|
181
|
+
const real = fs.realpathSync(entry);
|
|
182
|
+
const root = packageRootOf(real);
|
|
183
|
+
if (root === void 0 || isVersioned(root)) return real;
|
|
184
|
+
const relative = path.relative(root, real);
|
|
185
|
+
if (relative.split(path.sep)[0] === "node_modules") return real;
|
|
186
|
+
const key = `${root}\0${relative}`;
|
|
187
|
+
let running = pending.get(key);
|
|
188
|
+
if (!running) {
|
|
189
|
+
running = snapshot(root, real).finally(() => pending.delete(key));
|
|
190
|
+
pending.set(key, running);
|
|
191
|
+
}
|
|
192
|
+
const hash = await running;
|
|
193
|
+
return path.join(root, SNAPSHOT_DIRECTORY, hash, relative);
|
|
194
|
+
};
|
|
195
|
+
return {
|
|
196
|
+
pathFor,
|
|
197
|
+
urlFor: async (entry) => pathToFileURL(await pathFor(entry)).href
|
|
198
|
+
};
|
|
199
|
+
}
|
|
200
|
+
//#endregion
|
|
201
|
+
export { SNAPSHOT_DIRECTORY, createPackageUrls, snapshotFiles, statSignature };
|
|
202
|
+
|
|
203
|
+
//# sourceMappingURL=packageUrl.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"packageUrl.mjs","names":[],"sources":["../../../../src/builders/server/packageUrl.ts"],"sourcesContent":["import crypto from 'node:crypto';\nimport fs from 'node:fs';\nimport path from 'node:path';\nimport { pathToFileURL } from 'node:url';\n\n/** Realpath fragments of version-scoped package stores: a new version is a new path. */\nconst VERSIONED_STORES = ['.upm', '.pnpm'].map((store) => `${path.sep}node_modules${path.sep}${store}${path.sep}`);\nexport const SNAPSHOT_DIRECTORY = path.join('node_modules', '.po-snapshots');\nconst SETTLE_MS = 300;\nconst STABLE_ATTEMPTS = 5;\n/** Build outputs a host never imports. */\nconst SKIPPED_SUFFIXES = ['.map', '.d.ts', '.d.mts', '.d.cts', '.tsbuildinfo'];\n\nexport interface PackageUrlOptions {\n /** Delay between the two content reads that prove a build is not in progress. */\n readonly settleMs?: number;\n readonly sleep?: (ms: number) => Promise<void>;\n}\n\nexport interface PackageUrls {\n /** The URL to import for a resolved entry file. Stable until the package content changes. */\n urlFor(entry: string): Promise<string>;\n /** Same as `urlFor`, as a file path, for loaders that take paths (po-hook). */\n pathFor(entry: string): Promise<string>;\n}\n\ninterface PackageState {\n signature: string;\n hash: string;\n pruned: boolean;\n}\n\nfunction packageRootOf(file: string): string | undefined {\n let directory = path.dirname(file);\n for (;;) {\n if (fs.existsSync(path.join(directory, 'package.json'))) return directory;\n const parent = path.dirname(directory);\n if (parent === directory) return undefined;\n directory = parent;\n }\n}\n\nfunction isVersioned(root: string): boolean {\n return VERSIONED_STORES.some((store) => `${root}${path.sep}`.includes(store));\n}\n\nfunction exportTargets(value: unknown, condition: string | undefined, into: string[]): void {\n if (condition === 'types') return;\n if (typeof value === 'string') {\n if (!value.includes('*')) into.push(value);\n return;\n }\n if (Array.isArray(value)) {\n for (const item of value) exportTargets(item, condition, into);\n return;\n }\n if (typeof value === 'object' && value !== null)\n for (const [key, item] of Object.entries(value)) exportTargets(item, key, into);\n}\n\nfunction record(value: unknown): Record<string, unknown> | undefined {\n return typeof value === 'object' && value !== null && !Array.isArray(value)\n ? (value as Record<string, unknown>)\n : undefined;\n}\n\n/** Package-relative entry targets the manifest declares for a server-side host. */\nfunction declaredTargets(manifest: Record<string, unknown>): string[] {\n const targets: string[] = [];\n exportTargets(manifest.exports, undefined, targets);\n if (typeof manifest.main === 'string') targets.push(manifest.main);\n const pi = record(manifest.pi);\n if (Array.isArray(pi?.extensions))\n for (const entry of pi.extensions) if (typeof entry === 'string') targets.push(entry);\n const server = record(manifest.poServer);\n if (typeof server?.dist === 'string') targets.push(server.dist);\n const mcp = record(manifest.poMcp);\n if (typeof mcp?.dist === 'string') targets.push(mcp.dist);\n return targets;\n}\n\nfunction inside(relative: string): boolean {\n return relative !== '' && relative !== '..' && !relative.startsWith(`..${path.sep}`) && !path.isAbsolute(relative);\n}\n\n/**\n * The files a snapshot carries, package-relative and sorted.\n *\n * A target's whole top-level directory goes with it: bundlers split entries into\n * sibling chunks the entry imports relatively, so copying only the named file would\n * break the import graph.\n */\nexport function snapshotFiles(root: string, entry: string): string[] {\n const manifest = JSON.parse(fs.readFileSync(path.join(root, 'package.json'), 'utf8')) as Record<string, unknown>;\n const targets = [...new Set([...declaredTargets(manifest), path.relative(root, entry)])].map((target) =>\n path.normalize(target),\n );\n const files = new Set<string>(['package.json']);\n for (const target of targets) {\n if (!inside(target) || target.split(path.sep)[0] === 'node_modules') continue;\n const absolute = path.join(root, target);\n if (!fs.existsSync(absolute)) throw new Error(`declared entry is missing: ${target}`);\n const top = target.split(path.sep)[0]!;\n const topPath = path.join(root, top);\n if (top === target || !fs.statSync(topPath).isDirectory()) {\n files.add(target);\n continue;\n }\n const collect = (directory: string): void => {\n for (const dirent of fs.readdirSync(directory, { withFileTypes: true })) {\n const file = path.join(directory, dirent.name);\n if (dirent.isDirectory()) {\n if (dirent.name !== 'node_modules') collect(file);\n } else if (\n (dirent.isFile() || dirent.isSymbolicLink()) &&\n !SKIPPED_SUFFIXES.some((suffix) => dirent.name.endsWith(suffix))\n )\n files.add(path.relative(root, file));\n }\n };\n collect(topPath);\n }\n return [...files].sort();\n}\n\nexport function statSignature(root: string, files: readonly string[]): string {\n return files\n .map((file) => {\n const stat = fs.statSync(path.join(root, file));\n return `${file}\\0${String(stat.size)}\\0${String(stat.mtimeMs)}`;\n })\n .join('\\n');\n}\n\nfunction contentHash(root: string, files: readonly string[]): string {\n const hash = crypto.createHash('sha256');\n for (const file of files) {\n hash.update(file).update('\\0');\n hash.update(fs.readFileSync(path.join(root, file))).update('\\0');\n }\n return hash.digest('hex').slice(0, 32);\n}\n\nfunction pruneOthers(snapshots: string, keep: string): void {\n if (!fs.existsSync(snapshots)) return;\n for (const name of fs.readdirSync(snapshots))\n if (name !== keep) fs.rmSync(path.join(snapshots, name), { recursive: true, force: true });\n}\n\n/**\n * Maps resolved package entries to import URLs that change only when content changes.\n *\n * A package under a versioned store imports in place: an upgrade is already a new path.\n * Any other package (repo-local, or npm-installed) is snapshotted by content into\n * `<package>/node_modules/.po-snapshots/<hash>/`, with its `package.json` so a\n * self-import by name resolves to the snapshot, while dependencies still resolve\n * from `<package>/node_modules`. A snapshot is taken only when every declared entry\n * exists and two reads `settleMs` apart agree, so a build in progress is never\n * captured. The first snapshot of a package in this process prunes its older ones;\n * later ones keep them, because live sessions may still lazily import from them.\n */\nexport function createPackageUrls(options: PackageUrlOptions = {}): PackageUrls {\n const settleMs = options.settleMs ?? SETTLE_MS;\n const sleep = options.sleep ?? ((ms: number) => new Promise<void>((resolve) => setTimeout(resolve, ms)));\n const states = new Map<string, PackageState>();\n const pending = new Map<string, Promise<string>>();\n\n const snapshot = async (root: string, entry: string): Promise<string> => {\n const snapshots = path.join(root, SNAPSHOT_DIRECTORY);\n for (let attempt = 0; attempt < STABLE_ATTEMPTS; attempt++) {\n const files = snapshotFiles(root, entry);\n const signature = statSignature(root, files);\n const previous = states.get(root);\n if (previous?.signature === signature && fs.existsSync(path.join(snapshots, previous.hash))) return previous.hash;\n const hash = contentHash(root, files);\n const target = path.join(snapshots, hash);\n if (!fs.existsSync(target)) {\n await sleep(settleMs);\n const settled = snapshotFiles(root, entry);\n if (settled.join('\\n') !== files.join('\\n') || contentHash(root, settled) !== hash) continue;\n const staging = path.join(snapshots, `.${hash}.${String(process.pid)}.${crypto.randomUUID()}`);\n for (const file of files) {\n fs.mkdirSync(path.dirname(path.join(staging, file)), { recursive: true });\n fs.copyFileSync(path.join(root, file), path.join(staging, file));\n }\n if (contentHash(staging, files) !== hash) {\n fs.rmSync(staging, { recursive: true, force: true });\n continue;\n }\n try {\n fs.renameSync(staging, target);\n } catch (error) {\n fs.rmSync(staging, { recursive: true, force: true });\n if (!fs.existsSync(target)) throw error;\n }\n }\n if (!previous?.pruned) pruneOthers(snapshots, hash);\n states.set(root, { signature, hash, pruned: true });\n return hash;\n }\n throw new Error(`package content kept changing while it was read: ${root}`);\n };\n\n const pathFor = async (entry: string): Promise<string> => {\n const real = fs.realpathSync(entry);\n const root = packageRootOf(real);\n // A file no package owns (a loose repository hook) has nothing to snapshot.\n if (root === undefined || isVersioned(root)) return real;\n const relative = path.relative(root, real);\n if (relative.split(path.sep)[0] === 'node_modules') return real;\n const key = `${root}\\0${relative}`;\n let running = pending.get(key);\n if (!running) {\n running = snapshot(root, real).finally(() => pending.delete(key));\n pending.set(key, running);\n }\n const hash = await running;\n return path.join(root, SNAPSHOT_DIRECTORY, hash, relative);\n };\n\n return { pathFor, urlFor: async (entry) => pathToFileURL(await pathFor(entry)).href };\n}\n"],"mappings":"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"}
|