@wildo-ai/platform-core-shared 1.1.8 → 1.1.9

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 (27) hide show
  1. package/dist/esm/workbench/workbench-aspect-resources.custom.shared.schemas.d.ts.map +1 -1
  2. package/dist/esm/workbench/workbench-aspect-resources.custom.shared.schemas.js +26 -0
  3. package/dist/esm/workbench/workbench-aspect-resources.custom.shared.schemas.js.map +1 -1
  4. package/dist/esm/workbench/workbench-creation-console.custom.shared.schemas.d.ts +88 -0
  5. package/dist/esm/workbench/workbench-creation-console.custom.shared.schemas.d.ts.map +1 -1
  6. package/dist/esm/workbench/workbench-creation-console.custom.shared.schemas.js +89 -0
  7. package/dist/esm/workbench/workbench-creation-console.custom.shared.schemas.js.map +1 -1
  8. package/dist/esm/workbench/workbench-creation-conversation.custom.shared.schemas.d.ts +11 -0
  9. package/dist/esm/workbench/workbench-creation-conversation.custom.shared.schemas.d.ts.map +1 -1
  10. package/dist/esm/workbench/workbench-creation-conversation.custom.shared.schemas.js +11 -0
  11. package/dist/esm/workbench/workbench-creation-conversation.custom.shared.schemas.js.map +1 -1
  12. package/dist/esm/workbench/workbench-creation-plane.custom.shared.resources-config.schemas.d.ts +14 -0
  13. package/dist/esm/workbench/workbench-creation-plane.custom.shared.resources-config.schemas.d.ts.map +1 -1
  14. package/dist/esm/workbench/workbench-creation-plane.custom.shared.resources-config.schemas.js +16 -1
  15. package/dist/esm/workbench/workbench-creation-plane.custom.shared.resources-config.schemas.js.map +1 -1
  16. package/dist/esm/workbench/workbench-creation-plane.custom.shared.schemas.d.ts +104 -7
  17. package/dist/esm/workbench/workbench-creation-plane.custom.shared.schemas.d.ts.map +1 -1
  18. package/dist/esm/workbench/workbench-creation-plane.custom.shared.schemas.js +124 -11
  19. package/dist/esm/workbench/workbench-creation-plane.custom.shared.schemas.js.map +1 -1
  20. package/dist/esm/workbench/workbench-resources-types.custom.shared.schemas.d.ts +3 -0
  21. package/dist/esm/workbench/workbench-resources-types.custom.shared.schemas.d.ts.map +1 -1
  22. package/dist/esm/workbench/workbench-resources-types.custom.shared.schemas.js +7 -0
  23. package/dist/esm/workbench/workbench-resources-types.custom.shared.schemas.js.map +1 -1
  24. package/dist/esm/workbench/workbench-resources.custom.shared.resources-config.schemas.d.ts +7 -0
  25. package/dist/esm/workbench/workbench-resources.custom.shared.resources-config.schemas.d.ts.map +1 -1
  26. package/dist/tsconfig.build.tsbuildinfo +1 -1
  27. package/package.json +4 -4
@@ -1,5 +1,5 @@
1
- import { MetaWorkflow_ClarificationAction, MetaWorkflow_EvaluationVerdict } from '@wildo-ai/saas-models/meta-workflows';
2
- import { EngineCapability, } from '@wildo-ai/saas-models';
1
+ import { ApplicationInterviewDepth, MetaWorkflow_ClarificationAction, MetaWorkflow_EvaluationVerdict } from '@wildo-ai/saas-models/meta-workflows';
2
+ import { EngineCapability, HumanDecision_FieldKind, } from '@wildo-ai/saas-models';
3
3
  import { z } from 'zod';
4
4
  import { initZodDecorators, StringEditMode } from '@wildo-ai/zod-decorators';
5
5
  import { WorkbenchSpecificationArtifactConcern } from './workbench-resources.custom.shared.schemas.js';
@@ -450,7 +450,31 @@ export var WorkbenchDossierEntryStanding;
450
450
  * "needed" and never editable here — its answer changes when what the product declares changes.
451
451
  */
452
452
  WorkbenchDossierEntryStanding["READ_FROM_PRODUCT"] = "read-from-product";
