@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,8 +1,10 @@
1
1
  import { z } from 'zod';
2
- import { CORE_APP_ROLES, CoreResourceOperation, CoreResourceType, IntrospectionTenancyStance, PersistenceAdapter, ResourceOperationRiskLevel, ResourceOperationVariantType, ResourceParentResourceRequirement, ResourceRelationshipAccessScopeStrategy, ResourceRelationshipCardinality, RelationshipNature, createResourceConfiguration_Initialization, createResourcesRelationship, } from '@wildo-ai/saas-models';
2
+ import { CORE_APP_ROLES, CoreResourceOperation, CoreResourceType, IntrospectionTenancyStance, PersistenceAdapter, ResourceCollectionExportFormat, ResourceCollectionExportRowScope, ResourceOperationRiskLevel, ResourceOperationVariantType, ResourceParentResourceRequirement, ResourceRelationshipAccessScopeStrategy, ResourceRelationshipCardinality, RelationshipNature, createResourceConfiguration_Initialization, createResourcesRelationship, } from '@wildo-ai/saas-models';
3
+ import { CustomShared_ResourceType } from '../core/resources/resources-types.custom.shared.schemas.js';
3
4
  import { WorkbenchShared_ResourceFieldIdentifier, WorkbenchShared_ResourceType, } from './workbench-resources-types.custom.shared.schemas.js';
4
5
  import { WORKBENCH_INTROSPECTION_MAX_ROWS_PER_PAGE } from './workbench-resources.custom.shared.resources-config.schemas.js';
