@jterrats/open-orchestra 1.0.8 → 1.0.9

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 (109) hide show
  1. package/AGENTS.md +12 -2
  2. package/CLAUDE.md +13 -2
  3. package/dist/acceptance-criteria-quality.d.ts +12 -0
  4. package/dist/acceptance-criteria-quality.js +137 -0
  5. package/dist/acceptance-criteria-quality.js.map +1 -0
  6. package/dist/architecture-debt-inventory.d.ts +31 -0
  7. package/dist/architecture-debt-inventory.js +200 -0
  8. package/dist/architecture-debt-inventory.js.map +1 -0
  9. package/dist/architecture-debt-report.d.ts +2 -0
  10. package/dist/architecture-debt-report.js +28 -0
  11. package/dist/architecture-debt-report.js.map +1 -0
  12. package/dist/autonomous-phase-lifecycle.d.ts +5 -1
  13. package/dist/autonomous-phase-lifecycle.js +87 -17
  14. package/dist/autonomous-phase-lifecycle.js.map +1 -1
  15. package/dist/cli-payloads.d.ts +4 -0
  16. package/dist/cli-payloads.js +24 -0
  17. package/dist/cli-payloads.js.map +1 -0
  18. package/dist/command-manifest.js +3 -1
  19. package/dist/command-manifest.js.map +1 -1
  20. package/dist/command-routes.js +3 -1
  21. package/dist/command-routes.js.map +1 -1
  22. package/dist/commands.d.ts +1 -1
  23. package/dist/commands.js +16 -3
  24. package/dist/commands.js.map +1 -1
  25. package/dist/github.js +22 -7
  26. package/dist/github.js.map +1 -1
  27. package/dist/metrics-commands.js +69 -17
  28. package/dist/metrics-commands.js.map +1 -1
  29. package/dist/phase-executor.js +5 -169
  30. package/dist/phase-executor.js.map +1 -1
  31. package/dist/phase-playbooks.js +17 -0
  32. package/dist/phase-playbooks.js.map +1 -1
  33. package/dist/qa-e2e-artifacts.d.ts +7 -0
  34. package/dist/qa-e2e-artifacts.js +225 -0
  35. package/dist/qa-e2e-artifacts.js.map +1 -0
  36. package/dist/quality-contracts.d.ts +83 -0
  37. package/dist/quality-contracts.js +463 -0
  38. package/dist/quality-contracts.js.map +1 -0
  39. package/dist/refresh-generated.js +81 -28
  40. package/dist/refresh-generated.js.map +1 -1
  41. package/dist/runtime-bootstrap.js +3 -0
  42. package/dist/runtime-bootstrap.js.map +1 -1
  43. package/dist/runtime-commands.d.ts +2 -0
  44. package/dist/runtime-commands.js +186 -1
  45. package/dist/runtime-commands.js.map +1 -1
  46. package/dist/runtime-context-manifest.d.ts +27 -0
  47. package/dist/runtime-context-manifest.js +151 -0
  48. package/dist/runtime-context-manifest.js.map +1 -0
  49. package/dist/runtime-execution-renderer.d.ts +3 -1
  50. package/dist/runtime-execution-renderer.js +7 -1
  51. package/dist/runtime-execution-renderer.js.map +1 -1
  52. package/dist/runtime-execution.d.ts +2 -1
  53. package/dist/runtime-execution.js +162 -2
  54. package/dist/runtime-execution.js.map +1 -1
  55. package/dist/runtime-guardrails.js +5 -1
  56. package/dist/runtime-guardrails.js.map +1 -1
  57. package/dist/runtime-lifecycle-watch.d.ts +93 -0
  58. package/dist/runtime-lifecycle-watch.js +391 -0
  59. package/dist/runtime-lifecycle-watch.js.map +1 -0
  60. package/dist/runtime-parent-actions.d.ts +7 -2
  61. package/dist/runtime-parent-actions.js +132 -1
  62. package/dist/runtime-parent-actions.js.map +1 -1
  63. package/dist/runtime-spawn-bridge.js +21 -1
  64. package/dist/runtime-spawn-bridge.js.map +1 -1
  65. package/dist/sonar-insights.d.ts +1 -0
  66. package/dist/sonar-insights.js +6 -2
  67. package/dist/sonar-insights.js.map +1 -1
  68. package/dist/types/model-config.d.ts +6 -0
  69. package/dist/types/runtime.d.ts +17 -2
  70. package/dist/types/tasks.d.ts +12 -0
  71. package/dist/types.d.ts +1 -1
  72. package/dist/types.js.map +1 -1
  73. package/dist/web-api.js +8 -0
  74. package/dist/web-api.js.map +1 -1
  75. package/dist/web-console/assets/index-DXbrxR_d.js +11 -0
  76. package/dist/web-console/index.html +1 -1
  77. package/dist/workflow-handoff-assessment.d.ts +3 -0
  78. package/dist/workflow-handoff-assessment.js +246 -0
  79. package/dist/workflow-handoff-assessment.js.map +1 -0
  80. package/dist/workflow-handoff-contract.d.ts +32 -0
  81. package/dist/workflow-handoff-contract.js +123 -0
  82. package/dist/workflow-handoff-contract.js.map +1 -0
  83. package/dist/workflow-phase-transition.d.ts +16 -0
  84. package/dist/workflow-phase-transition.js +76 -0
  85. package/dist/workflow-phase-transition.js.map +1 -0
  86. package/dist/workflow-run-commands.js +47 -12
  87. package/dist/workflow-run-commands.js.map +1 -1
  88. package/dist/workflow-services.js +57 -27
  89. package/dist/workflow-services.js.map +1 -1
  90. package/dist/workspace-init-artifacts.d.ts +9 -0
  91. package/dist/workspace-init-artifacts.js +28 -0
  92. package/dist/workspace-init-artifacts.js.map +1 -1
  93. package/dist/workspace-runtime-bootstrap.d.ts +3 -1
  94. package/dist/workspace-runtime-bootstrap.js +8 -3
  95. package/dist/workspace-runtime-bootstrap.js.map +1 -1
  96. package/dist/workspace.d.ts +5 -2
  97. package/dist/workspace.js +44 -15
  98. package/dist/workspace.js.map +1 -1
  99. package/docs/architecture-debt-inventory.md +25 -0
  100. package/docs/e2e-test-batteries.md +34 -23
  101. package/docs/orchestra-mvp.md +8 -0
  102. package/docs/runtime-adapters.md +68 -8
  103. package/docs/sonar-quality-gates.md +133 -11
  104. package/package.json +4 -1
  105. package/rules/delivery-quality-gates.mdc +6 -0
  106. package/rules/devops-tooling.mdc +1 -0
  107. package/rules/security-guardrails.mdc +3 -0
  108. package/rules/testing-discipline.mdc +9 -0
  109. package/dist/web-console/assets/index-CgSKcay8.js +0 -11
