@wildo-ai/platform-core-shared 1.1.4 → 1.1.6

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 (82) hide show
  1. package/dist/esm/core/resources/resources-operations.custom.shared.definitions.d.ts.map +1 -1
  2. package/dist/esm/core/resources/resources-relationships.custom.shared.definitions.d.ts.map +1 -1
  3. package/dist/esm/index.d.ts +4 -1
  4. package/dist/esm/index.d.ts.map +1 -1
  5. package/dist/esm/index.js +4 -1
  6. package/dist/esm/index.js.map +1 -1
  7. package/dist/esm/runtime/application-backend-env.contracts.d.ts +49 -4
  8. package/dist/esm/runtime/application-backend-env.contracts.d.ts.map +1 -1
  9. package/dist/esm/runtime/application-backend-env.contracts.js +48 -1
  10. package/dist/esm/runtime/application-backend-env.contracts.js.map +1 -1
  11. package/dist/esm/runtime/http-server-env.contracts.d.ts +46 -0
  12. package/dist/esm/runtime/http-server-env.contracts.d.ts.map +1 -0
  13. package/dist/esm/runtime/http-server-env.contracts.js +55 -0
  14. package/dist/esm/runtime/http-server-env.contracts.js.map +1 -0
  15. package/dist/esm/runtime/runtime-topology.contracts.d.ts +0 -4
  16. package/dist/esm/runtime/runtime-topology.contracts.d.ts.map +1 -1
  17. package/dist/esm/runtime/runtime-topology.contracts.js +0 -12
  18. package/dist/esm/runtime/runtime-topology.contracts.js.map +1 -1
  19. package/dist/esm/security/authorizations/roles.custom.shared.definitions.d.ts.map +1 -1
  20. package/dist/esm/wildo-application-executions/wildo-application-executions.custom.shared.resources-config.schemas.d.ts +166 -70
  21. package/dist/esm/wildo-application-executions/wildo-application-executions.custom.shared.resources-config.schemas.d.ts.map +1 -1
  22. package/dist/esm/wildo-application-executions/wildo-application-executions.custom.shared.schemas.d.ts +166 -70
  23. package/dist/esm/wildo-application-executions/wildo-application-executions.custom.shared.schemas.d.ts.map +1 -1
  24. package/dist/esm/wildo-application-executions/wildo-application-executions.custom.shared.schemas.js +2 -2
  25. package/dist/esm/wildo-application-executions/wildo-application-executions.custom.shared.schemas.js.map +1 -1
  26. package/dist/esm/wildo-application-tasks/wildo-application-tasks.custom.shared.resources-config.schemas.d.ts +21 -10
  27. package/dist/esm/wildo-application-tasks/wildo-application-tasks.custom.shared.resources-config.schemas.d.ts.map +1 -1
  28. package/dist/esm/wildo-application-tasks/wildo-application-tasks.custom.shared.schemas.d.ts +21 -10
  29. package/dist/esm/wildo-application-tasks/wildo-application-tasks.custom.shared.schemas.d.ts.map +1 -1
  30. package/dist/esm/wildo-application-tasks/wildo-application-tasks.custom.shared.schemas.js +26 -28
  31. package/dist/esm/wildo-application-tasks/wildo-application-tasks.custom.shared.schemas.js.map +1 -1
  32. package/dist/esm/wildo-applications/wildo-applications.custom.shared.resources-config.schemas.d.ts.map +1 -1
  33. package/dist/esm/wildo-applications/wildo-applications.custom.shared.resources-config.schemas.js.map +1 -1
  34. package/dist/esm/wildo-applications/wildo-applications.custom.shared.schemas.d.ts +29 -0
  35. package/dist/esm/wildo-applications/wildo-applications.custom.shared.schemas.d.ts.map +1 -1
  36. package/dist/esm/wildo-applications/wildo-applications.custom.shared.schemas.js +58 -0
  37. package/dist/esm/wildo-applications/wildo-applications.custom.shared.schemas.js.map +1 -1
  38. package/dist/esm/wildo-applications-versions/wildo-applications-versions.custom.shared.resources-config.schemas.d.ts.map +1 -1
  39. package/dist/esm/wildo-applications-versions/wildo-applications-versions.custom.shared.resources-config.schemas.js.map +1 -1
  40. package/dist/esm/wildo-applications-versions/wildo-applications-versions.custom.shared.schemas.d.ts.map +1 -1
  41. package/dist/esm/workbench/workbench-aspect-resources.custom.shared.schemas.d.ts +13 -0
  42. package/dist/esm/workbench/workbench-aspect-resources.custom.shared.schemas.d.ts.map +1 -1
  43. package/dist/esm/workbench/workbench-aspect-resources.custom.shared.schemas.js +441 -1
  44. package/dist/esm/workbench/workbench-aspect-resources.custom.shared.schemas.js.map +1 -1
  45. package/dist/esm/workbench/workbench-creation-console.custom.shared.schemas.d.ts +279 -0
  46. package/dist/esm/workbench/workbench-creation-console.custom.shared.schemas.d.ts.map +1 -0
  47. package/dist/esm/workbench/workbench-creation-console.custom.shared.schemas.js +303 -0
  48. package/dist/esm/workbench/workbench-creation-console.custom.shared.schemas.js.map +1 -0
  49. package/dist/esm/workbench/workbench-creation-conversation.custom.shared.schemas.d.ts +199 -0
  50. package/dist/esm/workbench/workbench-creation-conversation.custom.shared.schemas.d.ts.map +1 -0
  51. package/dist/esm/workbench/workbench-creation-conversation.custom.shared.schemas.js +185 -0
  52. package/dist/esm/workbench/workbench-creation-conversation.custom.shared.schemas.js.map +1 -0
  53. package/dist/esm/workbench/workbench-creation-dossier.custom.shared.schemas.d.ts +49 -0
  54. package/dist/esm/workbench/workbench-creation-dossier.custom.shared.schemas.d.ts.map +1 -0
  55. package/dist/esm/workbench/workbench-creation-dossier.custom.shared.schemas.js +42 -0
  56. package/dist/esm/workbench/workbench-creation-dossier.custom.shared.schemas.js.map +1 -0
  57. package/dist/esm/workbench/workbench-creation-plane.custom.shared.resources-config.schemas.d.ts +461 -11
  58. package/dist/esm/workbench/workbench-creation-plane.custom.shared.resources-config.schemas.d.ts.map +1 -1
  59. package/dist/esm/workbench/workbench-creation-plane.custom.shared.resources-config.schemas.js +509 -6
  60. package/dist/esm/workbench/workbench-creation-plane.custom.shared.resources-config.schemas.js.map +1 -1
  61. package/dist/esm/workbench/workbench-creation-plane.custom.shared.schemas.d.ts +1102 -12
  62. package/dist/esm/workbench/workbench-creation-plane.custom.shared.schemas.d.ts.map +1 -1
  63. package/dist/esm/workbench/workbench-creation-plane.custom.shared.schemas.js +1520 -19
  64. package/dist/esm/workbench/workbench-creation-plane.custom.shared.schemas.js.map +1 -1
  65. package/dist/esm/workbench/workbench-resources-types.custom.shared.schemas.d.ts +123 -1
  66. package/dist/esm/workbench/workbench-resources-types.custom.shared.schemas.d.ts.map +1 -1
  67. package/dist/esm/workbench/workbench-resources-types.custom.shared.schemas.js +168 -0
  68. package/dist/esm/workbench/workbench-resources-types.custom.shared.schemas.js.map +1 -1
  69. package/dist/esm/workbench/workbench-resources.custom.shared.resources-config.schemas.d.ts +229 -9
  70. package/dist/esm/workbench/workbench-resources.custom.shared.resources-config.schemas.d.ts.map +1 -1
  71. package/dist/esm/workbench/workbench-resources.custom.shared.resources-config.schemas.js +2 -2
  72. package/dist/esm/workbench/workbench-resources.custom.shared.resources-config.schemas.js.map +1 -1
  73. package/dist/esm/workbench/workbench-resources.custom.shared.schemas.d.ts +18 -3
  74. package/dist/esm/workbench/workbench-resources.custom.shared.schemas.d.ts.map +1 -1
  75. package/dist/esm/workbench/workbench-resources.custom.shared.schemas.js +35 -7
  76. package/dist/esm/workbench/workbench-resources.custom.shared.schemas.js.map +1 -1
  77. package/dist/tsconfig.build.tsbuildinfo +1 -1
  78. package/package.json +4 -13
  79. package/dist/esm/workbench/workbench-creation-board.custom.shared.schemas.d.ts +0 -98
  80. package/dist/esm/workbench/workbench-creation-board.custom.shared.schemas.d.ts.map +0 -1
  81. package/dist/esm/workbench/workbench-creation-board.custom.shared.schemas.js +0 -86
  82. package/dist/esm/workbench/workbench-creation-board.custom.shared.schemas.js.map +0 -1
@@ -1,4 +1,7 @@
1
+ import { MetaWorkflow_ClarificationAction, MetaWorkflow_EvaluationVerdict } from '@wildo-ai/saas-models/meta-workflows';
2
+ import { EngineCapability } from '@wildo-ai/saas-models';
1
3
  import { z } from 'zod';
4
+ import { WorkbenchSpecificationArtifactConcern } from './workbench-resources.custom.shared.schemas';
2
5
  /**
3
6
  * The CREATION PLANE's shared vocabulary — schemas for the four companion-runtime resource
4
7
  * families, and the behavior ids their bindings name.
@@ -40,7 +43,27 @@ export declare enum WorkbenchCreationPlaneBehavior {
40
43
  /** The write register's records, pre-image bytes stripped. */
41
44
  RUN_WRITE_RECORDS = "creation-plane.run-write-records",
42
45
  /** The execution-trace session index. */
43
- TRACE_SESSIONS = "creation-plane.trace-sessions"
46
+ TRACE_SESSIONS = "creation-plane.trace-sessions",
47
+ /** The governance questionnaires' unanswered prompts, flattened one row per question. */
48
+ GOVERNANCE_DOCUMENTS = "creation-plane.governance-documents",
49
+ GOVERNANCE_QUESTIONS = "creation-plane.governance-questions",
50
+ /** The build lane's dispatch history, one row per attempt. */
51
+ BUILD_DISPATCH_PLAN = "creation-plane.build-dispatch-plan",
52
+ BUILD_DISPATCHES = "creation-plane.build-dispatches",
53
+ /** The playbook runs suspended waiting on a person. */
54
+ PLAYBOOK_RUNS = "creation-plane.playbook-runs",
55
+ WAITING_PLAYBOOK_RUNS = "creation-plane.waiting-playbook-runs",
56
+ /** The coding runs parked on a question. */
57
+ CODING_LANE_STATUS = "creation-plane.coding-lane-status",
58
+ PARKED_CODING_QUESTIONS = "creation-plane.parked-coding-questions",
59
+ /** The dossier: every declared interview question × the creator's answer from `creator-inputs`. */
60
+ DOSSIER_ENTRIES = "creation-plane.dossier-entries",
61
+ /** HOME's lines (#1454): what happened, what is asked of the creator, what they could do next — one derivation. */
62
+ HOME_LINES = "creation-plane.home-lines",
63
+ /** The four creation OUTCOMES with their standing, derived from the landed families and the build plan. */
64
+ CREATION_OUTCOMES = "creation-plane.creation-outcomes",
65
+ /** The application's provider secrets per environment — what it needs and what is set, never a value (#1637). */
66
+ APPLICATION_SECRETS = "creation-plane.application-secrets"
44
67
  }
