codekin 0.6.3 → 0.6.5

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 (113) hide show
  1. package/README.md +1 -0
  2. package/bin/codekin.mjs +69 -6
  3. package/dist/assets/index-B0xIzdCK.js +187 -0
  4. package/dist/assets/index-Q2WSVlHo.css +1 -0
  5. package/dist/index.html +2 -2
  6. package/package.json +5 -5
  7. package/server/dist/auth-routes.js +6 -0
  8. package/server/dist/auth-routes.js.map +1 -1
  9. package/server/dist/claude-process.d.ts +1 -0
  10. package/server/dist/claude-process.js +7 -3
  11. package/server/dist/claude-process.js.map +1 -1
  12. package/server/dist/commit-event-handler.d.ts +16 -2
  13. package/server/dist/commit-event-handler.js +43 -10
  14. package/server/dist/commit-event-handler.js.map +1 -1
  15. package/server/dist/commit-event-hooks.d.ts +11 -0
  16. package/server/dist/commit-event-hooks.js +61 -11
  17. package/server/dist/commit-event-hooks.js.map +1 -1
  18. package/server/dist/config.d.ts +19 -0
  19. package/server/dist/config.js +43 -1
  20. package/server/dist/config.js.map +1 -1
  21. package/server/dist/docs-routes.js +4 -7
  22. package/server/dist/docs-routes.js.map +1 -1
  23. package/server/dist/json-parse.d.ts +8 -0
  24. package/server/dist/json-parse.js +9 -0
  25. package/server/dist/json-parse.js.map +1 -0
  26. package/server/dist/opencode-process.js +8 -1
  27. package/server/dist/opencode-process.js.map +1 -1
  28. package/server/dist/orchestrator-children.d.ts +41 -1
  29. package/server/dist/orchestrator-children.js +87 -1
  30. package/server/dist/orchestrator-children.js.map +1 -1
  31. package/server/dist/orchestrator-learning-router.d.ts +8 -0
  32. package/server/dist/orchestrator-learning-router.js +126 -0
  33. package/server/dist/orchestrator-learning-router.js.map +1 -0
  34. package/server/dist/orchestrator-learning.d.ts +0 -5
  35. package/server/dist/orchestrator-learning.js +2 -9
  36. package/server/dist/orchestrator-learning.js.map +1 -1
  37. package/server/dist/orchestrator-memory-router.d.ts +10 -0
  38. package/server/dist/orchestrator-memory-router.js +148 -0
  39. package/server/dist/orchestrator-memory-router.js.map +1 -0
  40. package/server/dist/orchestrator-memory.js +2 -1
  41. package/server/dist/orchestrator-memory.js.map +1 -1
  42. package/server/dist/orchestrator-monitor.d.ts +6 -0
  43. package/server/dist/orchestrator-monitor.js +27 -0
  44. package/server/dist/orchestrator-monitor.js.map +1 -1
  45. package/server/dist/orchestrator-notify.d.ts +29 -0
  46. package/server/dist/orchestrator-notify.js +27 -0
  47. package/server/dist/orchestrator-notify.js.map +1 -0
  48. package/server/dist/orchestrator-reports.d.ts +0 -4
  49. package/server/dist/orchestrator-reports.js +8 -10
  50. package/server/dist/orchestrator-reports.js.map +1 -1
  51. package/server/dist/orchestrator-routes.d.ts +2 -2
  52. package/server/dist/orchestrator-routes.js +11 -506
  53. package/server/dist/orchestrator-routes.js.map +1 -1
  54. package/server/dist/orchestrator-session-router.d.ts +13 -0
  55. package/server/dist/orchestrator-session-router.js +315 -0
  56. package/server/dist/orchestrator-session-router.js.map +1 -0
  57. package/server/dist/process-coordinator.d.ts +83 -0
  58. package/server/dist/process-coordinator.js +167 -0
  59. package/server/dist/process-coordinator.js.map +1 -0
  60. package/server/dist/prompt-router.js +2 -1
  61. package/server/dist/prompt-router.js.map +1 -1
  62. package/server/dist/session-archive.js +2 -1
  63. package/server/dist/session-archive.js.map +1 -1
  64. package/server/dist/session-lifecycle.d.ts +1 -0
  65. package/server/dist/session-lifecycle.js +15 -36
  66. package/server/dist/session-lifecycle.js.map +1 -1
  67. package/server/dist/session-manager.d.ts +34 -0
  68. package/server/dist/session-manager.js +161 -79
  69. package/server/dist/session-manager.js.map +1 -1
  70. package/server/dist/session-persistence.js +3 -1
  71. package/server/dist/session-persistence.js.map +1 -1
  72. package/server/dist/session-routes.d.ts +18 -0
  73. package/server/dist/session-routes.js +60 -12
  74. package/server/dist/session-routes.js.map +1 -1
  75. package/server/dist/stepflow-handler.js +5 -1
  76. package/server/dist/stepflow-handler.js.map +1 -1
  77. package/server/dist/stepflow-prompt.js +16 -12
  78. package/server/dist/stepflow-prompt.js.map +1 -1
  79. package/server/dist/tsconfig.tsbuildinfo +1 -1
  80. package/server/dist/types.d.ts +4 -0
  81. package/server/dist/types.js +1 -0
  82. package/server/dist/types.js.map +1 -1
  83. package/server/dist/upload-routes.d.ts +5 -0
  84. package/server/dist/upload-routes.js +81 -16
  85. package/server/dist/upload-routes.js.map +1 -1
  86. package/server/dist/version-check.js +3 -2
  87. package/server/dist/version-check.js.map +1 -1
  88. package/server/dist/webhook-rate-limiter.js +9 -1
  89. package/server/dist/webhook-rate-limiter.js.map +1 -1
  90. package/server/dist/webhook-workspace.d.ts +12 -0
  91. package/server/dist/webhook-workspace.js +126 -3
  92. package/server/dist/webhook-workspace.js.map +1 -1
  93. package/server/dist/workflow-engine.d.ts +81 -7
  94. package/server/dist/workflow-engine.js +234 -40
  95. package/server/dist/workflow-engine.js.map +1 -1
  96. package/server/dist/workflow-loader.d.ts +6 -1
  97. package/server/dist/workflow-loader.js +189 -35
  98. package/server/dist/workflow-loader.js.map +1 -1
  99. package/server/dist/workflow-routes.d.ts +13 -0
  100. package/server/dist/workflow-routes.js +140 -4
  101. package/server/dist/workflow-routes.js.map +1 -1
  102. package/server/dist/ws-message-handler.js +5 -1
  103. package/server/dist/ws-message-handler.js.map +1 -1
  104. package/server/dist/ws-origin-check.d.ts +11 -0
  105. package/server/dist/ws-origin-check.js +20 -0
  106. package/server/dist/ws-origin-check.js.map +1 -0
  107. package/server/dist/ws-rate-limit.d.ts +19 -0
  108. package/server/dist/ws-rate-limit.js +30 -0
  109. package/server/dist/ws-rate-limit.js.map +1 -0
  110. package/server/dist/ws-server.js +69 -32
  111. package/server/dist/ws-server.js.map +1 -1
  112. package/dist/assets/index-CxlBrS5y.js +0 -182
  113. package/dist/assets/index-DgeUVGjz.css +0 -1
@@ -11,6 +11,7 @@ import { homedir } from 'os';
11
11
  import { join } from 'path';
12
12
  import { randomUUID } from 'crypto';
13
13
  import { EventEmitter } from 'events';
