@cat-factory/contracts 0.130.0 → 0.131.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 (48) hide show
  1. package/dist/agent-presentation.d.ts +2 -2
  2. package/dist/entities.d.ts +66 -0
  3. package/dist/entities.d.ts.map +1 -1
  4. package/dist/entities.js +9 -0
  5. package/dist/entities.js.map +1 -1
  6. package/dist/index.d.ts +1 -0
  7. package/dist/index.d.ts.map +1 -1
  8. package/dist/index.js +1 -0
  9. package/dist/index.js.map +1 -1
  10. package/dist/notifications.d.ts +6 -2
  11. package/dist/notifications.d.ts.map +1 -1
  12. package/dist/notifications.js +7 -0
  13. package/dist/notifications.js.map +1 -1
  14. package/dist/prReview.d.ts +175 -0
  15. package/dist/prReview.d.ts.map +1 -0
  16. package/dist/prReview.js +167 -0
  17. package/dist/prReview.js.map +1 -0
  18. package/dist/result-views.d.ts +1 -1
  19. package/dist/result-views.d.ts.map +1 -1
  20. package/dist/result-views.js +1 -0
  21. package/dist/result-views.js.map +1 -1
  22. package/dist/routes/agent-runs.d.ts +52 -0
  23. package/dist/routes/agent-runs.d.ts.map +1 -1
  24. package/dist/routes/execution.d.ts +208 -0
  25. package/dist/routes/execution.d.ts.map +1 -1
  26. package/dist/routes/human-review.d.ts +26 -0
  27. package/dist/routes/human-review.d.ts.map +1 -1
  28. package/dist/routes/human-test.d.ts +130 -0
  29. package/dist/routes/human-test.d.ts.map +1 -1
  30. package/dist/routes/index.d.ts +1 -0
  31. package/dist/routes/index.d.ts.map +1 -1
  32. package/dist/routes/index.js +1 -0
  33. package/dist/routes/index.js.map +1 -1
  34. package/dist/routes/notifications.d.ts +6 -3
  35. package/dist/routes/notifications.d.ts.map +1 -1
  36. package/dist/routes/prReview.d.ts +124 -0
  37. package/dist/routes/prReview.d.ts.map +1 -0
  38. package/dist/routes/prReview.js +26 -0
  39. package/dist/routes/prReview.js.map +1 -0
  40. package/dist/routes/slack.d.ts +3 -3
  41. package/dist/routes/visual-confirm.d.ts +78 -0
  42. package/dist/routes/visual-confirm.d.ts.map +1 -1
  43. package/dist/routes/workspaces.d.ts +58 -4
  44. package/dist/routes/workspaces.d.ts.map +1 -1
  45. package/dist/slack.d.ts +2 -2
  46. package/dist/snapshot.d.ts +29 -2
  47. package/dist/snapshot.d.ts.map +1 -1
  48. package/package.json +1 -1