5
- import { Workbench_BuildPlanDispatchNextRequest_Schema, Workbench_BuildPlanDispatchOutcome_Schema, Workbench_BuildPlanTask_Schema, Workbench_Playbook_Schema, Workbench_PlaybookResumeRequest_Schema, Workbench_PlaybookRunOutcome_Schema, Workbench_PlaybookRunRequest_Schema, Workbench_RunWriteRecord_Schema, Workbench_RunWriteRevertOutcome_Schema, Workbench_RunWriteRevertRequest_Schema, Workbench_TraceSession_Schema, WorkbenchBuildPlanTasks_Operations, WorkbenchCreationPlaneBehavior, WorkbenchPlaybooks_Operations, WorkbenchRunWriteRecords_Operations, } from './workbench-creation-plane.custom.shared.schemas.js';
6
+ import { WorkbenchSpecificationArtifactConcern } from './workbench-resources.custom.shared.schemas.js';
7
+ import { Workbench_AcceptChangesOutcome_Schema, Workbench_AcceptChangesRequest_Schema, Workbench_BuildPlanAddTaskOutcome_Schema, Workbench_BuildPlanAddTaskRequest_Schema, Workbench_BuildPlanDispatchNextRequest_Schema, Workbench_BuildPlanDispatchTaskRequest_Schema, Workbench_BuildPlanDispatchOutcome_Schema, Workbench_BuildPlanTask_Schema, Workbench_Playbook_Schema, Workbench_PlaybookResumeRequest_Schema, Workbench_PlaybookRunOutcome_Schema, Workbench_PlaybookRunRequest_Schema, Workbench_RunWriteRecord_Schema, Workbench_RunWriteRevertOutcome_Schema, Workbench_RunWriteRevertRequest_Schema, Workbench_BuildDispatchPlan_Schema, Workbench_BuildDispatch_Schema, Workbench_GovernanceDocument_Schema, Workbench_GovernanceQuestion_Schema, Workbench_CodingLaneStatus_Schema, Workbench_CreationHomeLine_Schema, Workbench_CreationOutcome_Schema, Workbench_DossierAnswerOutcome_Schema, Workbench_DossierAnswerRequest_Schema, Workbench_DossierEntry_Schema, WorkbenchDossierEntries_Operations, WorkbenchDossierEntryStanding, Workbench_EmptyRequest_Schema, Workbench_GovernanceFactsLandingOutcome_Schema, Workbench_GovernanceFactsLandingRequest_Schema, WorkbenchGovernanceDocuments_Operations, Workbench_CodingRunCancelOutcome_Schema, Workbench_ParkedQuestionAnswerOutcome_Schema, Workbench_ParkedQuestionAnswerRequest_Schema, WorkbenchParkedCodingQuestions_Operations, Workbench_ApplicationSecret_Schema, Workbench_ApplicationSecretChangeOutcome_Schema, Workbench_ApplicationSecretSetRequest_Schema, WorkbenchApplicationSecrets_Operations, ApplicationSecretStanding, Workbench_PlaybookInterview_Schema, Workbench_RunWriteDiff_Schema, Workbench_TraceArtifact_Schema, Workbench_TraceArtifactRequest_Schema, Workbench_TraceSessionRecord_Schema, Workbench_TraceSessionsForTask_Schema, Workbench_TraceSessionsForTaskRequest_Schema, Workbench_TraceSessionUsage_Schema, WorkbenchTraceSessions_Operations, Workbench_ParkedCodingQuestion_Schema, Workbench_PlaybookRun_Schema, Workbench_WaitingPlaybookRun_Schema, Workbench_TraceSession_Schema, WorkbenchBuildPlanTasks_Operations, WorkbenchCreationPlaneBehavior, WorkbenchPlaybooks_Operations, WorkbenchRunWriteRecords_Operations, } from './workbench-creation-plane.custom.shared.schemas.js';
6
8
  /**
7
9
  * Resource configurations for the CREATION PLANE — the four companion-runtime families the creation
8
10
  * board consumes as resources (`workbench-creation-board-resources.md`, Phase 2; decides #166).
@@ -46,6 +48,18 @@ export const workbenchCreationPlane_ResourcesRelationships = [
46
48
  WorkbenchShared_ResourceType.BUILD_PLAN_TASKS,
47
49
  WorkbenchShared_ResourceType.RUN_WRITE_RECORDS,
48
50
  WorkbenchShared_ResourceType.TRACE_SESSIONS,
51
+ WorkbenchShared_ResourceType.GOVERNANCE_DOCUMENTS,
52
+ WorkbenchShared_ResourceType.GOVERNANCE_QUESTIONS,
53
+ WorkbenchShared_ResourceType.BUILD_DISPATCH_PLAN,
54
+ WorkbenchShared_ResourceType.BUILD_DISPATCHES,
55
+ WorkbenchShared_ResourceType.PLAYBOOK_RUNS,
56
+ WorkbenchShared_ResourceType.WAITING_PLAYBOOK_RUNS,
57
+ WorkbenchShared_ResourceType.CODING_LANE_STATUS,
58
+ WorkbenchShared_ResourceType.PARKED_CODING_QUESTIONS,
59
+ WorkbenchShared_ResourceType.DOSSIER_ENTRIES,
60
+ WorkbenchShared_ResourceType.HOME_LINES,
61
+ WorkbenchShared_ResourceType.CREATION_OUTCOMES,
62
+ WorkbenchShared_ResourceType.APPLICATION_SECRETS,
49
63
  ].map((resourceType) => createResourcesRelationship(CoreResourceType.APPLICATION, resourceType, ResourceRelationshipCardinality.ONE, ResourceRelationshipCardinality.MANY, {
50
64
  nature: RelationshipNature.COMPOSITION,
51
65
  isPrimaryScope: true,
@@ -70,6 +84,53 @@ workbenchCreationPlane_ResourcesRelationships.push(createResourcesRelationship(W
70
84
  accessScopeStrategy: ResourceRelationshipAccessScopeStrategy.STANDALONE,
71
85
  parentResourceRequirement: ResourceParentResourceRequirement.OPTIONAL,
72
86
  contextPolicy: {},
87
+ }),
88
+ /*
89
+ * The two edges OUT OF this lane and into the CONTROL PLANE: a build dispatch that admitted a
90
+ * coding run, and a coding run that parked on a question, both point at the durable actor-task row
91
+ * that carries the real outcome.
92
+ *
93
+ * ## Why these must be declared and not merely decorated
94
+ *
95
+ * `.isForeignKey()` on a field is a CLAIM that the field addresses another resource; the
96
+ * relationship is what says WHICH. The registry resolves a decorated FK through
97
+ * `buildFieldIdentifierToResourceTypeMap`, which learns a non-conventional field name only from an
98
+ * edge's `foreignKeyField` — so a decorated field with no edge is unresolvable, and the frontend
99
+ * registry REFUSES TO INITIALIZE (`frontend_fk_resolution_failed`) rather than rendering a
100
+ * reference that goes nowhere.
101
+ *
102
+ * Both fields shipped decorated and unrelated on 2026-09-18, which meant the workbench could not
103
+ * boot at all. Nothing in the unit suite could see it — the repository builds fine; it is the
104
+ * registry's own initialization that sweeps — and the browser smoke test is what reported it.
105
+ *
106
+ * ## Why the field names are not the target's own identifier
107
+ *
108
+ * Every other FK here is named for the row it addresses (`workbenchPlaybookId`,
109
+ * `workbenchTraceSessionId`). These two are named for the role the id plays in THIS lane — the
110
+ * coding task a dispatch admitted, the task a question parked — because that is what the companion
111
+ * projection emits and what an operator reads in the row. The map is taught by the edge, which is
112
+ * exactly the case `foreignKeyField` exists for.
113
+ */
114
+ createResourcesRelationship(CustomShared_ResourceType.WILDO_APPLICATION_ACTOR_TASKS, WorkbenchShared_ResourceType.BUILD_DISPATCHES, ResourceRelationshipCardinality.ONE, ResourceRelationshipCardinality.MANY, {
115
+ nature: RelationshipNature.REFERENCE,
116
+ foreignKeyField: 'codingTaskId',
117
+ accessScopeStrategy: ResourceRelationshipAccessScopeStrategy.STANDALONE,
118
+ /* OPTIONAL and dangling-tolerant: a generation step admits no coding run, so the field is null. */
119
+ parentResourceRequirement: ResourceParentResourceRequirement.OPTIONAL,
120
+ contextPolicy: {},
121
+ }), createResourcesRelationship(CustomShared_ResourceType.WILDO_APPLICATION_ACTOR_TASKS, WorkbenchShared_ResourceType.CODING_LANE_STATUS, ResourceRelationshipCardinality.ONE, ResourceRelationshipCardinality.MANY, {
122
+ nature: RelationshipNature.REFERENCE,
123
+ foreignKeyField: 'activeRunTaskId',
124
+ accessScopeStrategy: ResourceRelationshipAccessScopeStrategy.STANDALONE,
125
+ /* NULL whenever nothing is running, which is most of the time. */
126
+ parentResourceRequirement: ResourceParentResourceRequirement.OPTIONAL,
127
+ contextPolicy: {},
128
+ }), createResourcesRelationship(CustomShared_ResourceType.WILDO_APPLICATION_ACTOR_TASKS, WorkbenchShared_ResourceType.PARKED_CODING_QUESTIONS, ResourceRelationshipCardinality.ONE, ResourceRelationshipCardinality.MANY, {
129
+ nature: RelationshipNature.REFERENCE,
130
+ foreignKeyField: 'taskId',
131
+ accessScopeStrategy: ResourceRelationshipAccessScopeStrategy.STANDALONE,
132
+ parentResourceRequirement: ResourceParentResourceRequirement.OPTIONAL,
133
+ contextPolicy: {},
73
134
  }));
74
135
  /**
75
136
  * A shared dispatch-variant mold (Phase 3, plan D3): authenticated like the reads, MEDIUM risk by
@@ -99,15 +160,36 @@ function createDispatchApiVariant(params) {
99
160
  * cut the run PUT mid-flight, losing the outcome and the post-success invalidation emits
100
161
  * (issue #237) — so the variant declares its own transport expectation.
101
162
  */
