@loucompanion/forge-bridge 0.1.3-dev.f66395c3ac21 → 0.1.4-dev.04a1e5b9e484

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 (223) hide show
  1. package/README.md +165 -1
  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 +9 -1
  5. package/dist/bridge/bridge.service.d.ts +129 -3
  6. package/dist/bridge/bridge.service.js +2427 -70
  7. package/dist/bridge/bridge.types.d.ts +218 -2
  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 +14 -2
  21. package/dist/cleanup/cleanup.service.js +496 -3
  22. package/dist/cleanup/cleanup.types.d.ts +10 -0
  23. package/dist/cleanup/index.d.ts +1 -1
  24. package/dist/cleanup/index.js +1 -1
  25. package/dist/cleanup/internals.d.ts +2 -2
  26. package/dist/cleanup/internals.js +1 -1
  27. package/dist/cli/cli.help.d.ts +2 -0
  28. package/dist/cli/cli.help.js +217 -0
  29. package/dist/cli/cli.service.d.ts +55 -7
  30. package/dist/cli/cli.service.js +429 -219
  31. package/dist/cli/local-config.d.ts +7 -0
  32. package/dist/cli/local-config.js +51 -3
  33. package/dist/runtime/aspnet-runtime-prebuild.d.ts +36 -0
  34. package/dist/runtime/aspnet-runtime-prebuild.js +341 -0
  35. package/dist/runtime/attempt-database-broker.d.ts +89 -0
  36. package/dist/runtime/attempt-database-broker.js +390 -0
  37. package/dist/runtime/attempt-node-runtime-launcher.d.ts +18 -0
  38. package/dist/runtime/attempt-node-runtime-launcher.js +140 -0
  39. package/dist/runtime/attempt-path-operation.d.ts +21 -0
  40. package/dist/runtime/attempt-path-operation.js +94 -0
  41. package/dist/runtime/attempt-private-directory.d.ts +6 -0
  42. package/dist/runtime/attempt-private-directory.js +54 -0
  43. package/dist/runtime/attempt-process-supervisor-registry.d.ts +20 -0
  44. package/dist/runtime/attempt-process-supervisor-registry.js +64 -0
  45. package/dist/runtime/attempt-process-supervisor.d.ts +102 -0
  46. package/dist/runtime/attempt-process-supervisor.js +421 -0
  47. package/dist/runtime/canonical-source-file.d.ts +3 -0
  48. package/dist/runtime/canonical-source-file.js +54 -0
  49. package/dist/runtime/docker-engine-probe.d.ts +90 -0
  50. package/dist/runtime/docker-engine-probe.js +333 -0
  51. package/dist/runtime/generated-output-reset.d.ts +20 -0
  52. package/dist/runtime/generated-output-reset.js +157 -0
  53. package/dist/runtime/host-database-capability-boundary.d.ts +16 -0
  54. package/dist/runtime/host-database-capability-boundary.js +62 -0
  55. package/dist/runtime/host-diagnostics.d.ts +11 -0
  56. package/dist/runtime/host-diagnostics.js +192 -0
  57. package/dist/runtime/host-execution-root.d.ts +4 -0
  58. package/dist/runtime/host-execution-root.js +39 -0
  59. package/dist/runtime/host-listener-inspector.d.ts +51 -0
  60. package/dist/runtime/host-listener-inspector.js +385 -0
  61. package/dist/runtime/host-port-broker.d.ts +76 -0
  62. package/dist/runtime/host-port-broker.js +333 -0
  63. package/dist/runtime/host-runtime-contract.d.ts +58 -0
  64. package/dist/runtime/host-runtime-contract.js +813 -0
  65. package/dist/runtime/host-runtime-lease.d.ts +217 -0
  66. package/dist/runtime/host-runtime-lease.js +2487 -0
  67. package/dist/runtime/host-runtime-promotion.d.ts +32 -0
  68. package/dist/runtime/host-runtime-promotion.js +206 -0
  69. package/dist/runtime/memory-capacity.d.ts +70 -0
  70. package/dist/runtime/memory-capacity.js +123 -0
  71. package/dist/runtime/native-test-postgres-fallback.d.ts +25 -0
  72. package/dist/runtime/native-test-postgres-fallback.js +91 -0
  73. package/dist/runtime/node-host-runtime-adapter.d.ts +54 -0
  74. package/dist/runtime/node-host-runtime-adapter.js +286 -0
  75. package/dist/runtime/pinned-directory-process.d.ts +9 -0
  76. package/dist/runtime/pinned-directory-process.js +61 -0
  77. package/dist/runtime/pinned-source-directory.d.ts +17 -0
  78. package/dist/runtime/pinned-source-directory.js +94 -0
  79. package/dist/runtime/playwright-host-runtime-adapter.d.ts +21 -0
  80. package/dist/runtime/playwright-host-runtime-adapter.js +268 -0
  81. package/dist/runtime/prepared-runtime-identity.d.ts +6 -0
  82. package/dist/runtime/prepared-runtime-identity.js +218 -0
  83. package/dist/runtime/prepared-runtime-readiness.d.ts +30 -0
  84. package/dist/runtime/prepared-runtime-readiness.js +285 -0
  85. package/dist/runtime/runtime-isolation-lease.d.ts +67 -0
  86. package/dist/runtime/runtime-isolation-lease.js +161 -0
  87. package/dist/runtime/workspace-resource-estimator.d.ts +17 -0
  88. package/dist/runtime/workspace-resource-estimator.js +174 -0
  89. package/dist/sandbox/command-runner.d.ts +4 -0
  90. package/dist/sandbox/command-runner.js +47 -0
  91. package/dist/sandbox/contract.d.ts +5 -0
  92. package/dist/sandbox/contract.js +276 -0
  93. package/dist/sandbox/event-budget.d.ts +11 -0
  94. package/dist/sandbox/event-budget.js +27 -0
  95. package/dist/sandbox/image-policy.d.ts +35 -0
  96. package/dist/sandbox/image-policy.js +247 -0
  97. package/dist/sandbox/index.d.ts +5 -0
  98. package/dist/sandbox/index.js +5 -0
  99. package/dist/sandbox/lease-watchdog.d.ts +18 -0
  100. package/dist/sandbox/lease-watchdog.js +67 -0
  101. package/dist/sandbox/preflight.d.ts +84 -0
  102. package/dist/sandbox/preflight.js +521 -0
  103. package/dist/sandbox/process.d.ts +20 -0
  104. package/dist/sandbox/process.js +209 -0
  105. package/dist/sandbox/provider-auth/codex.d.ts +26 -0
  106. package/dist/sandbox/provider-auth/codex.js +212 -0
  107. package/dist/sandbox/repository-lock.d.ts +6 -0
  108. package/dist/sandbox/repository-lock.js +129 -0
  109. package/dist/sandbox/runtime.d.ts +302 -0
  110. package/dist/sandbox/runtime.js +2368 -0
  111. package/dist/sandbox/sandbox.types.d.ts +93 -0
  112. package/dist/sandbox/sandbox.types.js +1 -0
  113. package/dist/sandbox/smoke.d.ts +76 -0
  114. package/dist/sandbox/smoke.js +380 -0
  115. package/dist/sandbox/worker-supervisor.d.ts +13 -0
  116. package/dist/sandbox/worker-supervisor.js +36 -0
  117. package/dist/sandbox/worker.d.ts +1 -0
  118. package/dist/sandbox/worker.js +225 -0
  119. package/dist/sandbox/workspace.service.d.ts +13 -0
  120. package/dist/sandbox/workspace.service.js +74 -0
  121. package/dist/session/managed-attempt-tools.d.ts +28 -0
  122. package/dist/session/managed-attempt-tools.js +1016 -0
  123. package/dist/session/managed-build-coordinator.d.ts +5 -0
  124. package/dist/session/managed-build-coordinator.js +106 -0
  125. package/dist/session/managed-build-receipt.d.ts +21 -0
  126. package/dist/session/managed-build-receipt.js +337 -0
  127. package/dist/session/managed-verification-timeouts.d.ts +8 -0
  128. package/dist/session/managed-verification-timeouts.js +17 -0
  129. package/dist/session/phase-completion.artifacts.d.ts +27 -0
  130. package/dist/session/phase-completion.artifacts.js +829 -0
  131. package/dist/session/phase-completion.d.ts +53 -42
  132. package/dist/session/phase-completion.helpers.d.ts +117 -0
  133. package/dist/session/phase-completion.helpers.js +707 -0
  134. package/dist/session/phase-completion.js +125 -3007
  135. package/dist/session/phase-completion.prompts.d.ts +14 -0
  136. package/dist/session/phase-completion.prompts.js +233 -0
  137. package/dist/session/phase-completion.runtime.d.ts +49 -0
  138. package/dist/session/phase-completion.runtime.js +840 -0
  139. package/dist/session/phase-completion.schemas.d.ts +3 -0
  140. package/dist/session/phase-completion.schemas.js +859 -0
  141. package/dist/session/phase-completion.validation.d.ts +38 -0
  142. package/dist/session/phase-completion.validation.js +918 -0
  143. package/dist/session/pre-publication-validation.d.ts +75 -0
  144. package/dist/session/pre-publication-validation.js +661 -0
  145. package/dist/session/provider-cli/bridge-cli.conformance-fixtures.d.ts +72 -0
  146. package/dist/session/provider-cli/bridge-cli.conformance-fixtures.js +462 -0
  147. package/dist/session/provider-cli/ci-repair-readiness.d.ts +16 -0
  148. package/dist/session/provider-cli/ci-repair-readiness.js +110 -0
  149. package/dist/session/provider-cli/provider-cli.artifacts.d.ts +95 -0
  150. package/dist/session/provider-cli/provider-cli.artifacts.js +812 -0
  151. package/dist/session/provider-cli/provider-cli.base.d.ts +1 -0
  152. package/dist/session/provider-cli/provider-cli.deterministic-payloads.d.ts +12 -0
  153. package/dist/session/provider-cli/provider-cli.deterministic-payloads.js +279 -0
  154. package/dist/session/provider-cli/provider-cli.deterministic.d.ts +14 -0
  155. package/dist/session/provider-cli/provider-cli.deterministic.js +407 -0
  156. package/dist/session/provider-cli/provider-cli.process.d.ts +99 -0
  157. package/dist/session/provider-cli/provider-cli.process.js +874 -0
  158. package/dist/session/provider-cli/provider-cli.prompts.d.ts +52 -0
  159. package/dist/session/provider-cli/provider-cli.prompts.js +715 -0
  160. package/dist/session/provider-cli/provider-cli.qa-sidecars.d.ts +11 -0
  161. package/dist/session/provider-cli/provider-cli.qa-sidecars.js +66 -0
  162. package/dist/session/provider-cli/provider-cli.repair-epoch.d.ts +6 -0
  163. package/dist/session/provider-cli/provider-cli.repair-epoch.js +11 -0
  164. package/dist/session/provider-cli/provider-cli.runtime.d.ts +22 -0
  165. package/dist/session/provider-cli/provider-cli.runtime.js +92 -0
  166. package/dist/session/provider-cli/provider-cli.service.d.ts +47 -53
  167. package/dist/session/provider-cli/provider-cli.service.js +1258 -2497
  168. package/dist/session/provider-cli/provider-cli.types.d.ts +8 -0
  169. package/dist/session/provider-cli/provider-output-state.d.ts +32 -0
  170. package/dist/session/provider-cli/provider-output-state.js +817 -0
  171. package/dist/session/provider-cli/provider-usage.d.ts +7 -0
  172. package/dist/session/provider-cli/provider-usage.js +28 -5
  173. package/dist/session/session-redaction.d.ts +3 -0
  174. package/dist/session/session-redaction.js +448 -0
  175. package/dist/session/session.base.d.ts +6 -1
  176. package/dist/session/session.service.d.ts +8 -2
  177. package/dist/session/session.service.js +586 -59
  178. package/dist/session/session.types.d.ts +324 -3
  179. package/dist/session/session.types.js +939 -10
  180. package/dist/session/unreferenced-exports.d.ts +12 -0
  181. package/dist/session/unreferenced-exports.js +59 -0
  182. package/dist/shared/format/format-bytes.d.ts +1 -0
  183. package/dist/shared/format/format-bytes.js +9 -0
  184. package/dist/shared/git/git.js +2 -1
  185. package/dist/shared/path/path.d.ts +1 -0
  186. package/dist/shared/path/path.js +21 -1
  187. package/dist/shared/process/dotnet-toolchain.d.ts +17 -0
  188. package/dist/shared/process/dotnet-toolchain.js +307 -0
  189. package/dist/shared/process/host-process-recovery.d.ts +12 -0
  190. package/dist/shared/process/host-process-recovery.js +79 -0
  191. package/dist/shared/process/host-process-supervisor.d.ts +59 -0
  192. package/dist/shared/process/host-process-supervisor.js +331 -0
  193. package/dist/shared/process/process.d.ts +3 -0
  194. package/dist/shared/process/process.js +13 -7
  195. package/dist/shared/process/windows-launch.d.ts +8 -0
  196. package/dist/shared/process/windows-launch.js +41 -0
  197. package/dist/shared/provider-capabilities.d.ts +4 -0
  198. package/dist/shared/provider-capabilities.js +88 -0
  199. package/dist/shared/redaction/redaction.d.ts +1 -0
  200. package/dist/shared/redaction/redaction.js +47 -4
  201. package/dist/shared/time/monotonic.d.ts +1 -0
  202. package/dist/shared/time/monotonic.js +8 -0
  203. package/dist/version.d.ts +1 -1
  204. package/dist/version.js +1 -1
  205. package/dist/worktree/artifact-injector.d.ts +3 -2
  206. package/dist/worktree/artifact-injector.js +82 -10
  207. package/dist/worktree/dependency-warmer.d.ts +53 -1
  208. package/dist/worktree/dependency-warmer.js +619 -11
  209. package/dist/worktree/index.d.ts +2 -1
  210. package/dist/worktree/index.js +1 -0
  211. package/dist/worktree/prior-phase-artifact-hydrator.d.ts +2 -0
  212. package/dist/worktree/prior-phase-artifact-hydrator.js +136 -0
  213. package/dist/worktree/story-qa-reference-hydrator.d.ts +4 -0
  214. package/dist/worktree/story-qa-reference-hydrator.js +253 -0
  215. package/dist/worktree/worktree-paths.d.ts +4 -0
  216. package/dist/worktree/worktree-paths.js +30 -0
  217. package/dist/worktree/worktree.base.d.ts +3 -0
  218. package/dist/worktree/worktree.service.d.ts +16 -3
  219. package/dist/worktree/worktree.service.js +334 -54
  220. package/dist/worktree/worktree.types.d.ts +9 -1
  221. package/package.json +12 -7
  222. package/runtime/windows-job-supervisor.ps1 +722 -0
  223. package/runtime/windows-listener-owner.ps1 +33 -0