14
+ import { jsonParse } from './json-parse.js';
14
15
  /**
15
16
  * Throw this from any workflow step to cleanly skip a run without marking it as failed.
16
17
  * Useful for assessment workflows to short-circuit when no code changes have occurred.
@@ -21,6 +22,25 @@ export class WorkflowSkipped extends Error {
21
22
  this.name = 'WorkflowSkipped';
22
23
  }
23
24
  }
25
+ /**
26
+ * Thrown when a step references a session that no longer exists in the session manager —
27
+ * either because it was deleted, expired, or never persisted across a server restart.
28
+ * Carries enough context (run id, step key, session id, last heartbeat) for diagnostics.
29
+ */
30
+ export class SessionGoneError extends Error {
31
+ runId;
32
+ stepKey;
33
+ sessionId;
34
+ lastSeen;
35
+ constructor(runId, stepKey, sessionId, lastSeen) {
36
+ super(`Workflow session is no longer available — run=${runId} step=${stepKey} session=${sessionId} lastSeen=${lastSeen ?? 'unknown'}`);
37
+ this.runId = runId;
38
+ this.stepKey = stepKey;
39
+ this.sessionId = sessionId;
40
+ this.lastSeen = lastSeen;
41
+ this.name = 'SessionGoneError';
42
+ }
43
+ }
24
44
  // ---------------------------------------------------------------------------
25
45
  // Cron expression parser (supports standard 5-field cron)
26
46
  // ---------------------------------------------------------------------------