102
- clientRequestTimeoutMs: 600_000,
103
- riskLevel: params.riskLevel ?? ResourceOperationRiskLevel.MEDIUM,
163
+ clientRequestTimeoutMs: params.readOnly ? 30_000 : 600_000,
164
+ riskLevel: params.riskLevel ?? (params.readOnly ? ResourceOperationRiskLevel.LOW : ResourceOperationRiskLevel.MEDIUM),
104
165
  resourceOperationLike: params.resourceOperationLike ?? CoreResourceOperation.UPDATE,
105
166
  requestDto: params.requestDto,
106
167
  customResponseDto: params.customResponseDto,
107
168
  };
108
169
  }
109
- /** Traces are the one dispatch-free family: an index has nothing to fire. */
110
- const WorkbenchTraceSessions_Operations = undefined;
170
+ /**
171
+ * Governance questions are dispatch-free HERE, and that is a decision rather than an omission.
172
+ *
173
+ * Answering one lands the `document-facts-authored` family through the document's own door
174
+ * (`POST /compliance/governance-facts`), which carries the governance scope and, for a reviewed fact,
175
+ * the review — a per-question verb with a bare value could carry neither. Since 2026-09-22 (#1454,
176
+ * Step 6) that door accepts a PARTIAL set and merges by fact, so "half a questionnaire" is no longer
177
+ * the argument; the argument is the shape of an answer. The row is the question as asked, with its
178
+ * standing.
179
+ */
180
+ const WorkbenchGovernanceQuestions_Operations = undefined;
181
+ /**
182
+ * The OBSERVATION resources are dispatch-free, and each for its own reason.
183
+ *
184
+ * A build dispatch is a RECORD of an attempt — there is nothing to fire at a thing that already
185
+ * happened; re-dispatching is a verb on the build-plan TASK. A waiting run is answered by a verb that
186
+ * already exists somewhere truer: `RESUME` rides the playbook row the clarification stopped. (A
187
+ * parked coding question carried the same argument until 2026-09-22, when its bespoke decision
188
+ * channel became the row's own `answer` / `cancel` — the act has ONE door either way, and the row is
189
+ * where a reader meets it.) Adding a second door to a dispatch or a waiting run would put the same
190
+ * act in two places.
191
+ */
192
+ const WorkbenchObservation_Operations = undefined;
111
193
  /**
112
194
  * The four read-only creation-plane factories. READ + LIST only: dispatch VERBS
113
195
  * (run/resume/dispatch-next/revert/cancel) arrive in Phase 3 as CUSTOM operations delegating to
@@ -157,6 +239,13 @@ export const workbenchPlaybooks_ResourceConfiguration_InitializationFactory = (r
157
239
  customResponseDto: Workbench_PlaybookRunOutcome_Schema,
158
240
  })],
159
241
  },
242
+ [WorkbenchPlaybooks_Operations.READ_INTERVIEW]: {
243
+ variants: [createDispatchApiVariant({
244
+ readOnly: true,
245
+ requestDto: Workbench_EmptyRequest_Schema,
246
+ customResponseDto: Workbench_PlaybookInterview_Schema,
247
+ })],
248
+ },
160
249
  },
161
250
  });
162
251
  export const workbenchBuildPlanTasks_ResourceConfiguration_InitializationFactory = (resourcesRelationships) => createResourceConfiguration_Initialization({
@@ -183,6 +272,28 @@ export const workbenchBuildPlanTasks_ResourceConfiguration_InitializationFactory
183
272
  customResponseDto: Workbench_BuildPlanDispatchOutcome_Schema,
184
273
  })],
185
274
  },
275
+ [WorkbenchBuildPlanTasks_Operations.ADD_TASK]: {
276
+ variants: [createDispatchApiVariant({
277
+ /* Collection-level: the row does not exist until the append answers. */
278
+ resourceOperationLike: CoreResourceOperation.UPDATE_MANY,
279
+ requestDto: Workbench_BuildPlanAddTaskRequest_Schema,
280
+ customResponseDto: Workbench_BuildPlanAddTaskOutcome_Schema,
281
+ })],
282
+ },
283
+ [WorkbenchBuildPlanTasks_Operations.DISPATCH_TASK]: {
284
+ variants: [createDispatchApiVariant({
285
+ requestDto: Workbench_BuildPlanDispatchTaskRequest_Schema,
286
+ customResponseDto: Workbench_BuildPlanDispatchOutcome_Schema,
287
+ })],
288
+ },
289
+ [WorkbenchBuildPlanTasks_Operations.ACCEPT]: {
290
+ variants: [createDispatchApiVariant({
291
+ /* HIGH for the same reason `revert_writes` is: the verb's own by-name refusals are the guard. */
292
+ riskLevel: ResourceOperationRiskLevel.HIGH,
293
+ requestDto: Workbench_AcceptChangesRequest_Schema,
294
+ customResponseDto: Workbench_AcceptChangesOutcome_Schema,
295
+ })],
296
+ },
186
297
  },
187
298
  });
188
299
  export const workbenchRunWriteRecords_ResourceConfiguration_InitializationFactory = (resourcesRelationships) => createResourceConfiguration_Initialization({
@@ -229,6 +340,20 @@ export const workbenchRunWriteRecords_ResourceConfiguration_InitializationFactor
229
340
  customResponseDto: Workbench_RunWriteRevertOutcome_Schema,
230
341
  })],
231
342
  },
343
+ [WorkbenchRunWriteRecords_Operations.ACCEPT]: {
344
+ variants: [createDispatchApiVariant({
345
+ riskLevel: ResourceOperationRiskLevel.HIGH,
346
+ requestDto: Workbench_AcceptChangesRequest_Schema,
347
+ customResponseDto: Workbench_AcceptChangesOutcome_Schema,
348
+ })],
349
+ },
350
+ [WorkbenchRunWriteRecords_Operations.READ_DIFF]: {
351
+ variants: [createDispatchApiVariant({
352
+ readOnly: true,
353
+ requestDto: Workbench_EmptyRequest_Schema,
354
+ customResponseDto: Workbench_RunWriteDiff_Schema,
355
+ })],
356
+ },
232
357
  },
