@vscode/component-explorer-cli 0.2.1-17 → 0.2.1-170
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +130 -12
- package/dist/WorktreePool.d.ts +5 -4
- package/dist/WorktreePool.d.ts.map +1 -1
- package/dist/WorktreePool.js +3 -3
- package/dist/WorktreePool.js.map +1 -1
- package/dist/_virtual/_build-info.js +1 -1
- package/dist/browserPage.d.ts +55 -1
- package/dist/browserPage.d.ts.map +1 -1
- package/dist/browserPage.js +103 -7
- package/dist/browserPage.js.map +1 -1
- package/dist/browserPage.test.d.ts +2 -0
- package/dist/browserPage.test.d.ts.map +1 -0
- package/dist/commands/acceptCommand.d.ts +1 -1
- package/dist/commands/acceptCommand.d.ts.map +1 -1
- package/dist/commands/acceptCommand.js +21 -14
- package/dist/commands/acceptCommand.js.map +1 -1
- package/dist/commands/checkStabilityCommand.d.ts +2 -0
- package/dist/commands/checkStabilityCommand.d.ts.map +1 -1
- package/dist/commands/checkStabilityCommand.js +25 -8
- package/dist/commands/checkStabilityCommand.js.map +1 -1
- package/dist/commands/compareCommand.d.ts +1 -1
- package/dist/commands/compareCommand.d.ts.map +1 -1
- package/dist/commands/compareCommand.js +31 -22
- package/dist/commands/compareCommand.js.map +1 -1
- package/dist/commands/inputArg.d.ts +33 -0
- package/dist/commands/inputArg.d.ts.map +1 -0
- package/dist/commands/inputArg.js +103 -0
- package/dist/commands/inputArg.js.map +1 -0
- package/dist/commands/mcpCommand.d.ts.map +1 -1
- package/dist/commands/mcpCommand.js +18 -12
- package/dist/commands/mcpCommand.js.map +1 -1
- package/dist/commands/renderCommand.d.ts +10 -1
- package/dist/commands/renderCommand.d.ts.map +1 -1
- package/dist/commands/renderCommand.js +390 -61
- package/dist/commands/renderCommand.js.map +1 -1
- package/dist/commands/renderCommand.test.d.ts +2 -0
- package/dist/commands/renderCommand.test.d.ts.map +1 -0
- package/dist/commands/serveCommand.d.ts +4 -1
- package/dist/commands/serveCommand.d.ts.map +1 -1
- package/dist/commands/serveCommand.js +105 -36
- package/dist/commands/serveCommand.js.map +1 -1
- package/dist/commands/serviceDiffCommitsCommand.d.ts.map +1 -1
- package/dist/commands/serviceDiffCommitsCommand.js +10 -9
- package/dist/commands/serviceDiffCommitsCommand.js.map +1 -1
- package/dist/commands/watchCommand.d.ts +1 -0
- package/dist/commands/watchCommand.d.ts.map +1 -1
- package/dist/commands/watchCommand.js +31 -20
- package/dist/commands/watchCommand.js.map +1 -1
- package/dist/comparison.d.ts +4 -3
- package/dist/comparison.d.ts.map +1 -1
- package/dist/comparison.js +17 -14
- package/dist/comparison.js.map +1 -1
- package/dist/component-explorer-config.schema.json +55 -2
- package/dist/componentExplorer.d.ts +110 -12
- package/dist/componentExplorer.d.ts.map +1 -1
- package/dist/componentExplorer.js +177 -24
- package/dist/componentExplorer.js.map +1 -1
- package/dist/config.d.ts +33 -4
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +64 -27
- package/dist/config.js.map +1 -1
- package/dist/coverage.d.ts +64 -0
- package/dist/coverage.d.ts.map +1 -0
- package/dist/coverage.js +212 -0
- package/dist/coverage.js.map +1 -0
- package/dist/daemon/DaemonService.d.ts +5 -199
- package/dist/daemon/DaemonService.d.ts.map +1 -1
- package/dist/daemon/DaemonService.js +248 -300
- package/dist/daemon/DaemonService.js.map +1 -1
- package/dist/daemon/approvalStore.d.ts +2 -1
- package/dist/daemon/approvalStore.d.ts.map +1 -1
- package/dist/daemon/approvalStore.js +4 -3
- package/dist/daemon/approvalStore.js.map +1 -1
- package/dist/daemon/client.d.ts +76 -5
- package/dist/daemon/client.d.ts.map +1 -1
- package/dist/daemon/daemonRpc.test.d.ts +2 -0
- package/dist/daemon/daemonRpc.test.d.ts.map +1 -0
- package/dist/daemon/endpointServer.d.ts +4 -0
- package/dist/daemon/endpointServer.d.ts.map +1 -0
- package/dist/daemon/endpointServer.js +24 -0
- package/dist/daemon/endpointServer.js.map +1 -0
- package/dist/daemon/inProcessClient.d.ts +3 -9
- package/dist/daemon/inProcessClient.d.ts.map +1 -1
- package/dist/daemon/inProcessClient.js +29 -30
- package/dist/daemon/inProcessClient.js.map +1 -1
- package/dist/daemon/lifecycle.d.ts +5 -5
- package/dist/daemon/lifecycle.d.ts.map +1 -1
- package/dist/daemon/lifecycle.js +4 -3
- package/dist/daemon/lifecycle.js.map +1 -1
- package/dist/daemon/pipeClient.d.ts +2 -3
- package/dist/daemon/pipeClient.d.ts.map +1 -1
- package/dist/daemon/pipeClient.js +93 -194
- package/dist/daemon/pipeClient.js.map +1 -1
- package/dist/daemon/pipeName.d.ts +3 -3
- package/dist/daemon/pipeName.d.ts.map +1 -1
- package/dist/daemon/pipeName.js +6 -5
- package/dist/daemon/pipeName.js.map +1 -1
- package/dist/daemon/pipeServer.d.ts +2 -2
- package/dist/daemon/pipeServer.d.ts.map +1 -1
- package/dist/daemon/pipeServer.js +79 -70
- package/dist/daemon/pipeServer.js.map +1 -1
- package/dist/daemon/registerDaemonConnection.d.ts +7 -0
- package/dist/daemon/registerDaemonConnection.d.ts.map +1 -0
- package/dist/daemon/registerDaemonConnection.js +37 -0
- package/dist/daemon/registerDaemonConnection.js.map +1 -0
- package/dist/daemon/transports.test.d.ts +2 -0
- package/dist/daemon/transports.test.d.ts.map +1 -0
- package/dist/daemon/types.d.ts +1655 -8
- package/dist/daemon/types.d.ts.map +1 -1
- package/dist/daemon/types.js +4 -0
- package/dist/daemon/types.js.map +1 -0
- package/dist/daemon/version.d.ts +1 -5
- package/dist/daemon/version.d.ts.map +1 -1
- package/dist/daemon/version.js +3 -7
- package/dist/daemon/version.js.map +1 -1
- package/dist/dependencyInstaller.d.ts +2 -1
- package/dist/dependencyInstaller.d.ts.map +1 -1
- package/dist/dependencyInstaller.js +4 -4
- package/dist/dependencyInstaller.js.map +1 -1
- package/dist/explorerSession.d.ts +5 -1
- package/dist/explorerSession.d.ts.map +1 -1
- package/dist/explorerSession.js +24 -7
- package/dist/explorerSession.js.map +1 -1
- package/dist/external/linkrpc/typescript/packages/linkrpc/dist/chunks/inspectionHost-BA6ZmC_P.js +2523 -0
- package/dist/external/linkrpc/typescript/packages/linkrpc/dist/chunks/inspectionHost-BA6ZmC_P.js.map +1 -0
- package/dist/external/linkrpc/typescript/packages/linkrpc/dist/chunks/src-DYVSK_tz.js +1871 -0
- package/dist/external/linkrpc/typescript/packages/linkrpc/dist/chunks/src-DYVSK_tz.js.map +1 -0
- package/dist/external/linkrpc/typescript/packages/linkrpc/dist/chunks/webSocketTransport-Ct4OIdG9.js +220 -0
- package/dist/external/linkrpc/typescript/packages/linkrpc/dist/chunks/webSocketTransport-Ct4OIdG9.js.map +1 -0
- package/dist/external/linkrpc/typescript/packages/linkrpc/dist/node.js +721 -0
- package/dist/external/linkrpc/typescript/packages/linkrpc/dist/node.js.map +1 -0
- package/dist/git/gitCommitResolver.d.ts +2 -1
- package/dist/git/gitCommitResolver.d.ts.map +1 -1
- package/dist/git/gitCommitResolver.js +8 -8
- package/dist/git/gitCommitResolver.js.map +1 -1
- package/dist/git/gitIndexResolver.d.ts +2 -1
- package/dist/git/gitIndexResolver.d.ts.map +1 -1
- package/dist/git/gitIndexResolver.js +7 -7
- package/dist/git/gitIndexResolver.js.map +1 -1
- package/dist/git/gitService.d.ts +5 -4
- package/dist/git/gitService.d.ts.map +1 -1
- package/dist/git/gitService.js.map +1 -1
- package/dist/git/gitUtils.d.ts +6 -5
- package/dist/git/gitUtils.d.ts.map +1 -1
- package/dist/git/gitUtils.js +5 -4
- package/dist/git/gitUtils.js.map +1 -1
- package/dist/git/gitWorktreeManager.d.ts +15 -14
- package/dist/git/gitWorktreeManager.d.ts.map +1 -1
- package/dist/git/gitWorktreeManager.js +10 -11
- package/dist/git/gitWorktreeManager.js.map +1 -1
- package/dist/git/testUtils.d.ts +2 -1
- package/dist/git/testUtils.d.ts.map +1 -1
- package/dist/index.d.ts +0 -2
- package/dist/index.js +10 -1
- package/dist/index.js.map +1 -1
- package/dist/js-component-explorer/packages/common/dist/daemonRpc.js +165 -0
- package/dist/js-component-explorer/packages/common/dist/daemonRpc.js.map +1 -0
- package/dist/js-component-explorer/packages/common/dist/explorerUrl.js +21 -0
- package/dist/js-component-explorer/packages/common/dist/explorerUrl.js.map +1 -0
- package/dist/js-component-explorer/packages/common/dist/renderManifest.js +68 -0
- package/dist/js-component-explorer/packages/common/dist/renderManifest.js.map +1 -0
- package/dist/js-component-explorer/packages/semver/dist/index.js.map +1 -0
- package/dist/manifest.schema.json +44 -16
- package/dist/mcp/DaemonAccessor.d.ts +2 -3
- package/dist/mcp/DaemonAccessor.d.ts.map +1 -1
- package/dist/mcp/McpServer.d.ts +1 -1
- package/dist/mcp/McpServer.d.ts.map +1 -1
- package/dist/mcp/McpServer.js +252 -159
- package/dist/mcp/McpServer.js.map +1 -1
- package/dist/path.d.ts +30 -0
- package/dist/path.d.ts.map +1 -0
- package/dist/path.js +78 -0
- package/dist/path.js.map +1 -0
- package/dist/processTree.d.ts +6 -1
- package/dist/processTree.d.ts.map +1 -1
- package/dist/processTree.js +48 -5
- package/dist/processTree.js.map +1 -1
- package/dist/renderManifest.d.ts +70 -5
- package/dist/renderManifest.js +1 -1
- package/dist/server/httpServer.d.ts +1 -1
- package/dist/server/httpServer.d.ts.map +1 -1
- package/dist/server/httpServer.js +4 -8
- package/dist/server/httpServer.js.map +1 -1
- package/dist/server/serverConfig.d.ts +23 -8
- package/dist/server/serverConfig.d.ts.map +1 -1
- package/dist/server/serverConfig.js +11 -18
- package/dist/server/serverConfig.js.map +1 -1
- package/dist/server/viteServer.d.ts +16 -3
- package/dist/server/viteServer.d.ts.map +1 -1
- package/dist/server/viteServer.js +86 -5
- package/dist/server/viteServer.js.map +1 -1
- package/dist/storage.d.ts +2 -1
- package/dist/storage.d.ts.map +1 -1
- package/dist/storage.js +1 -1
- package/dist/storage.js.map +1 -1
- package/dist/utils.d.ts +3 -30
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +4 -24
- package/dist/utils.js.map +1 -1
- package/dist/visualCache.d.ts +2 -1
- package/dist/visualCache.d.ts.map +1 -1
- package/dist/visualCache.js +4 -3
- package/dist/visualCache.js.map +1 -1
- package/dist/viteProjectRef.d.ts +4 -12
- package/dist/viteProjectRef.d.ts.map +1 -1
- package/dist/viteProjectRef.js +9 -17
- package/dist/viteProjectRef.js.map +1 -1
- package/dist/vscode-observables/observables/dist/disposables.js.map +1 -0
- package/dist/vscode-observables/observables/dist/observableInternal/base.js.map +1 -0
- package/dist/vscode-observables/observables/dist/observableInternal/commonFacade/deps.js.map +1 -0
- package/dist/vscode-observables/observables/dist/observableInternal/debugLocation.js.map +1 -0
- package/dist/vscode-observables/observables/dist/observableInternal/debugName.js.map +1 -0
- package/dist/vscode-observables/observables/dist/observableInternal/index.js.map +1 -0
- package/dist/vscode-observables/observables/dist/observableInternal/logging/consoleObservableLogger.js.map +1 -0
- package/dist/{external/vscode-observables → vscode-observables}/observables/dist/observableInternal/logging/debugGetDependencyGraph.js +1 -1
- package/dist/vscode-observables/observables/dist/observableInternal/logging/debugGetDependencyGraph.js.map +1 -0
- package/dist/vscode-observables/observables/dist/observableInternal/logging/logging.js.map +1 -0
- package/dist/vscode-observables/observables/dist/observableInternal/observables/baseObservable.js.map +1 -0
- package/dist/vscode-observables/observables/dist/observableInternal/observables/derived.js.map +1 -0
- package/dist/vscode-observables/observables/dist/observableInternal/observables/derivedImpl.js.map +1 -0
- package/dist/vscode-observables/observables/dist/observableInternal/observables/observableFromEvent.js.map +1 -0
- package/dist/vscode-observables/observables/dist/observableInternal/observables/observableValue.js.map +1 -0
- package/dist/{external/vscode-observables/observables/dist/observableInternal/reactions/autorun.js → vscode-observables/observables/dist/observableInternal/reactions/createEffect.js} +9 -5
- package/dist/vscode-observables/observables/dist/observableInternal/reactions/createEffect.js.map +1 -0
- package/dist/{external/vscode-observables/observables/dist/observableInternal/reactions/autorunImpl.js → vscode-observables/observables/dist/observableInternal/reactions/createEffectImpl.js} +1 -1
- package/dist/vscode-observables/observables/dist/observableInternal/reactions/createEffectImpl.js.map +1 -0
- package/dist/vscode-observables/observables/dist/observableInternal/transaction.js.map +1 -0
- package/dist/vscode-observables/observables/dist/observableInternal/utils/utils.js.map +1 -0
- package/dist/{external/vscode-observables → vscode-observables}/observables/dist/observableInternal/utils/utilsCancellation.js +2 -2
- package/dist/vscode-observables/observables/dist/observableInternal/utils/utilsCancellation.js.map +1 -0
- package/package.json +18 -15
- package/dist/commands/artifactCommand.d.ts +0 -14
- package/dist/commands/artifactCommand.d.ts.map +0 -1
- package/dist/external/vscode-observables/observables/dist/disposables.js.map +0 -1
- package/dist/external/vscode-observables/observables/dist/observableInternal/base.js.map +0 -1
- package/dist/external/vscode-observables/observables/dist/observableInternal/commonFacade/deps.js.map +0 -1
- package/dist/external/vscode-observables/observables/dist/observableInternal/debugLocation.js.map +0 -1
- package/dist/external/vscode-observables/observables/dist/observableInternal/debugName.js.map +0 -1
- package/dist/external/vscode-observables/observables/dist/observableInternal/index.js.map +0 -1
- package/dist/external/vscode-observables/observables/dist/observableInternal/logging/consoleObservableLogger.js.map +0 -1
- package/dist/external/vscode-observables/observables/dist/observableInternal/logging/debugGetDependencyGraph.js.map +0 -1
- package/dist/external/vscode-observables/observables/dist/observableInternal/logging/logging.js.map +0 -1
- package/dist/external/vscode-observables/observables/dist/observableInternal/observables/baseObservable.js.map +0 -1
- package/dist/external/vscode-observables/observables/dist/observableInternal/observables/derived.js.map +0 -1
- package/dist/external/vscode-observables/observables/dist/observableInternal/observables/derivedImpl.js.map +0 -1
- package/dist/external/vscode-observables/observables/dist/observableInternal/observables/observableFromEvent.js.map +0 -1
- package/dist/external/vscode-observables/observables/dist/observableInternal/observables/observableValue.js.map +0 -1
- package/dist/external/vscode-observables/observables/dist/observableInternal/reactions/autorun.js.map +0 -1
- package/dist/external/vscode-observables/observables/dist/observableInternal/reactions/autorunImpl.js.map +0 -1
- package/dist/external/vscode-observables/observables/dist/observableInternal/transaction.js.map +0 -1
- package/dist/external/vscode-observables/observables/dist/observableInternal/utils/utils.js.map +0 -1
- package/dist/external/vscode-observables/observables/dist/observableInternal/utils/utilsCancellation.js.map +0 -1
- package/dist/formatValue.js +0 -96
- package/dist/formatValue.js.map +0 -1
- package/dist/packages/common/dist/renderManifest.js +0 -46
- package/dist/packages/common/dist/renderManifest.js.map +0 -1
- package/dist/packages/semver/dist/index.js.map +0 -1
- package/dist/packages/simple-api/dist/chunk-FJ7AVNQE.js +0 -138
- package/dist/packages/simple-api/dist/chunk-FJ7AVNQE.js.map +0 -1
- package/dist/packages/simple-api/dist/chunk-TTRCY65Z.js +0 -27
- package/dist/packages/simple-api/dist/chunk-TTRCY65Z.js.map +0 -1
- package/dist/packages/simple-api/dist/chunk-WNXMRXWV.js +0 -28
- package/dist/packages/simple-api/dist/chunk-WNXMRXWV.js.map +0 -1
- package/dist/packages/simple-api/dist/express.js +0 -104
- package/dist/packages/simple-api/dist/express.js.map +0 -1
- /package/dist/{packages → js-component-explorer/packages}/semver/dist/index.js +0 -0
- /package/dist/{external/vscode-observables → vscode-observables}/observables/dist/disposables.js +0 -0
- /package/dist/{external/vscode-observables → vscode-observables}/observables/dist/observableInternal/base.js +0 -0
- /package/dist/{external/vscode-observables → vscode-observables}/observables/dist/observableInternal/commonFacade/deps.js +0 -0
- /package/dist/{external/vscode-observables → vscode-observables}/observables/dist/observableInternal/debugLocation.js +0 -0
- /package/dist/{external/vscode-observables → vscode-observables}/observables/dist/observableInternal/debugName.js +0 -0
- /package/dist/{external/vscode-observables → vscode-observables}/observables/dist/observableInternal/index.js +0 -0
- /package/dist/{external/vscode-observables → vscode-observables}/observables/dist/observableInternal/logging/consoleObservableLogger.js +0 -0
- /package/dist/{external/vscode-observables → vscode-observables}/observables/dist/observableInternal/logging/logging.js +0 -0
- /package/dist/{external/vscode-observables → vscode-observables}/observables/dist/observableInternal/observables/baseObservable.js +0 -0
- /package/dist/{external/vscode-observables → vscode-observables}/observables/dist/observableInternal/observables/derived.js +0 -0
- /package/dist/{external/vscode-observables → vscode-observables}/observables/dist/observableInternal/observables/derivedImpl.js +0 -0
- /package/dist/{external/vscode-observables → vscode-observables}/observables/dist/observableInternal/observables/observableFromEvent.js +0 -0
- /package/dist/{external/vscode-observables → vscode-observables}/observables/dist/observableInternal/observables/observableValue.js +0 -0
- /package/dist/{external/vscode-observables → vscode-observables}/observables/dist/observableInternal/transaction.js +0 -0
- /package/dist/{external/vscode-observables → vscode-observables}/observables/dist/observableInternal/utils/utils.js +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node.js","sources":["../../../../../../../../../../external/linkrpc/typescript/packages/linkrpc/dist/node.js"],"sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Microsoft Corporation. All rights reserved.\n* Licensed under the MIT License. See License.txt in the project root for license information.\n*--------------------------------------------------------------------------------------------*/\nimport { A as PRINCIPAL_PREFIX, B as interfaceFromSchema, C as zTopologyTransportInfo, Ct as isRequest, D as zTrafficTransitEvent, Dt as normalizeJsonSchema, E as zTrafficTransitEndpoint, Et as isRpcFailure, F as principalForPublicKey, G as schemaToZod, I as publicKeyForKeyId, J as getInterfaceTags, K as INTERFACE_TEMPLATES_EXTENSION, L as resolveSigningKey, M as bytesToBase64Url, N as keyIdForPrincipal, O as zTrafficWatchResult, P as keyIdForPublicKey, R as InterfaceDefinition, S as zTopologyTransportEndpoint, St as isNotification, T as zTrafficOverflowEvent, Tt as RpcFailure, V as toMethodSchema, W as createSchemaToZod, X as interfaceTemplateMemberName, Y as interfaceTemplateArgumentsEquivalent, Z as interfaceTemplatesEqual, _ as zTopologyGraph, at as jcsCanonicalizeBytes, b as zTopologyNode, c as StreamControlType, ct as componentSchemaRef, d as nodeInterface, dt as applicationError, et as validateInterfaceTemplates, f as topologyInterface, ft as isApplicationErrorValue, g as zRouteClaim, gt as zodToSvcJsonSchema, h as zParticipantDescriptorSource, ht as rpcError, it as jcsCanonicalize, j as base64UrlToBytes, k as KEY_ID_PREFIX, l as StreamDir, lt as NotificationType, m as zParticipantDescriptor, mt as requestType, nt as computeInterfaceHash, o as STREAM_METHOD, ot as assertSchemaReferences, p as trafficInterface, pt as notificationType, rt as sha256, s as StreamControlReason, st as componentSchemaName, tt as EXTENSION_PREFIX, u as streamInterface, ut as RequestType, v as zTopologyLink, w as zTrafficEvent, wt as isResponse, x as zTopologyPort, xt as ErrorCode, y as zTopologyLinkEndpoint, z as defineInterface } from \"./chunks/inspectionHost-BA6ZmC_P.js\";\nimport { $ as exportStaticHubSchema, A as PublicSigningIdentity, At as HUBRPC_UNSIGNED_KEY, B as formatEndpointUri, Bt as methodNameToTarget, C as createManagedIdentity, Ct as directoryWatchNever, D as identityStorageInterface, Dt as stripLinkRpcWireMeta, E as identityInterface, Et as requireObjectParams, F as signRpcCall, Ft as readSignature, G as TransportPair, Gt as bareInterfaceTarget, H as parseEndpointUri, Ht as generateTsContract, I as verifyRpcCall, It as signedHash, J as capabilityPermits, Jt as matchesJsonSchema, K as connectTransports, Kt as materializeJsonSchema, L as crypto_exports, Lt as signingDomainValue, M as Principal, Mt as LINKRPC_SIGNATURE_KEY, N as CapBag, Nt as LINKRPC_UNSIGNED_KEY, O as KeypairIdentity, Ot as HUBRPC_META_KEY, P as attachCapabilities, Pt as getKeyId, Q as permissionPermits, R as generateKeypair, Rt as signingInput, S as InMemoryManagedIdentityStorage, St as directoryInterface, T as registerLazyIdentityOnOverlay, Tt as zServiceIdPattern, U as ChannelConnector, Ut as parseStaticHubSchema, V as isHubEndpoint, Vt as parseMethodName, W as MultiplexedTransport, Wt as generateTsInterface, X as matchParams, Xt as NonCompliantServerError, Y as hasSignedCapabilityShape, Yt as validateJsonSchema, Z as permissionMatchesTarget, Zt as defineInterfaceTemplate, _ as OneShotCapStaging, a as verifyCall, at as JsonRpcChannel, b as createManagedPrincipal, bt as withRpcTimeout, c as capabilityFreshAt, d as issueCapabilities, et as LinkRpcConnection, f as issueCapability, g as signCapability, h as prepareCapabilityIssuance, i as signParams, it as isInterfaceTarget, j as PublicWrappingIdentity, jt as LINKRPC_META_KEY, k as KeypairSigningIdentity, kt as HUBRPC_SIGNATURE_KEY, l as getDelegationRootIds, m as prefix, n as createSeededMemoryPrincipal, nt as defaultInterfaceTarget, o as CapabilityIssuanceError, ot as Channel, p as permits, q as traceMessageTransport, qt as isAssignable, r as createSeededSigningIdentity, rt as interfaceTarget, s as capBagFreshAt, st as RpcError, t as createMemoryPrincipal, tt as ServiceHandle, u as invoke, v as SigningSender, w as registerIdentityOnOverlay, wt as schemasInterface, x as InMemoryManagedIdentity, xt as defaultsInterface, y as PrincipalWithStore, yt as DEFAULT_RPC_TIMEOUT_MS, z as generateX25519Keypair, zt as withSignature } from \"./chunks/src-DYVSK_tz.js\";\nimport { a as INITIALIZE_PROTOCOL_VERSION, i as INITIALIZE_METHOD, o as LINKRPC_INITIALIZE_METHOD_ALIAS, r as openWebSocket$1, s as runInitializeHandshake, t as WebSocketTransport } from \"./chunks/webSocketTransport-Ct4OIdG9.js\";\nimport { n as hubFromConnection } from \"./chunks/hubFacade-ClN2ausU.js\";\nimport { timingSafeEqual } from \"node:crypto\";\nimport * as http from \"node:http\";\nimport * as net from \"node:net\";\nimport * as fs from \"node:fs/promises\";\nimport { mkdir, readFile, writeFile } from \"node:fs/promises\";\nimport * as os from \"node:os\";\nimport * as path from \"node:path\";\nimport { dirname } from \"node:path\";\nimport { spawn } from \"node:child_process\";\n//#region src/node/ndjsonTransport.ts\n/**\n* Newline-delimited JSON transport over a Node Readable/Writable pair.\n* One JSON value per line, both directions.\n*\n* Not LSP-style headers — those add no value for a private link between two\n* cooperating processes and require a length-prefixed framer.\n*/\nvar NdjsonTransport = class {\n\t_input;\n\t_output;\n\t_onClose;\n\t_listener;\n\t_buffer = [];\n\t_residual = \"\";\n\t_closed = false;\n\t_onDataEvent = (chunk) => this._onData(chunk);\n\t_onEndEvent = () => this.dispose();\n\tconstructor(_input, _output, _onClose) {\n\t\tthis._input = _input;\n\t\tthis._output = _output;\n\t\tthis._onClose = _onClose;\n\t\tthis._input.setEncoding?.(\"utf8\");\n\t\tthis._input.on(\"data\", this._onDataEvent);\n\t\tthis._input.on(\"end\", this._onEndEvent);\n\t\tthis._input.on(\"close\", this._onEndEvent);\n\t\tthis._input.on(\"error\", this._onEndEvent);\n\t\tif (!Object.is(this._output, this._input)) this._output.on(\"error\", this._onEndEvent);\n\t}\n\tsend(message) {\n\t\tif (this._closed) return;\n\t\tthis._output.write(JSON.stringify(message) + \"\\n\");\n\t}\n\tsetListener(listener) {\n\t\tthis._listener = listener;\n\t\tif (listener) while (this._buffer.length > 0 && this._listener) {\n\t\t\tconst m = this._buffer.shift();\n\t\t\tthis._listener(m);\n\t\t}\n\t}\n\tdispose() {\n\t\tif (this._closed) return;\n\t\tthis._closed = true;\n\t\tthis._input.removeListener(\"data\", this._onDataEvent);\n\t\tthis._input.removeListener(\"end\", this._onEndEvent);\n\t\tthis._input.removeListener(\"close\", this._onEndEvent);\n\t\tthis._input.removeListener(\"error\", this._onEndEvent);\n\t\tthis._output.removeListener(\"error\", this._onEndEvent);\n\t\tthis._listener = void 0;\n\t\tthis._buffer.length = 0;\n\t\tthis._residual = \"\";\n\t\tthis._onClose?.();\n\t}\n\t_onData(chunk) {\n\t\tthis._residual += chunk;\n\t\tlet nl;\n\t\twhile ((nl = this._residual.indexOf(\"\\n\")) >= 0) {\n\t\t\tconst line = this._residual.slice(0, nl).trim();\n\t\t\tthis._residual = this._residual.slice(nl + 1);\n\t\t\tif (!line) continue;\n\t\t\tlet parsed;\n\t\t\ttry {\n\t\t\t\tparsed = JSON.parse(line);\n\t\t\t} catch {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tthis._deliver(parsed);\n\t\t}\n\t}\n\t_deliver(m) {\n\t\tif (this._listener) this._listener(m);\n\t\telse this._buffer.push(m);\n\t}\n};\n//#endregion\n//#region src/node/initialize.ts\n/** Construct NDJSON and complete the shared transport initialization handshake. */\nasync function connectNdjson(opts) {\n\tconst role = opts.initialize;\n\tconst closed = new AbortController();\n\tconst baseTransport = new NdjsonTransport(opts.input, opts.output, () => {\n\t\ttry {\n\t\t\topts.onClose?.();\n\t\t} finally {\n\t\t\tclosed.abort(/* @__PURE__ */ new Error(\"hubrpc::initialize: transport closed during handshake\"));\n\t\t}\n\t});\n\tconst transport = opts.trace === void 0 ? baseTransport : traceMessageTransport(baseTransport, opts.trace);\n\tif (!role) return { transport };\n\ttry {\n\t\tconst { token } = await runInitializeHandshake(transport, role, {\n\t\t\thandshakeTimeoutMs: opts.handshakeTimeoutMs,\n\t\t\tsignal: opts.signal ? AbortSignal.any([closed.signal, opts.signal]) : closed.signal\n\t\t});\n\t\treturn {\n\t\t\ttransport,\n\t\t\t...token !== void 0 ? { token } : {}\n\t\t};\n\t} catch (err) {\n\t\ttransport.dispose();\n\t\tthrow err;\n\t}\n}\n//#endregion\n//#region src/node/webSocketClientTransport.ts\n/** Node-only header extension. The web entry exposes the standard overload. */\nfunction openWebSocket(url, opts = {}) {\n\tif (!opts.headers || Object.keys(opts.headers).length === 0) return openWebSocket$1(url);\n\treturn new Promise((resolve, reject) => {\n\t\tconst ws = new WebSocket(url, { headers: opts.headers });\n\t\tconst onOpen = () => {\n\t\t\tws.removeEventListener(\"error\", onError);\n\t\t\tresolve(ws);\n\t\t};\n\t\tconst onError = () => {\n\t\t\tws.removeEventListener(\"open\", onOpen);\n\t\t\treject(/* @__PURE__ */ new Error(\"WebSocket connection failed\"));\n\t\t};\n\t\tws.addEventListener(\"open\", onOpen, { once: true });\n\t\tws.addEventListener(\"error\", onError, { once: true });\n\t});\n}\n//#endregion\n//#region src/node/hubClient.ts\n/** Env var the hub publishes for its endpoint (named pipe / UDS path). */\nconst LINKRPC_ENDPOINT_VAR = \"LINKRPC_ENDPOINT\";\n/** Env var the hub publishes for its shared attribution token. */\nconst LINKRPC_TOKEN_VAR = \"LINKRPC_TOKEN\";\n/**\n* Open a connection to a running linkrpc hub. Reads `LINKRPC_ENDPOINT` and\n* `LINKRPC_TOKEN` from the environment unless overridden. Sends the single-\n* line `{\"hello\":1,\"token\":\"...\"}` preamble that the hub's socket server\n* requires, then wraps the socket in an `LinkRpcConnection`.\n*\n* Throws if env vars are missing, if the socket cannot be opened, or if the\n* hub refuses the preamble (the socket simply closes — callers should treat\n* an immediate close of the channel as an auth failure).\n*/\nasync function connectToHub(options = {}) {\n\tconst hubChannel = await openHubChannel(options);\n\tconst signing = {\n\t\tprincipal: options.principal,\n\t\toneShotCaps: options.oneShotCaps\n\t};\n\tconst channel = SigningSender.wrapChannel(hubChannel, signing);\n\tconst connection = new LinkRpcConnection(channel);\n\treturn {\n\t\tconnection,\n\t\thub: hubFromConnection(connection),\n\t\tendpoint: hubChannel.endpoint,\n\t\ttoken: hubChannel.token,\n\t\tsigning,\n\t\tonClose: hubChannel.onClose,\n\t\tclose: () => {\n\t\t\tconnection.close();\n\t\t\thubChannel.close();\n\t\t}\n\t};\n}\n/**\n* Open the hub socket and send the preamble, returning the raw\n* {@link HubChannel} without any signing. Use this when you want to\n* compose identity yourself; otherwise prefer {@link connectToHub}.\n*/\nasync function openHubChannel(options = {}) {\n\tconst endpoint = options.endpoint ?? process.env[\"LINKRPC_ENDPOINT\"];\n\tconst token = options.token ?? process.env[\"LINKRPC_TOKEN\"] ?? \"\";\n\tif (!endpoint) throw new Error(`${LINKRPC_ENDPOINT_VAR} is not set; cannot connect to linkrpc hub.`);\n\tconst closeListeners = /* @__PURE__ */ new Set();\n\tlet closed = false;\n\tlet closeChannel;\n\tconst fireClose = () => {\n\t\tif (closed) return;\n\t\tclosed = true;\n\t\tcloseChannel?.();\n\t\tfor (const l of closeListeners) try {\n\t\t\tl();\n\t\t} catch {}\n\t\tcloseListeners.clear();\n\t};\n\tconst { transport, destroy } = await _openHubTransport(endpoint, token, fireClose);\n\tconst rpc = JsonRpcChannel.createWithClose(transport, { deferRequests: options.deferRequests });\n\tcloseChannel = rpc.close;\n\tif (closed) rpc.close();\n\treturn Object.assign(rpc.channel, {\n\t\tendpoint,\n\t\ttoken,\n\t\tresumeRequests: rpc.resumeRequests,\n\t\tonClose: (listener) => {\n\t\t\tif (closed) {\n\t\t\t\tqueueMicrotask(listener);\n\t\t\t\treturn { dispose: () => {} };\n\t\t\t}\n\t\t\tcloseListeners.add(listener);\n\t\t\treturn { dispose: () => closeListeners.delete(listener) };\n\t\t},\n\t\tclose: () => {\n\t\t\tdestroy();\n\t\t\tfireClose();\n\t\t}\n\t});\n}\n/** True for `ws://` / `wss://` endpoints (case-insensitive). */\nfunction _isWebSocketEndpoint(endpoint) {\n\treturn /^wss?:\\/\\//i.test(endpoint);\n}\n/**\n* Open the underlying transport for {@link openHubChannel}, picking the\n* scheme from the endpoint:\n* - `ws://` / `wss://` → WebSocket; the token is presented via the\n* `hubrpc::initialize` handshake (browsers cannot set request headers).\n* - anything else → named pipe / UDS; the token is presented via the\n* `hubrpc::initialize` handshake the socket server requires.\n*\n* `onClose` fires once when the peer ends the transport.\n*/\nasync function _openHubTransport(endpoint, token, onClose) {\n\tif (_isWebSocketEndpoint(endpoint)) {\n\t\tconst ws = await openWebSocket(endpoint);\n\t\tconst closed = new AbortController();\n\t\tconst transport = new WebSocketTransport(ws, () => {\n\t\t\tclosed.abort(/* @__PURE__ */ new Error(\"hubrpc::initialize: transport closed during handshake\"));\n\t\t\tonClose();\n\t\t});\n\t\tconst destroy = () => {\n\t\t\ttry {\n\t\t\t\tws.close();\n\t\t\t} catch {}\n\t\t};\n\t\ttry {\n\t\t\tawait runInitializeHandshake(transport, {\n\t\t\t\tkind: \"client\",\n\t\t\t\ttoken\n\t\t\t}, { signal: closed.signal });\n\t\t} catch (err) {\n\t\t\ttransport.dispose();\n\t\t\tdestroy();\n\t\t\tthrow err;\n\t\t}\n\t\treturn {\n\t\t\ttransport,\n\t\t\tdestroy\n\t\t};\n\t}\n\tconst socket = await _openSocket(endpoint);\n\tconst { transport } = await connectNdjson({\n\t\tinput: socket,\n\t\toutput: socket,\n\t\tonClose: () => {\n\t\t\tsocket.destroy();\n\t\t\tonClose();\n\t\t},\n\t\tinitialize: {\n\t\t\tkind: \"client\",\n\t\t\ttoken\n\t\t}\n\t});\n\treturn {\n\t\ttransport,\n\t\tdestroy: () => socket.destroy()\n\t};\n}\nasync function registerHubPrefix(opts) {\n\tlet params;\n\tif (opts.identity) {\n\t\tconst signer = new KeypairSigningIdentity(opts.identity.principal, opts.identity.keypair.privateKey);\n\t\tparams = await signParams({\n\t\t\tmethod: \"hubServiceIdRegistry::registerServiceId\",\n\t\t\tparams: { requestedPrefix: opts.prefix },\n\t\t\tsigningIdentity: signer,\n\t\t\t...opts.capabilities && opts.capabilities.length > 0 ? { capabilities: [...opts.capabilities] } : {}\n\t\t});\n\t} else {\n\t\tif (opts.capabilities && opts.capabilities.length > 0) throw new Error(\"registerHubPrefix: capabilities require identity to be set\");\n\t\tparams = { requestedPrefix: opts.prefix };\n\t}\n\tawait opts.handle.connection.channel.sendRequest(\"hubServiceIdRegistry::registerServiceId\", params);\n}\n/**\n* Load the Ed25519 + X25519 keypairs for `id` from disk, or\n* generate-and-persist them on first call. The slot is keyed by SHA-256 of\n* `id` so callers can pass any stable string (e.g. `import.meta.filename`)\n* without worrying about filesystem-safe characters.\n*\n* Identity files written before wrapping support carried only the Ed25519\n* keypair; on load they are transparently migrated — the Ed25519 keypair\n* (and therefore the `nodeId`) is preserved and a fresh X25519 wrap keypair\n* is generated and written back.\n*\n* NOTE: keys are stored unencrypted. Only suitable for local development\n* identities — not for anything that must resist file-system attackers.\n*/\nasync function loadOrCreateIdentity(opts) {\n\tconst file = opts.file ?? path.join(opts.storeDir ?? _defaultStoreDir(), `${_slotName(opts.id)}.json`);\n\tawait fs.mkdir(path.dirname(file), { recursive: true });\n\ttry {\n\t\tconst raw = await fs.readFile(file, \"utf8\");\n\t\tconst parsed = JSON.parse(raw);\n\t\tif (typeof parsed.privateKey !== \"string\" || typeof parsed.publicKey !== \"string\") throw new Error(\"malformed identity file\");\n\t\tconst privateKey = base64UrlToBytes(parsed.privateKey);\n\t\tconst publicKey = base64UrlToBytes(parsed.publicKey);\n\t\tconst keypair = {\n\t\t\tprivateKey,\n\t\t\tpublicKey\n\t\t};\n\t\tlet wrapKeypair;\n\t\tif (typeof parsed.wrapPrivateKey === \"string\" && typeof parsed.wrapPublicKey === \"string\") wrapKeypair = {\n\t\t\tprivateKey: base64UrlToBytes(parsed.wrapPrivateKey),\n\t\t\tpublicKey: base64UrlToBytes(parsed.wrapPublicKey)\n\t\t};\n\t\telse {\n\t\t\twrapKeypair = await generateX25519Keypair();\n\t\t\tawait _writeIdentityFile(file, keypair, wrapKeypair, opts.id);\n\t\t}\n\t\treturn {\n\t\t\tkeypair,\n\t\t\twrapKeypair,\n\t\t\tprincipal: principalForPublicKey(publicKey),\n\t\t\tfile\n\t\t};\n\t} catch (e) {\n\t\tif (e.code !== \"ENOENT\") throw e;\n\t}\n\tconst keypair = await generateKeypair();\n\tconst wrapKeypair = await generateX25519Keypair();\n\tawait _writeIdentityFile(file, keypair, wrapKeypair, opts.id);\n\treturn {\n\t\tkeypair,\n\t\twrapKeypair,\n\t\tprincipal: principalForPublicKey(keypair.publicKey),\n\t\tfile\n\t};\n}\nasync function _writeIdentityFile(file, keypair, wrapKeypair, id) {\n\tconst payload = {\n\t\tprivateKey: bytesToBase64Url(keypair.privateKey),\n\t\tpublicKey: bytesToBase64Url(keypair.publicKey),\n\t\twrapPrivateKey: bytesToBase64Url(wrapKeypair.privateKey),\n\t\twrapPublicKey: bytesToBase64Url(wrapKeypair.publicKey),\n\t\tid\n\t};\n\tawait fs.writeFile(file, JSON.stringify(payload, null, 2), { mode: 384 });\n}\nfunction _defaultStoreDir() {\n\tconst home = os.homedir();\n\tif (process.platform === \"win32\") {\n\t\tconst appdata = process.env.APPDATA;\n\t\tif (appdata) return path.join(appdata, \"hubrpc\", \"identities\");\n\t\treturn path.join(home, \"AppData\", \"Roaming\", \"hubrpc\", \"identities\");\n\t}\n\tif (process.platform === \"darwin\") return path.join(home, \"Library\", \"Application Support\", \"hubrpc\", \"identities\");\n\tconst xdg = process.env.XDG_CONFIG_HOME;\n\tif (xdg) return path.join(xdg, \"hubrpc\", \"identities\");\n\treturn path.join(home, \".config\", \"hubrpc\", \"identities\");\n}\nfunction _slotName(id) {\n\tconst digest = sha256(new TextEncoder().encode(id));\n\tlet out = \"\";\n\tfor (let i = 0; i < 16; i++) out += digest[i].toString(16).padStart(2, \"0\");\n\treturn out;\n}\nasync function loadPersistedRegisterCap(args) {\n\tconst file = _capFilePath(args.identityId, args.prefix, args.storeDir);\n\ttry {\n\t\tconst raw = await fs.readFile(file, \"utf8\");\n\t\tconst parsed = JSON.parse(raw);\n\t\tif (!parsed.capability) return void 0;\n\t\tif (parsed.capability.expiresAtMs !== void 0 && parsed.capability.expiresAtMs < Date.now()) return;\n\t\treturn {\n\t\t\tcapability: parsed.capability,\n\t\t\tfile\n\t\t};\n\t} catch (e) {\n\t\tif (e.code !== \"ENOENT\") throw e;\n\t\treturn;\n\t}\n}\nasync function persistRegisterCap(args) {\n\tconst file = _capFilePath(args.identityId, args.prefix, args.storeDir);\n\tawait fs.mkdir(path.dirname(file), { recursive: true });\n\tawait fs.writeFile(file, JSON.stringify({ capability: args.capability }, null, 2), { mode: 384 });\n\treturn file;\n}\nfunction _capFilePath(identityId, prefix, storeDir) {\n\tconst dir = storeDir ?? _defaultStoreDir();\n\tconst slot = _slotName(identityId);\n\treturn path.join(dir, `${slot}-cap-${_slotName(prefix)}.json`);\n}\nfunction _openSocket(endpoint) {\n\treturn new Promise((resolve, reject) => {\n\t\tconst socket = net.createConnection(endpoint);\n\t\tconst onError = (err) => {\n\t\t\tsocket.removeListener(\"connect\", onConnect);\n\t\t\treject(err);\n\t\t};\n\t\tconst onConnect = () => {\n\t\t\tsocket.removeListener(\"error\", onError);\n\t\t\tresolve(socket);\n\t\t};\n\t\tsocket.once(\"error\", onError);\n\t\tsocket.once(\"connect\", onConnect);\n\t});\n}\n//#endregion\n//#region src/node/stdio.ts\n/**\n* Spawn a child process and connect to its stdio as a linkrpc connection.\n*\n* Pass a single command line (split on whitespace) or an array `[cmd, ...args]`.\n* The child's stderr is piped to the parent's stderr so logs surface naturally.\n*\n* @example\n* const c = await connectToCmdStdio(\"node ./ghConnector.js\");\n* const gh = c.get(ghInterface);\n* await gh.createIssue({ title: \"...\" });\n*/\nasync function connectToCmdStdio(cmd) {\n\tconst parts = typeof cmd === \"string\" ? cmd.split(/\\s+/).filter(Boolean) : [...cmd];\n\tif (parts.length === 0) throw new Error(\"connectToCmdStdio: empty command\");\n\tconst [bin, ...args] = parts;\n\tconst child = spawn(bin, args, { stdio: [\n\t\t\"pipe\",\n\t\t\"pipe\",\n\t\t\"inherit\"\n\t] });\n\tif (!child.stdin || !child.stdout) throw new Error(\"connectToCmdStdio: child has no stdio\");\n\tconst { transport } = await connectNdjson({\n\t\tinput: child.stdout,\n\t\toutput: child.stdin,\n\t\tonClose: () => {\n\t\t\tif (!child.killed) child.kill();\n\t\t}\n\t});\n\treturn LinkRpcConnection.fromTransport(transport);\n}\n/**\n* For the child side: a linkrpc connection over this process's stdin/stdout.\n* The child MUST NOT write user output to stdout — only RPC messages — or\n* the parent's parser will choke.\n*/\nasync function serveOnStdio() {\n\tconst { transport } = await connectNdjson({\n\t\tinput: process.stdin,\n\t\toutput: process.stdout\n\t});\n\treturn LinkRpcConnection.fromTransport(transport);\n}\nasync function openStdioChannel(options = {}) {\n\tconst closeListeners = /* @__PURE__ */ new Set();\n\tlet closed = false;\n\tlet closeChannel;\n\tconst fireClose = () => {\n\t\tif (closed) return;\n\t\tclosed = true;\n\t\tcloseChannel?.();\n\t\tif (process.stdin.listenerCount(\"data\") === 0) process.stdin.pause();\n\t\tfor (const l of closeListeners) try {\n\t\t\tl();\n\t\t} catch {}\n\t\tcloseListeners.clear();\n\t};\n\tconst { transport } = await connectNdjson({\n\t\tinput: process.stdin,\n\t\toutput: process.stdout,\n\t\tonClose: fireClose\n\t});\n\tconst rpc = JsonRpcChannel.createWithClose(transport, options);\n\tcloseChannel = rpc.close;\n\tif (closed) rpc.close();\n\treturn Object.assign(rpc.channel, {\n\t\tresumeRequests: rpc.resumeRequests,\n\t\tclose: fireClose,\n\t\tonClose: (listener) => {\n\t\t\tif (closed) {\n\t\t\t\tqueueMicrotask(listener);\n\t\t\t\treturn { dispose: () => {} };\n\t\t\t}\n\t\t\tcloseListeners.add(listener);\n\t\t\treturn { dispose: () => closeListeners.delete(listener) };\n\t\t}\n\t});\n}\n//#endregion\n//#region src/node/endpoint.ts\n/**\n* Start a Node application's RPC endpoint without imposing argument parsing,\n* signing, service registration, signal handlers, or process-exit policy.\n* Startup and initial onConnection failures reject. A listener isolates failed\n* peers, reports them via onError, and continues accepting other connections.\n*/\nasync function startEndpoint(options) {\n\tconst configured = (options.endpoint ?? process.env[\"LINKRPC_ENDPOINT\"])?.trim();\n\tif (!configured) throw new Error(`${LINKRPC_ENDPOINT_VAR} is not set; specify an endpoint.`);\n\tif (configured === \"stdio\" || configured === \"stdio:\") return _startSingle(\"stdio:\", await openStdioChannel({ deferRequests: true }), options);\n\tconst listening = configured.startsWith(\"listen:\");\n\tconst target = parseEndpointUri(listening ? configured.slice(7) : configured);\n\tif (target.kind !== \"socket\" && target.kind !== \"ws\") throw new Error(\"startEndpoint supports stdio, socket, and LinkRPC WebSocket endpoints only.\");\n\tconst token = options.token ?? target.token ?? process.env[\"LINKRPC_TOKEN\"] ?? \"\";\n\tconst endpoint = formatEndpointUri({\n\t\t...target,\n\t\ttoken: void 0\n\t});\n\tif (!listening) return _startSingle(endpoint, await openHubChannel({\n\t\tendpoint: target.kind === \"socket\" ? target.path : target.url,\n\t\ttoken,\n\t\tdeferRequests: true\n\t}), options);\n\tif (!token) throw new Error(\"Listening endpoints require a nonempty token.\");\n\treturn EndpointListener.start(target, token, options);\n}\nasync function _startSingle(endpoint, source, options) {\n\tlet finish;\n\tconst closed = new Promise((resolve) => {\n\t\tfinish = resolve;\n\t});\n\tconst subscription = source.onClose(finish);\n\tclosed.then(() => subscription.dispose());\n\tconst connection = {\n\t\tchannel: source,\n\t\tclosed,\n\t\tdispose: () => source.close()\n\t};\n\ttry {\n\t\tawait options.onConnection(connection);\n\t\tsource.resumeRequests();\n\t\treturn {\n\t\t\tendpoint,\n\t\t\tclosed,\n\t\t\tdispose: connection.dispose\n\t\t};\n\t} catch (error) {\n\t\tconnection.dispose();\n\t\tawait closed;\n\t\tthrow error;\n\t}\n}\nvar EndpointListener = class EndpointListener {\n\tendpoint;\n\t_server;\n\t_token;\n\t_options;\n\t_webSocketServer;\n\t_peers = /* @__PURE__ */ new Set();\n\t_tasks = /* @__PURE__ */ new Set();\n\t_sockets = /* @__PURE__ */ new Set();\n\t_disposed = false;\n\t_finish;\n\tclosed = new Promise((resolve) => {\n\t\tthis._finish = resolve;\n\t});\n\tconstructor(endpoint, _server, _token, _options, _webSocketServer) {\n\t\tthis.endpoint = endpoint;\n\t\tthis._server = _server;\n\t\tthis._token = _token;\n\t\tthis._options = _options;\n\t\tthis._webSocketServer = _webSocketServer;\n\t\t_server.on(\"connection\", (socket) => {\n\t\t\tthis._sockets.add(socket);\n\t\t\tsocket.on(\"close\", () => this._sockets.delete(socket));\n\t\t\tif (this._disposed) socket.destroy();\n\t\t});\n\t\t_server.on(\"error\", (error) => {\n\t\t\tthis._report(error);\n\t\t\tthis.dispose();\n\t\t});\n\t}\n\tstatic async start(target, token, options) {\n\t\tif (target.kind === \"socket\") {\n\t\t\tconst server = net.createServer();\n\t\t\tawait _listen(server, () => server.listen(target.path));\n\t\t\tconst owner = new EndpointListener(formatEndpointUri({\n\t\t\t\t...target,\n\t\t\t\ttoken: void 0\n\t\t\t}), server, token, options);\n\t\t\tserver.on(\"connection\", (socket) => {\n\t\t\t\tconst peer = owner._createPeer(() => socket.destroy());\n\t\t\t\tsocket.on(\"error\", (error) => owner._peerError(peer, error));\n\t\t\t\tsocket.on(\"close\", () => peer.dispose());\n\t\t\t\towner._accept(peer, () => connectNdjson({\n\t\t\t\t\tinput: socket,\n\t\t\t\t\toutput: socket,\n\t\t\t\t\tonClose: () => peer.dispose(),\n\t\t\t\t\tsignal: peer.signal,\n\t\t\t\t\tinitialize: {\n\t\t\t\t\t\tkind: \"server\",\n\t\t\t\t\t\tisTokenAccepted: async (candidate) => owner._accepts(candidate)\n\t\t\t\t\t}\n\t\t\t\t}).then((result) => result.transport));\n\t\t\t});\n\t\t\treturn owner;\n\t\t}\n\t\tconst url = new URL(target.url);\n\t\tif (url.protocol !== \"ws:\") throw new Error(\"Listening WebSockets require ws:; terminate TLS at a reverse proxy.\");\n\t\tif (url.username || url.password || url.search || url.hash) throw new Error(\"Listening WebSocket URLs cannot contain credentials, query parameters, or fragments.\");\n\t\tconst { WebSocketServer } = await import(\"ws\");\n\t\tconst server = http.createServer((_request, response) => {\n\t\t\tresponse.writeHead(426);\n\t\t\tresponse.end(\"WebSocket upgrade required\");\n\t\t});\n\t\tawait _listen(server, () => server.listen(Number(url.port || 80), url.hostname.replace(/^\\[|\\]$/g, \"\")));\n\t\tconst webSockets = new WebSocketServer({\n\t\t\tserver,\n\t\t\tpath: url.pathname,\n\t\t\tmaxPayload: 16777216\n\t\t});\n\t\tconst address = server.address();\n\t\tif (!address || typeof address === \"string\") {\n\t\t\tserver.close();\n\t\t\tthrow new Error(\"WebSocket listener did not bind a TCP address.\");\n\t\t}\n\t\turl.port = String(address.port);\n\t\tconst owner = new EndpointListener(url.toString(), server, token, options, webSockets);\n\t\twebSockets.on(\"error\", (error) => {\n\t\t\towner._report(error);\n\t\t\towner.dispose();\n\t\t});\n\t\twebSockets.on(\"connection\", (socket) => {\n\t\t\tconst peer = owner._createPeer(() => socket.terminate());\n\t\t\tsocket.on(\"error\", (error) => owner._peerError(peer, error));\n\t\t\tsocket.on(\"close\", () => peer.dispose());\n\t\t\tconst transport = new WebSocketTransport(socket, () => peer.dispose());\n\t\t\tpeer.setTransport(transport);\n\t\t\towner._accept(peer, async () => {\n\t\t\t\tawait runInitializeHandshake(transport, {\n\t\t\t\t\tkind: \"server\",\n\t\t\t\t\tisTokenAccepted: async (candidate) => owner._accepts(candidate)\n\t\t\t\t}, { signal: peer.signal });\n\t\t\t\treturn transport;\n\t\t\t});\n\t\t});\n\t\treturn owner;\n\t}\n\tdispose() {\n\t\tif (this._disposed) return;\n\t\tthis._disposed = true;\n\t\tfor (const peer of this._peers) peer.dispose();\n\t\tfor (const socket of this._sockets) socket.destroy();\n\t\tconst webSocketsClosed = this._webSocketServer ? new Promise((resolve) => this._webSocketServer.close(() => resolve())) : Promise.resolve();\n\t\tthis._server.close(() => {\n\t\t\tPromise.all([...this._tasks, webSocketsClosed]).then(() => this._finish());\n\t\t});\n\t}\n\t_accepts(candidate) {\n\t\tif (typeof candidate !== \"string\") return false;\n\t\tconst expected = Buffer.from(this._token);\n\t\tconst actual = Buffer.from(candidate);\n\t\treturn actual.length === expected.length && timingSafeEqual(actual, expected);\n\t}\n\t_createPeer(closeSocket) {\n\t\tconst peer = new ListenerPeer(closeSocket);\n\t\tthis._peers.add(peer);\n\t\tpeer.closed.then(() => this._peers.delete(peer));\n\t\tif (this._disposed) peer.dispose();\n\t\treturn peer;\n\t}\n\t_accept(peer, open) {\n\t\tconst task = (async () => {\n\t\t\ttry {\n\t\t\t\tconst transport = await open();\n\t\t\t\tpeer.setTransport(transport);\n\t\t\t\tif (this._disposed || peer.signal.aborted) return;\n\t\t\t\tconst connection = peer.connect();\n\t\t\t\tawait this._options.onConnection(connection);\n\t\t\t\tpeer.resumeRequests();\n\t\t\t} catch (error) {\n\t\t\t\tconst report = !this._disposed;\n\t\t\t\tpeer.dispose();\n\t\t\t\tif (report) this._report(error);\n\t\t\t}\n\t\t})();\n\t\tthis._tasks.add(task);\n\t\ttask.then(() => this._tasks.delete(task));\n\t}\n\t_peerError(peer, error) {\n\t\tif (!peer.signal.aborted && !this._disposed) this._report(error);\n\t\tpeer.dispose();\n\t}\n\t_report(error) {\n\t\tconst report = this._options.onError ?? ((error) => process.emitWarning(error));\n\t\ttry {\n\t\t\treport(error instanceof Error ? error : new Error(String(error)));\n\t\t} catch (error) {\n\t\t\tprocess.emitWarning(new Error(\"startEndpoint onError callback threw\", { cause: error }));\n\t\t}\n\t}\n};\nvar ListenerPeer = class {\n\t_closeSocket;\n\t_abort = new AbortController();\n\tsignal = this._abort.signal;\n\t_finish;\n\tclosed = new Promise((resolve) => {\n\t\tthis._finish = resolve;\n\t});\n\t_transport;\n\t_closeChannel;\n\t_resumeRequests;\n\tconstructor(_closeSocket) {\n\t\tthis._closeSocket = _closeSocket;\n\t}\n\tsetTransport(transport) {\n\t\tthis._transport = transport;\n\t\tif (this.signal.aborted) transport.dispose();\n\t}\n\tconnect() {\n\t\tconst rpc = JsonRpcChannel.createWithClose(this._transport, { deferRequests: true });\n\t\tthis._closeChannel = rpc.close;\n\t\tthis._resumeRequests = rpc.resumeRequests;\n\t\treturn {\n\t\t\tchannel: rpc.channel,\n\t\t\tclosed: this.closed,\n\t\t\tdispose: () => this.dispose()\n\t\t};\n\t}\n\tresumeRequests() {\n\t\tthis._resumeRequests?.();\n\t}\n\tdispose() {\n\t\tif (this.signal.aborted) return;\n\t\tthis._abort.abort(/* @__PURE__ */ new Error(\"Endpoint connection closed\"));\n\t\tthis._closeChannel?.();\n\t\tthis._transport?.dispose();\n\t\tthis._closeSocket();\n\t\tthis._finish();\n\t}\n};\nfunction _listen(server, listen) {\n\treturn new Promise((resolve, reject) => {\n\t\tconst onError = (error) => {\n\t\t\tserver.removeListener(\"listening\", onListening);\n\t\t\treject(error);\n\t\t};\n\t\tconst onListening = () => {\n\t\t\tserver.removeListener(\"error\", onError);\n\t\t\tresolve();\n\t\t};\n\t\tserver.once(\"error\", onError);\n\t\tserver.once(\"listening\", onListening);\n\t\ttry {\n\t\t\tlisten();\n\t\t} catch (error) {\n\t\t\tserver.removeListener(\"error\", onError);\n\t\t\tserver.removeListener(\"listening\", onListening);\n\t\t\treject(error);\n\t\t}\n\t});\n}\n//#endregion\n//#region src/node/hubReconnect.ts\n/**\n* Connect to the hub, register `prefix`, run `setup`, and keep the\n* connection alive across hub restarts. When the socket closes, retries\n* with exponential backoff (re-reading `LINKRPC_ENDPOINT` / `LINKRPC_TOKEN`\n* from `process.env` on each attempt so rotated tokens published by the\n* hub host get picked up if the parent shell re-exports them).\n*\n* The hub keeps recently-rotated tokens accepted for a grace window, so\n* even processes that captured the env at spawn time can usually reconnect\n* after a host reload without the parent re-exporting anything.\n*/\nfunction serveOverHubWithReconnect(options) {\n\tconst log = _makeLog(options.log, options.name ?? options.prefix);\n\tconst initial = options.initialBackoffMs ?? 200;\n\tconst max = options.maxBackoffMs ?? 5e3;\n\tlet stopped = false;\n\tlet current;\n\tconst stop = () => {\n\t\tif (stopped) return;\n\t\tstopped = true;\n\t\tcurrent?.close();\n\t\tcurrent = void 0;\n\t};\n\toptions.signal?.addEventListener(\"abort\", stop, { once: true });\n\tconst claimer = options.identity ? createHubPrefixClaimer({\n\t\tprefix: options.prefix,\n\t\tidentity: options.identity,\n\t\tlog\n\t}) : void 0;\n\treturn {\n\t\tstop,\n\t\tdone: (async () => {\n\t\t\tlet attempt = 0;\n\t\t\tlet backoff = initial;\n\t\t\twhile (!stopped) try {\n\t\t\t\tif (attempt > 0) log(`reconnecting (attempt ${attempt + 1})…`);\n\t\t\t\tconst handle = await connectToHub();\n\t\t\t\tcurrent = handle;\n\t\t\t\tif (claimer) await claimer.claim(handle);\n\t\t\t\telse await registerHubPrefix({\n\t\t\t\t\thandle,\n\t\t\t\t\tprefix: options.prefix\n\t\t\t\t});\n\t\t\t\tawait options.setup(handle.connection);\n\t\t\t\tlog(attempt === 0 ? `connected to hub at ${handle.endpoint} (prefix \"${options.prefix}\")` : `reconnected to hub (prefix \"${options.prefix}\")`);\n\t\t\t\tattempt = 0;\n\t\t\t\tbackoff = initial;\n\t\t\t\tawait new Promise((resolve) => {\n\t\t\t\t\thandle.onClose(() => resolve());\n\t\t\t\t});\n\t\t\t\tif (stopped) break;\n\t\t\t\tlog(`disconnected from hub`);\n\t\t\t\tcurrent = void 0;\n\t\t\t} catch (err) {\n\t\t\t\tif (stopped) break;\n\t\t\t\tcurrent?.close();\n\t\t\t\tcurrent = void 0;\n\t\t\t\tconst msg = err instanceof Error ? err.message : String(err);\n\t\t\t\tlog(`connect failed: ${msg}; retrying in ${backoff} ms`);\n\t\t\t\tawait _delay(backoff, options.signal);\n\t\t\t\tattempt++;\n\t\t\t\tbackoff = Math.min(max, backoff * 2);\n\t\t\t}\n\t\t})()\n\t};\n}\n/**\n* Build a reusable, stateful claimer for the signed register + capability\n* flow. Use this with {@link connectService}'s `reconnecting` connector to\n* claim a prefix on each (re)connect:\n*\n* ```ts\n* const claimer = createHubPrefixClaimer({ prefix, identity: { slot } });\n* connectService({\n* connector: reconnecting(async () => {\n* const handle = await connectToHub();\n* try { await claimer.claim(handle); } catch (e) { handle.close(); throw e; }\n* return handle;\n* }),\n* onConnect: ({ connection }) => registerService(connection),\n* });\n* ```\n*/\nfunction createHubPrefixClaimer(opts) {\n\tconst log = opts.log ?? (() => {});\n\tlet identity;\n\tlet cachedCap;\n\tlet capLoaded = false;\n\treturn { async claim(handle) {\n\t\tif (!identity) {\n\t\t\tconst loaded = await loadOrCreateIdentity({\n\t\t\t\tid: opts.identity.slot,\n\t\t\t\t...opts.identity.storeDir !== void 0 ? { storeDir: opts.identity.storeDir } : {}\n\t\t\t});\n\t\t\tidentity = {\n\t\t\t\tprincipal: loaded.principal,\n\t\t\t\tkeypair: loaded.keypair\n\t\t\t};\n\t\t}\n\t\tif (!capLoaded) {\n\t\t\tcachedCap = (await loadPersistedRegisterCap({\n\t\t\t\tidentityId: opts.identity.slot,\n\t\t\t\tprefix: opts.prefix,\n\t\t\t\t...opts.identity.storeDir !== void 0 ? { storeDir: opts.identity.storeDir } : {}\n\t\t\t}))?.capability;\n\t\t\tcapLoaded = true;\n\t\t}\n\t\tcachedCap = await _registerSigned(handle, opts.prefix, identity, cachedCap, opts.identity, log);\n\t} };\n}\nconst DEFAULT_ISSUER_METHOD = \"hub-admin::hub-admin.capabilities::issueRegisterCap\";\n/**\n* Try `registerHubPrefix` with `cachedCap`. On `permissionRequired`, call\n* the hub-admin issuer to mint a fresh cap, persist it, retry. Returns the\n* cap that actually worked (caller stores it for the next reconnect).\n*/\nasync function _registerSigned(handle, prefix, identity, cachedCap, identityOpts, log) {\n\ttry {\n\t\tawait registerHubPrefix({\n\t\t\thandle,\n\t\t\tprefix,\n\t\t\tidentity,\n\t\t\t...cachedCap ? { capabilities: [cachedCap] } : {}\n\t\t});\n\t\treturn cachedCap;\n\t} catch (e) {\n\t\tconst msg = e instanceof Error ? e.message : String(e);\n\t\tif (!_isPermissionRequired(e) || identityOpts.issuerMethod === null) throw e;\n\t\tlog(`register denied (${msg}); requesting capability from hub-admin issuer…`);\n\t}\n\tconst issuerMethod = identityOpts.issuerMethod ?? DEFAULT_ISSUER_METHOD;\n\tconst signer = new KeypairSigningIdentity(identity.principal, identity.keypair.privateKey);\n\tconst signedIssueParams = await signParams({\n\t\tmethod: issuerMethod,\n\t\tparams: {\n\t\t\taudience: identity.principal,\n\t\t\tprefix,\n\t\t\t...identityOpts.purpose !== void 0 ? { purpose: identityOpts.purpose } : {}\n\t\t},\n\t\tsigningIdentity: signer\n\t});\n\tconst issueResp = await handle.connection.channel.sendRequest(issuerMethod, signedIssueParams);\n\tif (!issueResp?.capability) throw new Error(\"hub-admin issuer returned no capability\");\n\tconst fresh = issueResp.capability;\n\tawait persistRegisterCap({\n\t\tidentityId: identityOpts.slot,\n\t\tprefix,\n\t\tcapability: fresh,\n\t\t...identityOpts.storeDir !== void 0 ? { storeDir: identityOpts.storeDir } : {}\n\t});\n\tawait registerHubPrefix({\n\t\thandle,\n\t\tprefix,\n\t\tidentity,\n\t\tcapabilities: [fresh]\n\t});\n\treturn fresh;\n}\nfunction _isPermissionRequired(e) {\n\tif (e === null || typeof e !== \"object\") return false;\n\tconst rec = e;\n\tif (typeof rec.code === \"number\") return rec.code === ErrorCode.permissionRequired;\n\tconst msg = e.message ?? \"\";\n\treturn /permission required/i.test(msg);\n}\nfunction _makeLog(sink, name) {\n\tif (!sink) return () => {};\n\tconst write = sink === true ? (line) => {\n\t\tprocess.stderr.write(line + \"\\n\");\n\t} : sink;\n\treturn (line) => write(`[linkrpc:${name}] ${line}`);\n}\nfunction _delay(ms, signal) {\n\treturn new Promise((resolve) => {\n\t\tif (signal?.aborted) {\n\t\t\tresolve();\n\t\t\treturn;\n\t\t}\n\t\tconst t = setTimeout(() => {\n\t\t\tsignal?.removeEventListener(\"abort\", onAbort);\n\t\t\tresolve();\n\t\t}, ms);\n\t\tconst onAbort = () => {\n\t\t\tclearTimeout(t);\n\t\t\tresolve();\n\t\t};\n\t\tsignal?.addEventListener(\"abort\", onAbort, { once: true });\n\t});\n}\n//#endregion\n//#region src/node/fileManagedIdentityStorage.ts\n/**\n* A {@link ManagedIdentityStorage} backed by a single JSON file (one object\n* keyed by the storage keys). Suitable for self-managed identities that\n* persist their capability bag locally — e.g. pass it to `CapBag.load`.\n*\n* The file is created (mode 0o600) on first write; reads of a missing file\n* yield an empty store. Not concurrency-safe across processes.\n*/\nfunction fileManagedIdentityStorage(file) {\n\tconst read = async () => {\n\t\ttry {\n\t\t\treturn JSON.parse(await readFile(file, \"utf8\"));\n\t\t} catch (e) {\n\t\t\tif (e.code === \"ENOENT\") return {};\n\t\t\tthrow e;\n\t\t}\n\t};\n\tconst write = async (data) => {\n\t\tawait mkdir(dirname(file), { recursive: true });\n\t\tawait writeFile(file, JSON.stringify(data, null, 2), { mode: 384 });\n\t};\n\treturn {\n\t\tget: async (key) => (await read())[key],\n\t\tset: async (key, value) => {\n\t\t\tconst data = await read();\n\t\t\tdata[key] = value;\n\t\t\tawait write(data);\n\t\t},\n\t\tdelete: async (key) => {\n\t\t\tconst data = await read();\n\t\t\tconst existed = key in data;\n\t\t\tdelete data[key];\n\t\t\tawait write(data);\n\t\t\treturn existed;\n\t\t},\n\t\tlist: async (prefix = \"\") => Object.keys(await read()).filter((k) => k.startsWith(prefix))\n\t};\n}\n//#endregion\n//#region src/node/principal.ts\n/**\n* Self-managed principal: a local Ed25519 + X25519 keypair (created/loaded on\n* disk) signs and wraps/unwraps for outbound calls, and granted caps are\n* cached in a sibling file. Purely local — no transport needed — and\n* cheap/idempotent, so it can be re-derived on each reconnect. Used with\n* `--use-non-managed-identity`.\n*/\nasync function createSelfManagedPrincipal(identityKey) {\n\treturn _selfManagedPrincipal({ id: identityKey });\n}\n/**\n* Self-managed principal whose keypair lives at an explicit file path (rather\n* than a slot derived from an id). Caps are cached in a sibling `.caps.json`.\n* Used by callers that want to pin the identity to a specific file, e.g. the\n* CLI's `--principal file:<path>`.\n*/\nasync function createSelfManagedPrincipalFromFile(file) {\n\treturn _selfManagedPrincipal({\n\t\tid: `file:${file}`,\n\t\tfile\n\t});\n}\nasync function _selfManagedPrincipal(opts) {\n\tconst id = await loadOrCreateIdentity({\n\t\tid: opts.id,\n\t\tfile: opts.file\n\t});\n\tconst capsFile = id.file.endsWith(\".json\") ? id.file.replace(/\\.json$/, \".caps.json\") : `${id.file}.caps.json`;\n\tconst capBag = await CapBag.load({ storage: fileManagedIdentityStorage(capsFile) });\n\tconst identity = new KeypairIdentity(id.principal, id.keypair.privateKey, id.wrapKeypair);\n\treturn new Principal(identity, capBag);\n}\n//#endregion\n//#region src/node/headerDelimitedTransport.ts\nconst HEADER_SEPARATOR = Buffer.from(\"\\r\\n\\r\\n\");\nconst DEFAULT_MAX_HEADER_BYTES = 65536;\nconst DEFAULT_MAX_CONTENT_LENGTH = 67108864;\nconst DEFAULT_MAX_PENDING_MESSAGES = 1024;\n/**\n* LSP \"base protocol\" framing over a Node Readable/Writable pair.\n*\n* The streams remain owned by the caller: close/dispose detach listeners but\n* never end, destroy, or otherwise take ownership of either stream.\n*/\nvar HeaderDelimitedTransport = class {\n\t_input;\n\t_output;\n\t_onClose;\n\t_listener;\n\t_pending = [];\n\t_residual = Buffer.alloc(0);\n\t_expectedLength;\n\t_closed = false;\n\t_closeReason;\n\t_maxHeaderBytes;\n\t_maxContentLength;\n\t_maxPendingMessages;\n\t_onDataListener = (chunk) => this._onData(chunk);\n\t_onEndListener = () => this._onEnd();\n\t_onInputErrorListener = (error) => this.close(`Header-delimited input error: ${error.message}`);\n\t_onOutputErrorListener = (error) => this.close(`Header-delimited output error: ${error.message}`);\n\tconstructor(_input, _output, _onClose, options = {}) {\n\t\tthis._input = _input;\n\t\tthis._output = _output;\n\t\tthis._onClose = _onClose;\n\t\tthis._maxHeaderBytes = positiveLimit(options.maxHeaderBytes, DEFAULT_MAX_HEADER_BYTES, \"maxHeaderBytes\");\n\t\tthis._maxContentLength = positiveLimit(options.maxContentLength, DEFAULT_MAX_CONTENT_LENGTH, \"maxContentLength\");\n\t\tthis._maxPendingMessages = positiveLimit(options.maxPendingMessages, DEFAULT_MAX_PENDING_MESSAGES, \"maxPendingMessages\");\n\t\t_input.on(\"data\", this._onDataListener);\n\t\t_input.on(\"end\", this._onEndListener);\n\t\t_input.on(\"close\", this._onEndListener);\n\t\t_input.on(\"error\", this._onInputErrorListener);\n\t\t_output.on(\"error\", this._onOutputErrorListener);\n\t}\n\tget closed() {\n\t\treturn this._closed;\n\t}\n\tget closeReason() {\n\t\treturn this._closeReason;\n\t}\n\tsend(message) {\n\t\tif (this._closed) return Promise.reject(new Error(this._closeReason ?? \"Header-delimited transport is closed\"));\n\t\tconst body = Buffer.from(JSON.stringify(message), \"utf8\");\n\t\tif (body.length > this._maxContentLength) return Promise.reject(/* @__PURE__ */ new Error(`Header-delimited payload exceeds ${this._maxContentLength} bytes`));\n\t\tconst wire = Buffer.concat([Buffer.from(`Content-Length: ${body.length}\\r\\n\\r\\n`, \"ascii\"), body]);\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tthis._output.write(wire, (error) => {\n\t\t\t\tif (error) reject(error);\n\t\t\t\telse resolve();\n\t\t\t});\n\t\t});\n\t}\n\tsetListener(listener) {\n\t\tthis._listener = listener;\n\t\twhile (this._listener && this._pending.length > 0) this._listener(this._pending.shift());\n\t}\n\tdispose() {\n\t\tthis.close(\"Header-delimited transport disposed\");\n\t}\n\tclose(reason = \"Header-delimited transport closed\") {\n\t\tif (this._closed) return;\n\t\tthis._closed = true;\n\t\tthis._closeReason = reason;\n\t\tthis._input.off(\"data\", this._onDataListener);\n\t\tthis._input.off(\"end\", this._onEndListener);\n\t\tthis._input.off(\"close\", this._onEndListener);\n\t\tthis._input.off(\"error\", this._onInputErrorListener);\n\t\tthis._output.off(\"error\", this._onOutputErrorListener);\n\t\tthis._onClose?.(reason);\n\t}\n\t_onData(chunk) {\n\t\tif (this._closed) return;\n\t\tconst bytes = typeof chunk === \"string\" ? Buffer.from(chunk, \"utf8\") : chunk;\n\t\tthis._residual = this._residual.length === 0 ? Buffer.from(bytes) : Buffer.concat([this._residual, bytes]);\n\t\twhile (!this._closed) {\n\t\t\tif (this._expectedLength === void 0) {\n\t\t\t\tconst headerEnd = this._residual.indexOf(HEADER_SEPARATOR);\n\t\t\t\tif (headerEnd < 0) {\n\t\t\t\t\tif (this._residual.length > this._maxHeaderBytes) this.close(`Invalid header-delimited frame: header exceeds ${this._maxHeaderBytes} bytes`);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (headerEnd + HEADER_SEPARATOR.length > this._maxHeaderBytes) {\n\t\t\t\t\tthis.close(`Invalid header-delimited frame: header exceeds ${this._maxHeaderBytes} bytes`);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\ttry {\n\t\t\t\t\tthis._expectedLength = parseHeaders(this._residual.subarray(0, headerEnd), this._maxContentLength);\n\t\t\t\t} catch (error) {\n\t\t\t\t\tthis.close(`Invalid header-delimited frame: ${error instanceof Error ? error.message : String(error)}`);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._residual = this._residual.subarray(headerEnd + HEADER_SEPARATOR.length);\n\t\t\t}\n\t\t\tif (this._residual.length < this._expectedLength) return;\n\t\t\tconst body = this._residual.subarray(0, this._expectedLength);\n\t\t\tthis._residual = this._residual.subarray(this._expectedLength);\n\t\t\tthis._expectedLength = void 0;\n\t\t\tlet parsed;\n\t\t\ttry {\n\t\t\t\tparsed = JSON.parse(body.toString(\"utf8\"));\n\t\t\t} catch (error) {\n\t\t\t\tthis.close(`Invalid header-delimited JSON payload: ${error instanceof Error ? error.message : String(error)}`);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis._deliver(parsed);\n\t\t}\n\t}\n\t_onEnd() {\n\t\tif (this._closed) return;\n\t\tthis.close(this._expectedLength !== void 0 || this._residual.length > 0 ? \"Truncated header-delimited frame\" : \"Header-delimited input closed\");\n\t}\n\t_deliver(message) {\n\t\tif (this._listener) {\n\t\t\tthis._listener(message);\n\t\t\treturn;\n\t\t}\n\t\tif (this._pending.length >= this._maxPendingMessages) {\n\t\t\tthis.close(`Header-delimited pending message limit ${this._maxPendingMessages} exceeded`);\n\t\t\treturn;\n\t\t}\n\t\tthis._pending.push(message);\n\t}\n};\nfunction parseHeaders(headerBytes, maxContentLength) {\n\tconst values = /* @__PURE__ */ new Map();\n\tfor (const line of headerBytes.toString(\"ascii\").split(\"\\r\\n\")) {\n\t\tconst colon = line.indexOf(\":\");\n\t\tif (colon <= 0) throw new Error(`malformed header ${JSON.stringify(line)}`);\n\t\tconst name = line.slice(0, colon).trim().toLowerCase();\n\t\tconst value = line.slice(colon + 1).trim();\n\t\tif (values.has(name)) throw new Error(`duplicate ${name} header`);\n\t\tvalues.set(name, value);\n\t}\n\tconst rawLength = values.get(\"content-length\");\n\tif (rawLength === void 0 || !/^(0|[1-9]\\d*)$/.test(rawLength)) throw new Error(\"missing or invalid Content-Length header\");\n\tconst length = Number(rawLength);\n\tif (!Number.isSafeInteger(length) || length > maxContentLength) throw new Error(`Content-Length exceeds ${maxContentLength} bytes`);\n\tconst contentType = values.get(\"content-type\");\n\tif (contentType !== void 0 && !isSupportedContentType(contentType)) throw new Error(`unsupported Content-Type ${JSON.stringify(contentType)}`);\n\treturn length;\n}\nfunction isSupportedContentType(value) {\n\tconst parts = value.split(\";\").map((part) => part.trim().toLowerCase());\n\treturn parts[0] === \"application/vscode-jsonrpc\" && parts.slice(1).every((part) => /^charset\\s*=\\s*\"?utf-?8\"?$/.test(part));\n}\nfunction positiveLimit(value, fallback, name) {\n\tconst result = value ?? fallback;\n\tif (!Number.isSafeInteger(result) || result <= 0) throw new Error(`${name} must be a positive integer`);\n\treturn result;\n}\n//#endregion\nexport { CapBag, CapabilityIssuanceError, Channel, ChannelConnector, DEFAULT_RPC_TIMEOUT_MS, EXTENSION_PREFIX, ErrorCode, HUBRPC_META_KEY, HUBRPC_SIGNATURE_KEY, HUBRPC_UNSIGNED_KEY, HeaderDelimitedTransport, INITIALIZE_METHOD, INITIALIZE_PROTOCOL_VERSION, INTERFACE_TEMPLATES_EXTENSION, InMemoryManagedIdentity, InMemoryManagedIdentityStorage, InterfaceDefinition, JsonRpcChannel, KEY_ID_PREFIX, KeypairIdentity, KeypairSigningIdentity, LINKRPC_ENDPOINT_VAR, LINKRPC_INITIALIZE_METHOD_ALIAS, LINKRPC_META_KEY, LINKRPC_SIGNATURE_KEY, LINKRPC_TOKEN_VAR, LINKRPC_UNSIGNED_KEY, LinkRpcConnection, MultiplexedTransport, NonCompliantServerError, NotificationType, OneShotCapStaging, PRINCIPAL_PREFIX, Principal, PrincipalWithStore, PublicSigningIdentity, PublicWrappingIdentity, RequestType, RpcError, RpcFailure, STREAM_METHOD, ServiceHandle, SigningSender, StreamControlReason, StreamControlType, StreamDir, TransportPair, WebSocketTransport, applicationError, assertSchemaReferences, attachCapabilities, bareInterfaceTarget, base64UrlToBytes, bytesToBase64Url, capBagFreshAt, capabilityFreshAt, capabilityPermits, componentSchemaName, componentSchemaRef, computeInterfaceHash, connectNdjson, connectToCmdStdio, connectToHub, connectTransports, createHubPrefixClaimer, createManagedIdentity, createManagedPrincipal, createMemoryPrincipal, createSchemaToZod, createSeededMemoryPrincipal, createSeededSigningIdentity, createSelfManagedPrincipal, createSelfManagedPrincipalFromFile, crypto_exports as crypto, defaultInterfaceTarget, defaultsInterface, defineInterface, defineInterfaceTemplate, directoryInterface, directoryWatchNever, exportStaticHubSchema, fileManagedIdentityStorage, formatEndpointUri, generateTsContract, generateTsInterface, getDelegationRootIds, getInterfaceTags, getKeyId, hasSignedCapabilityShape, identityInterface, identityStorageInterface, interfaceFromSchema, interfaceTarget, interfaceTemplateArgumentsEquivalent, interfaceTemplateMemberName, interfaceTemplatesEqual, invoke, isApplicationErrorValue, isAssignable, isHubEndpoint, isInterfaceTarget, isNotification, isRequest, isResponse, isRpcFailure, issueCapabilities, issueCapability, jcsCanonicalize, jcsCanonicalizeBytes, keyIdForPrincipal, keyIdForPublicKey, loadOrCreateIdentity, matchParams, matchesJsonSchema, materializeJsonSchema, methodNameToTarget, nodeInterface, normalizeJsonSchema, notificationType, openHubChannel, openStdioChannel, openWebSocket, parseEndpointUri, parseMethodName, parseStaticHubSchema, permissionMatchesTarget, permissionPermits, permits, prefix, prepareCapabilityIssuance, principalForPublicKey, publicKeyForKeyId, readSignature, registerHubPrefix, registerIdentityOnOverlay, registerLazyIdentityOnOverlay, requestType, requireObjectParams, resolveSigningKey, rpcError, runInitializeHandshake, schemaToZod, schemasInterface, serveOnStdio, serveOverHubWithReconnect, signCapability, signParams, signRpcCall, signedHash, signingDomainValue, signingInput, startEndpoint, streamInterface, stripLinkRpcWireMeta, toMethodSchema, topologyInterface, traceMessageTransport, trafficInterface, validateInterfaceTemplates, validateJsonSchema, verifyCall, verifyRpcCall, withRpcTimeout, withSignature, zParticipantDescriptor, zParticipantDescriptorSource, zRouteClaim, zServiceIdPattern, zTopologyGraph, zTopologyLink, zTopologyLinkEndpoint, zTopologyNode, zTopologyPort, zTopologyTransportEndpoint, zTopologyTransportInfo, zTrafficEvent, zTrafficOverflowEvent, zTrafficTransitEndpoint, zTrafficTransitEvent, zTrafficWatchResult, zodToSvcJsonSchema };\n\n//# sourceMappingURL=node.js.map"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { IDisposable } from '@vscode/observables';
|
|
2
2
|
import { type IObservable } from '@vscode/observables';
|
|
3
3
|
import { GitCommitId } from './gitCommitId.js';
|
|
4
|
+
import { AbsolutePath } from '../path.js';
|
|
4
5
|
export interface IGitCommitResolver extends IDisposable {
|
|
5
6
|
readonly ref: string;
|
|
6
7
|
readonly resolvedCommit: IObservable<GitCommitId>;
|
|
@@ -14,7 +15,7 @@ export declare class GitCommitResolver implements IGitCommitResolver {
|
|
|
14
15
|
private _disposed;
|
|
15
16
|
get resolvedCommit(): IObservable<GitCommitId>;
|
|
16
17
|
private constructor();
|
|
17
|
-
static create(gitRoot:
|
|
18
|
+
static create(gitRoot: AbsolutePath, ref: string): Promise<GitCommitResolver>;
|
|
18
19
|
private _startWatching;
|
|
19
20
|
private _scheduleResolve;
|
|
20
21
|
private _resolve;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gitCommitResolver.d.ts","sourceRoot":"","sources":["../../src/git/gitCommitResolver.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,KAAK,WAAW,EAAmB,MAAM,qBAAqB,CAAC;AACxE,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"gitCommitResolver.d.ts","sourceRoot":"","sources":["../../src/git/gitCommitResolver.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,KAAK,WAAW,EAAmB,MAAM,qBAAqB,CAAC;AACxE,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1C,MAAM,WAAW,kBAAmB,SAAQ,WAAW;IACtD,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,cAAc,EAAE,WAAW,CAAC,WAAW,CAAC,CAAC;CAClD;AAED,qBAAa,iBAAkB,YAAW,kBAAkB;IAW1D,QAAQ,CAAC,GAAG,EAAE,MAAM;IACpB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAX1B,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC;IACjC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAsB;IAChD,OAAO,CAAC,cAAc,CAA4C;IAClE,OAAO,CAAC,SAAS,CAAS;IAE1B,IAAI,cAAc,IAAI,WAAW,CAAC,WAAW,CAAC,CAE7C;IAED,OAAO;WAQM,MAAM,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAWnF,OAAO,CAAC,cAAc;IAoBtB,OAAO,CAAC,gBAAgB;YAMV,QAAQ;IAatB,OAAO,IAAI,IAAI;CAQf"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import * as fs from 'node:fs';
|
|
2
2
|
import * as path from 'node:path';
|
|
3
|
-
import '../
|
|
4
|
-
import { observableValue } from '../
|
|
5
|
-
import '../
|
|
6
|
-
import '../
|
|
7
|
-
import '../
|
|
8
|
-
import '../
|
|
3
|
+
import '../vscode-observables/observables/dist/observableInternal/index.js';
|
|
4
|
+
import { observableValue } from '../vscode-observables/observables/dist/observableInternal/observables/observableValue.js';
|
|
5
|
+
import '../vscode-observables/observables/dist/observableInternal/debugLocation.js';
|
|
6
|
+
import '../vscode-observables/observables/dist/observableInternal/observables/derived.js';
|
|
7
|
+
import '../vscode-observables/observables/dist/observableInternal/utils/utils.js';
|
|
8
|
+
import '../vscode-observables/observables/dist/observableInternal/observables/observableFromEvent.js';
|
|
9
9
|
import { GitCommitId } from './gitCommitId.js';
|
|
10
10
|
import { execGit, isConcreteCommitHash } from './gitUtils.js';
|
|
11
11
|
|
|
@@ -34,8 +34,8 @@ class GitCommitResolver {
|
|
|
34
34
|
}
|
|
35
35
|
_startWatching() {
|
|
36
36
|
const watchTargets = [
|
|
37
|
-
path.join(this._gitRoot, '.git', 'refs', 'heads', this.ref),
|
|
38
|
-
path.join(this._gitRoot, '.git', 'packed-refs'),
|
|
37
|
+
path.join(this._gitRoot.value, '.git', 'refs', 'heads', this.ref),
|
|
38
|
+
path.join(this._gitRoot.value, '.git', 'packed-refs'),
|
|
39
39
|
];
|
|
40
40
|
for (const target of watchTargets) {
|
|
41
41
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gitCommitResolver.js","sources":["../../src/git/gitCommitResolver.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"gitCommitResolver.js","sources":["../../src/git/gitCommitResolver.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { IDisposable } from '@vscode/observables';
|
|
2
2
|
import { type IObservable } from '@vscode/observables';
|
|
3
3
|
import { GitCommitId } from './gitCommitId.js';
|
|
4
|
+
import { AbsolutePath } from '../path.js';
|
|
4
5
|
/**
|
|
5
6
|
* Watches the git index and creates temporary commits representing the staged state.
|
|
6
7
|
* This enables worktree sessions checked out at "INDEX" — a snapshot of what's staged.
|
|
@@ -15,7 +16,7 @@ export declare class GitIndexResolver implements IDisposable {
|
|
|
15
16
|
get ref(): string;
|
|
16
17
|
get resolvedCommit(): IObservable<GitCommitId>;
|
|
17
18
|
private constructor();
|
|
18
|
-
static create(gitRoot:
|
|
19
|
+
static create(gitRoot: AbsolutePath): Promise<GitIndexResolver>;
|
|
19
20
|
private static _createIndexCommit;
|
|
20
21
|
private _startWatching;
|
|
21
22
|
private _scheduleResolve;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gitIndexResolver.d.ts","sourceRoot":"","sources":["../../src/git/gitIndexResolver.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,KAAK,WAAW,EAAmB,MAAM,qBAAqB,CAAC;AACxE,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"gitIndexResolver.d.ts","sourceRoot":"","sources":["../../src/git/gitIndexResolver.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,KAAK,WAAW,EAAmB,MAAM,qBAAqB,CAAC;AACxE,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1C;;;GAGG;AACH,qBAAa,gBAAiB,YAAW,WAAW;IAYlD,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAX1B,MAAM,CAAC,QAAQ,CAAC,SAAS,WAAW;IAEpC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC;IACjC,OAAO,CAAC,QAAQ,CAA2B;IAC3C,OAAO,CAAC,cAAc,CAA4C;IAClE,OAAO,CAAC,SAAS,CAAS;IAE1B,IAAI,GAAG,IAAI,MAAM,CAAuC;IACxD,IAAI,cAAc,IAAI,WAAW,CAAC,WAAW,CAAC,CAAiC;IAE/E,OAAO;WAOM,MAAM,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,gBAAgB,CAAC;mBAOhD,kBAAkB;IAWvC,OAAO,CAAC,cAAc;IAYtB,OAAO,CAAC,gBAAgB;YAMV,QAAQ;IAYtB,OAAO,IAAI,IAAI;CAMf"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import * as fs from 'node:fs';
|
|
2
2
|
import * as path from 'node:path';
|
|
3
|
-
import '../
|
|
4
|
-
import { observableValue } from '../
|
|
5
|
-
import '../
|
|
6
|
-
import '../
|
|
7
|
-
import '../
|
|
8
|
-
import '../
|
|
3
|
+
import '../vscode-observables/observables/dist/observableInternal/index.js';
|
|
4
|
+
import { observableValue } from '../vscode-observables/observables/dist/observableInternal/observables/observableValue.js';
|
|
5
|
+
import '../vscode-observables/observables/dist/observableInternal/debugLocation.js';
|
|
6
|
+
import '../vscode-observables/observables/dist/observableInternal/observables/derived.js';
|
|
7
|
+
import '../vscode-observables/observables/dist/observableInternal/utils/utils.js';
|
|
8
|
+
import '../vscode-observables/observables/dist/observableInternal/observables/observableFromEvent.js';
|
|
9
9
|
import { GitCommitId } from './gitCommitId.js';
|
|
10
10
|
import { execGit } from './gitUtils.js';
|
|
11
11
|
|
|
@@ -43,7 +43,7 @@ class GitIndexResolver {
|
|
|
43
43
|
return new GitCommitId(commitHash);
|
|
44
44
|
}
|
|
45
45
|
_startWatching() {
|
|
46
|
-
const indexPath = path.join(this._gitRoot, '.git', 'index');
|
|
46
|
+
const indexPath = path.join(this._gitRoot.value, '.git', 'index');
|
|
47
47
|
try {
|
|
48
48
|
this._watcher = fs.watch(indexPath, { persistent: false }, () => {
|
|
49
49
|
this._scheduleResolve();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gitIndexResolver.js","sources":["../../src/git/gitIndexResolver.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"gitIndexResolver.js","sources":["../../src/git/gitIndexResolver.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
package/dist/git/gitService.d.ts
CHANGED
|
@@ -3,18 +3,19 @@ import type { IGitCommitResolver } from './gitCommitResolver.js';
|
|
|
3
3
|
import { GitIndexResolver } from './gitIndexResolver.js';
|
|
4
4
|
import { type GitWorktreeManager } from './gitWorktreeManager.js';
|
|
5
5
|
import { GitCommitId } from './gitCommitId.js';
|
|
6
|
+
import { AbsolutePath } from '../path.js';
|
|
6
7
|
export interface IGitService {
|
|
7
|
-
getRootRepoFromDir(fromDir:
|
|
8
|
+
getRootRepoFromDir(fromDir: AbsolutePath): Promise<IGitRepo>;
|
|
8
9
|
}
|
|
9
10
|
export interface IGitRepo extends IDisposable {
|
|
10
|
-
readonly gitRoot:
|
|
11
|
+
readonly gitRoot: AbsolutePath;
|
|
11
12
|
readonly worktrees: GitWorktreeManager;
|
|
12
13
|
createCommitResolver(ref: string): Promise<IGitCommitResolver>;
|
|
13
14
|
createIndexResolver(): Promise<GitIndexResolver>;
|
|
14
15
|
resolveRef(ref: string): Promise<GitCommitId>;
|
|
15
|
-
worktreeRootPath():
|
|
16
|
+
worktreeRootPath(): AbsolutePath;
|
|
16
17
|
}
|
|
17
18
|
export declare class GitService implements IGitService {
|
|
18
|
-
getRootRepoFromDir(fromDir:
|
|
19
|
+
getRootRepoFromDir(fromDir: AbsolutePath): Promise<IGitRepo>;
|
|
19
20
|
}
|
|
20
21
|
//# sourceMappingURL=gitService.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gitService.d.ts","sourceRoot":"","sources":["../../src/git/gitService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAEjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,KAAK,kBAAkB,EAA6B,MAAM,yBAAyB,CAAC;AAE7F,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"gitService.d.ts","sourceRoot":"","sources":["../../src/git/gitService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAEjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,KAAK,kBAAkB,EAA6B,MAAM,yBAAyB,CAAC;AAE7F,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1C,MAAM,WAAW,WAAW;IAC3B,kBAAkB,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;CAC7D;AAED,MAAM,WAAW,QAAS,SAAQ,WAAW;IAC5C,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC;IAC/B,QAAQ,CAAC,SAAS,EAAE,kBAAkB,CAAC;IACvC,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAC/D,mBAAmB,IAAI,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACjD,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAC9C,gBAAgB,IAAI,YAAY,CAAC;CACjC;AAED,qBAAa,UAAW,YAAW,WAAW;IACvC,kBAAkB,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC;CAIlE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gitService.js","sources":["../../src/git/gitService.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"gitService.js","sources":["../../src/git/gitService.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;MAsBa,UAAU,CAAA;IACtB,MAAM,kBAAkB,CAAC,OAAqB,EAAA;AAC7C,QAAA,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC;AACzC,QAAA,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;IAC5B;AACA;AAED,MAAM,OAAO,CAAA;AAIS,IAAA,OAAA;AAHZ,IAAA,SAAS;AACD,IAAA,UAAU,GAAG,IAAI,GAAG,EAAsB;AAE3D,IAAA,WAAA,CAAqB,OAAqB,EAAA;QAArB,IAAA,CAAA,OAAO,GAAP,OAAO;QAC3B,IAAI,CAAC,SAAS,GAAG,IAAI,yBAAyB,CAAC,OAAO,CAAC;IACxD;IAEA,MAAM,oBAAoB,CAAC,GAAW,EAAA;AACrC,QAAA,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC;AAClE,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC;AAC7B,QAAA,OAAO,QAAQ;IAChB;AAEA,IAAA,MAAM,mBAAmB,GAAA;QACxB,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;AAC5D,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC;AAC7B,QAAA,OAAO,QAAQ;IAChB;IAEA,MAAM,UAAU,CAAC,GAAW,EAAA;QAC3B,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC;AAChD,QAAA,OAAO,IAAI,WAAW,CAAC,IAAI,CAAC;IAC7B;IAEA,gBAAgB,GAAA;AACf,QAAA,OAAO,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC;IACtC;IAEA,OAAO,GAAA;AACN,QAAA,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,UAAU,EAAE;YACvC,QAAQ,CAAC,OAAO,EAAE;QACnB;AACA,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE;IACxB;AACA;;;;"}
|
package/dist/git/gitUtils.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
export declare function
|
|
3
|
-
export declare function
|
|
1
|
+
import { AbsolutePath } from '../path.js';
|
|
2
|
+
export declare function getGitRoot(fromDir: AbsolutePath): Promise<AbsolutePath>;
|
|
3
|
+
export declare function resolveRef(gitRoot: AbsolutePath, ref: string): Promise<string>;
|
|
4
|
+
export declare function getMergeBase(gitRoot: AbsolutePath, ref1: string, ref2: string): Promise<string>;
|
|
4
5
|
export declare function isConcreteCommitHash(ref: string): boolean;
|
|
5
|
-
export declare function worktreeRootPath(gitRoot:
|
|
6
|
-
export declare function execGit(cwd:
|
|
6
|
+
export declare function worktreeRootPath(gitRoot: AbsolutePath): AbsolutePath;
|
|
7
|
+
export declare function execGit(cwd: AbsolutePath, args: readonly string[]): Promise<string>;
|
|
7
8
|
//# sourceMappingURL=gitUtils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gitUtils.d.ts","sourceRoot":"","sources":["../../src/git/gitUtils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"gitUtils.d.ts","sourceRoot":"","sources":["../../src/git/gitUtils.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1C,wBAAsB,UAAU,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,CAG7E;AAED,wBAAsB,UAAU,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAGpF;AAED,wBAAsB,YAAY,CAAC,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAGrG;AAED,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAEzD;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,YAAY,GAAG,YAAY,CAGpE;AAED,wBAAgB,OAAO,CAAC,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAUnF"}
|
package/dist/git/gitUtils.js
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { execFile } from 'node:child_process';
|
|
2
2
|
import * as path from 'node:path';
|
|
3
|
+
import { AbsolutePath } from '../path.js';
|
|
3
4
|
|
|
4
5
|
async function getGitRoot(fromDir) {
|
|
5
6
|
const output = await execGit(fromDir, ['rev-parse', '--show-toplevel']);
|
|
6
|
-
return output.trim();
|
|
7
|
+
return AbsolutePath.from(output.trim());
|
|
7
8
|
}
|
|
8
9
|
async function resolveRef(gitRoot, ref) {
|
|
9
10
|
const output = await execGit(gitRoot, ['rev-parse', ref]);
|
|
@@ -17,12 +18,12 @@ function isConcreteCommitHash(ref) {
|
|
|
17
18
|
return /^[0-9a-f]{40}$/i.test(ref);
|
|
18
19
|
}
|
|
19
20
|
function worktreeRootPath(gitRoot) {
|
|
20
|
-
const repoName = path.basename(gitRoot);
|
|
21
|
-
return path.resolve(gitRoot, '..', `${repoName}.worktrees`);
|
|
21
|
+
const repoName = path.basename(gitRoot.value);
|
|
22
|
+
return AbsolutePath.from(path.resolve(gitRoot.value, '..', `${repoName}.worktrees`));
|
|
22
23
|
}
|
|
23
24
|
function execGit(cwd, args) {
|
|
24
25
|
return new Promise((resolve, reject) => {
|
|
25
|
-
execFile('git', ['-C', cwd, ...args], { encoding: 'utf-8', windowsHide: true }, (err, stdout, stderr) => {
|
|
26
|
+
execFile('git', ['-C', cwd.value, ...args], { encoding: 'utf-8', windowsHide: true }, (err, stdout, stderr) => {
|
|
26
27
|
if (err) {
|
|
27
28
|
reject(new Error(`git ${args.join(' ')} failed: ${stderr || err.message}`));
|
|
28
29
|
}
|
package/dist/git/gitUtils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gitUtils.js","sources":["../../src/git/gitUtils.ts"],"sourcesContent":[null],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"gitUtils.js","sources":["../../src/git/gitUtils.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAIO,eAAe,UAAU,CAAC,OAAqB,EAAA;AACrD,IAAA,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC,WAAW,EAAE,iBAAiB,CAAC,CAAC;IACvE,OAAO,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;AACxC;AAEO,eAAe,UAAU,CAAC,OAAqB,EAAE,GAAW,EAAA;AAClE,IAAA,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;AACzD,IAAA,OAAO,MAAM,CAAC,IAAI,EAAE;AACrB;AAEO,eAAe,YAAY,CAAC,OAAqB,EAAE,IAAY,EAAE,IAAY,EAAA;AACnF,IAAA,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC,YAAY,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AACjE,IAAA,OAAO,MAAM,CAAC,IAAI,EAAE;AACrB;AAEM,SAAU,oBAAoB,CAAC,GAAW,EAAA;AAC/C,IAAA,OAAO,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC;AACnC;AAEM,SAAU,gBAAgB,CAAC,OAAqB,EAAA;IACrD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC;AAC7C,IAAA,OAAO,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,CAAA,EAAG,QAAQ,CAAA,UAAA,CAAY,CAAC,CAAC;AACrF;AAEM,SAAU,OAAO,CAAC,GAAiB,EAAE,IAAuB,EAAA;IACjE,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;AACtC,QAAA,QAAQ,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,KAAI;YAC7G,IAAI,GAAG,EAAE;gBACR,MAAM,CAAC,IAAI,KAAK,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA,SAAA,EAAY,MAAM,IAAI,GAAG,CAAC,OAAO,CAAA,CAAE,CAAC,CAAC;YAC5E;iBAAO;gBACN,OAAO,CAAC,MAAM,CAAC;YAChB;AACD,QAAA,CAAC,CAAC;AACH,IAAA,CAAC,CAAC;AACH;;;;"}
|
|
@@ -1,29 +1,30 @@
|
|
|
1
1
|
import { GitCommitId } from './gitCommitId.js';
|
|
2
|
+
import { AbsolutePath } from '../path.js';
|
|
2
3
|
export interface GitWorktreeInfo {
|
|
3
|
-
readonly path:
|
|
4
|
+
readonly path: AbsolutePath;
|
|
4
5
|
readonly checkedOutCommit: GitCommitId;
|
|
5
6
|
readonly isDirty: boolean;
|
|
6
7
|
readonly dirtyFiles: readonly string[];
|
|
7
8
|
}
|
|
8
9
|
export declare class DirtyWorktreeError extends Error {
|
|
9
|
-
readonly worktreePath:
|
|
10
|
+
readonly worktreePath: AbsolutePath;
|
|
10
11
|
readonly dirtyFiles: readonly string[];
|
|
11
|
-
constructor(worktreePath:
|
|
12
|
+
constructor(worktreePath: AbsolutePath, dirtyFiles: readonly string[], operation: string);
|
|
12
13
|
}
|
|
13
14
|
export interface GitWorktreeManager {
|
|
14
|
-
create(worktreePath:
|
|
15
|
-
remove(worktreePath:
|
|
16
|
-
checkout(worktreePath:
|
|
17
|
-
info(worktreePath:
|
|
18
|
-
list(worktreeRoot:
|
|
15
|
+
create(worktreePath: AbsolutePath, commit: GitCommitId): Promise<GitWorktreeInfo>;
|
|
16
|
+
remove(worktreePath: AbsolutePath): Promise<void>;
|
|
17
|
+
checkout(worktreePath: AbsolutePath, commit: GitCommitId): Promise<GitWorktreeInfo>;
|
|
18
|
+
info(worktreePath: AbsolutePath): Promise<GitWorktreeInfo | undefined>;
|
|
19
|
+
list(worktreeRoot: AbsolutePath): Promise<readonly GitWorktreeInfo[]>;
|
|
19
20
|
}
|
|
20
21
|
export declare class DefaultGitWorktreeManager implements GitWorktreeManager {
|
|
21
22
|
private readonly _gitRoot;
|
|
22
|
-
constructor(_gitRoot:
|
|
23
|
-
create(worktreePath:
|
|
24
|
-
remove(worktreePath:
|
|
25
|
-
checkout(worktreePath:
|
|
26
|
-
info(worktreePath:
|
|
27
|
-
list(worktreeRoot:
|
|
23
|
+
constructor(_gitRoot: AbsolutePath);
|
|
24
|
+
create(worktreePath: AbsolutePath, commit: GitCommitId): Promise<GitWorktreeInfo>;
|
|
25
|
+
remove(worktreePath: AbsolutePath): Promise<void>;
|
|
26
|
+
checkout(worktreePath: AbsolutePath, commit: GitCommitId): Promise<GitWorktreeInfo>;
|
|
27
|
+
info(worktreePath: AbsolutePath): Promise<GitWorktreeInfo | undefined>;
|
|
28
|
+
list(worktreeRoot: AbsolutePath): Promise<readonly GitWorktreeInfo[]>;
|
|
28
29
|
}
|
|
29
30
|
//# sourceMappingURL=gitWorktreeManager.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gitWorktreeManager.d.ts","sourceRoot":"","sources":["../../src/git/gitWorktreeManager.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"gitWorktreeManager.d.ts","sourceRoot":"","sources":["../../src/git/gitWorktreeManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1C,MAAM,WAAW,eAAe;IAC/B,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAC5B,QAAQ,CAAC,gBAAgB,EAAE,WAAW,CAAC;IACvC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;CACvC;AAED,qBAAa,kBAAmB,SAAQ,KAAK;IAE3C,QAAQ,CAAC,YAAY,EAAE,YAAY;IACnC,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE;gBAD7B,YAAY,EAAE,YAAY,EAC1B,UAAU,EAAE,SAAS,MAAM,EAAE,EACtC,SAAS,EAAE,MAAM;CAQlB;AAED,MAAM,WAAW,kBAAkB;IAClC,MAAM,CAAC,YAAY,EAAE,YAAY,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IAClF,MAAM,CAAC,YAAY,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClD,QAAQ,CAAC,YAAY,EAAE,YAAY,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IACpF,IAAI,CAAC,YAAY,EAAE,YAAY,GAAG,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC,CAAC;IACvE,IAAI,CAAC,YAAY,EAAE,YAAY,GAAG,OAAO,CAAC,SAAS,eAAe,EAAE,CAAC,CAAC;CACtE;AAED,qBAAa,yBAA0B,YAAW,kBAAkB;IACvD,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBAAR,QAAQ,EAAE,YAAY;IAE7C,MAAM,CAAC,YAAY,EAAE,YAAY,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,eAAe,CAAC;IASjF,MAAM,CAAC,YAAY,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAWjD,QAAQ,CAAC,YAAY,EAAE,YAAY,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,eAAe,CAAC;IAenF,IAAI,CAAC,YAAY,EAAE,YAAY,GAAG,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC;IAetE,IAAI,CAAC,YAAY,EAAE,YAAY,GAAG,OAAO,CAAC,SAAS,eAAe,EAAE,CAAC;CAoC3E"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import * as path from 'node:path';
|
|
2
1
|
import { GitCommitId } from './gitCommitId.js';
|
|
3
2
|
import { execGit } from './gitUtils.js';
|
|
3
|
+
import { AbsolutePath } from '../path.js';
|
|
4
4
|
|
|
5
5
|
class DirtyWorktreeError extends Error {
|
|
6
6
|
worktreePath;
|
|
@@ -19,7 +19,7 @@ class DefaultGitWorktreeManager {
|
|
|
19
19
|
this._gitRoot = _gitRoot;
|
|
20
20
|
}
|
|
21
21
|
async create(worktreePath, commit) {
|
|
22
|
-
await execGit(this._gitRoot, ['worktree', 'add', worktreePath, commit.hash, '--detach']);
|
|
22
|
+
await execGit(this._gitRoot, ['worktree', 'add', worktreePath.value, commit.hash, '--detach']);
|
|
23
23
|
const result = await this.info(worktreePath);
|
|
24
24
|
if (!result) {
|
|
25
25
|
throw new Error(`Worktree was not created at: ${worktreePath}`);
|
|
@@ -34,7 +34,7 @@ class DefaultGitWorktreeManager {
|
|
|
34
34
|
if (current.isDirty) {
|
|
35
35
|
throw new DirtyWorktreeError(worktreePath, current.dirtyFiles, 'remove');
|
|
36
36
|
}
|
|
37
|
-
await execGit(this._gitRoot, ['worktree', 'remove', worktreePath]);
|
|
37
|
+
await execGit(this._gitRoot, ['worktree', 'remove', worktreePath.value]);
|
|
38
38
|
}
|
|
39
39
|
async checkout(worktreePath, commit) {
|
|
40
40
|
const current = await this.info(worktreePath);
|
|
@@ -53,7 +53,7 @@ class DefaultGitWorktreeManager {
|
|
|
53
53
|
async info(worktreePath) {
|
|
54
54
|
try {
|
|
55
55
|
const head = (await execGit(worktreePath, ['rev-parse', 'HEAD'])).trim();
|
|
56
|
-
const dirtyFiles = parsePorcelainStatus(
|
|
56
|
+
const dirtyFiles = parsePorcelainStatus(await execGit(worktreePath, ['status', '--porcelain']));
|
|
57
57
|
return {
|
|
58
58
|
path: worktreePath,
|
|
59
59
|
checkedOutCommit: new GitCommitId(head),
|
|
@@ -81,19 +81,18 @@ class DefaultGitWorktreeManager {
|
|
|
81
81
|
head = line.slice('HEAD '.length);
|
|
82
82
|
}
|
|
83
83
|
}
|
|
84
|
-
if (entryPath && head && entryPath.startsWith(worktreeRoot)) {
|
|
85
|
-
|
|
84
|
+
if (entryPath && head && entryPath.startsWith(worktreeRoot.value)) {
|
|
85
|
+
const absEntryPath = AbsolutePath.from(entryPath);
|
|
86
86
|
try {
|
|
87
|
-
const dirtyFiles = parsePorcelainStatus(
|
|
87
|
+
const dirtyFiles = parsePorcelainStatus(await execGit(absEntryPath, ['status', '--porcelain']));
|
|
88
88
|
entries.push({
|
|
89
|
-
path:
|
|
89
|
+
path: absEntryPath,
|
|
90
90
|
checkedOutCommit: new GitCommitId(head),
|
|
91
91
|
isDirty: dirtyFiles.length > 0,
|
|
92
92
|
dirtyFiles,
|
|
93
93
|
});
|
|
94
94
|
}
|
|
95
95
|
catch {
|
|
96
|
-
// If we can't check, skip this entry
|
|
97
96
|
continue;
|
|
98
97
|
}
|
|
99
98
|
}
|
|
@@ -101,7 +100,7 @@ class DefaultGitWorktreeManager {
|
|
|
101
100
|
return entries;
|
|
102
101
|
}
|
|
103
102
|
}
|
|
104
|
-
function parsePorcelainStatus(
|
|
103
|
+
function parsePorcelainStatus(output) {
|
|
105
104
|
// git status --porcelain format: "XY filename" where X=index status, Y=worktree status, then a space.
|
|
106
105
|
const results = [];
|
|
107
106
|
for (const raw of output.split('\n')) {
|
|
@@ -114,7 +113,7 @@ function parsePorcelainStatus(worktreePath, output) {
|
|
|
114
113
|
if (!match) {
|
|
115
114
|
throw new Error(`Unexpected git status --porcelain line: ${JSON.stringify(line)}`);
|
|
116
115
|
}
|
|
117
|
-
results.push(
|
|
116
|
+
results.push(match[3]);
|
|
118
117
|
}
|
|
119
118
|
return results;
|
|
120
119
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gitWorktreeManager.js","sources":["../../src/git/gitWorktreeManager.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAWM,MAAO,kBAAmB,SAAQ,KAAK,CAAA;AAElC,IAAA,YAAA;AACA,IAAA,UAAA;AAFV,IAAA,WAAA,CACU,
|
|
1
|
+
{"version":3,"file":"gitWorktreeManager.js","sources":["../../src/git/gitWorktreeManager.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
package/dist/git/testUtils.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { GitCommitId } from './gitCommitId.js';
|
|
2
|
+
import { AbsolutePath } from '../path.js';
|
|
2
3
|
export declare class TempGitRepo {
|
|
3
|
-
readonly root:
|
|
4
|
+
readonly root: AbsolutePath;
|
|
4
5
|
private constructor();
|
|
5
6
|
static create(): Promise<TempGitRepo>;
|
|
6
7
|
writeFile(relativePath: string, content: string): Promise<string>;
|