45
68
  /** Membership test the companion's source routes by. */
46
69
  export declare const WORKBENCH_CREATION_PLANE_BEHAVIOR_IDS: readonly string[];
@@ -57,6 +80,52 @@ export declare const WORKBENCH_CREATION_PLANE_BEHAVIOR_IDS: readonly string[];
57
80
  * two rows under one id, and why server-side lookups match sanitized forms instead of reversing.
58
81
  */
59
82
  export declare function sanitizeWorkbenchCreationPlaneIdentity(value: string): string;
83
+ /**
84
+ * A dossier row's id — `sanitize(playbookRef)--sanitize(questionRef)` for the step itself, and
85
+ * `sanitize(playbookRef)--<instanceKey>--sanitize(questionRef)` for one of its INSTANCES (#1609).
86
+ *
87
+ * Shared for the same reason the sanitizer is: the companion's projection EMITS the id and the
88
+ * conversation's answer tool ADDRESSES a row by it, and two copies would let the two drift apart the
89
+ * first time the shape changed — which is exactly what adding an instance did. An instance key is a
90
+ * kebab slug, so it needs no sanitizing and cannot contain the `--` separator's ambiguity in a way the
91
+ * question ref does not already (both are refused as duplicates by the projection, never guessed at).
92
+ */
93
+ export declare function workbenchDossierEntryIdentity(input: {
94
+ readonly playbookRef: string;
95
+ readonly questionRef: string;
96
+ readonly instanceKey?: string | null;
97
+ }): string;
98
+ /**
99
+ * The creation plane's CORRELATION VOCABULARY on the engine's actor task — the one named source for
100
+ * the `context.correlation` envelope's domain and ref keys (#1348, #1330).
101
+ *
102
+ * The engine owns the envelope and validates only that keys and values are non-empty strings; this
103
+ * domain owns the keys. Both ends read them: the companion's coding-agent dispatch WRITES the
104
+ * envelope when it admits a run for a build-plan task, and the workbench READS it to draw the run's
105
+ * build-plan task as a resolved link. Two spellings of one key would be a join that silently stops
106
+ * matching, so neither end spells it.
107
+ *
108
+ * The value under {@link WorkbenchTaskCorrelationRef.BUILD_PLAN_TASK} is the build-plan ROW's
109
+ * identity — `sanitizeWorkbenchCreationPlaneIdentity(taskRef)` — so a reader holding the envelope
110
+ * addresses the row with no lookup.
111
+ */
112
+ export declare const WORKBENCH_TASK_CORRELATION_DOMAIN = "application-creation";
113
+ export declare enum WorkbenchTaskCorrelationRef {
114
+ /** The `workbenchBuildPlanTaskId` of the build-plan task this coding run was dispatched for. */
115
+ BUILD_PLAN_TASK = "buildPlanTaskRef",
116
+ /**
117
+ * The creation CONVERSATION (the engine conversational execution's `executionId`) a run was
118
+ * started from, when it was (#1454). The conversation page joins a thread to its runs on this
119
+ * key; a run started from the board or the CLI carries none.
120
+ */
121
+ CONVERSATION = "conversationId"
122
+ }
123
+ /**
124
+ * The build-plan row a task's correlation envelope names, or `undefined` when the task was not
125
+ * dispatched for one — a task with no build-plan task is the normal case for anything the creation
126
+ * plane did not admit, and it must read as ABSENT rather than as loading.
127
+ */
128
+ export declare function readBuildPlanTaskCorrelation(context: unknown): string | undefined;
60
129
  /**
61
130
  * The dispatch status of one build-plan task — computed, never stored.
62
131
  *
@@ -69,6 +138,84 @@ export declare enum WorkbenchBuildPlanTaskStatus {
69
138
  LANDED = "landed",
70
139
  BLOCKED = "blocked"
71
140
  }
141
+ /**
142
+ * Why a READY build-plan task cannot make progress, so dispatch passes over it.
143
+ *
144
+ * Each member carries a DIFFERENT remedy, and the remedy is the only thing the operator gets. The
145
+ * companion's dispatch service is the only producer; the workbench board renders it. Declared here
146
+ * rather than beside the producer for the reason `Workbench_BuildDispatchPhase` gives: a browser
147
+ * bundle cannot import the companion, and re-spelling the members board-side would be a second
148
+ * source (#1451).
149
+ *
150
+ * None of them refuses the queue. A stuck task is skipped so every unrelated branch proceeds, and a
151
+ * dispatch refuses only when NOTHING ready can move. The READ door never refuses: it answers with the
152
+ * stuck tasks, because "nothing can run, and here is why" is an answer.
153
+ */
154
+ export declare enum Workbench_BuildTaskStuckReason {
155
+ /** It already ran, and its declared product is absent even from the working tree: fix the declaration or the work. */
156
+ COMPLETED_UNLANDED = "completed_unlanded",
157
+ /**
158
+ * It already ran, and its declared product IS in the working tree but not committed. Landing means
159
+ * committed because acceptance is a commit.
160
+ *
161
+ * Under GUIDED that is the whole story, and the remedy is to review and commit what the run wrote.
162
+ * Under the autonomy posture the loop has ALREADY tried to commit it (#1534), so reaching this state
163
+ * means its accept REFUSED a path — carried changes from before the run, edited since, or not this
164
+ * run's — and the companion's warning names which. The remedy is that refusal's, not a blind commit.
165
+ */
166
+ COMPLETED_AWAITING_COMMIT = "completed_awaiting_commit",
167
+ /** Its run suspended on a question nobody has answered; re-dispatching would abandon that session. */
168
+ PARKED_AWAITING_ANSWER = "parked_awaiting_answer",
169
+ /** It produces a governed document the engine catalog does not define, so no run can author it. */
170
+ NO_DOCUMENT_BLUEPRINT = "no_document_blueprint",
171
+ /**
172
+ * Its coding runs FAILED as many times as the attempt budget allows (#1536), so another identical
173
+ * dispatch is not offered. Only failures the task caused count: a run failing on a check that was
174
+ * already red completes instead (`carriedVerificationFailures`), so this cannot be reached on the
175
+ * tree's account. Read the last failure, fix its cause, and re-arm the task.
176
+ */
177
+ ATTEMPTS_EXHAUSTED = "attempts_exhausted",
178
+ /**
179
+ * A run of it is LIVE right now — selected, admitted or running (#1528). Under a parallel build
180
+ * wave several tasks run at once, and the next selection must pass over one already being built,
181
+ * or two agents would build the same task. Nobody's move: it clears when that run settles.
182
+ */
183
+ IN_FLIGHT = "in_flight"
184
+ }
185
+ /**
186
+ * How far one BUILD DISPATCH got — the whole of what `GET /build/dispatches` can honestly say.
187
+ *
188
+ * ## Why it lives in the SHARED package rather than beside the service that sets it
189
+ *
190
+ * Both ends of this vocabulary are real consumers. The companion's dispatch service is the only
191
+ * PRODUCER — since #1359 by PROJECTION: every dispatch is an actor-system execution from the moment
192
+ * its task is selected, and the phase is a pure function of that execution's row
193
+ * (`projectBuildDispatchPhase`), not a record the companion keeps. Until then it was an in-memory
194
+ * list of five that a companion restart emptied. The workbench's build lane reads it to decide
195
+ * whether a dispatch reads as working, done or broken, and a browser bundle cannot import the
196
+ * companion. Declared companion-side, the board
197
+ * would have had to re-spell the four members — the second-source defect the creation board's own
198
+ * client docstring refuses by name. So it is declared ONCE here, where the workbench vocabulary
199
+ * already lives and which the companion already imports.
200
+ *
201
+ * ## The two executors resolve at DIFFERENT moments, and that is the whole reason for four members
202
+ *
203
+ * A companion generation step's dispatch resolves when the step has FINISHED. A coding task's
204
+ * resolves when the run is ADMITTED, with the agent still working — its outcome is the durable
205
+ * actor-task row the record names. Measured 2026-09-13 on Wonder CRM: the record said `ok: true`
206
+ * for `build-task-company-schema` at the instant its run started, and the route told the caller to
207
+ * poll that record "for the outcome", so a script following it read an admitted run as a success.
208
+ */
209
+ export declare enum Workbench_BuildDispatchPhase {
210
+ /** Selected and handed to its executor; nothing has resolved yet. */
211
+ SUBMITTED = "submitted",
212
+ /** A coding run was admitted and is running. Its outcome is the durable actor-task row `codingTaskId`. */
213
+ ADMITTED = "admitted",
214
+ /** A companion generation step ran to completion. */
215
+ FINISHED = "finished",
216
+ /** The dispatch threw — before a coding run was admitted, or while a generation step ran. */
217
+ FAILED = "failed"
218
+ }
72
219
  /**
73
220
  * One playbook's row on the eligibility board.
74
221
  *
@@ -87,13 +234,25 @@ export declare const Workbench_Playbook_Schema: z.ZodObject<{
87
234
  unmet: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodArray<z.ZodString>>;
88
235
  blockedOnlyBySequencing: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodBoolean>;
89
236
  requiresElicitation: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodBoolean>;
237
+ unansweredQuestionRefs: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodArray<z.ZodString>>;
90
238
  wouldReplace: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodArray<z.ZodString>>;
239
+ outputOwners: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodArray<z.ZodObject<{
240
+ family: z.ZodString;
241
+ playbookRefs: z.ZodArray<z.ZodString>;
242
+ }, z.core.$strip>>>;
243
+ unresolvedPlaybookRefs: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodArray<z.ZodString>>;
91
244
  unlandableFamilies: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodArray<z.ZodString>>;
92
245
  staleOutputs: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodArray<z.ZodObject<{
93
246
  family: z.ZodString;
94
247
  changedInputs: z.ZodArray<z.ZodString>;
95
248
  }, z.core.$strip>>>;
96
- computedAt: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>;
249
+ activeInLine: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodOptional<z.ZodBoolean>>;
250
+ activationDetail: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodOptional<z.ZodString>>;
251
+ openInstances: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodOptional<z.ZodArray<z.ZodObject<{
252
+ instanceKey: z.ZodString;
253
+ purpose: z.ZodString;
254
+ }, z.core.$strip>>>>;
255
+ computedAt: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodDate>;
97
256
  }, z.core.$strip>;
98
257
  export type Workbench_Playbook = z.infer<typeof Workbench_Playbook_Schema>;
99
258
  /**
@@ -110,7 +269,7 @@ export declare const Workbench_BuildPlanTask_Schema: z.ZodObject<{
110
269
  objective: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>;
111
270
  targetKind: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>;
112
271
  functionalTopic: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>;
113
- status: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodEnum<typeof WorkbenchBuildPlanTaskStatus>>;
272
+ status: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodEnum<typeof WorkbenchBuildPlanTaskStatus>>>;
114
273
  prerequisiteTaskRefs: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodArray<z.ZodString>>;
115
274
  }, z.core.$strip>;
116
275
  export type Workbench_BuildPlanTask = z.infer<typeof Workbench_BuildPlanTask_Schema>;
@@ -127,30 +286,126 @@ export declare const Workbench_RunWriteRecord_Schema: z.ZodObject<{
127
286
  playbookRef: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>;
128
287
  workbenchPlaybookId: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>>;
129
288
  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>;
289
+ at: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodDate>;
131
290
  files: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodArray<z.ZodObject<{
132
291
  path: z.ZodString;
133
292
  existedBefore: z.ZodBoolean;
134
293
  }, z.core.$strip>>>;
135
294
  fileCount: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodNumber>;
295
+ acceptedCommitSha: z.ZodNullable<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>>;
136
296
  }, z.core.$strip>;
137
297
  export type Workbench_RunWriteRecord = z.infer<typeof Workbench_RunWriteRecord_Schema>;
138
298
  /** One execution-trace session — the queryable index the board links from. */
