@cat-factory/contracts 0.6.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 (166) hide show
  1. package/LICENSE +21 -0
  2. package/dist/accounts.d.ts +103 -0
  3. package/dist/accounts.d.ts.map +1 -0
  4. package/dist/accounts.js +102 -0
  5. package/dist/accounts.js.map +1 -0
  6. package/dist/agent-config.d.ts +77 -0
  7. package/dist/agent-config.d.ts.map +1 -0
  8. package/dist/agent-config.js +78 -0
  9. package/dist/agent-config.js.map +1 -0
  10. package/dist/api-keys.d.ts +44 -0
  11. package/dist/api-keys.d.ts.map +1 -0
  12. package/dist/api-keys.js +49 -0
  13. package/dist/api-keys.js.map +1 -0
  14. package/dist/auth.d.ts +24 -0
  15. package/dist/auth.d.ts.map +1 -0
  16. package/dist/auth.js +15 -0
  17. package/dist/auth.js.map +1 -0
  18. package/dist/board-scan.d.ts +89 -0
  19. package/dist/board-scan.d.ts.map +1 -0
  20. package/dist/board-scan.js +122 -0
  21. package/dist/board-scan.js.map +1 -0
  22. package/dist/bootstrap.d.ts +168 -0
  23. package/dist/bootstrap.d.ts.map +1 -0
  24. package/dist/bootstrap.js +148 -0
  25. package/dist/bootstrap.js.map +1 -0
  26. package/dist/clarity.d.ts +75 -0
  27. package/dist/clarity.d.ts.map +1 -0
  28. package/dist/clarity.js +66 -0
  29. package/dist/clarity.js.map +1 -0
  30. package/dist/companion.d.ts +32 -0
  31. package/dist/companion.d.ts.map +1 -0
  32. package/dist/companion.js +43 -0
  33. package/dist/companion.js.map +1 -0
  34. package/dist/consensus.d.ts +195 -0
  35. package/dist/consensus.d.ts.map +1 -0
  36. package/dist/consensus.js +164 -0
  37. package/dist/consensus.js.map +1 -0
  38. package/dist/documents.d.ts +197 -0
  39. package/dist/documents.d.ts.map +1 -0
  40. package/dist/documents.js +161 -0
  41. package/dist/documents.js.map +1 -0
  42. package/dist/entities.d.ts +1691 -0
  43. package/dist/entities.d.ts.map +1 -0
  44. package/dist/entities.js +853 -0
  45. package/dist/entities.js.map +1 -0
  46. package/dist/environments.d.ts +426 -0
  47. package/dist/environments.d.ts.map +1 -0
  48. package/dist/environments.js +190 -0
  49. package/dist/environments.js.map +1 -0
  50. package/dist/events.d.ts +98 -0
  51. package/dist/events.d.ts.map +1 -0
  52. package/dist/events.js +2 -0
  53. package/dist/events.js.map +1 -0
  54. package/dist/fragment-library.d.ts +123 -0
  55. package/dist/fragment-library.d.ts.map +1 -0
  56. package/dist/fragment-library.js +88 -0
  57. package/dist/fragment-library.js.map +1 -0
  58. package/dist/github.d.ts +215 -0
  59. package/dist/github.d.ts.map +1 -0
  60. package/dist/github.js +204 -0
  61. package/dist/github.js.map +1 -0
  62. package/dist/index.d.ts +41 -0
  63. package/dist/index.d.ts.map +1 -0
  64. package/dist/index.js +41 -0
  65. package/dist/index.js.map +1 -0
  66. package/dist/iteration-cap.d.ts +17 -0
  67. package/dist/iteration-cap.d.ts.map +1 -0
  68. package/dist/iteration-cap.js +25 -0
  69. package/dist/iteration-cap.js.map +1 -0
  70. package/dist/localModels.d.ts +54 -0
  71. package/dist/localModels.d.ts.map +1 -0
  72. package/dist/localModels.js +79 -0
  73. package/dist/localModels.js.map +1 -0
  74. package/dist/merge.d.ts +106 -0
  75. package/dist/merge.d.ts.map +1 -0
  76. package/dist/merge.js +129 -0
  77. package/dist/merge.js.map +1 -0
  78. package/dist/model-defaults.d.ts +23 -0
  79. package/dist/model-defaults.d.ts.map +1 -0
  80. package/dist/model-defaults.js +34 -0
  81. package/dist/model-defaults.js.map +1 -0
  82. package/dist/notifications.d.ts +136 -0
  83. package/dist/notifications.d.ts.map +1 -0
  84. package/dist/notifications.js +125 -0
  85. package/dist/notifications.js.map +1 -0
  86. package/dist/observability.d.ts +271 -0
  87. package/dist/observability.d.ts.map +1 -0
  88. package/dist/observability.js +152 -0
  89. package/dist/observability.js.map +1 -0
  90. package/dist/personal-subscriptions.d.ts +66 -0
  91. package/dist/personal-subscriptions.d.ts.map +1 -0
  92. package/dist/personal-subscriptions.js +70 -0
  93. package/dist/personal-subscriptions.js.map +1 -0
  94. package/dist/primitives.d.ts +57 -0
  95. package/dist/primitives.d.ts.map +1 -0
  96. package/dist/primitives.js +66 -0
  97. package/dist/primitives.js.map +1 -0
  98. package/dist/provisioning.d.ts +46 -0
  99. package/dist/provisioning.d.ts.map +1 -0
  100. package/dist/provisioning.js +107 -0
  101. package/dist/provisioning.js.map +1 -0
  102. package/dist/recurring.d.ts +117 -0
  103. package/dist/recurring.d.ts.map +1 -0
  104. package/dist/recurring.js +99 -0
  105. package/dist/recurring.js.map +1 -0
  106. package/dist/release.d.ts +60 -0
  107. package/dist/release.d.ts.map +1 -0
  108. package/dist/release.js +75 -0
  109. package/dist/release.js.map +1 -0
  110. package/dist/requests.d.ts +451 -0
  111. package/dist/requests.d.ts.map +1 -0
  112. package/dist/requests.js +231 -0
  113. package/dist/requests.js.map +1 -0
  114. package/dist/requirements.d.ts +127 -0
  115. package/dist/requirements.d.ts.map +1 -0
  116. package/dist/requirements.js +137 -0
  117. package/dist/requirements.js.map +1 -0
  118. package/dist/runners.d.ts +387 -0
  119. package/dist/runners.d.ts.map +1 -0
  120. package/dist/runners.js +117 -0
  121. package/dist/runners.js.map +1 -0
  122. package/dist/sandbox.d.ts +300 -0
  123. package/dist/sandbox.d.ts.map +1 -0
  124. package/dist/sandbox.js +243 -0
  125. package/dist/sandbox.js.map +1 -0
  126. package/dist/service-fragment-defaults.d.ts +16 -0
  127. package/dist/service-fragment-defaults.d.ts.map +1 -0
  128. package/dist/service-fragment-defaults.js +23 -0
  129. package/dist/service-fragment-defaults.js.map +1 -0
  130. package/dist/services.d.ts +81 -0
  131. package/dist/services.d.ts.map +1 -0
  132. package/dist/services.js +77 -0
  133. package/dist/services.js.map +1 -0
  134. package/dist/slack.d.ts +104 -0
  135. package/dist/slack.d.ts.map +1 -0
  136. package/dist/slack.js +98 -0
  137. package/dist/slack.js.map +1 -0
  138. package/dist/snapshot.d.ts +522 -0
  139. package/dist/snapshot.d.ts.map +1 -0
  140. package/dist/snapshot.js +104 -0
  141. package/dist/snapshot.js.map +1 -0
  142. package/dist/spec.d.ts +174 -0
  143. package/dist/spec.d.ts.map +1 -0
  144. package/dist/spec.js +173 -0
  145. package/dist/spec.js.map +1 -0
  146. package/dist/tasks.d.ts +150 -0
  147. package/dist/tasks.d.ts.map +1 -0
  148. package/dist/tasks.js +146 -0
  149. package/dist/tasks.js.map +1 -0
  150. package/dist/testing.d.ts +67 -0
  151. package/dist/testing.d.ts.map +1 -0
  152. package/dist/testing.js +64 -0
  153. package/dist/testing.js.map +1 -0
  154. package/dist/tracker.d.ts +18 -0
  155. package/dist/tracker.d.ts.map +1 -0
  156. package/dist/tracker.js +24 -0
  157. package/dist/tracker.js.map +1 -0
  158. package/dist/vendor-credentials.d.ts +37 -0
  159. package/dist/vendor-credentials.d.ts.map +1 -0
  160. package/dist/vendor-credentials.js +40 -0
  161. package/dist/vendor-credentials.js.map +1 -0
  162. package/dist/workspace-settings.d.ts +36 -0
  163. package/dist/workspace-settings.d.ts.map +1 -0
  164. package/dist/workspace-settings.js +41 -0
  165. package/dist/workspace-settings.js.map +1 -0
  166. package/package.json +31 -0
