@wildo-ai/platform-core-shared 1.1.3 → 1.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. package/dist/esm/index.d.ts +2 -1
  2. package/dist/esm/index.d.ts.map +1 -1
  3. package/dist/esm/index.js +2 -1
  4. package/dist/esm/index.js.map +1 -1
  5. package/dist/esm/runtime/application-backend-env.contracts.d.ts +28 -2
  6. package/dist/esm/runtime/application-backend-env.contracts.d.ts.map +1 -1
  7. package/dist/esm/runtime/application-backend-env.contracts.js +27 -1
  8. package/dist/esm/runtime/application-backend-env.contracts.js.map +1 -1
  9. package/dist/esm/wildo-application-executions/wildo-application-executions.custom.shared.resources-config.schemas.d.ts +60 -66
  10. package/dist/esm/wildo-application-executions/wildo-application-executions.custom.shared.resources-config.schemas.d.ts.map +1 -1
  11. package/dist/esm/wildo-application-executions/wildo-application-executions.custom.shared.schemas.d.ts +60 -66
  12. package/dist/esm/wildo-application-executions/wildo-application-executions.custom.shared.schemas.d.ts.map +1 -1
  13. package/dist/esm/wildo-application-executions/wildo-application-executions.custom.shared.schemas.js +2 -2
  14. package/dist/esm/wildo-application-executions/wildo-application-executions.custom.shared.schemas.js.map +1 -1
  15. package/dist/esm/wildo-application-tasks/wildo-application-tasks.custom.shared.resources-config.schemas.d.ts +6 -10
  16. package/dist/esm/wildo-application-tasks/wildo-application-tasks.custom.shared.resources-config.schemas.d.ts.map +1 -1
  17. package/dist/esm/wildo-application-tasks/wildo-application-tasks.custom.shared.schemas.d.ts +6 -10
  18. package/dist/esm/wildo-application-tasks/wildo-application-tasks.custom.shared.schemas.d.ts.map +1 -1
  19. package/dist/esm/wildo-application-tasks/wildo-application-tasks.custom.shared.schemas.js +26 -28
  20. package/dist/esm/wildo-application-tasks/wildo-application-tasks.custom.shared.schemas.js.map +1 -1
  21. package/dist/esm/wildo-applications/wildo-applications.custom.shared.schemas.d.ts +27 -0
  22. package/dist/esm/wildo-applications/wildo-applications.custom.shared.schemas.d.ts.map +1 -1
  23. package/dist/esm/wildo-applications/wildo-applications.custom.shared.schemas.js +56 -0
  24. package/dist/esm/wildo-applications/wildo-applications.custom.shared.schemas.js.map +1 -1
  25. package/dist/esm/workbench/workbench-aspect-resources.custom.shared.schemas.d.ts +13 -0
  26. package/dist/esm/workbench/workbench-aspect-resources.custom.shared.schemas.d.ts.map +1 -1
  27. package/dist/esm/workbench/workbench-aspect-resources.custom.shared.schemas.js +418 -1
  28. package/dist/esm/workbench/workbench-aspect-resources.custom.shared.schemas.js.map +1 -1
  29. package/dist/esm/workbench/workbench-creation-board.custom.shared.schemas.d.ts +0 -98
  30. package/dist/esm/workbench/workbench-creation-board.custom.shared.schemas.d.ts.map +0 -1
  31. package/dist/esm/workbench/workbench-creation-board.custom.shared.schemas.js.map +0 -1
  32. package/dist/esm/workbench/workbench-creation-conversation.custom.shared.schemas.d.ts +103 -0
  33. package/dist/esm/workbench/workbench-creation-conversation.custom.shared.schemas.d.ts.map +1 -0
  34. package/dist/esm/workbench/workbench-creation-conversation.custom.shared.schemas.js +99 -0
  35. package/dist/esm/workbench/workbench-creation-conversation.custom.shared.schemas.js.map +1 -0
  36. package/dist/esm/workbench/workbench-creation-dossier.custom.shared.schemas.d.ts +49 -0
  37. package/dist/esm/workbench/workbench-creation-dossier.custom.shared.schemas.d.ts.map +1 -0
  38. package/dist/esm/workbench/workbench-creation-dossier.custom.shared.schemas.js +42 -0
  39. package/dist/esm/workbench/workbench-creation-dossier.custom.shared.schemas.js.map +1 -0
  40. package/dist/esm/workbench/workbench-creation-plane.custom.shared.resources-config.schemas.d.ts +378 -11
  41. package/dist/esm/workbench/workbench-creation-plane.custom.shared.resources-config.schemas.d.ts.map +1 -1
  42. package/dist/esm/workbench/workbench-creation-plane.custom.shared.resources-config.schemas.js +426 -5
  43. package/dist/esm/workbench/workbench-creation-plane.custom.shared.resources-config.schemas.js.map +1 -1
  44. package/dist/esm/workbench/workbench-creation-plane.custom.shared.schemas.d.ts +882 -9
  45. package/dist/esm/workbench/workbench-creation-plane.custom.shared.schemas.d.ts.map +1 -1
  46. package/dist/esm/workbench/workbench-creation-plane.custom.shared.schemas.js +1154 -14
  47. package/dist/esm/workbench/workbench-creation-plane.custom.shared.schemas.js.map +1 -1
  48. package/dist/esm/workbench/workbench-resources-types.custom.shared.schemas.d.ts +117 -1
  49. package/dist/esm/workbench/workbench-resources-types.custom.shared.schemas.d.ts.map +1 -1
  50. package/dist/esm/workbench/workbench-resources-types.custom.shared.schemas.js +160 -0
  51. package/dist/esm/workbench/workbench-resources-types.custom.shared.schemas.js.map +1 -1
  52. package/dist/esm/workbench/workbench-resources.custom.shared.resources-config.schemas.d.ts +184 -7
  53. package/dist/esm/workbench/workbench-resources.custom.shared.resources-config.schemas.d.ts.map +1 -1
  54. package/dist/esm/workbench/workbench-resources.custom.shared.resources-config.schemas.js +1 -1
  55. package/dist/esm/workbench/workbench-resources.custom.shared.resources-config.schemas.js.map +1 -1
  56. package/dist/esm/workbench/workbench-resources.custom.shared.schemas.d.ts +2 -1
  57. package/dist/esm/workbench/workbench-resources.custom.shared.schemas.d.ts.map +1 -1
  58. package/dist/esm/workbench/workbench-resources.custom.shared.schemas.js +10 -5
  59. package/dist/esm/workbench/workbench-resources.custom.shared.schemas.js.map +1 -1
  60. package/dist/tsconfig.build.tsbuildinfo +1 -1
  61. package/package.json +4 -13
  62. package/dist/esm/workbench/workbench-creation-board.custom.shared.schemas.js +0 -86
@@ -1,3 +1,4 @@
1
+ import { MetaWorkflow_EvaluationVerdict } from '@wildo-ai/saas-models/meta-workflows';
1
2
  import { z } from 'zod';
2
3
  /**
3
4
  * The CREATION PLANE's shared vocabulary — schemas for the four companion-runtime resource
@@ -40,7 +41,25 @@ export declare enum WorkbenchCreationPlaneBehavior {
40
41
  /** The write register's records, pre-image bytes stripped. */
41
42
  RUN_WRITE_RECORDS = "creation-plane.run-write-records",
42
43
  /** The execution-trace session index. */
43
- TRACE_SESSIONS = "creation-plane.trace-sessions"
44
+ TRACE_SESSIONS = "creation-plane.trace-sessions",
45
+ /** The governance questionnaires' unanswered prompts, flattened one row per question. */
46
+ GOVERNANCE_DOCUMENTS = "creation-plane.governance-documents",
47
+ GOVERNANCE_QUESTIONS = "creation-plane.governance-questions",
48
+ /** The build lane's dispatch history, one row per attempt. */
49
+ BUILD_DISPATCH_PLAN = "creation-plane.build-dispatch-plan",
50
+ BUILD_DISPATCHES = "creation-plane.build-dispatches",
51
+ /** The playbook runs suspended waiting on a person. */
52
+ PLAYBOOK_RUNS = "creation-plane.playbook-runs",
53
+ WAITING_PLAYBOOK_RUNS = "creation-plane.waiting-playbook-runs",
54
+ /** The coding runs parked on a question. */
55
+ CODING_LANE_STATUS = "creation-plane.coding-lane-status",
56
+ PARKED_CODING_QUESTIONS = "creation-plane.parked-coding-questions",
57
+ /** The dossier: every declared interview question × the creator's answer from `creator-inputs`. */
58
+ DOSSIER_ENTRIES = "creation-plane.dossier-entries",
59
+ /** HOME's lines (#1454): what happened, what is asked of the creator, what they could do next — one derivation. */
60
+ HOME_LINES = "creation-plane.home-lines",
61
+ /** The four creation OUTCOMES with their standing, derived from the landed families and the build plan. */
62
+ CREATION_OUTCOMES = "creation-plane.creation-outcomes"
44
63
  }