139
299
  export declare const Workbench_TraceSession_Schema: z.ZodObject<{
140
300
  workbenchTraceSessionId: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>>;
141
301
  sessionId: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>;
142
- startedAt: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>;
302
+ startedAt: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodDate>;
143
303
  label: z.ZodNullable<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>>;
144
304
  eventCount: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodNumber>;
145
305
  stepCount: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodNumber>;
146
306
  }, z.core.$strip>;
147
307
  export type Workbench_TraceSession = z.infer<typeof Workbench_TraceSession_Schema>;
308
+ /**
309
+ * One governance QUESTION a creator still owes an answer to.
310
+ *
311
+ * ## Why one row per question rather than per questionnaire
312
+ *
313
+ * The companion answers questionnaires — a document definition and the prompts it asks. The thing a
314
+ * creator ACTS on is one question, and the thing a board queues is one question, so the row is the
315
+ * question and the document it belongs to travels on it. That is the same flattening
316
+ * `Workbench_RunWriteRecord` does to a run's files, and for the same reason: a resource's row is
317
+ * whatever a reader selects.
318
+ *
319
+ * ## What it deliberately does NOT carry
320
+ *
321
+ * The ANSWER. Landing answers is a dispatch against the `document-facts-authored` family and goes
322
+ * through the companion's own service; a row here is the question as asked. Giving the row an answer
323
+ * field would make this the second place an answer lives, which is the ledger
324
+ * `one-source-of-truth.md` rule 5 refuses.
325
+ */
326
+ /**
327
+ * One GOVERNED DOCUMENT whose questionnaire a person must answer — the document half of governance.
328
+ *
329
+ * ## Why this is its own resource rather than fields on the question row
330
+ *
331
+ * `derivedFactRefs` and the ask count are facts about the DOCUMENT, not about any one question, and
332
+ * a document-level fact repeated on every question row is a value with no owner: nothing says which
333
+ * copy is authoritative, and eight rows of one document can disagree.
334
+ *
335
+ * It is also what the board's document selector is a list OF. Before this it grouped question rows
336
+ * by `definitionRef` and had nowhere to read the derived facts from — so a panel showing only the
337
+ * human half presented four questions for a document declaring eight, and a reader had no way to
338
+ * tell a short questionnaire from a broken one.
339
+ */
340
+ /**
341
+ * Where a dossier entry STANDS — the two states a question a playbook asks can be in from the
342
+ * creator's side (#1454). "Read from the product" (a typed config key) is a third source the
343
+ * dossier gains with the governed-document join (Step 6); it is not a standing of an interview
344
+ * question, so it is not here.
345
+ */
346
+ export declare enum WorkbenchDossierEntryStanding {
347
+ /** The creator answered; the value is in the committed dossier. */
348
+ FROM_YOU = "from-you",
349
+ /** The playbook asks it and nobody has answered. */
350
+ STILL_NEEDED = "still-needed",
351
+ /**
352
+ * An opened INSTANCE of the step asks it and has no answer of its own, so it runs on the step's own
353
+ * answer (#1609). Answered, not needed: nothing is blocked, and an answer given here replaces the
354
+ * step's for this instance only.
355
+ */
356
+ FROM_THE_STEP = "from-the-step",
357
+ /**
358
+ * The PRODUCT answers it: a governed-document fact the application's own declarations establish,
359
+ * read rather than asked (#1454, gap 4; `compliance-is-derived-from-the-product.md`). Never
360
+ * "needed" and never editable here — its answer changes when what the product declares changes.
361
+ */
362
+ READ_FROM_PRODUCT = "read-from-product"
363
+ }
364
+ export declare const Workbench_GovernanceDocument_Schema: z.ZodObject<{
365
+ workbenchGovernanceDocumentId: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>>;
366
+ definitionRef: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>;
367
+ askCount: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodNumber>;
368
+ derivedFactRefs: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodArray<z.ZodString>>;
369
+ openCount: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodNumber>;
370
+ drafted: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodBoolean>;
371
+ }, z.core.$strip>;
372
+ export type Workbench_GovernanceDocument = z.infer<typeof Workbench_GovernanceDocument_Schema>;
373
+ export declare const Workbench_GovernanceQuestion_Schema: z.ZodObject<{
374
+ workbenchGovernanceQuestionId: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>>;
375
+ definitionRef: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>;
376
+ questionRef: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>;
377
+ factRef: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>;
378
+ creatorPrompt: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>;
379
+ decisionPurpose: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>;
380
+ answerKind: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>;
381
+ factAuthorityKind: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>;
382
+ allowsNotApplicable: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodBoolean>;
383
+ sensitivityRef: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>;
384
+ semanticOptions: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodArray<z.ZodObject<{
385
+ optionRef: z.ZodString;
386
+ creatorMeaning: z.ZodString;
387
+ }, z.core.$strip>>>;
388
+ standing: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodEnum<typeof WorkbenchDossierEntryStanding>>>;
389
+ answerSummary: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodNullable<z.ZodString>>;
390
+ answeredAt: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodNullable<z.ZodDate>>;
391
+ askedNow: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodBoolean>;
392
+ }, z.core.$strip>;
393
+ export type Workbench_GovernanceQuestion = z.infer<typeof Workbench_GovernanceQuestion_Schema>;
148
394
  /** The playbook resource's dispatch verbs. */
149
395
  export declare enum WorkbenchPlaybooks_Operations {
150
396
  /** Fire one playbook run (the row is the playbook; the body carries brief/answers/dryRun). */
151
397
  RUN = "run",
152
398
  /** Answer a run that stopped at a clarification — accept with answers, decline, or cancel. */
153
- RESUME = "resume_run"
399
+ RESUME = "resume_run",
400
+ /**
401
+ * The questions this playbook still needs answered, as a decision payload — the declared interview
402
+ * minus what the dossier already answers (shared decisions included), and `null` when nothing is left
403
+ * to ask: the step declares none, or the dossier answers them all (#1454 review). Read
404
+ * ON DEMAND, at the moment somebody chooses to run it, and deliberately not a field of the row: one
405
+ * playbook alone declares fifteen questions, so carrying them on every row would pay for all of
406
+ * them on every poll in order to show none of them.
407
+ */
408
+ READ_INTERVIEW = "read_interview"
154
409
  }
155
410
  /** The build-plan resource's dispatch verb. */