@@ -0,0 +1,522 @@
1
+ import * as v from 'valibot';
2
+ export declare const workspaceSnapshotSchema: v.ObjectSchema<{
3
+ readonly workspace: v.ObjectSchema<{
4
+ readonly id: v.StringSchema<undefined>;
5
+ readonly name: v.StringSchema<undefined>;
6
+ readonly description: v.NullableSchema<v.StringSchema<undefined>, undefined>;
7
+ readonly createdAt: v.NumberSchema<undefined>;
8
+ readonly accountId: v.NullableSchema<v.StringSchema<undefined>, undefined>;
9
+ }, undefined>;
10
+ readonly blocks: v.ArraySchema<v.ObjectSchema<{
11
+ readonly id: v.StringSchema<undefined>;
12
+ readonly title: v.StringSchema<undefined>;
13
+ readonly type: v.PicklistSchema<["frontend", "service", "api", "database", "queue", "integration", "external", "environment"], undefined>;
14
+ readonly description: v.StringSchema<undefined>;
15
+ readonly position: v.ObjectSchema<{
16
+ readonly x: v.NumberSchema<undefined>;
17
+ readonly y: v.NumberSchema<undefined>;
18
+ }, undefined>;
19
+ readonly size: v.OptionalSchema<v.ObjectSchema<{
20
+ readonly w: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 1, undefined>]>;
21
+ readonly h: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 1, undefined>]>;
22
+ }, undefined>, undefined>;
23
+ readonly status: v.PicklistSchema<["planned", "ready", "in_progress", "blocked", "pr_ready", "done"], undefined>;
24
+ readonly progress: v.NumberSchema<undefined>;
25
+ readonly dependsOn: v.ArraySchema<v.StringSchema<undefined>, undefined>;
26
+ readonly executionId: v.NullableSchema<v.StringSchema<undefined>, undefined>;
27
+ readonly level: v.PicklistSchema<["frame", "module", "task"], undefined>;
28
+ readonly parentId: v.NullableSchema<v.StringSchema<undefined>, undefined>;
29
+ readonly confidence: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
30
+ readonly estimate: v.OptionalSchema<v.NullableSchema<v.ObjectSchema<{
31
+ readonly complexity: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 0, undefined>, v.MaxValueAction<number, 1, undefined>]>;
32
+ readonly risk: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 0, undefined>, v.MaxValueAction<number, 1, undefined>]>;
33
+ readonly impact: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 0, undefined>, v.MaxValueAction<number, 1, undefined>]>;
34
+ readonly rationale: v.StringSchema<undefined>;
35
+ readonly model: v.OptionalSchema<v.NullableSchema<v.StringSchema<undefined>, undefined>, undefined>;
36
+ readonly createdAt: v.NumberSchema<undefined>;
37
+ }, undefined>, undefined>, undefined>;
38
+ readonly moduleName: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
39
+ readonly taskType: v.OptionalSchema<v.PicklistSchema<["feature", "bug", "document", "spike", "recurring"], undefined>, undefined>;
40
+ readonly taskTypeFields: v.OptionalSchema<v.NullableSchema<v.ObjectSchema<{
41
+ readonly severity: v.OptionalSchema<v.PicklistSchema<["low", "medium", "high", "critical"], undefined>, undefined>;
42
+ readonly stepsToReproduce: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MaxLengthAction<string, 4000, undefined>]>, undefined>;
43
+ readonly timeboxHours: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 0, undefined>, v.MaxValueAction<number, 1000, undefined>]>, undefined>;
44
+ readonly docKind: v.OptionalSchema<v.PicklistSchema<["prd", "rfc", "runbook", "reference", "other"], undefined>, undefined>;
45
+ }, undefined>, undefined>, undefined>;
46
+ readonly fragmentIds: v.OptionalSchema<v.ArraySchema<v.StringSchema<undefined>, undefined>, undefined>;
47
+ readonly serviceFragmentIds: v.OptionalSchema<v.ArraySchema<v.StringSchema<undefined>, undefined>, undefined>;
48
+ readonly modelId: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
49
+ readonly agentConfig: v.OptionalSchema<v.RecordSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 120, undefined>]>, v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MaxLengthAction<string, 400, undefined>]>, undefined>, undefined>;
50
+ readonly testComposePath: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
51
+ readonly noInfraDependencies: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
52
+ readonly cloudProvider: v.OptionalSchema<v.PicklistSchema<["cloudflare", "docker", "aws", "gcp", "azure", "custom"], undefined>, undefined>;
53
+ readonly instanceSize: v.OptionalSchema<v.PicklistSchema<["small", "medium", "large", "xlarge"], undefined>, undefined>;
54
+ readonly pullRequest: v.OptionalSchema<v.ObjectSchema<{
55
+ readonly url: v.StringSchema<undefined>;
56
+ readonly number: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
57
+ readonly branch: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
58
+ }, undefined>, undefined>;
59
+ readonly mergePresetId: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
60
+ readonly pipelineId: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
61
+ readonly createdBy: v.OptionalSchema<v.NullableSchema<v.StringSchema<undefined>, undefined>, undefined>;
62
+ readonly responsibleProductUserId: v.OptionalSchema<v.NullableSchema<v.StringSchema<undefined>, undefined>, undefined>;
63
+ }, undefined>, undefined>;
64
+ readonly pipelines: v.ArraySchema<v.ObjectSchema<{
65
+ readonly id: v.StringSchema<undefined>;
66
+ readonly name: v.StringSchema<undefined>;
67
+ readonly agentKinds: v.ArraySchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>, undefined>;
68
+ readonly gates: v.OptionalSchema<v.ArraySchema<v.BooleanSchema<undefined>, undefined>, undefined>;
69
+ readonly thresholds: v.OptionalSchema<v.ArraySchema<v.NullableSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 0, undefined>, v.MaxValueAction<number, 1, undefined>]>, undefined>, undefined>, undefined>;
70
+ readonly enabled: v.OptionalSchema<v.ArraySchema<v.BooleanSchema<undefined>, undefined>, undefined>;
71
+ readonly consensus: v.OptionalSchema<v.ArraySchema<v.NullableSchema<v.ObjectSchema<{
72
+ readonly enabled: v.BooleanSchema<undefined>;
73
+ readonly strategy: v.PicklistSchema<["specialist-panel", "debate", "ranked-voting"], undefined>;
74
+ readonly participants: v.ArraySchema<v.ObjectSchema<{
75
+ readonly id: v.StringSchema<undefined>;
76
+ readonly role: v.StringSchema<undefined>;
77
+ readonly systemFraming: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
78
+ readonly modelId: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
79
+ }, undefined>, undefined>;
80
+ readonly synthesizerModelId: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
81
+ readonly rounds: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 1, undefined>, v.MaxValueAction<number, 5, undefined>]>, undefined>;
82
+ readonly gating: v.OptionalSchema<v.ObjectSchema<{
83
+ readonly enabled: v.BooleanSchema<undefined>;
84
+ readonly minComplexity: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 0, undefined>, v.MaxValueAction<number, 1, undefined>]>, undefined>;
85
+ readonly minRisk: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 0, undefined>, v.MaxValueAction<number, 1, undefined>]>, undefined>;
86
+ readonly minImpact: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 0, undefined>, v.MaxValueAction<number, 1, undefined>]>, undefined>;
87
+ readonly onMissingEstimate: v.OptionalSchema<v.PicklistSchema<["consensus", "standard"], undefined>, "consensus">;
88
+ }, undefined>, undefined>;
89
+ }, undefined>, undefined>, undefined>, undefined>;
90
+ readonly gating: v.OptionalSchema<v.ArraySchema<v.NullableSchema<v.ObjectSchema<{
91
+ readonly enabled: v.BooleanSchema<undefined>;
92
+ readonly minComplexity: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 0, undefined>, v.MaxValueAction<number, 1, undefined>]>, undefined>;
93
+ readonly minRisk: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 0, undefined>, v.MaxValueAction<number, 1, undefined>]>, undefined>;
94
+ readonly minImpact: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 0, undefined>, v.MaxValueAction<number, 1, undefined>]>, undefined>;
95
+ readonly onMissingEstimate: v.OptionalSchema<v.PicklistSchema<["run", "skip"], undefined>, "run">;
96
+ }, undefined>, undefined>, undefined>, undefined>;
97
+ readonly labels: v.OptionalSchema<v.ArraySchema<v.StringSchema<undefined>, undefined>, undefined>;
98
+ readonly archived: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
99
+ readonly builtin: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
100
+ }, undefined>, undefined>;
101
+ readonly executions: v.ArraySchema<v.ObjectSchema<{
102
+ readonly id: v.StringSchema<undefined>;
103
+ readonly blockId: v.StringSchema<undefined>;
104
+ readonly pipelineId: v.StringSchema<undefined>;
105
+ readonly pipelineName: v.StringSchema<undefined>;
106
+ readonly steps: v.ArraySchema<v.ObjectSchema<{
107
+ readonly runId: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
108
+ readonly agentKind: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
109
+ readonly state: v.PicklistSchema<["pending", "working", "waiting_decision", "done"], undefined>;
110
+ readonly progress: v.NumberSchema<undefined>;
111
+ readonly metrics: v.OptionalSchema<v.NullableSchema<v.ObjectSchema<{
112
+ readonly calls: v.NumberSchema<undefined>;
113
+ readonly promptTokens: v.NumberSchema<undefined>;
114
+ readonly completionTokens: v.NumberSchema<undefined>;
115
+ readonly peakCompletionTokens: v.NumberSchema<undefined>;
116
+ readonly maxOutputTokens: v.NullableSchema<v.NumberSchema<undefined>, undefined>;
117
+ readonly truncatedCalls: v.NumberSchema<undefined>;
118
+ readonly upstreamMs: v.NumberSchema<undefined>;
119
+ readonly overheadMs: v.NumberSchema<undefined>;
120
+ readonly errors: v.NumberSchema<undefined>;
121
+ readonly warnings: v.NumberSchema<undefined>;
122
+ }, undefined>, undefined>, undefined>;
123
+ readonly gate: v.OptionalSchema<v.NullableSchema<v.ObjectSchema<{
124
+ readonly phase: v.PicklistSchema<["checking", "working"], undefined>;
125
+ readonly attempts: v.NumberSchema<undefined>;
126
+ readonly maxAttempts: v.NumberSchema<undefined>;
127
+ readonly headSha: v.OptionalSchema<v.NullableSchema<v.StringSchema<undefined>, undefined>, undefined>;
128
+ readonly lastVerdict: v.OptionalSchema<v.NullableSchema<v.PicklistSchema<["pass", "pending", "fail"], undefined>, undefined>, undefined>;
129
+ readonly lastFailureSummary: v.OptionalSchema<v.NullableSchema<v.StringSchema<undefined>, undefined>, undefined>;
130
+ readonly failingChecks: v.OptionalSchema<v.NullableSchema<v.ArraySchema<v.ObjectSchema<{
131
+ readonly name: v.StringSchema<undefined>;
132
+ readonly conclusion: v.NullableSchema<v.StringSchema<undefined>, undefined>;
133
+ }, undefined>, undefined>, undefined>, undefined>;
134
+ readonly watchSince: v.OptionalSchema<v.NullableSchema<v.NumberSchema<undefined>, undefined>, undefined>;
135
+ readonly watchWindowMinutes: v.OptionalSchema<v.NullableSchema<v.NumberSchema<undefined>, undefined>, undefined>;
136
+ readonly regressedSignals: v.OptionalSchema<v.NullableSchema<v.ArraySchema<v.ObjectSchema<{
137
+ readonly kind: v.PicklistSchema<["monitor", "slo"], undefined>;
138
+ readonly id: v.StringSchema<undefined>;
139
+ readonly name: v.StringSchema<undefined>;
140
+ readonly state: v.PicklistSchema<["ok", "warn", "alert", "no_data"], undefined>;
141
+ readonly detail: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
142
+ }, undefined>, undefined>, undefined>, undefined>;
143
+ }, undefined>, undefined>, undefined>;
144
+ readonly test: v.OptionalSchema<v.NullableSchema<v.ObjectSchema<{
145
+ readonly phase: v.PicklistSchema<["testing", "fixing"], undefined>;
146
+ readonly attempts: v.NumberSchema<undefined>;
147
+ readonly maxAttempts: v.NumberSchema<undefined>;
148
+ readonly lastReport: v.OptionalSchema<v.NullableSchema<v.ObjectSchema<{
149
+ readonly greenlight: v.BooleanSchema<undefined>;
150
+ readonly summary: v.StringSchema<undefined>;
151
+ readonly tested: v.ArraySchema<v.StringSchema<undefined>, undefined>;
152
+ readonly outcomes: v.ArraySchema<v.ObjectSchema<{
153
+ readonly name: v.StringSchema<undefined>;
154
+ readonly status: v.PicklistSchema<["passed", "failed", "skipped"], undefined>;
155
+ readonly detail: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
156
+ }, undefined>, undefined>;
157
+ readonly concerns: v.ArraySchema<v.ObjectSchema<{
158
+ readonly title: v.StringSchema<undefined>;
159
+ readonly detail: v.StringSchema<undefined>;
160
+ readonly severity: v.PicklistSchema<["low", "medium", "high", "critical"], undefined>;
161
+ }, undefined>, undefined>;
162
+ readonly environment: v.OptionalSchema<v.PicklistSchema<["local", "ephemeral"], undefined>, undefined>;
163
+ }, undefined>, undefined>, undefined>;
164
+ }, undefined>, undefined>, undefined>;
165
+ readonly subtasks: v.OptionalSchema<v.ObjectSchema<{
166
+ readonly completed: v.NumberSchema<undefined>;
167
+ readonly inProgress: v.NumberSchema<undefined>;
168
+ readonly total: v.NumberSchema<undefined>;
169
+ readonly items: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
170
+ readonly label: v.StringSchema<undefined>;
171
+ readonly status: v.PicklistSchema<["pending", "in_progress", "completed"], undefined>;
172
+ }, undefined>, undefined>, undefined>;
173
+ }, undefined>, undefined>;
174
+ readonly startingContainer: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
175
+ readonly decision: v.NullableSchema<v.ObjectSchema<{
176
+ readonly id: v.StringSchema<undefined>;
177
+ readonly question: v.StringSchema<undefined>;
178
+ readonly options: v.ArraySchema<v.StringSchema<undefined>, undefined>;
179
+ readonly chosen: v.NullableSchema<v.StringSchema<undefined>, undefined>;
180
+ }, undefined>, undefined>;
181
+ readonly requiresApproval: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
182
+ readonly approval: v.OptionalSchema<v.NullableSchema<v.ObjectSchema<{
183
+ readonly id: v.StringSchema<undefined>;
184
+ readonly status: v.PicklistSchema<["pending", "approved", "changes_requested", "rejected"], undefined>;
185
+ readonly proposal: v.StringSchema<undefined>;
186
+ readonly feedback: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
187
+ readonly comments: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
188
+ readonly quotedSource: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
189
+ readonly srcStart: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
190
+ readonly srcEnd: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
191
+ readonly anchorId: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
192
+ readonly body: v.StringSchema<undefined>;
193
+ }, undefined>, undefined>, undefined>;
194
+ }, undefined>, undefined>, undefined>;
195
+ readonly companion: v.OptionalSchema<v.NullableSchema<v.ObjectSchema<{
196
+ readonly threshold: v.NumberSchema<undefined>;
197
+ readonly maxAttempts: v.NumberSchema<undefined>;
198
+ readonly attempts: v.OptionalSchema<v.NumberSchema<undefined>, 0>;
199
+ readonly verdicts: v.ArraySchema<v.ObjectSchema<{
200
+ readonly rating: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 0, undefined>, v.MaxValueAction<number, 1, undefined>]>;
201
+ readonly threshold: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 0, undefined>, v.MaxValueAction<number, 1, undefined>]>;
202
+ readonly passed: v.BooleanSchema<undefined>;
203
+ readonly feedback: v.StringSchema<undefined>;
204
+ }, undefined>, undefined>;
205
+ readonly exceeded: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
206
+ }, undefined>, undefined>, undefined>;
207
+ readonly rework: v.OptionalSchema<v.NullableSchema<v.ObjectSchema<{
208
+ readonly previousProposal: v.StringSchema<undefined>;
209
+ readonly feedback: v.StringSchema<undefined>;
210
+ readonly comments: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
211
+ readonly quotedSource: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
212
+ readonly srcStart: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
213
+ readonly srcEnd: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
214
+ readonly anchorId: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
215
+ readonly body: v.StringSchema<undefined>;
216
+ }, undefined>, undefined>, undefined>;
217
+ }, undefined>, undefined>, undefined>;
218
+ readonly pendingIncorporation: v.OptionalSchema<v.NullableSchema<v.ObjectSchema<{
219
+ readonly feedback: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
220
+ }, undefined>, undefined>, undefined>;
221
+ readonly consensus: v.OptionalSchema<v.NullableSchema<v.ObjectSchema<{
222
+ readonly enabled: v.BooleanSchema<undefined>;
223
+ readonly strategy: v.PicklistSchema<["specialist-panel", "debate", "ranked-voting"], undefined>;
224
+ readonly participants: v.ArraySchema<v.ObjectSchema<{
225
+ readonly id: v.StringSchema<undefined>;
226
+ readonly role: v.StringSchema<undefined>;
227
+ readonly systemFraming: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
228
+ readonly modelId: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
229
+ }, undefined>, undefined>;
230
+ readonly synthesizerModelId: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
231
+ readonly rounds: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 1, undefined>, v.MaxValueAction<number, 5, undefined>]>, undefined>;
232
+ readonly gating: v.OptionalSchema<v.ObjectSchema<{
233
+ readonly enabled: v.BooleanSchema<undefined>;
234
+ readonly minComplexity: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 0, undefined>, v.MaxValueAction<number, 1, undefined>]>, undefined>;
235
+ readonly minRisk: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 0, undefined>, v.MaxValueAction<number, 1, undefined>]>, undefined>;
236
+ readonly minImpact: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 0, undefined>, v.MaxValueAction<number, 1, undefined>]>, undefined>;
237
+ readonly onMissingEstimate: v.OptionalSchema<v.PicklistSchema<["consensus", "standard"], undefined>, "consensus">;
238
+ }, undefined>, undefined>;
239
+ }, undefined>, undefined>, undefined>;
240
+ readonly gating: v.OptionalSchema<v.NullableSchema<v.ObjectSchema<{
241
+ readonly enabled: v.BooleanSchema<undefined>;
242
+ readonly minComplexity: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 0, undefined>, v.MaxValueAction<number, 1, undefined>]>, undefined>;
243
+ readonly minRisk: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 0, undefined>, v.MaxValueAction<number, 1, undefined>]>, undefined>;
244
+ readonly minImpact: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 0, undefined>, v.MaxValueAction<number, 1, undefined>]>, undefined>;
245
+ readonly onMissingEstimate: v.OptionalSchema<v.PicklistSchema<["run", "skip"], undefined>, "run">;
246
+ }, undefined>, undefined>, undefined>;
247
+ readonly skipped: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
248
+ readonly output: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
249
+ readonly model: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
250
+ readonly selectedFragmentIds: v.OptionalSchema<v.ArraySchema<v.StringSchema<undefined>, undefined>, undefined>;
251
+ readonly jobId: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
252
+ readonly startedAt: v.OptionalSchema<v.NullableSchema<v.NumberSchema<undefined>, undefined>, undefined>;
253
+ readonly finishedAt: v.OptionalSchema<v.NullableSchema<v.NumberSchema<undefined>, undefined>, undefined>;
254
+ readonly pausedAt: v.OptionalSchema<v.NullableSchema<v.NumberSchema<undefined>, undefined>, undefined>;
255
+ readonly evictionRecoveries: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
256
+ readonly transientEvictionRecoveries: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
257
+ }, undefined>, undefined>;
258
+ readonly currentStep: v.NumberSchema<undefined>;
259
+ readonly status: v.PicklistSchema<["running", "blocked", "done", "paused", "failed"], undefined>;
260
+ readonly failure: v.OptionalSchema<v.NullableSchema<v.ObjectSchema<{
261
+ readonly kind: v.PicklistSchema<["preflight", "dispatch", "evicted", "timeout", "agent", "job_failed", "rejected", "companion_rejected", "cancelled", "unknown"], undefined>;
262
+ readonly message: v.StringSchema<undefined>;
263
+ readonly detail: v.NullableSchema<v.StringSchema<undefined>, undefined>;
264
+ readonly hint: v.NullableSchema<v.StringSchema<undefined>, undefined>;
265
+ readonly occurredAt: v.NumberSchema<undefined>;
266
+ readonly lastSubtasks: v.NullableSchema<v.ObjectSchema<{
267
+ readonly completed: v.NumberSchema<undefined>;
268
+ readonly inProgress: v.NumberSchema<undefined>;
269
+ readonly total: v.NumberSchema<undefined>;
270
+ readonly items: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
271
+ readonly label: v.StringSchema<undefined>;
272
+ readonly status: v.PicklistSchema<["pending", "in_progress", "completed"], undefined>;
273
+ }, undefined>, undefined>, undefined>;
274
+ }, undefined>, undefined>;
275
+ }, undefined>, undefined>, undefined>;
276
+ readonly initiatedBy: v.OptionalSchema<v.NullableSchema<v.StringSchema<undefined>, undefined>, undefined>;
277
+ }, undefined>, undefined>;
278
+ /**
279
+ * Bootstrap runs for this workspace (the unified `agent_runs` table's bootstrap
280
+ * rows). Carried in the snapshot so the board can render a bootstrap's live
281
+ * progress / failure + retry the moment it loads, without a separate fetch that
282
+ * could fail independently. Attached by the worker, so optional on the wire.
283
+ */
284
+ readonly bootstrapJobs: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
285
+ readonly id: v.StringSchema<undefined>;
286
+ readonly workspaceId: v.StringSchema<undefined>;
287
+ readonly referenceArchitectureId: v.NullableSchema<v.StringSchema<undefined>, undefined>;
288
+ readonly referenceArchitectureName: v.NullableSchema<v.StringSchema<undefined>, undefined>;
289
+ readonly repoName: v.StringSchema<undefined>;
290
+ readonly repoOwner: v.NullableSchema<v.StringSchema<undefined>, undefined>;
291
+ readonly repoUrl: v.NullableSchema<v.StringSchema<undefined>, undefined>;
292
+ readonly instructions: v.StringSchema<undefined>;
293
+ readonly status: v.PicklistSchema<["pending", "running", "succeeded", "failed"], undefined>;
294
+ readonly blockId: v.NullableSchema<v.StringSchema<undefined>, undefined>;
295
+ readonly subtasks: v.NullableSchema<v.ObjectSchema<{
296
+ readonly completed: v.NumberSchema<undefined>;
297
+ readonly inProgress: v.NumberSchema<undefined>;
298
+ readonly total: v.NumberSchema<undefined>;
299
+ readonly items: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
300
+ readonly label: v.StringSchema<undefined>;
301
+ readonly status: v.PicklistSchema<["pending", "in_progress", "completed"], undefined>;
302
+ }, undefined>, undefined>, undefined>;
303
+ }, undefined>, undefined>;
304
+ readonly error: v.NullableSchema<v.StringSchema<undefined>, undefined>;
305
+ readonly failure: v.NullableSchema<v.ObjectSchema<{
306
+ readonly kind: v.PicklistSchema<["preflight", "dispatch", "evicted", "timeout", "agent", "job_failed", "rejected", "companion_rejected", "cancelled", "unknown"], undefined>;
307
+ readonly message: v.StringSchema<undefined>;
308
+ readonly detail: v.NullableSchema<v.StringSchema<undefined>, undefined>;
309
+ readonly hint: v.NullableSchema<v.StringSchema<undefined>, undefined>;
310
+ readonly occurredAt: v.NumberSchema<undefined>;
311
+ readonly lastSubtasks: v.NullableSchema<v.ObjectSchema<{
312
+ readonly completed: v.NumberSchema<undefined>;
313
+ readonly inProgress: v.NumberSchema<undefined>;
314
+ readonly total: v.NumberSchema<undefined>;
315
+ readonly items: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
316
+ readonly label: v.StringSchema<undefined>;
317
+ readonly status: v.PicklistSchema<["pending", "in_progress", "completed"], undefined>;
318
+ }, undefined>, undefined>, undefined>;
319
+ }, undefined>, undefined>;
320
+ }, undefined>, undefined>;
321
+ readonly createdAt: v.NumberSchema<undefined>;
322
+ readonly updatedAt: v.NumberSchema<undefined>;
323
+ }, undefined>, undefined>, undefined>;
324
+ /**
325
+ * The current spend-safeguard status. Attached by the worker (it depends on
326
+ * deployment-wide pricing/budget config), so it is optional on the wire.
327
+ */
328
+ readonly spend: v.OptionalSchema<v.ObjectSchema<{
329
+ readonly periodStart: v.NumberSchema<undefined>;
330
+ readonly inputTokens: v.NumberSchema<undefined>;
331
+ readonly outputTokens: v.NumberSchema<undefined>;
332
+ readonly costSpent: v.NumberSchema<undefined>;
333
+ readonly costLimit: v.NumberSchema<undefined>;
334
+ readonly currency: v.StringSchema<undefined>;
335
+ readonly exceeded: v.BooleanSchema<undefined>;
336
+ }, undefined>, undefined>;
337
+ /**
338
+ * Open human-actionable notifications for this workspace (PRs awaiting a merge
339
+ * decision, completed pipelines awaiting confirmation, CI that gave up). Carried
340
+ * in the snapshot so the board renders the inbox + badges on load. Attached by
341
+ * the worker, so optional on the wire.
342
+ */
343
+ readonly notifications: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
344
+ readonly id: v.StringSchema<undefined>;
345
+ readonly type: v.PicklistSchema<["merge_review", "pipeline_complete", "ci_failed", "test_failed", "requirement_review", "clarity_review", "release_regression", "decision_required"], undefined>;
346
+ readonly status: v.PicklistSchema<["open", "acted", "dismissed"], undefined>;
347
+ readonly severity: v.OptionalSchema<v.PicklistSchema<["normal", "urgent"], undefined>, undefined>;
348
+ readonly blockId: v.NullableSchema<v.StringSchema<undefined>, undefined>;
349
+ readonly executionId: v.NullableSchema<v.StringSchema<undefined>, undefined>;
350
+ readonly title: v.StringSchema<undefined>;
351
+ readonly body: v.StringSchema<undefined>;
352
+ readonly payload: v.OptionalSchema<v.NullableSchema<v.ObjectSchema<{
353
+ readonly assessment: v.OptionalSchema<v.ObjectSchema<{
354
+ readonly complexity: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 0, undefined>, v.MaxValueAction<number, 1, undefined>]>;
355
+ readonly risk: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 0, undefined>, v.MaxValueAction<number, 1, undefined>]>;
356
+ readonly impact: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 0, undefined>, v.MaxValueAction<number, 1, undefined>]>;
357
+ readonly rationale: v.StringSchema<undefined>;
358
+ }, undefined>, undefined>;
359
+ readonly prUrl: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
360
+ readonly pipelineName: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
361
+ readonly findingCount: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
362
+ readonly onCallAssessment: v.OptionalSchema<v.ObjectSchema<{
363
+ readonly culpritConfidence: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 0, undefined>, v.MaxValueAction<number, 1, undefined>]>;
364
+ readonly recommendation: v.PicklistSchema<["revert", "hold", "monitor"], undefined>;
365
+ readonly rationale: v.StringSchema<undefined>;
366
+ readonly evidence: v.OptionalSchema<v.ArraySchema<v.StringSchema<undefined>, undefined>, readonly []>;
367
+ }, undefined>, undefined>;
368
+ readonly releaseSignals: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
369
+ readonly kind: v.PicklistSchema<["monitor", "slo"], undefined>;
370
+ readonly id: v.StringSchema<undefined>;
371
+ readonly name: v.StringSchema<undefined>;
372
+ readonly state: v.PicklistSchema<["ok", "warn", "alert", "no_data"], undefined>;
373
+ readonly detail: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
374
+ }, undefined>, undefined>, undefined>;
375
+ readonly revertUrl: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
376
+ readonly targetUserId: v.OptionalSchema<v.NullableSchema<v.StringSchema<undefined>, undefined>, undefined>;
377
+ }, undefined>, undefined>, undefined>;
378
+ readonly createdAt: v.NumberSchema<undefined>;
379
+ readonly resolvedAt: v.NullableSchema<v.NumberSchema<undefined>, undefined>;
380
+ }, undefined>, undefined>, undefined>;
381
+ /**
382
+ * The workspace's merge threshold presets (the library a task picks its
383
+ * auto-merge policy from). Attached by the worker, so optional on the wire.
384
+ */
385
+ readonly mergePresets: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
386
+ readonly id: v.StringSchema<undefined>;
387
+ readonly name: v.StringSchema<undefined>;
388
+ readonly maxComplexity: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 0, undefined>, v.MaxValueAction<number, 1, undefined>]>;
389
+ readonly maxRisk: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 0, undefined>, v.MaxValueAction<number, 1, undefined>]>;
390
+ readonly maxImpact: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 0, undefined>, v.MaxValueAction<number, 1, undefined>]>;
391
+ readonly ciMaxAttempts: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 0, undefined>]>;
392
+ readonly maxRequirementIterations: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 1, undefined>]>;
393
+ readonly maxRequirementConcernAllowed: v.PicklistSchema<["none", "low", "medium", "high"], undefined>;
394
+ readonly releaseWatchWindowMinutes: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 1, undefined>]>;
395
+ readonly releaseMaxAttempts: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 0, undefined>]>;
396
+ readonly isDefault: v.BooleanSchema<undefined>;
397
+ readonly createdAt: v.NumberSchema<undefined>;
398
+ }, undefined>, undefined>, undefined>;
399
+ /**
400
+ * The catalog of agent config-contribution descriptors (the task-level parameters
401
+ * the registered agent kinds surface, e.g. the Tester's environment). The board
402
+ * renders the subset whose owning kind appears in a task's selected pipeline.
403
+ * Static metadata derived from the agent registry; attached by the facade, so
404
+ * optional on the wire.
405
+ */
406
+ readonly agentConfigCatalog: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
407
+ readonly id: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
408
+ readonly agentKind: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
409
+ readonly label: v.StringSchema<undefined>;
410
+ readonly description: v.StringSchema<undefined>;
411
+ readonly type: v.PicklistSchema<["select"], undefined>;
412
+ readonly options: v.ArraySchema<v.ObjectSchema<{
413
+ readonly value: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
414
+ readonly label: v.StringSchema<undefined>;
415
+ }, undefined>, undefined>;
416
+ readonly default: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
417
+ }, undefined>, undefined>, undefined>;
418
+ /**
419
+ * The workspace's per-agent-kind default models (the model each agent kind
420
+ * defaults to, overriding the env routing for this workspace). Attached by the
421
+ * worker, so optional on the wire.
422
+ */
423
+ readonly modelDefaults: v.OptionalSchema<v.ObjectSchema<{
424
+ readonly defaults: v.RecordSchema<v.StringSchema<undefined>, v.StringSchema<undefined>, undefined>;
425
+ }, undefined>, undefined>;
426
+ /**
427
+ * The deployment's env-routing defaults as `provider:model` refs: the model an
428
+ * agent kind runs on when neither the task nor the workspace pins one. `default`
429
+ * is the global fallback; `byKind` carries the kinds an operator routed
430
+ * specifically (e.g. a strong coding model for the coder). The frontend resolves
431
+ * a kind's deployment default as `byKind[kind] ?? default` and labels it so the
432
+ * model-defaults panel can name the model behind "Deployment default". Derived
433
+ * from shared config, attached by the facade, so optional on the wire.
434
+ */
435
+ readonly deploymentModelDefaults: v.OptionalSchema<v.ObjectSchema<{
436
+ readonly default: v.StringSchema<undefined>;
437
+ readonly byKind: v.RecordSchema<v.StringSchema<undefined>, v.StringSchema<undefined>, undefined>;
438
+ }, undefined>, undefined>;
439
+ /**
440
+ * The workspace's default service-fragment selection (the best-practice fragment ids
441
+ * new services inherit). Attached by the facade, so optional on the wire.
442
+ */
443
+ readonly serviceFragmentDefaults: v.OptionalSchema<v.ObjectSchema<{
444
+ readonly fragmentIds: v.ArraySchema<v.StringSchema<undefined>, undefined>;
445
+ }, undefined>, undefined>;
446
+ /**
447
+ * The workspace's recurring pipelines (schedules that re-run a pipeline against
448
+ * a service on a cadence). Carried in the snapshot so the board renders the
449
+ * recurring-task badges + inspector on load. Run history is fetched lazily.
450
+ */
451
+ readonly recurringPipelines: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
452
+ readonly id: v.StringSchema<undefined>;
453
+ readonly serviceId: v.NullableSchema<v.StringSchema<undefined>, undefined>;
454
+ readonly blockId: v.StringSchema<undefined>;
455
+ readonly frameId: v.StringSchema<undefined>;
456
+ readonly pipelineId: v.StringSchema<undefined>;
457
+ readonly template: v.PicklistSchema<["dep-update", "tech-debt", "custom"], undefined>;
458
+ readonly name: v.StringSchema<undefined>;
459
+ readonly recurrence: v.ObjectSchema<{
460
+ readonly intervalHours: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 1, undefined>, v.MaxValueAction<number, number, undefined>]>;
461
+ readonly weekdays: v.ArraySchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 0, undefined>, v.MaxValueAction<number, 6, undefined>]>, undefined>;
462
+ readonly windowStartHour: v.NullableSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 0, undefined>, v.MaxValueAction<number, 23, undefined>]>, undefined>;
463
+ readonly windowEndHour: v.NullableSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 0, undefined>, v.MaxValueAction<number, 23, undefined>]>, undefined>;
464
+ readonly timezone: v.StringSchema<undefined>;
465
+ }, undefined>;
466
+ readonly enabled: v.BooleanSchema<undefined>;
467
+ readonly lastRunAt: v.NullableSchema<v.NumberSchema<undefined>, undefined>;
468
+ readonly nextRunAt: v.NumberSchema<undefined>;
469
+ readonly createdAt: v.NumberSchema<undefined>;
470
+ }, undefined>, undefined>, undefined>;
471
+ /**
472
+ * The workspace's issue-tracker selection (where the tech-debt pipeline files
473
+ * its ticket). Attached by the worker, so optional on the wire.
474
+ */
475
+ readonly trackerSettings: v.OptionalSchema<v.ObjectSchema<{
476
+ readonly tracker: v.NullableSchema<v.PicklistSchema<["github", "jira"], undefined>, undefined>;
477
+ readonly jiraProjectKey: v.NullableSchema<v.StringSchema<undefined>, undefined>;
478
+ readonly updatedAt: v.NumberSchema<undefined>;
479
+ }, undefined>, undefined>;
480
+ /**
481
+ * In-org shared services. `mounts` are the services this workspace mounts (with the
482
+ * per-workspace frame layout); `serviceCatalog` is the org's services the board can
483
+ * mount from (each annotated with `mountCount` so the UI can badge a shared frame).
484
+ * Attached by the worker when the services module is wired, so optional on the wire.
485
+ */
486
+ readonly mounts: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
487
+ readonly workspaceId: v.StringSchema<undefined>;
488
+ readonly serviceId: v.StringSchema<undefined>;
489
+ readonly position: v.ObjectSchema<{
490
+ readonly x: v.NumberSchema<undefined>;
491
+ readonly y: v.NumberSchema<undefined>;
492
+ }, undefined>;
493
+ readonly size: v.OptionalSchema<v.NullableSchema<v.ObjectSchema<{
494
+ readonly w: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 1, undefined>]>;
495
+ readonly h: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 1, undefined>]>;
496
+ }, undefined>, undefined>, undefined>;
497
+ readonly createdAt: v.NumberSchema<undefined>;
498
+ }, undefined>, undefined>, undefined>;
499
+ readonly serviceCatalog: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
500
+ readonly id: v.StringSchema<undefined>;
501
+ readonly accountId: v.NullableSchema<v.StringSchema<undefined>, undefined>;
502
+ readonly frameBlockId: v.StringSchema<undefined>;
503
+ readonly installationId: v.NullableSchema<v.NumberSchema<undefined>, undefined>;
504
+ readonly repoGithubId: v.NullableSchema<v.NumberSchema<undefined>, undefined>;
505
+ readonly directory: v.OptionalSchema<v.NullableSchema<v.StringSchema<undefined>, undefined>, undefined>;
506
+ readonly createdAt: v.NumberSchema<undefined>;
507
+ readonly mountCount: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
508
+ }, undefined>, undefined>, undefined>;
509
+ /**
510
+ * The workspace's runtime settings (the human-wait escalation threshold + the
511
+ * per-service running-task limit policy). Lazily seeded from the defaults; attached
512
+ * by the facade, so optional on the wire.
513
+ */
514
+ readonly settings: v.OptionalSchema<v.ObjectSchema<{
515
+ readonly waitingEscalationMinutes: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 1, undefined>, v.MaxValueAction<number, 100000, undefined>]>;
516
+ readonly taskLimitMode: v.PicklistSchema<["off", "shared", "per_type"], undefined>;
517
+ readonly taskLimitShared: v.NullableSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 1, undefined>, v.MaxValueAction<number, 1000, undefined>]>, undefined>;
518
+ readonly taskLimitPerType: v.NullableSchema<v.RecordSchema<v.PicklistSchema<["feature", "bug", "document", "spike"], undefined>, v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 1, undefined>, v.MaxValueAction<number, 1000, undefined>]>, undefined>, undefined>;
519
+ }, undefined>, undefined>;
520
+ }, undefined>;
521
+ export type WorkspaceSnapshot = v.InferOutput<typeof workspaceSnapshotSchema>;
522
+ //# sourceMappingURL=snapshot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snapshot.d.ts","sourceRoot":"","sources":["../src/snapshot.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAwB5B,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAKlC;;;;;OAKG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAEH;;;OAGG;;;;;;;;;;IAEH;;;;;OAKG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAEH;;;OAGG;;;;;;;;;;;;;;;IAEH;;;;;;OAMG;;;;;;;;;;;;;IAEH;;;;OAIG;;;;IAEH;;;;;;;;OAQG;;;;;IAOH;;;OAGG;;;;IAEH;;;;OAIG;;;;;;;;;;;;;;;;;;;;;IAEH;;;OAGG;;;;;;IAEH;;;;;OAKG;;;;;;;;;;;;;;;;;;;;;;;;IAGH;;;;OAIG;;;;;;;aAEH,CAAA;AACF,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,uBAAuB,CAAC,CAAA"}