@@ -29,6 +49,12 @@ function parseCronField(field, min, max) {
29
49
  for (const part of field.split(',')) {
30
50
  const stepMatch = part.match(/^(.+)\/(\d+)$/);
31
51
  const step = stepMatch ? parseInt(stepMatch[2], 10) : 1;
52
+ // Defensive guard — `step <= 0` would make the loops below never advance
53
+ // (or run backwards), pinning the scheduler. Any caller that reaches this
54
+ // branch with a zero/negative step has bypassed isValidCron, so refuse loudly.
55
+ if (!Number.isFinite(step) || step <= 0) {
56
+ throw new Error(`Invalid cron step value: ${stepMatch?.[2]} (must be > 0)`);
57
+ }
32
58
  const range = stepMatch ? stepMatch[1] : part;
33
59
  if (range === '*') {
34
60
  for (let i = min; i <= max; i += step)
@@ -45,21 +71,28 @@ function parseCronField(field, min, max) {
45
71
  }
46
72
  return values;
47
73
  }
48
- function cronMatchesDate(expression, date) {
74
+ export function cronMatchesDate(expression, date) {
49
75
  const parts = expression.trim().split(/\s+/);
50
76
  if (parts.length !== 5)
51
77
  return false;
52
- const [minF, hourF, domF, monF, dowF] = parts;
53
- const minute = parseCronField(minF, 0, 59);
54
- const hour = parseCronField(hourF, 0, 23);
55
- const dom = parseCronField(domF, 1, 31);
56
- const month = parseCronField(monF, 1, 12);
57
- const dow = parseCronField(dowF, 0, 6);
58
- return (minute.includes(date.getMinutes()) &&
59
- hour.includes(date.getHours()) &&
60
- dom.includes(date.getDate()) &&
61
- month.includes(date.getMonth() + 1) &&
62
- dow.includes(date.getDay()));
78
+ try {
79
+ const [minF, hourF, domF, monF, dowF] = parts;
80
+ const minute = parseCronField(minF, 0, 59);
81
+ const hour = parseCronField(hourF, 0, 23);
82
+ const dom = parseCronField(domF, 1, 31);
83
+ const month = parseCronField(monF, 1, 12);
84
+ const dow = parseCronField(dowF, 0, 6);
85
+ return (minute.includes(date.getMinutes()) &&
86
+ hour.includes(date.getHours()) &&
87
+ dom.includes(date.getDate()) &&
88
+ month.includes(date.getMonth() + 1) &&
89
+ dow.includes(date.getDay()));
90
+ }
91
+ catch {
92
+ // Malformed expression (e.g. step 0). Treat as never-matching so a bad
93
+ // legacy schedule cannot pin the scheduler in a tight loop.
94
+ return false;
95
+ }
63
96
  }
64
97
  /** Compute the next matching minute for a cron expression after `after`. */
65
98
  function nextCronMatch(expression, after) {
@@ -103,6 +136,7 @@ export class WorkflowEngine extends EventEmitter {
103
136
  workflows = new Map();
104
137
  activeAbortControllers = new Map();
105
138
  cronTimer = null;
139
+ sessionResolver = null;
106
140
  constructor(dbPath) {
107
141
  super();
108
142
  const dir = join(homedir(), '.codekin');
@@ -114,6 +148,7 @@ export class WorkflowEngine extends EventEmitter {
114
148
  chmodSync(resolvedPath, 0o600);
115
149
  this.db.pragma('journal_mode = WAL');
116
150
  this.createTables();
151
+ this.migrateSchema();
117
152
  }
118
153
  createTables() {
119
154
  // WAL mode: allows concurrent reads while a write is in progress,
@@ -163,6 +198,42 @@ export class WorkflowEngine extends EventEmitter {
163
198
  CREATE INDEX IF NOT EXISTS idx_steps_run_id ON workflow_steps(run_id);
164
199
  `);
165
200
  }
201
+ /**
202
+ * Apply additive (backwards-compatible) schema migrations.
203
+ * Each ALTER TABLE is wrapped in try/catch so a re-run on a migrated DB is a no-op
204
+ * (SQLite has no `ADD COLUMN IF NOT EXISTS`). New columns are nullable so older rows
205
+ * keep working without backfill.
206
+ */
207
+ migrateSchema() {
208
+ const additions = [
209
+ // session id captured by create_session — lets resume locate the still-alive session.
210
+ `ALTER TABLE workflow_runs ADD COLUMN session_id TEXT`,
211
+ // heartbeat updated on every step start — distinguishes stuck runs from newly-started ones.
212
+ `ALTER TABLE workflow_runs ADD COLUMN last_step_at TEXT`,
213
+ // most recently running step key — tells resume where the work stopped.
214
+ `ALTER TABLE workflow_runs ADD COLUMN current_step_key TEXT`,
215
+ ];
216
+ for (const sql of additions) {
217
+ try {
218
+ this.db.exec(sql);
219
+ }
220
+ catch (err) {
221
+ // "duplicate column name" is the expected idempotent path; anything else is a real error.
222
+ const msg = err instanceof Error ? err.message : String(err);
223
+ if (!/duplicate column/i.test(msg))
224
+ throw err;
225
+ }
226
+ }
227
+ }
228
+ /**
229
+ * Register a callback used by `resumeInterrupted()` to decide whether a workflow's
230
+ * session is still alive. Pass `null` to clear. Without a resolver, all interrupted
231
+ * runs whose session_id is set are conservatively treated as resumable — but the
232
+ * step handler will still surface a typed error if the session has actually gone.
233
+ */
234
+ setSessionResolver(resolver) {
235
+ this.sessionResolver = resolver;
236
+ }
166
237
  // -------------------------------------------------------------------------
167
238
  // Workflow registration
168
239
  // -------------------------------------------------------------------------
@@ -226,19 +297,40 @@ export class WorkflowEngine extends EventEmitter {
226
297
  *
227
298
  * Cancellation: `cancelRun()` calls controller.abort(); the AbortSignal is
228
299
  * passed to each handler so long-running async work can exit cooperatively.
300
+ *
301
+ * Resume: when `opts.resumeFromKey` is set, steps before that key are skipped
302
+ * (their outputs come from `opts.priorOutput`) and the resumed step receives
303
+ * `resumed: true` in its context so the handler can avoid double side effects.
229
304
  */
230
- async executeRun(run, definition) {
305
+ async executeRun(run, definition, opts) {
231
306
  const abortController = new AbortController();
232
307
  this.activeAbortControllers.set(run.id, abortController);
233
- // Mark running
308
+ const resumeFromKey = opts?.resumeFromKey;
309
+ const isResume = !!resumeFromKey;
310
+ // Mark running (no-op timestamp on resume so we keep the original startedAt)
234
311
  run.status = 'running';
235
- run.startedAt = new Date().toISOString();
236
- this.db.prepare(`UPDATE workflow_runs SET status = 'running', started_at = ? WHERE id = ?`)
237
- .run(run.startedAt, run.id);
238
- this.emitEvent('run_started', run);
239
- let lastOutput = { ...run.input };
312
+ if (!isResume) {
313
+ run.startedAt = new Date().toISOString();
314
+ this.db.prepare(`UPDATE workflow_runs SET status = 'running', started_at = ? WHERE id = ?`)
315
+ .run(run.startedAt, run.id);
316
+ this.emitEvent('run_started', run);
317
+ }
318
+ else {
319
+ this.db.prepare(`UPDATE workflow_runs SET status = 'running' WHERE id = ?`).run(run.id);
320
+ this.emitEvent('run_resumed', run);
321
+ }
322
+ let lastOutput = isResume
323
+ ? { ...(opts?.priorOutput ?? {}) }
324
+ : { ...run.input };
325
+ let reachedResumePoint = !isResume;
240
326
  try {
241
327
  for (const stepDef of definition.steps) {
328
+ if (!reachedResumePoint) {
329
+ if (stepDef.key === resumeFromKey)
330
+ reachedResumePoint = true;
331
+ else
332
+ continue;
333
+ }
242
334
  if (abortController.signal.aborted) {
243
335
  throw new Error('Run canceled');
244
336
  }
@@ -246,16 +338,23 @@ export class WorkflowEngine extends EventEmitter {
246
338
  .get(run.id, stepDef.key);
247
339
  if (!stepRow)
248
340
  continue;
249
- // Mark step running
341
+ // Mark step running + bump heartbeat / current step key on the run
250
342
  const stepStarted = new Date().toISOString();
251
- this.db.prepare(`UPDATE workflow_steps SET status = 'running', input = ?, started_at = ? WHERE id = ?`)
343
+ this.db.prepare(`UPDATE workflow_steps SET status = 'running', input = ?, started_at = ?, completed_at = NULL, output = NULL, error = NULL WHERE id = ?`)
252
344
  .run(JSON.stringify(lastOutput), stepStarted, stepRow.id);
345
+ this.db.prepare(`UPDATE workflow_runs SET last_step_at = ?, current_step_key = ? WHERE id = ?`)
346
+ .run(stepStarted, stepDef.key, run.id);
347
+ run.lastStepAt = stepStarted;
348
+ run.currentStepKey = stepDef.key;
253
349
  this.emitEvent('step_started', run, stepDef.key);
350
+ const stepIsResumed = isResume && stepDef.key === resumeFromKey;
254
351
  try {
255
352
  const result = await stepDef.handler(lastOutput, {
256
353
  runId: run.id,
257
354
  run,
258
355
  abortSignal: abortController.signal,
356
+ resumed: stepIsResumed,
357
+ recordSessionId: (sessionId) => this.recordSessionId(run.id, sessionId),
259
358
  });
260
359
  // Mark step succeeded
261
360
  const stepCompleted = new Date().toISOString();
@@ -330,6 +429,15 @@ export class WorkflowEngine extends EventEmitter {
330
429
  }
331
430
  return false;
332
431
  }
432
+ /**
433
+ * Persist a session id on a run so that `resumeInterrupted()` can locate the
434
+ * still-alive session even if the server crashes before the `create_session`
435
+ * step's output row is committed. Called from inside the step handler via
436
+ * `ctx.recordSessionId(...)`.
437
+ */
438
+ recordSessionId(runId, sessionId) {
439
+ this.db.prepare(`UPDATE workflow_runs SET session_id = ? WHERE id = ?`).run(sessionId, runId);
440
+ }
333
441
  // -------------------------------------------------------------------------
334
442
  // Queries
335
443
  // -------------------------------------------------------------------------
@@ -344,8 +452,8 @@ export class WorkflowEngine extends EventEmitter {
344
452
  runId: s.run_id,
345
453
  key: s.key,
346
454
  status: s.status,
347
- input: s.input ? JSON.parse(s.input) : null,
348
- output: s.output ? JSON.parse(s.output) : null,
455
+ input: s.input ? jsonParse(s.input) : null,
456
+ output: s.output ? jsonParse(s.output) : null,
349
457
  error: s.error,
350
458
  startedAt: s.started_at,
351
459
  completedAt: s.completed_at,
@@ -354,12 +462,15 @@ export class WorkflowEngine extends EventEmitter {
354
462
  id: row.id,
355
463
  kind: row.kind,
356
464
  status: row.status,
357
- input: JSON.parse(row.input),
358
- output: row.output ? JSON.parse(row.output) : null,
465
+ input: jsonParse(row.input),
466
+ output: row.output ? jsonParse(row.output) : null,
359
467
  error: row.error,
360
468
  createdAt: row.created_at,
361
469
  startedAt: row.started_at,
362
470
  completedAt: row.completed_at,
471
+ sessionId: row.session_id ?? null,
472
+ lastStepAt: row.last_step_at ?? null,
473
+ currentStepKey: row.current_step_key ?? null,
363
474
  steps,
364
475
  };
365
476
  }
@@ -378,12 +489,15 @@ export class WorkflowEngine extends EventEmitter {
378
489
  id: row.id,
379
490
  kind: row.kind,
380
491
  status: row.status,
381
- input: JSON.parse(row.input),
382
- output: row.output ? JSON.parse(row.output) : null,
492
+ input: jsonParse(row.input),
493
+ output: row.output ? jsonParse(row.output) : null,
383
494
  error: row.error,
384
495
  createdAt: row.created_at,
385
496
  startedAt: row.started_at,
386
497
  completedAt: row.completed_at,
498
+ sessionId: row.session_id ?? null,
499
+ lastStepAt: row.last_step_at ?? null,
500
+ currentStepKey: row.current_step_key ?? null,
387
501
  }));
388
502
  }
389
503
  // -------------------------------------------------------------------------
@@ -418,7 +532,7 @@ export class WorkflowEngine extends EventEmitter {
418
532
  id: row.id,
419
533
  kind: row.kind,
420
534
  cronExpression: row.cron_expression,
421
- input: JSON.parse(row.input),
535
+ input: jsonParse(row.input),
422
536
  enabled: !!row.enabled,
423
537
  lastRunAt: row.last_run_at,
424
538
  nextRunAt: row.next_run_at,
@@ -433,7 +547,7 @@ export class WorkflowEngine extends EventEmitter {
433
547
  id: row.id,
434
548
  kind: row.kind,
435
549
  cronExpression: row.cron_expression,
436
- input: JSON.parse(row.input),
550
+ input: jsonParse(row.input),
437
551
  enabled: !!row.enabled,
438
552
  lastRunAt: row.last_run_at,
439
553
  nextRunAt: row.next_run_at,
@@ -487,21 +601,101 @@ export class WorkflowEngine extends EventEmitter {
487
601
  // Resume interrupted runs on startup
488
602
  // -------------------------------------------------------------------------
489
603
  /**
490
- * Mark any runs that were in-flight when the server last shut down as failed.
491
- * Called once at startup — a run left in 'running' state means the Node process
492
- * died mid-execution and the AbortController / step callbacks are gone, so there
493
- * is no safe way to resume; failing fast is cleaner than leaving them stuck.
604
+ * Resume runs that were in-flight when the server last shut down.
605
+ *
606
+ * Strategy:
607
+ * 1. Find all runs still marked `running` (no graceful completion happened).
608
+ * 2. For each, look at `session_id` + `current_step_key` — captured before the crash.
609
+ * 3. If the session is still alive (per `sessionResolver`) and the step is one we know how
610
+ * to resume (`run_prompt`, `save_report`), re-execute from there with `resumed: true`.
611
+ * 4. Otherwise mark the run failed with a clear, typed reason. We do NOT silently mark
612
+ * remaining steps `skipped` — the failure surface is loud so reports don't go missing.
613
+ *
614
+ * Earlier steps (`validate_repo`, `create_session`) are not resumed: by the time they were
615
+ * running, the workflow had no usable session yet, and re-creating one mid-way would risk
616
+ * spawning duplicate sessions or sending the prompt twice.
494
617
  */
495
618
  async resumeInterrupted() {
496
- const interrupted = this.db.prepare(`SELECT id FROM workflow_runs WHERE status = 'running'`).all();
619
+ const interrupted = this.db.prepare(`
620
+ SELECT id, kind, session_id, current_step_key, last_step_at, input
621
+ FROM workflow_runs WHERE status = 'running'
622
+ `).all();
497
623
  if (interrupted.length === 0)
498
624
  return;
499
- console.log(`[workflow] Found ${interrupted.length} interrupted run(s), marking as failed`);
500
- for (const { id } of interrupted) {
501
- this.db.prepare(`UPDATE workflow_runs SET status = 'failed', error = 'Server restarted during execution', completed_at = ? WHERE id = ?`)
502
- .run(new Date().toISOString(), id);
503
- this.db.prepare(`UPDATE workflow_steps SET status = 'skipped' WHERE run_id = ? AND status IN ('pending', 'running')`)
504
- .run(id);
625
+ console.log(`[workflow] Found ${interrupted.length} interrupted run(s), evaluating for resume`);
626
+ for (const row of interrupted) {
627
+ const definition = this.workflows.get(row.kind);
628
+ if (!definition) {
629
+ this.failInterrupted(row.id, `Server restarted during execution (workflow kind '${row.kind}' is no longer registered)`);
630
+ continue;
631
+ }
632
+ const stepKey = row.current_step_key;
633
+ const sessionId = row.session_id;
634
+ // Only the later steps are safely resumable: by then the session is established
635
+ // and the prompt has been (or is being) processed. Earlier steps are too short
636
+ // to bother resuming and re-running them risks duplicate side effects.
637
+ const RESUMABLE_STEPS = new Set(['run_prompt', 'save_report']);
638
+ if (!stepKey || !RESUMABLE_STEPS.has(stepKey)) {
639
+ this.failInterrupted(row.id, `Server restarted during '${stepKey ?? 'unknown'}' step before session was usable for resume`);
640
+ continue;
641
+ }
642
+ if (!sessionId) {
643
+ this.failInterrupted(row.id, `Server restarted during '${stepKey}' step but no session id was recorded — cannot resume`);
644
+ continue;
645
+ }
646
+ const liveness = this.sessionResolver?.(sessionId) ?? null;
647
+ if (this.sessionResolver && !liveness) {
648
+ const err = new SessionGoneError(row.id, stepKey, sessionId, row.last_step_at);
649
+ console.warn(`[workflow] resume: ${err.message}`);
650
+ this.failInterrupted(row.id, err.message);
651
+ continue;
652
+ }
653
+ console.log(`[workflow] Resuming run ${row.id} (${row.kind}) at step '${stepKey}' (session=${sessionId})`);
654
+ // Reconstruct the merged output of all previously succeeded steps so the resumed
655
+ // step receives the same `lastOutput` it would have during a normal run.
656
+ const stepRows = this.db.prepare(`
657
+ SELECT key, status, output FROM workflow_steps WHERE run_id = ? ORDER BY rowid
658
+ `).all(row.id);
659
+ let priorOutput = row.input ? jsonParse(row.input) : {};
660
+ for (const sr of stepRows) {
661
+ if (sr.key === stepKey)
662
+ break;
663
+ if (sr.status === 'succeeded' && sr.output) {
664
+ priorOutput = { ...priorOutput, ...jsonParse(sr.output) };
665
+ }
666
+ }
667
+ const run = this.getRun(row.id);
668
+ if (!run) {
669
+ this.failInterrupted(row.id, 'Run row disappeared before resume could start');
670
+ continue;
671
+ }
672
+ // Reset the in-flight step so executeRun can mark it running again
673
+ this.db.prepare(`UPDATE workflow_steps SET status = 'pending', error = NULL, completed_at = NULL WHERE run_id = ? AND key = ? AND status = 'running'`)
674
+ .run(row.id, stepKey);
675
+ // Kick off resume in the background — same fire-and-forget pattern as startRun
676
+ this.executeRun(run, definition, { resumeFromKey: stepKey, priorOutput }).catch(err => {
677
+ console.error(`[workflow] Unhandled error in resumed run ${row.id}:`, err);
678
+ });
679
+ }
680
+ }
681
+ /** Mark a run as failed during the resume scan (no AbortController, no in-memory run object). */
682
+ failInterrupted(runId, reason) {
683
+ const completedAt = new Date().toISOString();
684
+ this.db.prepare(`UPDATE workflow_runs SET status = 'failed', error = ?, completed_at = ? WHERE id = ?`)
685
+ .run(reason, completedAt, runId);
686
+ this.db.prepare(`UPDATE workflow_steps SET status = 'failed', error = ?, completed_at = ? WHERE run_id = ? AND status = 'running'`)
687
+ .run(reason, completedAt, runId);
688
+ this.db.prepare(`UPDATE workflow_steps SET status = 'skipped' WHERE run_id = ? AND status = 'pending'`)
689
+ .run(runId);
690
+ const row = this.db.prepare(`SELECT id, kind FROM workflow_runs WHERE id = ?`).get(runId);
691
+ if (row) {
692
+ this.emit('workflow_event', {
693
+ eventType: 'run_failed',
694
+ runId: row.id,
695
+ kind: row.kind,
696
+ status: 'failed',
697
+ timestamp: completedAt,
698
+ });
505
699
  }
506
700
  }
507
701
  // -------------------------------------------------------------------------
@@ -1 +1 @@
1
- {"version":3,"file":"workflow-engine.js","sourceRoot":"","sources":["../workflow-engine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workflow-engine.js","sourceRoot":"","sources":["../workflow-engine.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,QAAQ,MAAM,gBAAgB,CAAA;AACrC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,IAAI,CAAA;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAA;AAC5B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAA;AACnC,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAA;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAiB3C;;;GAGG;AACH,MAAM,OAAO,eAAgB,SAAQ,KAAK;IACxC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAA;IAC/B,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,OAAO,gBAAiB,SAAQ,KAAK;IAEvB;IACA;IACA;IACA;IAJlB,YACkB,KAAa,EACb,OAAe,EACf,SAAiB,EACjB,QAAuB;QAEvC,KAAK,CACH,iDAAiD,KAAK,SAAS,OAAO,YAAY,SAAS,aAAa,QAAQ,IAAI,SAAS,EAAE,CAChI,CAAA;QAPe,UAAK,GAAL,KAAK,CAAQ;QACb,YAAO,GAAP,OAAO,CAAQ;QACf,cAAS,GAAT,SAAS,CAAQ;QACjB,aAAQ,GAAR,QAAQ,CAAe;QAKvC,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAA;IAChC,CAAC;CACF;AAiJD,8EAA8E;AAC9E,0DAA0D;AAC1D,8EAA8E;AAE9E,SAAS,cAAc,CAAC,KAAa,EAAE,GAAW,EAAE,GAAW;IAC7D,MAAM,MAAM,GAAa,EAAE,CAAA;IAC3B,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QACpC,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAA;QAC7C,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QACvD,yEAAyE;QACzE,0EAA0E;QAC1E,+EAA+E;QAC/E,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC;YACxC,MAAM,IAAI,KAAK,CAAC,4BAA4B,SAAS,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAA;QAC7E,CAAC;QACD,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;QAE7C,IAAI,KAAK,KAAK,GAAG,EAAE,CAAC;YAClB,KAAK,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI;gBAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACvD,CAAC;aAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAC/B,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;YACjD,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI;gBAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACzD,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAA;QAClC,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,UAAkB,EAAE,IAAU;IAC5D,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;IAC5C,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAA;IAEpC,IAAI,CAAC;QACH,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,KAAK,CAAA;QAC7C,MAAM,MAAM,GAAG,cAAc,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAA;QAC1C,MAAM,IAAI,GAAG,cAAc,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,CAAA;QACzC,MAAM,GAAG,GAAG,cAAc,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAA;QACvC,MAAM,KAAK,GAAG,cAAc,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAA;QACzC,MAAM,GAAG,GAAG,cAAc,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;QAEtC,OAAO,CACL,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YAClC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC9B,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAC5B,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;YACnC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAC5B,CAAA;IACH,CAAC;IAAC,MAAM,CAAC;QACP,uEAAuE;QACvE,4DAA4D;QAC5D,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC;AAED,4EAA4E;AAC5E,SAAS,aAAa,CAAC,UAAkB,EAAE,KAAW;IACpD,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAA;IACzB,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IAClB,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,CAAA;IAChC,8BAA8B;IAC9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;QACvC,IAAI,eAAe,CAAC,UAAU,EAAE,CAAC,CAAC;YAAE,OAAO,CAAC,CAAA;QAC5C,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,CAAA;IAClC,CAAC;IACD,yBAAyB;IACzB,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,QAAQ,CAAC,CAAA;AAC7C,CAAC;AAaD,oEAAoE;AACpE,SAAS,cAAc,CAAC,KAAa,EAAE,IAAmB;IACxD,MAAM,MAAM,GAAc,EAAE,CAAA;IAC5B,IAAI,GAAG,GAAG,iBAAiB,KAAK,YAAY,CAAA;IAE5C,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QAC7B,GAAG,IAAI,QAAQ,CAAC,CAAC,MAAM,MAAM,CAAA;QAC7B,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;IACtB,CAAC;IAED,IAAI,IAAI,CAAC,OAAO;QAAE,GAAG,IAAI,aAAa,IAAI,CAAC,OAAO,EAAE,CAAA;IACpD,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QAAC,GAAG,IAAI,UAAU,CAAC;QAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAAC,CAAC;IAC9D,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAAC,GAAG,IAAI,WAAW,CAAC;QAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IAAC,CAAC;IAEjE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,CAAA;AACxB,CAAC;AAED,8EAA8E;AAC9E,iBAAiB;AACjB,8EAA8E;AAE9E,MAAM,OAAO,cAAe,SAAQ,YAAY;IACtC,EAAE,CAAmB;IACrB,SAAS,GAAG,IAAI,GAAG,EAA8B,CAAA;IACjD,sBAAsB,GAAG,IAAI,GAAG,EAA2B,CAAA;IAC3D,SAAS,GAA0C,IAAI,CAAA;IACvD,eAAe,GAA2B,IAAI,CAAA;IAEtD,YAAY,MAAe;QACzB,KAAK,EAAE,CAAA;QACP,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,UAAU,CAAC,CAAA;QACvC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;QACzD,MAAM,YAAY,GAAG,MAAM,IAAI,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAA;QACxD,IAAI,CAAC,EAAE,GAAG,IAAI,QAAQ,CAAC,YAAY,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,CAAA;QAC9D,IAAI,YAAY,KAAK,UAAU,IAAI,UAAU,CAAC,YAAY,CAAC;YAAE,SAAS,CAAC,YAAY,EAAE,KAAK,CAAC,CAAA;QAC3F,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAA;QACpC,IAAI,CAAC,YAAY,EAAE,CAAA;QACnB,IAAI,CAAC,aAAa,EAAE,CAAA;IACtB,CAAC;IAEO,YAAY;QAClB,kEAAkE;QAClE,mEAAmE;QACnE,gBAAgB;QAChB,uFAAuF;QACvF,kGAAkG;QAClG,mFAAmF;QACnF,8FAA8F;QAC9F,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAsCZ,CAAC,CAAA;IACJ,CAAC;IAED;;;;;OAKG;IACK,aAAa;QACnB,MAAM,SAAS,GAAG;YAChB,sFAAsF;YACtF,sDAAsD;YACtD,4FAA4F;YAC5F,wDAAwD;YACxD,wEAAwE;YACxE,4DAA4D;SAC7D,CAAA;QACD,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;YAC5B,IAAI,CAAC;gBACH,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YACnB,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,0FAA0F;gBAC1F,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;gBAC5D,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC;oBAAE,MAAM,GAAG,CAAA;YAC/C,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,kBAAkB,CAAC,QAAgC;QACjD,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAA;IACjC,CAAC;IAED,4EAA4E;IAC5E,wBAAwB;IACxB,4EAA4E;IAE5E,8FAA8F;IAC9F,gBAAgB,CAAC,UAA8B;QAC7C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,CAAA;QAC/C,OAAO,CAAC,GAAG,CAAC,mCAAmC,UAAU,CAAC,IAAI,KAAK,UAAU,CAAC,KAAK,CAAC,MAAM,SAAS,CAAC,CAAA;IACtG,CAAC;IAED,yDAAyD;IACzD,WAAW,CAAC,IAAY;QACtB,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IACjC,CAAC;IAED,4EAA4E;IAC5E,iBAAiB;IACjB,4EAA4E;IAE5E,6DAA6D;IAC7D,KAAK,CAAC,QAAQ,CAAC,IAAY,EAAE,QAAiC,EAAE;QAC9D,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QAC3C,IAAI,CAAC,UAAU;YAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,IAAI,EAAE,CAAC,CAAA;QAElE,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;QACpC,MAAM,GAAG,GAAgB;YACvB,EAAE,EAAE,UAAU,EAAE;YAChB,IAAI;YACJ,MAAM,EAAE,QAAQ;YAChB,KAAK;YACL,MAAM,EAAE,IAAI;YACZ,KAAK,EAAE,IAAI;YACX,SAAS,EAAE,GAAG;YACd,SAAS,EAAE,IAAI;YACf,WAAW,EAAE,IAAI;SAClB,CAAA;QAED,cAAc;QACd,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;KAGf,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,SAAS,CAAC,CAAA;QAE9E,mBAAmB;QACnB,KAAK,MAAM,IAAI,IAAI,UAAU,CAAC,KAAK,EAAE,CAAC;YACpC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;OAGf,CAAC,CAAC,GAAG,CAAC,UAAU,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,CAAA;QACxC,CAAC;QAED,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,GAAG,CAAC,CAAA;QAEjC,yBAAyB;QACzB,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;YAC3C,OAAO,CAAC,KAAK,CAAC,qCAAqC,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA;QACpE,CAAC,CAAC,CAAA;QAEF,OAAO,GAAG,CAAA;IACZ,CAAC;IAED;;;;;;;;;;;;;;;;OAgBG;IACK,KAAK,CAAC,UAAU,CACtB,GAAgB,EAChB,UAA8B,EAC9B,IAAwE;QAExE,MAAM,eAAe,GAAG,IAAI,eAAe,EAAE,CAAA;QAC7C,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,eAAe,CAAC,CAAA;QAExD,MAAM,aAAa,GAAG,IAAI,EAAE,aAAa,CAAA;QACzC,MAAM,QAAQ,GAAG,CAAC,CAAC,aAAa,CAAA;QAEhC,6EAA6E;QAC7E,GAAG,CAAC,MAAM,GAAG,SAAS,CAAA;QACtB,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,GAAG,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;YACxC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,0EAA0E,CAAC;iBACxF,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,EAAE,CAAC,CAAA;YAC7B,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,GAAG,CAAC,CAAA;QACpC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,0DAA0D,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;YACvF,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,GAAG,CAAC,CAAA;QACpC,CAAC;QAED,IAAI,UAAU,GAA4B,QAAQ;YAChD,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,EAAE,WAAW,IAAI,EAAE,CAAC,EAAE;YAClC,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,KAAK,EAAE,CAAA;QAEpB,IAAI,kBAAkB,GAAG,CAAC,QAAQ,CAAA;QAElC,IAAI,CAAC;YACH,KAAK,MAAM,OAAO,IAAI,UAAU,CAAC,KAAK,EAAE,CAAC;gBACvC,IAAI,CAAC,kBAAkB,EAAE,CAAC;oBACxB,IAAI,OAAO,CAAC,GAAG,KAAK,aAAa;wBAAE,kBAAkB,GAAG,IAAI,CAAA;;wBACvD,SAAQ;gBACf,CAAC;gBAED,IAAI,eAAe,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;oBACnC,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAA;gBACjC,CAAC;gBAED,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,4DAA4D,CAAC;qBAC1F,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC,GAAG,CAA+B,CAAA;gBACzD,IAAI,CAAC,OAAO;oBAAE,SAAQ;gBAEtB,mEAAmE;gBACnE,MAAM,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;gBAC5C,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,wIAAwI,CAAC;qBACtJ,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,CAAC,CAAA;gBAC3D,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,8EAA8E,CAAC;qBAC5F,GAAG,CAAC,WAAW,EAAE,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAA;gBACxC,GAAG,CAAC,UAAU,GAAG,WAAW,CAAA;gBAC5B,GAAG,CAAC,cAAc,GAAG,OAAO,CAAC,GAAG,CAAA;gBAChC,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,CAAA;gBAEhD,MAAM,aAAa,GAAG,QAAQ,IAAI,OAAO,CAAC,GAAG,KAAK,aAAa,CAAA;gBAE/D,IAAI,CAAC;oBACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,UAAU,EAAE;wBAC/C,KAAK,EAAE,GAAG,CAAC,EAAE;wBACb,GAAG;wBACH,WAAW,EAAE,eAAe,CAAC,MAAM;wBACnC,OAAO,EAAE,aAAa;wBACtB,eAAe,EAAE,CAAC,SAAiB,EAAE,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,EAAE,SAAS,CAAC;qBAChF,CAAC,CAAA;oBAEF,sBAAsB;oBACtB,MAAM,aAAa,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;oBAC9C,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,2FAA2F,CAAC;yBACzG,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,CAAC,CAAA;oBACzD,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,CAAA;oBAElD,UAAU,GAAG,EAAE,GAAG,UAAU,EAAE,GAAG,MAAM,EAAE,CAAA;gBAC3C,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,IAAI,GAAG,YAAY,eAAe;wBAAE,MAAM,GAAG,CAAA;oBAC7C,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;oBAC5D,MAAM,aAAa,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;oBAC9C,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,uFAAuF,CAAC;yBACrG,GAAG,CAAC,GAAG,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,CAAC,CAAA;oBACtC,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,CAAA;oBAC/C,MAAM,GAAG,CAAA;gBACX,CAAC;YACH,CAAC;YAED,sBAAsB;YACtB,GAAG,CAAC,MAAM,GAAG,WAAW,CAAA;YACxB,GAAG,CAAC,MAAM,GAAG,UAAU,CAAA;YACvB,GAAG,CAAC,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;YAC1C,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,0FAA0F,CAAC;iBACxG,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,EAAE,CAAC,CAAA;YAC3D,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,GAAG,CAAC,CAAA;QAEtC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;YAC5D,GAAG,CAAC,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;YAE1C,uEAAuE;YACvE,sEAAsE;YACtE,sCAAsC;YACtC,IAAI,GAAG,YAAY,eAAe,EAAE,CAAC;gBACnC,GAAG,CAAC,MAAM,GAAG,SAAS,CAAA;gBACtB,GAAG,CAAC,KAAK,GAAG,GAAG,CAAA;gBACf,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,uFAAuF,CAAC;qBACrG,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,EAAE,CAAC,CAAA;gBAC1C,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,oGAAoG,CAAC;qBAClH,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;gBACd,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,GAAG,CAAC,CAAA;YACpC,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAA;gBACnE,GAAG,CAAC,KAAK,GAAG,GAAG,CAAA;gBACf,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,+EAA+E,CAAC;qBAC7F,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,EAAE,CAAC,CAAA;gBACtD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,YAAY,EAAE,GAAG,CAAC,CAAA;gBAE9E,uBAAuB;gBACvB,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,sFAAsF,CAAC;qBACpG,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;YAChB,CAAC;QAEH,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;YAC1C,IAAI,UAAU,CAAC,QAAQ,EAAE,CAAC;gBACxB,IAAI,CAAC;oBACH,MAAM,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;gBAChC,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,OAAO,CAAC,KAAK,CAAC,sCAAsC,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA;gBACrE,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,oGAAoG;IACpG,SAAS,CAAC,KAAa;QACrB,MAAM,UAAU,GAAG,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QACzD,IAAI,UAAU,EAAE,CAAC;YACf,UAAU,CAAC,KAAK,EAAE,CAAA;YAClB,OAAO,IAAI,CAAA;QACb,CAAC;QACD,OAAO,KAAK,CAAA;IACd,CAAC;IAED;;;;;OAKG;IACH,eAAe,CAAC,KAAa,EAAE,SAAiB;QAC9C,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,sDAAsD,CAAC,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,CAAA;IAC/F,CAAC;IAED,4EAA4E;IAC5E,UAAU;IACV,4EAA4E;IAE5E,wGAAwG;IACxG,MAAM,CAAC,KAAa;QAClB,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,0CAA0C,CAAC,CAAC,GAAG,CAAC,KAAK,CAAuC,CAAA;QACxH,IAAI,CAAC,GAAG;YAAE,OAAO,IAAI,CAAA;QAErB,MAAM,KAAK,GAAI,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,8DAA8D,CAAC,CAAC,GAAG,CAAC,KAAK,CAA8B;aACnI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACT,EAAE,EAAE,CAAC,CAAC,EAAE;YACR,KAAK,EAAE,CAAC,CAAC,MAAM;YACf,GAAG,EAAE,CAAC,CAAC,GAAG;YACV,MAAM,EAAE,CAAC,CAAC,MAAoB;YAC9B,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAA4B,CAAC,CAAC,CAAC,IAAI;YACrE,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAA4B,CAAC,CAAC,CAAC,IAAI;YACxE,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,SAAS,EAAE,CAAC,CAAC,UAAU;YACvB,WAAW,EAAE,CAAC,CAAC,YAAY;SAC5B,CAAC,CAAC,CAAA;QAEL,OAAO;YACL,EAAE,EAAE,GAAG,CAAC,EAAE;YACV,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,MAAM,EAAE,GAAG,CAAC,MAAmB;YAC/B,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,KAAK,CAA4B;YACtD,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAA4B,CAAC,CAAC,CAAC,IAAI;YAC5E,KAAK,EAAE,GAAG,CAAC,KAAK;YAChB,SAAS,EAAE,GAAG,CAAC,UAAU;YACzB,SAAS,EAAE,GAAG,CAAC,UAAU;YACzB,WAAW,EAAE,GAAG,CAAC,YAAY;YAC7B,SAAS,EAAE,GAAG,CAAC,UAAU,IAAI,IAAI;YACjC,UAAU,EAAE,GAAG,CAAC,YAAY,IAAI,IAAI;YACpC,cAAc,EAAE,GAAG,CAAC,gBAAgB,IAAI,IAAI;YAC5C,KAAK;SACN,CAAA;IACH,CAAC;IAED,8EAA8E;IAC9E,QAAQ,CAAC,IAA6E;QACpF,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,cAAc,CAAC,eAAe,EAAE;YACtD,OAAO,EAAE;gBACP,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI;gBACxD,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI;aAC/D,CAAC,MAAM,CAAC,OAAO,CAA8C;YAC9D,OAAO,EAAE,iBAAiB;YAC1B,KAAK,EAAE,IAAI,EAAE,KAAK;YAClB,MAAM,EAAE,IAAI,EAAE,MAAM;SACrB,CAAC,CAAA;QAEF,OAAQ,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAA8B,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACnF,EAAE,EAAE,GAAG,CAAC,EAAE;YACV,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,MAAM,EAAE,GAAG,CAAC,MAAmB;YAC/B,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,KAAK,CAA4B;YACtD,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAA4B,CAAC,CAAC,CAAC,IAAI;YAC5E,KAAK,EAAE,GAAG,CAAC,KAAK;YAChB,SAAS,EAAE,GAAG,CAAC,UAAU;YACzB,SAAS,EAAE,GAAG,CAAC,UAAU;YACzB,WAAW,EAAE,GAAG,CAAC,YAAY;YAC7B,SAAS,EAAE,GAAG,CAAC,UAAU,IAAI,IAAI;YACjC,UAAU,EAAE,GAAG,CAAC,YAAY,IAAI,IAAI;YACpC,cAAc,EAAE,GAAG,CAAC,gBAAgB,IAAI,IAAI;SAC7C,CAAC,CAAC,CAAA;IACL,CAAC;IAED,4EAA4E;IAC5E,kBAAkB;IAClB,4EAA4E;IAE5E,sFAAsF;IACtF,cAAc,CAAC,QAAuD;QACpE,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,cAAc,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI,CAAA;QAE1G,MAAM,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,4CAA4C,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;QAC/F,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;OAGf,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAA;QAChI,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;OAGf,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAA;QAChI,CAAC;QAED,OAAO,EAAE,GAAG,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAA;IAC7D,CAAC;IAED,uEAAuE;IACvE,cAAc,CAAC,EAAU;QACvB,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,yCAAyC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QACjF,OAAO,MAAM,CAAC,OAAO,GAAG,CAAC,CAAA;IAC3B,CAAC;IAED,sDAAsD;IACtD,aAAa;QACX,OAAQ,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,8BAA8B,CAAC,CAAC,GAAG,EAAgC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACtG,EAAE,EAAE,GAAG,CAAC,EAAY;YACpB,IAAI,EAAE,GAAG,CAAC,IAAc;YACxB,cAAc,EAAE,GAAG,CAAC,eAAyB;YAC7C,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,KAAe,CAA4B;YAChE,OAAO,EAAE,CAAC,CAAE,GAAG,CAAC,OAAkB;YAClC,SAAS,EAAE,GAAG,CAAC,WAA4B;YAC3C,SAAS,EAAE,GAAG,CAAC,WAA4B;SAC5C,CAAC,CAAC,CAAA;IACL,CAAC;IAED,uEAAuE;IACvE,WAAW,CAAC,EAAU;QACpB,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,2CAA2C,CAAC,CAAC,GAAG,CAAC,EAAE,CAAwC,CAAA;QACvH,IAAI,CAAC,GAAG;YAAE,OAAO,IAAI,CAAA;QACrB,OAAO;YACL,EAAE,EAAE,GAAG,CAAC,EAAY;YACpB,IAAI,EAAE,GAAG,CAAC,IAAc;YACxB,cAAc,EAAE,GAAG,CAAC,eAAyB;YAC7C,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,KAAe,CAA4B;YAChE,OAAO,EAAE,CAAC,CAAE,GAAG,CAAC,OAAkB;YAClC,SAAS,EAAE,GAAG,CAAC,WAA4B;YAC3C,SAAS,EAAE,GAAG,CAAC,WAA4B;SAC5C,CAAA;IACH,CAAC;IAED,0DAA0D;IAC1D,KAAK,CAAC,eAAe,CAAC,EAAU;QAC9B,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAA;QACrC,IAAI,CAAC,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,EAAE,EAAE,CAAC,CAAA;QAC3D,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAA;IACrD,CAAC;IAED,sDAAsD;IACtD,kBAAkB;QAChB,IAAI,IAAI,CAAC,SAAS;YAAE,OAAM;QAC1B,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAA;QAEhD,MAAM,IAAI,GAAG,GAAG,EAAE;YAChB,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAA;YACtB,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,SAAS,CAAC,CAAA;YAE5E,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;gBACjC,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAU,CAAC,IAAI,GAAG,EAAE,CAAC;oBACzC,OAAO,CAAC,GAAG,CAAC,8BAA8B,QAAQ,CAAC,EAAE,KAAK,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAA;oBAE3E,6BAA6B;oBAC7B,MAAM,OAAO,GAAG,aAAa,CAAC,QAAQ,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC,WAAW,EAAE,CAAA;oBACzE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,yEAAyE,CAAC;yBACvF,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAA;oBAE/C,yEAAyE;oBACzE,MAAM,QAAQ,GAAG,QAAQ,CAAC,SAAS;wBACjC,CAAC,CAAC,EAAE,GAAG,QAAQ,CAAC,KAAK,EAAE,cAAc,EAAE,QAAQ,CAAC,SAAS,EAAE;wBAC3D,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAA;oBAClB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;wBACjD,OAAO,CAAC,KAAK,CAAC,sCAAsC,QAAQ,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA;oBAC1E,CAAC,CAAC,CAAA;gBACJ,CAAC;YACH,CAAC;QACH,CAAC,CAAA;QAED,oCAAoC;QACpC,IAAI,EAAE,CAAA;QACN,IAAI,CAAC,SAAS,GAAG,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;IAC5C,CAAC;IAED,+DAA+D;IAC/D,iBAAiB;QACf,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;YAC7B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAA;YACrB,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAA;QAClD,CAAC;IACH,CAAC;IAED,4EAA4E;IAC5E,qCAAqC;IACrC,4EAA4E;IAE5E;;;;;;;;;;;;;;OAcG;IACH,KAAK,CAAC,iBAAiB;QACrB,MAAM,WAAW,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;KAGnC,CAAC,CAAC,GAAG,EAOJ,CAAA;QACF,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC;YAAE,OAAM;QAEpC,OAAO,CAAC,GAAG,CAAC,oBAAoB,WAAW,CAAC,MAAM,4CAA4C,CAAC,CAAA;QAE/F,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;YAC9B,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;YAC/C,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,EAAE,qDAAqD,GAAG,CAAC,IAAI,4BAA4B,CAAC,CAAA;gBACvH,SAAQ;YACV,CAAC;YAED,MAAM,OAAO,GAAG,GAAG,CAAC,gBAAgB,CAAA;YACpC,MAAM,SAAS,GAAG,GAAG,CAAC,UAAU,CAAA;YAEhC,gFAAgF;YAChF,+EAA+E;YAC/E,uEAAuE;YACvE,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC,CAAA;YAE9D,IAAI,CAAC,OAAO,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC9C,IAAI,CAAC,eAAe,CAClB,GAAG,CAAC,EAAE,EACN,4BAA4B,OAAO,IAAI,SAAS,6CAA6C,CAC9F,CAAA;gBACD,SAAQ;YACV,CAAC;YAED,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,IAAI,CAAC,eAAe,CAClB,GAAG,CAAC,EAAE,EACN,4BAA4B,OAAO,uDAAuD,CAC3F,CAAA;gBACD,SAAQ;YACV,CAAC;YAED,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC,SAAS,CAAC,IAAI,IAAI,CAAA;YAC1D,IAAI,IAAI,CAAC,eAAe,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACtC,MAAM,GAAG,GAAG,IAAI,gBAAgB,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,CAAC,YAAY,CAAC,CAAA;gBAC9E,OAAO,CAAC,IAAI,CAAC,sBAAsB,GAAG,CAAC,OAAO,EAAE,CAAC,CAAA;gBACjD,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,OAAO,CAAC,CAAA;gBACzC,SAAQ;YACV,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,2BAA2B,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,IAAI,cAAc,OAAO,cAAc,SAAS,GAAG,CAAC,CAAA;YAE1G,iFAAiF;YACjF,yEAAyE;YACzE,MAAM,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;OAEhC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAkE,CAAA;YAE/E,IAAI,WAAW,GAA4B,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAA4B,CAAC,CAAC,CAAC,EAAE,CAAA;YAC3G,KAAK,MAAM,EAAE,IAAI,QAAQ,EAAE,CAAC;gBAC1B,IAAI,EAAE,CAAC,GAAG,KAAK,OAAO;oBAAE,MAAK;gBAC7B,IAAI,EAAE,CAAC,MAAM,KAAK,WAAW,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC;oBAC3C,WAAW,GAAG,EAAE,GAAG,WAAW,EAAE,GAAI,SAAS,CAAC,EAAE,CAAC,MAAM,CAA6B,EAAE,CAAA;gBACxF,CAAC;YACH,CAAC;YAED,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;YAC/B,IAAI,CAAC,GAAG,EAAE,CAAC;gBACT,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,EAAE,+CAA+C,CAAC,CAAA;gBAC7E,SAAQ;YACV,CAAC;YAED,mEAAmE;YACnE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,qIAAqI,CAAC;iBACnJ,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC,CAAA;YAEvB,+EAA+E;YAC/E,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,UAAU,EAAE,EAAE,aAAa,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;gBACpF,OAAO,CAAC,KAAK,CAAC,6CAA6C,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA;YAC5E,CAAC,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;IAED,iGAAiG;IACzF,eAAe,CAAC,KAAa,EAAE,MAAc;QACnD,MAAM,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;QAC5C,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,sFAAsF,CAAC;aACpG,GAAG,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,CAAC,CAAA;QAClC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,kHAAkH,CAAC;aAChI,GAAG,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,CAAC,CAAA;QAClC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,sFAAsF,CAAC;aACpG,GAAG,CAAC,KAAK,CAAC,CAAA;QACb,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,iDAAiD,CAAC,CAAC,GAAG,CAAC,KAAK,CAA6C,CAAA;QACrI,IAAI,GAAG,EAAE,CAAC;YACR,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;gBAC1B,SAAS,EAAE,YAAY;gBACvB,KAAK,EAAE,GAAG,CAAC,EAAE;gBACb,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,MAAM,EAAE,QAAQ;gBAChB,SAAS,EAAE,WAAW;aACvB,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;IAED,4EAA4E;IAC5E,SAAS;IACT,4EAA4E;IAEpE,SAAS,CAAC,SAAiB,EAAE,GAAgB,EAAE,OAAgB;QACrE,MAAM,KAAK,GAAkB;YAC3B,SAAS;YACT,KAAK,EAAE,GAAG,CAAC,EAAE;YACb,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,OAAO;YACP,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAA;QACD,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAA;IACpC,CAAC;IAED,4EAA4E;IAC5E,WAAW;IACX,4EAA4E;IAE5E,+EAA+E;IAC/E,QAAQ;QACN,IAAI,CAAC,iBAAiB,EAAE,CAAA;QACxB,yBAAyB;QACzB,KAAK,MAAM,CAAC,KAAK,EAAE,UAAU,CAAC,IAAI,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAC9D,OAAO,CAAC,GAAG,CAAC,oCAAoC,KAAK,EAAE,CAAC,CAAA;YACxD,UAAU,CAAC,KAAK,EAAE,CAAA;QACpB,CAAC;QACD,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAA;QACf,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAA;IAC5C,CAAC;CACF;AAED,8EAA8E;AAC9E,YAAY;AACZ,8EAA8E;AAE9E,IAAI,cAAc,GAA0B,IAAI,CAAA;AAEhD,4GAA4G;AAC5G,MAAM,UAAU,kBAAkB;IAChC,IAAI,cAAc;QAAE,OAAO,cAAc,CAAA;IACzC,cAAc,GAAG,IAAI,cAAc,EAAE,CAAA;IACrC,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAA;IACrD,OAAO,cAAc,CAAA;AACvB,CAAC;AAED,8FAA8F;AAC9F,MAAM,UAAU,iBAAiB;IAC/B,IAAI,CAAC,cAAc;QAAE,MAAM,IAAI,KAAK,CAAC,mEAAmE,CAAC,CAAA;IACzG,OAAO,cAAc,CAAA;AACvB,CAAC;AAED,sFAAsF;AACtF,MAAM,UAAU,sBAAsB;IACpC,IAAI,cAAc,EAAE,CAAC;QACnB,cAAc,CAAC,QAAQ,EAAE,CAAA;QACzB,cAAc,GAAG,IAAI,CAAA;IACvB,CAAC;AACH,CAAC"}
@@ -9,7 +9,8 @@
9
9
  * 1. validate_repo — verify path exists, is a git repo, check staleness
10
10
  * 2. create_session — create a Codekin session for the run
11
11
  * 3. run_prompt — start Claude, send the prompt, wait for result
12
- * 4. save_report — write Markdown output to outputDir, commit on codekin/reports branch, push
12
+ * 4. save_report — write Markdown output to outputDir, commit on a fresh
13
+ * audit/<kind>-<YYYY-MM-DD> branch, push
13
14
  *
14
15
  * MD file format — YAML frontmatter followed by the Claude prompt:
15
16
  *
@@ -45,6 +46,10 @@ export interface WorkflowDef {
45
46
  model?: string;
46
47
  prompt: string;
47
48
  }
49
+ /** Branch name for the per-run report commit. Kept short and stable per (kind, date). */
50
+ export declare function reportBranchName(kind: string, dateStr: string): string;
51
+ /** True when a branch name is one a workflow run produces (or used to produce). */
52
+ export declare function isWorkflowReportsBranch(branch: string): boolean;
48
53
  /**
49
54
  * Discover and register any standalone repo workflows (kinds not already
50
55
  * registered as built-ins). Called when a repo is configured or when listing