@loucompanion/forge-bridge 0.1.3-dev.fbe15023cdfe → 0.1.4-dev.9445952e33ba

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.
Files changed (162) hide show
  1. package/README.md +88 -2
  2. package/dist/bridge/bridge-chat.types.d.ts +111 -0
  3. package/dist/bridge/bridge-chat.types.js +401 -0
  4. package/dist/bridge/bridge.base.d.ts +4 -1
  5. package/dist/bridge/bridge.service.d.ts +72 -3
  6. package/dist/bridge/bridge.service.js +1563 -152
  7. package/dist/bridge/bridge.types.d.ts +46 -1
  8. package/dist/bridge/dispatch-result-outbox.d.ts +25 -0
  9. package/dist/bridge/dispatch-result-outbox.js +62 -0
  10. package/dist/bridge/dispatch-result-worker.d.ts +2 -0
  11. package/dist/bridge/dispatch-result-worker.js +122 -0
  12. package/dist/bridge/internals.d.ts +2 -0
  13. package/dist/bridge/internals.js +1 -0
  14. package/dist/bridge/readiness-result-outbox.d.ts +21 -0
  15. package/dist/bridge/readiness-result-outbox.js +54 -0
  16. package/dist/bridge/readiness-result-worker.d.ts +2 -0
  17. package/dist/bridge/readiness-result-worker.js +121 -0
  18. package/dist/bridge/runner-host-capabilities.d.ts +15 -0
  19. package/dist/bridge/runner-host-capabilities.js +93 -0
  20. package/dist/cleanup/cleanup.service.d.ts +1 -0
  21. package/dist/cleanup/cleanup.service.js +70 -9
  22. package/dist/cli/cli.help.js +2 -2
  23. package/dist/cli/cli.service.d.ts +14 -6
  24. package/dist/cli/cli.service.js +75 -16
  25. package/dist/cli/local-config.d.ts +1 -0
  26. package/dist/cli/local-config.js +4 -0
  27. package/dist/runtime/aspnet-runtime-prebuild.d.ts +36 -0
  28. package/dist/runtime/aspnet-runtime-prebuild.js +341 -0
  29. package/dist/runtime/attempt-database-broker.d.ts +89 -0
  30. package/dist/runtime/attempt-database-broker.js +390 -0
  31. package/dist/runtime/attempt-node-runtime-launcher.d.ts +2 -1
  32. package/dist/runtime/attempt-node-runtime-launcher.js +57 -18
  33. package/dist/runtime/attempt-path-operation.d.ts +21 -0
  34. package/dist/runtime/attempt-path-operation.js +94 -0
  35. package/dist/runtime/attempt-private-directory.d.ts +6 -0
  36. package/dist/runtime/attempt-private-directory.js +54 -0
  37. package/dist/runtime/attempt-process-supervisor.d.ts +11 -0
  38. package/dist/runtime/attempt-process-supervisor.js +67 -20
  39. package/dist/runtime/canonical-source-file.d.ts +3 -0
  40. package/dist/runtime/canonical-source-file.js +54 -0
  41. package/dist/runtime/docker-engine-probe.d.ts +90 -0
  42. package/dist/runtime/docker-engine-probe.js +333 -0
  43. package/dist/runtime/generated-output-reset.d.ts +10 -0
  44. package/dist/runtime/generated-output-reset.js +62 -8
  45. package/dist/runtime/host-database-capability-boundary.d.ts +16 -0
  46. package/dist/runtime/host-database-capability-boundary.js +62 -0
  47. package/dist/runtime/host-diagnostics.d.ts +11 -0
  48. package/dist/runtime/host-diagnostics.js +191 -0
  49. package/dist/runtime/host-execution-root.d.ts +4 -0
  50. package/dist/runtime/host-execution-root.js +39 -0
  51. package/dist/runtime/host-listener-inspector.d.ts +8 -1
  52. package/dist/runtime/host-listener-inspector.js +121 -60
  53. package/dist/runtime/host-runtime-contract.d.ts +12 -1
  54. package/dist/runtime/host-runtime-contract.js +168 -55
  55. package/dist/runtime/host-runtime-lease.d.ts +92 -8
  56. package/dist/runtime/host-runtime-lease.js +1141 -114
  57. package/dist/runtime/host-runtime-promotion.d.ts +12 -3
  58. package/dist/runtime/host-runtime-promotion.js +59 -12
  59. package/dist/runtime/memory-capacity.d.ts +70 -0
  60. package/dist/runtime/memory-capacity.js +123 -0
  61. package/dist/runtime/native-test-postgres-fallback.d.ts +25 -0
  62. package/dist/runtime/native-test-postgres-fallback.js +91 -0
  63. package/dist/runtime/node-host-runtime-adapter.d.ts +3 -0
  64. package/dist/runtime/node-host-runtime-adapter.js +28 -11
  65. package/dist/runtime/pinned-directory-process.d.ts +9 -0
  66. package/dist/runtime/pinned-directory-process.js +61 -0
  67. package/dist/runtime/pinned-source-directory.d.ts +17 -0
  68. package/dist/runtime/pinned-source-directory.js +94 -0
  69. package/dist/runtime/playwright-host-runtime-adapter.d.ts +1 -0
  70. package/dist/runtime/playwright-host-runtime-adapter.js +53 -5
  71. package/dist/runtime/prepared-runtime-identity.d.ts +6 -0
  72. package/dist/runtime/prepared-runtime-identity.js +218 -0
  73. package/dist/runtime/prepared-runtime-readiness.d.ts +30 -0
  74. package/dist/runtime/prepared-runtime-readiness.js +285 -0
  75. package/dist/runtime/runtime-isolation-lease.js +4 -1
  76. package/dist/runtime/workspace-resource-estimator.d.ts +17 -0
  77. package/dist/runtime/workspace-resource-estimator.js +174 -0
  78. package/dist/sandbox/preflight.d.ts +31 -1
  79. package/dist/sandbox/preflight.js +237 -51
  80. package/dist/sandbox/repository-lock.d.ts +2 -1
  81. package/dist/sandbox/repository-lock.js +17 -8
  82. package/dist/sandbox/runtime.d.ts +6 -1
  83. package/dist/sandbox/runtime.js +132 -103
  84. package/dist/sandbox/sandbox.types.d.ts +7 -0
  85. package/dist/sandbox/workspace.service.js +2 -0
  86. package/dist/session/managed-attempt-tools.d.ts +17 -1
  87. package/dist/session/managed-attempt-tools.js +485 -31
  88. package/dist/session/managed-build-coordinator.d.ts +5 -0
  89. package/dist/session/managed-build-coordinator.js +105 -0
  90. package/dist/session/managed-build-receipt.d.ts +21 -0
  91. package/dist/session/managed-build-receipt.js +337 -0
  92. package/dist/session/managed-verification-timeouts.d.ts +8 -0
  93. package/dist/session/managed-verification-timeouts.js +17 -0
  94. package/dist/session/phase-completion.artifacts.d.ts +17 -0
  95. package/dist/session/phase-completion.artifacts.js +224 -22
  96. package/dist/session/phase-completion.d.ts +11 -1
  97. package/dist/session/phase-completion.helpers.d.ts +5 -0
  98. package/dist/session/phase-completion.helpers.js +30 -7
  99. package/dist/session/phase-completion.js +14 -3
  100. package/dist/session/phase-completion.prompts.js +17 -18
  101. package/dist/session/phase-completion.runtime.d.ts +3 -1
  102. package/dist/session/phase-completion.runtime.js +126 -17
  103. package/dist/session/phase-completion.schemas.js +49 -2
  104. package/dist/session/phase-completion.validation.d.ts +1 -0
  105. package/dist/session/phase-completion.validation.js +111 -21
  106. package/dist/session/pre-publication-validation.d.ts +75 -0
  107. package/dist/session/pre-publication-validation.js +661 -0
  108. package/dist/session/provider-cli/bridge-cli.conformance-fixtures.d.ts +72 -0
  109. package/dist/session/provider-cli/bridge-cli.conformance-fixtures.js +462 -0
  110. package/dist/session/provider-cli/ci-repair-readiness.d.ts +8 -0
  111. package/dist/session/provider-cli/ci-repair-readiness.js +23 -3
  112. package/dist/session/provider-cli/provider-cli.artifacts.d.ts +4 -2
  113. package/dist/session/provider-cli/provider-cli.artifacts.js +47 -13
  114. package/dist/session/provider-cli/provider-cli.deterministic.js +34 -2
  115. package/dist/session/provider-cli/provider-cli.process.d.ts +51 -0
  116. package/dist/session/provider-cli/provider-cli.process.js +422 -22
  117. package/dist/session/provider-cli/provider-cli.prompts.d.ts +5 -0
  118. package/dist/session/provider-cli/provider-cli.prompts.js +136 -16
  119. package/dist/session/provider-cli/provider-cli.repair-epoch.d.ts +6 -0
  120. package/dist/session/provider-cli/provider-cli.repair-epoch.js +11 -0
  121. package/dist/session/provider-cli/provider-cli.runtime.d.ts +14 -1
  122. package/dist/session/provider-cli/provider-cli.runtime.js +54 -3
  123. package/dist/session/provider-cli/provider-cli.service.d.ts +30 -5
  124. package/dist/session/provider-cli/provider-cli.service.js +773 -69
  125. package/dist/session/provider-cli/provider-cli.types.d.ts +2 -0
  126. package/dist/session/provider-cli/provider-output-state.d.ts +10 -0
  127. package/dist/session/provider-cli/provider-output-state.js +361 -17
  128. package/dist/session/provider-cli/provider-usage.d.ts +7 -0
  129. package/dist/session/provider-cli/provider-usage.js +28 -5
  130. package/dist/session/session-redaction.js +434 -9
  131. package/dist/session/session.service.js +145 -23
  132. package/dist/session/session.types.d.ts +147 -2
  133. package/dist/session/session.types.js +587 -7
  134. package/dist/session/unreferenced-exports.d.ts +12 -0
  135. package/dist/session/unreferenced-exports.js +59 -0
  136. package/dist/shared/format/format-bytes.d.ts +1 -0
  137. package/dist/shared/format/format-bytes.js +9 -0
  138. package/dist/shared/git/git.js +2 -1
  139. package/dist/shared/path/path.d.ts +1 -0
  140. package/dist/shared/path/path.js +18 -0
  141. package/dist/shared/process/dotnet-toolchain.d.ts +17 -0
  142. package/dist/shared/process/dotnet-toolchain.js +307 -0
  143. package/dist/shared/process/host-process-supervisor.d.ts +2 -0
  144. package/dist/shared/process/host-process-supervisor.js +57 -9
  145. package/dist/shared/process/process.d.ts +2 -0
  146. package/dist/shared/process/process.js +12 -7
  147. package/dist/shared/provider-capabilities.d.ts +3 -0
  148. package/dist/shared/provider-capabilities.js +85 -0
  149. package/dist/shared/redaction/redaction.d.ts +1 -0
  150. package/dist/shared/redaction/redaction.js +39 -3
  151. package/dist/version.d.ts +1 -1
  152. package/dist/version.js +1 -1
  153. package/dist/worktree/dependency-warmer.d.ts +41 -9
  154. package/dist/worktree/dependency-warmer.js +497 -22
  155. package/dist/worktree/index.d.ts +1 -1
  156. package/dist/worktree/story-qa-reference-hydrator.d.ts +4 -0
  157. package/dist/worktree/story-qa-reference-hydrator.js +253 -0
  158. package/dist/worktree/worktree.service.d.ts +7 -0
  159. package/dist/worktree/worktree.service.js +253 -21
  160. package/dist/worktree/worktree.types.d.ts +7 -1
  161. package/package.json +7 -5
  162. package/runtime/windows-job-supervisor.ps1 +380 -14