233
358
  });
234
359
  export const workbenchTraceSessions_ResourceConfiguration_InitializationFactory = (resourcesRelationships) => createResourceConfiguration_Initialization({
@@ -247,6 +372,372 @@ export const workbenchTraceSessions_ResourceConfiguration_InitializationFactory
247
372
  operationsConfiguration: {
248
373
  [CoreResourceOperation.READ]: { variants: [createCreationPlaneReadApiVariant()] },
249
374
  [CoreResourceOperation.LIST]: { variants: [createCreationPlaneReadListApiVariant()] },
375
+ /* What a session RECORDED, read on demand for the one a reader opened — never LIST-row fields. */
376
+ [WorkbenchTraceSessions_Operations.READ_RECORD]: {
377
+ variants: [createDispatchApiVariant({ readOnly: true, requestDto: Workbench_EmptyRequest_Schema, customResponseDto: Workbench_TraceSessionRecord_Schema })],
378
+ },
379
+ [WorkbenchTraceSessions_Operations.READ_USAGE]: {
380
+ variants: [createDispatchApiVariant({ readOnly: true, requestDto: Workbench_EmptyRequest_Schema, customResponseDto: Workbench_TraceSessionUsage_Schema })],
381
+ },
382
+ [WorkbenchTraceSessions_Operations.READ_ARTIFACT]: {
383
+ variants: [createDispatchApiVariant({ readOnly: true, requestDto: Workbench_TraceArtifactRequest_Schema, customResponseDto: Workbench_TraceArtifact_Schema })],
384
+ },
385
+ [WorkbenchTraceSessions_Operations.LIST_FOR_TASK]: {
386
+ variants: [createDispatchApiVariant({
387
+ /* Collection-level: the actor task is the input, and it names no session row. */
388
+ resourceOperationLike: CoreResourceOperation.UPDATE_MANY,
389
+ readOnly: true,
390
+ requestDto: Workbench_TraceSessionsForTaskRequest_Schema,
391
+ customResponseDto: Workbench_TraceSessionsForTask_Schema,
392
+ })],
393
+ },
394
+ },
395
+ });
396
+ /**
397
+ * The collection-export PDF template the governance-documents listing is printed through (#1645): every
398
+ * governed document's current text — its release, else its latest draft — as one file a creator can
399
+ * hand to a reviewer. The companion binds the template under this id; boot refuses either half alone.
400
+ */
401
+ export const WORKBENCH_GOVERNED_DOCUMENTS_PDF_TEMPLATE_ID = 'workbench.governed-documents.v1';
402
+ export const workbenchGovernanceDocuments_ResourceConfiguration_InitializationFactory = (resourcesRelationships) => createResourceConfiguration_Initialization({
403
+ mainSchema: Workbench_GovernanceDocument_Schema,
404
+ resourceIdentifier: WorkbenchShared_ResourceType.GOVERNANCE_DOCUMENTS,
405
+ resourceFieldIdentifier: WorkbenchShared_ResourceFieldIdentifier[WorkbenchShared_ResourceType.GOVERNANCE_DOCUMENTS],
406
+ resourceRelationships: resourcesRelationships,
407
+ isSystemResource: false,
408
+ persistenceAdapter: PersistenceAdapter.INTROSPECTION,
409
+ introspectionBinding: {
410
+ behavior: WorkbenchCreationPlaneBehavior.GOVERNANCE_DOCUMENTS,
411
+ tenancy: IntrospectionTenancyStance.APPLICATION_RUNTIME,
412
+ },
413
+ coreOperations: [CoreResourceOperation.READ, CoreResourceOperation.LIST],
414
+ customOperation: WorkbenchGovernanceDocuments_Operations,
415
+ operationsConfiguration: {
416
+ [CoreResourceOperation.READ]: { variants: [createCreationPlaneReadApiVariant()] },
417
+ [CoreResourceOperation.LIST]: {
418
+ variants: [{
419
+ ...createCreationPlaneReadListApiVariant(),
420
+ /*
421
+ * PDF only, and the WHOLE set only. A document bundle is read, not processed, so CSV and JSON
422
+ * would print the questionnaire counts nobody asked for; and a bundle cut at one page of the
423
+ * listing would silently leave documents out of the file meant to hold all of them.
424
+ */
425
+ collectionExport: {
426
+ formats: [ResourceCollectionExportFormat.PDF],
427
+ rowScopes: [ResourceCollectionExportRowScope.FULL_RESULT_SET],
428
+ /* The engine catalog defines a handful of governed documents; a bound far above it, required of any PDF. */
429
+ maximumExportedRows: 100,
430
+ pdfTemplateId: WORKBENCH_GOVERNED_DOCUMENTS_PDF_TEMPLATE_ID,
431
+ },
432
+ }],
433
+ },
434
+ /* Lands `document-facts-authored` — it WRITES a file, hence MEDIUM and the run's transport budget. */
435
+ [WorkbenchGovernanceDocuments_Operations.LAND_FACTS]: {
436
+ variants: [createDispatchApiVariant({
437
+ requestDto: Workbench_GovernanceFactsLandingRequest_Schema,
438
+ customResponseDto: Workbench_GovernanceFactsLandingOutcome_Schema,
439
+ })],
440
+ },
441
+ },
442
+ });
443
+ export const workbenchGovernanceQuestions_ResourceConfiguration_InitializationFactory = (resourcesRelationships) => createResourceConfiguration_Initialization({
444
+ mainSchema: Workbench_GovernanceQuestion_Schema,
445
+ resourceIdentifier: WorkbenchShared_ResourceType.GOVERNANCE_QUESTIONS,
446
+ resourceFieldIdentifier: WorkbenchShared_ResourceFieldIdentifier[WorkbenchShared_ResourceType.GOVERNANCE_QUESTIONS],
447
+ resourceRelationships: resourcesRelationships,
448
+ isSystemResource: false,
449
+ persistenceAdapter: PersistenceAdapter.INTROSPECTION,
450
+ introspectionBinding: {
451
+ behavior: WorkbenchCreationPlaneBehavior.GOVERNANCE_QUESTIONS,
452
+ tenancy: IntrospectionTenancyStance.APPLICATION_RUNTIME,
453
+ },
454
+ coreOperations: [CoreResourceOperation.READ, CoreResourceOperation.LIST],
455
+ customOperation: WorkbenchGovernanceQuestions_Operations,
456
+ operationsConfiguration: {
457
+ [CoreResourceOperation.READ]: { variants: [createCreationPlaneReadApiVariant()] },
458
+ [CoreResourceOperation.LIST]: {
459
+ variants: [{
460
+ ...createCreationPlaneReadListApiVariant(),
461
+ /* The dossier page filters by standing (its quick-filter tabs), by document, and by what waits on the person now. */
462
+ filterFields: {
463
+ definitionRef: z.string().min(1),
464
+ /*
465
+ * The ENUM, not a string: the quick-filter tabs and the list's grouping read the filter's
466
+ * declared values, and a `z.string()` declares none — so the tabs this comment promised
467
+ * were never drawn (#1454, found by the gap drive 2026-09-24).
468
+ */
469
+ standing: z.enum(WorkbenchDossierEntryStanding).systemEnum('WorkbenchDossierEntryStanding'),
470
+ askedNow: z.boolean(),
471
+ },
472
+ }],
473
+ },
474
+ },
475
+ });
476
+ export const workbenchBuildDispatchPlan_ResourceConfiguration_InitializationFactory = (resourcesRelationships) => createResourceConfiguration_Initialization({
477
+ mainSchema: Workbench_BuildDispatchPlan_Schema,
478
+ resourceIdentifier: WorkbenchShared_ResourceType.BUILD_DISPATCH_PLAN,
479
+ resourceFieldIdentifier: WorkbenchShared_ResourceFieldIdentifier[WorkbenchShared_ResourceType.BUILD_DISPATCH_PLAN],
480
+ resourceRelationships: resourcesRelationships,
481
+ isSystemResource: false,
482
+ persistenceAdapter: PersistenceAdapter.INTROSPECTION,
483
+ introspectionBinding: {
484
+ behavior: WorkbenchCreationPlaneBehavior.BUILD_DISPATCH_PLAN,
485
+ tenancy: IntrospectionTenancyStance.APPLICATION_RUNTIME,
486
+ },
487
+ coreOperations: [CoreResourceOperation.READ, CoreResourceOperation.LIST],
488
+ customOperation: WorkbenchObservation_Operations,
489
+ operationsConfiguration: {
490
+ [CoreResourceOperation.READ]: { variants: [createCreationPlaneReadApiVariant()] },
491
+ [CoreResourceOperation.LIST]: { variants: [createCreationPlaneReadListApiVariant()] },
492
+ },
493
+ });
494
+ export const workbenchBuildDispatches_ResourceConfiguration_InitializationFactory = (resourcesRelationships) => createResourceConfiguration_Initialization({
495
+ mainSchema: Workbench_BuildDispatch_Schema,
496
+ resourceIdentifier: WorkbenchShared_ResourceType.BUILD_DISPATCHES,
497
+ resourceFieldIdentifier: WorkbenchShared_ResourceFieldIdentifier[WorkbenchShared_ResourceType.BUILD_DISPATCHES],
498
+ resourceRelationships: resourcesRelationships,
499
+ isSystemResource: false,
500
+ persistenceAdapter: PersistenceAdapter.INTROSPECTION,
501
+ introspectionBinding: {
502
+ behavior: WorkbenchCreationPlaneBehavior.BUILD_DISPATCHES,
503
+ tenancy: IntrospectionTenancyStance.APPLICATION_RUNTIME,
504
+ },
505
+ coreOperations: [CoreResourceOperation.READ, CoreResourceOperation.LIST],
506
+ customOperation: WorkbenchObservation_Operations,
507
+ operationsConfiguration: {
508
+ [CoreResourceOperation.READ]: { variants: [createCreationPlaneReadApiVariant()] },
509
+ [CoreResourceOperation.LIST]: { variants: [createCreationPlaneReadListApiVariant()] },
510
+ },
511
+ });
512
+ export const workbenchPlaybookRuns_ResourceConfiguration_InitializationFactory = (resourcesRelationships) => createResourceConfiguration_Initialization({
513
+ mainSchema: Workbench_PlaybookRun_Schema,
514
+ resourceIdentifier: WorkbenchShared_ResourceType.PLAYBOOK_RUNS,
515
+ resourceFieldIdentifier: WorkbenchShared_ResourceFieldIdentifier[WorkbenchShared_ResourceType.PLAYBOOK_RUNS],
516
+ resourceRelationships: resourcesRelationships,
517
+ isSystemResource: false,
518
+ persistenceAdapter: PersistenceAdapter.INTROSPECTION,
519
+ introspectionBinding: {
520
+ behavior: WorkbenchCreationPlaneBehavior.PLAYBOOK_RUNS,
521
+ tenancy: IntrospectionTenancyStance.APPLICATION_RUNTIME,
522
+ },
523
+ coreOperations: [CoreResourceOperation.READ, CoreResourceOperation.LIST],
524
+ customOperation: WorkbenchObservation_Operations,
525
+ operationsConfiguration: {
526
+ [CoreResourceOperation.READ]: { variants: [createCreationPlaneReadApiVariant()] },
527
+ [CoreResourceOperation.LIST]: { variants: [createCreationPlaneReadListApiVariant()] },
528
+ },
529
+ });
530
+ export const workbenchWaitingPlaybookRuns_ResourceConfiguration_InitializationFactory = (resourcesRelationships) => createResourceConfiguration_Initialization({
531
+ mainSchema: Workbench_WaitingPlaybookRun_Schema,
532
+ resourceIdentifier: WorkbenchShared_ResourceType.WAITING_PLAYBOOK_RUNS,
533
+ resourceFieldIdentifier: WorkbenchShared_ResourceFieldIdentifier[WorkbenchShared_ResourceType.WAITING_PLAYBOOK_RUNS],
534
+ resourceRelationships: resourcesRelationships,
535
+ isSystemResource: false,
536
+ persistenceAdapter: PersistenceAdapter.INTROSPECTION,
537
+ introspectionBinding: {
538
+ behavior: WorkbenchCreationPlaneBehavior.WAITING_PLAYBOOK_RUNS,
539
+ tenancy: IntrospectionTenancyStance.APPLICATION_RUNTIME,
540
+ },
541
+ coreOperations: [CoreResourceOperation.READ, CoreResourceOperation.LIST],
542
+ customOperation: WorkbenchObservation_Operations,
543
+ operationsConfiguration: {
544
+ [CoreResourceOperation.READ]: { variants: [createCreationPlaneReadApiVariant()] },
545
+ [CoreResourceOperation.LIST]: { variants: [createCreationPlaneReadListApiVariant()] },
546
+ },
547
+ });
548
+ export const workbenchCodingLaneStatus_ResourceConfiguration_InitializationFactory = (resourcesRelationships) => createResourceConfiguration_Initialization({
549
+ mainSchema: Workbench_CodingLaneStatus_Schema,
550
+ resourceIdentifier: WorkbenchShared_ResourceType.CODING_LANE_STATUS,
551
+ resourceFieldIdentifier: WorkbenchShared_ResourceFieldIdentifier[WorkbenchShared_ResourceType.CODING_LANE_STATUS],
552
+ resourceRelationships: resourcesRelationships,
553
+ isSystemResource: false,
554
+ persistenceAdapter: PersistenceAdapter.INTROSPECTION,
555
+ introspectionBinding: {
556
+ behavior: WorkbenchCreationPlaneBehavior.CODING_LANE_STATUS,
557
+ tenancy: IntrospectionTenancyStance.APPLICATION_RUNTIME,
558
+ },
559
+ coreOperations: [CoreResourceOperation.READ, CoreResourceOperation.LIST],
560
+ customOperation: WorkbenchObservation_Operations,
561
+ operationsConfiguration: {
562
+ [CoreResourceOperation.READ]: { variants: [createCreationPlaneReadApiVariant()] },
563
+ [CoreResourceOperation.LIST]: { variants: [createCreationPlaneReadListApiVariant()] },
564
+ },
565
+ });
566
+ export const workbenchParkedCodingQuestions_ResourceConfiguration_InitializationFactory = (resourcesRelationships) => createResourceConfiguration_Initialization({
567
+ mainSchema: Workbench_ParkedCodingQuestion_Schema,
568
+ resourceIdentifier: WorkbenchShared_ResourceType.PARKED_CODING_QUESTIONS,
569
+ resourceFieldIdentifier: WorkbenchShared_ResourceFieldIdentifier[WorkbenchShared_ResourceType.PARKED_CODING_QUESTIONS],
570
+ resourceRelationships: resourcesRelationships,
571
+ isSystemResource: false,
572
+ persistenceAdapter: PersistenceAdapter.INTROSPECTION,
573
+ introspectionBinding: {
574
+ behavior: WorkbenchCreationPlaneBehavior.PARKED_CODING_QUESTIONS,
575
+ tenancy: IntrospectionTenancyStance.APPLICATION_RUNTIME,
576
+ },
577
+ coreOperations: [CoreResourceOperation.READ, CoreResourceOperation.LIST],
578
+ customOperation: WorkbenchParkedCodingQuestions_Operations,
579
+ operationsConfiguration: {
580
+ [CoreResourceOperation.READ]: { variants: [createCreationPlaneReadApiVariant()] },
581
+ [CoreResourceOperation.LIST]: { variants: [createCreationPlaneReadListApiVariant()] },
582
+ [WorkbenchParkedCodingQuestions_Operations.ANSWER]: {
583
+ variants: [createDispatchApiVariant({
584
+ requestDto: Workbench_ParkedQuestionAnswerRequest_Schema,
585
+ customResponseDto: Workbench_ParkedQuestionAnswerOutcome_Schema,
586
+ })],
587
+ },
588
+ [WorkbenchParkedCodingQuestions_Operations.CANCEL]: {
589
+ variants: [createDispatchApiVariant({
590
+ /* Per row, like `answer`: the row names the run it ends — see the enum. */
591
+ requestDto: Workbench_EmptyRequest_Schema,
592
+ customResponseDto: Workbench_CodingRunCancelOutcome_Schema,
593
+ })],
594
+ },
595
+ },
596
+ });
597
+ /**
598
+ * THE DOSSIER (#1454, Step 5): what the creator was asked and what they said.
599
+ *
600
+ * READ/LIST like every creation-plane projection, plus ONE write verb, `answer`, which lands the
601
+ * `creator-inputs` family. A per-row dispatch because the row IS the question: the identity carries
602
+ * the playbook and question refs the family stores the answer under, so the body carries only the
603
+ * value. `PATCH`-shaped (`UPDATE` operation-like) rather than `PUT`, since an answer changes one
604
+ * field of an existing row and the resource has no CREATE — a question exists because a playbook
605
+ * declares it, never because someone answered it.
606
+ */
607
+ export const workbenchDossierEntries_ResourceConfiguration_InitializationFactory = (resourcesRelationships) => createResourceConfiguration_Initialization({
608
+ mainSchema: Workbench_DossierEntry_Schema,
609
+ resourceIdentifier: WorkbenchShared_ResourceType.DOSSIER_ENTRIES,
610
+ resourceFieldIdentifier: WorkbenchShared_ResourceFieldIdentifier[WorkbenchShared_ResourceType.DOSSIER_ENTRIES],
611
+ resourceRelationships: resourcesRelationships,
612
+ isSystemResource: false,
613
+ persistenceAdapter: PersistenceAdapter.INTROSPECTION,
614
+ introspectionBinding: {
615
+ behavior: WorkbenchCreationPlaneBehavior.DOSSIER_ENTRIES,
616
+ tenancy: IntrospectionTenancyStance.APPLICATION_RUNTIME,
617
+ },
618
+ coreOperations: [CoreResourceOperation.READ, CoreResourceOperation.LIST],
619
+ customOperation: WorkbenchDossierEntries_Operations,
620
+ operationsConfiguration: {
621
+ [CoreResourceOperation.READ]: { variants: [createCreationPlaneReadApiVariant()] },
622
+ [CoreResourceOperation.LIST]: {
623
+ variants: [{
624
+ ...createCreationPlaneReadListApiVariant(),
625
+ /* The scripted interview reads ONE playbook's questions; the dossier page reads all. */
626
+ filterFields: {
627
+ playbookRef: z.string().min(1),
628
+ /* ENUMS, so the standing tabs and the subject grouping have values to read (see the governance list above). */
629
+ standing: z.enum(WorkbenchDossierEntryStanding).systemEnum('WorkbenchDossierEntryStanding'),
630
+ subject: z.enum(WorkbenchSpecificationArtifactConcern).systemEnum('WorkbenchSpecificationArtifactConcern'),
631
+ /* "What waits on me now" — the dossier page's one narrow question, asked server-side. */
632
+ askedNow: z.boolean(),
633
+ },
634
+ }],
635
+ },
636
+ [WorkbenchDossierEntries_Operations.ANSWER]: {
637
+ variants: [createDispatchApiVariant({
638
+ requestDto: Workbench_DossierAnswerRequest_Schema,
639
+ customResponseDto: Workbench_DossierAnswerOutcome_Schema,
640
+ })],
641
+ },
642
+ },
643
+ });
644
+ /**
645
+ * HOME's LINES (#1454): READ/LIST like every creation-plane projection, no write verb — a line is a
646
+ * pointer at an element whose own operations do the work (Run on a playbook, Answer on a waiting
647
+ * run, Accept on a dispatch). `section` is the one declared filter: Home reads the three sections it
648
+ * lays out, and the assistant asks for "what is asked of the creator" without reading the rest.
649
+ */
650
+ export const workbenchCreationHomeLines_ResourceConfiguration_InitializationFactory = (resourcesRelationships) => createResourceConfiguration_Initialization({
651
+ mainSchema: Workbench_CreationHomeLine_Schema,
652
+ resourceIdentifier: WorkbenchShared_ResourceType.HOME_LINES,
653
+ resourceFieldIdentifier: WorkbenchShared_ResourceFieldIdentifier[WorkbenchShared_ResourceType.HOME_LINES],
654
+ resourceRelationships: resourcesRelationships,
655
+ isSystemResource: false,
656
+ persistenceAdapter: PersistenceAdapter.INTROSPECTION,
657
+ introspectionBinding: {
658
+ behavior: WorkbenchCreationPlaneBehavior.HOME_LINES,
659
+ tenancy: IntrospectionTenancyStance.APPLICATION_RUNTIME,
660
+ },
661
+ coreOperations: [CoreResourceOperation.READ, CoreResourceOperation.LIST],
662
+ customOperation: WorkbenchObservation_Operations,
663
+ operationsConfiguration: {
664
+ [CoreResourceOperation.READ]: { variants: [createCreationPlaneReadApiVariant()] },
665
+ [CoreResourceOperation.LIST]: {
666
+ variants: [{
667
+ ...createCreationPlaneReadListApiVariant(),
668
+ filterFields: { section: z.string().min(1) },
669
+ }],
670
+ },
671
+ },
672
+ });
673
+ /** The four creation OUTCOMES (#1454): READ/LIST, always four rows, nothing to write. */
674
+ export const workbenchCreationOutcomes_ResourceConfiguration_InitializationFactory = (resourcesRelationships) => createResourceConfiguration_Initialization({
675
+ mainSchema: Workbench_CreationOutcome_Schema,
676
+ resourceIdentifier: WorkbenchShared_ResourceType.CREATION_OUTCOMES,
677
+ resourceFieldIdentifier: WorkbenchShared_ResourceFieldIdentifier[WorkbenchShared_ResourceType.CREATION_OUTCOMES],
678
+ resourceRelationships: resourcesRelationships,
679
+ isSystemResource: false,
680
+ persistenceAdapter: PersistenceAdapter.INTROSPECTION,
681
+ introspectionBinding: {
682
+ behavior: WorkbenchCreationPlaneBehavior.CREATION_OUTCOMES,
683
+ tenancy: IntrospectionTenancyStance.APPLICATION_RUNTIME,
684
+ },
685
+ coreOperations: [CoreResourceOperation.READ, CoreResourceOperation.LIST],
686
+ customOperation: WorkbenchObservation_Operations,
687
+ operationsConfiguration: {
688
+ [CoreResourceOperation.READ]: { variants: [createCreationPlaneReadApiVariant()] },
689
+ [CoreResourceOperation.LIST]: { variants: [createCreationPlaneReadListApiVariant()] },
690
+ },
691
+ });
692
+ /**
693
+ * THE SECRETS SECTION (#1637): the provider secrets the application declares a use for, one row per
694
+ * (environment, secret), local and remote — names and standings, never values.
695
+ *
696
+ * `set` and `unset` per row. Both are `OVERRIDE_ALL` companion-side and run `wildo secrets set/unset`,
697
+ * the one writer of a secret: the value travels to it on stdin and is never held by the companion, so
698
+ * a secret has exactly one mutation path whether a person types it in a terminal or here. MEDIUM risk
699
+ * like every creation-plane write — it restarts the local runtimes that read the key, or replaces a
700
+ * deploy's GitHub secret.
701
+ */
702
+ export const workbenchApplicationSecrets_ResourceConfiguration_InitializationFactory = (resourcesRelationships) => createResourceConfiguration_Initialization({
703
+ mainSchema: Workbench_ApplicationSecret_Schema,
704
+ resourceIdentifier: WorkbenchShared_ResourceType.APPLICATION_SECRETS,
705
+ resourceFieldIdentifier: WorkbenchShared_ResourceFieldIdentifier[WorkbenchShared_ResourceType.APPLICATION_SECRETS],
706
+ resourceRelationships: resourcesRelationships,
707
+ isSystemResource: false,
708
+ persistenceAdapter: PersistenceAdapter.INTROSPECTION,
709
+ introspectionBinding: {
710
+ behavior: WorkbenchCreationPlaneBehavior.APPLICATION_SECRETS,
711
+ tenancy: IntrospectionTenancyStance.APPLICATION_RUNTIME,
712
+ },
713
+ coreOperations: [CoreResourceOperation.READ, CoreResourceOperation.LIST],
714
+ customOperation: WorkbenchApplicationSecrets_Operations,
715
+ operationsConfiguration: {
716
+ [CoreResourceOperation.READ]: { variants: [createCreationPlaneReadApiVariant()] },
717
+ [CoreResourceOperation.LIST]: { variants: [createCreationPlaneReadListApiVariant()] },
718
+ [WorkbenchApplicationSecrets_Operations.SET]: {
719
+ variants: [{
720
+ ...createDispatchApiVariant({
721
+ requestDto: Workbench_ApplicationSecretSetRequest_Schema,
722
+ customResponseDto: Workbench_ApplicationSecretChangeOutcome_Schema,
723
+ }),
724
+ /* A key nothing reads offers only its removal: `wildo secrets set` refuses to give it a value. */
725
+ enabledCondition: ({ currentObject }) => currentObject.standing !== ApplicationSecretStanding.UNUSED,
726
+ }],
727
+ },
728
+ [WorkbenchApplicationSecrets_Operations.UNSET]: {
729
+ variants: [{
730
+ ...createDispatchApiVariant({
731
+ requestDto: Workbench_EmptyRequest_Schema,
732
+ customResponseDto: Workbench_ApplicationSecretChangeOutcome_Schema,
733
+ }),
734
+ /*
735
+ * Only a secret that HAS a value can be removed — one something reads, or an UNUSED one, which is
736
+ * listed precisely to be removed. Offering it on an unset one would state nothing.
737
+ */
738
+ enabledCondition: ({ currentObject }) => currentObject.standing === ApplicationSecretStanding.SET || currentObject.standing === ApplicationSecretStanding.UNUSED,
739
+ }],
740
+ },
250
741
  },
251
742
  });
