@loucompanion/forge-bridge 0.1.3-dev.fbe15023cdfe → 0.1.4-dev.41da3780c451

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 (165) 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 +70 -22
  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 +192 -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 +29 -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 +19 -9
  82. package/dist/sandbox/runtime.d.ts +6 -1
  83. package/dist/sandbox/runtime.js +137 -107
  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 +489 -34
  88. package/dist/session/managed-build-coordinator.d.ts +5 -0
  89. package/dist/session/managed-build-coordinator.js +106 -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-recovery.js +3 -2
  144. package/dist/shared/process/host-process-supervisor.d.ts +2 -0
  145. package/dist/shared/process/host-process-supervisor.js +60 -11
  146. package/dist/shared/process/process.d.ts +2 -0
  147. package/dist/shared/process/process.js +12 -7
  148. package/dist/shared/provider-capabilities.d.ts +3 -0
  149. package/dist/shared/provider-capabilities.js +85 -0
  150. package/dist/shared/redaction/redaction.d.ts +1 -0
  151. package/dist/shared/redaction/redaction.js +39 -3
  152. package/dist/shared/time/monotonic.d.ts +1 -0
  153. package/dist/shared/time/monotonic.js +8 -0
  154. package/dist/version.d.ts +1 -1
  155. package/dist/version.js +1 -1
  156. package/dist/worktree/dependency-warmer.d.ts +41 -9
  157. package/dist/worktree/dependency-warmer.js +497 -22
  158. package/dist/worktree/index.d.ts +1 -1
  159. package/dist/worktree/story-qa-reference-hydrator.d.ts +4 -0
  160. package/dist/worktree/story-qa-reference-hydrator.js +253 -0
  161. package/dist/worktree/worktree.service.d.ts +7 -0
  162. package/dist/worktree/worktree.service.js +253 -21
  163. package/dist/worktree/worktree.types.d.ts +7 -1
  164. package/package.json +7 -5
  165. package/runtime/windows-job-supervisor.ps1 +380 -14
@@ -1,18 +1,34 @@
1
1
  import type { SessionService } from "../session/session.base.js";
2
- import { type DispatchSandboxResourceRequest, type RunOnceDispatchPacket } from "../session/session.types.js";
2
+ import type { ProviderProcessRunner } from "../session/provider-cli/provider-cli.process.js";
3
+ import { DockerEngineProbe, type DockerEngineCapabilitySnapshot } from "../runtime/docker-engine-probe.js";
4
+ import { type DispatchSandboxResourceRequest, type RunOnceDispatchPacket, type RunOnceResultPacket } from "../session/session.types.js";
3
5
  import { DockerPreflight } from "../sandbox/preflight.js";
4
6
  import type { SandboxPreflightResult } from "../sandbox/sandbox.types.js";
5
7
  import { type SandboxRuntime } from "../sandbox/runtime.js";
6
8
  import type { BridgeConnection, BridgeConnectionFactory, BridgeService } from "./bridge.base.js";
7
- import type { BridgeCancelHandler, BridgeDispatchHandler, BridgeLeaseUpdateRequest, BridgeReapRequest, BridgeServiceConfig } from "./bridge.types.js";
9
+ import { type RunnerHostCapabilityProbe } from "./runner-host-capabilities.js";
10
+ import type { BridgeCancelHandler, BridgeChatTurnHandler, BridgeDispatchHandler, BridgeLeaseUpdateRequest, BridgeReapRequest, BridgeServiceConfig } from "./bridge.types.js";
11
+ import { type ReadinessResultOutbox } from "./readiness-result-outbox.js";
12
+ import { type DispatchResultOutbox } from "./dispatch-result-outbox.js";
8
13
  export type SandboxResourceResolver = (dispatch: RunOnceDispatchPacket) => Promise<ResolvedSandboxResourceProfile>;
9
14
  export interface ResolvedSandboxResourceProfile {
10
15
  readonly resources: DispatchSandboxResourceRequest;
11
16
  readonly sandboxConfigCommitSha: string;
12
17
  }
