@zhixuan92/multi-model-agent-core 4.2.1 → 4.3.0

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 (235) hide show
  1. package/README.md +1 -1
  2. package/dist/config/schema.d.ts +3 -0
  3. package/dist/config/schema.d.ts.map +1 -1
  4. package/dist/config/schema.js +7 -4
  5. package/dist/config/schema.js.map +1 -1
  6. package/dist/error-codes.d.ts +1 -0
  7. package/dist/error-codes.d.ts.map +1 -1
  8. package/dist/error-codes.js +2 -0
  9. package/dist/error-codes.js.map +1 -1
  10. package/dist/events/running-headline-sink.d.ts.map +1 -1
  11. package/dist/events/running-headline-sink.js +47 -7
  12. package/dist/events/running-headline-sink.js.map +1 -1
  13. package/dist/events/telemetry-types.d.ts +24 -20
  14. package/dist/events/telemetry-types.d.ts.map +1 -1
  15. package/dist/identity/auth-token-store.d.ts +36 -0
  16. package/dist/identity/auth-token-store.d.ts.map +1 -1
  17. package/dist/identity/auth-token-store.js +71 -2
  18. package/dist/identity/auth-token-store.js.map +1 -1
  19. package/dist/identity/cwd-validator.d.ts.map +1 -1
  20. package/dist/identity/cwd-validator.js +15 -3
  21. package/dist/identity/cwd-validator.js.map +1 -1
  22. package/dist/identity/main-model-resolver.d.ts +14 -0
  23. package/dist/identity/main-model-resolver.d.ts.map +1 -0
  24. package/dist/identity/main-model-resolver.js +83 -0
  25. package/dist/identity/main-model-resolver.js.map +1 -0
  26. package/dist/index.d.ts +3 -1
  27. package/dist/index.d.ts.map +1 -1
  28. package/dist/index.js +4 -2
  29. package/dist/index.js.map +1 -1
  30. package/dist/intake/brief-compiler-slots/delegate.d.ts +10 -11
  31. package/dist/intake/brief-compiler-slots/delegate.d.ts.map +1 -1
  32. package/dist/intake/brief-compiler-slots/delegate.js +12 -14
  33. package/dist/intake/brief-compiler-slots/delegate.js.map +1 -1
  34. package/dist/intake/brief-compiler-slots/execute-plan.js +3 -1
  35. package/dist/intake/brief-compiler-slots/execute-plan.js.map +1 -1
  36. package/dist/intake/context-overflow-estimator.d.ts +33 -0
  37. package/dist/intake/context-overflow-estimator.d.ts.map +1 -0
  38. package/dist/intake/context-overflow-estimator.js +36 -0
  39. package/dist/intake/context-overflow-estimator.js.map +1 -0
  40. package/dist/intake/pipeline.d.ts.map +1 -1
  41. package/dist/intake/pipeline.js +46 -0
  42. package/dist/intake/pipeline.js.map +1 -1
  43. package/dist/intake/plan-extractor.d.ts.map +1 -1
  44. package/dist/intake/plan-extractor.js +10 -1
  45. package/dist/intake/plan-extractor.js.map +1 -1
  46. package/dist/intake/types.d.ts +1 -0
  47. package/dist/intake/types.d.ts.map +1 -1
  48. package/dist/lifecycle/diff-tracker.d.ts +17 -1
  49. package/dist/lifecycle/diff-tracker.d.ts.map +1 -1
  50. package/dist/lifecycle/diff-tracker.js +115 -2
  51. package/dist/lifecycle/diff-tracker.js.map +1 -1
  52. package/dist/lifecycle/handlers/annotate-completion-handler.d.ts +9 -0
  53. package/dist/lifecycle/handlers/annotate-completion-handler.d.ts.map +1 -0
  54. package/dist/lifecycle/handlers/annotate-completion-handler.js +171 -0
  55. package/dist/lifecycle/handlers/annotate-completion-handler.js.map +1 -0
  56. package/dist/lifecycle/handlers/annotate-criteria-handler.d.ts +3 -0
  57. package/dist/lifecycle/handlers/annotate-criteria-handler.d.ts.map +1 -0
  58. package/dist/lifecycle/handlers/annotate-criteria-handler.js +67 -0
  59. package/dist/lifecycle/handlers/annotate-criteria-handler.js.map +1 -0
  60. package/dist/lifecycle/handlers/baseline-handlers.d.ts.map +1 -1
  61. package/dist/lifecycle/handlers/baseline-handlers.js +152 -65
  62. package/dist/lifecycle/handlers/baseline-handlers.js.map +1 -1
  63. package/dist/lifecycle/handlers/files-written-cross-check.d.ts +21 -0
  64. package/dist/lifecycle/handlers/files-written-cross-check.d.ts.map +1 -0
  65. package/dist/lifecycle/handlers/files-written-cross-check.js +85 -0
  66. package/dist/lifecycle/handlers/files-written-cross-check.js.map +1 -0
  67. package/dist/lifecycle/handlers/review-handler.d.ts +3 -0
  68. package/dist/lifecycle/handlers/review-handler.d.ts.map +1 -0
  69. package/dist/lifecycle/handlers/review-handler.js +141 -0
  70. package/dist/lifecycle/handlers/review-handler.js.map +1 -0
  71. package/dist/lifecycle/handlers/rework-handler.d.ts +3 -0
  72. package/dist/lifecycle/handlers/rework-handler.d.ts.map +1 -0
  73. package/dist/lifecycle/handlers/rework-handler.js +77 -0
  74. package/dist/lifecycle/handlers/rework-handler.js.map +1 -0
  75. package/dist/lifecycle/handlers/terminal-handlers.d.ts.map +1 -1
  76. package/dist/lifecycle/handlers/terminal-handlers.js +16 -3
  77. package/dist/lifecycle/handlers/terminal-handlers.js.map +1 -1
  78. package/dist/lifecycle/lifecycle-context.d.ts +4 -0
  79. package/dist/lifecycle/lifecycle-context.d.ts.map +1 -1
  80. package/dist/lifecycle/lifecycle-driver.d.ts.map +1 -1
  81. package/dist/lifecycle/lifecycle-driver.js +12 -7
  82. package/dist/lifecycle/lifecycle-driver.js.map +1 -1
  83. package/dist/lifecycle/parallel-criteria-routes.d.ts +1 -1
  84. package/dist/lifecycle/parallel-criteria-routes.d.ts.map +1 -1
  85. package/dist/lifecycle/parallel-criteria-routes.js +21 -1
  86. package/dist/lifecycle/parallel-criteria-routes.js.map +1 -1
  87. package/dist/lifecycle/shared-compute.d.ts +9 -0
  88. package/dist/lifecycle/shared-compute.d.ts.map +1 -1
  89. package/dist/lifecycle/shared-compute.js +35 -3
  90. package/dist/lifecycle/shared-compute.js.map +1 -1
  91. package/dist/lifecycle/stage-plan-builder.d.ts.map +1 -1
  92. package/dist/lifecycle/stage-plan-builder.js +65 -85
  93. package/dist/lifecycle/stage-plan-builder.js.map +1 -1
  94. package/dist/lifecycle/stage-plan-types.d.ts +48 -0
  95. package/dist/lifecycle/stage-plan-types.d.ts.map +1 -1
  96. package/dist/lifecycle/stage-progression.d.ts.map +1 -1
  97. package/dist/lifecycle/stage-progression.js +17 -24
  98. package/dist/lifecycle/stage-progression.js.map +1 -1
  99. package/dist/lifecycle/task-runner.d.ts.map +1 -1
  100. package/dist/lifecycle/task-runner.js +12 -1
  101. package/dist/lifecycle/task-runner.js.map +1 -1
  102. package/dist/model-profiles.json +192 -53
  103. package/dist/providers/anthropic-messages-adapter.d.ts +8 -0
  104. package/dist/providers/anthropic-messages-adapter.d.ts.map +1 -1
  105. package/dist/providers/anthropic-messages-adapter.js +16 -1
  106. package/dist/providers/anthropic-messages-adapter.js.map +1 -1
  107. package/dist/providers/file-tracker.d.ts +33 -0
  108. package/dist/providers/file-tracker.d.ts.map +1 -1
  109. package/dist/providers/file-tracker.js +54 -0
  110. package/dist/providers/file-tracker.js.map +1 -1
  111. package/dist/providers/provider-factory.d.ts.map +1 -1
  112. package/dist/providers/provider-factory.js +27 -2
  113. package/dist/providers/provider-factory.js.map +1 -1
  114. package/dist/providers/runner-shell-types.d.ts +14 -0
  115. package/dist/providers/runner-shell-types.d.ts.map +1 -1
  116. package/dist/providers/runner-shell.d.ts.map +1 -1
  117. package/dist/providers/runner-shell.js +103 -26
  118. package/dist/providers/runner-shell.js.map +1 -1
  119. package/dist/providers/tool-implementations.d.ts +12 -0
  120. package/dist/providers/tool-implementations.d.ts.map +1 -1
  121. package/dist/providers/tool-implementations.js +33 -0
  122. package/dist/providers/tool-implementations.js.map +1 -1
  123. package/dist/reporting/annotate-completion-parser.d.ts +39 -0
  124. package/dist/reporting/annotate-completion-parser.d.ts.map +1 -0
  125. package/dist/reporting/annotate-completion-parser.js +43 -0
  126. package/dist/reporting/annotate-completion-parser.js.map +1 -0
  127. package/dist/reporting/compose-running-headline.d.ts +15 -1
  128. package/dist/reporting/compose-running-headline.d.ts.map +1 -1
  129. package/dist/reporting/compose-running-headline.js +76 -1
  130. package/dist/reporting/compose-running-headline.js.map +1 -1
  131. package/dist/reporting/report-parser-slots/research-report.d.ts +1 -1
  132. package/dist/review/default-engines.d.ts.map +1 -1
  133. package/dist/review/default-engines.js +8 -4
  134. package/dist/review/default-engines.js.map +1 -1
  135. package/dist/review/parse-review-report.d.ts +6 -0
  136. package/dist/review/parse-review-report.d.ts.map +1 -0
  137. package/dist/review/parse-review-report.js +40 -0
  138. package/dist/review/parse-review-report.js.map +1 -0
  139. package/dist/review/reviewer-engine.d.ts +12 -3
  140. package/dist/review/reviewer-engine.d.ts.map +1 -1
  141. package/dist/review/reviewer-engine.js +4 -3
  142. package/dist/review/reviewer-engine.js.map +1 -1
  143. package/dist/review/templates/annotate-completion.d.ts +12 -0
  144. package/dist/review/templates/annotate-completion.d.ts.map +1 -0
  145. package/dist/review/templates/annotate-completion.js +72 -0
  146. package/dist/review/templates/annotate-completion.js.map +1 -0
  147. package/dist/review/templates/quality-review.d.ts +3 -0
  148. package/dist/review/templates/quality-review.d.ts.map +1 -0
  149. package/dist/review/templates/quality-review.js +40 -0
  150. package/dist/review/templates/quality-review.js.map +1 -0
  151. package/dist/review/templates/rework.d.ts +3 -0
  152. package/dist/review/templates/rework.d.ts.map +1 -0
  153. package/dist/review/templates/rework.js +42 -0
  154. package/dist/review/templates/rework.js.map +1 -0
  155. package/dist/review/templates/shared.d.ts +32 -0
  156. package/dist/review/templates/shared.d.ts.map +1 -1
  157. package/dist/review/templates/spec-review.d.ts +1 -16
  158. package/dist/review/templates/spec-review.d.ts.map +1 -1
  159. package/dist/review/templates/spec-review.js +23 -31
  160. package/dist/review/templates/spec-review.js.map +1 -1
  161. package/dist/stores/context-block-project-cap.d.ts +14 -0
  162. package/dist/stores/context-block-project-cap.d.ts.map +1 -0
  163. package/dist/stores/context-block-project-cap.js +68 -0
  164. package/dist/stores/context-block-project-cap.js.map +1 -0
  165. package/dist/stores/context-block-tool.d.ts +2 -0
  166. package/dist/stores/context-block-tool.d.ts.map +1 -1
  167. package/dist/stores/context-block-tool.js +3 -2
  168. package/dist/stores/context-block-tool.js.map +1 -1
  169. package/dist/stores/file-backed-context-block-store.d.ts +8 -1
  170. package/dist/stores/file-backed-context-block-store.d.ts.map +1 -1
  171. package/dist/stores/file-backed-context-block-store.js +118 -6
  172. package/dist/stores/file-backed-context-block-store.js.map +1 -1
  173. package/dist/tools/audit/plan-audit-criteria.d.ts +35 -0
  174. package/dist/tools/audit/plan-audit-criteria.d.ts.map +1 -0
  175. package/dist/tools/audit/plan-audit-criteria.js +136 -0
  176. package/dist/tools/audit/plan-audit-criteria.js.map +1 -0
  177. package/dist/tools/audit/plan-audit-verdict.d.ts +15 -0
  178. package/dist/tools/audit/plan-audit-verdict.d.ts.map +1 -0
  179. package/dist/tools/audit/plan-audit-verdict.js +44 -0
  180. package/dist/tools/audit/plan-audit-verdict.js.map +1 -0
  181. package/dist/tools/audit/schema.d.ts +1 -0
  182. package/dist/tools/audit/schema.d.ts.map +1 -1
  183. package/dist/tools/audit/schema.js +6 -3
  184. package/dist/tools/audit/schema.js.map +1 -1
  185. package/dist/tools/audit/tool-config.d.ts +3 -0
  186. package/dist/tools/audit/tool-config.d.ts.map +1 -1
  187. package/dist/tools/audit/tool-config.js +8 -0
  188. package/dist/tools/audit/tool-config.js.map +1 -1
  189. package/dist/tools/delegate/implementer-criteria.d.ts +31 -47
  190. package/dist/tools/delegate/implementer-criteria.d.ts.map +1 -1
  191. package/dist/tools/delegate/implementer-criteria.js +60 -88
  192. package/dist/tools/delegate/implementer-criteria.js.map +1 -1
  193. package/dist/tools/delegate/tool-config.js +4 -4
  194. package/dist/tools/delegate/tool-config.js.map +1 -1
  195. package/dist/tools/execute-plan/implementer-criteria.d.ts +42 -37
  196. package/dist/tools/execute-plan/implementer-criteria.d.ts.map +1 -1
  197. package/dist/tools/execute-plan/implementer-criteria.js +79 -79
  198. package/dist/tools/execute-plan/implementer-criteria.js.map +1 -1
  199. package/dist/tools/execute-plan/tool-config.d.ts.map +1 -1
  200. package/dist/tools/execute-plan/tool-config.js +23 -13
  201. package/dist/tools/execute-plan/tool-config.js.map +1 -1
  202. package/dist/types/config.d.ts +1 -0
  203. package/dist/types/config.d.ts.map +1 -1
  204. package/dist/types/enums.d.ts +2 -2
  205. package/dist/types/run-result.d.ts +71 -0
  206. package/dist/types/run-result.d.ts.map +1 -1
  207. package/dist/types/task-spec.d.ts +14 -0
  208. package/dist/types/task-spec.d.ts.map +1 -1
  209. package/dist/types.d.ts +10 -0
  210. package/dist/types.d.ts.map +1 -1
  211. package/package.json +5 -1
  212. package/dist/lifecycle/handlers/quality-chain-handlers.d.ts +0 -22
  213. package/dist/lifecycle/handlers/quality-chain-handlers.d.ts.map +0 -1
  214. package/dist/lifecycle/handlers/quality-chain-handlers.js +0 -369
  215. package/dist/lifecycle/handlers/quality-chain-handlers.js.map +0 -1
  216. package/dist/lifecycle/handlers/review-diff-handler.d.ts +0 -31
  217. package/dist/lifecycle/handlers/review-diff-handler.d.ts.map +0 -1
  218. package/dist/lifecycle/handlers/review-diff-handler.js +0 -168
  219. package/dist/lifecycle/handlers/review-diff-handler.js.map +0 -1
  220. package/dist/lifecycle/handlers/run-verify-command-handler.d.ts +0 -25
  221. package/dist/lifecycle/handlers/run-verify-command-handler.d.ts.map +0 -1
  222. package/dist/lifecycle/handlers/run-verify-command-handler.js +0 -84
  223. package/dist/lifecycle/handlers/run-verify-command-handler.js.map +0 -1
  224. package/dist/lifecycle/handlers/spec-chain-handlers.d.ts +0 -21
  225. package/dist/lifecycle/handlers/spec-chain-handlers.d.ts.map +0 -1
  226. package/dist/lifecycle/handlers/spec-chain-handlers.js +0 -287
  227. package/dist/lifecycle/handlers/spec-chain-handlers.js.map +0 -1
  228. package/dist/review/templates/diff-review.d.ts +0 -11
  229. package/dist/review/templates/diff-review.d.ts.map +0 -1
  230. package/dist/review/templates/diff-review.js +0 -39
  231. package/dist/review/templates/diff-review.js.map +0 -1
  232. package/dist/review/templates/quality-review-artifact.d.ts +0 -16
  233. package/dist/review/templates/quality-review-artifact.d.ts.map +0 -1
  234. package/dist/review/templates/quality-review-artifact.js +0 -46
  235. package/dist/review/templates/quality-review-artifact.js.map +0 -1