453
+ /**
454
+ * Answered by a PROPOSAL, never by the creator (#2129): one they kept because they did not know, or one an
455
+ * unattended round recorded for a quick interview with nobody present. Answered — nothing is blocked — but not
456
+ * decided: the run treats it as a working hypothesis, and this standing is how the dossier lists it to revisit.
457
+ * Changing it records the creator's own answer in its place.
458
+ */
459
+ WorkbenchDossierEntryStanding["ASSUMED"] = "assumed";
453
460
  })(WorkbenchDossierEntryStanding || (WorkbenchDossierEntryStanding = {}));
461
+ /**
462
+ * Whether a CHOICE question's options can be offered right now — for a question whose options are
463
+ * COMPUTED from what the application has landed (the brand name, chosen from the screened candidates).
464
+ * A catalog-authored question is always `AVAILABLE`.
465
+ *
466
+ * Its own vocabulary rather than a sentence on the row: what a person reads is worded once, in the
467
+ * i18n tree, and a renderer can branch on it.
468
+ */
469
+ export var WorkbenchDossierEntryOptionsState;
470
+ (function (WorkbenchDossierEntryOptionsState) {
471
+ /** The options are offered (or the question has no options to compute). */
472
+ WorkbenchDossierEntryOptionsState["AVAILABLE"] = "available";
473
+ /** What the options are computed from has not landed yet, or offers nothing — the question cannot be answered yet. */
474
+ WorkbenchDossierEntryOptionsState["NOT_YET_AVAILABLE"] = "not-yet-available";
475
+ /** An answer exists, and it is no longer one of the offered options (re-screened, or given before the options were computed) — asked again. */
476
+ WorkbenchDossierEntryOptionsState["ANSWER_NO_LONGER_OFFERED"] = "answer-no-longer-offered";
477
+ })(WorkbenchDossierEntryOptionsState || (WorkbenchDossierEntryOptionsState = {}));
454
478
  export const Workbench_GovernanceDocument_Schema = z.object({
455
479
  /** The document's ref, sanitized — a definition ref carries `:` and `.`. */
456
480
  workbenchGovernanceDocumentId: z.string().min(1).isPrimaryKey().isSummaryField(),
@@ -635,14 +659,18 @@ export const Workbench_PlaybookResumeRequest_Schema = z.object({
635
659
  })).optional(),
636
660
  });
637
661
  /*
638
- * DELIBERATELY EMPTY. It carried `maximumTokenBudget`, a ceiling the caller stated and nothing
639
- * ever enforced: `composeBuildTaskCodingContract` dropped the input on 2026-09-08 and now DERIVES
640
- * the budget by summing the selected sources' `estimatedTokens`. A request field that reads as a
641
- * limit and binds nothing is worse than no field, so the whole chain — query parameter, body field,
642
- * and the three service signatures that forwarded it — is gone. The schema stays because the verb
643
- * still takes a (currently empty) request body.
662
+ * What "run the build" takes. With a build parallelism above one the verb starts a parallel WAVE
663
+ * (#2243), as the console's `wildo build run` does; `single: true` runs only the next ready task.
664
+ *
665
+ * It once carried `maximumTokenBudget`, a ceiling the caller stated and nothing ever enforced:
666
+ * `composeBuildTaskCodingContract` dropped the input on 2026-09-08 and now DERIVES the budget by
667
+ * summing the selected sources' `estimatedTokens`. A request field that reads as a limit and binds
668
+ * nothing is worse than no field, so that whole chain is gone; do not bring it back.
644
669
  */
645
- export const Workbench_BuildPlanDispatchNextRequest_Schema = z.object({});
670
+ export const Workbench_BuildPlanDispatchNextRequest_Schema = z.object({
671
+ /** Run only the next ready task, even when the build parallelism would start a wave. */
672
+ single: z.boolean().optional(),
673
+ });
646
674
  /**
647
675
  * One task to append (#1454, Step 7). The `target` and `produces` shapes are owned by
648
676
  * `@wildo-ai/saas-specifications` (`BuildPlanTaskSchema`), which this package deliberately does not
@@ -792,6 +820,13 @@ export const Workbench_BuildDispatchPlan_Schema = z.object({
792
820
  * names the refs, and naming none is what an empty list looks like either way.
793
821
  */
794
822
  unverifiableLandedTaskRefs: z.array(z.string().min(1)).isSummaryField(),