@@ -1,5 +1,5 @@
1
1
  export interface RunOnceDispatchPacket {
2
- readonly schemaVersion: 1;
2
+ readonly schemaVersion: 1 | 2;
3
3
  readonly userId: string;
4
4
  readonly workItem: DispatchWorkItem;
5
5
  readonly repo: DispatchRepo;
@@ -7,24 +7,82 @@ export interface RunOnceDispatchPacket {
7
7
  readonly session: DispatchSession;
8
8
  readonly lease: DispatchLease;
9
9
  readonly execution: DispatchExecution;
10
+ readonly runtimeIntent: DispatchRuntimeIntent;
10
11
  readonly serverLocal: DispatchServerLocalConfig;
12
+ readonly sandbox?: DispatchSandboxContext | null;
11
13
  readonly pullRequest?: DispatchPullRequestContext | null;
12
14
  readonly apiKeySecretGrant?: ApiKeySecretGrant | null;
15
+ readonly apiKeySecretGrantHandle?: ApiKeySecretGrantHandle | null;
13
16
  readonly artifacts: readonly DispatchResolvedArtifact[];
17
+ readonly priorPhaseArtifacts?: readonly DispatchPriorPhaseArtifact[];
14
18
  readonly warmPathOverrides?: readonly string[];
15
19
  readonly qaBrowser?: DispatchQaBrowserContext | null;
20
+ readonly qaScope?: DispatchQaScope | null;
16
21
  readonly qaRework?: DispatchQaReworkContext | null;
17
22
  readonly architectRevision?: DispatchArchitectRevisionContext | null;
23
+ readonly architectDependencies?: DispatchArchitectDependencyContext | null;
18
24
  readonly storyDevelop?: DispatchStoryDevelopContext | null;
19
25
  readonly storyQa?: DispatchStoryQaContext | null;
26
+ readonly designerRefs?: DispatchDesignerRefHandoffContext | null;
20
27
  readonly draft?: DispatchDraftPrompt | null;
21
28
  }
29
+ export interface DispatchRuntimeIntent {
30
+ readonly executionClass: "analysis_only" | "managed_runtime";
31
+ readonly applicationRuntimeRequired: boolean;
32
+ }
33
+ export interface DispatchSandboxContext {
34
+ readonly dispatchAttemptId: string;
35
+ readonly executionLeaseId: string;
36
+ readonly runnerInstanceId: string;
37
+ readonly executionMode: "host" | "docker";
38
+ readonly executionPolicy: "host_allowed" | "sandbox_preferred" | "sandbox_required";
39
+ readonly networkPolicy: DispatchSandboxNetworkPolicy;
40
+ readonly requestedResources: DispatchSandboxResourceRequest;
41
+ readonly runtime?: string | null;
42
+ readonly sandboxConfigCommitSha?: string | null;
43
+ readonly inputCommitSha?: string | null;
44
+ readonly contractDigest?: string | null;
45
+ readonly imageDigest?: string | null;
46
+ readonly publicationMode: "bridge_push" | "shared_filesystem";
47
+ readonly publishGrantHandle?: DispatchPublishGrantHandle | null;
48
+ }
49
+ export interface DispatchPublishGrantHandle {
50
+ readonly grantId: string;
51
+ readonly branch: string;
52
+ readonly expiresAt: string;
53
+ }
54
+ export interface DispatchSandboxResourceRequest {
55
+ readonly sandboxSlots: number;
56
+ readonly cpuMillis: number;
57
+ readonly workerMemoryLimitBytes: number;
58
+ readonly serviceMemoryLimitBytes: number;
59
+ readonly runtimeOverheadBytes: number;
60
+ readonly memoryBytes: number;
61
+ readonly workspaceBytes: number;
62
+ readonly pids: number;
63
+ readonly buildSlots: number;
64
+ }
65
+ export interface DispatchSandboxNetworkPolicy {
66
+ readonly mode: "offline" | "public_allowlist" | "open_public";
67
+ readonly allowedHosts: readonly string[];
68
+ }
22
69
  export interface DispatchDraftPrompt {
23
70
  readonly kind: string;
24
71
  readonly systemPrompt: string;
25
72
  readonly userPrompt: string;
26
73
  readonly projectName?: string | null;
27
74
  readonly repoName?: string | null;
75
+ readonly attachments?: readonly DispatchDraftAttachment[];
76
+ }
77
+ export interface DispatchDraftAttachment {
78
+ readonly index: number;
79
+ readonly fileName: string;
80
+ readonly contentType: string;
81
+ readonly kind: string;
82
+ readonly byteCount: number;
83
+ readonly summary: string;
84
+ readonly textContent?: string | null;
85
+ readonly contentBase64?: string | null;
28
86
  }
29
87
  export interface DispatchQaBrowserContext {
30
88
  readonly required: boolean;
@@ -32,11 +90,28 @@ export interface DispatchQaBrowserContext {
32
90
  readonly artifactsPath: string;
33
91
  readonly missingTargetReason?: string | null;
34
92
  }
93
+ export interface DispatchQaScope {
94
+ readonly schema_version: number;
95
+ readonly surface: readonly string[];
96
+ readonly required_evidence: readonly string[];
97
+ readonly required_capabilities?: readonly string[];
98
+ readonly not_applicable: readonly string[];
99
+ readonly browser_required: boolean;
100
+ readonly api_required: boolean;
101
+ readonly source?: string | null;
102
+ readonly authority?: string | null;
103
+ readonly confidence?: string | null;
104
+ readonly confirmed_by_user?: boolean | null;
105
+ readonly locked?: boolean | null;
106
+ readonly derived_from?: Readonly<Record<string, unknown>> | null;
107
+ readonly rationale?: string | null;
108
+ }
35
109
  export interface DispatchQaAppLaunchTarget {
36
110
  readonly url?: string | null;
37
111
  readonly command?: string | null;
38
112
  readonly working_directory?: string | null;
39
113
  readonly ready_url?: string | null;
114
+ readonly managed_runtime_port?: string | null;
40
115
  readonly routes: readonly string[];
41
116
  readonly notes?: string | null;
42
117
  }
@@ -53,6 +128,22 @@ export interface DispatchArchitectRevisionContext {
53
128
  readonly priorContentHash: string;
54
129
  readonly feedback: string;
55
130
  }
131
+ export interface DispatchArchitectDependencyContext {
132
+ readonly baseBranch: string;
133
+ readonly prerequisites: readonly DispatchArchitectDependencyItemContext[];
134
+ }
135
+ export interface DispatchArchitectDependencyItemContext {
136
+ readonly storyId: string;
137
+ readonly title: string;
138
+ readonly scheduleIndex?: number | null;
139
+ readonly waveIndex?: number | null;
140
+ readonly featureScheduleIndex?: number | null;
141
+ readonly expectedOutput?: string | null;
142
+ readonly handoffSummary?: string | null;
143
+ readonly dependencyReason?: string | null;
144
+ readonly pullRequestNumber?: number | null;
145
+ readonly targetBranch: string;
146
+ }
56
147
  export interface DispatchStoryDevelopContext {
57
148
  readonly storyWorkItemId: string;
58
149
  readonly planId: string;
@@ -62,6 +153,7 @@ export interface DispatchStoryDevelopContext {
62
153
  readonly dependencyWorkItemIds: readonly string[];
63
154
  }
64
155
  export interface DispatchStoryQaContext {
156
+ readonly references?: DispatchStoryQaReferenceBundle | null;
65
157
  readonly storyWorkItemId: string;
66
158
  readonly planId: string;
67
159
  readonly planContentHash: string;
@@ -73,6 +165,24 @@ export interface DispatchStoryQaContext {
73
165
  readonly childTasks: readonly DispatchStoryQaChildTaskContext[];
74
166
  readonly dependencies: readonly DispatchStoryQaDependencyContext[];
75
167
  }
168
+ export interface DispatchStoryQaReferenceBundle {
169
+ readonly schemaVersion: number;
170
+ readonly cycleRunId: string;
171
+ readonly storyWorkItemId: string;
172
+ readonly projectId: string;
173
+ readonly repoId: string;
174
+ readonly planId: string;
175
+ readonly planContentHash: string;
176
+ readonly effectiveAmendmentHash: string;
177
+ readonly capturedAt: string;
178
+ readonly files: readonly DispatchStoryQaReferenceFile[];
179
+ }
180
+ export interface DispatchStoryQaReferenceFile {
181
+ readonly path: string;
182
+ readonly body: string;
183
+ readonly contentHash: string;
184
+ readonly provenance: string;
185
+ }
76
186
  export interface DispatchStoryQaChildTaskContext {
77
187
  readonly workItemId: string;
78
188
  readonly title: string;
@@ -109,6 +219,55 @@ export interface DispatchStoryQaDependencyContext {
109
219
  readonly fromWorkItemId: string;
110
220
  readonly toWorkItemId: string;
111
221
  }
222
+ export interface DispatchPriorPhaseArtifact {
223
+ readonly workItemId: string;
224
+ readonly artifactId: string;
225
+ readonly cycleRunId: string;
226
+ readonly phase: "implementation" | "self_review" | "validation";
227
+ readonly status: string;
228
+ readonly producedAt: string;
229
+ readonly sourcePath: string;
230
+ readonly verdictJson: string;
231
+ readonly report: string;
232
+ readonly verdictContentHash: string;
233
+ readonly reportContentHash: string;
234
+ }
235
+ export interface DispatchDesignerRefHandoffContext {
236
+ readonly schemaVersion: number;
237
+ readonly kind: string;
238
+ readonly ownerType: string;
239
+ readonly ownerId: string;
240
+ readonly projectId: string;
241
+ readonly repoId: string;
242
+ readonly title: string;
243
+ readonly refs: readonly DispatchDesignerRefAttachment[];
244
+ }
245
+ export interface DispatchDesignerRefAttachment {
246
+ readonly ref: DispatchDesignerRef;
247
+ readonly reason: string;
248
+ readonly required: boolean;
249
+ readonly source: string;
250
+ readonly lineageKind: string;
251
+ readonly inheritedFromItemType?: string | null;
252
+ readonly inheritedFromItemId?: string | null;
253
+ readonly inheritedFromDesignerRefId?: string | null;
254
+ readonly addedByLane: string;
255
+ readonly sortOrder: number;
256
+ readonly createdAt: string;
257
+ }
258
+ export interface DispatchDesignerRef {
259
+ readonly id: string;
260
+ readonly projectId: string;
261
+ readonly repoId: string;
262
+ readonly refKey: string;
263
+ readonly kind: string;
264
+ readonly path: string;
265
+ readonly anchor?: string | null;
266
+ readonly title: string;
267
+ readonly contentHash: string;
268
+ readonly commitSha: string;
269
+ readonly createdAt: string;
270
+ }
112
271
  export interface DispatchPullRequestContext {
113
272
  readonly number: number;
114
273
  readonly provider: string;
@@ -124,6 +283,28 @@ export interface DispatchPullRequestContext {
124
283
  readonly unresolvedThreads: number;
125
284
  readonly humanApproved: boolean;
126
285
  readonly hasMergeConflicts: boolean;
286
+ readonly headSha: string;
287
+ readonly reviewIssueKey?: string | null;
288
+ readonly reviewFindings: readonly DispatchPullRequestReviewFinding[];
289
+ readonly openWorkOrderStories: readonly DispatchWorkOrderStory[];
290
+ }
291
+ export interface DispatchWorkOrderStory {
292
+ readonly workItemId: string;
293
+ readonly title: string;
294
+ readonly acceptanceCriteria: string;
295
+ }
296
+ export interface DispatchPullRequestReviewFinding {
297
+ readonly claimId: string;
298
+ readonly kind: string;
299
+ readonly bodySha256: string;
300
+ readonly body: string;
301
+ readonly contentAvailable: boolean;
302
+ readonly actionable: boolean;
303
+ readonly actionabilityReason: string;
304
+ readonly author?: string | null;
305
+ readonly url?: string | null;
306
+ readonly path?: string | null;
307
+ readonly line?: number | null;
127
308
  }
128
309
  export interface DispatchResolvedArtifact {
129
310
  readonly kind: string;
@@ -136,6 +317,7 @@ export interface DispatchResolvedArtifact {
136
317
  readonly event?: string | null;
137
318
  }
138
319
  export interface DispatchWorkItem {
320
+ readonly projectId?: string | null;
139
321
  readonly id: string;
140
322
  readonly kind: string;
141
323
  readonly title: string;
@@ -153,6 +335,7 @@ export interface DispatchRepo {
153
335
  readonly serverLocalPath?: string | null;
154
336
  }
155
337
  export interface DispatchCycleRun {
338
+ readonly effectivePlanAmendmentHash?: string | null;
156
339
  readonly id: string;
157
340
  readonly ownerType?: string | null;
158
341
  readonly ownerId?: string | null;
@@ -162,6 +345,7 @@ export interface DispatchCycleRun {
162
345
  readonly requestedBase: string;
163
346
  readonly baseBranch: string;
164
347
  readonly expectedCurrentBranch?: string | null;
348
+ readonly repairHeadSha?: string | null;
165
349
  readonly attempt: number;
166
350
  readonly model: string;
167
351
  }
@@ -169,6 +353,8 @@ export interface DispatchSession {
169
353
  readonly id: string;
170
354
  readonly model: string;
171
355
  readonly lane: string;
356
+ readonly resumedFromSessionId?: string | null;
357
+ readonly resumeProviderThreadId?: string | null;
172
358
  }
173
359
  export interface DispatchLease {
174
360
  readonly id: string;
@@ -191,6 +377,8 @@ export interface DispatchExecution {
191
377
  readonly lane: string;
192
378
  readonly requiresApiKeySecretGrant: boolean;
193
379
  readonly runnerRepoLocalPath?: string | null;
380
+ /** Reasoning effort from the Agents tab; null means the provider CLI's default. */
381
+ readonly effort?: string | null;
194
382
  }
195
383
  export interface ApiKeySecretGrant {
196
384
  readonly grantId: string;
@@ -198,11 +386,18 @@ export interface ApiKeySecretGrant {
198
386
  readonly secret: string;
199
387
  readonly expiresAt: string;
200
388
  }
389
+ export interface ApiKeySecretGrantHandle {
390
+ readonly grantId: string;
391
+ readonly provider: string;
392
+ readonly expiresAt: string;
393
+ }
201
394
  export interface DispatchServerLocalConfig {
202
395
  readonly repoRoot: string;
203
396
  readonly cleanupWorktrees: boolean;
204
397
  }
205
398
  export interface RunnerDispatchEvent {
399
+ /** Stable across callback retries; persisted atomically with the session event. */
400
+ readonly eventId?: string | null;
206
401
  readonly role: string;
207
402
  readonly kind: string;
208
403
  readonly content: string;
@@ -211,6 +406,22 @@ export interface RunnerDispatchEvent {
211
406
  readonly occurredAt?: string | null;
212
407
  /** Optional structured telemetry payload (JSON string), e.g. token usage for provider_usage events. */
213
408
  readonly data?: string | null;
409
+ /** Versioned nonterminal wait evidence. Legacy writers omit this field. */
410
+ readonly wait?: WaitEnvelope | null;
411
+ }
412
+ export interface WaitEnvelope {
413
+ readonly schemaVersion: 2;
414
+ readonly kind: string;
415
+ readonly scope: string;
416
+ readonly resourceKeys: readonly string[];
417
+ readonly queuePosition?: number | null;
418
+ readonly blockerSessionId?: string | null;
419
+ readonly blockerTitle?: string | null;
420
+ readonly wakeCondition: string;
421
+ readonly retryAt?: string | null;
422
+ readonly firstObservedAt: string;
423
+ readonly observationVersion: number;
424
+ readonly contractOrigin: "bridge_v2";
214
425
  }
215
426
  export interface RunnerDispatchSpec {
216
427
  readonly repoPath: string;
@@ -232,12 +443,74 @@ export interface RunnerDispatchArtifact {
232
443
  readonly producedBy: string;
233
444
  readonly status: string;
234
445
  readonly phase?: string | null;
446
+ /**
447
+ * QA sidecars are transported with the terminal result because managed
448
+ * worktrees may be released before the API mirrors the result. The API
449
+ * validates these bytes against the canonical evidence metadata and stores
450
+ * only that metadata.
451
+ */
452
+ readonly sidecars?: readonly RunnerDispatchSidecar[] | null;
453
+ }
454
+ export interface RunnerDispatchSidecar {
455
+ readonly path: string;
456
+ readonly contentBase64: string;
457
+ readonly contentHash: string;
458
+ readonly bytes: number;
459
+ }
460
+ export type FailureCategory = "domain" | "provider" | "transport" | "cancellation" | "ownership" | "resource" | "unknown";
461
+ export type FailurePhase = "offer" | "build" | "prepare" | "agent" | "validation" | "import" | "teardown" | "unknown";
462
+ export type FailureSource = "bridge" | "provider" | "sandbox" | "unknown";
463
+ export type FailureRetryability = "retryable" | "non_retryable" | "policy_required" | "unknown";
464
+ export type FailureOperatorAction = "none" | "retry_dispatch" | "retry_with_policy" | "inspect_failure" | "fix_input" | "fix_environment" | "reauthenticate" | "restore_ownership";
465
+ export interface FailureCause {
466
+ readonly code: string;
467
+ readonly message: string;
468
+ readonly source: FailureSource;
469
+ }
470
+ export interface FailureEnvelope {
471
+ readonly schemaVersion: 2;
472
+ readonly code: string;
473
+ readonly message: string;
474
+ readonly category: FailureCategory;
475
+ readonly phase: FailurePhase;
476
+ readonly source: FailureSource;
477
+ readonly retryability: FailureRetryability;
478
+ readonly operatorAction: FailureOperatorAction;
479
+ readonly causalChain: readonly FailureCause[];
480
+ readonly occurredAt: string;
481
+ readonly contractOrigin: "bridge_v2";
482
+ }
483
+ export interface FailureFacts {
484
+ readonly code: string;
485
+ readonly category: FailureCategory;
486
+ readonly phase: FailurePhase;
487
+ readonly source: FailureSource;
488
+ readonly retryability: FailureRetryability;
489
+ readonly operatorAction: FailureOperatorAction;
490
+ readonly causalChain?: readonly FailureCause[];
491
+ }
492
+ export interface FailurePolicy {
493
+ readonly code: string;
494
+ readonly category: FailureCategory;
495
+ readonly phase: FailurePhase;
496
+ readonly retryability: FailureRetryability;
497
+ readonly operatorAction: FailureOperatorAction;
498
+ readonly allowedSources: readonly FailureSource[];
499
+ readonly known: boolean;
500
+ }
501
+ export declare class ForgeFailureError extends Error {
502
+ readonly failureCode: string;
503
+ readonly failureSource: FailureSource;
504
+ constructor(failureCode: string, message: string, failureSource?: FailureSource, options?: ErrorOptions);
235
505
  }
236
506
  export interface RunOnceResultPacket {
237
- readonly schemaVersion: 1;
507
+ readonly schemaVersion: 1 | 2;
238
508
  readonly exitCode: number;
239
509
  readonly summary: string;
510
+ readonly resultCommitSha?: string | null;
511
+ readonly publishedCommitSha?: string | null;
240
512
  readonly events: readonly RunnerDispatchEvent[];
513
+ readonly failure?: FailureEnvelope | null;
241
514
  readonly spec?: RunnerDispatchSpec | null;
242
515
  readonly artifact?: RunnerDispatchArtifact | null;
243
516
  readonly artifacts?: readonly RunnerDispatchArtifact[] | null;
@@ -247,4 +520,52 @@ export interface RunnerEventLine {
247
520
  readonly event: RunnerDispatchEvent;
248
521
  }
249
522
  export declare function parseRunOnceDispatchPacket(value: unknown): RunOnceDispatchPacket;
250
- export declare function failureResult(summary: string, events?: readonly RunnerDispatchEvent[]): RunOnceResultPacket;
523
+ export declare function parseRunOnceResultPacket(value: unknown): RunOnceResultPacket;
524
+ export declare function waitKindForEvent(eventType: string): string;
525
+ export declare function waitWakeCondition(kind: string): string;
526
+ export interface HostRuntimeReadinessProbeRequest {
527
+ readonly requestId: string;
528
+ readonly fencingToken: string;
529
+ readonly userId: string;
530
+ readonly projectId: string;
531
+ readonly repoId: string;
532
+ readonly runnerId: string;
533
+ readonly runnerInstanceId: string;
534
+ readonly attempt: number;
535
+ readonly repoName: string;
536
+ readonly remoteUrl: string;
537
+ readonly defaultBranch: string;
538
+ readonly cloneOnDemand: boolean;
539
+ readonly runnerRepoLocalPath: string;
540
+ readonly revision: string;
541
+ readonly expiresAt: string;
542
+ readonly repoRoot: string;
543
+ readonly cleanupWorktrees: boolean;
544
+ }
545
+ export interface HostRuntimeReadinessProbeResult {
546
+ readonly status: "parallel_ready" | "serialized" | "failed";
547
+ readonly runtimeContractFingerprint?: string | null;
548
+ readonly runtimeContractSource?: string | null;
549
+ readonly reasonCode?: string | null;
550
+ readonly reasonMessage?: string | null;
551
+ readonly qaAppLaunchTarget?: HostRuntimeReadinessQaLaunchTarget | null;
552
+ readonly checkedAt: string;
553
+ }
554
+ export interface HostRuntimeReadinessQaLaunchTarget {
555
+ readonly managedRuntimePort: string;
556
+ readonly routes: readonly string[];
557
+ }
558
+ export declare function failureResult(summary: string, events?: readonly RunnerDispatchEvent[], facts?: FailureFacts): RunOnceResultPacket;
559
+ export declare function createFailureEnvelope(message: string, facts: FailureFacts, occurredAt?: string): FailureEnvelope;
560
+ export declare function failureFactsFromError(error: unknown, options?: {
561
+ readonly cancelled?: boolean;
562
+ readonly source?: FailureSource;
563
+ }): FailureFacts;
564
+ export declare function failureFactsForCode(code: string, source?: FailureSource): FailureFacts;
565
+ export declare function failurePolicyForCode(code: string): FailurePolicy;
566
+ /**
567
+ * Rebuilds an error graph at a privileged execution boundary without
568
+ * retaining the raw error or any raw recursive cause. Forge failure metadata
569
+ * survives so the P7 taxonomy remains authoritative after sanitization.
570
+ */
571
+ export declare function sanitizeFailureError(error: unknown, exactSecrets?: readonly string[]): Error;