@@ -0,0 +1,391 @@
1
+ import { resolveWorkspaceWritePath, exists } from "./fs-utils.js";
2
+ import { getRuntimeExecutionAdapter } from "./runtime-adapters.js";
3
+ import { normalizeRuntimeDelegationGuardrails, summarizeRuntimeDelegationOperations, } from "./runtime-guardrails.js";
4
+ import { listPendingRuntimeParentActions } from "./runtime-parent-actions.js";
5
+ import { recordRuntimeSpawnLifecycle, } from "./runtime-spawn-bridge.js";
6
+ import { listActiveAutonomousRuns, listAutonomousRuns, } from "./autonomous-workflow.js";
7
+ import { readEvents } from "./workspace.js";
8
+ import { getWorkflowConfig } from "./workflow-services.js";
9
+ import { runWorkflowRun } from "./workflow-run-commands.js";
10
+ import { removeUndefined } from "./command-utils.js";
11
+ export async function inspectRuntimeLifecycleWatch({ root, taskId, now = Date.now(), }) {
12
+ const config = await getWorkflowConfig(root);
13
+ const policy = normalizeRuntimeDelegationGuardrails(config.runtimePolicy?.delegation?.guardrails);
14
+ const events = await readEvents(root);
15
+ const report = summarizeRuntimeDelegationOperations({
16
+ policy,
17
+ events,
18
+ includeClosed: true,
19
+ now,
20
+ ...(taskId ? { taskId } : {}),
21
+ });
22
+ const active = report.sessions.filter((session) => session.active);
23
+ const transitions = await Promise.all(active.map((session) => inspectSession({
24
+ root,
25
+ session,
26
+ now,
27
+ timeoutMs: policy.timeoutMs,
28
+ ...optionalExpectedArtifact(expectedResultArtifact(events, session.sessionId)),
29
+ })));
30
+ return {
31
+ generatedAt: new Date(now).toISOString(),
32
+ inspected: active.length,
33
+ transitions,
34
+ };
35
+ }
36
+ export async function dispatchRuntimeParentActionsUntilIdle({ root, taskId, runtime, untilIdle, timeoutMs, idleTimeoutMs, intervalMs, now = Date.now, io, jsonOutput, }) {
37
+ const startedAt = now();
38
+ let lastProgressAt = startedAt;
39
+ let attempts = 0;
40
+ let stopReason = untilIdle
41
+ ? "idle"
42
+ : "once";
43
+ const passes = [];
44
+ while (true) {
45
+ attempts += 1;
46
+ const pass = await dispatchRuntimeParentActionPass(removeUndefined({
47
+ root,
48
+ taskId,
49
+ runtime,
50
+ now,
51
+ io,
52
+ jsonOutput,
53
+ passNumber: attempts,
54
+ }));
55
+ passes.push(pass);
56
+ if (runtimeDispatchPassMadeProgress(pass)) {
57
+ lastProgressAt = now();
58
+ }
59
+ if (!untilIdle) {
60
+ break;
61
+ }
62
+ const nextStopReason = runtimeDispatchStopReason({
63
+ now: now(),
64
+ startedAt,
65
+ lastProgressAt,
66
+ timeoutMs,
67
+ idleTimeoutMs,
68
+ });
69
+ if (nextStopReason) {
70
+ stopReason = nextStopReason;
71
+ break;
72
+ }
73
+ await sleep(Math.max(1, intervalMs));
74
+ }
75
+ return {
76
+ generatedAt: new Date(now()).toISOString(),
77
+ mode: untilIdle ? "until-idle" : "once",
78
+ ...(taskId ? { taskId } : {}),
79
+ ...(runtime ? { runtime } : {}),
80
+ attempts,
81
+ timeoutMs,
82
+ idleTimeoutMs,
83
+ intervalMs,
84
+ stopReason,
85
+ passes,
86
+ };
87
+ }
88
+ export async function applyRuntimeWatchTransition(root, transition, { io, jsonOutput, }) {
89
+ const lifecycleStatus = transition.status === "timed_out" ? "timed_out" : "completed";
90
+ const event = await recordRuntimeSpawnLifecycle({
91
+ root,
92
+ sessionId: transition.sessionId,
93
+ status: lifecycleStatus,
94
+ spawnedAgentId: `watcher:${transition.sessionId}`,
95
+ ...(transition.artifact ? { artifact: transition.artifact } : {}),
96
+ summary: `Runtime watch ${lifecycleStatus}: ${transition.reason}`,
97
+ });
98
+ if (lifecycleStatus === "completed") {
99
+ await attemptRuntimeLifecycleAutoResume({
100
+ root,
101
+ sessionId: transition.sessionId,
102
+ status: "completed",
103
+ disabled: false,
104
+ jsonOutput,
105
+ io,
106
+ });
107
+ }
108
+ return { sessionId: transition.sessionId, status: event.type, applied: true };
109
+ }
110
+ export async function attemptRuntimeLifecycleAutoResume({ root, sessionId, status, disabled, jsonOutput, io, }) {
111
+ if (disabled) {
112
+ return { status: "skipped", reason: "disabled by --no-auto-resume" };
113
+ }
114
+ if (status !== "completed" && status !== "closed") {
115
+ return {
116
+ status: "skipped",
117
+ reason: `lifecycle status ${status} does not auto-resume workflow`,
118
+ };
119
+ }
120
+ const run = await findPausedRunForRuntimeSession(root, sessionId);
121
+ if (!run) {
122
+ return {
123
+ status: "skipped",
124
+ reason: "no paused workflow run is waiting on this runtime session",
125
+ };
126
+ }
127
+ const resumeOutput = [];
128
+ const resumeIo = jsonOutput
129
+ ? { log: (line) => resumeOutput.push(line) }
130
+ : io;
131
+ await runWorkflowRun(removeUndefined({
132
+ task: run.taskId,
133
+ resume: run.id,
134
+ "phase-execution": run.phaseExecutionMode ?? "auto",
135
+ json: jsonOutput,
136
+ }), resumeIo, root);
137
+ const resumed = await findRunById(root, run.id);
138
+ return {
139
+ status: "resumed",
140
+ runId: run.id,
141
+ taskId: run.taskId,
142
+ transition: workflowResumeTransition(resumed),
143
+ output: resumeOutput,
144
+ };
145
+ }
146
+ async function dispatchRuntimeParentActionPass({ root, taskId, runtime, now, io, jsonOutput, passNumber, }) {
147
+ const actionResults = await dispatchPendingParentActions(removeUndefined({
148
+ root,
149
+ taskId,
150
+ runtime,
151
+ }));
152
+ const watch = await inspectRuntimeLifecycleWatch({
153
+ root,
154
+ ...(taskId ? { taskId } : {}),
155
+ now: now(),
156
+ });
157
+ const applied = await applyRuntimeWatchTransitions({
158
+ root,
159
+ transitions: watch.transitions,
160
+ io,
161
+ jsonOutput,
162
+ });
163
+ return {
164
+ pass: passNumber,
165
+ actions: actionResults,
166
+ watch: { ...watch, applied },
167
+ };
168
+ }
169
+ async function dispatchPendingParentActions({ root, taskId, runtime, }) {
170
+ const actions = listPendingRuntimeParentActions({
171
+ events: await readEvents(root),
172
+ ...(taskId ? { taskId } : {}),
173
+ });
174
+ return Promise.all(actions.map((action) => dispatchParentAction(removeUndefined({ root, action, runtime }))));
175
+ }
176
+ async function applyRuntimeWatchTransitions({ root, transitions, io, jsonOutput, }) {
177
+ const applied = [];
178
+ for (const transition of transitions) {
179
+ if (!isTerminalWatchTransition(transition)) {
180
+ continue;
181
+ }
182
+ applied.push(await applyRuntimeWatchTransition(root, transition, {
183
+ io,
184
+ jsonOutput,
185
+ }));
186
+ }
187
+ return applied;
188
+ }
189
+ function isTerminalWatchTransition(transition) {
190
+ return transition.status === "completed" || transition.status === "timed_out";
191
+ }
192
+ function runtimeDispatchPassMadeProgress({ actions, watch, }) {
193
+ return (actions.some((result) => result.status === "dispatched") ||
194
+ watch.applied.length > 0);
195
+ }
196
+ function runtimeDispatchStopReason({ now, startedAt, lastProgressAt, timeoutMs, idleTimeoutMs, }) {
197
+ if (timeoutMs > 0 && now - startedAt >= timeoutMs) {
198
+ return "timeout";
199
+ }
200
+ if (now - lastProgressAt >= idleTimeoutMs) {
201
+ return "idle";
202
+ }
203
+ return undefined;
204
+ }
205
+ function workflowResumeTransition(run) {
206
+ if (run?.status === "done") {
207
+ return "done";
208
+ }
209
+ if (run?.status === "paused") {
210
+ return "blocked";
211
+ }
212
+ return "forward";
213
+ }
214
+ async function dispatchParentAction({ root, action, runtime, }) {
215
+ const base = {
216
+ sessionId: action.sessionId,
217
+ taskId: action.taskId,
218
+ runtime: action.runtime,
219
+ phase: action.phase,
220
+ role: action.role,
221
+ };
222
+ const reason = await blockedDispatchReason(removeUndefined({ root, action, runtime }));
223
+ if (reason) {
224
+ return { ...base, status: "skipped", reason };
225
+ }
226
+ const agentId = `dispatcher:${action.sessionId}`;
227
+ await recordRuntimeSpawnLifecycle({
228
+ root,
229
+ sessionId: action.sessionId,
230
+ status: "spawned",
231
+ spawnedAgentId: agentId,
232
+ summary: `Runtime parent action dispatched: ${action.action.kind}`,
233
+ });
234
+ return {
235
+ ...base,
236
+ status: "dispatched",
237
+ agentId,
238
+ reason: `dispatched ${action.action.kind} through active parent runtime`,
239
+ };
240
+ }
241
+ async function blockedDispatchReason({ root, action, runtime, }) {
242
+ if (!action.actionable)
243
+ return action.rationale;
244
+ if (runtime && action.runtime !== runtime) {
245
+ return `active runtime ${runtime} does not match action runtime ${action.runtime}`;
246
+ }
247
+ const sessions = await runtimeSessions(root, action.taskId);
248
+ const session = sessions.find((candidate) => candidate.sessionId === action.sessionId);
249
+ if (session?.status === "suspended") {
250
+ return "session is explicitly suspended";
251
+ }
252
+ if (session && !session.active) {
253
+ return `session status ${session.status} is not dispatchable`;
254
+ }
255
+ const adapter = safeRuntimeAdapter(action.runtime);
256
+ if (!adapter)
257
+ return `runtime ${action.runtime} is not available`;
258
+ if (adapter.subagents.spawn.mode === "unsupported") {
259
+ return `runtime ${action.runtime} does not support safe parent dispatch`;
260
+ }
261
+ if (!adapter.subagents.spawn.requiresParentRuntime) {
262
+ return `runtime ${action.runtime} does not expose a parent runtime action`;
263
+ }
264
+ if (action.action.kind === "manual-runtime-request") {
265
+ return "manual runtime requests are not auto-dispatchable";
266
+ }
267
+ if (adapter.subagents.spawn.tool !== action.action.tool) {
268
+ return `action tool ${action.action.tool} does not match runtime tool ${adapter.subagents.spawn.tool}`;
269
+ }
270
+ return undefined;
271
+ }
272
+ async function runtimeSessions(root, taskId) {
273
+ const config = await getWorkflowConfig(root);
274
+ const policy = normalizeRuntimeDelegationGuardrails(config.runtimePolicy?.delegation?.guardrails);
275
+ return summarizeRuntimeDelegationOperations({
276
+ policy,
277
+ events: await readEvents(root),
278
+ taskId,
279
+ includeClosed: true,
280
+ }).sessions;
281
+ }
282
+ function safeRuntimeAdapter(runtime) {
283
+ try {
284
+ return getRuntimeExecutionAdapter(runtime);
285
+ }
286
+ catch {
287
+ return undefined;
288
+ }
289
+ }
290
+ async function inspectSession({ root, session, now, timeoutMs, expectedArtifact, }) {
291
+ const base = {
292
+ sessionId: session.sessionId,
293
+ taskId: session.taskId,
294
+ ...(session.runtime ? { runtime: session.runtime } : {}),
295
+ ...(session.phase ? { phase: session.phase } : {}),
296
+ ...(session.role ? { role: session.role } : {}),
297
+ currentStatus: session.status,
298
+ };
299
+ if (session.status === "requested") {
300
+ return {
301
+ ...base,
302
+ status: "waiting",
303
+ reason: "session is requested but has not been spawned",
304
+ };
305
+ }
306
+ if (session.status === "queued" || session.status === "suspended") {
307
+ return {
308
+ ...base,
309
+ status: "skipped",
310
+ reason: `session status ${session.status} is not watchable`,
311
+ };
312
+ }
313
+ const ageMs = Math.max(0, now - Date.parse(session.updatedAt));
314
+ if (ageMs > timeoutMs) {
315
+ return {
316
+ ...base,
317
+ status: "timed_out",
318
+ reason: `session exceeded timeout ${timeoutMs}ms`,
319
+ };
320
+ }
321
+ if (!expectedArtifact) {
322
+ return {
323
+ ...base,
324
+ status: "waiting",
325
+ reason: "no expected result artifact is known yet",
326
+ };
327
+ }
328
+ if (!isSafeHandoffArtifact(expectedArtifact)) {
329
+ return {
330
+ ...base,
331
+ status: "skipped",
332
+ artifact: expectedArtifact,
333
+ reason: "expected artifact is not a safe workflow handoff path",
334
+ };
335
+ }
336
+ if (await exists(resolveWorkspaceWritePath(root, expectedArtifact))) {
337
+ return {
338
+ ...base,
339
+ status: "completed",
340
+ artifact: expectedArtifact,
341
+ reason: "expected handoff artifact exists",
342
+ };
343
+ }
344
+ return {
345
+ ...base,
346
+ status: "waiting",
347
+ artifact: expectedArtifact,
348
+ reason: "expected handoff artifact is not present yet",
349
+ };
350
+ }
351
+ function expectedResultArtifact(events, sessionId) {
352
+ for (const event of [...events].sort((left, right) => right.timestamp.localeCompare(left.timestamp))) {
353
+ if (event.metadata.sessionId !== sessionId)
354
+ continue;
355
+ const direct = event.metadata.expectedResultArtifact;
356
+ if (typeof direct === "string")
357
+ return direct;
358
+ const action = event.metadata.parentRuntimeAction;
359
+ if (!action || typeof action !== "object")
360
+ continue;
361
+ const payload = action.payload;
362
+ if (!payload || typeof payload !== "object")
363
+ continue;
364
+ const artifact = payload
365
+ .expectedResultArtifact;
366
+ if (typeof artifact === "string")
367
+ return artifact;
368
+ }
369
+ return undefined;
370
+ }
371
+ function isSafeHandoffArtifact(artifact) {
372
+ return (artifact.startsWith(".agent-workflow/handoffs/") && !artifact.includes(".."));
373
+ }
374
+ function optionalExpectedArtifact(expectedArtifact) {
375
+ return expectedArtifact ? { expectedArtifact } : {};
376
+ }
377
+ async function findPausedRunForRuntimeSession(root, sessionId) {
378
+ return (await listActiveAutonomousRuns(root)).find((run) => run.status === "paused" &&
379
+ run.phases.some((phase) => phase.status === "blocked" &&
380
+ phase.executor?.executor === "runtime-native-subagent" &&
381
+ phase.executor.sessionId === sessionId));
382
+ }
383
+ async function findRunById(root, runId) {
384
+ return (await listAutonomousRuns(root)).find((run) => run.id === runId);
385
+ }
386
+ function sleep(ms) {
387
+ return new Promise((resolve) => {
388
+ setTimeout(resolve, ms);
389
+ });
390
+ }
391
+ //# sourceMappingURL=runtime-lifecycle-watch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-lifecycle-watch.js","sourceRoot":"","sources":["../src/runtime-lifecycle-watch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAClE,OAAO,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AACnE,OAAO,EACL,oCAAoC,EACpC,oCAAoC,GACrC,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,+BAA+B,EAAE,MAAM,6BAA6B,CAAC;AAC9E,OAAO,EACL,2BAA2B,GAE5B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,wBAAwB,EACxB,kBAAkB,GACnB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAmFrD,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAAC,EACjD,IAAI,EACJ,MAAM,EACN,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,GAKjB;IACC,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC7C,MAAM,MAAM,GAAG,oCAAoC,CACjD,MAAM,CAAC,aAAa,EAAE,UAAU,EAAE,UAAU,CAC7C,CAAC;IACF,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC;IACtC,MAAM,MAAM,GAAG,oCAAoC,CAAC;QAClD,MAAM;QACN,MAAM;QACN,aAAa,EAAE,IAAI;QACnB,GAAG;QACH,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC9B,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACnE,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,GAAG,CACnC,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CACrB,cAAc,CAAC;QACb,IAAI;QACJ,OAAO;QACP,GAAG;QACH,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,GAAG,wBAAwB,CACzB,sBAAsB,CAAC,MAAM,EAAE,OAAO,CAAC,SAAS,CAAC,CAClD;KACF,CAAC,CACH,CACF,CAAC;IACF,OAAO;QACL,WAAW,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE;QACxC,SAAS,EAAE,MAAM,CAAC,MAAM;QACxB,WAAW;KACZ,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qCAAqC,CAAC,EAC1D,IAAI,EACJ,MAAM,EACN,OAAO,EACP,SAAS,EACT,SAAS,EACT,aAAa,EACb,UAAU,EACV,GAAG,GAAG,IAAI,CAAC,GAAG,EACd,EAAE,EACF,UAAU,GACyB;IACnC,MAAM,SAAS,GAAG,GAAG,EAAE,CAAC;IACxB,IAAI,cAAc,GAAG,SAAS,CAAC;IAC/B,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,IAAI,UAAU,GAAoD,SAAS;QACzE,CAAC,CAAC,MAAM;QACR,CAAC,CAAC,MAAM,CAAC;IACX,MAAM,MAAM,GAAsC,EAAE,CAAC;IAErD,OAAO,IAAI,EAAE,CAAC;QACZ,QAAQ,IAAI,CAAC,CAAC;QACd,MAAM,IAAI,GAAG,MAAM,+BAA+B,CAChD,eAAe,CAAC;YACd,IAAI;YACJ,MAAM;YACN,OAAO;YACP,GAAG;YACH,EAAE;YACF,UAAU;YACV,UAAU,EAAE,QAAQ;SACrB,CAAC,CACH,CAAC;QACF,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAElB,IAAI,+BAA+B,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1C,cAAc,GAAG,GAAG,EAAE,CAAC;QACzB,CAAC;QACD,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM;QACR,CAAC;QACD,MAAM,cAAc,GAAG,yBAAyB,CAAC;YAC/C,GAAG,EAAE,GAAG,EAAE;YACV,SAAS;YACT,cAAc;YACd,SAAS;YACT,aAAa;SACd,CAAC,CAAC;QACH,IAAI,cAAc,EAAE,CAAC;YACnB,UAAU,GAAG,cAAc,CAAC;YAC5B,MAAM;QACR,CAAC;QACD,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC;IACvC,CAAC;IAED,OAAO;QACL,WAAW,EAAE,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,WAAW,EAAE;QAC1C,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM;QACvC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7B,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/B,QAAQ;QACR,SAAS;QACT,aAAa;QACb,UAAU;QACV,UAAU;QACV,MAAM;KACP,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,IAAY,EACZ,UAAkC,EAClC,EACE,EAAE,EACF,UAAU,GAIX;IAED,MAAM,eAAe,GACnB,UAAU,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC;IAChE,MAAM,KAAK,GAAG,MAAM,2BAA2B,CAAC;QAC9C,IAAI;QACJ,SAAS,EAAE,UAAU,CAAC,SAAS;QAC/B,MAAM,EAAE,eAAe;QACvB,cAAc,EAAE,WAAW,UAAU,CAAC,SAAS,EAAE;QACjD,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjE,OAAO,EAAE,iBAAiB,eAAe,KAAK,UAAU,CAAC,MAAM,EAAE;KAClE,CAAC,CAAC;IACH,IAAI,eAAe,KAAK,WAAW,EAAE,CAAC;QACpC,MAAM,iCAAiC,CAAC;YACtC,IAAI;YACJ,SAAS,EAAE,UAAU,CAAC,SAAS;YAC/B,MAAM,EAAE,WAAW;YACnB,QAAQ,EAAE,KAAK;YACf,UAAU;YACV,EAAE;SACH,CAAC,CAAC;IACL,CAAC;IACD,OAAO,EAAE,SAAS,EAAE,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAChF,CAAC;AAYD,MAAM,CAAC,KAAK,UAAU,iCAAiC,CAAC,EACtD,IAAI,EACJ,SAAS,EACT,MAAM,EACN,QAAQ,EACR,UAAU,EACV,EAAE,GAQH;IACC,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,8BAA8B,EAAE,CAAC;IACvE,CAAC;IACD,IAAI,MAAM,KAAK,WAAW,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;QAClD,OAAO;YACL,MAAM,EAAE,SAAS;YACjB,MAAM,EAAE,oBAAoB,MAAM,gCAAgC;SACnE,CAAC;IACJ,CAAC;IACD,MAAM,GAAG,GAAG,MAAM,8BAA8B,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAClE,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAO;YACL,MAAM,EAAE,SAAS;YACjB,MAAM,EAAE,2DAA2D;SACpE,CAAC;IACJ,CAAC;IACD,MAAM,YAAY,GAAa,EAAE,CAAC;IAClC,MAAM,QAAQ,GAAU,UAAU;QAChC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;QAC5C,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,cAAc,CAClB,eAAe,CAAC;QACd,IAAI,EAAE,GAAG,CAAC,MAAM;QAChB,MAAM,EAAE,GAAG,CAAC,EAAE;QACd,iBAAiB,EAAE,GAAG,CAAC,kBAAkB,IAAI,MAAM;QACnD,IAAI,EAAE,UAAU;KACjB,CAAC,EACF,QAAQ,EACR,IAAI,CACL,CAAC;IACF,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;IAChD,OAAO;QACL,MAAM,EAAE,SAAS;QACjB,KAAK,EAAE,GAAG,CAAC,EAAE;QACb,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,UAAU,EAAE,wBAAwB,CAAC,OAAO,CAAC;QAC7C,MAAM,EAAE,YAAY;KACrB,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,+BAA+B,CAAC,EAC7C,IAAI,EACJ,MAAM,EACN,OAAO,EACP,GAAG,EACH,EAAE,EACF,UAAU,EACV,UAAU,GASX;IACC,MAAM,aAAa,GAAG,MAAM,4BAA4B,CACtD,eAAe,CAAC;QACd,IAAI;QACJ,MAAM;QACN,OAAO;KACR,CAAC,CACH,CAAC;IACF,MAAM,KAAK,GAAG,MAAM,4BAA4B,CAAC;QAC/C,IAAI;QACJ,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7B,GAAG,EAAE,GAAG,EAAE;KACX,CAAC,CAAC;IACH,MAAM,OAAO,GAAG,MAAM,4BAA4B,CAAC;QACjD,IAAI;QACJ,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,EAAE;QACF,UAAU;KACX,CAAC,CAAC;IACH,OAAO;QACL,IAAI,EAAE,UAAU;QAChB,OAAO,EAAE,aAAa;QACtB,KAAK,EAAE,EAAE,GAAG,KAAK,EAAE,OAAO,EAAE;KAC7B,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,4BAA4B,CAAC,EAC1C,IAAI,EACJ,MAAM,EACN,OAAO,GAKR;IACC,MAAM,OAAO,GAAG,+BAA+B,CAAC;QAC9C,MAAM,EAAE,MAAM,UAAU,CAAC,IAAI,CAAC;QAC9B,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC9B,CAAC,CAAC;IACH,OAAO,OAAO,CAAC,GAAG,CAChB,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CACrB,oBAAoB,CAAC,eAAe,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,CACjE,CACF,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,4BAA4B,CAAC,EAC1C,IAAI,EACJ,WAAW,EACX,EAAE,EACF,UAAU,GAMX;IACC,MAAM,OAAO,GAAG,EAAE,CAAC;IACnB,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;QACrC,IAAI,CAAC,yBAAyB,CAAC,UAAU,CAAC,EAAE,CAAC;YAC3C,SAAS;QACX,CAAC;QACD,OAAO,CAAC,IAAI,CACV,MAAM,2BAA2B,CAAC,IAAI,EAAE,UAAU,EAAE;YAClD,EAAE;YACF,UAAU;SACX,CAAC,CACH,CAAC;IACJ,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,yBAAyB,CAChC,UAAkC;IAElC,OAAO,UAAU,CAAC,MAAM,KAAK,WAAW,IAAI,UAAU,CAAC,MAAM,KAAK,WAAW,CAAC;AAChF,CAAC;AAED,SAAS,+BAA+B,CAAC,EACvC,OAAO,EACP,KAAK,GAC2B;IAChC,OAAO,CACL,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,KAAK,YAAY,CAAC;QACxD,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CACzB,CAAC;AACJ,CAAC;AAED,SAAS,yBAAyB,CAAC,EACjC,GAAG,EACH,SAAS,EACT,cAAc,EACd,SAAS,EACT,aAAa,GAOd;IACC,IAAI,SAAS,GAAG,CAAC,IAAI,GAAG,GAAG,SAAS,IAAI,SAAS,EAAE,CAAC;QAClD,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,GAAG,GAAG,cAAc,IAAI,aAAa,EAAE,CAAC;QAC1C,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,wBAAwB,CAC/B,GAA8B;IAE9B,IAAI,GAAG,EAAE,MAAM,KAAK,MAAM,EAAE,CAAC;QAC3B,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,IAAI,GAAG,EAAE,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC7B,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,KAAK,UAAU,oBAAoB,CAAC,EAClC,IAAI,EACJ,MAAM,EACN,OAAO,GAKR;IACC,MAAM,IAAI,GAAG;QACX,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,IAAI,EAAE,MAAM,CAAC,IAAI;KAClB,CAAC;IACF,MAAM,MAAM,GAAG,MAAM,qBAAqB,CACxC,eAAe,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAC3C,CAAC;IACF,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC;IAChD,CAAC;IACD,MAAM,OAAO,GAAG,cAAc,MAAM,CAAC,SAAS,EAAE,CAAC;IACjD,MAAM,2BAA2B,CAAC;QAChC,IAAI;QACJ,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,MAAM,EAAE,SAAS;QACjB,cAAc,EAAE,OAAO;QACvB,OAAO,EAAE,qCAAqC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE;KACnE,CAAC,CAAC;IACH,OAAO;QACL,GAAG,IAAI;QACP,MAAM,EAAE,YAAY;QACpB,OAAO;QACP,MAAM,EAAE,cAAc,MAAM,CAAC,MAAM,CAAC,IAAI,gCAAgC;KACzE,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,qBAAqB,CAAC,EACnC,IAAI,EACJ,MAAM,EACN,OAAO,GAKR;IACC,IAAI,CAAC,MAAM,CAAC,UAAU;QAAE,OAAO,MAAM,CAAC,SAAS,CAAC;IAChD,IAAI,OAAO,IAAI,MAAM,CAAC,OAAO,KAAK,OAAO,EAAE,CAAC;QAC1C,OAAO,kBAAkB,OAAO,kCAAkC,MAAM,CAAC,OAAO,EAAE,CAAC;IACrF,CAAC;IACD,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IAC5D,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAC3B,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,SAAS,KAAK,MAAM,CAAC,SAAS,CACxD,CAAC;IACF,IAAI,OAAO,EAAE,MAAM,KAAK,WAAW,EAAE,CAAC;QACpC,OAAO,iCAAiC,CAAC;IAC3C,CAAC;IACD,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QAC/B,OAAO,kBAAkB,OAAO,CAAC,MAAM,sBAAsB,CAAC;IAChE,CAAC;IACD,MAAM,OAAO,GAAG,kBAAkB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACnD,IAAI,CAAC,OAAO;QAAE,OAAO,WAAW,MAAM,CAAC,OAAO,mBAAmB,CAAC;IAClE,IAAI,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;QACnD,OAAO,WAAW,MAAM,CAAC,OAAO,wCAAwC,CAAC;IAC3E,CAAC;IACD,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,qBAAqB,EAAE,CAAC;QACnD,OAAO,WAAW,MAAM,CAAC,OAAO,0CAA0C,CAAC;IAC7E,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,wBAAwB,EAAE,CAAC;QACpD,OAAO,mDAAmD,CAAC;IAC7D,CAAC;IACD,IAAI,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACxD,OAAO,eAAe,MAAM,CAAC,MAAM,CAAC,IAAI,gCAAgC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;IACzG,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,KAAK,UAAU,eAAe,CAC5B,IAAY,EACZ,MAAc;IAEd,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC7C,MAAM,MAAM,GAAG,oCAAoC,CACjD,MAAM,CAAC,aAAa,EAAE,UAAU,EAAE,UAAU,CAC7C,CAAC;IACF,OAAO,oCAAoC,CAAC;QAC1C,MAAM;QACN,MAAM,EAAE,MAAM,UAAU,CAAC,IAAI,CAAC;QAC9B,MAAM;QACN,aAAa,EAAE,IAAI;KACpB,CAAC,CAAC,QAAQ,CAAC;AACd,CAAC;AAED,SAAS,kBAAkB,CAAC,OAAe;IACzC,IAAI,CAAC;QACH,OAAO,0BAA0B,CAC/B,OAA2D,CAC5D,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,KAAK,UAAU,cAAc,CAAC,EAC5B,IAAI,EACJ,OAAO,EACP,GAAG,EACH,SAAS,EACT,gBAAgB,GAOjB;IACC,MAAM,IAAI,GAAG;QACX,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACxD,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAClD,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/C,aAAa,EAAE,OAAO,CAAC,MAAM;KAC9B,CAAC;IACF,IAAI,OAAO,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;QACnC,OAAO;YACL,GAAG,IAAI;YACP,MAAM,EAAE,SAAS;YACjB,MAAM,EAAE,+CAA+C;SACxD,CAAC;IACJ,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,KAAK,QAAQ,IAAI,OAAO,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;QAClE,OAAO;YACL,GAAG,IAAI;YACP,MAAM,EAAE,SAAS;YACjB,MAAM,EAAE,kBAAkB,OAAO,CAAC,MAAM,mBAAmB;SAC5D,CAAC;IACJ,CAAC;IACD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;IAC/D,IAAI,KAAK,GAAG,SAAS,EAAE,CAAC;QACtB,OAAO;YACL,GAAG,IAAI;YACP,MAAM,EAAE,WAAW;YACnB,MAAM,EAAE,4BAA4B,SAAS,IAAI;SAClD,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACtB,OAAO;YACL,GAAG,IAAI;YACP,MAAM,EAAE,SAAS;YACjB,MAAM,EAAE,0CAA0C;SACnD,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,qBAAqB,CAAC,gBAAgB,CAAC,EAAE,CAAC;QAC7C,OAAO;YACL,GAAG,IAAI;YACP,MAAM,EAAE,SAAS;YACjB,QAAQ,EAAE,gBAAgB;YAC1B,MAAM,EAAE,uDAAuD;SAChE,CAAC;IACJ,CAAC;IACD,IAAI,MAAM,MAAM,CAAC,yBAAyB,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC,EAAE,CAAC;QACpE,OAAO;YACL,GAAG,IAAI;YACP,MAAM,EAAE,WAAW;YACnB,QAAQ,EAAE,gBAAgB;YAC1B,MAAM,EAAE,kCAAkC;SAC3C,CAAC;IACJ,CAAC;IACD,OAAO;QACL,GAAG,IAAI;QACP,MAAM,EAAE,SAAS;QACjB,QAAQ,EAAE,gBAAgB;QAC1B,MAAM,EAAE,8CAA8C;KACvD,CAAC;AACJ,CAAC;AAED,SAAS,sBAAsB,CAC7B,MAA8C,EAC9C,SAAiB;IAEjB,KAAK,MAAM,KAAK,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CACnD,KAAK,CAAC,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAC9C,EAAE,CAAC;QACF,IAAI,KAAK,CAAC,QAAQ,CAAC,SAAS,KAAK,SAAS;YAAE,SAAS;QACrD,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,sBAAsB,CAAC;QACrD,IAAI,OAAO,MAAM,KAAK,QAAQ;YAAE,OAAO,MAAM,CAAC;QAC9C,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,mBAAmB,CAAC;QAClD,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ;YAAE,SAAS;QACpD,MAAM,OAAO,GAAI,MAAgC,CAAC,OAAO,CAAC;QAC1D,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ;YAAE,SAAS;QACtD,MAAM,QAAQ,GAAI,OAAgD;aAC/D,sBAAsB,CAAC;QAC1B,IAAI,OAAO,QAAQ,KAAK,QAAQ;YAAE,OAAO,QAAQ,CAAC;IACpD,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,qBAAqB,CAAC,QAAgB;IAC7C,OAAO,CACL,QAAQ,CAAC,UAAU,CAAC,2BAA2B,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAC7E,CAAC;AACJ,CAAC;AAED,SAAS,wBAAwB,CAAC,gBAAoC;IAGpE,OAAO,gBAAgB,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AACtD,CAAC;AAED,KAAK,UAAU,8BAA8B,CAC3C,IAAY,EACZ,SAAiB;IAEjB,OAAO,CAAC,MAAM,wBAAwB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAChD,CAAC,GAAG,EAAE,EAAE,CACN,GAAG,CAAC,MAAM,KAAK,QAAQ;QACvB,GAAG,CAAC,MAAM,CAAC,IAAI,CACb,CAAC,KAAK,EAAE,EAAE,CACR,KAAK,CAAC,MAAM,KAAK,SAAS;YAC1B,KAAK,CAAC,QAAQ,EAAE,QAAQ,KAAK,yBAAyB;YACtD,KAAK,CAAC,QAAQ,CAAC,SAAS,KAAK,SAAS,CACzC,CACJ,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,WAAW,CACxB,IAAY,EACZ,KAAa;IAEb,OAAO,CAAC,MAAM,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,KAAK,CAAC,CAAC;AAC1E,CAAC;AAED,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IAC1B,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -1,10 +1,15 @@
1
- import type { RuntimeDelegationAssignment, RuntimeExecutionAdapter, RuntimeParentAction } from "./types.js";
2
- export declare function buildRuntimeParentAction({ runtime, sessionId, phase, role, assignment, promptArtifact, expectedResultArtifact, }: {
1
+ import type { EventEntry, PendingRuntimeParentAction, RuntimeDelegationAssignment, RuntimeExecutionAdapter, RuntimeParentAction } from "./types.js";
2
+ export declare function buildRuntimeParentAction({ runtime, sessionId, phase, role, assignment, promptArtifact, contextManifestArtifact, expectedResultArtifact, }: {
3
3
  runtime: RuntimeExecutionAdapter;
4
4
  sessionId: string;
5
5
  phase: string;
6
6
  role: string;
7
7
  assignment: RuntimeDelegationAssignment;
8
8
  promptArtifact: string;
9
+ contextManifestArtifact?: string;
9
10
  expectedResultArtifact: string;
10
11
  }): RuntimeParentAction;
12
+ export declare function listPendingRuntimeParentActions({ events, taskId, }: {
13
+ events: EventEntry[];
14
+ taskId?: string;
15
+ }): PendingRuntimeParentAction[];
@@ -1,4 +1,4 @@
1
- export function buildRuntimeParentAction({ runtime, sessionId, phase, role, assignment, promptArtifact, expectedResultArtifact, }) {
1
+ export function buildRuntimeParentAction({ runtime, sessionId, phase, role, assignment, promptArtifact, contextManifestArtifact, expectedResultArtifact, }) {
2
2
  const tool = runtime.subagents.spawn.tool ?? "native-subagent-tool";
3
3
  return {
4
4
  kind: parentActionKind(runtime.id),
@@ -11,6 +11,7 @@ export function buildRuntimeParentAction({ runtime, sessionId, phase, role, assi
11
11
  instructions: parentActionInstructions(runtime.id, tool),
12
12
  payload: {
13
13
  promptArtifact,
14
+ ...(contextManifestArtifact ? { contextManifestArtifact } : {}),
14
15
  expectedResultArtifact,
15
16
  ownershipPaths: assignment.paths,
16
17
  allowedCommands: assignment.allowedCommands,
@@ -23,6 +24,64 @@ export function buildRuntimeParentAction({ runtime, sessionId, phase, role, assi
23
24
  },
24
25
  };
25
26
  }
27
+ export function listPendingRuntimeParentActions({ events, taskId, }) {
28
+ const latestPendingBySession = new Map();
29
+ const terminalSessionTimestamps = new Map();
30
+ for (const event of events) {
31
+ if (taskId && event.taskId !== taskId)
32
+ continue;
33
+ const sessionId = stringMetadata(event, "sessionId");
34
+ if (!sessionId)
35
+ continue;
36
+ if (isSpawnLifecycleEvent(event)) {
37
+ setLatestSessionTimestamp(terminalSessionTimestamps, sessionId, event.timestamp);
38
+ continue;
39
+ }
40
+ if (!parentActionStatus(event))
41
+ continue;
42
+ setLatestPendingSessionEvent(latestPendingBySession, sessionId, event);
43
+ }
44
+ return [...latestPendingBySession.values()]
45
+ .filter((event) => isPendingAfterTerminalSessionEvent(event, terminalSessionTimestamps))
46
+ .map(parentActionFromEvent)
47
+ .filter((action) => Boolean(action))
48
+ .sort((left, right) => right.updatedAt.localeCompare(left.updatedAt));
49
+ }
50
+ function setLatestSessionTimestamp(timestampsBySession, sessionId, timestamp) {
51
+ const previousTimestamp = timestampsBySession.get(sessionId);
52
+ if (isLaterTimestamp(timestamp, previousTimestamp)) {
53
+ timestampsBySession.set(sessionId, timestamp);
54
+ }
55
+ }
56
+ function setLatestPendingSessionEvent(eventsBySession, sessionId, event) {
57
+ const previousEvent = eventsBySession.get(sessionId);
58
+ if (isLaterTimestamp(event.timestamp, previousEvent?.timestamp)) {
59
+ eventsBySession.set(sessionId, mergePendingSessionEvent(event, previousEvent));
60
+ }
61
+ }
62
+ function mergePendingSessionEvent(event, previousEvent) {
63
+ if (runtimeParentActionMetadata(event) || !previousEvent) {
64
+ return event;
65
+ }
66
+ return {
67
+ ...event,
68
+ metadata: {
69
+ ...previousEvent.metadata,
70
+ ...event.metadata,
71
+ },
72
+ };
73
+ }
74
+ function isPendingAfterTerminalSessionEvent(event, terminalSessionTimestamps) {
75
+ const sessionId = stringMetadata(event, "sessionId");
76
+ if (!sessionId) {
77
+ return true;
78
+ }
79
+ const terminalTimestamp = terminalSessionTimestamps.get(sessionId);
80
+ return isLaterTimestamp(event.timestamp, terminalTimestamp);
81
+ }
82
+ function isLaterTimestamp(timestamp, previousTimestamp) {
83
+ return !previousTimestamp || previousTimestamp.localeCompare(timestamp) < 0;
84
+ }
26
85
  function parentActionKind(runtimeId) {
27
86
  if (runtimeId === "codex-cli")
28
87
  return "codex-spawn-agent";
@@ -60,4 +119,76 @@ function parentActionInstructions(runtimeId, tool) {
60
119
  "Record lifecycle state before resuming the workflow.",
61
120
  ];
62
121
  }
122
+ function parentActionFromEvent(event) {
123
+ const status = parentActionStatus(event);
124
+ if (!status || !event.taskId)
125
+ return undefined;
126
+ const action = runtimeParentActionMetadata(event);
127
+ if (!action)
128
+ return undefined;
129
+ const runtime = stringMetadata(event, "runtime") ?? action.runtime;
130
+ const phase = stringMetadata(event, "phase") ?? action.phase;
131
+ const role = stringMetadata(event, "role") ?? action.role;
132
+ return {
133
+ taskId: event.taskId,
134
+ sessionId: action.sessionId,
135
+ runtime,
136
+ phase,
137
+ role,
138
+ status,
139
+ action,
140
+ artifacts: event.artifacts ?? [],
141
+ updatedAt: event.timestamp,
142
+ actionable: status === "requested",
143
+ rationale: parentActionRationale(status),
144
+ };
145
+ }
146
+ function parentActionRationale(status) {
147
+ if (status === "requested") {
148
+ return "parent runtime should execute the native action now";
149
+ }
150
+ return "request is queued until delegation capacity is available";
151
+ }
152
+ function parentActionStatus(event) {
153
+ if (event.type === "RUNTIME_SPAWN_REQUEST_RENDERED")
154
+ return "requested";
155
+ if (event.type === "RUNTIME_DELEGATION_SESSION_QUEUED")
156
+ return "queued";
157
+ return undefined;
158
+ }
159
+ function isSpawnLifecycleEvent(event) {
160
+ return (event.type === "RUNTIME_DELEGATION_SESSION_SPAWNED" ||
161
+ event.type === "RUNTIME_DELEGATION_SESSION_HEARTBEAT" ||
162
+ event.type === "RUNTIME_DELEGATION_SESSION_COMPLETED" ||
163
+ event.type === "RUNTIME_DELEGATION_SESSION_FAILED" ||
164
+ event.type === "RUNTIME_DELEGATION_SESSION_TIMED_OUT" ||
165
+ event.type === "RUNTIME_DELEGATION_SESSION_CANCELED" ||
166
+ event.type === "RUNTIME_DELEGATION_SESSION_CLOSED");
167
+ }
168
+ function runtimeParentActionMetadata(event) {
169
+ const value = event.metadata.parentRuntimeAction;
170
+ if (!isRuntimeParentAction(value))
171
+ return undefined;
172
+ return value;
173
+ }
174
+ function isRuntimeParentAction(value) {
175
+ if (!value || typeof value !== "object")
176
+ return false;
177
+ const candidate = value;
178
+ return Boolean(typeof candidate.kind === "string" &&
179
+ typeof candidate.runtime === "string" &&
180
+ typeof candidate.tool === "string" &&
181
+ typeof candidate.sessionId === "string" &&
182
+ typeof candidate.phase === "string" &&
183
+ typeof candidate.role === "string" &&
184
+ candidate.payload &&
185
+ typeof candidate.payload.promptArtifact === "string" &&
186
+ typeof candidate.payload.expectedResultArtifact === "string" &&
187
+ candidate.lifecycleCommands &&
188
+ typeof candidate.lifecycleCommands.spawned === "string");
189
+ }
190
+ function stringMetadata(event, key) {
191
+ const value = event.metadata[key];
192
+ return typeof value === "string" && value.trim() ? value : undefined;
193
+ }
63
194
  //# sourceMappingURL=runtime-parent-actions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"runtime-parent-actions.js","sourceRoot":"","sources":["../src/runtime-parent-actions.ts"],"names":[],"mappings":"AAOA,MAAM,UAAU,wBAAwB,CAAC,EACvC,OAAO,EACP,SAAS,EACT,KAAK,EACL,IAAI,EACJ,UAAU,EACV,cAAc,EACd,sBAAsB,GASvB;IACC,MAAM,IAAI,GAAG,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,IAAI,sBAAsB,CAAC;IACpE,OAAO;QACL,IAAI,EAAE,gBAAgB,CAAC,OAAO,CAAC,EAAE,CAAC;QAClC,OAAO,EAAE,OAAO,CAAC,EAAE;QACnB,IAAI;QACJ,IAAI,EAAE,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI;QAClC,SAAS;QACT,KAAK;QACL,IAAI;QACJ,YAAY,EAAE,wBAAwB,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,CAAC;QACxD,OAAO,EAAE;YACP,cAAc;YACd,sBAAsB;YACtB,cAAc,EAAE,UAAU,CAAC,KAAK;YAChC,eAAe,EAAE,UAAU,CAAC,eAAe;YAC3C,iBAAiB,EAAE,UAAU,CAAC,iBAAiB;SAChD;QACD,iBAAiB,EAAE;YACjB,OAAO,EAAE,+CAA+C,SAAS,yCAAyC;YAC1G,SAAS,EAAE,+CAA+C,SAAS,wDAAwD,sBAAsB,EAAE;YACnJ,MAAM,EAAE,+CAA+C,SAAS,2EAA2E;SAC5I;KACF,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CACvB,SAAwC;IAExC,IAAI,SAAS,KAAK,WAAW;QAAE,OAAO,mBAAmB,CAAC;IAC1D,IAAI,SAAS,KAAK,YAAY;QAAE,OAAO,sBAAsB,CAAC;IAC9D,IAAI,SAAS,KAAK,YAAY;QAAE,OAAO,yBAAyB,CAAC;IACjE,OAAO,wBAAwB,CAAC;AAClC,CAAC;AAED,SAAS,wBAAwB,CAC/B,SAAwC,EACxC,IAAY;IAEZ,IAAI,SAAS,KAAK,WAAW,EAAE,CAAC;QAC9B,OAAO;YACL,QAAQ,IAAI,yFAAyF;YACrG,uFAAuF;YACvF,0EAA0E;SAC3E,CAAC;IACJ,CAAC;IACD,IAAI,SAAS,KAAK,YAAY,EAAE,CAAC;QAC/B,OAAO;YACL,kFAAkF,IAAI,IAAI;YAC1F,+FAA+F;YAC/F,gGAAgG;SACjG,CAAC;IACJ,CAAC;IACD,IAAI,SAAS,KAAK,YAAY,EAAE,CAAC;QAC/B,OAAO;YACL,4DAA4D,IAAI,IAAI;YACpE,kGAAkG;YAClG,uFAAuF;SACxF,CAAC;IACJ,CAAC;IACD,OAAO;QACL,OAAO,IAAI,8EAA8E;QACzF,uFAAuF;QACvF,sDAAsD;KACvD,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"runtime-parent-actions.js","sourceRoot":"","sources":["../src/runtime-parent-actions.ts"],"names":[],"mappings":"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"}