@@ -1,3 +1,88 @@
1
+ import { bridgeChatProtocolVersion, normalizeBridgeChatCapability, unavailableBridgeChatCapability, } from "../bridge/bridge-chat.types.js";
2
+ const defaultBridgeChatMaxMessageBytes = 128 * 1024;
3
+ const defaultBridgeChatMaxContextRefs = 8;
1
4
  export function supportsDraftImageAttachmentsFor(cliProviders) {
2
5
  return cliProviders.some((provider) => provider.trim().toLowerCase() === "codex");
3
6
  }
7
+ export function bridgeChatCapabilityFor(cliProviders, providerStatuses, baseCapability) {
8
+ const base = normalizeBridgeChatCapability(baseCapability ?? unavailableBridgeChatCapability());
9
+ if (base.protocolVersion !== bridgeChatProtocolVersion) {
10
+ return base;
11
+ }
12
+ const providers = chatProviderEntries(cliProviders, providerStatuses);
13
+ const usableProviders = providers.filter((provider) => provider.status?.signedIn !== false);
14
+ if (usableProviders.length === 0) {
15
+ return unavailableBridgeChatCapability(bridgeChatProtocolVersion, providers.length === 0 ? "no_cli_providers" : "no_signed_in_cli_providers", providers.length === 0
16
+ ? "No CLI providers are configured for Bridge Chat."
17
+ : "No signed-in CLI providers are available for Bridge Chat.");
18
+ }
19
+ return normalizeBridgeChatCapability({
20
+ ...base,
21
+ availability: usableProviders.length === providers.length ? "available" : "degraded",
22
+ protocolVersion: bridgeChatProtocolVersion,
23
+ supportedProviders: usableProviders.map((provider) => provider.providerKind),
24
+ supportedModels: sortedUniqueStrings(usableProviders.flatMap((provider) => provider.status?.models ?? []), false),
25
+ supportsTextStreaming: true,
26
+ supportsCancel: true,
27
+ supportsResume: true,
28
+ supportsProviderThreadContinuity: true,
29
+ supportsAttachments: true,
30
+ supportsActionBrokerGrants: true,
31
+ maxMessageBytes: base.maxMessageBytes || defaultBridgeChatMaxMessageBytes,
32
+ maxContextRefs: base.maxContextRefs || defaultBridgeChatMaxContextRefs,
33
+ unavailableCode: null,
34
+ unavailableReason: null,
35
+ });
36
+ }
37
+ function chatProviderEntries(cliProviders, providerStatuses) {
38
+ const statuses = new Map();
39
+ for (const [provider, status] of Object.entries(providerStatuses)) {
40
+ const providerKind = provider.trim().toLowerCase();
41
+ if (providerKind.length === 0)
42
+ continue;
43
+ statuses.set(providerKind, { providerKind, status });
44
+ }
45
+ const providers = new Map();
46
+ for (const provider of cliProviders) {
47
+ const providerKind = provider.trim().toLowerCase();
48
+ if (providerKind.length === 0)
49
+ continue;
50
+ providers.set(providerKind, {
51
+ providerKind,
52
+ status: statuses.get(providerKind)?.status,
53
+ });
54
+ }
55
+ for (const [providerKind, entry] of statuses) {
56
+ if (!providers.has(providerKind)) {
57
+ providers.set(providerKind, entry);
58
+ }
59
+ }
60
+ return [...providers.values()].sort((left, right) => compareStable(left.providerKind, right.providerKind));
61
+ }
62
+ function sortedUniqueStrings(values, lower) {
63
+ const byKey = new Map();
64
+ for (const value of values) {
65
+ const clean = value.trim();
66
+ if (clean.length === 0)
67
+ continue;
68
+ const normalized = lower ? clean.toLowerCase() : clean;
69
+ const key = normalized.toLowerCase();
70
+ if (!byKey.has(key)) {
71
+ byKey.set(key, normalized);
72
+ }
73
+ }
74
+ return [...byKey.values()].sort(compareStable);
75
+ }
76
+ function compareStable(left, right) {
77
+ const leftKey = left.toLowerCase();
78
+ const rightKey = right.toLowerCase();
79
+ if (leftKey < rightKey)
80
+ return -1;
81
+ if (leftKey > rightKey)
82
+ return 1;
83
+ if (left < right)
84
+ return -1;
85
+ if (left > right)
86
+ return 1;
87
+ return 0;
88
+ }
@@ -1,2 +1,3 @@
1
1
  export declare function redactSecrets<T>(value: T, exactSecrets?: readonly string[]): T;