@@ -64,7 +64,23 @@ export declare class DiffTracker {
64
64
  ensureSnapshotted(relativePath: string): Promise<void>;
65
65
  /** Return the unified diff of every snapshotted path against its
66
66
  * current on-disk content. Empty string when nothing changed.
67
- * Capped at MAX_DIFF_BYTES with a truncation marker. */
67
+ * Capped at MAX_DIFF_BYTES with a truncation marker.
68
+ *
69
+ * Snapshot-based diffs only cover the paths captured at task start
70
+ * (typically `task.filePaths`). For dispatch routes where the worker
71
+ * modifies files NOT pre-declared (notably `mma-execute-plan` —
72
+ * filePaths is the plan markdown, but the worker edits source files
73
+ * derived from the plan's own contents), the snapshot path returns
74
+ * empty even when the worker did real work.
75
+ *
76
+ * Fallback: when the snapshot diff is empty AND the cwd is inside a
77
+ * git repository, use `git diff HEAD` for tracked changes plus
78
+ * `git ls-files --others --exclude-standard` for new untracked files.
79
+ * This recovers the actual on-disk delta in the common case (any
80
+ * project under git) without false positives in test fixtures
81
+ * (temp dirs aren't git repos → fallback returns null → snapshot
82
+ * empty result preserved).
83
+ */
68
84
  cumulativeDiff(): Promise<string>;
69
85
  /** Test hook: how many baselines have been captured. */
70
86
  size(): number;
@@ -1 +1 @@
1
- {"version":3,"file":"diff-tracker.d.ts","sourceRoot":"","sources":["../../src/lifecycle/diff-tracker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AAYH,qBAAa,WAAW;IAGV,OAAO,CAAC,GAAG;IAFvB,OAAO,CAAC,SAAS,CAA+B;gBAE5B,GAAG,EAAE,MAAM;IAE/B;;;;;;;;OAQG;IACG,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAmBnE;;;;;;OAMG;IACG,iBAAiB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK5D;;6DAEyD;IACnD,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC;IAkBvC,wDAAwD;IACxD,IAAI,IAAI,MAAM;CAGf"}
1
+ {"version":3,"file":"diff-tracker.d.ts","sourceRoot":"","sources":["../../src/lifecycle/diff-tracker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AAgBH,qBAAa,WAAW;IAGV,OAAO,CAAC,GAAG;IAFvB,OAAO,CAAC,SAAS,CAA+B;gBAE5B,GAAG,EAAE,MAAM;IAE/B;;;;;;;;OAQG;IACG,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAmBnE;;;;;;OAMG;IACG,iBAAiB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK5D;;;;;;;;;;;;;;;;;;OAkBG;IACG,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC;IA8BvC,wDAAwD;IACxD,IAAI,IAAI,MAAM;CAGf"}
@@ -42,6 +42,9 @@
42
42
  */
43
43
  import * as fs from 'node:fs/promises';
44
44
  import * as path from 'node:path';
45
+ import { execFile } from 'node:child_process';
46
+ import { promisify } from 'node:util';
47
+ const execFileP = promisify(execFile);
45
48
  const MAX_DIFF_BYTES = 50 * 1024; // 50KB cap to protect reviewer context window
46
49
  const CONTEXT_LINES = 3; // unified-diff convention
47
50
  export class DiffTracker {
@@ -94,7 +97,23 @@ export class DiffTracker {
94
97
  }
95
98
  /** Return the unified diff of every snapshotted path against its
96
99
  * current on-disk content. Empty string when nothing changed.
97
- * Capped at MAX_DIFF_BYTES with a truncation marker. */
100
+ * Capped at MAX_DIFF_BYTES with a truncation marker.
101
+ *
102
+ * Snapshot-based diffs only cover the paths captured at task start
103
+ * (typically `task.filePaths`). For dispatch routes where the worker
104
+ * modifies files NOT pre-declared (notably `mma-execute-plan` —
105
+ * filePaths is the plan markdown, but the worker edits source files
106
+ * derived from the plan's own contents), the snapshot path returns
107
+ * empty even when the worker did real work.
108
+ *
109
+ * Fallback: when the snapshot diff is empty AND the cwd is inside a
110
+ * git repository, use `git diff HEAD` for tracked changes plus
111
+ * `git ls-files --others --exclude-standard` for new untracked files.
112
+ * This recovers the actual on-disk delta in the common case (any
113
+ * project under git) without false positives in test fixtures
114
+ * (temp dirs aren't git repos → fallback returns null → snapshot
115
+ * empty result preserved).
116
+ */
98
117
  async cumulativeDiff() {
99
118
  const segments = [];
100
119
  for (const [rel, before] of this.baselines.entries()) {
@@ -115,7 +134,18 @@ export class DiffTracker {
115
134
  if (seg)
116
135
  segments.push(seg);
117
136
  }
118
- return capWithMarker(segments.join('\n\n'));
137
+ let result = segments.join('\n\n');
138
+ // 4.2.3+ git fallback: snapshot diff is empty (no pre-declared paths
139
+ // changed) — try git for the on-disk delta. Cheap, idempotent, no
140
+ // mutation. Only fires when snapshot returned nothing, so projects
141
+ // that DO have proper filePaths snapshotting see no behavior change.
142
+ if (result === '') {
143
+ const gitDiff = await tryGitDiff(this.cwd);
144
+ if (gitDiff !== null && gitDiff.trim().length > 0) {
145
+ result = gitDiff;
146
+ }
147
+ }
148
+ return capWithMarker(result);
119
149
  }
120
150
  /** Test hook: how many baselines have been captured. */
121
151
  size() {
@@ -313,4 +343,87 @@ function collectHunks(ops, context) {
313
343
  }
314
344
  return hunks;
315
345
  }
346
+ /**
347
+ * Git-based fallback for `cumulativeDiff()` (4.2.3+). Returns:
348
+ * - null when cwd isn't inside a git repo, or git isn't on PATH, or
349
+ * anything goes wrong (caller treats as "no fallback available")
350
+ * - empty string when cwd IS in a git repo but the worktree is clean
351
+ * - non-empty diff otherwise
352
+ *
353
+ * Combines `git diff HEAD` (tracked modifications + staged changes) with
354
+ * synthesized full-file diffs for untracked files (so newly-created files
355
+ * the worker added show up in the reviewer's diff just like modifications
356
+ * do — same `+++ b/path / @@ -0,0 +N,N @@` shape).
357
+ *
358
+ * Only called when snapshot-based diff is empty, so this never adds noise
359
+ * to runs where the operator declared filePaths properly. Adds zero cost
360
+ * for the common case (snapshot diff non-empty).
361
+ */
362
+ async function tryGitDiff(cwd) {
363
+ try {
364
+ // Confirm we're in a git work tree. exitCode 0 + stdout 'true' = yes.
365
+ const { stdout: insideOut } = await execFileP('git', ['rev-parse', '--is-inside-work-tree'], {
366
+ cwd, encoding: 'utf-8', timeout: 5000,
367
+ });
368
+ if (insideOut.trim() !== 'true')
369
+ return null;
370
+ }
371
+ catch {
372
+ // Not a git repo, or git not on PATH, or rev-parse failed. No fallback.
373
+ return null;
374
+ }
375
+ let trackedDiff = '';
376
+ try {
377
+ const { stdout } = await execFileP('git', ['diff', 'HEAD'], {
378
+ cwd, encoding: 'utf-8', timeout: 10_000, maxBuffer: MAX_DIFF_BYTES * 4,
379
+ });
380
+ trackedDiff = stdout;
381
+ }
382
+ catch {
383
+ // Worktree exists but `git diff HEAD` failed (e.g. no commits yet).
384
+ // Try plain `git diff` (working tree vs index) as a softer fallback.
385
+ try {
386
+ const { stdout } = await execFileP('git', ['diff'], {
387
+ cwd, encoding: 'utf-8', timeout: 10_000, maxBuffer: MAX_DIFF_BYTES * 4,
388
+ });
389
+ trackedDiff = stdout;
390
+ }
391
+ catch {
392
+ trackedDiff = '';
393
+ }
394
+ }
395
+ // Untracked files — render each as a full new-file diff so reviewers see
396
+ // them with the same shape as modifications.
397
+ let untrackedDiff = '';
398
+ try {
399
+ const { stdout } = await execFileP('git', ['ls-files', '--others', '--exclude-standard'], {
400
+ cwd, encoding: 'utf-8', timeout: 5000,
401
+ });
402
+ const paths = stdout.split('\n').map(p => p.trim()).filter(p => p.length > 0);
403
+ for (const rel of paths) {
404
+ try {
405
+ const abs = path.resolve(cwd, rel);
406
+ const content = await fs.readFile(abs, 'utf-8');
407
+ const seg = formatUnifiedDiff(rel, null, content);
408
+ if (seg) {
409
+ if (untrackedDiff.length > 0)
410
+ untrackedDiff += '\n\n';
411
+ untrackedDiff += seg;
412
+ }
413
+ }
414
+ catch {
415
+ // Non-text file or unreadable — skip.
416
+ }
417
+ }
418
+ }
419
+ catch {
420
+ untrackedDiff = '';
421
+ }
422
+ const parts = [];
423
+ if (trackedDiff.trim().length > 0)
424
+ parts.push(trackedDiff);
425
+ if (untrackedDiff.trim().length > 0)
426
+ parts.push(untrackedDiff);
427
+ return parts.join('\n\n');
428
+ }
316
429
  //# sourceMappingURL=diff-tracker.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"diff-tracker.js","sourceRoot":"","sources":["../../src/lifecycle/diff-tracker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"diff-tracker.js","sourceRoot":"","sources":["../../src/lifecycle/diff-tracker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AAEH,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,MAAM,SAAS,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;AAEtC,MAAM,cAAc,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,8CAA8C;AAChF,MAAM,aAAa,GAAG,CAAC,CAAC,CAAU,0BAA0B;AAM5D,MAAM,OAAO,WAAW;IAGF;IAFZ,SAAS,GAAG,IAAI,GAAG,EAAoB,CAAC;IAEhD,YAAoB,GAAW;QAAX,QAAG,GAAH,GAAG,CAAQ;IAAG,CAAC;IAEnC;;;;;;;;OAQG;IACH,KAAK,CAAC,QAAQ,CAAC,aAAoC;QACjD,KAAK,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;YAChC,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC;gBAAE,SAAS;YACtC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YACxC,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;gBAChD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;YACnC,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,IAAK,CAA2B,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;oBACnD,0DAA0D;oBAC1D,gDAAgD;oBAChD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;gBAChC,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,CAAC;gBACV,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,iBAAiB,CAAC,YAAoB;QAC1C,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC;YAAE,OAAO;QAC7C,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;IACtC,CAAC;IAED;;;;;;;;;;;;;;;;;;OAkBG;IACH,KAAK,CAAC,cAAc;QAClB,MAAM,QAAQ,GAAa,EAAE,CAAC;QAC9B,KAAK,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,CAAC;YACrD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YACxC,IAAI,KAAe,CAAC;YACpB,IAAI,CAAC;gBACH,KAAK,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;YAC1C,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,IAAK,CAA2B,CAAC,IAAI,KAAK,QAAQ;oBAAE,KAAK,GAAG,IAAI,CAAC;;oBAC5D,MAAM,CAAC,CAAC;YACf,CAAC;YACD,IAAI,MAAM,KAAK,KAAK;gBAAE,SAAS;YAC/B,MAAM,GAAG,GAAG,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;YAClD,IAAI,GAAG;gBAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC9B,CAAC;QACD,IAAI,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAEnC,qEAAqE;QACrE,kEAAkE;QAClE,mEAAmE;QACnE,qEAAqE;QACrE,IAAI,MAAM,KAAK,EAAE,EAAE,CAAC;YAClB,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC3C,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAClD,MAAM,GAAG,OAAO,CAAC;YACnB,CAAC;QACH,CAAC;QACD,OAAO,aAAa,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC;IAED,wDAAwD;IACxD,IAAI;QACF,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;IAC7B,CAAC;CACF;AAED,SAAS,aAAa,CAAC,CAAS;IAC9B,IAAI,CAAC,CAAC,MAAM,IAAI,cAAc;QAAE,OAAO,CAAC,CAAC;IACzC,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,GAAG,cAAc,CAAC;IACzC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,cAAc,CAAC,GAAG,0BAA0B,cAAc,YAAY,MAAM,qBAAqB,CAAC;AACtH,CAAC;AAED,iCAAiC;AACjC,SAAS,iBAAiB,CAAC,OAAe,EAAE,MAAgB,EAAE,KAAe;IAC3E,IAAI,MAAM,KAAK,KAAK;QAAE,OAAO,EAAE,CAAC;IAChC,MAAM,WAAW,GAAG,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;IACrE,MAAM,UAAU,GAAG,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;IAElE,MAAM,MAAM,GAAG,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,OAAO,EAAE,CAAC;IAC9D,MAAM,MAAM,GAAG,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,OAAO,EAAE,CAAC;IAE7D,MAAM,GAAG,GAAG,QAAQ,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;IAC9C,MAAM,KAAK,GAAG,YAAY,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;IAC/C,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAElC,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,GAAG,CAAC,IAAI,CAAC,OAAO,MAAM,EAAE,CAAC,CAAC;IAC1B,GAAG,CAAC,IAAI,CAAC,OAAO,MAAM,EAAE,CAAC,CAAC;IAC1B,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,WAAW,GAAG,CAAC,IAAI,CAAC,CAAC,WAAW,KAAK,CAAC,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,CAAC,UAAU,KAAK,CAAC,CAAC;QAC9F,KAAK,MAAM,IAAI,IAAI,CAAC,CAAC,KAAK;YAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7C,CAAC;IACD,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACxB,CAAC;AAED,SAAS,iBAAiB,CAAC,CAAS;IAClC,kEAAkE;IAClE,oEAAoE;IACpE,IAAI,CAAC,KAAK,EAAE;QAAE,OAAO,EAAE,CAAC;IACxB,MAAM,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC1B,oEAAoE;IACpE,qEAAqE;IACrE,gDAAgD;IAChD,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE;QAAE,GAAG,CAAC,GAAG,EAAE,CAAC;IAC5D,OAAO,GAAG,CAAC;AACb,CAAC;AAOD;;;;;;GAMG;AACH,SAAS,QAAQ,CAAC,CAAW,EAAE,CAAW;IACxC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;IACnB,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;IACnB,2BAA2B;IAC3B,MAAM,EAAE,GAAe,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,IAAI,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACrF,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAChC,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAChC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;;gBAC9C,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;IACD,4BAA4B;IAC5B,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IACjB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACtB,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAClB,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACxC,CAAC,EAAE,CAAC;YAAC,CAAC,EAAE,CAAC;QACX,CAAC;aAAM,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YACxC,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACzC,CAAC,EAAE,CAAC;QACN,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACzC,CAAC,EAAE,CAAC;QACN,CAAC;IACH,CAAC;IACD,OAAO,CAAC,GAAG,CAAC;QAAE,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACzD,OAAO,CAAC,GAAG,CAAC;QAAE,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACzD,OAAO,GAAG,CAAC;AACb,CAAC;AAUD;;;GAGG;AACH,SAAS,YAAY,CAAC,GAAa,EAAE,OAAe;IAClD,MAAM,KAAK,GAAW,EAAE,CAAC;IACzB,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,IAAI,SAAS,GAAG,CAAC,CAAC,CAAC,4CAA4C;IAC/D,IAAI,QAAQ,GAAG,CAAC,CAAC;IAEjB,OAAO,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC;QACtB,6CAA6C;QAC7C,OAAO,CAAC,GAAG,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YACjD,4DAA4D;YAC5D,4DAA4D;YAC5D,IAAI,SAAS,GAAG,CAAC,CAAC;YAClB,OAAO,SAAS,GAAG,GAAG,CAAC,MAAM,IAAI,SAAS,GAAG,CAAC,GAAG,OAAO,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK,OAAO;gBAAE,SAAS,EAAE,CAAC;YACzG,IAAI,SAAS,GAAG,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK,OAAO;gBAAE,MAAM;YACrE,SAAS,EAAE,CAAC;YAAC,QAAQ,EAAE,CAAC;YAAC,CAAC,EAAE,CAAC;QAC/B,CAAC;QACD,IAAI,CAAC,IAAI,GAAG,CAAC,MAAM;YAAE,MAAM;QAE3B,+DAA+D;QAC/D,MAAM,SAAS,GAAa,EAAE,CAAC;QAC/B,IAAI,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC;QACxC,kEAAkE;QAClE,sDAAsD;QACtD,MAAM,QAAQ,GAAa,EAAE,CAAC;QAC9B,IAAI,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC;QACrB,OAAO,QAAQ,IAAI,QAAQ,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,KAAK,OAAO,IAAI,QAAQ,CAAC,MAAM,GAAG,OAAO,EAAE,CAAC;YAC3F,QAAQ,CAAC,OAAO,CAAC,GAAG,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC;YAC3C,QAAQ,EAAE,CAAC;QACb,CAAC;QACD,MAAM,eAAe,GAAG,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC;QACpD,MAAM,cAAc,GAAG,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC;QAClD,SAAS,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC;QAE5B,+DAA+D;QAC/D,sDAAsD;QACtD,IAAI,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC;QAClC,IAAI,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC;QACjC,IAAI,kBAAkB,GAAG,CAAC,CAAC;QAC3B,OAAO,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC;YACtB,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;YAClB,IAAI,EAAE,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;gBACxB,IAAI,kBAAkB,IAAI,CAAC,GAAG,OAAO,EAAE,CAAC;oBACtC,+DAA+D;oBAC/D,IAAI,IAAI,GAAG,CAAC,CAAC;oBACb,OAAO,IAAI,GAAG,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO;wBAAE,IAAI,EAAE,CAAC;oBAC/D,IAAI,IAAI,IAAI,GAAG,CAAC,MAAM,IAAI,IAAI,GAAG,CAAC,GAAG,OAAO,EAAE,CAAC;wBAC7C,yEAAyE;wBACzE,MAAM;oBACR,CAAC;gBACH,CAAC;gBACD,SAAS,CAAC,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;gBAC9B,WAAW,EAAE,CAAC;gBAAC,UAAU,EAAE,CAAC;gBAC5B,SAAS,EAAE,CAAC;gBAAC,QAAQ,EAAE,CAAC;gBACxB,kBAAkB,EAAE,CAAC;gBACrB,CAAC,EAAE,CAAC;YACN,CAAC;iBAAM,IAAI,EAAE,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAChC,SAAS,CAAC,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;gBAC9B,WAAW,EAAE,CAAC;gBACd,SAAS,EAAE,CAAC;gBACZ,kBAAkB,GAAG,CAAC,CAAC;gBACvB,CAAC,EAAE,CAAC;YACN,CAAC;iBAAM,CAAC;gBACN,SAAS;gBACT,SAAS,CAAC,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;gBAC9B,UAAU,EAAE,CAAC;gBACb,QAAQ,EAAE,CAAC;gBACX,kBAAkB,GAAG,CAAC,CAAC;gBACvB,CAAC,EAAE,CAAC;YACN,CAAC;QACH,CAAC;QAED,2EAA2E;QAC3E,OAAO,kBAAkB,GAAG,OAAO,EAAE,CAAC;YACpC,MAAM,IAAI,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAC7C,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBACzB,SAAS,CAAC,GAAG,EAAE,CAAC;gBAChB,WAAW,EAAE,CAAC;gBAAC,UAAU,EAAE,CAAC;gBAAC,kBAAkB,EAAE,CAAC;gBAClD,SAAS,EAAE,CAAC;gBAAC,QAAQ,EAAE,CAAC;gBACxB,CAAC,EAAE,CAAC;YACN,CAAC;;gBAAM,MAAM;QACf,CAAC;QAED,KAAK,CAAC,IAAI,CAAC;YACT,WAAW,EAAE,eAAe;YAC5B,WAAW;YACX,UAAU,EAAE,cAAc;YAC1B,UAAU;YACV,KAAK,EAAE,SAAS;SACjB,CAAC,CAAC;IACL,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,KAAK,UAAU,UAAU,CAAC,GAAW;IACnC,IAAI,CAAC;QACH,sEAAsE;QACtE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,SAAS,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,uBAAuB,CAAC,EAAE;YAC3F,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI;SACtC,CAAC,CAAC;QACH,IAAI,SAAS,CAAC,IAAI,EAAE,KAAK,MAAM;YAAE,OAAO,IAAI,CAAC;IAC/C,CAAC;IAAC,MAAM,CAAC;QACP,wEAAwE;QACxE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,WAAW,GAAG,EAAE,CAAC;IACrB,IAAI,CAAC;QACH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE;YAC1D,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,cAAc,GAAG,CAAC;SACvE,CAAC,CAAC;QACH,WAAW,GAAG,MAAM,CAAC;IACvB,CAAC;IAAC,MAAM,CAAC;QACP,oEAAoE;QACpE,qEAAqE;QACrE,IAAI,CAAC;YACH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,EAAE;gBAClD,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,cAAc,GAAG,CAAC;aACvE,CAAC,CAAC;YACH,WAAW,GAAG,MAAM,CAAC;QACvB,CAAC;QAAC,MAAM,CAAC;YACP,WAAW,GAAG,EAAE,CAAC;QACnB,CAAC;IACH,CAAC;IAED,yEAAyE;IACzE,6CAA6C;IAC7C,IAAI,aAAa,GAAG,EAAE,CAAC;IACvB,IAAI,CAAC;QACH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,KAAK,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,oBAAoB,CAAC,EAAE;YACxF,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI;SACtC,CAAC,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC9E,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;YACxB,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;gBACnC,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;gBAChD,MAAM,GAAG,GAAG,iBAAiB,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;gBAClD,IAAI,GAAG,EAAE,CAAC;oBACR,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC;wBAAE,aAAa,IAAI,MAAM,CAAC;oBACtD,aAAa,IAAI,GAAG,CAAC;gBACvB,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,sCAAsC;YACxC,CAAC;QACH,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,aAAa,GAAG,EAAE,CAAC;IACrB,CAAC;IAED,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,WAAW,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC3D,IAAI,aAAa,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAC/D,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC5B,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { LifecycleState } from '../stage-plan-types.js';
2
+ type VerifyResult = NonNullable<LifecycleState['completionAnnotation']>['verify'];
3
+ export declare function runVerifyCommand(cwd: string, command: string[] | undefined): VerifyResult;
4
+ export declare function computeCommitGatePercent(annotatorPercent: number, parseSucceeded: boolean, filesWrittenCount: number, verifyPassed: boolean | null, perStep: Array<{
5
+ status: 'done' | 'partial' | 'missing';
6
+ }>): number;
7
+ export declare function annotateCompletionHandler(state: LifecycleState): Promise<void>;
8
+ export {};
9
+ //# sourceMappingURL=annotate-completion-handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"annotate-completion-handler.d.ts","sourceRoot":"","sources":["../../../src/lifecycle/handlers/annotate-completion-handler.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAU7D,KAAK,YAAY,GAAG,WAAW,CAAC,cAAc,CAAC,sBAAsB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;AAElF,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,SAAS,GAAG,YAAY,CA2BzF;AAED,wBAAgB,wBAAwB,CACtC,gBAAgB,EAAE,MAAM,EACxB,cAAc,EAAE,OAAO,EACvB,iBAAiB,EAAE,MAAM,EACzB,YAAY,EAAE,OAAO,GAAG,IAAI,EAC5B,OAAO,EAAE,KAAK,CAAC;IAAE,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAAA;CAAE,CAAC,GACzD,MAAM,CAMR;AAWD,wBAAsB,yBAAyB,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAyHpF"}
@@ -0,0 +1,171 @@
1
+ // Stage 4 handler — annotate-completion (pipeline-redesign §3.2.3, §3.2.4).
2
+ // 1. Runs task.verifyCommand deterministically.
3
+ // 2. Invokes standard-tier annotator (readonly) to produce structured JSON.
4
+ // 3. Parses; one retry on malformed.
5
+ // 4. Computes commitGatePercent = min(deterministic_backstop, annotatorPercent).
6
+ import { execFileSync } from 'node:child_process';
7
+ import { delegateWithEscalation } from '../../escalation/delegate-with-escalation.js';
8
+ import { annotateCompletionTemplate } from '../../review/templates/annotate-completion.js';
9
+ import { parseAnnotatorOutput } from '../../reporting/annotate-completion-parser.js';
10
+ const VERIFY_TIMEOUT_MS = 60_000;
11
+ const VERIFY_OUTPUT_CAP_BYTES = 4096;
12
+ export function runVerifyCommand(cwd, command) {
13
+ if (!Array.isArray(command) || command.length === 0) {
14
+ return { ran: false, passed: null, exitCode: null, command: [], tailOutput: null };
15
+ }
16
+ try {
17
+ const out = execFileSync(command[0], command.slice(1), {
18
+ cwd,
19
+ timeout: VERIFY_TIMEOUT_MS,
20
+ stdio: ['ignore', 'pipe', 'pipe'],
21
+ encoding: 'utf8',
22
+ });
23
+ const tail = out.length > VERIFY_OUTPUT_CAP_BYTES ? out.slice(-VERIFY_OUTPUT_CAP_BYTES) : out;
24
+ return { ran: true, passed: true, exitCode: 0, command, tailOutput: tail };
25
+ }
26
+ catch (err) {
27
+ const e = err;
28
+ const stdout = (e.stdout ?? '').toString();
29
+ const stderr = (e.stderr ?? '').toString();
30
+ const combined = (stdout + stderr) || (e.message ?? String(err));
31
+ const tail = combined.length > VERIFY_OUTPUT_CAP_BYTES ? combined.slice(-VERIFY_OUTPUT_CAP_BYTES) : combined;
32
+ return {
33
+ ran: true,
34
+ passed: false,
35
+ exitCode: typeof e.status === 'number' ? e.status : null,
36
+ command,
37
+ tailOutput: tail,
38
+ };
39
+ }
40
+ }
41
+ export function computeCommitGatePercent(annotatorPercent, parseSucceeded, filesWrittenCount, verifyPassed, perStep) {
42
+ let backstop = 0;
43
+ if (filesWrittenCount > 0)
44
+ backstop += 50;
45
+ if (verifyPassed === true)
46
+ backstop += 30;
47
+ if (parseSucceeded && perStep.length > 0 && perStep.every(s => s.status !== 'missing'))
48
+ backstop += 20;
49
+ return Math.min(backstop, annotatorPercent);
50
+ }
51
+ function makeFallback(verifyResult) {
52
+ return {
53
+ completionPercent: 0,
54
+ perStep: [],
55
+ verify: verifyResult,
56
+ concerns: ['annotator failed to produce structured output; check state.completionAnnotationError'],
57
+ };
58
+ }
59
+ export async function annotateCompletionHandler(state) {
60
+ if (state.reviewPolicy === 'none')
61
+ return;
62
+ if (state.terminal)
63
+ return;
64
+ if (state.completionAnnotation !== undefined)
65
+ return;
66
+ const ctx = state.executionContext;
67
+ const task = state.task;
68
+ const last = state.lastRunResult;
69
+ if (!ctx || !task || !last)
70
+ return;
71
+ // 1. Run verify deterministically
72
+ const verifyCommand = task.verifyCommand;
73
+ const verifyCwd = task.cwd ?? ctx.cwd;
74
+ state.verifyResult = runVerifyCommand(verifyCwd, verifyCommand);
75
+ // 2. Build annotator prompt
76
+ let cumulativeDiff = '';
77
+ if (state.diffTracker) {
78
+ try {
79
+ cumulativeDiff = await state.diffTracker.cumulativeDiff();
80
+ }
81
+ catch {
82
+ cumulativeDiff = '';
83
+ }
84
+ }
85
+ const promptCtx = {
86
+ brief: task.prompt ?? '',
87
+ workerOutput: last.output ?? '',
88
+ diff: cumulativeDiff,
89
+ planContext: task.planContext,
90
+ specReviewerNotes: state.specReviewerNotes ?? null,
91
+ qualityReviewerNotes: state.qualityReviewerNotes ?? null,
92
+ specReviewError: state.specReviewError ?? null,
93
+ qualityReviewError: state.qualityReviewError ?? null,
94
+ reworkApplied: state.reworkApplied ?? null,
95
+ reworkOutput: state.reworkOutput ?? null,
96
+ reworkError: state.reworkError ?? null,
97
+ verifyResult: state.verifyResult,
98
+ };
99
+ const annotatorTier = ctx.assignedTier; // standard
100
+ const provider = ctx.providers[annotatorTier];
101
+ if (!provider) {
102
+ state.completionAnnotationError = `no provider available for tier ${annotatorTier}`;
103
+ state.completionAnnotation = makeFallback(state.verifyResult);
104
+ state.commitGatePercent = 0;
105
+ return;
106
+ }
107
+ const basePrompt = annotateCompletionTemplate.systemPrompt + '\n\n' +
108
+ annotateCompletionTemplate.buildUserPrompt(promptCtx);
109
+ // 3. Up to 2 attempts (one retry on parse failure)
110
+ let parsed = null;
111
+ for (let attempt = 0; attempt < 2; attempt++) {
112
+ const promptToSend = attempt === 0
113
+ ? basePrompt
114
+ : basePrompt + '\n\n# Retry\nYour previous response did not match the schema. Reply with ONLY a single ```json ... ``` fenced block, no prose before or after.';
115
+ let result;
116
+ try {
117
+ result = await delegateWithEscalation({
118
+ prompt: promptToSend,
119
+ cwd: ctx.cwd,
120
+ agentType: annotatorTier,
121
+ briefQualityPolicy: 'off',
122
+ timeoutMs: ctx.timing.timeoutMs,
123
+ // Pipeline-redesign §3.2.3: annotator is read-only. Explicit
124
+ // here so the runner doesn't expose editor tools to a stage
125
+ // whose job is to JUDGE the diff, not modify it.
126
+ tools: 'readonly',
127
+ }, [provider], {
128
+ explicitlyPinned: true,
129
+ taskDeadlineMs: ctx.timing.deadlineMs,
130
+ abortSignal: ctx.stall.controller.signal,
131
+ assignedTier: annotatorTier,
132
+ ...(ctx.bus && { bus: ctx.bus }),
133
+ ...(ctx.batchId !== undefined && { batchId: ctx.batchId }),
134
+ ...(ctx.taskIndex !== undefined && { taskIndex: ctx.taskIndex }),
135
+ stageLabel: attempt === 0 ? 'Annotating' : 'Annotating (retry)',
136
+ });
137
+ }
138
+ catch (err) {
139
+ state.completionAnnotationError = err instanceof Error ? err.message : String(err);
140
+ state.completionAnnotation = makeFallback(state.verifyResult);
141
+ state.commitGatePercent = 0;
142
+ return;
143
+ }
144
+ if (result.status !== 'ok') {
145
+ state.completionAnnotationError = `annotator returned status: ${result.status}`;
146
+ state.completionAnnotation = makeFallback(state.verifyResult);
147
+ state.commitGatePercent = 0;
148
+ return;
149
+ }
150
+ parsed = parseAnnotatorOutput(result.output);
151
+ if (parsed.ok)
152
+ break;
153
+ }
154
+ if (!parsed || !parsed.ok) {
155
+ state.completionAnnotationError = parsed ? parsed.error : 'unknown parse failure';
156
+ state.completionAnnotation = makeFallback(state.verifyResult);
157
+ state.commitGatePercent = 0;
158
+ return;
159
+ }
160
+ // 4. Store annotation with verify overlay
161
+ state.completionAnnotation = {
162
+ completionPercent: parsed.value.completionPercent,
163
+ perStep: parsed.value.perStep,
164
+ verify: state.verifyResult,
165
+ concerns: parsed.value.concerns,
166
+ };
167
+ // 5. Compute commit-gate percent
168
+ const filesWritten = (last.filesWritten ?? []);
169
+ state.commitGatePercent = computeCommitGatePercent(parsed.value.completionPercent, true, filesWritten.length, state.verifyResult.passed, parsed.value.perStep);
170
+ }
171
+ //# sourceMappingURL=annotate-completion-handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"annotate-completion-handler.js","sourceRoot":"","sources":["../../../src/lifecycle/handlers/annotate-completion-handler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { LifecycleState } from '../stage-plan-types.js';
2
+ export declare function annotateCriteriaHandler(state: LifecycleState): Promise<void>;
3
+ //# sourceMappingURL=annotate-criteria-handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"annotate-criteria-handler.d.ts","sourceRoot":"","sources":["../../../src/lifecycle/handlers/annotate-criteria-handler.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAe7D,wBAAsB,uBAAuB,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CA0DlF"}
@@ -0,0 +1,67 @@
1
+ import { makeRunnerShell } from '../../providers/make-runner-shell.js';
2
+ /** Routes that go through the parallel-criteria + annotate pipeline. */
3
+ const ANNOTATABLE_READONLY_ROUTES = new Set([
4
+ 'audit', 'review', 'verify', 'debug', 'investigate',
5
+ ]);
6
+ function isAnnotatorRoute(route) {
7
+ return route !== undefined && ANNOTATABLE_READONLY_ROUTES.has(route);
8
+ }
9
+ export async function annotateCriteriaHandler(state) {
10
+ if (state.terminal)
11
+ return;
12
+ // Idempotency
13
+ if (state.lastRunResult?.annotatedFindings !== undefined)
14
+ return;
15
+ const ctx = state.executionContext;
16
+ const task = state.task;
17
+ const last = state.lastRunResult;
18
+ if (!ctx || !task || !last)
19
+ return;
20
+ const route = state.route ?? ctx.route;
21
+ if (!isAnnotatorRoute(route))
22
+ return;
23
+ const annotatorEngine = ctx.annotatorEngine;
24
+ if (!annotatorEngine)
25
+ return; // no-op when annotator not configured
26
+ const outputs = last.workerOutputs;
27
+ if (!Array.isArray(outputs) || outputs.length === 0)
28
+ return;
29
+ const tier = ctx.assignedTier;
30
+ const provider = ctx.providers[tier];
31
+ if (!provider)
32
+ return;
33
+ const shell = makeRunnerShell(provider);
34
+ let result;
35
+ try {
36
+ result = await annotatorEngine.annotate(shell, {
37
+ workerOutputs: outputs.map(o => ({ criterion: o.criterionTitle, narrative: o.narrative })),
38
+ brief: task.prompt ?? '',
39
+ cwd: ctx.cwd,
40
+ route,
41
+ abortSignal: ctx.stall.controller.signal,
42
+ deadlineMs: ctx.timing.deadlineMs,
43
+ ...(ctx.bus && { bus: ctx.bus }),
44
+ ...(ctx.batchId !== undefined && { batchId: ctx.batchId }),
45
+ ...(ctx.taskIndex !== undefined && { taskIndex: ctx.taskIndex }),
46
+ tier,
47
+ stageLabel: 'Annotating',
48
+ });
49
+ }
50
+ catch {
51
+ // Annotator failure shouldn't terminate the lifecycle; surface raw
52
+ // workerOutputs and let compose_response build the envelope.
53
+ return;
54
+ }
55
+ // Attach annotated findings + verdict + raw assistant text to
56
+ // lastRunResult so compose_response and the per-tool report parser
57
+ // can pick them up. Cost rolls into the dispatch's stage stats
58
+ // separately via runner-shell event accounting.
59
+ last.annotatedFindings = result.annotatedFindings;
60
+ last.qualityReviewVerdict = result.verdict;
61
+ // Replace the synthesized output with the annotated narrative so per-tool
62
+ // parsers (auditReport, reviewReport, etc.) see the merged structured form.
63
+ if (typeof result.finalAssistantText === 'string' && result.finalAssistantText.trim().length > 0) {
64
+ last.output = result.finalAssistantText;
65
+ }
66
+ }
67
+ //# sourceMappingURL=annotate-criteria-handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"annotate-criteria-handler.js","sourceRoot":"","sources":["../../../src/lifecycle/handlers/annotate-criteria-handler.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAEvE,wEAAwE;AACxE,MAAM,2BAA2B,GAAG,IAAI,GAAG,CAAS;IAClD,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,aAAa;CACpD,CAAC,CAAC;AAEH,SAAS,gBAAgB,CAAC,KAAyB;IACjD,OAAO,KAAK,KAAK,SAAS,IAAI,2BAA2B,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACvE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAAC,KAAqB;IACjE,IAAI,KAAK,CAAC,QAAQ;QAAE,OAAO;IAC3B,cAAc;IACd,IAAK,KAAK,CAAC,aAA+D,EAAE,iBAAiB,KAAK,SAAS;QAAE,OAAO;IAEpH,MAAM,GAAG,GAAG,KAAK,CAAC,gBAAgD,CAAC;IACnE,MAAM,IAAI,GAAG,KAAK,CAAC,IAA4B,CAAC;IAChD,MAAM,IAAI,GAAG,KAAK,CAAC,aAEL,CAAC;IACf,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI;QAAE,OAAO;IAEnC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,GAAG,CAAC,KAAK,CAAC;IACvC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;QAAE,OAAO;IACrC,MAAM,eAAe,GAAG,GAAG,CAAC,eAAe,CAAC;IAC5C,IAAI,CAAC,eAAe;QAAE,OAAO,CAAC,sCAAsC;IAEpE,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC;IACnC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAE5D,MAAM,IAAI,GAAc,GAAG,CAAC,YAAY,CAAC;IACzC,MAAM,QAAQ,GAAG,GAAG,CAAC,SAAS,CAAC,IAAI,CAAyB,CAAC;IAC7D,IAAI,CAAC,QAAQ;QAAE,OAAO;IAEtB,MAAM,KAAK,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;IAExC,IAAI,MAAM,CAAC;IACX,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,eAAe,CAAC,QAAQ,CAAC,KAAK,EAAE;YAC7C,aAAa,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,cAAc,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;YAC1F,KAAK,EAAE,IAAI,CAAC,MAAM,IAAI,EAAE;YACxB,GAAG,EAAE,GAAG,CAAC,GAAG;YACZ,KAAK;YACL,WAAW,EAAE,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM;YACxC,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,UAAU;YACjC,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC;YAChC,GAAG,CAAC,GAAG,CAAC,OAAO,KAAK,SAAS,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC;YAC1D,GAAG,CAAC,GAAG,CAAC,SAAS,KAAK,SAAS,IAAI,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,CAAC;YAChE,IAAI;YACJ,UAAU,EAAE,YAAY;SACzB,CAAC,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QACP,mEAAmE;QACnE,6DAA6D;QAC7D,OAAO;IACT,CAAC;IAED,8DAA8D;IAC9D,mEAAmE;IACnE,+DAA+D;IAC/D,gDAAgD;IAC/C,IAA0C,CAAC,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,CAAC;IACxF,IAA0C,CAAC,oBAAoB,GAAG,MAAM,CAAC,OAAO,CAAC;IAClF,0EAA0E;IAC1E,4EAA4E;IAC5E,IAAI,OAAO,MAAM,CAAC,kBAAkB,KAAK,QAAQ,IAAI,MAAM,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACjG,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,kBAAkB,CAAC;IAC1C,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"baseline-handlers.d.ts","sourceRoot":"","sources":["../../../src/lifecycle/handlers/baseline-handlers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAgC7D,MAAM,MAAM,aAAa,GAAG,CAC1B,UAAU,EAAE,OAAO,EACnB,KAAK,EAAE,cAAc,KAClB,OAAO,CAAC,OAAO,CAAC,CAAC;AAEtB,MAAM,WAAW,cAAc;CAC9B;AAID,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CA8OrF"}
1
+ {"version":3,"file":"baseline-handlers.d.ts","sourceRoot":"","sources":["../../../src/lifecycle/handlers/baseline-handlers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAuB7D,MAAM,MAAM,aAAa,GAAG,CAC1B,UAAU,EAAE,OAAO,EACnB,KAAK,EAAE,cAAc,KAClB,OAAO,CAAC,OAAO,CAAC,CAAC;AAEtB,MAAM,WAAW,cAAc;CAC9B;AAID,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAsUrF"}