156
411
  export declare enum WorkbenchBuildPlanTasks_Operations {
@@ -159,12 +414,46 @@ export declare enum WorkbenchBuildPlanTasks_Operations {
159
414
  * the order its author intended, and a per-row dispatch would be a second scheduler disagreeing
160
415
  * with the first (the dispatch service's own doctrine).
161
416
  */
162
- DISPATCH_NEXT = "dispatch_next"
417
+ DISPATCH_NEXT = "dispatch_next",
418
+ /**
419
+ * Append ONE task the creator asked for, beside the plan that exists (#1454, Step 7). Collection-
420
+ * level: the row does not exist until the append answers. Deterministic — no model runs; the
421
+ * companion validates the task against the plan's own graph rules and re-renders the plan file.
422
+ */
423
+ ADD_TASK = "add_task",
424
+ /**
425
+ * Run THIS task, by row. Admitted only when the task is READY — the graph still decides what may
426
+ * run, and this verb only lets the creator pick among the ready ones instead of taking the next.
427
+ * A non-ready task answers 409 naming what it waits on. Costs a coding run.
428
+ */
429
+ DISPATCH_TASK = "dispatch_task",
430
+ /**
431
+ * ACCEPT what this task's latest completed coding run wrote: commit exactly those paths, from the
432
+ * coding-run write register, in one commit whose message names the task. Paths carrying another
433
+ * lane's hunks (dirty at the run's baseline) and paths edited since the run are refused by name
434
+ * unless `force`. Acceptance is a commit (`one-source-of-truth.md`), and under the YOLO posture the
435
+ * system may make it on the creator's word — this verb IS that word.
436
+ */
437
+ ACCEPT = "accept"
163
438
  }
164
- /** The write-record resource's dispatch verb. */
439
+ /** The write-record resource's dispatch verbs. */
165
440
  export declare enum WorkbenchRunWriteRecords_Operations {
166
441
  /** Revert this run's writes. Files edited since are refused by name unless `force`. */
167
- REVERT = "revert_writes"
442
+ REVERT = "revert_writes",
443
+ /**
444
+ * ACCEPT this run's writes: commit exactly the register's paths. A file that no longer holds the
445
+ * bytes the run wrote is refused by name unless `force` — the same divergence test `revert` applies,
446
+ * because in both directions a human edit is never silently swept into the run's account.
447
+ */
448
+ ACCEPT = "accept",
449
+ /**
450
+ * WHAT this run changed, per file — read on demand, one run at a time (#1274). Deliberately not a
451
+ * field of the LIST row: pre-image bytes "belong to the revert mechanism, and a list row carrying
452
+ * every pre-image would ship the working tree's history through every LIST". Computed from the
453
+ * register's own pre/post content, never from `git diff`, so it is the RUN's change and not
454
+ * everything uncommitted at those paths.
455
+ */
456
+ READ_DIFF = "read_diff"
168
457
  }
169
458
  export declare const Workbench_PlaybookRunRequest_Schema: z.ZodObject<{
170
459
  creatorBrief: z.ZodOptional<z.ZodString>;
@@ -173,11 +462,13 @@ export declare const Workbench_PlaybookRunRequest_Schema: z.ZodObject<{
173
462
  answer: z.ZodString;
174
463
  }, z.core.$strip>>>;
175
464
  dryRun: z.ZodOptional<z.ZodBoolean>;
465
+ instanceKey: z.ZodOptional<z.ZodString>;
176
466
  }, z.core.$strip>;
177
467
  export type Workbench_PlaybookRunRequest = z.infer<typeof Workbench_PlaybookRunRequest_Schema>;
178
468
  export declare const Workbench_PlaybookResumeRequest_Schema: z.ZodObject<{
179
469
  runId: z.ZodString;
180
- action: z.ZodString;
470
+ round: z.ZodNumber;
471
+ action: z.ZodEnum<typeof MetaWorkflow_ClarificationAction>;
181
472
  answers: z.ZodOptional<z.ZodArray<z.ZodObject<{
182
473
  ref: z.ZodString;
183
474
  answer: z.ZodString;
@@ -186,10 +477,49 @@ export declare const Workbench_PlaybookResumeRequest_Schema: z.ZodObject<{
186
477
  export type Workbench_PlaybookResumeRequest = z.infer<typeof Workbench_PlaybookResumeRequest_Schema>;
187
478
  export declare const Workbench_BuildPlanDispatchNextRequest_Schema: z.ZodObject<{}, z.core.$strip>;
188
479
  export type Workbench_BuildPlanDispatchNextRequest = z.infer<typeof Workbench_BuildPlanDispatchNextRequest_Schema>;
480
+ /**
481
+ * One task to append (#1454, Step 7). The `target` and `produces` shapes are owned by
482
+ * `@wildo-ai/saas-specifications` (`BuildPlanTaskSchema`), which this package deliberately does not
483
+ * depend on, so they cross here as records and the companion parses them against the real schema
484
+ * before anything is written. `taskRef` is derived from the objective when absent.
485
+ */
486
+ export declare const Workbench_BuildPlanAddTaskRequest_Schema: z.ZodObject<{
487
+ taskRef: z.ZodOptional<z.ZodString>;
488
+ objective: z.ZodString;
489
+ target: z.ZodRecord<z.ZodString, z.ZodUnknown>;
490
+ produces: z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
491
+ functionalTopic: z.ZodString;
492
+ skillRefs: z.ZodArray<z.ZodString>;
493
+ prerequisiteTaskRefs: z.ZodOptional<z.ZodArray<z.ZodString>>;
494
+ servesRefs: z.ZodOptional<z.ZodArray<z.ZodString>>;
495
+ }, z.core.$strip>;
496
+ export type Workbench_BuildPlanAddTaskRequest = z.infer<typeof Workbench_BuildPlanAddTaskRequest_Schema>;
497
+ export declare const Workbench_BuildPlanDispatchTaskRequest_Schema: z.ZodObject<{
498
+ conversationId: z.ZodOptional<z.ZodString>;
499
+ }, z.core.$strip>;
500
+ export type Workbench_BuildPlanDispatchTaskRequest = z.infer<typeof Workbench_BuildPlanDispatchTaskRequest_Schema>;
501
+ export declare const Workbench_AcceptChangesRequest_Schema: z.ZodObject<{
502
+ force: z.ZodOptional<z.ZodBoolean>;
503
+ }, z.core.$strip>;
504
+ export type Workbench_AcceptChangesRequest = z.infer<typeof Workbench_AcceptChangesRequest_Schema>;
189
505
  export declare const Workbench_RunWriteRevertRequest_Schema: z.ZodObject<{
190
506
  force: z.ZodOptional<z.ZodBoolean>;
191
507
  }, z.core.$strip>;
192
508
  export type Workbench_RunWriteRevertRequest = z.infer<typeof Workbench_RunWriteRevertRequest_Schema>;
509
+ /**
510
+ * What a playbook run's answer says about the run, when it says anything (#1781). Absent on a run that
511
+ * concluded, or on a detached submission that is still going.
512
+ *
513
+ * One named home for a vocabulary the companion writes and several readers compare — the run record,
514
+ * the clarification lifecycle, the resume route, and the workbench's summary of a RESUME, which used
515
+ * to read every answer carrying a `runId` as "Started", a cancelled clarification included.
516
+ */
517
+ export declare enum Workbench_PlaybookRunOutcomeStatus {
518
+ /** Healthy, and waiting at a clarification: the run asked the creator something and holds until answered. */
519
+ AWAITING_CREATOR_INPUT = "awaiting_creator_input",
520
+ /** The creator cancelled a clarification: the run was abandoned and does not continue. */
521
+ CANCELLED = "cancelled"
522
+ }
193
523
  /**
194
524
  * Dispatch RESPONSES are LOOSE objects, deliberately: each names the fields the board branches on
195
525
  * and forwards the rest verbatim. The companion routes already spread the whole service result, and
@@ -198,8 +528,7 @@ export type Workbench_RunWriteRevertRequest = z.infer<typeof Workbench_RunWriteR
198
528
  */
199
529
  export declare const Workbench_PlaybookRunOutcome_Schema: z.ZodObject<{
200
530
  runId: z.ZodOptional<z.ZodString>;
201
- /** Present exactly when the run is HEALTHY and waiting at a clarification. */
202
- status: z.ZodOptional<z.ZodString>;
531
+ status: z.ZodOptional<z.ZodEnum<typeof Workbench_PlaybookRunOutcomeStatus>>;
203
532
  note: z.ZodOptional<z.ZodString>;
204
533
  }, z.core.$loose>;
205
534
  export type Workbench_PlaybookRunOutcome = z.infer<typeof Workbench_PlaybookRunOutcome_Schema>;
@@ -208,12 +537,773 @@ export declare const Workbench_BuildPlanDispatchOutcome_Schema: z.ZodObject<{
208
537
  note: z.ZodOptional<z.ZodString>;
209
538
  }, z.core.$loose>;
210
539
  export type Workbench_BuildPlanDispatchOutcome = z.infer<typeof Workbench_BuildPlanDispatchOutcome_Schema>;
540
+ export declare const Workbench_BuildPlanAddTaskOutcome_Schema: z.ZodObject<{
541
+ taskRef: z.ZodOptional<z.ZodString>;
542
+ /** TRUE when no plan existed and this task is its first. */
543
+ createdPlan: z.ZodOptional<z.ZodBoolean>;
544
+ /** Validator findings below the hard floor — worth telling the creator, never a refusal. */
545
+ advisoryFindings: z.ZodOptional<z.ZodArray<z.ZodObject<{
546
+ code: z.ZodString;
547
+ taskRef: z.ZodString;
548
+ message: z.ZodString;
549
+ }, z.core.$strip>>>;
550
+ note: z.ZodOptional<z.ZodString>;
551
+ }, z.core.$loose>;
552
+ export type Workbench_BuildPlanAddTaskOutcome = z.infer<typeof Workbench_BuildPlanAddTaskOutcome_Schema>;
553
+ /** How ACCEPT answers, for a task's coding run or a playbook run alike: what was committed, what was refused and why. */
554
+ export declare const Workbench_AcceptChangesOutcome_Schema: z.ZodObject<{
555
+ commitSha: z.ZodOptional<z.ZodString>;
556
+ committedPaths: z.ZodOptional<z.ZodArray<z.ZodString>>;
557
+ refusedPaths: z.ZodOptional<z.ZodArray<z.ZodObject<{
558
+ path: z.ZodString;
559
+ reason: z.ZodString;
560
+ }, z.core.$strip>>>;
561
+ message: z.ZodOptional<z.ZodString>;
562
+ note: z.ZodOptional<z.ZodString>;
563
+ }, z.core.$loose>;
564
+ export type Workbench_AcceptChangesOutcome = z.infer<typeof Workbench_AcceptChangesOutcome_Schema>;
211
565
  export declare const Workbench_RunWriteRevertOutcome_Schema: z.ZodObject<{
212
566
  runId: z.ZodOptional<z.ZodString>;
213
567
  reverted: z.ZodOptional<z.ZodArray<z.ZodString>>;
214
568
  /** Files whose current bytes differ from what the run wrote — refused by name, revertable with force. */
215
569
  refusedDiverged: z.ZodOptional<z.ZodArray<z.ZodString>>;
570
+ /**
571
+ * Files a LATER recorded run landed on (#1614): refused even under force, because the earlier bytes
572
+ * would destroy that run's work. Each names the run to revert first (#1666).
573
+ */
574
+ refusedLaterRun: z.ZodOptional<z.ZodArray<z.ZodObject<{
575
+ path: z.ZodString;
576
+ runId: z.ZodString;
577
+ }, z.core.$strip>>>;
216
578
  note: z.ZodOptional<z.ZodString>;
217
579
  }, z.core.$loose>;
218
580
  export type Workbench_RunWriteRevertOutcome = z.infer<typeof Workbench_RunWriteRevertOutcome_Schema>;
581
+ /**
582
+ * One BUILD DISPATCH — an attempt to run one build-plan task.
583
+ *
584
+ * The lane's own history: what was selected, when, and how it ended. A task may be dispatched more
585
+ * than once (a failure is re-dispatchable), so the row is the ATTEMPT and `taskRef` is what groups
586
+ * them — the same relationship a run write record has to its playbook.
587
+ */
588
+ /**
589
+ * The NEXT build task — what a dispatch would do, with nothing started. At most one row.
590
+ *
591
+ * ## Why a proposal is a row
592
+ *
593
+ * It looks like a computed answer rather than a record, and that is why it stayed a bespoke read
594
+ * longest. But everything a person asks of it is what they ask of a row: what is it, what may it
595
+ * touch, what must it pass, and how far through the plan are we. It has an identity (`taskRef`), it
596
+ * is polled, it is rendered as a card, and a dispatch acts on it.
597
+ *
598
+ * ## Distinct from the build-plan TASK, deliberately
599
+ *
600
+ * `workbenchBuildPlanTasks` is every task and its status. This is the SELECTION — which one is next,
601
+ * plus the guard rails a dispatch of it would carry (allowed paths, prohibited paths, required
602
+ * checks, installed skills), which belong to the dispatch rather than to the task. Two resources
603
+ * because they answer different questions; the task list never changes because a selection did.
604
+ *
605
+ * ## Zero rows means the build is FINISHED, not that the read failed
606
+ *
607
+ * The companion answers `plan: null` with an `exhausted` count for a completed build, and it is a
608
+ * 200. That used to be a non-2xx, so the end of the journey rendered as "could not look" — the board
609
+ * telling an operator something went wrong at the moment everything had gone right. The counts live
610
+ * on this row so the finished state can say how far it got.
611
+ */
612
+ export declare const Workbench_BuildDispatchPlan_Schema: z.ZodObject<{
613
+ workbenchBuildDispatchPlanId: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>>;
614
+ taskRef: z.ZodNullable<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>>;
615
+ objective: z.ZodNullable<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>>;
616
+ targetKind: z.ZodNullable<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>>;
617
+ generationStepRef: z.ZodNullable<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>>;
618
+ allowedPathPrefixes: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodArray<z.ZodString>>;
619
+ prohibitedPathPrefixes: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodArray<z.ZodString>>;
620
+ requiredChecks: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodArray<z.ZodString>>;
621
+ installedSkillRefs: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodArray<z.ZodString>>;
622
+ readyTaskRefs: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodArray<z.ZodString>>;
623
+ landedTaskRefs: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodArray<z.ZodString>>;
624
+ unverifiableLandedTaskRefs: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodArray<z.ZodString>>;
625
+ exhausted: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodBoolean>;
626
+ stuckTasks: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodArray<z.ZodObject<{
627
+ taskRef: z.ZodString;
628
+ reason: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodEnum<typeof Workbench_BuildTaskStuckReason>>;
629
+ priorTaskId: z.ZodNullable<z.ZodString>;
630
+ uncommittedPaths: z.ZodArray<z.ZodString>;
631
+ question: z.ZodNullable<z.ZodString>;
632
+ documentRef: z.ZodNullable<z.ZodString>;
633
+ }, z.core.$strip>>>;
634
+ taskCount: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodNumber>;
635
+ landedCount: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodNumber>;
636
+ }, z.core.$strip>;
637
+ export type Workbench_BuildDispatchPlan = z.infer<typeof Workbench_BuildDispatchPlan_Schema>;
638
+ export declare const Workbench_BuildDispatch_Schema: z.ZodObject<{
639
+ workbenchBuildDispatchId: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>>;
640
+ taskRef: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>;
641
+ objective: z.ZodNullable<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>>;
642
+ phase: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodEnum<typeof Workbench_BuildDispatchPhase>>>;
643
+ startedAt: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodDate>;
644
+ settledAt: z.ZodNullable<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodDate>>;
645
+ codingTaskId: z.ZodNullable<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>>>;
646
+ error: z.ZodNullable<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>>;
647
+ conversationId: z.ZodNullable<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>>;
648
+ accepted: z.ZodNullable<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodBoolean>>;
649
+ }, z.core.$strip>;
650
+ export type Workbench_BuildDispatch = z.infer<typeof Workbench_BuildDispatch_Schema>;
651
+ /**
652
+ * One playbook run SUSPENDED waiting on a person.
653
+ *
654
+ * The run stopped mid-way and asked something. The row carries where it stopped and what it asked,
655
+ * because both are what a creator needs to answer it — a question with no run context is a question
656
+ * nobody can answer.
657
+ */
658
+ /**
659
+ * WHERE a playbook run is in its life — the one field that decides how its row reads.
660
+ *
661
+ * ## Why one vocabulary and not four collections
662
+ *
663
+ * The companion answers `{ running, runningDetached, interrupted, lastCompleted }`, and a board
664
+ * reading that shape has to know which array means what before it can render anything. They are not
665
+ * four kinds of thing: they are one thing — a run of a playbook — in four states, and the fields that
666
+ * differ between them (a finish time, a verdict, a checkpoint) are exactly the fields a state decides
667
+ * the presence of. Naming the state makes that explicit and makes the row renderable by one layout.
668
+ *
669
+ * The distinction that matters most is RUNNING vs RUNNING_DETACHED, and it is not cosmetic: the
670
+ * first is a composite holding its instance's single-flight subject and never an ordinary run, so a board
671
+ * that read it alone reported "nothing is running" while a fifteen-minute run was in flight.
672
+ */
673
+ export declare enum Workbench_PlaybookRunState {
674
+ /** A composite holding its instance's single-flight subject (#1610): one per running instance, several at once, never an ordinary run. */
675
+ RUNNING = "running",
676
+ /** An ordinary run this companion process is executing right now. */
677
+ RUNNING_DETACHED = "running_detached",
678
+ /** A run that stopped without finishing and left a checkpoint that can be re-run. */
679
+ INTERRUPTED = "interrupted",
680
+ /** The most recent outcome for a playbook ref — settled, with a verdict. */
681
+ COMPLETED = "completed",
682
+ /**
683
+ * A run that STOPPED TO ASK and is waiting on a person — not running, not finished, no verdict.
684
+ *
685
+ * It borrowed COMPLETED until 2026-09-24, flagged by `awaitingFamily`, so every reader had to remember that one
686
+ * "completed" row was not complete. The outcome reader remembered; Home did not, and told the creator a dry run
687
+ * waiting on their answer had "ran and landed its result" (#1271). A state that has to be un-said by another field
688
+ * is a missing member of its vocabulary.
689
+ */
690
+ AWAITING_ANSWER = "awaiting_answer"
691
+ }
692
+ /**
693
+ * One playbook run, in whatever state it is in.
694
+ *
695
+ * Kept ONE-PER-REF for the completed state by the companion, so a COMPLETED row is the last run of
696
+ * that playbook and never a history of it.
697
+ */
698
+ export declare const Workbench_PlaybookRun_Schema: z.ZodObject<{
699
+ workbenchPlaybookRunId: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>>;
700
+ runId: z.ZodNullable<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>>;
701
+ playbookRef: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>;
702
+ instanceKey: z.ZodNullable<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>>;
703
+ traceSessionId: z.ZodNullable<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>>;
704
+ conversationId: z.ZodNullable<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>>;
705
+ state: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodEnum<typeof Workbench_PlaybookRunState>>>;
706
+ startedAt: z.ZodNullable<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodDate>>;
707
+ finishedAt: z.ZodNullable<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodDate>>;
708
+ ok: z.ZodNullable<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodBoolean>>;
709
+ error: z.ZodNullable<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>>;
710
+ completedIterations: z.ZodNullable<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodNumber>>;
711
+ checkpointedAt: z.ZodNullable<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodDate>>;
712
+ awaitingFamily: z.ZodNullable<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>>;
713
+ awaitingRound: z.ZodNullable<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodNumber>>;
714
+ judgeOverall: z.ZodNullable<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodEnum<typeof MetaWorkflow_EvaluationVerdict>>>>;
715
+ judgeCriteria: z.ZodNullable<z.ZodArray<z.ZodObject<{
716
+ criterionRef: z.ZodString;
717
+ verdict: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodEnum<typeof MetaWorkflow_EvaluationVerdict>>;
718
+ rationale: z.ZodString;
719
+ }, z.core.$strip>>>;
720
+ judgeSkipped: z.ZodNullable<z.ZodString>;
721
+ }, z.core.$strip>;
722
+ export type Workbench_PlaybookRun = z.infer<typeof Workbench_PlaybookRun_Schema>;
723
+ export declare const Workbench_WaitingPlaybookRun_Schema: z.ZodObject<{
724
+ workbenchWaitingPlaybookRunId: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>>;
725
+ runId: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>;
726
+ readable: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodBoolean>;
727
+ playbookRef: z.ZodNullable<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>>;
728
+ family: z.ZodNullable<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>>;
729
+ suspendedAt: z.ZodNullable<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodDate>>;
730
+ round: z.ZodNullable<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodNumber>>;
731
+ dryRun: z.ZodNullable<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodBoolean>>;
732
+ requests: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodArray<z.ZodObject<{
733
+ ref: z.ZodString;
734
+ question: z.ZodString;
735
+ why: z.ZodString;
736
+ kind: z.ZodString;
737
+ options: z.ZodArray<z.ZodString>;
738
+ }, z.core.$strip>>>;
739
+ routedToUserId: z.ZodNullable<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>>;
740
+ }, z.core.$strip>;
741
+ export type Workbench_WaitingPlaybookRun = z.infer<typeof Workbench_WaitingPlaybookRun_Schema>;
742
+ /**
743
+ * One coding run PARKED on a question.
744
+ *
745
+ * It arrives inside the coding-agent status payload, which is a singleton and stays a companion
746
+ * read. These do not: a parked question is identified by the task that parked on it, it persists
747
+ * until somebody answers, and a queue of work waiting on a person is the last thing that should be
748
+ * reachable only by reading a status blob.
749
+ */
750
+ /**
751
+ * The coding lane's own posture — ONE row, always present.
752
+ *
753
+ * ## Why a singleton resource rather than the read it replaced
754
+ *
755
+ * It was a companion read answering a status object, and that read ALSO carried the parked
756
+ * questions — a queue keyed by task id — inside it. Two different things in one payload: a queue of
757
+ * work waiting on a person, and a statement about the lane. The queue is
758
+ * `workbenchParkedCodingQuestions`; this is what remains, and it is genuinely one row.
759
+ *
760
+ * ## What each field is careful about
761
+ *
762
+ * `codingAgentRegistered` reports exactly what the dispatch service can ESTABLISH — that every
763
+ * declared agent resolves in the registry — and deliberately does not claim the transport is usable,
764
+ * because that depends on the provider configuration and on a process it has not started. Anything
765
+ * reading this must not upgrade it to "ready".
766
+ *
767
+ * `activeRunTaskId` being NULL does not mean idle. A run that parks on a question clears it while
768
+ * staying very much alive, so a badge derived from this field alone read "idle" with a question
769
+ * outstanding — which is why the parked queue has to be read beside it.
770
+ */
771
+ export declare const Workbench_CodingLaneStatus_Schema: z.ZodObject<{
772
+ workbenchCodingLaneStatusId: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>>;
773
+ codingAgentRegistered: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodBoolean>;
774
+ codingAgentProviderRef: z.ZodNullable<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>>;
775
+ codingAgentSignedIn: z.ZodNullable<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodBoolean>>;
776
+ codingAgentLoginDetail: z.ZodNullable<z.ZodString>;
777
+ codingAgentLoginRemedy: z.ZodNullable<z.ZodString>;
778
+ activeRunTaskId: z.ZodNullable<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>>>;
779
+ activeRunStartedAt: z.ZodNullable<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodDate>>;
780
+ lockFilePath: z.ZodNullable<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>>;
781
+ defaultTimeoutMs: z.ZodNumber;
782
+ hardMaxTimeoutMs: z.ZodNumber;
783
+ defaultMaxCapturedBytes: z.ZodNumber;
784
+ hardMaxCapturedBytes: z.ZodNumber;
785
+ }, z.core.$strip>;
786
+ export type Workbench_CodingLaneStatus = z.infer<typeof Workbench_CodingLaneStatus_Schema>;
787
+ /**
788
+ * The option refs a parked coding run offers. Closed, because the caller BRANCHES on which came back.
789
+ *
790
+ * Both are real decisions here, unlike a playbook interview — which offers only "run with these
791
+ * answers", because declining an interview settles nothing that is waiting. A parked run IS waiting:
792
+ * answering resumes the same session, and cancelling ends the run.
793
+ *
794
+ * ## Why it lives HERE rather than in the companion that mints it
795
+ *
796
+ * Both ends need it and neither can import the other: the companion projects a parked run as a
797
+ * decision, and the workbench reconstructs that decision from the ROW to render the answer form. It
798
+ * was declared in the companion alone until 2026-09-19, which meant a browser wanting to branch on
799
+ * an option had to re-spell the two values — a second copy of a closed vocabulary, compiling
800
+ * perfectly and free to drift.
801
+ */
802
+ export declare enum Workbench_ParkedCodingQuestionOptionRef {
803
+ ANSWER = "answer",
804
+ CANCEL = "cancel"
805
+ }
806
+ /** The single field a parked run asks: the agent's own question, verbatim. */
807
+ export declare const WORKBENCH_PARKED_CODING_QUESTION_FIELD_REF = "answer";
808
+ export declare const Workbench_ParkedCodingQuestion_Schema: z.ZodObject<{
809
+ workbenchParkedCodingQuestionId: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>>;
810
+ taskId: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>>;
811
+ taskRef: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>;
812
+ question: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>;
813
+ parkedAt: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodDate>;
814
+ resumable: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodBoolean>;
815
+ suspensionRef: z.ZodString;
816
+ }, z.core.$strip>;
817
+ export type Workbench_ParkedCodingQuestion = z.infer<typeof Workbench_ParkedCodingQuestion_Schema>;
818
+ /**
819
+ * One dossier entry: a question a playbook declares, and what the creator said to it, if anything.
820
+ *
821
+ * The identity is the pair (`playbookRef`, `questionRef`), sanitized — the key the `creator-inputs`
822
+ * family stores answers under, so the page addresses an answer the way the file does. The
823
+ * question's own text, kind and options are carried on the row (from the compiled catalog) so a
824
+ * surface can ASK it without a second read.
825
+ */
826
+ export declare const Workbench_DossierEntry_Schema: z.ZodObject<{
827
+ workbenchDossierEntryId: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>>;
828
+ playbookRef: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>;
829
+ questionRef: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>;
830
+ instanceKey: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodNullable<z.ZodString>>;
831
+ instancePurpose: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodNullable<z.ZodString>>;
832
+ question: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>;
833
+ kind: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>;
834
+ options: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodArray<z.ZodString>>;
835
+ position: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodNumber>;
836
+ standing: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodEnum<typeof WorkbenchDossierEntryStanding>>>;
837
+ value: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodNullable<z.ZodString>>;
838
+ answeredAt: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodNullable<z.ZodDate>>;
839
+ answeredByRef: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodNullable<z.ZodString>>;
840
+ playbookEligible: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodBoolean>;
841
+ askedNow: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodBoolean>;
842
+ affectsFamilies: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodArray<z.ZodString>>;
843
+ subject: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodEnum<typeof WorkbenchSpecificationArtifactConcern>>>;
844
+ outOfDate: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodBoolean>;
845
+ outOfDateStepRefs: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodArray<z.ZodString>>;
846
+ sharedWithPlaybookRefs: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodArray<z.ZodString>>;
847
+ }, z.core.$strip>;
848
+ export type Workbench_DossierEntry = z.infer<typeof Workbench_DossierEntry_Schema>;
849
+ /** The dossier resource's one write verb. */
850
+ export declare enum WorkbenchDossierEntries_Operations {
851
+ /** Record (or change) the creator's answer to this question. Lands `creator-inputs`; a commit accepts it. */
852
+ ANSWER = "answer"
853
+ }
854
+ export declare const Workbench_DossierAnswerRequest_Schema: z.ZodObject<{
855
+ value: z.ZodString;
856
+ }, z.core.$strip>;
857
+ export type Workbench_DossierAnswerRequest = z.infer<typeof Workbench_DossierAnswerRequest_Schema>;
858
+ export declare const Workbench_DossierAnswerOutcome_Schema: z.ZodObject<{
859
+ /** The answer as STORED (canonical for a `confirm`). */
860
+ value: z.ZodString;
861
+ answeredAt: z.ZodString;
862
+ /** The dossier file this landed in, package-relative. */
863
+ packageRelativePath: z.ZodString;
864
+ /** The asking playbook's questions still unanswered after this one — empty means it can run. */
865
+ unansweredQuestionRefs: z.ZodArray<z.ZodString>;
866
+ }, z.core.$loose>;
867
+ export type Workbench_DossierAnswerOutcome = z.infer<typeof Workbench_DossierAnswerOutcome_Schema>;
868
+ /**
869
+ * The SECTIONS of Home, the conversation page's opening surface (#1454, Step 3) — and the LIST filter
870
+ * a reader of `workbenchCreationHomeLines` narrows by.
871
+ *
872
+ * Three questions, three sections: what happened since I was here, what is asked of me now, what
873
+ * could I do next. Where the application stands is a resource of its own
874
+ * (`workbenchCreationOutcomes`), because an outcome is a measured STATE, not a line that opens
875
+ * something.
876
+ */
877
+ export declare enum WorkbenchCreationHomeSection {
878
+ /** A run completed or cut short, a build dispatch settled — newest first. */
879
+ SINCE = "since",
880
+ /** 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. */
881
+ ASKED = "asked",
882
+ /** 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. */
883
+ SUGGESTION = "suggestion"
884
+ }
885
+ /**
886
+ * The KIND of a Home line — one closed vocabulary across the three sections, because a line's words
887
+ * and its tone are decided by its kind wherever it is rendered, and a section is only where it sits.
888
+ *
889
+ * ## Why the companion decides these and the page does not
890
+ *
891
+ * Until 2026-09-22 the page read SEVEN resources on their own cadences and derived every line itself
892
+ * — 900 lines of client arithmetic over rows a projection had already computed, re-run on every
893
+ * poll, invisible to the assistant's tools and to every other reader. A line is a FACT about the
894
+ * application ("this run was refused", "this task's writes wait to be committed"); facts are
895
+ * derived where the rows are, once, and served as rows themselves (`derive-before-you-ask.md`).
896
+ */
897
+ export declare enum WorkbenchCreationHomeLineKind {
898
+ /** A playbook run completed — landed or refused; `failed` says which. */
899
+ RUN_COMPLETED = "run-completed",
900
+ /** A playbook run the companion's restart cut short; re-running resumes it. Shown whatever its date. */
901
+ RUN_INTERRUPTED = "run-interrupted",
902
+ /** A build dispatch finished or failed; `acceptable` says whether its writes wait to be committed. */
903
+ DISPATCH_SETTLED = "dispatch-settled",
904
+ /** A playbook run suspended on questions only the creator can answer. */
905
+ CLARIFICATION = "clarification",
906
+ /** A coding run parked on a question the agent could not answer alone. */
907
+ PARKED_QUESTION = "parked-question",
908
+ /** A governed document the creator asked for (a draft exists) still needing a fact only they can give. */
909
+ GOVERNANCE_DOCUMENT = "governance-document",
910
+ /** The next READY build task of the dispatch plan. */
911
+ CONTINUE_THE_PLAN = "continue-the-plan",
912
+ /**
913
+ * The plan can run NOTHING: every ready task is stuck, and `stuckReason` says what unblocks it.
914
+ *
915
+ * ASKED rather than SUGGESTION, because every reason is the creator's move — committing what a
916
+ * finished run wrote under GUIDED, or, under the autonomy posture where the loop commits (#1534),
917
+ * resolving the path its accept refused or correcting a declaration no run can satisfy.
918
+ * Without it the plan simply falls silent: `CONTINUE_THE_PLAN` is derived from the next ready task,
919
+ * and a stuck queue has none (#1451, #1463).
920
+ */
921
+ UNBLOCK_THE_PLAN = "unblock-the-plan",
922
+ /** An eligible playbook whose output family is missing. */
923
+ PRODUCE_MISSING = "produce-missing",
924
+ /** An eligible playbook whose output is stale — derived before one of its inputs last changed. */
925
+ REFRESH_STALE = "refresh-stale"
926
+ }
927
+ /**
928
+ * One line of Home. Every line OPENS an element beside the page — `targetResourceType` +
929
+ * `targetResourceId` are the address the engine's hosted pane resolves — and carries the one or two
930
+ * facts the words need: the subject, in the creator's terms, and the flags that change the sentence.
931
+ *
932
+ * `targetResourceType` is a STRING, not `z.enum(WorkbenchShared_ResourceType)`: it is an address, not
933
+ * a vocabulary anyone words, and binding it here would make a line pointing at a resource a newer
934
+ * companion serves unparseable by an older workbench.
935
+ */
936
+ export declare const Workbench_CreationHomeLine_Schema: z.ZodObject<{
937
+ workbenchCreationHomeLineId: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>>;
938
+ section: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodEnum<typeof WorkbenchCreationHomeSection>>>;
939
+ kind: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodEnum<typeof WorkbenchCreationHomeLineKind>>>;
940
+ at: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodNullable<z.ZodDate>>;
941
+ playbookRef: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodNullable<z.ZodString>>;
942
+ taskRef: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodNullable<z.ZodString>>;
943
+ subject: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodNullable<z.ZodString>>;
944
+ failed: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodBoolean>;
945
+ acceptable: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodBoolean>;
946
+ needsAnswers: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodBoolean>;
947
+ stuckReason: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodNullable<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodEnum<typeof Workbench_BuildTaskStuckReason>>>>;
948
+ targetResourceType: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>;
949
+ targetResourceId: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>;
950
+ }, z.core.$strip>;
951
+ export type Workbench_CreationHomeLine = z.infer<typeof Workbench_CreationHomeLine_Schema>;
952
+ /**
953
+ * The four OUTCOMES an application's creation is measured by — the journey in the creator's words
954
+ * (Paul, 2026-09-21: "we do not have a real journey; top-down and bottom-up are internal
955
+ * considerations"). The playbook phases stay machinery underneath; this is what a person sees.
956
+ *
957
+ * Which specification family counts toward which outcome is the companion projection's business
958
+ * (`creation-home-projection.companion.ts`, total over `ApplicationSpecificationFamily`); this
959
+ * package deliberately does not import that vocabulary.
960
+ */
961
+ export declare enum WorkbenchCreationOutcome {
962
+ /** Vision, market, requirements, features, business model, roadmap, brand. */
963
+ KNOW_WHAT_WE_BUILD = "know-what-we-build",
964
+ /** The compliance programme, the processor register, the facts and policies behind every governed document, the risks. */
965
+ KNOW_THE_RULES = "know-the-rules",
966
+ /** The domain plan, the placement plan, the build plan — and the build tasks landed. */
967
+ APPLICATION_WORKS = "application-works",
968
+ /** Governed documents released and published — and every other outcome done. */
969
+ READY_FOR_A_REAL_USER = "ready-for-a-real-user"
970
+ }
971
+ /** The order a person reads the outcomes in: what, rules, works, ready. Also the rows' `position`. */
972
+ export declare const WORKBENCH_CREATION_OUTCOMES_IN_ORDER: readonly WorkbenchCreationOutcome[];
973
+ export declare enum WorkbenchCreationOutcomeStatus {
974
+ NOT_STARTED = "not-started",
975
+ IN_PROGRESS = "in-progress",
976
+ DONE = "done"
977
+ }
978
+ /**
979
+ * Where the application stands on one outcome — ALWAYS four rows, one per outcome, in reading
980
+ * order. "Done" is strict: every family of the outcome landed, valid and not stale; for the
981
+ * application working, every build task landed too; for readiness, every other outcome done as
982
+ * well.
983
+ */
984
+ export declare const Workbench_CreationOutcome_Schema: z.ZodObject<{
985
+ workbenchCreationOutcomeId: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>>;
986
+ outcome: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodEnum<typeof WorkbenchCreationOutcome>>>;
987
+ status: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodEnum<typeof WorkbenchCreationOutcomeStatus>>>;
988
+ position: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodNumber>;
989
+ familiesTotal: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodNumber>;
990
+ familiesLanded: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodNumber>;
991
+ familiesInvalid: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodNumber>;
992
+ familiesMissing: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodNumber>;
993
+ familiesStale: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodNumber>;
994
+ tasksTotal: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodNullable<z.ZodNumber>>;
995
+ tasksLanded: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodNullable<z.ZodNumber>>;
996
+ unavailableRuntimes: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodNullable<z.ZodArray<z.ZodString>>>;
997
+ }, z.core.$strip>;
998
+ export type Workbench_CreationOutcome = z.infer<typeof Workbench_CreationOutcome_Schema>;
999
+ /** An operation that takes nothing. */
1000
+ export declare const Workbench_EmptyRequest_Schema: z.ZodObject<{}, z.core.$strip>;
1001
+ /** `read_interview` on a playbook: the `HumanDecision_Request` it declares, or null. Carried opaquely — the engine owns that vocabulary. */
1002
+ export declare const Workbench_PlaybookInterview_Schema: z.ZodObject<{
1003
+ decision: z.ZodNullable<z.ZodUnknown>;
1004
+ }, z.core.$strip>;
1005
+ export type Workbench_PlaybookInterview = z.infer<typeof Workbench_PlaybookInterview_Schema>;
1006
+ /** One file's change within a run — see `read_diff`. */
1007
+ export declare const Workbench_RunWriteFileDiff_Schema: z.ZodObject<{
1008
+ path: z.ZodString;
1009
+ existedBefore: z.ZodBoolean;
1010
+ diverged: z.ZodBoolean;
1011
+ diff: z.ZodString;
1012
+ }, z.core.$strip>;
1013
+ export type Workbench_RunWriteFileDiff = z.infer<typeof Workbench_RunWriteFileDiff_Schema>;
1014
+ export declare const Workbench_RunWriteDiff_Schema: z.ZodObject<{
1015
+ runId: z.ZodString;
1016
+ playbookRef: z.ZodString;
1017
+ at: z.ZodString;
1018
+ files: z.ZodArray<z.ZodObject<{
1019
+ path: z.ZodString;
1020
+ existedBefore: z.ZodBoolean;
1021
+ diverged: z.ZodBoolean;
1022
+ diff: z.ZodString;
1023
+ }, z.core.$strip>>;
1024
+ }, z.core.$strip>;
1025
+ export type Workbench_RunWriteDiff = z.infer<typeof Workbench_RunWriteDiff_Schema>;
1026
+ /** The trace-session resource's READ-shaped verbs — what a session RECORDED, beyond the summary its row carries. */
1027
+ export declare enum WorkbenchTraceSessions_Operations {
1028
+ /** ONE session: every event in order, and its step artifacts by name (#1328) — what the Conversation tab reads. */
1029
+ READ_RECORD = "read_record",
1030
+ /** What one session SPENT, in tokens — summed from the agent-call usage already in its events (#1274). Never a currency. */
1031
+ READ_USAGE = "read_usage",
1032
+ /** One step ARTIFACT, as text — the brief the model saw, the answer it gave, a coding task's input (#1329). */
1033
+ READ_ARTIFACT = "read_artifact",
1034
+ /**
1035
+ * The trace sessions one ACTOR TASK ran in, latest first — the alias the coding lane writes for
1036
+ * every run (#1328). Collection-level: the task is the input, not a session. Empty for a task the
1037
+ * lane never ran, which is the ordinary case and not an error.
1038
+ */
1039
+ LIST_FOR_TASK = "list_for_task"
1040
+ }
1041
+ /** One traced event, as the companion records it — the conversation's unit (#1328). */
1042
+ export declare const Workbench_TraceSessionEvent_Schema: z.ZodObject<{
1043
+ timestamp: z.ZodString;
1044
+ type: z.ZodString;
1045
+ summary: z.ZodString;
1046
+ stepId: z.ZodOptional<z.ZodString>;
1047
+ payload: z.ZodOptional<z.ZodUnknown>;
1048
+ }, z.core.$strip>;
1049
+ export type Workbench_TraceSessionEvent = z.infer<typeof Workbench_TraceSessionEvent_Schema>;
1050
+ /** One step directory of a session: the artifacts it holds, by file name. Bodies are read one at a time. */
1051
+ export declare const Workbench_TraceSessionStep_Schema: z.ZodObject<{
1052
+ stepDirName: z.ZodString;
1053
+ artifacts: z.ZodArray<z.ZodString>;
1054
+ }, z.core.$strip>;
1055
+ export type Workbench_TraceSessionStep = z.infer<typeof Workbench_TraceSessionStep_Schema>;
1056
+ export declare const Workbench_TraceSessionRecord_Schema: z.ZodObject<{
1057
+ sessionId: z.ZodString;
1058
+ startedAt: z.ZodString;
1059
+ label: z.ZodNullable<z.ZodString>;
1060
+ eventCount: z.ZodNumber;
1061
+ stepCount: z.ZodNumber;
1062
+ events: z.ZodArray<z.ZodObject<{
1063
+ timestamp: z.ZodString;
1064
+ type: z.ZodString;
1065
+ summary: z.ZodString;
1066
+ stepId: z.ZodOptional<z.ZodString>;
1067
+ payload: z.ZodOptional<z.ZodUnknown>;
1068
+ }, z.core.$strip>>;
1069
+ steps: z.ZodArray<z.ZodObject<{
1070
+ stepDirName: z.ZodString;
1071
+ artifacts: z.ZodArray<z.ZodString>;
1072
+ }, z.core.$strip>>;
1073
+ }, z.core.$strip>;
1074
+ export type Workbench_TraceSessionRecord = z.infer<typeof Workbench_TraceSessionRecord_Schema>;
1075
+ /** What one trace session spent, in TOKENS. `callsWithoutUsage` non-zero means the totals are a FLOOR, not the figure. */
1076
+ export declare const Workbench_TraceSessionUsage_Schema: z.ZodObject<{
1077
+ sessionId: z.ZodString;
1078
+ agentCalls: z.ZodNumber;
1079
+ callsWithoutUsage: z.ZodNumber;
1080
+ promptTokens: z.ZodNumber;
1081
+ completionTokens: z.ZodNumber;
1082
+ totalTokens: z.ZodNumber;
1083
+ }, z.core.$strip>;
1084
+ export type Workbench_TraceSessionUsage = z.infer<typeof Workbench_TraceSessionUsage_Schema>;
1085
+ export declare const Workbench_TraceArtifactRequest_Schema: z.ZodObject<{
1086
+ stepDirName: z.ZodString;
1087
+ fileName: z.ZodString;
1088
+ }, z.core.$strip>;
1089
+ export type Workbench_TraceArtifactRequest = z.infer<typeof Workbench_TraceArtifactRequest_Schema>;
1090
+ /** The artifact body, verbatim. A big brief renders by its OUTLINE, computed by the reader — the text is what it is owed. */
1091
+ export declare const Workbench_TraceArtifact_Schema: z.ZodObject<{
1092
+ body: z.ZodString;
1093
+ }, z.core.$strip>;
1094
+ export type Workbench_TraceArtifact = z.infer<typeof Workbench_TraceArtifact_Schema>;
1095
+ export declare const Workbench_TraceSessionsForTaskRequest_Schema: z.ZodObject<{
1096
+ taskId: z.ZodString;
1097
+ }, z.core.$strip>;
1098
+ export declare const Workbench_TraceSessionsForTask_Schema: z.ZodObject<{
1099
+ sessionIds: z.ZodArray<z.ZodString>;
1100
+ }, z.core.$strip>;
1101
+ export type Workbench_TraceSessionsForTask = z.infer<typeof Workbench_TraceSessionsForTask_Schema>;
1102
+ /**
1103
+ * The parked coding question's two verbs — the decision the row IS (see
1104
+ * {@link Workbench_ParkedCodingQuestionOptionRef}): answer it and resume the same session, or end
1105
+ * the run. Both were bespoke companion routes with a browser exemption on the token floor until
1106
+ * 2026-09-22; the row's own operations are where a reader meets them.
1107
+ */
1108
+ export declare enum WorkbenchParkedCodingQuestions_Operations {
1109
+ /** Answer THIS parked run and resume the same agent session. A WRITE: it re-enters a workspace-mutating run behind the worktree lock. */
1110
+ ANSWER = "answer",
1111
+ /**
1112
+ * End THIS parked run. Per row since #1581 (seventh review): with waves (#1528) several runs may be
1113
+ * live, and a collection-level cancel ended whatever this process drove — doing nothing for a park
1114
+ * no chain held, and stopping other runs while this one stayed parked.
1115
+ */
1116
+ CANCEL = "cancel"
1117
+ }
1118
+ export declare const Workbench_ParkedQuestionAnswerRequest_Schema: z.ZodObject<{
1119
+ answer: z.ZodString;
1120
+ suspensionRef: z.ZodString;
1121
+ }, z.core.$strip>;
1122
+ export type Workbench_ParkedQuestionAnswerRequest = z.infer<typeof Workbench_ParkedQuestionAnswerRequest_Schema>;
1123
+ /** The lane's admission of the resumed run — its own shape, carried loosely. */
1124
+ export declare const Workbench_ParkedQuestionAnswerOutcome_Schema: z.ZodObject<{}, z.core.$loose>;
1125
+ export type Workbench_ParkedQuestionAnswerOutcome = z.infer<typeof Workbench_ParkedQuestionAnswerOutcome_Schema>;
1126
+ /**
1127
+ * The row's `cancel` answers ONLY a run it ended or signalled: a run that moved on meanwhile is a 409 the
1128
+ * gate shows, never a `cancelled: false` read as success (#1581, eleventh and twelfth reviews).
1129
+ */
1130
+ export declare const Workbench_CodingRunCancelOutcome_Schema: z.ZodObject<{
1131
+ cancelled: z.ZodLiteral<true>;
1132
+ }, z.core.$loose>;
1133
+ export type Workbench_CodingRunCancelOutcome = z.infer<typeof Workbench_CodingRunCancelOutcome_Schema>;
1134
+ /**
1135
+ * The governed document's one verb: LAND the facts a person established for it as the
1136
+ * `document-facts-authored` family. The row is the document; the body carries the governance scope,
1137
+ * the answers and, for a reviewed fact, the review — a per-question verb with a bare value could
1138
+ * carry none of that, which is why the question resource has no write verb of its own.
1139
+ */
1140
+ export declare enum WorkbenchGovernanceDocuments_Operations {
1141
+ LAND_FACTS = "land_facts"
1142
+ }
1143
+ /**
1144
+ * The landing request's ENVELOPE. The answer SEMANTICS stay with the companion service that owns the
1145
+ * question catalog (it refuses an unknown question, a review with no reviewer, "does not apply" on a
1146
+ * question that does not offer it — each with its own sentence); this refuses a body that is not a
1147
+ * landing request at all.
1148
+ */
1149
+ export declare const Workbench_GovernanceFactsLandingRequest_Schema: z.ZodObject<{
1150
+ definitionRef: z.ZodString;
1151
+ decidedByRef: z.ZodString;
1152
+ decidedAt: z.ZodString;
1153
+ governanceScope: z.ZodObject<{
1154
+ subjectKind: z.ZodString;
1155
+ subjectRef: z.ZodString;
1156
+ scopeRef: z.ZodString;
1157
+ scopeVersion: z.ZodNumber;
1158
+ participantRefs: z.ZodArray<z.ZodString>;
1159
+ precedenceRuleRefs: z.ZodArray<z.ZodString>;
1160
+ }, z.core.$strip>;
1161
+ answers: z.ZodArray<z.ZodUnknown>;
1162
+ dryRun: z.ZodOptional<z.ZodBoolean>;
1163
+ }, z.core.$strip>;
1164
+ export type Workbench_GovernanceFactsLandingRequest = z.infer<typeof Workbench_GovernanceFactsLandingRequest_Schema>;
1165
+ export declare const Workbench_GovernanceFactsLandingOutcome_Schema: z.ZodObject<{
1166
+ family: z.ZodString;
1167
+ packageRelativePath: z.ZodString;
1168
+ exportedConstantName: z.ZodString;
1169
+ renderedSource: z.ZodString;
1170
+ existedBefore: z.ZodBoolean;
1171
+ wiringAlreadyInPlace: z.ZodArray<z.ZodString>;
1172
+ }, z.core.$strip>;
1173
+ export type Workbench_GovernanceFactsLandingOutcome = z.infer<typeof Workbench_GovernanceFactsLandingOutcome_Schema>;
1174
+ /**
1175
+ * Where one secret stands for an application in one environment (#1637).
1176
+ *
1177
+ * The ONE vocabulary for `wildo secrets list`, the creation essentials of `wildo init`/`setup` and
1178
+ * the workbench's secrets section, so the three cannot disagree about what "needed" means. Derived
1179
+ * from what the application declares (the providers it scopes, the capabilities it enables, its systems
1180
+ * of record and inbound endpoints), never from the provider catalogue.
1181
+ */
1182
+ export declare enum ApplicationSecretStanding {
1183
+ /**
1184
+ * Required by something the application uses, unset, and nothing else covers what it is for: a
1185
+ * capability, a provider the application scoped on purpose, a system of record or an inbound endpoint
1186
+ * cannot work until it is provided.
1187
+ */
1188
+ NEEDED = "needed",
1189
+ /** It has a value in this environment, and something reads it. */
1190
+ SET = "set",
1191
+ /** Unset, and nothing waits for it: an optional key, or a capability another provider already serves. */
1192
+ AVAILABLE = "available",
1193
+ /**
1194
+ * It has a value, and nothing CONSUMES it: a provider key no provider declares, a system-of-record key
1195
+ * naming no declared instance or no slot its credential has, an inbound key naming no endpoint. It is
1196
+ * listed to be REMOVED — the one verb it offers. Usually the remains of something renamed or retired
1197
+ * (Odoo was a provider before it was a system of record).
1198
+ *
1199
+ * Unconsumed is not undelivered: the dev companion's `.env` carries EVERY provider key, and the backend
1200
+ * receives a well-formed inbound name or a slot of a declared instance. So a row says which runtimes still
1201
+ * receive it, and removing it regenerates their `.env` files like any other change — otherwise the value
1202
+ * would stay on disk and in the running process after the person was told it was gone.
1203
+ */
1204
+ UNUSED = "unused"
1205
+ }
1206
+ /**
1207
+ * What a secret belongs to, and so which section of `secrets.json` holds it and how its name is formed.
1208
+ * Three kinds because they are three different things, not three spellings of a provider key: a system of
1209
+ * record is deliberately NOT a provider (#1049 D10) and an inbound endpoint secret proves a delivery rather
1210
+ * than authenticating a call.
1211
+ */
1212
+ export declare enum ApplicationSecretKind {
1213
+ /** A provider's secret, declared by its secrets contract; `secrets.json` → `providerEnv`. */
1214
+ PROVIDER = "provider",
1215
+ /**
1216
+ * A credential slot of a declared system of record (#1055), named `WILDO_SOR_<NAME>__<SLOT>`;
1217
+ * `secrets.json` → `systemsOfRecordEnv`. Read by the application backend only.
1218
+ */
1219
+ SYSTEM_OF_RECORD = "system_of_record",
1220
+ /**
1221
+ * The verification secret of an application inbound endpoint (#1596), named
1222
+ * `WILDO_INBOUND_<ENDPOINT_KEY>__SECRET`; `secrets.json` → `inboundEndpointEnv`. Read by the backend only.
1223
+ */
1224
+ INBOUND_ENDPOINT = "inbound_endpoint"
1225
+ }
1226
+ /**
1227
+ * Which GitHub level holds a REMOTE environment's provider secret. Remote secrets are GitHub Actions
1228
+ * secrets; the generated deploy job declares `environment: <env>`, so an environment secret applies to
1229
+ * that environment alone and overrides a repository secret of the same name, which is the fallback.
1230
+ * spec-cite: https://docs.github.com/en/actions/reference/security/secrets — "If an organization, repository, and environment all have a secret with the same name, the environment-level secret takes precedence."
1231
+ */
1232
+ export declare enum ApplicationSecretRemoteLevel {
1233
+ ENVIRONMENT = "environment",
1234
+ REPOSITORY = "repository"
1235
+ }
1236
+ /**
1237
+ * The `id` of one secret row: environment, kind and name (`local--provider--OPENAI_API_KEY`). The same name is
1238
+ * a different secret per environment, and per KIND too — each kind is its own `secrets.json` section, so a
1239
+ * key left in the wrong section during a migration (an Odoo credential still in `providerEnv`) is a second
1240
+ * secret beside the one that belongs, and must be addressable on its own rather than colliding with it.
1241
+ *
1242
+ * The id travels in the URL of the row's page and of its `set` / `unset` operations, and the engine checks
1243
+ * it before any handler runs (`ExecutionContextCreator.validateParameterFormat`). It was
1244
+ * `<environment>::<NAME>` until 2026-09-26: the list rendered, but the row's page and both operations
1245
+ * answered `400 api_call_initiator_parameter_unsupported`, because that check then held every id to
1246
+ * `^[a-zA-Z0-9_-]+$`. Since #2048 it holds an introspected row's id to the introspection format, which admits
1247
+ * more; this id stays inside the narrower alphabet anyway, so it is valid under both, and
1248
+ * `workbench-application-secret-row-id.test.ts` pins that.
1249
+ */
1250
+ export declare function applicationSecretRowId(envName: string, kind: ApplicationSecretKind, envVarName: string): string;
1251
+ /**
1252
+ * Splits a secret row's id back into environment, kind and name, or `null` when it cannot be a row id. It
1253
+ * splits on the first two separators — neither the environment nor the kind can contain one — and the name
1254
+ * keeps any it has. A well-formed id naming nothing real is refused later by `wildo secrets`, which states
1255
+ * the reason itself.
1256
+ */
1257
+ export declare function splitApplicationSecretRowId(rowId: string): {
1258
+ envName: string;
1259
+ kind: ApplicationSecretKind;
1260
+ envVarName: string;
1261
+ } | null;
1262
+ /**
1263
+ * One secret an application declares a use for (or still holds), in one environment — the workbench's
1264
+ * secrets section. Names and standings only: a value never enters this row, in either direction of the wire.
1265
+ */
1266
+ export declare const Workbench_ApplicationSecret_Schema: z.ZodObject<{
1267
+ workbenchApplicationSecretId: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>>;
1268
+ environmentName: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>;
1269
+ envVarName: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>;
1270
+ standing: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodEnum<typeof ApplicationSecretStanding>>>;
1271
+ kind: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodEnum<typeof ApplicationSecretKind>>>;
1272
+ ownerRef: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodNullable<z.ZodString>>;
1273
+ description: z.ZodNullable<z.ZodString>;
1274
+ capabilities: z.ZodArray<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodEnum<typeof EngineCapability>>>;
1275
+ runtimes: z.ZodArray<z.ZodString>;
1276
+ creationEssential: z.ZodBoolean;
1277
+ remoteLevel: z.ZodNullable<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodEnum<typeof ApplicationSecretRemoteLevel>>>;
1278
+ }, z.core.$strip>;
1279
+ export type Workbench_ApplicationSecret = z.infer<typeof Workbench_ApplicationSecret_Schema>;
1280
+ /** The secret row's two verbs. Both run `wildo secrets set/unset`, which is the only writer of a secret. */
1281
+ export declare enum WorkbenchApplicationSecrets_Operations {
1282
+ /**
1283
+ * Provide THIS secret's value. Locally the runtimes that read it restart to pick it up; remotely it
1284
+ * becomes the GitHub Environment secret the deploy reads.
1285
+ */
1286
+ SET = "set",
1287
+ /** Remove THIS secret from its environment. */
1288
+ UNSET = "unset"
1289
+ }
1290
+ export declare const Workbench_ApplicationSecretSetRequest_Schema: z.ZodObject<{
1291
+ value: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodString>>;
1292
+ }, z.core.$strip>;
1293
+ export type Workbench_ApplicationSecretSetRequest = z.infer<typeof Workbench_ApplicationSecretSetRequest_Schema>;
1294
+ /**
1295
+ * What a change did — the shape `wildo secrets set/unset --json` prints (#1637). The local fields are
1296
+ * inert for a remote environment, whose change is the GitHub secret itself.
1297
+ */
1298
+ export declare const Workbench_ApplicationSecretChangeOutcome_Schema: z.ZodObject<{
1299
+ envVarName: z.ZodString;
1300
+ kind: import("@wildo-ai/zod-decorators").DecoratedPrimitiveZodType<z.ZodEnum<typeof ApplicationSecretKind>>;
1301
+ envName: z.ZodString;
1302
+ restartSignalledRuntimes: z.ZodArray<z.ZodString>;
1303
+ envFilesRegenerated: z.ZodBoolean;
1304
+ envFilesRegenerationFailure: z.ZodNullable<z.ZodString>;
1305
+ companionAppliesChange: z.ZodBoolean;
1306
+ companionApplyFailure: z.ZodOptional<z.ZodString>;
1307
+ }, z.core.$strip>;
1308
+ export type Workbench_ApplicationSecretChangeOutcome = z.infer<typeof Workbench_ApplicationSecretChangeOutcome_Schema>;
219
1309
  //# sourceMappingURL=workbench-creation-plane.custom.shared.schemas.d.ts.map