2
+ export declare function shouldRedactJsonProperty(key: string): boolean;
2
3
  export declare function redactText(value: string, exactSecrets?: readonly string[]): string;
@@ -1,14 +1,41 @@
1
1
  const secretKeyPattern = /(api[_-]?key|authorization|bearer|client[_-]?secret|password|secret|token)/i;
2
+ // Serialized artifact keys follow the existing assignment policy, not the broad
3
+ // object redactor: tokenCount/maxTokens are evidence, not credential values.
4
+ const jsonCredentialKeyPattern = /(api[_-]?key|client[_-]?secret|password|secret|token)$/i;
2
5
  const attachmentContentKeyPattern = /^(textContent|contentBase64)$/i;
6
+ const bridgeChatHandoffGrantKeyPattern = /^(tempFileToken|grantNonce|nonce|handle|grantId|handoffId|attachmentId)$/i;
7
+ const sensitiveFilenameKeyPattern = /^(fileName|filename)$/i;
3
8
  const serializedAttachmentContentPattern = /("(?:textContent|contentBase64)"\s*:\s*")(?:(?:\\.)|[^"\\])*(")/gi;
9
+ const serializedBridgeChatHandoffGrantPattern = /("(?:tempFileToken|grantNonce|nonce|handle|grantId|handoffId|attachmentId)"\s*:\s*")(?:(?:\\.)|[^"\\])*(")/gi;
10
+ const serializedSensitiveFilenamePattern = /("(?:fileName|filename)"\s*:\s*")(?:(?:\\.)|[^"\\])*(")/gi;
4
11
  const authorizationCredentialPattern = /(\bauthorization\s*[:=]\s*(?:bearer|basic)?\s*)([^"',\s]+)/gi;
5
12
  const bearerCredentialPattern = /(\bbearer\s+)([^"',\s]+)/gi;
6
13
  const secretAssignmentPattern = /(api[_-]?key|client[_-]?secret|password|secret|token)(\s*["']?\s*[:=]\s*["']?\s*)([^"',\s]+)/gi;
14
+ // Keep this boundary in parity with Forge.Api's SecretRedactor. Without it, the
15
+ // `sk-` substring in a structural identifier such as `task-skill-contract`
16
+ // is mistaken for a provider credential and corrupts the artifact after it has
17
+ // already passed schema validation.
18
+ const providerKeyPattern = /(?<![a-zA-Z0-9])sk-[a-zA-Z0-9_-]{12,}/g;
7
19
  export function redactSecrets(value, exactSecrets = []) {
8
20
  return redactValue(value, exactSecrets);
9
21
  }
22
+ export function shouldRedactJsonProperty(key) {
23
+ // Assignment redaction already permits whitespace before the delimiter. Match
24
+ // that policy without normalizing the actual JSON property name on the wire.
25
+ const policyKey = key.trim();
26
+ return jsonCredentialKeyPattern.test(policyKey)
27
+ || /^(authorization|bearer)$/i.test(policyKey)
28
+ || attachmentContentKeyPattern.test(policyKey)
29
+ || bridgeChatHandoffGrantKeyPattern.test(policyKey)
30
+ || (redactSensitiveFilenames() && sensitiveFilenameKeyPattern.test(policyKey));
31
+ }
10
32
  export function redactText(value, exactSecrets = []) {
11
- let redacted = value.replace(serializedAttachmentContentPattern, "$1[REDACTED]$2");
33
+ let redacted = value
34
+ .replace(serializedAttachmentContentPattern, "$1[REDACTED]$2")
35
+ .replace(serializedBridgeChatHandoffGrantPattern, "$1[REDACTED]$2");
36
+ if (redactSensitiveFilenames()) {
37
+ redacted = redacted.replace(serializedSensitiveFilenamePattern, "$1[REDACTED]$2");
38
+ }
12
39
  for (const secret of exactSecrets) {
13
40
  if (secret.length > 0) {
14
41
  redacted = redacted.split(secret).join("[REDACTED]");
@@ -18,7 +45,7 @@ export function redactText(value, exactSecrets = []) {
18
45
  .replace(authorizationCredentialPattern, "$1[REDACTED]")
19
46
  .replace(bearerCredentialPattern, "$1[REDACTED]")
20
47
  .replace(secretAssignmentPattern, "$1$2[REDACTED]")
21
- .replace(/(sk-[a-zA-Z0-9_-]{12,})/g, "[REDACTED]");
48
+ .replace(providerKeyPattern, "[REDACTED]");
22
49
  }
23
50
  function redactValue(value, exactSecrets) {
24
51
  if (typeof value === "string") {
@@ -32,6 +59,15 @@ function redactValue(value, exactSecrets) {
32
59
  }
33
60
  return Object.fromEntries(Object.entries(value).map(([key, item]) => [
34
61
  key,
35
- secretKeyPattern.test(key) || attachmentContentKeyPattern.test(key) ? "[REDACTED]" : redactValue(item, exactSecrets)
62
+ secretKeyPattern.test(key)
63
+ || attachmentContentKeyPattern.test(key)
64
+ || bridgeChatHandoffGrantKeyPattern.test(key)
65
+ || (redactSensitiveFilenames() && sensitiveFilenameKeyPattern.test(key))
66
+ ? "[REDACTED]"
67
+ : redactValue(item, exactSecrets)
36
68
  ]));
37
69
  }
70
+ function redactSensitiveFilenames() {
71
+ const value = process.env.FORGE_REDACT_FILENAMES?.trim().toLowerCase();
72
+ return value === "1" || value === "true" || value === "yes";
73
+ }
package/dist/version.d.ts CHANGED
@@ -1 +1 @@
1
- export declare const forgeBridgeVersion = "0.1.3-dev.fbe15023cdfe";
1
+ export declare const forgeBridgeVersion = "0.1.4-dev.9445952e33ba";
package/dist/version.js CHANGED
@@ -1 +1 @@
1
- export const forgeBridgeVersion = "0.1.3-dev.fbe15023cdfe";
1
+ export const forgeBridgeVersion = "0.1.4-dev.9445952e33ba";
@@ -9,6 +9,13 @@ export interface WarmDependenciesRequest {
9
9
  readonly worktreePath: string;
10
10
  readonly allowedRoot: string;
11
11
  readonly warmPathOverrides?: readonly string[];
12
+ readonly preparationPolicy?: DependencyPreparationPolicy;
13
+ }
14
+ export interface DependencyPreparationPolicy {
15
+ readonly isolation?: string;
16
+ readonly trustDomain?: string;
17
+ readonly invalidationEpoch?: string;
18
+ readonly toolchainVersions?: Readonly<Partial<Record<DependencyEcosystem | "npm" | "pnpm", string>>>;
12
19
  }
13
20
  export interface InstallFallbackResult {
14
21
  readonly ecosystem: DependencyEcosystem;
@@ -20,12 +27,24 @@ export interface WarmDependenciesResult {
20
27
  readonly linked: readonly string[];
21
28
  readonly skipped: readonly string[];
22
29
  readonly fallbacks: readonly InstallFallbackResult[];
30
+ readonly receipts: readonly DependencyPreparationReceiptResult[];
31
+ }
32
+ export interface DependencyPreparationReceiptResult {
33
+ readonly ecosystem: DependencyEcosystem;
34
+ readonly packageRoot: string;
35
+ readonly command: string;
36
+ readonly cacheHit: boolean;
37
+ readonly fingerprint: string;
38
+ readonly receiptPath: string;
39
+ /** End-to-end receipt lookup/preparation time, including coordinator wait. */
40
+ readonly durationMs: number;
23
41
  }
24
42
  export interface CommandExecutor {
25
43
  run(cwd: string, command: string, args: readonly string[], options?: CommandExecutionOptions): Promise<void>;
26
44
  }
27
45
  export interface CommandExecutionOptions {
28
46
  readonly env?: NodeJS.ProcessEnv;
47
+ readonly windowsVerbatimArguments?: boolean;
29
48
  }
30
49
  export declare function detectWarmPaths(repoRoot: string, warmPathOverrides?: readonly string[]): Promise<WarmPathEntry[]>;
31
50
  export declare function warmWorktreeDependencies(request: WarmDependenciesRequest, executor?: CommandExecutor): Promise<WarmDependenciesResult>;
@@ -39,14 +58,27 @@ export interface NpmLaunchOptions {
39
58
  readonly platform?: NodeJS.Platform;
40
59
  readonly homeDir?: string;
41
60
  readonly candidates?: readonly string[];
61
+ readonly pathExists?: (candidate: string) => boolean;
62
+ }
63
+ export interface PackageManagerEnvironmentOptions {
64
+ readonly platform?: NodeJS.Platform;
65
+ readonly execPath?: string;
66
+ readonly pathExists?: (candidate: string) => boolean;
67
+ readonly maximumPathLength?: number;
68
+ readonly packageRoot?: string;
69
+ readonly requiredPathDirectories?: readonly string[];
70
+ }
71
+ export interface PackageManagerLaunch {
72
+ readonly command: string;
73
+ readonly args: readonly string[];
74
+ readonly requiredPathDirectories?: readonly string[];
75
+ readonly windowsVerbatimArguments?: boolean;
42
76
  }
43
- export declare function resolveNpmLaunch(args: readonly string[], options?: NpmLaunchOptions): {
44
- command: string;
45
- args: readonly string[];
46
- };
47
- export declare function resolvePnpmLaunch(args: readonly string[]): {
48
- command: string;
49
- args: readonly string[];
50
- };
77
+ export declare function resolveNpmLaunch(args: readonly string[], options?: NpmLaunchOptions): PackageManagerLaunch;
78
+ export declare function resolvePnpmLaunch(args: readonly string[], options?: NpmLaunchOptions): PackageManagerLaunch;
51
79
  export declare function formatCommandFailureOutput(stdout: string, stderr: string): string;
52
- export declare function unattendedPackageManagerEnvironment(env?: NodeJS.ProcessEnv): NodeJS.ProcessEnv;
80
+ export declare function unattendedPackageManagerEnvironment(env?: NodeJS.ProcessEnv, options?: PackageManagerEnvironmentOptions): NodeJS.ProcessEnv;
81
+ export declare function unattendedDependencyEnvironment(env?: NodeJS.ProcessEnv): NodeJS.ProcessEnv;
82
+ export declare function compactWindowsPackageManagerPath(pathValue: string, env?: NodeJS.ProcessEnv, options?: PackageManagerEnvironmentOptions): string;
83
+ export declare function windowsPackageManagerLifecyclePathPrefix(packageRoot: string): string;
84
+ export declare function windowsPackageManagerPathBudget(packageRoot: string): number;