45
64
  /** Membership test the companion's source routes by. */
46
65
  export declare const WORKBENCH_CREATION_PLANE_BEHAVIOR_IDS: readonly string[];
@@ -57,6 +76,37 @@ export declare const WORKBENCH_CREATION_PLANE_BEHAVIOR_IDS: readonly string[];
57
76
  * two rows under one id, and why server-side lookups match sanitized forms instead of reversing.
58
77
  */
59
78
  export declare function sanitizeWorkbenchCreationPlaneIdentity(value: string): string;
79
+ /**
80
+ * The creation plane's CORRELATION VOCABULARY on the engine's actor task — the one named source for
81
+ * the `context.correlation` envelope's domain and ref keys (#1348, #1330).
82
+ *
83
+ * The engine owns the envelope and validates only that keys and values are non-empty strings; this
84
+ * domain owns the keys. Both ends read them: the companion's coding-agent dispatch WRITES the
85
+ * envelope when it admits a run for a build-plan task, and the workbench READS it to draw the run's
86
+ * build-plan task as a resolved link. Two spellings of one key would be a join that silently stops
87
+ * matching, so neither end spells it.
88
+ *
89
+ * The value under {@link WorkbenchTaskCorrelationRef.BUILD_PLAN_TASK} is the build-plan ROW's
90
+ * identity — `sanitizeWorkbenchCreationPlaneIdentity(taskRef)` — so a reader holding the envelope
91
+ * addresses the row with no lookup.
92
+ */
93
+ export declare const WORKBENCH_TASK_CORRELATION_DOMAIN = "application-creation";
94
+ export declare enum WorkbenchTaskCorrelationRef {
95
+ /** The `workbenchBuildPlanTaskId` of the build-plan task this coding run was dispatched for. */
96
+ BUILD_PLAN_TASK = "buildPlanTaskRef",
97
+ /**
98
+ * The creation CONVERSATION (the engine conversational execution's `executionId`) a run was
99
+ * started from, when it was (#1454). The conversation page joins a thread to its runs on this
100
+ * key; a run started from the board or the CLI carries none.
101
+ */
102
+ CONVERSATION = "conversationId"
103
+ }
104
+ /**
105
+ * The build-plan row a task's correlation envelope names, or `undefined` when the task was not
106
+ * dispatched for one — a task with no build-plan task is the normal case for anything the creation
107
+ * plane did not admit, and it must read as ABSENT rather than as loading.
108
+ */
109
+ export declare function readBuildPlanTaskCorrelation(context: unknown): string | undefined;
60
110
  /**
61
111
  * The dispatch status of one build-plan task — computed, never stored.
62
112
  *
@@ -69,6 +119,84 @@ export declare enum WorkbenchBuildPlanTaskStatus {
69
119
  LANDED = "landed",
70
120
  BLOCKED = "blocked"
71
121
  }
122
+ /**
123
+ * Why a READY build-plan task cannot make progress, so dispatch passes over it.
124
+ *
125
+ * Each member carries a DIFFERENT remedy, and the remedy is the only thing the operator gets. The
126
+ * companion's dispatch service is the only producer; the workbench board renders it. Declared here
127
+ * rather than beside the producer for the reason `Workbench_BuildDispatchPhase` gives: a browser
128
+ * bundle cannot import the companion, and re-spelling the members board-side would be a second
129
+ * source (#1451).
130
+ *
131
+ * None of them refuses the queue. A stuck task is skipped so every unrelated branch proceeds, and a
132
+ * dispatch refuses only when NOTHING ready can move. The READ door never refuses: it answers with the
133
+ * stuck tasks, because "nothing can run, and here is why" is an answer.
134
+ */
135
+ export declare enum Workbench_BuildTaskStuckReason {
136
+ /** It already ran, and its declared product is absent even from the working tree: fix the declaration or the work. */
137
+ COMPLETED_UNLANDED = "completed_unlanded",
138
+ /**
139
+ * It already ran, and its declared product IS in the working tree but not committed. Landing means
140
+ * committed because acceptance is a commit.
141
+ *
142
+ * Under GUIDED that is the whole story, and the remedy is to review and commit what the run wrote.
143
+ * Under the autonomy posture the loop has ALREADY tried to commit it (#1534), so reaching this state
144
+ * means its accept REFUSED a path — carried changes from before the run, edited since, or not this
145
+ * run's — and the companion's warning names which. The remedy is that refusal's, not a blind commit.
146
+ */
147
+ COMPLETED_AWAITING_COMMIT = "completed_awaiting_commit",
148
+ /** Its run suspended on a question nobody has answered; re-dispatching would abandon that session. */
149
+ PARKED_AWAITING_ANSWER = "parked_awaiting_answer",
150
+ /** It produces a governed document the engine catalog does not define, so no run can author it. */
151
+ NO_DOCUMENT_BLUEPRINT = "no_document_blueprint",
152
+ /**
153
+ * Its coding runs FAILED as many times as the attempt budget allows (#1536), so another identical
154
+ * dispatch is not offered. Only failures the task caused count: a run failing on a check that was
155
+ * already red completes instead (`carriedVerificationFailures`), so this cannot be reached on the
156
+ * tree's account. Read the last failure, fix its cause, and re-arm the task.
157
+ */
158
+ ATTEMPTS_EXHAUSTED = "attempts_exhausted",
159
+ /**
160
+ * A run of it is LIVE right now — selected, admitted or running (#1528). Under a parallel build
161
+ * wave several tasks run at once, and the next selection must pass over one already being built,
162
+ * or two agents would build the same task. Nobody's move: it clears when that run settles.
163
+ */
164
+ IN_FLIGHT = "in_flight"
165
+ }
166
+ /**
167
+ * How far one BUILD DISPATCH got — the whole of what `GET /build/dispatches` can honestly say.
168
+ *
169
+ * ## Why it lives in the SHARED package rather than beside the service that sets it
170
+ *
171
+ * Both ends of this vocabulary are real consumers. The companion's dispatch service is the only
172
+ * PRODUCER — since #1359 by PROJECTION: every dispatch is an actor-system execution from the moment
173
+ * its task is selected, and the phase is a pure function of that execution's row
174
+ * (`projectBuildDispatchPhase`), not a record the companion keeps. Until then it was an in-memory
175
+ * list of five that a companion restart emptied. The workbench's build lane reads it to decide
176
+ * whether a dispatch reads as working, done or broken, and a browser bundle cannot import the
177
+ * companion. Declared companion-side, the board
178
+ * would have had to re-spell the four members — the second-source defect the creation board's own
179
+ * client docstring refuses by name. So it is declared ONCE here, where the workbench vocabulary
180
+ * already lives and which the companion already imports.
181
+ *
182
+ * ## The two executors resolve at DIFFERENT moments, and that is the whole reason for four members
183
+ *
184
+ * A companion generation step's dispatch resolves when the step has FINISHED. A coding task's
185
+ * resolves when the run is ADMITTED, with the agent still working — its outcome is the durable
186
+ * actor-task row the record names. Measured 2026-09-13 on Wonder CRM: the record said `ok: true`
187
+ * for `build-task-company-schema` at the instant its run started, and the route told the caller to
188
+ * poll that record "for the outcome", so a script following it read an admitted run as a success.
189
+ */
190
+ export declare enum Workbench_BuildDispatchPhase {
191
+ /** Selected and handed to its executor; nothing has resolved yet. */
192
+ SUBMITTED = "submitted",
193
+ /** A coding run was admitted and is running. Its outcome is the durable actor-task row `codingTaskId`. */
194
+ ADMITTED = "admitted",
195
+ /** A companion generation step ran to completion. */
196
+ FINISHED = "finished",
197
+ /** The dispatch threw — before a coding run was admitted, or while a generation step ran. */
198
+ FAILED = "failed"
199
+ }
72
200
  /**
73
201
  * One playbook's row on the eligibility board.
74
202
  *
@@ -87,13 +215,19 @@ export declare const Workbench_Playbook_Schema: z.ZodObject<{
87
215
  unmet: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodArray<z.ZodString>>;
88
216
  blockedOnlyBySequencing: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodBoolean>;
89
217
  requiresElicitation: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodBoolean>;
218
+ unansweredQuestionRefs: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodArray<z.ZodString>>;
90
219
  wouldReplace: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodArray<z.ZodString>>;
220
+ outputOwners: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodArray<z.ZodObject<{
221
+ family: z.ZodString;
222
+ playbookRefs: z.ZodArray<z.ZodString>;
223
+ }, z.core.$strip>>>;
224
+ unresolvedPlaybookRefs: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodArray<z.ZodString>>;
91
225
  unlandableFamilies: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodArray<z.ZodString>>;
92
226
  staleOutputs: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodArray<z.ZodObject<{
93
227
  family: z.ZodString;
94
228
  changedInputs: z.ZodArray<z.ZodString>;
95
229
  }, z.core.$strip>>>;
96
- computedAt: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>;
230
+ computedAt: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodDate>;
97
231
  }, z.core.$strip>;
98
232
  export type Workbench_Playbook = z.infer<typeof Workbench_Playbook_Schema>;
99
233
  /**
@@ -110,7 +244,7 @@ export declare const Workbench_BuildPlanTask_Schema: z.ZodObject<{
110
244
  objective: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>;
111
245
  targetKind: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>;
112
246
  functionalTopic: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>;
113
- status: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodEnum<typeof WorkbenchBuildPlanTaskStatus>>;
247
+ status: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodEnum<typeof WorkbenchBuildPlanTaskStatus>>>;
114
248
  prerequisiteTaskRefs: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodArray<z.ZodString>>;
115
249
  }, z.core.$strip>;
116
250
  export type Workbench_BuildPlanTask = z.infer<typeof Workbench_BuildPlanTask_Schema>;
@@ -127,30 +261,112 @@ export declare const Workbench_RunWriteRecord_Schema: z.ZodObject<{
127
261
  playbookRef: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>;
128
262
  workbenchPlaybookId: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>>;
129
263
  workbenchTraceSessionId: z.ZodNullable<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>>>;
130
- at: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>;
264
+ at: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodDate>;
131
265
  files: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodArray<z.ZodObject<{
132
266
  path: z.ZodString;
133
267
  existedBefore: z.ZodBoolean;
134
268
  }, z.core.$strip>>>;
135
269
  fileCount: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodNumber>;
270
+ acceptedCommitSha: z.ZodNullable<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>>;
136
271
  }, z.core.$strip>;
137
272
  export type Workbench_RunWriteRecord = z.infer<typeof Workbench_RunWriteRecord_Schema>;
138
273
  /** One execution-trace session — the queryable index the board links from. */