@@ -0,0 +1,175 @@
1
+ import * as v from 'valibot';
2
+ /**
3
+ * How serious a finding is, ordered blocker → nit. The window groups + sorts by this and
4
+ * renders a colour per level; the engine sorts the aggregated findings blocker-first.
5
+ */
6
+ export declare const prReviewSeveritySchema: v.PicklistSchema<["blocker", "high", "medium", "low", "nit"], undefined>;
7
+ export type PrReviewSeverity = v.InferOutput<typeof prReviewSeveritySchema>;
8
+ /** What area a finding concerns — drives the window's category chip. */
9
+ export declare const prReviewCategorySchema: v.PicklistSchema<["correctness", "security", "performance", "maintainability", "style", "test", "other"], undefined>;
10
+ export type PrReviewCategory = v.InferOutput<typeof prReviewCategorySchema>;
11
+ /**
12
+ * One cohesive slice the reviewer grouped the changed files into (a refactor + its call
13
+ * sites + its tests). The window groups findings under their slice. `id` is engine-minted
14
+ * (`prs_*`) when the reviewer's output is recorded onto the step.
15
+ */
16
+ export declare const prReviewSliceSchema: v.ObjectSchema<{
17
+ /** Engine-minted stable id (`prs_*`); assigned when the reviewer's output is recorded. */
18
+ readonly id: v.StringSchema<undefined>;
19
+ /** Short name of the slice. */
20
+ readonly title: v.StringSchema<undefined>;
21
+ /** Why these files belong together. */
22
+ readonly rationale: v.StringSchema<undefined>;
23
+ /** The repo-relative paths that make up the slice. */
24
+ readonly paths: v.ArraySchema<v.StringSchema<undefined>, undefined>;
25
+ }, undefined>;
26
+ export type PrReviewSlice = v.InferOutput<typeof prReviewSliceSchema>;
27
+ /**
28
+ * One prioritized review finding, id-stamped by the engine and anchored to a slice. Carries
29
+ * everything the window needs to render it and everything PR 3's resolutions consume (the
30
+ * `path`/`line`/`side` anchor for an inline PR comment; the `suggestedFix` for the Fixer).
31
+ */
32
+ export declare const prReviewFindingSchema: v.ObjectSchema<{
33
+ /** Engine-minted stable id (`prf_*`); the multi-select carries these ids. */
34
+ readonly id: v.StringSchema<undefined>;
35
+ /** The slice this finding belongs to (`prs_*`), or null when it matched no slice. */
36
+ readonly sliceId: v.OptionalSchema<v.NullableSchema<v.StringSchema<undefined>, undefined>, undefined>;
37
+ /** Repo-relative path the finding concerns. */
38
+ readonly path: v.StringSchema<undefined>;
39
+ /** The line the finding anchors to on the PR head (for an inline comment), or null. */
40
+ readonly line: v.OptionalSchema<v.NullableSchema<v.NumberSchema<undefined>, undefined>, undefined>;
41
+ /** Which side of the diff the line is on; `RIGHT` (head) unless it concerns a removed line. */
42
+ readonly side: v.OptionalSchema<v.NullableSchema<v.PicklistSchema<["LEFT", "RIGHT"], undefined>, undefined>, undefined>;
43
+ readonly severity: v.PicklistSchema<["blocker", "high", "medium", "low", "nit"], undefined>;
44
+ readonly category: v.PicklistSchema<["correctness", "security", "performance", "maintainability", "style", "test", "other"], undefined>;
45
+ /** Short headline. */
46
+ readonly title: v.StringSchema<undefined>;
47
+ /** The full finding, in prose. */
48
+ readonly detail: v.StringSchema<undefined>;
49
+ /** A concrete suggested change, when the reviewer offered one. */
50
+ readonly suggestedFix: v.OptionalSchema<v.NullableSchema<v.StringSchema<undefined>, undefined>, undefined>;
51
+ }, undefined>;
52
+ export type PrReviewFinding = v.InferOutput<typeof prReviewFindingSchema>;
53
+ /**
54
+ * The PR-review lifecycle on a `pr-reviewer` step:
55
+ * - `reviewing`: the read-only reviewer container job is in flight (the agent dispatch).
56
+ * - `awaiting_selection`: parked; the human curates which findings matter through the window.
57
+ * - `fixing` / `posting`: a resolution is executing (PR 3 — the Fixer commits, or inline
58
+ * comments are posted). Unused in PR 2.
59
+ * - `done`: the review is resolved (the human finished; PR 3: fixed / posted).
60
+ * - `skipped`: the reviewer isn't wired / produced nothing to review — the step passed through.
61
+ */
62
+ export declare const prReviewStatusSchema: v.PicklistSchema<["reviewing", "awaiting_selection", "fixing", "posting", "done", "skipped"], undefined>;
63
+ export type PrReviewStatus = v.InferOutput<typeof prReviewStatusSchema>;
64
+ /**
65
+ * How the human resolved the review. PR 2 ships only `finish` (curate the selection + complete
66
+ * the read-only review); PR 3 adds `fix` (feed the selected findings to a Fixer) and `post`
67
+ * (post them as inline PR review comments). Adding members later is a non-breaking extension
68
+ * (backwards compatibility is a non-goal — see CLAUDE.md).
69
+ */
70
+ export declare const prReviewResolutionSchema: v.PicklistSchema<["finish"], undefined>;
71
+ export type PrReviewResolution = v.InferOutput<typeof prReviewResolutionSchema>;
72
+ /**
73
+ * Live PR-review state carried on the run's `pr-reviewer` step. Recorded by the engine when
74
+ * the reviewer container job completes (the sliced, severity-ordered findings), then mutated
75
+ * by the human's selection + resolution. `prUrl` is the reviewed PR (for the window header);
76
+ * `model` records the reviewing model for transparency.
77
+ */
78
+ export declare const prReviewStepStateSchema: v.ObjectSchema<{
79
+ readonly status: v.PicklistSchema<["reviewing", "awaiting_selection", "fixing", "posting", "done", "skipped"], undefined>;
80
+ /** The reviewer's one-paragraph overall assessment of the PR, when it gave one. */
81
+ readonly summary: v.OptionalSchema<v.NullableSchema<v.StringSchema<undefined>, undefined>, undefined>;
82
+ /** The cohesive slices the reviewer grouped the changed files into. */
83
+ readonly slices: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
84
+ /** Engine-minted stable id (`prs_*`); assigned when the reviewer's output is recorded. */
85
+ readonly id: v.StringSchema<undefined>;
86
+ /** Short name of the slice. */
87
+ readonly title: v.StringSchema<undefined>;
88
+ /** Why these files belong together. */
89
+ readonly rationale: v.StringSchema<undefined>;
90
+ /** The repo-relative paths that make up the slice. */
91
+ readonly paths: v.ArraySchema<v.StringSchema<undefined>, undefined>;
92
+ }, undefined>, undefined>, readonly []>;
93
+ /** The findings, ordered by severity (blocker → nit). */
94
+ readonly findings: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
95
+ /** Engine-minted stable id (`prf_*`); the multi-select carries these ids. */
96
+ readonly id: v.StringSchema<undefined>;
97
+ /** The slice this finding belongs to (`prs_*`), or null when it matched no slice. */
98
+ readonly sliceId: v.OptionalSchema<v.NullableSchema<v.StringSchema<undefined>, undefined>, undefined>;
99
+ /** Repo-relative path the finding concerns. */
100
+ readonly path: v.StringSchema<undefined>;
101
+ /** The line the finding anchors to on the PR head (for an inline comment), or null. */
102
+ readonly line: v.OptionalSchema<v.NullableSchema<v.NumberSchema<undefined>, undefined>, undefined>;
103
+ /** Which side of the diff the line is on; `RIGHT` (head) unless it concerns a removed line. */
104
+ readonly side: v.OptionalSchema<v.NullableSchema<v.PicklistSchema<["LEFT", "RIGHT"], undefined>, undefined>, undefined>;
105
+ readonly severity: v.PicklistSchema<["blocker", "high", "medium", "low", "nit"], undefined>;
106
+ readonly category: v.PicklistSchema<["correctness", "security", "performance", "maintainability", "style", "test", "other"], undefined>;
107
+ /** Short headline. */
108
+ readonly title: v.StringSchema<undefined>;
109
+ /** The full finding, in prose. */
110
+ readonly detail: v.StringSchema<undefined>;
111
+ /** A concrete suggested change, when the reviewer offered one. */
112
+ readonly suggestedFix: v.OptionalSchema<v.NullableSchema<v.StringSchema<undefined>, undefined>, undefined>;
113
+ }, undefined>, undefined>, readonly []>;
114
+ /** The finding ids the human selected to act on (curated in the window). */
115
+ readonly selectedFindingIds: v.OptionalSchema<v.ArraySchema<v.StringSchema<undefined>, undefined>, readonly []>;
116
+ /** How the human resolved the review; null while awaiting selection. */
117
+ readonly resolution: v.OptionalSchema<v.NullableSchema<v.PicklistSchema<["finish"], undefined>, undefined>, undefined>;
118
+ /** Web URL of the reviewed pull request, when known. */
119
+ readonly prUrl: v.OptionalSchema<v.NullableSchema<v.StringSchema<undefined>, undefined>, undefined>;
120
+ /** Identifier of the model that produced the review, for transparency. */
121
+ readonly model: v.OptionalSchema<v.NullableSchema<v.StringSchema<undefined>, undefined>, undefined>;
122
+ }, undefined>;
123
+ export type PrReviewStepState = v.InferOutput<typeof prReviewStepStateSchema>;
124
+ /**
125
+ * The LENIENT structured shape the read-only `pr-reviewer` container agent returns as
126
+ * `result.custom` (the engine mints slice/finding ids and records it onto the step). Every
127
+ * field falls back to a safe default (`v.fallback`) — exactly like `forkProposal` — so a
128
+ * partially-malformed reply degrades to sensible defaults rather than failing the run: an
129
+ * unreadable severity/category reads as its safe default, and each list degrades to empty.
130
+ * This is the SINGLE source of truth for the reviewer's output shape, consumed both by the
131
+ * agent kind's `defineStructuredOutput` (validation at completion) and the engine's coercion.
132
+ */
133
+ export declare const prReviewAgentOutputSchema: v.ObjectSchema<{
134
+ /** One-paragraph overall assessment of the PR. */
135
+ readonly summary: v.SchemaWithFallback<v.OptionalSchema<v.StringSchema<undefined>, undefined>, undefined>;
136
+ /** The cohesive slices the reviewer grouped the changed files into. */
137
+ readonly slices: v.SchemaWithFallback<v.ArraySchema<v.SchemaWithFallback<v.ObjectSchema<{
138
+ readonly title: v.SchemaWithFallback<v.StringSchema<undefined>, "">;
139
+ readonly rationale: v.SchemaWithFallback<v.StringSchema<undefined>, "">;
140
+ readonly paths: v.SchemaWithFallback<v.ArraySchema<v.SchemaWithFallback<v.StringSchema<undefined>, "">, undefined>, readonly []>;
141
+ }, undefined>, {
142
+ readonly title: "";
143
+ readonly rationale: "";
144
+ readonly paths: readonly [];
145
+ }>, undefined>, readonly []>;
146
+ /** The findings, ordered by severity (blocker → nit). */
147
+ readonly findings: v.SchemaWithFallback<v.ArraySchema<v.SchemaWithFallback<v.ObjectSchema<{
148
+ readonly path: v.SchemaWithFallback<v.StringSchema<undefined>, "">;
149
+ readonly line: v.SchemaWithFallback<v.OptionalSchema<v.NumberSchema<undefined>, undefined>, undefined>;
150
+ readonly side: v.SchemaWithFallback<v.OptionalSchema<v.PicklistSchema<["LEFT", "RIGHT"], undefined>, undefined>, undefined>;
151
+ readonly severity: v.SchemaWithFallback<v.PicklistSchema<["blocker", "high", "medium", "low", "nit"], undefined>, "medium">;
152
+ readonly category: v.SchemaWithFallback<v.PicklistSchema<["correctness", "security", "performance", "maintainability", "style", "test", "other"], undefined>, "other">;
153
+ readonly title: v.SchemaWithFallback<v.StringSchema<undefined>, "">;
154
+ readonly detail: v.SchemaWithFallback<v.StringSchema<undefined>, "">;
155
+ readonly suggestedFix: v.SchemaWithFallback<v.OptionalSchema<v.StringSchema<undefined>, undefined>, undefined>;
156
+ }, undefined>, {
157
+ readonly path: "";
158
+ readonly severity: 'medium';
159
+ readonly category: 'other';
160
+ readonly title: "";
161
+ readonly detail: "";
162
+ }>, undefined>, readonly []>;
163
+ }, undefined>;
164
+ export type PrReviewAgentOutput = v.InferOutput<typeof prReviewAgentOutputSchema>;
165
+ /**
166
+ * Resolve a parked PR review: the human's curated selection (`findingIds`) plus how to resolve
167
+ * it (`action`). PR 2 supports only `finish` — record the selection and complete the read-only
168
+ * review. The Fixer / inline-comment resolutions are PR 3.
169
+ */
170
+ export declare const resolvePrReviewSchema: v.ObjectSchema<{
171
+ readonly action: v.OptionalSchema<v.PicklistSchema<["finish"], undefined>, "finish">;
172
+ readonly findingIds: v.OptionalSchema<v.ArraySchema<v.StringSchema<undefined>, undefined>, readonly []>;
173
+ }, undefined>;
174
+ export type ResolvePrReviewInput = v.InferOutput<typeof resolvePrReviewSchema>;
175
+ //# sourceMappingURL=prReview.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prReview.d.ts","sourceRoot":"","sources":["../src/prReview.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAmB5B;;;GAGG;AACH,eAAO,MAAM,sBAAsB,0EAA0D,CAAA;AAC7F,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,sBAAsB,CAAC,CAAA;AAE3E,wEAAwE;AACxE,eAAO,MAAM,sBAAsB,sHAQjC,CAAA;AACF,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,sBAAsB,CAAC,CAAA;AAE3E;;;;GAIG;AACH,eAAO,MAAM,mBAAmB;IAC9B,0FAA0F;;IAE1F,+BAA+B;;IAE/B,uCAAuC;;IAEvC,sDAAsD;;aAEtD,CAAA;AACF,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,mBAAmB,CAAC,CAAA;AAErE;;;;GAIG;AACH,eAAO,MAAM,qBAAqB;IAChC,6EAA6E;;IAE7E,qFAAqF;;IAErF,+CAA+C;;IAE/C,uFAAuF;;IAEvF,+FAA+F;;;;IAI/F,sBAAsB;;IAEtB,kCAAkC;;IAElC,kEAAkE;;aAElE,CAAA;AACF,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,qBAAqB,CAAC,CAAA;AAEzE;;;;;;;;GAQG;AACH,eAAO,MAAM,oBAAoB,0GAO/B,CAAA;AACF,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,oBAAoB,CAAC,CAAA;AAEvE;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB,yCAAyB,CAAA;AAC9D,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,wBAAwB,CAAC,CAAA;AAE/E;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB;;IAElC,mFAAmF;;IAEnF,uEAAuE;;QA5EvE,0FAA0F;;QAE1F,+BAA+B;;QAE/B,uCAAuC;;QAEvC,sDAAsD;;;IAwEtD,yDAAyD;;QA7DzD,6EAA6E;;QAE7E,qFAAqF;;QAErF,+CAA+C;;QAE/C,uFAAuF;;QAEvF,+FAA+F;;;;QAI/F,sBAAsB;;QAEtB,kCAAkC;;QAElC,kEAAkE;;;IA+ClE,4EAA4E;;IAE5E,wEAAwE;;IAExE,wDAAwD;;IAExD,0EAA0E;;aAE1E,CAAA;AACF,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,uBAAuB,CAAC,CAAA;AAI7E;;;;;;;;GAQG;AACH,eAAO,MAAM,yBAAyB;IACpC,kDAAkD;;IAElD,uEAAuE;;;;;;;;;;IAcvE,yDAAyD;;;;;;;;;;;;2BAgBvC,QAAQ;2BACR,OAAO;;;;aAQzB,CAAA;AACF,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,yBAAyB,CAAC,CAAA;AAIjF;;;;GAIG;AACH,eAAO,MAAM,qBAAqB;;;aAGhC,CAAA;AACF,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,qBAAqB,CAAC,CAAA"}
@@ -0,0 +1,167 @@
1
+ import * as v from 'valibot';
2
+ // ---------------------------------------------------------------------------
3
+ // PR deep-review wire contracts. A `review` task runs the read-only `pr-reviewer`
4
+ // container agent over an EXISTING open pull request: it slices the diff into
5
+ // cohesive chunks and reviews each within a bounded context, returning prioritized
6
+ // findings. Rather than finishing the run the moment the agent returns (PR 1's
7
+ // behaviour), the engine records the sliced findings onto the run's `pr-reviewer`
8
+ // step (`step.prReview`) and PARKS for a human to visually SELECT which findings
9
+ // matter through the dedicated review window, then resolve.
10
+ //
11
+ // All review state rides the run's `pr-reviewer` step (`PipelineStep.prReview`) —
12
+ // no side table — so it is runtime-symmetric by construction, exactly like
13
+ // `forkDecision` / `followUps`. The two terminal resolutions (feed the selected
14
+ // findings to a Fixer, or post them as inline PR review comments) are the tracked
15
+ // follow-up (PR 3); PR 2 ships the slicing → park → multi-select loop with a
16
+ // neutral `finish` resolution.
17
+ // ---------------------------------------------------------------------------
18
+ /**
19
+ * How serious a finding is, ordered blocker → nit. The window groups + sorts by this and
20
+ * renders a colour per level; the engine sorts the aggregated findings blocker-first.
21
+ */
22
+ export const prReviewSeveritySchema = v.picklist(['blocker', 'high', 'medium', 'low', 'nit']);
23
+ /** What area a finding concerns — drives the window's category chip. */
24
+ export const prReviewCategorySchema = v.picklist([
25
+ 'correctness',
26
+ 'security',
27
+ 'performance',
28
+ 'maintainability',
29
+ 'style',
30
+ 'test',
31
+ 'other',
32
+ ]);
33
+ /**
34
+ * One cohesive slice the reviewer grouped the changed files into (a refactor + its call
35
+ * sites + its tests). The window groups findings under their slice. `id` is engine-minted
36
+ * (`prs_*`) when the reviewer's output is recorded onto the step.
37
+ */
38
+ export const prReviewSliceSchema = v.object({
39
+ /** Engine-minted stable id (`prs_*`); assigned when the reviewer's output is recorded. */
40
+ id: v.string(),
41
+ /** Short name of the slice. */
42
+ title: v.string(),
43
+ /** Why these files belong together. */
44
+ rationale: v.string(),
45
+ /** The repo-relative paths that make up the slice. */
46
+ paths: v.array(v.string()),
47
+ });
48
+ /**
49
+ * One prioritized review finding, id-stamped by the engine and anchored to a slice. Carries
50
+ * everything the window needs to render it and everything PR 3's resolutions consume (the
51
+ * `path`/`line`/`side` anchor for an inline PR comment; the `suggestedFix` for the Fixer).
52
+ */
53
+ export const prReviewFindingSchema = v.object({
54
+ /** Engine-minted stable id (`prf_*`); the multi-select carries these ids. */
55
+ id: v.string(),
56
+ /** The slice this finding belongs to (`prs_*`), or null when it matched no slice. */
57
+ sliceId: v.optional(v.nullable(v.string())),
58
+ /** Repo-relative path the finding concerns. */
59
+ path: v.string(),
60
+ /** The line the finding anchors to on the PR head (for an inline comment), or null. */
61
+ line: v.optional(v.nullable(v.number())),
62
+ /** Which side of the diff the line is on; `RIGHT` (head) unless it concerns a removed line. */
63
+ side: v.optional(v.nullable(v.picklist(['LEFT', 'RIGHT']))),
64
+ severity: prReviewSeveritySchema,
65
+ category: prReviewCategorySchema,
66
+ /** Short headline. */
67
+ title: v.string(),
68
+ /** The full finding, in prose. */
69
+ detail: v.string(),
70
+ /** A concrete suggested change, when the reviewer offered one. */
71
+ suggestedFix: v.optional(v.nullable(v.string())),
72
+ });
73
+ /**
74
+ * The PR-review lifecycle on a `pr-reviewer` step:
75
+ * - `reviewing`: the read-only reviewer container job is in flight (the agent dispatch).
76
+ * - `awaiting_selection`: parked; the human curates which findings matter through the window.
77
+ * - `fixing` / `posting`: a resolution is executing (PR 3 — the Fixer commits, or inline
78
+ * comments are posted). Unused in PR 2.
79
+ * - `done`: the review is resolved (the human finished; PR 3: fixed / posted).
80
+ * - `skipped`: the reviewer isn't wired / produced nothing to review — the step passed through.
81
+ */
82
+ export const prReviewStatusSchema = v.picklist([
83
+ 'reviewing',
84
+ 'awaiting_selection',
85
+ 'fixing',
86
+ 'posting',
87
+ 'done',
88
+ 'skipped',
89
+ ]);
90
+ /**
91
+ * How the human resolved the review. PR 2 ships only `finish` (curate the selection + complete
92
+ * the read-only review); PR 3 adds `fix` (feed the selected findings to a Fixer) and `post`
93
+ * (post them as inline PR review comments). Adding members later is a non-breaking extension
94
+ * (backwards compatibility is a non-goal — see CLAUDE.md).
95
+ */
96
+ export const prReviewResolutionSchema = v.picklist(['finish']);
97
+ /**
98
+ * Live PR-review state carried on the run's `pr-reviewer` step. Recorded by the engine when
99
+ * the reviewer container job completes (the sliced, severity-ordered findings), then mutated
100
+ * by the human's selection + resolution. `prUrl` is the reviewed PR (for the window header);
101
+ * `model` records the reviewing model for transparency.
102
+ */
103
+ export const prReviewStepStateSchema = v.object({
104
+ status: prReviewStatusSchema,
105
+ /** The reviewer's one-paragraph overall assessment of the PR, when it gave one. */
106
+ summary: v.optional(v.nullable(v.string())),
107
+ /** The cohesive slices the reviewer grouped the changed files into. */
108
+ slices: v.optional(v.array(prReviewSliceSchema), []),
109
+ /** The findings, ordered by severity (blocker → nit). */
110
+ findings: v.optional(v.array(prReviewFindingSchema), []),
111
+ /** The finding ids the human selected to act on (curated in the window). */
112
+ selectedFindingIds: v.optional(v.array(v.string()), []),
113
+ /** How the human resolved the review; null while awaiting selection. */
114
+ resolution: v.optional(v.nullable(prReviewResolutionSchema)),
115
+ /** Web URL of the reviewed pull request, when known. */
116
+ prUrl: v.optional(v.nullable(v.string())),
117
+ /** Identifier of the model that produced the review, for transparency. */
118
+ model: v.optional(v.nullable(v.string())),
119
+ });
120
+ // ---- Reviewer agent output (lenient) --------------------------------------
121
+ /**
122
+ * The LENIENT structured shape the read-only `pr-reviewer` container agent returns as
123
+ * `result.custom` (the engine mints slice/finding ids and records it onto the step). Every
124
+ * field falls back to a safe default (`v.fallback`) — exactly like `forkProposal` — so a
125
+ * partially-malformed reply degrades to sensible defaults rather than failing the run: an
126
+ * unreadable severity/category reads as its safe default, and each list degrades to empty.
127
+ * This is the SINGLE source of truth for the reviewer's output shape, consumed both by the
128
+ * agent kind's `defineStructuredOutput` (validation at completion) and the engine's coercion.
129
+ */
130
+ export const prReviewAgentOutputSchema = v.object({
131
+ /** One-paragraph overall assessment of the PR. */
132
+ summary: v.fallback(v.optional(v.string()), undefined),
133
+ /** The cohesive slices the reviewer grouped the changed files into. */
134
+ slices: v.fallback(v.array(v.fallback(v.object({
135
+ title: v.fallback(v.string(), ''),
136
+ rationale: v.fallback(v.string(), ''),
137
+ paths: v.fallback(v.array(v.fallback(v.string(), '')), []),
138
+ }), { title: '', rationale: '', paths: [] })), []),
139
+ /** The findings, ordered by severity (blocker → nit). */
140
+ findings: v.fallback(v.array(v.fallback(v.object({
141
+ path: v.fallback(v.string(), ''),
142
+ line: v.fallback(v.optional(v.number()), undefined),
143
+ side: v.fallback(v.optional(v.picklist(['LEFT', 'RIGHT'])), undefined),
144
+ severity: v.fallback(prReviewSeveritySchema, 'medium'),
145
+ category: v.fallback(prReviewCategorySchema, 'other'),
146
+ title: v.fallback(v.string(), ''),
147
+ detail: v.fallback(v.string(), ''),
148
+ suggestedFix: v.fallback(v.optional(v.string()), undefined),
149
+ }), {
150
+ path: '',
151
+ severity: 'medium',
152
+ category: 'other',
153
+ title: '',
154
+ detail: '',
155
+ })), []),
156
+ });
157
+ // ---- Request bodies -------------------------------------------------------
158
+ /**
159
+ * Resolve a parked PR review: the human's curated selection (`findingIds`) plus how to resolve
160
+ * it (`action`). PR 2 supports only `finish` — record the selection and complete the read-only
161
+ * review. The Fixer / inline-comment resolutions are PR 3.
162
+ */
163
+ export const resolvePrReviewSchema = v.object({
164
+ action: v.optional(prReviewResolutionSchema, 'finish'),
165
+ findingIds: v.optional(v.array(v.string()), []),
166
+ });
167
+ //# sourceMappingURL=prReview.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prReview.js","sourceRoot":"","sources":["../src/prReview.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- export declare const RESULT_VIEW_IDS: readonly ['requirements-review', 'clarity-review', 'brainstorm', 'tester', 'human-test', 'visual-confirm', 'gate', 'consensus-session', 'generic-structured', 'service-spec', 'follow-ups', 'merger', 'initiative-tracker', 'initiative-planning', 'doc-interview', 'fork-decision'];
1
+ export declare const RESULT_VIEW_IDS: readonly ['requirements-review', 'clarity-review', 'brainstorm', 'tester', 'human-test', 'visual-confirm', 'gate', 'consensus-session', 'generic-structured', 'service-spec', 'follow-ups', 'merger', 'initiative-tracker', 'initiative-planning', 'doc-interview', 'fork-decision', 'pr-review'];
2
2
  export type ResultViewId = (typeof RESULT_VIEW_IDS)[number];