18
+ /**
19
+ * Protocol-v2 events are acknowledged one at a time before runOnce returns.
20
+ * Sending the complete transcript again in DispatchResult made long QA and CI
21
+ * sessions exceed SignalR's receive limit, disconnecting the bridge after the
22
+ * provider had already completed. The API combines its acknowledged streamed
23
+ * events with the terminal result, so the callback only needs the outcome and
24
+ * artifacts. Protocol v1 retains the transcript for legacy servers.
25
+ */
26
+ export declare function compactTerminalResult(dispatch: RunOnceDispatchPacket, result: RunOnceResultPacket): RunOnceResultPacket;
13
27
  export declare class ForgeBridgeService implements BridgeService {
14
28
  private readonly config;
15
29
  private readonly connections;
30
+ private readonly hostCapabilityProbe;
31
+ private readonly chatProcessRunner;
16
32
  private connection;
17
33
  private heartbeatTimer;
18
34
  private heartbeatInFlight;
@@ -22,40 +38,81 @@ export declare class ForgeBridgeService implements BridgeService {
22
38
  private sandboxMaintenanceTimer;
23
39
  private sandboxMaintenanceRunning;
24
40
  private closed;
41
+ private transportRecovery;
42
+ private transportRecoveryGeneration;
25
43
  private stopped;
26
44
  private readonly activeSessions;
27
45
  private readonly reservations;
28
46
  private readonly activeReadinessProbes;
47
+ private readonly readinessResultOutbox;
48
+ private readinessResultFlush;
49
+ private readonly dispatchResultOutbox;
50
+ private dispatchResultFlush;
51
+ private dispatchResultGeneration;
52
+ private dispatchResultFlushedGeneration;
53
+ private readonly dispatchResultHandoffs;
29
54
  private readonly preflight;
55
+ private readonly dockerEngineProbe;
30
56
  private readonly sandboxRuntime;
31
57
  private readonly sandboxResourceResolver;
32
58
  private readonly sessions;
33
- constructor(config: BridgeServiceConfig, sessions?: SessionService | undefined, connections?: BridgeConnectionFactory, preflight?: DockerPreflight, sandboxRuntime?: SandboxRuntime, sandboxResourceResolver?: SandboxResourceResolver);
59
+ private readonly enforceHostDatabaseCapabilityBoundary;
60
+ private hostCapabilities;
61
+ private readonly recoveredHostAttempts;
62
+ private hostCapabilitiesDetected;
63
+ constructor(config: BridgeServiceConfig, sessions?: SessionService | undefined, connections?: BridgeConnectionFactory, preflight?: DockerPreflight, sandboxRuntime?: SandboxRuntime, sandboxResourceResolver?: SandboxResourceResolver, dockerEngineProbe?: DockerEngineProbe, hostCapabilityProbe?: RunnerHostCapabilityProbe, readinessResultOutbox?: ReadinessResultOutbox, chatProcessRunner?: ProviderProcessRunner, dispatchResultOutbox?: DispatchResultOutbox);
34
64
  connectOnce(): Promise<void>;
65
+ private rememberRecoveredHostAttempts;
66
+ private recoveredHostAttemptsForHello;
67
+ private registerConnection;
35
68
  run(signal?: AbortSignal): Promise<void>;
36
69
  stop(): Promise<void>;
70
+ private handleChatTurn;
71
+ private createChatTurnWorkspace;
72
+ private runChatProviderProcess;
73
+ private sendChatProviderEvent;
74
+ private sendChatAbortTerminal;
75
+ private sendStandaloneChatTerminal;
76
+ private sendChatCallback;
77
+ private invokeChatCallbackWithRetry;
78
+ private requiredChatCapabilityFailure;
79
+ private bridgeChatCapability;
37
80
  private handleDispatch;
81
+ private reservedDispatchHandoffIsCurrent;
82
+ private releaseReservedDispatchHandoff;
83
+ private releaseActiveSessionAndRefreshCapacity;
38
84
  private handleOffer;
85
+ private commitOfferReservation;
39
86
  private handleStart;
40
87
  private redeemSecretGrant;
41
88
  private redeemPublishGrant;
42
89
  private handleLeaseUpdate;
43
90
  private sendOfferDecision;
44
91
  private parseDispatchOrReport;
92
+ private parseChatTurnOrReport;
45
93
  private handleCancel;
94
+ private chatCancelMatchesActiveTurn;
46
95
  private handleReap;
47
96
  private handleReadinessProbe;
97
+ private deferActiveReadinessProbes;
98
+ private flushReadinessResults;
99
+ private flushReadinessResultsCore;
48
100
  private abortActiveSessions;
49
101
  private abortActiveReadinessProbes;
102
+ private normalizeReadinessProbe;
50
103
  private normalizeDispatch;
51
104
  private sendResult;
52
105
  private sendLegacyResult;
53
106
  private sendResultPayload;
107
+ private sendResultPayloadDirect;
108
+ private flushDispatchResults;
109
+ private flushDispatchResultsCore;
54
110
  private startHeartbeat;
55
111
  private heartbeatTick;
56
112
  private startLeaseWatchdog;
57
113
  private stopLeaseWatchdog;
58
114
  private expireLeases;
115
+ private expireReservations;
59
116
  private stopHeartbeat;
60
117
  private startSandboxMaintenance;
61
118
  private stopSandboxMaintenance;
@@ -63,11 +120,16 @@ export declare class ForgeBridgeService implements BridgeService {
63
120
  private readAttemptSnapshot;
64
121
  private flushCleanupReports;
65
122
  private sendHeartbeat;
123
+ private sendHeartbeatSnapshot;
66
124
  private capabilities;
125
+ private requiredCapabilityFailure;
67
126
  private usedSandboxResources;
68
127
  private activeSandboxResources;
69
128
  private sandboxResourceCapacity;
70
129
  private invokeAck;
130
+ private beginTransportRecovery;
131
+ private completeTransportRecovery;
132
+ private waitForTransportRecovery;
71
133
  private waitForClose;
72
134
  private stopConnection;
73
135
  }
@@ -81,7 +143,10 @@ export declare class SignalRBridgeConnection implements BridgeConnection {
81
143
  start(): Promise<void>;
82
144
  stop(): Promise<void>;
83
145
  onClose(handler: (error?: Error) => void): void;
146
+ onReconnecting(handler: (error?: Error) => void): void;
147
+ onReconnected(handler: (connectionId?: string) => void | Promise<void>): void;
84
148
  onDispatch(handler: BridgeDispatchHandler): void;
149
+ onChatTurn(handler: BridgeChatTurnHandler): void;
85
150
  onOffer(handler: BridgeDispatchHandler): void;
86
151
  onStart(handler: BridgeDispatchHandler): void;
87
152
  onLeaseUpdate(handler: (request: BridgeLeaseUpdateRequest) => Promise<void>): void;
@@ -92,12 +157,16 @@ export declare class SignalRBridgeConnection implements BridgeConnection {
92
157
  }
93
158
  export declare function defaultBridgeServiceConfig(overrides?: Partial<BridgeServiceConfig>): BridgeServiceConfig;
94
159
  export declare function resolveBridgeRunnerHubUrl(serverUrl: string): URL;
160
+ export declare function delay(ms: number, signal?: AbortSignal): Promise<void>;
161
+ export declare function waitForPromiseOrAbort(promise: Promise<unknown>, signal?: AbortSignal): Promise<void>;
95
162
  export declare function canReapManagedSandboxes(preflight: {
96
163
  readonly healthy: boolean;
97
164
  readonly unavailableCode?: string | null;
98
165
  }): boolean;
166
+ export declare function dockerEngineRequirementFailure(requiredCapabilities: readonly string[], executionMode: string | undefined, capability: DockerEngineCapabilitySnapshot | null): string | null;
99
167
  export type SandboxResourceVector = DispatchSandboxResourceRequest;
100
168
  export declare function canReserveSandboxResources(used: SandboxResourceVector, requested: SandboxResourceVector, capacity: SandboxResourceVector): boolean;
169
+ export declare function sandboxMemoryCommitmentCapacity(preflight: Pick<SandboxPreflightResult, "totalMemoryBytes" | "availableMemoryBytes" | "hostReserveBytes">, activeMemoryBytes: number): number;
101
170
  export declare function sandboxCapacityFailureMessage(used: SandboxResourceVector, requested: SandboxResourceVector, capacity: SandboxResourceVector, preflight: SandboxPreflightResult | null, config: BridgeServiceConfig): string;
102
171
  export declare function resolveDynamicSandboxResources(requested: DispatchSandboxResourceRequest, serviceCount: number, networkMode: "offline" | "public_allowlist" | "open_public", baseRuntimeOverheadBytes?: number): DispatchSandboxResourceRequest;
103
172
  export declare function resolveSandboxResourcesFromRepo(dispatch: RunOnceDispatchPacket, baseRuntimeOverheadBytes?: number): Promise<ResolvedSandboxResourceProfile>;