139
274
  export declare const Workbench_TraceSession_Schema: z.ZodObject<{
140
275
  workbenchTraceSessionId: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>>;
141
276
  sessionId: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>;
142
- startedAt: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>;
277
+ startedAt: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodDate>;
143
278
  label: z.ZodNullable<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>>;
144
279
  eventCount: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodNumber>;
145
280
  stepCount: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodNumber>;
146
281
  }, z.core.$strip>;
147
282
  export type Workbench_TraceSession = z.infer<typeof Workbench_TraceSession_Schema>;
283
+ /**
284
+ * One governance QUESTION a creator still owes an answer to.
285
+ *
286
+ * ## Why one row per question rather than per questionnaire
287
+ *
288
+ * The companion answers questionnaires — a document definition and the prompts it asks. The thing a
289
+ * creator ACTS on is one question, and the thing a board queues is one question, so the row is the
290
+ * question and the document it belongs to travels on it. That is the same flattening
291
+ * `Workbench_RunWriteRecord` does to a run's files, and for the same reason: a resource's row is
292
+ * whatever a reader selects.
293
+ *
294
+ * ## What it deliberately does NOT carry
295
+ *
296
+ * The ANSWER. Landing answers is a dispatch against the `document-facts-authored` family and goes
297
+ * through the companion's own service; a row here is the question as asked. Giving the row an answer
298
+ * field would make this the second place an answer lives, which is the ledger
299
+ * `one-source-of-truth.md` rule 5 refuses.
300
+ */
301
+ /**
302
+ * One GOVERNED DOCUMENT whose questionnaire a person must answer — the document half of governance.
303
+ *
304
+ * ## Why this is its own resource rather than fields on the question row
305
+ *
306
+ * `derivedFactRefs` and the ask count are facts about the DOCUMENT, not about any one question, and
307
+ * a document-level fact repeated on every question row is a value with no owner: nothing says which
308
+ * copy is authoritative, and eight rows of one document can disagree.
309
+ *
310
+ * It is also what the board's document selector is a list OF. Before this it grouped question rows
311
+ * by `definitionRef` and had nowhere to read the derived facts from — so a panel showing only the
312
+ * human half presented four questions for a document declaring eight, and a reader had no way to
313
+ * tell a short questionnaire from a broken one.
314
+ */
315
+ /**
316
+ * Where a dossier entry STANDS — the two states a question a playbook asks can be in from the
317
+ * creator's side (#1454). "Read from the product" (a typed config key) is a third source the
318
+ * dossier gains with the governed-document join (Step 6); it is not a standing of an interview
319
+ * question, so it is not here.
320
+ */
321
+ export declare enum WorkbenchDossierEntryStanding {
322
+ /** The creator answered; the value is in the committed dossier. */
323
+ FROM_YOU = "from-you",
324
+ /** The playbook asks it and nobody has answered. */
325
+ STILL_NEEDED = "still-needed"
326
+ }
327
+ export declare const Workbench_GovernanceDocument_Schema: z.ZodObject<{
328
+ workbenchGovernanceDocumentId: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>>;
329
+ definitionRef: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>;
330
+ askCount: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodNumber>;
331
+ derivedFactRefs: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodArray<z.ZodString>>;
332
+ openCount: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodNumber>;
333
+ drafted: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodBoolean>;
334
+ }, z.core.$strip>;
335
+ export type Workbench_GovernanceDocument = z.infer<typeof Workbench_GovernanceDocument_Schema>;
336
+ export declare const Workbench_GovernanceQuestion_Schema: z.ZodObject<{
337
+ workbenchGovernanceQuestionId: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>>;
338
+ definitionRef: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>;
339
+ questionRef: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>;
340
+ factRef: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>;
341
+ creatorPrompt: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>;
342
+ decisionPurpose: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>;
343
+ answerKind: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>;
344
+ factAuthorityKind: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>;
345
+ allowsNotApplicable: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodBoolean>;
346
+ sensitivityRef: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>;
347
+ semanticOptions: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodArray<z.ZodObject<{
348
+ optionRef: z.ZodString;
349
+ creatorMeaning: z.ZodString;
350
+ }, z.core.$strip>>>;
351
+ standing: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodEnum<typeof WorkbenchDossierEntryStanding>>>;
352
+ answerSummary: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodNullable<z.ZodString>>;
353
+ answeredAt: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodNullable<z.ZodDate>>;
354
+ askedNow: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodBoolean>;
355
+ }, z.core.$strip>;
356
+ export type Workbench_GovernanceQuestion = z.infer<typeof Workbench_GovernanceQuestion_Schema>;
148
357
  /** The playbook resource's dispatch verbs. */
149
358
  export declare enum WorkbenchPlaybooks_Operations {
150
359
  /** Fire one playbook run (the row is the playbook; the body carries brief/answers/dryRun). */
151
360
  RUN = "run",
152
361
  /** Answer a run that stopped at a clarification — accept with answers, decline, or cancel. */
153
- RESUME = "resume_run"
362
+ RESUME = "resume_run",
363
+ /**
364
+ * The interview this playbook declares, as a decision payload — `null` when it asks nothing. Read
365
+ * ON DEMAND, at the moment somebody chooses to run it, and deliberately not a field of the row: one
366
+ * playbook alone declares fifteen questions, so carrying them on every row would pay for all of
367
+ * them on every poll in order to show none of them.
368
+ */
369
+ READ_INTERVIEW = "read_interview"
154
370
  }
155
371
  /** The build-plan resource's dispatch verb. */