3
3
  /** Set form, for `O(1)` membership checks (e.g. boot-time registration validation). */
4
4
  export declare const RESULT_VIEW_ID_SET: ReadonlySet<string>;
@@ -1 +1 @@
1
- {"version":3,"file":"result-views.d.ts","sourceRoot":"","sources":["../src/result-views.ts"],"names":[],"mappings":"AAgBA,eAAO,MAAM,eAAe,YAC1B,qBAAqB,EACrB,gBAAgB,EAChB,YAAY,EACZ,QAAQ,EACR,YAAY,EACZ,gBAAgB,EAChB,MAAM,EACN,mBAAmB,EACnB,oBAAoB,EACpB,cAAc,EACd,YAAY,EACZ,QAAQ,EACR,oBAAoB,EACpB,qBAAqB,EACrB,eAAe,EACf,eAAe,CACP,CAAA;AAEV,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAA;AAE3D,uFAAuF;AACvF,eAAO,MAAM,kBAAkB,EAAE,WAAW,CAAC,MAAM,CAA4B,CAAA"}
1
+ {"version":3,"file":"result-views.d.ts","sourceRoot":"","sources":["../src/result-views.ts"],"names":[],"mappings":"AAgBA,eAAO,MAAM,eAAe,YAC1B,qBAAqB,EACrB,gBAAgB,EAChB,YAAY,EACZ,QAAQ,EACR,YAAY,EACZ,gBAAgB,EAChB,MAAM,EACN,mBAAmB,EACnB,oBAAoB,EACpB,cAAc,EACd,YAAY,EACZ,QAAQ,EACR,oBAAoB,EACpB,qBAAqB,EACrB,eAAe,EACf,eAAe,EACf,WAAW,CACH,CAAA;AAEV,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAA;AAE3D,uFAAuF;AACvF,eAAO,MAAM,kBAAkB,EAAE,WAAW,CAAC,MAAM,CAA4B,CAAA"}
@@ -30,6 +30,7 @@ export const RESULT_VIEW_IDS = [
30
30
  'initiative-planning',
31
31
  'doc-interview',
32
32
  'fork-decision',
33
+ 'pr-review',
33
34
  ];