823
+ /**
824
+ * The subset of `landedTaskRefs` that NO RUN OF THEIR OWN produced (#2217): the landing probe found the product
825
+ * before the task ever ran. True when a sibling task or a person wrote it; false when the probe is reading
826
+ * something that is not the product — in `app-creation-test-004` it read a comment, and eighteen website sections
827
+ * counted as landed on pages that listed none. Named so "92 of 92 landed" can never hide it. Empty is healthy.
828
+ */
829
+ landedBeforeAnyRunTaskRefs: z.array(z.string().min(1)).isSummaryField(),
795
830
  /** TRUE when there is no next task because every one has landed. */
796
831
  exhausted: z.boolean().isSummaryField(),
797
832
  /**
@@ -1200,6 +1235,8 @@ export const Workbench_DossierEntry_Schema = z.object({
1200
1235
  /** Where the question sits in its playbook's interview, 0-based — the order a scripted interview asks in. */
1201
1236
  position: z.number().int().min(0).isSummaryField(),
1202
1237
  standing: z.enum(WorkbenchDossierEntryStanding).systemEnum('WorkbenchDossierEntryStanding').isSummaryField(),
1238
+ /** Whether the options can be offered now — see {@link WorkbenchDossierEntryOptionsState}. */
1239
+ optionsState: z.enum(WorkbenchDossierEntryOptionsState).systemEnum('WorkbenchDossierEntryOptionsState').isSummaryField(),
1203
1240
  /** The answer as stored, when there is one. */
1204
1241
  value: z.string().nullable().isSummaryField(),
1205
1242
  answeredAt: z.date().nullable().isSummaryField(),
@@ -1245,16 +1282,87 @@ export const Workbench_DossierEntry_Schema = z.object({
1245
1282
  * so it is asked once.
1246
1283
  */
1247
1284
  sharedWithPlaybookRefs: z.array(z.string()).isSummaryField(),
1285
+ /**
1286
+ * Whether a SIMPLE interview asks this question of the person (#2129) — the shared
1287
+ * `isElicitationQuestionAskedInSimpleInterview`, so the workbench and the console select the same questions.
1288
+ * FALSE: a simple interview proposes it instead — for review on an open surface, or as an assumption an
1289
+ * unattended round records and the creator revisits.
1290
+ */
1291
+ askedInSimpleInterview: z.boolean().isSummaryField(),
1292
+ /** Whether an answer may be PROPOSED when the person does not know (#2129); FALSE for a question only they may answer. */
1293
+ proposable: z.boolean().isSummaryField(),
1294
+ /** The question concerns a regulated domain (#2129): a proposed answer is named to the person before it is kept. */
1295
+ regulatedDomain: z.boolean().isSummaryField(),
1296
+ /** Why an ASSUMED answer was assumed, as the proposer said it; null for any other standing. */
1297
+ assumptionRationale: z.string().nullable().isSummaryField(),
1298
+ /**
1299
+ * How deep THIS APPLICATION's interviews go (#2129) — one value for the whole application, repeated on each
1300
+ * row so an interview reads it with the questions it asks. Null until the person chooses.
1301
+ */
1302
+ interviewDepth: z.enum(ApplicationInterviewDepth).systemEnum('ApplicationInterviewDepth').nullable().isSummaryField(),
1248
1303
  });
1249
1304
  /** The dossier resource's one write verb. */
1250
1305
  export var WorkbenchDossierEntries_Operations;
1251
1306
  (function (WorkbenchDossierEntries_Operations) {
1252
1307
  /** Record (or change) the creator's answer to this question. Lands `creator-inputs`; a commit accepts it. */
1253
1308
  WorkbenchDossierEntries_Operations["ANSWER"] = "answer";
1309
+ /**
1310
+ * Propose answers for this question's step, when the person does not know (#2129). WRITES NOTHING: the
1311
+ * proposals come back to be reviewed, and what the person keeps is answered with `assumed`. Anchored on a
1312
+ * row because a proposal is always for a step's interview — the row names the step and its instance.
1313
+ */
1314
+ WorkbenchDossierEntries_Operations["PROPOSE_ANSWERS"] = "propose_answers";
1315
+ /**
1316
+ * Choose how deep this APPLICATION's interviews go (#2129). Recorded once in the dossier for every
1317
+ * interview; anchored on the row of the interview where the person chose it.
1318
+ */
1319
+ WorkbenchDossierEntries_Operations["SET_INTERVIEW_DEPTH"] = "set_interview_depth";
1254
1320
  })(WorkbenchDossierEntries_Operations || (WorkbenchDossierEntries_Operations = {}));