156
372
  export declare enum WorkbenchBuildPlanTasks_Operations {
@@ -159,12 +375,46 @@ export declare enum WorkbenchBuildPlanTasks_Operations {
159
375
  * the order its author intended, and a per-row dispatch would be a second scheduler disagreeing
160
376
  * with the first (the dispatch service's own doctrine).
161
377
  */
162
- DISPATCH_NEXT = "dispatch_next"
378
+ DISPATCH_NEXT = "dispatch_next",
379
+ /**
380
+ * Append ONE task the creator asked for, beside the plan that exists (#1454, Step 7). Collection-
381
+ * level: the row does not exist until the append answers. Deterministic — no model runs; the
382
+ * companion validates the task against the plan's own graph rules and re-renders the plan file.
383
+ */
384
+ ADD_TASK = "add_task",
385
+ /**
386
+ * Run THIS task, by row. Admitted only when the task is READY — the graph still decides what may
387
+ * run, and this verb only lets the creator pick among the ready ones instead of taking the next.
388
+ * A non-ready task answers 409 naming what it waits on. Costs a coding run.
389
+ */
390
+ DISPATCH_TASK = "dispatch_task",
391
+ /**
392
+ * ACCEPT what this task's latest completed coding run wrote: commit exactly those paths, from the
393
+ * coding-run write register, in one commit whose message names the task. Paths carrying another
394
+ * lane's hunks (dirty at the run's baseline) and paths edited since the run are refused by name
395
+ * unless `force`. Acceptance is a commit (`one-source-of-truth.md`), and under the YOLO posture the
396
+ * system may make it on the creator's word — this verb IS that word.
397
+ */
398
+ ACCEPT = "accept"
163
399
  }
164
- /** The write-record resource's dispatch verb. */
400
+ /** The write-record resource's dispatch verbs. */
165
401
  export declare enum WorkbenchRunWriteRecords_Operations {
166
402
  /** Revert this run's writes. Files edited since are refused by name unless `force`. */
167
- REVERT = "revert_writes"
403
+ REVERT = "revert_writes",
404
+ /**
405
+ * ACCEPT this run's writes: commit exactly the register's paths. A file that no longer holds the
406
+ * bytes the run wrote is refused by name unless `force` — the same divergence test `revert` applies,
407
+ * because in both directions a human edit is never silently swept into the run's account.
408
+ */
409
+ ACCEPT = "accept",
410
+ /**
411
+ * WHAT this run changed, per file — read on demand, one run at a time (#1274). Deliberately not a
412
+ * field of the LIST row: pre-image bytes "belong to the revert mechanism, and a list row carrying
413
+ * every pre-image would ship the working tree's history through every LIST". Computed from the
414
+ * register's own pre/post content, never from `git diff`, so it is the RUN's change and not
415
+ * everything uncommitted at those paths.
416
+ */
417
+ READ_DIFF = "read_diff"
168
418
  }
169
419
  export declare const Workbench_PlaybookRunRequest_Schema: z.ZodObject<{
170
420
  creatorBrief: z.ZodOptional<z.ZodString>;
@@ -186,6 +436,31 @@ export declare const Workbench_PlaybookResumeRequest_Schema: z.ZodObject<{
186
436
  export type Workbench_PlaybookResumeRequest = z.infer<typeof Workbench_PlaybookResumeRequest_Schema>;
187
437
  export declare const Workbench_BuildPlanDispatchNextRequest_Schema: z.ZodObject<{}, z.core.$strip>;
188
438
  export type Workbench_BuildPlanDispatchNextRequest = z.infer<typeof Workbench_BuildPlanDispatchNextRequest_Schema>;
439
+ /**
440
+ * One task to append (#1454, Step 7). The `target` and `produces` shapes are owned by
441
+ * `@wildo-ai/saas-specifications` (`BuildPlanTaskSchema`), which this package deliberately does not
442
+ * depend on, so they cross here as records and the companion parses them against the real schema
443
+ * before anything is written. `taskRef` is derived from the objective when absent.
444
+ */
445
+ export declare const Workbench_BuildPlanAddTaskRequest_Schema: z.ZodObject<{
446
+ taskRef: z.ZodOptional<z.ZodString>;
447
+ objective: z.ZodString;
448
+ target: z.ZodRecord<z.ZodString, z.ZodUnknown>;
449
+ produces: z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
450
+ functionalTopic: z.ZodString;
451
+ skillRefs: z.ZodArray<z.ZodString>;
452
+ prerequisiteTaskRefs: z.ZodOptional<z.ZodArray<z.ZodString>>;
453
+ servesRefs: z.ZodOptional<z.ZodArray<z.ZodString>>;
454
+ }, z.core.$strip>;
455
+ export type Workbench_BuildPlanAddTaskRequest = z.infer<typeof Workbench_BuildPlanAddTaskRequest_Schema>;
456
+ export declare const Workbench_BuildPlanDispatchTaskRequest_Schema: z.ZodObject<{
457
+ conversationId: z.ZodOptional<z.ZodString>;
458
+ }, z.core.$strip>;
459
+ export type Workbench_BuildPlanDispatchTaskRequest = z.infer<typeof Workbench_BuildPlanDispatchTaskRequest_Schema>;
460
+ export declare const Workbench_AcceptChangesRequest_Schema: z.ZodObject<{
461
+ force: z.ZodOptional<z.ZodBoolean>;
462
+ }, z.core.$strip>;
463
+ export type Workbench_AcceptChangesRequest = z.infer<typeof Workbench_AcceptChangesRequest_Schema>;
189
464
  export declare const Workbench_RunWriteRevertRequest_Schema: z.ZodObject<{
190
465
  force: z.ZodOptional<z.ZodBoolean>;
191
466
  }, z.core.$strip>;
@@ -208,6 +483,31 @@ export declare const Workbench_BuildPlanDispatchOutcome_Schema: z.ZodObject<{
208
483
  note: z.ZodOptional<z.ZodString>;
209
484
  }, z.core.$loose>;
210
485
  export type Workbench_BuildPlanDispatchOutcome = z.infer<typeof Workbench_BuildPlanDispatchOutcome_Schema>;
486
+ export declare const Workbench_BuildPlanAddTaskOutcome_Schema: z.ZodObject<{
487
+ taskRef: z.ZodOptional<z.ZodString>;
488
+ /** TRUE when no plan existed and this task is its first. */
489
+ createdPlan: z.ZodOptional<z.ZodBoolean>;
490
+ /** Validator findings below the hard floor — worth telling the creator, never a refusal. */
491
+ advisoryFindings: z.ZodOptional<z.ZodArray<z.ZodObject<{
492
+ code: z.ZodString;
493
+ taskRef: z.ZodString;
494
+ message: z.ZodString;
495
+ }, z.core.$strip>>>;
496
+ note: z.ZodOptional<z.ZodString>;
497
+ }, z.core.$loose>;
498
+ export type Workbench_BuildPlanAddTaskOutcome = z.infer<typeof Workbench_BuildPlanAddTaskOutcome_Schema>;
499
+ /** How ACCEPT answers, for a task's coding run or a playbook run alike: what was committed, what was refused and why. */
500
+ export declare const Workbench_AcceptChangesOutcome_Schema: z.ZodObject<{
501
+ commitSha: z.ZodOptional<z.ZodString>;
502
+ committedPaths: z.ZodOptional<z.ZodArray<z.ZodString>>;
503
+ refusedPaths: z.ZodOptional<z.ZodArray<z.ZodObject<{
504
+ path: z.ZodString;
505
+ reason: z.ZodString;
506
+ }, z.core.$strip>>>;
507
+ message: z.ZodOptional<z.ZodString>;
508
+ note: z.ZodOptional<z.ZodString>;
509
+ }, z.core.$loose>;
510
+ export type Workbench_AcceptChangesOutcome = z.infer<typeof Workbench_AcceptChangesOutcome_Schema>;
211
511
  export declare const Workbench_RunWriteRevertOutcome_Schema: z.ZodObject<{
212
512
  runId: z.ZodOptional<z.ZodString>;
213
513
  reverted: z.ZodOptional<z.ZodArray<z.ZodString>>;
@@ -216,4 +516,577 @@ export declare const Workbench_RunWriteRevertOutcome_Schema: z.ZodObject<{
216
516
  note: z.ZodOptional<z.ZodString>;
217
517
  }, z.core.$loose>;
218
518
  export type Workbench_RunWriteRevertOutcome = z.infer<typeof Workbench_RunWriteRevertOutcome_Schema>;
519
+ /**
520
+ * One BUILD DISPATCH — an attempt to run one build-plan task.
521
+ *
522
+ * The lane's own history: what was selected, when, and how it ended. A task may be dispatched more
523
+ * than once (a failure is re-dispatchable), so the row is the ATTEMPT and `taskRef` is what groups
524
+ * them — the same relationship a run write record has to its playbook.
525
+ */
526
+ /**
527
+ * The NEXT build task — what a dispatch would do, with nothing started. At most one row.
528
+ *
529
+ * ## Why a proposal is a row
530
+ *
531
+ * It looks like a computed answer rather than a record, and that is why it stayed a bespoke read
532
+ * longest. But everything a person asks of it is what they ask of a row: what is it, what may it
533
+ * touch, what must it pass, and how far through the plan are we. It has an identity (`taskRef`), it
534
+ * is polled, it is rendered as a card, and a dispatch acts on it.
535
+ *
536
+ * ## Distinct from the build-plan TASK, deliberately
537
+ *
538
+ * `workbenchBuildPlanTasks` is every task and its status. This is the SELECTION — which one is next,
539
+ * plus the guard rails a dispatch of it would carry (allowed paths, prohibited paths, required
540
+ * checks, installed skills), which belong to the dispatch rather than to the task. Two resources
541
+ * because they answer different questions; the task list never changes because a selection did.
542
+ *
543
+ * ## Zero rows means the build is FINISHED, not that the read failed
544
+ *
545
+ * The companion answers `plan: null` with an `exhausted` count for a completed build, and it is a
546
+ * 200. That used to be a non-2xx, so the end of the journey rendered as "could not look" — the board
547
+ * telling an operator something went wrong at the moment everything had gone right. The counts live
548
+ * on this row so the finished state can say how far it got.
549
+ */
550
+ export declare const Workbench_BuildDispatchPlan_Schema: z.ZodObject<{
551
+ workbenchBuildDispatchPlanId: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>>;
552
+ taskRef: z.ZodNullable<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>>;
553
+ objective: z.ZodNullable<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>>;
554
+ targetKind: z.ZodNullable<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>>;
555
+ generationStepRef: z.ZodNullable<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>>;
556
+ allowedPathPrefixes: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodArray<z.ZodString>>;
557
+ prohibitedPathPrefixes: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodArray<z.ZodString>>;
558
+ requiredChecks: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodArray<z.ZodString>>;
559
+ installedSkillRefs: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodArray<z.ZodString>>;
560
+ readyTaskRefs: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodArray<z.ZodString>>;
561
+ landedTaskRefs: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodArray<z.ZodString>>;
562
+ unverifiableLandedTaskRefs: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodArray<z.ZodString>>;
563
+ exhausted: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodBoolean>;
564
+ stuckTasks: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodArray<z.ZodObject<{
565
+ taskRef: z.ZodString;
566
+ reason: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodEnum<typeof Workbench_BuildTaskStuckReason>>;
567
+ priorTaskId: z.ZodNullable<z.ZodString>;
568
+ uncommittedPaths: z.ZodArray<z.ZodString>;
569
+ question: z.ZodNullable<z.ZodString>;
570
+ documentRef: z.ZodNullable<z.ZodString>;
571
+ }, z.core.$strip>>>;
572
+ taskCount: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodNumber>;
573
+ landedCount: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodNumber>;
574
+ }, z.core.$strip>;
575
+ export type Workbench_BuildDispatchPlan = z.infer<typeof Workbench_BuildDispatchPlan_Schema>;
576
+ export declare const Workbench_BuildDispatch_Schema: z.ZodObject<{
577
+ workbenchBuildDispatchId: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>>;
578
+ taskRef: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>;
579
+ phase: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodEnum<typeof Workbench_BuildDispatchPhase>>>;
580
+ startedAt: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodDate>;
581
+ settledAt: z.ZodNullable<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodDate>>;
582
+ codingTaskId: z.ZodNullable<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>>>;
583
+ error: z.ZodNullable<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>>;
584
+ conversationId: z.ZodNullable<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>>;
585
+ accepted: z.ZodNullable<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodBoolean>>;
586
+ }, z.core.$strip>;
587
+ export type Workbench_BuildDispatch = z.infer<typeof Workbench_BuildDispatch_Schema>;
588
+ /**
589
+ * One playbook run SUSPENDED waiting on a person.
590
+ *
591
+ * The run stopped mid-way and asked something. The row carries where it stopped and what it asked,
592
+ * because both are what a creator needs to answer it — a question with no run context is a question
593
+ * nobody can answer.
594
+ */
595
+ /**
596
+ * WHERE a playbook run is in its life — the one field that decides how its row reads.
597
+ *
598
+ * ## Why one vocabulary and not four collections
599
+ *
600
+ * The companion answers `{ running, runningDetached, interrupted, lastCompleted }`, and a board
601
+ * reading that shape has to know which array means what before it can render anything. They are not
602
+ * four kinds of thing: they are one thing — a run of a playbook — in four states, and the fields that
603
+ * differ between them (a finish time, a verdict, a checkpoint) are exactly the fields a state decides
604
+ * the presence of. Naming the state makes that explicit and makes the row renderable by one layout.
605
+ *
606
+ * The distinction that matters most is RUNNING vs RUNNING_DETACHED, and it is not cosmetic: the
607
+ * first is the CHOREOGRAPHY single-flight marker and is null for every ordinary run, so a board that
608
+ * read it alone reported "nothing is running" while a fifteen-minute run was in flight.
609
+ */
610
+ export declare enum Workbench_PlaybookRunState {
611
+ /** The composite choreography's single-flight marker — at most one, and null for an ordinary run. */
612
+ RUNNING = "running",
613
+ /** An ordinary run this companion process is executing right now. */
614
+ RUNNING_DETACHED = "running_detached",
615
+ /** A run that stopped without finishing and left a checkpoint that can be re-run. */
616
+ INTERRUPTED = "interrupted",
617
+ /** The most recent outcome for a playbook ref — settled, with a verdict. */
618
+ COMPLETED = "completed",
619
+ /**
620
+ * A run that STOPPED TO ASK and is waiting on a person — not running, not finished, no verdict.
621
+ *
622
+ * It borrowed COMPLETED until 2026-09-24, flagged by `awaitingFamily`, so every reader had to remember that one
623
+ * "completed" row was not complete. The outcome reader remembered; Home did not, and told the creator a dry run
624
+ * waiting on their answer had "ran and landed its result" (#1271). A state that has to be un-said by another field
625
+ * is a missing member of its vocabulary.
626
+ */
627
+ AWAITING_ANSWER = "awaiting_answer"
628
+ }
629
+ /**
630
+ * One playbook run, in whatever state it is in.
631
+ *
632
+ * Kept ONE-PER-REF for the completed state by the companion, so a COMPLETED row is the last run of
633
+ * that playbook and never a history of it.
634
+ */
635
+ export declare const Workbench_PlaybookRun_Schema: z.ZodObject<{
636
+ workbenchPlaybookRunId: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>>;
637
+ runId: z.ZodNullable<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>>;
638
+ playbookRef: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>;
639
+ traceSessionId: z.ZodNullable<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>>;
640
+ conversationId: z.ZodNullable<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>>;
641
+ state: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodEnum<typeof Workbench_PlaybookRunState>>>;
642
+ startedAt: z.ZodNullable<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodDate>>;
643
+ finishedAt: z.ZodNullable<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodDate>>;
644
+ ok: z.ZodNullable<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodBoolean>>;
645
+ error: z.ZodNullable<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>>;
646
+ completedIterations: z.ZodNullable<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodNumber>>;
647
+ checkpointedAt: z.ZodNullable<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodDate>>;
648
+ awaitingFamily: z.ZodNullable<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>>;
649
+ awaitingRound: z.ZodNullable<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodNumber>>;
650
+ judgeOverall: z.ZodNullable<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodEnum<typeof MetaWorkflow_EvaluationVerdict>>>>;
651
+ judgeCriteria: z.ZodNullable<z.ZodArray<z.ZodObject<{
652
+ criterionRef: z.ZodString;
653
+ verdict: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodEnum<typeof MetaWorkflow_EvaluationVerdict>>;
654
+ rationale: z.ZodString;
655
+ }, z.core.$strip>>>;
656
+ judgeSkipped: z.ZodNullable<z.ZodString>;
657
+ }, z.core.$strip>;
658
+ export type Workbench_PlaybookRun = z.infer<typeof Workbench_PlaybookRun_Schema>;
659
+ export declare const Workbench_WaitingPlaybookRun_Schema: z.ZodObject<{
660
+ workbenchWaitingPlaybookRunId: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>>;
661
+ runId: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>;
662
+ readable: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodBoolean>;
663
+ playbookRef: z.ZodNullable<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>>;
664
+ family: z.ZodNullable<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>>;
665
+ suspendedAt: z.ZodNullable<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodDate>>;
666
+ round: z.ZodNullable<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodNumber>>;
667
+ dryRun: z.ZodNullable<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodBoolean>>;
668
+ requests: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodArray<z.ZodObject<{
669
+ ref: z.ZodString;
670
+ question: z.ZodString;
671
+ why: z.ZodString;
672
+ kind: z.ZodString;
673
+ options: z.ZodArray<z.ZodString>;
674
+ }, z.core.$strip>>>;
675
+ }, z.core.$strip>;
676
+ export type Workbench_WaitingPlaybookRun = z.infer<typeof Workbench_WaitingPlaybookRun_Schema>;
677
+ /**
678
+ * One coding run PARKED on a question.
679
+ *
680
+ * It arrives inside the coding-agent status payload, which is a singleton and stays a companion
681
+ * read. These do not: a parked question is identified by the task that parked on it, it persists
682
+ * until somebody answers, and a queue of work waiting on a person is the last thing that should be
683
+ * reachable only by reading a status blob.
684
+ */
685
+ /**
686
+ * The coding lane's own posture — ONE row, always present.
687
+ *
688
+ * ## Why a singleton resource rather than the read it replaced
689
+ *
690
+ * It was a companion read answering a status object, and that read ALSO carried the parked
691
+ * questions — a queue keyed by task id — inside it. Two different things in one payload: a queue of
692
+ * work waiting on a person, and a statement about the lane. The queue is
693
+ * `workbenchParkedCodingQuestions`; this is what remains, and it is genuinely one row.
694
+ *
695
+ * ## What each field is careful about
696
+ *
697
+ * `codingAgentRegistered` reports exactly what the dispatch service can ESTABLISH — that every
698
+ * declared agent resolves in the registry — and deliberately does not claim the transport is usable,
699
+ * because that depends on the provider configuration and on a process it has not started. Anything
700
+ * reading this must not upgrade it to "ready".
701
+ *
702
+ * `activeRunTaskId` being NULL does not mean idle. A run that parks on a question clears it while
703
+ * staying very much alive, so a badge derived from this field alone read "idle" with a question
704
+ * outstanding — which is why the parked queue has to be read beside it.
705
+ */
706
+ export declare const Workbench_CodingLaneStatus_Schema: z.ZodObject<{
707
+ workbenchCodingLaneStatusId: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>>;
708
+ codingAgentRegistered: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodBoolean>;
709
+ activeRunTaskId: z.ZodNullable<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>>>;
710
+ activeRunStartedAt: z.ZodNullable<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodDate>>;
711
+ lockFilePath: z.ZodNullable<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>>;
712
+ defaultTimeoutMs: z.ZodNumber;
713
+ hardMaxTimeoutMs: z.ZodNumber;
714
+ defaultMaxCapturedBytes: z.ZodNumber;
715
+ hardMaxCapturedBytes: z.ZodNumber;
716
+ }, z.core.$strip>;
717
+ export type Workbench_CodingLaneStatus = z.infer<typeof Workbench_CodingLaneStatus_Schema>;
718
+ /**
719
+ * The option refs a parked coding run offers. Closed, because the caller BRANCHES on which came back.
720
+ *
721
+ * Both are real decisions here, unlike a playbook interview — which offers only "run with these
722
+ * answers", because declining an interview settles nothing that is waiting. A parked run IS waiting:
723
+ * answering resumes the same session, and cancelling ends the run.
724
+ *
725
+ * ## Why it lives HERE rather than in the companion that mints it
726
+ *
727
+ * Both ends need it and neither can import the other: the companion projects a parked run as a
728
+ * decision, and the workbench reconstructs that decision from the ROW to render the answer form. It
729
+ * was declared in the companion alone until 2026-09-19, which meant a browser wanting to branch on
730
+ * an option had to re-spell the two values — a second copy of a closed vocabulary, compiling
731
+ * perfectly and free to drift.
732
+ */
733
+ export declare enum Workbench_ParkedCodingQuestionOptionRef {
734
+ ANSWER = "answer",
735
+ CANCEL = "cancel"
736
+ }
737
+ /** The single field a parked run asks: the agent's own question, verbatim. */
738
+ export declare const WORKBENCH_PARKED_CODING_QUESTION_FIELD_REF = "answer";
739
+ export declare const Workbench_ParkedCodingQuestion_Schema: z.ZodObject<{
740
+ workbenchParkedCodingQuestionId: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>>;
741
+ taskId: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>>;
742
+ taskRef: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>;
743
+ question: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>;
744
+ parkedAt: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodDate>;
745
+ resumable: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodBoolean>;
746
+ }, z.core.$strip>;
747
+ export type Workbench_ParkedCodingQuestion = z.infer<typeof Workbench_ParkedCodingQuestion_Schema>;
748
+ /**
749
+ * One dossier entry: a question a playbook declares, and what the creator said to it, if anything.
750
+ *
751
+ * The identity is the pair (`playbookRef`, `questionRef`), sanitized — the key the `creator-inputs`
752
+ * family stores answers under, so the page addresses an answer the way the file does. The
753
+ * question's own text, kind and options are carried on the row (from the compiled catalog) so a
754
+ * surface can ASK it without a second read.
755
+ */
756
+ export declare const Workbench_DossierEntry_Schema: z.ZodObject<{
757
+ workbenchDossierEntryId: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>>;
758
+ playbookRef: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>;
759
+ questionRef: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>;
760
+ question: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>;
761
+ kind: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>;
762
+ options: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodArray<z.ZodString>>;
763
+ position: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodNumber>;
764
+ standing: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodEnum<typeof WorkbenchDossierEntryStanding>>>;
765
+ value: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodNullable<z.ZodString>>;
766
+ answeredAt: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodNullable<z.ZodDate>>;
767
+ answeredByRef: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodNullable<z.ZodString>>;
768
+ playbookEligible: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodBoolean>;
769
+ askedNow: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodBoolean>;
770
+ affectsFamilies: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodArray<z.ZodString>>;
771
+ }, z.core.$strip>;
772
+ export type Workbench_DossierEntry = z.infer<typeof Workbench_DossierEntry_Schema>;
773
+ /** The dossier resource's one write verb. */
774
+ export declare enum WorkbenchDossierEntries_Operations {
775
+ /** Record (or change) the creator's answer to this question. Lands `creator-inputs`; a commit accepts it. */
776
+ ANSWER = "answer"
777
+ }
778
+ export declare const Workbench_DossierAnswerRequest_Schema: z.ZodObject<{
779
+ value: z.ZodString;
780
+ }, z.core.$strip>;
781
+ export type Workbench_DossierAnswerRequest = z.infer<typeof Workbench_DossierAnswerRequest_Schema>;
782
+ export declare const Workbench_DossierAnswerOutcome_Schema: z.ZodObject<{
783
+ /** The answer as STORED (canonical for a `confirm`). */
784
+ value: z.ZodString;
785
+ answeredAt: z.ZodString;
786
+ /** The dossier file this landed in, package-relative. */
787
+ packageRelativePath: z.ZodString;
788
+ /** The asking playbook's questions still unanswered after this one — empty means it can run. */
789
+ unansweredQuestionRefs: z.ZodArray<z.ZodString>;
790
+ }, z.core.$loose>;
791
+ export type Workbench_DossierAnswerOutcome = z.infer<typeof Workbench_DossierAnswerOutcome_Schema>;
792
+ /**
793
+ * The SECTIONS of Home, the conversation page's opening surface (#1454, Step 3) — and the LIST filter
794
+ * a reader of `workbenchCreationHomeLines` narrows by.
795
+ *
796
+ * Three questions, three sections: what happened since I was here, what is asked of me now, what
797
+ * could I do next. Where the application stands is a resource of its own
798
+ * (`workbenchCreationOutcomes`), because an outcome is a measured STATE, not a line that opens
799
+ * something.
800
+ */
801
+ export declare enum WorkbenchCreationHomeSection {
802
+ /** A run completed or cut short, a build dispatch settled — newest first. */
803
+ SINCE = "since",
804
+ /** What blocks something NOW and waits on the creator: a run stopped on a question, a coding run parked on one, a drafted document missing a fact. */
805
+ ASKED = "asked",
806
+ /** What the creator could do next, outcome-first: the plan's next task, a step producing a missing family, a step refreshing a stale one. */
807
+ SUGGESTION = "suggestion"
808
+ }
809
+ /**
810
+ * The KIND of a Home line — one closed vocabulary across the three sections, because a line's words
811
+ * and its tone are decided by its kind wherever it is rendered, and a section is only where it sits.
812
+ *
813
+ * ## Why the companion decides these and the page does not
814
+ *
815
+ * Until 2026-09-22 the page read SEVEN resources on their own cadences and derived every line itself
816
+ * — 900 lines of client arithmetic over rows a projection had already computed, re-run on every
817
+ * poll, invisible to the assistant's tools and to every other reader. A line is a FACT about the
818
+ * application ("this run was refused", "this task's writes wait to be committed"); facts are
819
+ * derived where the rows are, once, and served as rows themselves (`derive-before-you-ask.md`).
820
+ */
821
+ export declare enum WorkbenchCreationHomeLineKind {
822
+ /** A playbook run completed — landed or refused; `failed` says which. */
823
+ RUN_COMPLETED = "run-completed",
824
+ /** A playbook run the companion's restart cut short; re-running resumes it. Shown whatever its date. */
825
+ RUN_INTERRUPTED = "run-interrupted",
826
+ /** A build dispatch finished or failed; `acceptable` says whether its writes wait to be committed. */
827
+ DISPATCH_SETTLED = "dispatch-settled",
828
+ /** A playbook run suspended on questions only the creator can answer. */
829
+ CLARIFICATION = "clarification",
830
+ /** A coding run parked on a question the agent could not answer alone. */
831
+ PARKED_QUESTION = "parked-question",
832
+ /** A governed document the creator asked for (a draft exists) still needing a fact only they can give. */
833
+ GOVERNANCE_DOCUMENT = "governance-document",
834
+ /** The next READY build task of the dispatch plan. */
835
+ CONTINUE_THE_PLAN = "continue-the-plan",
836
+ /**
837
+ * The plan can run NOTHING: every ready task is stuck, and `stuckReason` says what unblocks it.
838
+ *
839
+ * ASKED rather than SUGGESTION, because every reason is the creator's move — committing what a
840
+ * finished run wrote under GUIDED, or, under the autonomy posture where the loop commits (#1534),
841
+ * resolving the path its accept refused or correcting a declaration no run can satisfy.
842
+ * Without it the plan simply falls silent: `CONTINUE_THE_PLAN` is derived from the next ready task,
843
+ * and a stuck queue has none (#1451, #1463).
844
+ */
845
+ UNBLOCK_THE_PLAN = "unblock-the-plan",
846
+ /** An eligible playbook whose output family is missing. */
847
+ PRODUCE_MISSING = "produce-missing",
848
+ /** An eligible playbook whose output is stale — derived before one of its inputs last changed. */
849
+ REFRESH_STALE = "refresh-stale"
850
+ }
851
+ /**
852
+ * One line of Home. Every line OPENS an element beside the page — `targetResourceType` +
853
+ * `targetResourceId` are the address the engine's hosted pane resolves — and carries the one or two
854
+ * facts the words need: the subject, in the creator's terms, and the flags that change the sentence.
855
+ *
856
+ * `targetResourceType` is a STRING, not `z.enum(WorkbenchShared_ResourceType)`: it is an address, not
857
+ * a vocabulary anyone words, and binding it here would make a line pointing at a resource a newer
858
+ * companion serves unparseable by an older workbench.
859
+ */
860
+ export declare const Workbench_CreationHomeLine_Schema: z.ZodObject<{
861
+ workbenchCreationHomeLineId: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>>;
862
+ section: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodEnum<typeof WorkbenchCreationHomeSection>>>;
863
+ kind: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodEnum<typeof WorkbenchCreationHomeLineKind>>>;
864
+ at: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodNullable<z.ZodDate>>;
865
+ playbookRef: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodNullable<z.ZodString>>;
866
+ taskRef: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodNullable<z.ZodString>>;
867
+ subject: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodNullable<z.ZodString>>;
868
+ failed: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodBoolean>;
869
+ acceptable: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodBoolean>;
870
+ needsAnswers: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodBoolean>;
871
+ stuckReason: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodNullable<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodEnum<typeof Workbench_BuildTaskStuckReason>>>>;
872
+ targetResourceType: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>;
873
+ targetResourceId: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>;
874
+ }, z.core.$strip>;
875
+ export type Workbench_CreationHomeLine = z.infer<typeof Workbench_CreationHomeLine_Schema>;
876
+ /**
877
+ * The four OUTCOMES an application's creation is measured by — the journey in the creator's words
878
+ * (Paul, 2026-09-21: "we do not have a real journey; top-down and bottom-up are internal
879
+ * considerations"). The playbook phases stay machinery underneath; this is what a person sees.
880
+ *
881
+ * Which specification family counts toward which outcome is the companion projection's business
882
+ * (`creation-home-projection.companion.ts`, total over `ApplicationSpecificationFamily`); this
883
+ * package deliberately does not import that vocabulary.
884
+ */
885
+ export declare enum WorkbenchCreationOutcome {
886
+ /** Vision, market, requirements, features, business model, roadmap, brand. */
887
+ KNOW_WHAT_WE_BUILD = "know-what-we-build",
888
+ /** The compliance programme, the processor register, the facts and policies behind every governed document, the risks. */
889
+ KNOW_THE_RULES = "know-the-rules",
890
+ /** The domain plan, the placement plan, the build plan — and the build tasks landed. */
891
+ APPLICATION_WORKS = "application-works",
892
+ /** Governed documents released and published — and every other outcome done. */
893
+ READY_FOR_A_REAL_USER = "ready-for-a-real-user"
894
+ }
895
+ /** The order a person reads the outcomes in: what, rules, works, ready. Also the rows' `position`. */
896
+ export declare const WORKBENCH_CREATION_OUTCOMES_IN_ORDER: readonly WorkbenchCreationOutcome[];
897
+ export declare enum WorkbenchCreationOutcomeStatus {
898
+ NOT_STARTED = "not-started",
899
+ IN_PROGRESS = "in-progress",
900
+ DONE = "done"
901
+ }
902
+ /**
903
+ * Where the application stands on one outcome — ALWAYS four rows, one per outcome, in reading
904
+ * order. "Done" is strict: every family of the outcome landed, valid and not stale; for the
905
+ * application working, every build task landed too; for readiness, every other outcome done as
906
+ * well.
907
+ */
908
+ export declare const Workbench_CreationOutcome_Schema: z.ZodObject<{
909
+ workbenchCreationOutcomeId: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>>;
910
+ outcome: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodEnum<typeof WorkbenchCreationOutcome>>>;
911
+ status: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodEnum<typeof WorkbenchCreationOutcomeStatus>>>;
912
+ position: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodNumber>;
913
+ familiesTotal: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodNumber>;
914
+ familiesLanded: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodNumber>;
915
+ familiesInvalid: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodNumber>;
916
+ familiesMissing: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodNumber>;
917
+ familiesStale: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodNumber>;
918
+ tasksTotal: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodNullable<z.ZodNumber>>;
919
+ tasksLanded: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodNullable<z.ZodNumber>>;
920
+ unavailableRuntimes: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodNullable<z.ZodArray<z.ZodString>>>;
921
+ }, z.core.$strip>;
922
+ export type Workbench_CreationOutcome = z.infer<typeof Workbench_CreationOutcome_Schema>;
923
+ /** An operation that takes nothing. */
924
+ export declare const Workbench_EmptyRequest_Schema: z.ZodObject<{}, z.core.$strip>;
925
+ /** `read_interview` on a playbook: the `HumanDecision_Request` it declares, or null. Carried opaquely — the engine owns that vocabulary. */
926
+ export declare const Workbench_PlaybookInterview_Schema: z.ZodObject<{
927
+ decision: z.ZodNullable<z.ZodUnknown>;
928
+ }, z.core.$strip>;
929
+ export type Workbench_PlaybookInterview = z.infer<typeof Workbench_PlaybookInterview_Schema>;
930
+ /** One file's change within a run — see `read_diff`. */
931
+ export declare const Workbench_RunWriteFileDiff_Schema: z.ZodObject<{
932
+ path: z.ZodString;
933
+ existedBefore: z.ZodBoolean;
934
+ diverged: z.ZodBoolean;
935
+ diff: z.ZodString;
936
+ }, z.core.$strip>;
937
+ export type Workbench_RunWriteFileDiff = z.infer<typeof Workbench_RunWriteFileDiff_Schema>;
938
+ export declare const Workbench_RunWriteDiff_Schema: z.ZodObject<{
939
+ runId: z.ZodString;
940
+ playbookRef: z.ZodString;
941
+ at: z.ZodString;
942
+ files: z.ZodArray<z.ZodObject<{
943
+ path: z.ZodString;
944
+ existedBefore: z.ZodBoolean;
945
+ diverged: z.ZodBoolean;
946
+ diff: z.ZodString;
947
+ }, z.core.$strip>>;
948
+ }, z.core.$strip>;
949
+ export type Workbench_RunWriteDiff = z.infer<typeof Workbench_RunWriteDiff_Schema>;
950
+ /** The trace-session resource's READ-shaped verbs — what a session RECORDED, beyond the summary its row carries. */
951
+ export declare enum WorkbenchTraceSessions_Operations {
952
+ /** ONE session: every event in order, and its step artifacts by name (#1328) — what the Conversation tab reads. */
953
+ READ_RECORD = "read_record",
954
+ /** What one session SPENT, in tokens — summed from the agent-call usage already in its events (#1274). Never a currency. */
955
+ READ_USAGE = "read_usage",
956
+ /** One step ARTIFACT, as text — the brief the model saw, the answer it gave, a coding task's input (#1329). */
957
+ READ_ARTIFACT = "read_artifact",
958
+ /**
959
+ * The trace sessions one ACTOR TASK ran in, latest first — the alias the coding lane writes for
960
+ * every run (#1328). Collection-level: the task is the input, not a session. Empty for a task the
961
+ * lane never ran, which is the ordinary case and not an error.
962
+ */
963
+ LIST_FOR_TASK = "list_for_task"
964
+ }
965
+ /** One traced event, as the companion records it — the conversation's unit (#1328). */
966
+ export declare const Workbench_TraceSessionEvent_Schema: z.ZodObject<{
967
+ timestamp: z.ZodString;
968
+ type: z.ZodString;
969
+ summary: z.ZodString;
970
+ stepId: z.ZodOptional<z.ZodString>;
971
+ payload: z.ZodOptional<z.ZodUnknown>;
972
+ }, z.core.$strip>;
973
+ export type Workbench_TraceSessionEvent = z.infer<typeof Workbench_TraceSessionEvent_Schema>;
974
+ /** One step directory of a session: the artifacts it holds, by file name. Bodies are read one at a time. */
975
+ export declare const Workbench_TraceSessionStep_Schema: z.ZodObject<{
976
+ stepDirName: z.ZodString;
977
+ artifacts: z.ZodArray<z.ZodString>;
978
+ }, z.core.$strip>;
979
+ export type Workbench_TraceSessionStep = z.infer<typeof Workbench_TraceSessionStep_Schema>;
980
+ export declare const Workbench_TraceSessionRecord_Schema: z.ZodObject<{
981
+ sessionId: z.ZodString;
982
+ startedAt: z.ZodString;
983
+ label: z.ZodNullable<z.ZodString>;
984
+ eventCount: z.ZodNumber;
985
+ stepCount: z.ZodNumber;
986
+ events: z.ZodArray<z.ZodObject<{
987
+ timestamp: z.ZodString;
988
+ type: z.ZodString;
989
+ summary: z.ZodString;
990
+ stepId: z.ZodOptional<z.ZodString>;
991
+ payload: z.ZodOptional<z.ZodUnknown>;
992
+ }, z.core.$strip>>;
993
+ steps: z.ZodArray<z.ZodObject<{
994
+ stepDirName: z.ZodString;
995
+ artifacts: z.ZodArray<z.ZodString>;
996
+ }, z.core.$strip>>;
997
+ }, z.core.$strip>;
998
+ export type Workbench_TraceSessionRecord = z.infer<typeof Workbench_TraceSessionRecord_Schema>;
999
+ /** What one trace session spent, in TOKENS. `callsWithoutUsage` non-zero means the totals are a FLOOR, not the figure. */
1000
+ export declare const Workbench_TraceSessionUsage_Schema: z.ZodObject<{
1001
+ sessionId: z.ZodString;
1002
+ agentCalls: z.ZodNumber;
1003
+ callsWithoutUsage: z.ZodNumber;
1004
+ promptTokens: z.ZodNumber;
1005
+ completionTokens: z.ZodNumber;
1006
+ totalTokens: z.ZodNumber;
1007
+ }, z.core.$strip>;
1008
+ export type Workbench_TraceSessionUsage = z.infer<typeof Workbench_TraceSessionUsage_Schema>;
1009
+ export declare const Workbench_TraceArtifactRequest_Schema: z.ZodObject<{
1010
+ stepDirName: z.ZodString;
1011
+ fileName: z.ZodString;
1012
+ }, z.core.$strip>;
1013
+ export type Workbench_TraceArtifactRequest = z.infer<typeof Workbench_TraceArtifactRequest_Schema>;
1014
+ /** The artifact body, verbatim. A big brief renders by its OUTLINE, computed by the reader — the text is what it is owed. */
1015
+ export declare const Workbench_TraceArtifact_Schema: z.ZodObject<{
1016
+ body: z.ZodString;
1017
+ }, z.core.$strip>;
1018
+ export type Workbench_TraceArtifact = z.infer<typeof Workbench_TraceArtifact_Schema>;
1019
+ export declare const Workbench_TraceSessionsForTaskRequest_Schema: z.ZodObject<{
1020
+ taskId: z.ZodString;
1021
+ }, z.core.$strip>;
1022
+ export declare const Workbench_TraceSessionsForTask_Schema: z.ZodObject<{
1023
+ sessionIds: z.ZodArray<z.ZodString>;
1024
+ }, z.core.$strip>;
1025
+ export type Workbench_TraceSessionsForTask = z.infer<typeof Workbench_TraceSessionsForTask_Schema>;
1026
+ /**
1027
+ * The parked coding question's two verbs — the decision the row IS (see
1028
+ * {@link Workbench_ParkedCodingQuestionOptionRef}): answer it and resume the same session, or end
1029
+ * the run. Both were bespoke companion routes with a browser exemption on the token floor until
1030
+ * 2026-09-22; the row's own operations are where a reader meets them.
1031
+ */
1032
+ export declare enum WorkbenchParkedCodingQuestions_Operations {
1033
+ /** Answer THIS parked run and resume the same agent session. A WRITE: it re-enters a workspace-mutating run behind the worktree lock. */
1034
+ ANSWER = "answer",
1035
+ /**
1036
+ * End the coding run that is active — collection-level, because there is ONE coding lane and one
1037
+ * active run; the parked row is where an operator meets the decision, not what identifies the run.
1038
+ */
1039
+ CANCEL = "cancel"
1040
+ }
1041
+ export declare const Workbench_ParkedQuestionAnswerRequest_Schema: z.ZodObject<{
1042
+ answer: z.ZodString;
1043
+ }, z.core.$strip>;
1044
+ export type Workbench_ParkedQuestionAnswerRequest = z.infer<typeof Workbench_ParkedQuestionAnswerRequest_Schema>;
1045
+ /** The lane's admission of the resumed run — its own shape, carried loosely. */
1046
+ export declare const Workbench_ParkedQuestionAnswerOutcome_Schema: z.ZodObject<{}, z.core.$loose>;
1047
+ export type Workbench_ParkedQuestionAnswerOutcome = z.infer<typeof Workbench_ParkedQuestionAnswerOutcome_Schema>;
1048
+ export declare const Workbench_CodingRunCancelOutcome_Schema: z.ZodObject<{
1049
+ cancelled: z.ZodBoolean;
1050
+ }, z.core.$loose>;
1051
+ export type Workbench_CodingRunCancelOutcome = z.infer<typeof Workbench_CodingRunCancelOutcome_Schema>;
1052
+ /**
1053
+ * The governed document's one verb: LAND the facts a person established for it as the
1054
+ * `document-facts-authored` family. The row is the document; the body carries the governance scope,
1055
+ * the answers and, for a reviewed fact, the review — a per-question verb with a bare value could
1056
+ * carry none of that, which is why the question resource has no write verb of its own.
1057
+ */
1058
+ export declare enum WorkbenchGovernanceDocuments_Operations {
1059
+ LAND_FACTS = "land_facts"
1060
+ }
1061
+ /**
1062
+ * The landing request's ENVELOPE. The answer SEMANTICS stay with the companion service that owns the
1063
+ * question catalog (it refuses an unknown question, a review with no reviewer, "does not apply" on a
1064
+ * question that does not offer it — each with its own sentence); this refuses a body that is not a
1065
+ * landing request at all.
1066
+ */
1067
+ export declare const Workbench_GovernanceFactsLandingRequest_Schema: z.ZodObject<{
1068
+ definitionRef: z.ZodString;
1069
+ decidedByRef: z.ZodString;
1070
+ decidedAt: z.ZodString;
1071
+ governanceScope: z.ZodObject<{
1072
+ subjectKind: z.ZodString;
1073
+ subjectRef: z.ZodString;
1074
+ scopeRef: z.ZodString;
1075
+ scopeVersion: z.ZodNumber;
1076
+ participantRefs: z.ZodArray<z.ZodString>;
1077
+ precedenceRuleRefs: z.ZodArray<z.ZodString>;
1078
+ }, z.core.$strip>;
1079
+ answers: z.ZodArray<z.ZodUnknown>;
1080
+ dryRun: z.ZodOptional<z.ZodBoolean>;
1081
+ }, z.core.$strip>;
1082
+ export type Workbench_GovernanceFactsLandingRequest = z.infer<typeof Workbench_GovernanceFactsLandingRequest_Schema>;
1083
+ export declare const Workbench_GovernanceFactsLandingOutcome_Schema: z.ZodObject<{
1084
+ family: z.ZodString;
1085
+ packageRelativePath: z.ZodString;
1086
+ exportedConstantName: z.ZodString;
1087
+ renderedSource: z.ZodString;
1088
+ existedBefore: z.ZodBoolean;
1089
+ wiringAlreadyInPlace: z.ZodArray<z.ZodString>;
1090
+ }, z.core.$strip>;
1091
+ export type Workbench_GovernanceFactsLandingOutcome = z.infer<typeof Workbench_GovernanceFactsLandingOutcome_Schema>;
219
1092
  //# sourceMappingURL=workbench-creation-plane.custom.shared.schemas.d.ts.map