34
35
  /** Set form, for `O(1)` membership checks (e.g. boot-time registration validation). */
35
36
  export const RESULT_VIEW_ID_SET = new Set(RESULT_VIEW_IDS);
@@ -1 +1 @@
1
- {"version":3,"file":"result-views.js","sourceRoot":"","sources":["../src/result-views.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,4EAA4E;AAC5E,oFAAoF;AACpF,EAAE;AACF,8EAA8E;AAC9E,yFAAyF;AACzF,2FAA2F;AAC3F,0FAA0F;AAC1F,qFAAqF;AACrF,4BAA4B;AAC5B,mEAAmE;AACnE,EAAE;AACF,0FAA0F;AAC1F,0EAA0E;AAC1E,8EAA8E;AAE9E,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,qBAAqB;IACrB,gBAAgB;IAChB,YAAY;IACZ,QAAQ;IACR,YAAY;IACZ,gBAAgB;IAChB,MAAM;IACN,mBAAmB;IACnB,oBAAoB;IACpB,cAAc;IACd,YAAY;IACZ,QAAQ;IACR,oBAAoB;IACpB,qBAAqB;IACrB,eAAe;IACf,eAAe;CACP,CAAA;AAIV,uFAAuF;AACvF,MAAM,CAAC,MAAM,kBAAkB,GAAwB,IAAI,GAAG,CAAC,eAAe,CAAC,CAAA"}
1
+ {"version":3,"file":"result-views.js","sourceRoot":"","sources":["../src/result-views.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,4EAA4E;AAC5E,oFAAoF;AACpF,EAAE;AACF,8EAA8E;AAC9E,yFAAyF;AACzF,2FAA2F;AAC3F,0FAA0F;AAC1F,qFAAqF;AACrF,4BAA4B;AAC5B,mEAAmE;AACnE,EAAE;AACF,0FAA0F;AAC1F,0EAA0E;AAC1E,8EAA8E;AAE9E,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,qBAAqB;IACrB,gBAAgB;IAChB,YAAY;IACZ,QAAQ;IACR,YAAY;IACZ,gBAAgB;IAChB,MAAM;IACN,mBAAmB;IACnB,oBAAoB;IACpB,cAAc;IACd,YAAY;IACZ,QAAQ;IACR,oBAAoB;IACpB,qBAAqB;IACrB,eAAe;IACf,eAAe;IACf,WAAW;CACH,CAAA;AAIV,uFAAuF;AACvF,MAAM,CAAC,MAAM,kBAAkB,GAAwB,IAAI,GAAG,CAAC,eAAe,CAAC,CAAA"}
@@ -436,6 +436,32 @@ export declare const retryAgentRunContract: {
436
436
  readonly pendingForkChat: v.OptionalSchema<v.NullableSchema<v.ObjectSchema<{
437
437
  readonly messageId: v.StringSchema<undefined>;
438
438
  }, undefined>, undefined>, undefined>;
439
+ readonly prReview: v.OptionalSchema<v.NullableSchema<v.ObjectSchema<{
440
+ readonly status: v.PicklistSchema<["reviewing", "awaiting_selection", "fixing", "posting", "done", "skipped"], undefined>;
441
+ readonly summary: v.OptionalSchema<v.NullableSchema<v.StringSchema<undefined>, undefined>, undefined>;
442
+ readonly slices: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
443
+ readonly id: v.StringSchema<undefined>;
444
+ readonly title: v.StringSchema<undefined>;
445
+ readonly rationale: v.StringSchema<undefined>;
446
+ readonly paths: v.ArraySchema<v.StringSchema<undefined>, undefined>;
447
+ }, undefined>, undefined>, readonly []>;
448
+ readonly findings: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
449
+ readonly id: v.StringSchema<undefined>;
450
+ readonly sliceId: v.OptionalSchema<v.NullableSchema<v.StringSchema<undefined>, undefined>, undefined>;
451
+ readonly path: v.StringSchema<undefined>;
452
+ readonly line: v.OptionalSchema<v.NullableSchema<v.NumberSchema<undefined>, undefined>, undefined>;
453
+ readonly side: v.OptionalSchema<v.NullableSchema<v.PicklistSchema<["LEFT", "RIGHT"], undefined>, undefined>, undefined>;
454
+ readonly severity: v.PicklistSchema<["blocker", "high", "medium", "low", "nit"], undefined>;
455
+ readonly category: v.PicklistSchema<["correctness", "security", "performance", "maintainability", "style", "test", "other"], undefined>;
456
+ readonly title: v.StringSchema<undefined>;
457
+ readonly detail: v.StringSchema<undefined>;
458
+ readonly suggestedFix: v.OptionalSchema<v.NullableSchema<v.StringSchema<undefined>, undefined>, undefined>;
459
+ }, undefined>, undefined>, readonly []>;
460
+ readonly selectedFindingIds: v.OptionalSchema<v.ArraySchema<v.StringSchema<undefined>, undefined>, readonly []>;
461
+ readonly resolution: v.OptionalSchema<v.NullableSchema<v.PicklistSchema<["finish"], undefined>, undefined>, undefined>;
462
+ readonly prUrl: v.OptionalSchema<v.NullableSchema<v.StringSchema<undefined>, undefined>, undefined>;
463
+ readonly model: v.OptionalSchema<v.NullableSchema<v.StringSchema<undefined>, undefined>, undefined>;
464
+ }, undefined>, undefined>, undefined>;
439
465
  readonly rework: v.OptionalSchema<v.NullableSchema<v.ObjectSchema<{
440
466
  readonly previousProposal: v.StringSchema<undefined>;
441
467
  readonly feedback: v.StringSchema<undefined>;
@@ -1266,6 +1292,32 @@ export declare const stopAgentRunContract: {
1266
1292
  readonly pendingForkChat: v.OptionalSchema<v.NullableSchema<v.ObjectSchema<{
1267
1293
  readonly messageId: v.StringSchema<undefined>;
1268
1294
  }, undefined>, undefined>, undefined>;
1295
+ readonly prReview: v.OptionalSchema<v.NullableSchema<v.ObjectSchema<{
1296
+ readonly status: v.PicklistSchema<["reviewing", "awaiting_selection", "fixing", "posting", "done", "skipped"], undefined>;
1297
+ readonly summary: v.OptionalSchema<v.NullableSchema<v.StringSchema<undefined>, undefined>, undefined>;
1298
+ readonly slices: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
1299
+ readonly id: v.StringSchema<undefined>;
1300
+ readonly title: v.StringSchema<undefined>;
1301
+ readonly rationale: v.StringSchema<undefined>;
1302
+ readonly paths: v.ArraySchema<v.StringSchema<undefined>, undefined>;
1303
+ }, undefined>, undefined>, readonly []>;
1304
+ readonly findings: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
1305
+ readonly id: v.StringSchema<undefined>;
1306
+ readonly sliceId: v.OptionalSchema<v.NullableSchema<v.StringSchema<undefined>, undefined>, undefined>;
1307
+ readonly path: v.StringSchema<undefined>;
1308
+ readonly line: v.OptionalSchema<v.NullableSchema<v.NumberSchema<undefined>, undefined>, undefined>;
1309
+ readonly side: v.OptionalSchema<v.NullableSchema<v.PicklistSchema<["LEFT", "RIGHT"], undefined>, undefined>, undefined>;
1310
+ readonly severity: v.PicklistSchema<["blocker", "high", "medium", "low", "nit"], undefined>;
1311
+ readonly category: v.PicklistSchema<["correctness", "security", "performance", "maintainability", "style", "test", "other"], undefined>;
1312
+ readonly title: v.StringSchema<undefined>;
1313
+ readonly detail: v.StringSchema<undefined>;
1314
+ readonly suggestedFix: v.OptionalSchema<v.NullableSchema<v.StringSchema<undefined>, undefined>, undefined>;
1315
+ }, undefined>, undefined>, readonly []>;
1316
+ readonly selectedFindingIds: v.OptionalSchema<v.ArraySchema<v.StringSchema<undefined>, undefined>, readonly []>;
1317
+ readonly resolution: v.OptionalSchema<v.NullableSchema<v.PicklistSchema<["finish"], undefined>, undefined>, undefined>;
1318
+ readonly prUrl: v.OptionalSchema<v.NullableSchema<v.StringSchema<undefined>, undefined>, undefined>;
1319
+ readonly model: v.OptionalSchema<v.NullableSchema<v.StringSchema<undefined>, undefined>, undefined>;
1320
+ }, undefined>, undefined>, undefined>;
1269
1321
  readonly rework: v.OptionalSchema<v.NullableSchema<v.ObjectSchema<{
1270
1322
  readonly previousProposal: v.StringSchema<undefined>;
1271
1323
  readonly feedback: v.StringSchema<undefined>;
@@ -1 +1 @@
1
- {"version":3,"file":"agent-runs.d.ts","sourceRoot":"","sources":["../../src/routes/agent-runs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAqB,MAAM,yBAAyB,CAAA;AAC3E,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAsB5B,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAMhC,CAAA;AAEF,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAM/B,CAAA"}
1
+ {"version":3,"file":"agent-runs.d.ts","sourceRoot":"","sources":["../../src/routes/agent-runs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAqB,MAAM,yBAAyB,CAAA;AAC3E,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAsB5B,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAMhC,CAAA;AAEF,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAM/B,CAAA"}