252
743
  export const workbenchCreationPlane_ResourcesConfigurationsFactoryMap = {
@@ -254,5 +745,17 @@ export const workbenchCreationPlane_ResourcesConfigurationsFactoryMap = {
254
745
  [WorkbenchShared_ResourceType.BUILD_PLAN_TASKS]: workbenchBuildPlanTasks_ResourceConfiguration_InitializationFactory,
255
746
  [WorkbenchShared_ResourceType.RUN_WRITE_RECORDS]: workbenchRunWriteRecords_ResourceConfiguration_InitializationFactory,
256
747
  [WorkbenchShared_ResourceType.TRACE_SESSIONS]: workbenchTraceSessions_ResourceConfiguration_InitializationFactory,
748
+ [WorkbenchShared_ResourceType.GOVERNANCE_DOCUMENTS]: workbenchGovernanceDocuments_ResourceConfiguration_InitializationFactory,
749
+ [WorkbenchShared_ResourceType.GOVERNANCE_QUESTIONS]: workbenchGovernanceQuestions_ResourceConfiguration_InitializationFactory,
750
+ [WorkbenchShared_ResourceType.BUILD_DISPATCH_PLAN]: workbenchBuildDispatchPlan_ResourceConfiguration_InitializationFactory,
751
+ [WorkbenchShared_ResourceType.BUILD_DISPATCHES]: workbenchBuildDispatches_ResourceConfiguration_InitializationFactory,
752
+ [WorkbenchShared_ResourceType.PLAYBOOK_RUNS]: workbenchPlaybookRuns_ResourceConfiguration_InitializationFactory,
753
+ [WorkbenchShared_ResourceType.WAITING_PLAYBOOK_RUNS]: workbenchWaitingPlaybookRuns_ResourceConfiguration_InitializationFactory,
754
+ [WorkbenchShared_ResourceType.CODING_LANE_STATUS]: workbenchCodingLaneStatus_ResourceConfiguration_InitializationFactory,
755
+ [WorkbenchShared_ResourceType.PARKED_CODING_QUESTIONS]: workbenchParkedCodingQuestions_ResourceConfiguration_InitializationFactory,
756
+ [WorkbenchShared_ResourceType.DOSSIER_ENTRIES]: workbenchDossierEntries_ResourceConfiguration_InitializationFactory,
757
+ [WorkbenchShared_ResourceType.HOME_LINES]: workbenchCreationHomeLines_ResourceConfiguration_InitializationFactory,
758
+ [WorkbenchShared_ResourceType.CREATION_OUTCOMES]: workbenchCreationOutcomes_ResourceConfiguration_InitializationFactory,
759
+ [WorkbenchShared_ResourceType.APPLICATION_SECRETS]: workbenchApplicationSecrets_ResourceConfiguration_InitializationFactory,
257
760
  };
258
761
  //# sourceMappingURL=workbench-creation-plane.custom.shared.resources-config.schemas.js.map