1321
+ /** Which questions a `propose_answers` call proposes for (#2129). */
1322
+ export var WorkbenchDossierProposalScope;
1323
+ (function (WorkbenchDossierProposalScope) {
1324
+ /** This row's question only — the person said they do not know it. */
1325
+ WorkbenchDossierProposalScope["THIS_QUESTION"] = "this_question";
1326
+ /** Every unanswered question of this row's step that the application's interview depth does not ask — the review step of a simple interview. */
1327
+ WorkbenchDossierProposalScope["WHAT_THE_DEPTH_SKIPS"] = "what_the_depth_skips";
1328
+ })(WorkbenchDossierProposalScope || (WorkbenchDossierProposalScope = {}));
1329
+ export const Workbench_DossierProposeRequest_Schema = z.object({
1330
+ scope: z.enum(WorkbenchDossierProposalScope),
1331
+ });
1332
+ export const Workbench_DossierProposal_Schema = z.object({
1333
+ /** The dossier row the proposal answers — the row to send `answer` with `assumed` to if it is kept. */
1334
+ workbenchDossierEntryId: z.string().min(1),
1335
+ questionRef: z.string().min(1),
1336
+ question: z.string().min(1),
1337
+ /** Only an interview question is proposed, so this is always the engine's field kind. */
1338
+ kind: z.enum(HumanDecision_FieldKind),
1339
+ value: z.string().min(1),
1340
+ rationale: z.string().min(1),
1341
+ regulatedDomain: z.boolean(),
1342
+ });
1343
+ export const Workbench_DossierProposeOutcome_Schema = z.looseObject({
1344
+ proposals: z.array(Workbench_DossierProposal_Schema),
1345
+ /** Asked for, and nothing admissible came back — each with the last refusal. Ask these of the person. */
1346
+ unproposed: z.array(z.object({ questionRef: z.string().min(1), reason: z.string().min(1) })),
1347
+ });
1348
+ export const Workbench_DossierInterviewDepthRequest_Schema = z.object({
1349
+ interviewDepth: z.enum(ApplicationInterviewDepth),
1350
+ });
1351
+ export const Workbench_DossierInterviewDepthOutcome_Schema = z.looseObject({
1352
+ interviewDepth: z.enum(ApplicationInterviewDepth),
1353
+ packageRelativePath: z.string(),
1354
+ });
1255
1355
  export const Workbench_DossierAnswerRequest_Schema = z.object({
1256
1356
  /** The answer, in the creator's words — validated against the question's kind before it is stored. */
1257
1357
  value: z.string().min(1),
1358
+ /**
1359
+ * TRUE when the value is a PROPOSAL the creator let stand because they did not know (#2129): it is
1360
+ * recorded as an assumption, authored by the companion's proposer, and the dossier lists it to revisit.
1361
+ * Refused for a question only the creator may answer.
1362
+ */
1363
+ assumed: z.boolean().optional(),
1364
+ /** With `assumed`: what the proposal rests on, as the proposer said it. */
1365
+ assumptionRationale: z.string().min(1).optional(),
1258
1366
  });
1259
1367
  export const Workbench_DossierAnswerOutcome_Schema = z.looseObject({
1260
1368
  /** The answer as STORED (canonical for a `confirm`). */
@@ -1773,8 +1881,13 @@ export const Workbench_ApplicationSecretSetRequest_Schema = z.object({
1773
1881
  value: z.string().min(1).stringUI({ edit: { editMode: StringEditMode.TEXTAREA } }).isWriteOnlySecret(),
1774
1882
  });
1775
1883
  /**
1776
- * What a change did — the shape `wildo secrets set/unset --json` prints (#1637). The local fields are
1777
- * inert for a remote environment, whose change is the GitHub secret itself.
1884
+ * What a change did — the part of what `wildo secrets set/unset --json` prints that the workbench shows
1885
+ * (#1637). The local fields are inert for a remote environment, whose change is the GitHub secret itself.
1886
+ *
1887
+ * The CLI also prints `companionLoadedInProcess` / `companionLoadFailure` (a terminal `set` asking the
1888
+ * running companion to load the key). They are deliberately absent here: the workbench passes
1889
+ * `--skip-companion-restart` and applies the change in its own process, so they are always false / null
1890
+ * on this path, and this non-strict object drops them.
1778
1891
  */
1779
1892
  export const Workbench_ApplicationSecretChangeOutcome_Schema = z.object({
1780
1893
  envVarName: z.string(),