@cat-factory/contracts 0.301.0 → 0.303.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) hide show
  1. package/dist/build-ladder.d.ts +36 -0
  2. package/dist/build-ladder.d.ts.map +1 -1
  3. package/dist/build-ladder.js +34 -0
  4. package/dist/build-ladder.js.map +1 -1
  5. package/dist/entities.d.ts +21 -0
  6. package/dist/entities.d.ts.map +1 -1
  7. package/dist/entities.js +21 -0
  8. package/dist/entities.js.map +1 -1
  9. package/dist/errors.d.ts +1 -1
  10. package/dist/errors.d.ts.map +1 -1
  11. package/dist/errors.js +12 -0
  12. package/dist/errors.js.map +1 -1
  13. package/dist/execution.d.ts +40 -6
  14. package/dist/execution.d.ts.map +1 -1
  15. package/dist/execution.js +20 -3
  16. package/dist/execution.js.map +1 -1
  17. package/dist/merge.d.ts +834 -22
  18. package/dist/merge.d.ts.map +1 -1
  19. package/dist/merge.js +94 -21
  20. package/dist/merge.js.map +1 -1
  21. package/dist/public-api.d.ts +65 -2
  22. package/dist/public-api.d.ts.map +1 -1
  23. package/dist/public-api.js +57 -3
  24. package/dist/public-api.js.map +1 -1
  25. package/dist/requests.d.ts +13 -0
  26. package/dist/requests.d.ts.map +1 -1
  27. package/dist/requests.js +13 -0
  28. package/dist/requests.js.map +1 -1
  29. package/dist/requirements.d.ts +99 -0
  30. package/dist/requirements.d.ts.map +1 -1
  31. package/dist/requirements.js +94 -0
  32. package/dist/requirements.js.map +1 -1
  33. package/dist/routes/agent-runs.d.ts +2 -0
  34. package/dist/routes/agent-runs.d.ts.map +1 -1
  35. package/dist/routes/bug-hunt.d.ts +2 -0
  36. package/dist/routes/bug-hunt.d.ts.map +1 -1
  37. package/dist/routes/execution.d.ts +9 -0
  38. package/dist/routes/execution.d.ts.map +1 -1
  39. package/dist/routes/human-review.d.ts +1 -0
  40. package/dist/routes/human-review.d.ts.map +1 -1
  41. package/dist/routes/human-test.d.ts +5 -0
  42. package/dist/routes/human-test.d.ts.map +1 -1
  43. package/dist/routes/merge.d.ts +799 -0
  44. package/dist/routes/merge.d.ts.map +1 -1
  45. package/dist/routes/merge.js +67 -8
  46. package/dist/routes/merge.js.map +1 -1
  47. package/dist/routes/pipelines.d.ts +14 -0
  48. package/dist/routes/pipelines.d.ts.map +1 -1
  49. package/dist/routes/public-api.d.ts +3 -0
  50. package/dist/routes/public-api.d.ts.map +1 -1
  51. package/dist/routes/requirements.d.ts +12 -0
  52. package/dist/routes/requirements.d.ts.map +1 -1
  53. package/dist/routes/visual-confirm.d.ts +3 -0
  54. package/dist/routes/visual-confirm.d.ts.map +1 -1
  55. package/dist/routes/workspaces.d.ts +10 -0
  56. package/dist/routes/workspaces.d.ts.map +1 -1
  57. package/dist/run-provenance.d.ts +22 -3
  58. package/dist/run-provenance.d.ts.map +1 -1
  59. package/dist/run-provenance.js +23 -4
  60. package/dist/run-provenance.js.map +1 -1
  61. package/dist/snapshot.d.ts +12 -2
  62. package/dist/snapshot.d.ts.map +1 -1
  63. package/dist/snapshot.js +9 -4
  64. package/dist/snapshot.js.map +1 -1
  65. package/package.json +1 -1
package/dist/merge.d.ts CHANGED
@@ -827,33 +827,777 @@ export type MergeAssessment = v.InferOutput<typeof mergeAssessmentSchema>;
827
827
  export declare const runAutonomySchema: v.PicklistSchema<["attended", "unattended"], undefined>;
828
828
  export type RunAutonomy = v.InferOutput<typeof runAutonomySchema>;
829
829
  /**
830
- * WHICH of a workspace's two default policies a run resolves when its task pinned none.
831
- *
832
- * `interactive` is a run somebody started in the app and is watching; `unattended` is one nothing
833
- * is watching, whatever surface dispatched it. The mapping from a run's `IntakeOrigin` to this is
834
- * `riskPolicyDefaultScopeFor` in `run-provenance.ts`, deliberately its own `Record` rather than a
835
- * reuse of `isHeadlessIntake`: that predicate answers "is there a stable place to hold a
836
- * CONVERSATION", which a schedule fire fails for reasons that have nothing to do with whether
837
- * anyone is watching it run.
830
+ * A named, per-workspace merge policy: the upper bounds (0..1) a PR's assessment
831
+ * must stay within to auto-merge, plus the CI-fixer attempt budget. A workspace carries TWO
832
+ * defaults, one per `runDefaultScopeSchema` (`run-provenance.ts`): `isDefault` governs a task somebody
833
+ * started in the app, `isUnattendedDefault` one nothing is watching. Either is used by any task
834
+ * that has not picked a policy explicitly.
838
835
  */
839
- export declare const riskPolicyDefaultScopeSchema: v.PicklistSchema<["interactive", "unattended"], undefined>;
840
- export type RiskPolicyDefaultScope = v.InferOutput<typeof riskPolicyDefaultScopeSchema>;
836
+ export declare const riskPolicySchema: v.ObjectSchema<{
837
+ readonly id: v.StringSchema<undefined>;
838
+ readonly name: v.StringSchema<undefined>;
839
+ /** Auto-merge only when the assessment's complexity is at or below this. */
840
+ readonly maxComplexity: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 0, undefined>, v.MaxValueAction<number, 1, undefined>]>;
841
+ /** Auto-merge only when the assessment's risk is at or below this. */
842
+ readonly maxRisk: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 0, undefined>, v.MaxValueAction<number, 1, undefined>]>;
843
+ /** Auto-merge only when the assessment's impact is at or below this. */
844
+ readonly maxImpact: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 0, undefined>, v.MaxValueAction<number, 1, undefined>]>;
845
+ /** How many times the `ci-fixer` agent may try to turn CI green before giving up. */
846
+ readonly ciMaxAttempts: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 0, undefined>]>;
847
+ /**
848
+ * How many reviewer passes the iterative requirements-review loop may run before it
849
+ * stops on its own and asks the human to pick (extra round / proceed anyway / reset the
850
+ * task). One reviewer pass = one iteration; the initial review counts as iteration 1.
851
+ */
852
+ readonly maxRequirementIterations: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 1, undefined>]>;
853
+ /**
854
+ * The highest finding severity the requirements review tolerates WITHOUT stopping. When
855
+ * every outstanding finding from a reviewer pass is at or below this level, the findings
856
+ * are recorded but the run does NOT pause for human approval — the incorporation
857
+ * companion is skipped and the next pipeline step runs automatically. `none` (the
858
+ * default) tolerates nothing, so any finding pauses for a human; `high` tolerates
859
+ * everything. Severity order: none < low < medium < high.
860
+ */
861
+ readonly maxRequirementConcernAllowed: v.PicklistSchema<["none", "low", "medium", "high"], undefined>;
862
+ /**
863
+ * How many times the test quality-control companion may loop the Tester for a more
864
+ * complete report before it stops gating and lets the run proceed to the greenlight /
865
+ * fixer decision. One QC-driven Tester re-run = one iteration, so this is the maximum
866
+ * number of QC re-runs: `1` permits a single re-run before the gate gives up. Independent
867
+ * of the `ciMaxAttempts` fixer budget.
868
+ */
869
+ readonly maxTesterQualityIterations: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 1, undefined>]>;
870
+ /**
871
+ * How long (minutes) the post-release-health gate watches the deployed release's
872
+ * Datadog monitors/SLOs before declaring it healthy and advancing.
873
+ */
874
+ readonly releaseWatchWindowMinutes: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 1, undefined>]>;
875
+ /**
876
+ * How many `on-call` investigations the post-release-health gate may dispatch while
877
+ * watching before it gives up and raises a notification. The on-call agent investigates
878
+ * rather than fixing prod, so 1 is the sensible default.
879
+ */
880
+ readonly releaseMaxAttempts: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 0, undefined>]>;
881
+ /**
882
+ * How long (minutes) the `human-review` gate waits after the latest review comment before
883
+ * dispatching the `fixer` to address the batch — a grace window so a reviewer leaving a
884
+ * series of comments isn't churned mid-stream. Only the unapproved path waits; an approved
885
+ * PR's outstanding comments are addressed immediately.
886
+ */
887
+ readonly humanReviewGraceMinutes: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 0, undefined>]>;
888
+ /**
889
+ * The minimum score (0..1) a JUDGE step's verdict must reach for the run to advance
890
+ * without a human. Below it, the judge applies its registration's `onFail` disposition
891
+ * (park / bounce / fail). The per-task counterpart of `maxRequirementConcernAllowed`:
892
+ * how much rubric deviation THIS task tolerates. See `docs/initiatives/judge-registry.md`.
893
+ */
894
+ readonly judgeMinScore: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 0, undefined>, v.MaxValueAction<number, 1, undefined>]>;
895
+ /**
896
+ * How many BOUNCE rounds a judge may spend — re-arming the preceding producing step with
897
+ * the verdict's findings as rework feedback — before it must stop and ask a human. `0`
898
+ * means never bounce (a failing verdict goes straight to the registration's park/fail).
899
+ */
900
+ readonly judgeMaxBounces: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 0, undefined>]>;
901
+ /**
902
+ * When false the `merger` step never auto-merges: every PR is routed to a human
903
+ * `merge_review` notification regardless of the assessment scores. The built-in
904
+ * "Manual review only" preset sets this; a custom preset may too. Defaults to true
905
+ * (the historical behaviour: auto-merge a within-threshold, explained assessment).
906
+ */
907
+ readonly autoMergeEnabled: v.BooleanSchema<undefined>;
908
+ /**
909
+ * Estimate gating for the optional implementation-fork decision phase on the Coder step
910
+ * (the same three axes / `onMissingEstimate` as any other {@link stepGatingSchema}). When
911
+ * present and `enabled`, a task whose Coder config resolves to `auto` surfaces materially
912
+ * different implementation approaches and parks for a human whenever ANY supplied axis of
913
+ * its estimate is met/exceeded; `onMissingEstimate: 'run'` proposes even without an
914
+ * estimate (fail toward asking). Absent/disabled ⇒ fork surfacing is off in `auto` mode
915
+ * (a task can still force it via its `always` tri-state). Disabled by default on the
916
+ * built-in presets.
917
+ */
918
+ readonly forkDecision: v.OptionalSchema<v.NullableSchema<v.ObjectSchema<{
919
+ readonly enabled: v.BooleanSchema<undefined>;
920
+ readonly minComplexity: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 0, undefined>, v.MaxValueAction<number, 1, undefined>]>, undefined>;
921
+ readonly minRisk: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 0, undefined>, v.MaxValueAction<number, 1, undefined>]>, undefined>;
922
+ readonly minImpact: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 0, undefined>, v.MaxValueAction<number, 1, undefined>]>, undefined>;
923
+ readonly onMissingEstimate: v.OptionalSchema<v.PicklistSchema<["run", "skip"], undefined>, "run">;
924
+ }, undefined>, undefined>, undefined>;
925
+ /**
926
+ * Per-change-class auto-merge rules ({@link mergeClassRulesSchema}). An absent class — and
927
+ * therefore an empty object — means "use the score ceilings above", so `{}` is the identity.
928
+ * A rule NEVER overrides `autoMergeEnabled: false`: that master switch wins first.
929
+ */
930
+ readonly classRules: Omit<v.StrictObjectSchema<{
931
+ config: v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>;
932
+ dependency: v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>;
933
+ docs: v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>;
934
+ schema: v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>;
935
+ source: v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>;
936
+ test: v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>;
937
+ }, undefined>, "entries" | "~run" | "~standard" | "~types"> & {
938
+ readonly entries: {
939
+ config: v.OptionalSchema<v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>, undefined>;
940
+ dependency: v.OptionalSchema<v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>, undefined>;
941
+ docs: v.OptionalSchema<v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>, undefined>;
942
+ schema: v.OptionalSchema<v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>, undefined>;
943
+ source: v.OptionalSchema<v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>, undefined>;
944
+ test: v.OptionalSchema<v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>, undefined>;
945
+ };
946
+ readonly "~standard": v.StandardProps<{
947
+ config?: "always" | "never" | "thresholds" | undefined;
948
+ dependency?: "always" | "never" | "thresholds" | undefined;
949
+ docs?: "always" | "never" | "thresholds" | undefined;
950
+ schema?: "always" | "never" | "thresholds" | undefined;
951
+ source?: "always" | "never" | "thresholds" | undefined;
952
+ test?: "always" | "never" | "thresholds" | undefined;
953
+ }, {
954
+ config?: "always" | "never" | "thresholds" | undefined;
955
+ dependency?: "always" | "never" | "thresholds" | undefined;
956
+ docs?: "always" | "never" | "thresholds" | undefined;
957
+ schema?: "always" | "never" | "thresholds" | undefined;
958
+ source?: "always" | "never" | "thresholds" | undefined;
959
+ test?: "always" | "never" | "thresholds" | undefined;
960
+ }>;
961
+ readonly "~run": (dataset: v.UnknownDataset, config: v.Config<v.BaseIssue<unknown>>) => v.OutputDataset<{
962
+ config?: "always" | "never" | "thresholds" | undefined;
963
+ dependency?: "always" | "never" | "thresholds" | undefined;
964
+ docs?: "always" | "never" | "thresholds" | undefined;
965
+ schema?: "always" | "never" | "thresholds" | undefined;
966
+ source?: "always" | "never" | "thresholds" | undefined;
967
+ test?: "always" | "never" | "thresholds" | undefined;
968
+ }, v.PicklistIssue | v.StrictObjectIssue>;
969
+ readonly "~types"?: {
970
+ readonly input: {
971
+ config?: "always" | "never" | "thresholds" | undefined;
972
+ dependency?: "always" | "never" | "thresholds" | undefined;
973
+ docs?: "always" | "never" | "thresholds" | undefined;
974
+ schema?: "always" | "never" | "thresholds" | undefined;
975
+ source?: "always" | "never" | "thresholds" | undefined;
976
+ test?: "always" | "never" | "thresholds" | undefined;
977
+ };
978
+ readonly output: {
979
+ config?: "always" | "never" | "thresholds" | undefined;
980
+ dependency?: "always" | "never" | "thresholds" | undefined;
981
+ docs?: "always" | "never" | "thresholds" | undefined;
982
+ schema?: "always" | "never" | "thresholds" | undefined;
983
+ source?: "always" | "never" | "thresholds" | undefined;
984
+ test?: "always" | "never" | "thresholds" | undefined;
985
+ };
986
+ readonly issue: v.PicklistIssue | v.StrictObjectIssue;
987
+ } | undefined;
988
+ };
989
+ /**
990
+ * Per-ROLE narrowing of `classRules` ({@link classRulesByRoleSchema}), keyed on the workspace
991
+ * role the run's initiator held when it was admitted. Narrow-only, so an empty map is the
992
+ * identity and a role entry can never widen what `classRules` already allows.
993
+ */
994
+ readonly classRulesByRole: Omit<v.StrictObjectSchema<{
995
+ admin: Omit<v.StrictObjectSchema<{
996
+ config: v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>;
997
+ dependency: v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>;
998
+ docs: v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>;
999
+ schema: v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>;
1000
+ source: v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>;
1001
+ test: v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>;
1002
+ }, undefined>, "entries" | "~run" | "~standard" | "~types"> & {
1003
+ readonly entries: {
1004
+ config: v.OptionalSchema<v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>, undefined>;
1005
+ dependency: v.OptionalSchema<v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>, undefined>;
1006
+ docs: v.OptionalSchema<v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>, undefined>;
1007
+ schema: v.OptionalSchema<v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>, undefined>;
1008
+ source: v.OptionalSchema<v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>, undefined>;
1009
+ test: v.OptionalSchema<v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>, undefined>;
1010
+ };
1011
+ readonly "~standard": v.StandardProps<{
1012
+ config?: "always" | "never" | "thresholds" | undefined;
1013
+ dependency?: "always" | "never" | "thresholds" | undefined;
1014
+ docs?: "always" | "never" | "thresholds" | undefined;
1015
+ schema?: "always" | "never" | "thresholds" | undefined;
1016
+ source?: "always" | "never" | "thresholds" | undefined;
1017
+ test?: "always" | "never" | "thresholds" | undefined;
1018
+ }, {
1019
+ config?: "always" | "never" | "thresholds" | undefined;
1020
+ dependency?: "always" | "never" | "thresholds" | undefined;
1021
+ docs?: "always" | "never" | "thresholds" | undefined;
1022
+ schema?: "always" | "never" | "thresholds" | undefined;
1023
+ source?: "always" | "never" | "thresholds" | undefined;
1024
+ test?: "always" | "never" | "thresholds" | undefined;
1025
+ }>;
1026
+ readonly "~run": (dataset: v.UnknownDataset, config: v.Config<v.BaseIssue<unknown>>) => v.OutputDataset<{
1027
+ config?: "always" | "never" | "thresholds" | undefined;
1028
+ dependency?: "always" | "never" | "thresholds" | undefined;
1029
+ docs?: "always" | "never" | "thresholds" | undefined;
1030
+ schema?: "always" | "never" | "thresholds" | undefined;
1031
+ source?: "always" | "never" | "thresholds" | undefined;
1032
+ test?: "always" | "never" | "thresholds" | undefined;
1033
+ }, v.PicklistIssue | v.StrictObjectIssue>;
1034
+ readonly "~types"?: {
1035
+ readonly input: {
1036
+ config?: "always" | "never" | "thresholds" | undefined;
1037
+ dependency?: "always" | "never" | "thresholds" | undefined;
1038
+ docs?: "always" | "never" | "thresholds" | undefined;
1039
+ schema?: "always" | "never" | "thresholds" | undefined;
1040
+ source?: "always" | "never" | "thresholds" | undefined;
1041
+ test?: "always" | "never" | "thresholds" | undefined;
1042
+ };
1043
+ readonly output: {
1044
+ config?: "always" | "never" | "thresholds" | undefined;
1045
+ dependency?: "always" | "never" | "thresholds" | undefined;
1046
+ docs?: "always" | "never" | "thresholds" | undefined;
1047
+ schema?: "always" | "never" | "thresholds" | undefined;
1048
+ source?: "always" | "never" | "thresholds" | undefined;
1049
+ test?: "always" | "never" | "thresholds" | undefined;
1050
+ };
1051
+ readonly issue: v.PicklistIssue | v.StrictObjectIssue;
1052
+ } | undefined;
1053
+ };
1054
+ member: Omit<v.StrictObjectSchema<{
1055
+ config: v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>;
1056
+ dependency: v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>;
1057
+ docs: v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>;
1058
+ schema: v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>;
1059
+ source: v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>;
1060
+ test: v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>;
1061
+ }, undefined>, "entries" | "~run" | "~standard" | "~types"> & {
1062
+ readonly entries: {
1063
+ config: v.OptionalSchema<v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>, undefined>;
1064
+ dependency: v.OptionalSchema<v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>, undefined>;
1065
+ docs: v.OptionalSchema<v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>, undefined>;
1066
+ schema: v.OptionalSchema<v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>, undefined>;
1067
+ source: v.OptionalSchema<v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>, undefined>;
1068
+ test: v.OptionalSchema<v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>, undefined>;
1069
+ };
1070
+ readonly "~standard": v.StandardProps<{
1071
+ config?: "always" | "never" | "thresholds" | undefined;
1072
+ dependency?: "always" | "never" | "thresholds" | undefined;
1073
+ docs?: "always" | "never" | "thresholds" | undefined;
1074
+ schema?: "always" | "never" | "thresholds" | undefined;
1075
+ source?: "always" | "never" | "thresholds" | undefined;
1076
+ test?: "always" | "never" | "thresholds" | undefined;
1077
+ }, {
1078
+ config?: "always" | "never" | "thresholds" | undefined;
1079
+ dependency?: "always" | "never" | "thresholds" | undefined;
1080
+ docs?: "always" | "never" | "thresholds" | undefined;
1081
+ schema?: "always" | "never" | "thresholds" | undefined;
1082
+ source?: "always" | "never" | "thresholds" | undefined;
1083
+ test?: "always" | "never" | "thresholds" | undefined;
1084
+ }>;
1085
+ readonly "~run": (dataset: v.UnknownDataset, config: v.Config<v.BaseIssue<unknown>>) => v.OutputDataset<{
1086
+ config?: "always" | "never" | "thresholds" | undefined;
1087
+ dependency?: "always" | "never" | "thresholds" | undefined;
1088
+ docs?: "always" | "never" | "thresholds" | undefined;
1089
+ schema?: "always" | "never" | "thresholds" | undefined;
1090
+ source?: "always" | "never" | "thresholds" | undefined;
1091
+ test?: "always" | "never" | "thresholds" | undefined;
1092
+ }, v.PicklistIssue | v.StrictObjectIssue>;
1093
+ readonly "~types"?: {
1094
+ readonly input: {
1095
+ config?: "always" | "never" | "thresholds" | undefined;
1096
+ dependency?: "always" | "never" | "thresholds" | undefined;
1097
+ docs?: "always" | "never" | "thresholds" | undefined;
1098
+ schema?: "always" | "never" | "thresholds" | undefined;
1099
+ source?: "always" | "never" | "thresholds" | undefined;
1100
+ test?: "always" | "never" | "thresholds" | undefined;
1101
+ };
1102
+ readonly output: {
1103
+ config?: "always" | "never" | "thresholds" | undefined;
1104
+ dependency?: "always" | "never" | "thresholds" | undefined;
1105
+ docs?: "always" | "never" | "thresholds" | undefined;
1106
+ schema?: "always" | "never" | "thresholds" | undefined;
1107
+ source?: "always" | "never" | "thresholds" | undefined;
1108
+ test?: "always" | "never" | "thresholds" | undefined;
1109
+ };
1110
+ readonly issue: v.PicklistIssue | v.StrictObjectIssue;
1111
+ } | undefined;
1112
+ };
1113
+ viewer: Omit<v.StrictObjectSchema<{
1114
+ config: v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>;
1115
+ dependency: v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>;
1116
+ docs: v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>;
1117
+ schema: v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>;
1118
+ source: v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>;
1119
+ test: v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>;
1120
+ }, undefined>, "entries" | "~run" | "~standard" | "~types"> & {
1121
+ readonly entries: {
1122
+ config: v.OptionalSchema<v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>, undefined>;
1123
+ dependency: v.OptionalSchema<v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>, undefined>;
1124
+ docs: v.OptionalSchema<v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>, undefined>;
1125
+ schema: v.OptionalSchema<v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>, undefined>;
1126
+ source: v.OptionalSchema<v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>, undefined>;
1127
+ test: v.OptionalSchema<v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>, undefined>;
1128
+ };
1129
+ readonly "~standard": v.StandardProps<{
1130
+ config?: "always" | "never" | "thresholds" | undefined;
1131
+ dependency?: "always" | "never" | "thresholds" | undefined;
1132
+ docs?: "always" | "never" | "thresholds" | undefined;
1133
+ schema?: "always" | "never" | "thresholds" | undefined;
1134
+ source?: "always" | "never" | "thresholds" | undefined;
1135
+ test?: "always" | "never" | "thresholds" | undefined;
1136
+ }, {
1137
+ config?: "always" | "never" | "thresholds" | undefined;
1138
+ dependency?: "always" | "never" | "thresholds" | undefined;
1139
+ docs?: "always" | "never" | "thresholds" | undefined;
1140
+ schema?: "always" | "never" | "thresholds" | undefined;
1141
+ source?: "always" | "never" | "thresholds" | undefined;
1142
+ test?: "always" | "never" | "thresholds" | undefined;
1143
+ }>;
1144
+ readonly "~run": (dataset: v.UnknownDataset, config: v.Config<v.BaseIssue<unknown>>) => v.OutputDataset<{
1145
+ config?: "always" | "never" | "thresholds" | undefined;
1146
+ dependency?: "always" | "never" | "thresholds" | undefined;
1147
+ docs?: "always" | "never" | "thresholds" | undefined;
1148
+ schema?: "always" | "never" | "thresholds" | undefined;
1149
+ source?: "always" | "never" | "thresholds" | undefined;
1150
+ test?: "always" | "never" | "thresholds" | undefined;
1151
+ }, v.PicklistIssue | v.StrictObjectIssue>;
1152
+ readonly "~types"?: {
1153
+ readonly input: {
1154
+ config?: "always" | "never" | "thresholds" | undefined;
1155
+ dependency?: "always" | "never" | "thresholds" | undefined;
1156
+ docs?: "always" | "never" | "thresholds" | undefined;
1157
+ schema?: "always" | "never" | "thresholds" | undefined;
1158
+ source?: "always" | "never" | "thresholds" | undefined;
1159
+ test?: "always" | "never" | "thresholds" | undefined;
1160
+ };
1161
+ readonly output: {
1162
+ config?: "always" | "never" | "thresholds" | undefined;
1163
+ dependency?: "always" | "never" | "thresholds" | undefined;
1164
+ docs?: "always" | "never" | "thresholds" | undefined;
1165
+ schema?: "always" | "never" | "thresholds" | undefined;
1166
+ source?: "always" | "never" | "thresholds" | undefined;
1167
+ test?: "always" | "never" | "thresholds" | undefined;
1168
+ };
1169
+ readonly issue: v.PicklistIssue | v.StrictObjectIssue;
1170
+ } | undefined;
1171
+ };
1172
+ }, undefined>, "entries" | "~run" | "~standard" | "~types"> & {
1173
+ readonly entries: {
1174
+ admin: v.OptionalSchema<Omit<v.StrictObjectSchema<{
1175
+ config: v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>;
1176
+ dependency: v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>;
1177
+ docs: v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>;
1178
+ schema: v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>;
1179
+ source: v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>;
1180
+ test: v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>;
1181
+ }, undefined>, "entries" | "~run" | "~standard" | "~types"> & {
1182
+ readonly entries: {
1183
+ config: v.OptionalSchema<v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>, undefined>;
1184
+ dependency: v.OptionalSchema<v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>, undefined>;
1185
+ docs: v.OptionalSchema<v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>, undefined>;
1186
+ schema: v.OptionalSchema<v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>, undefined>;
1187
+ source: v.OptionalSchema<v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>, undefined>;
1188
+ test: v.OptionalSchema<v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>, undefined>;
1189
+ };
1190
+ readonly "~standard": v.StandardProps<{
1191
+ config?: "always" | "never" | "thresholds" | undefined;
1192
+ dependency?: "always" | "never" | "thresholds" | undefined;
1193
+ docs?: "always" | "never" | "thresholds" | undefined;
1194
+ schema?: "always" | "never" | "thresholds" | undefined;
1195
+ source?: "always" | "never" | "thresholds" | undefined;
1196
+ test?: "always" | "never" | "thresholds" | undefined;
1197
+ }, {
1198
+ config?: "always" | "never" | "thresholds" | undefined;
1199
+ dependency?: "always" | "never" | "thresholds" | undefined;
1200
+ docs?: "always" | "never" | "thresholds" | undefined;
1201
+ schema?: "always" | "never" | "thresholds" | undefined;
1202
+ source?: "always" | "never" | "thresholds" | undefined;
1203
+ test?: "always" | "never" | "thresholds" | undefined;
1204
+ }>;
1205
+ readonly "~run": (dataset: v.UnknownDataset, config: v.Config<v.BaseIssue<unknown>>) => v.OutputDataset<{
1206
+ config?: "always" | "never" | "thresholds" | undefined;
1207
+ dependency?: "always" | "never" | "thresholds" | undefined;
1208
+ docs?: "always" | "never" | "thresholds" | undefined;
1209
+ schema?: "always" | "never" | "thresholds" | undefined;
1210
+ source?: "always" | "never" | "thresholds" | undefined;
1211
+ test?: "always" | "never" | "thresholds" | undefined;
1212
+ }, v.PicklistIssue | v.StrictObjectIssue>;
1213
+ readonly "~types"?: {
1214
+ readonly input: {
1215
+ config?: "always" | "never" | "thresholds" | undefined;
1216
+ dependency?: "always" | "never" | "thresholds" | undefined;
1217
+ docs?: "always" | "never" | "thresholds" | undefined;
1218
+ schema?: "always" | "never" | "thresholds" | undefined;
1219
+ source?: "always" | "never" | "thresholds" | undefined;
1220
+ test?: "always" | "never" | "thresholds" | undefined;
1221
+ };
1222
+ readonly output: {
1223
+ config?: "always" | "never" | "thresholds" | undefined;
1224
+ dependency?: "always" | "never" | "thresholds" | undefined;
1225
+ docs?: "always" | "never" | "thresholds" | undefined;
1226
+ schema?: "always" | "never" | "thresholds" | undefined;
1227
+ source?: "always" | "never" | "thresholds" | undefined;
1228
+ test?: "always" | "never" | "thresholds" | undefined;
1229
+ };
1230
+ readonly issue: v.PicklistIssue | v.StrictObjectIssue;
1231
+ } | undefined;
1232
+ }, undefined>;
1233
+ member: v.OptionalSchema<Omit<v.StrictObjectSchema<{
1234
+ config: v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>;
1235
+ dependency: v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>;
1236
+ docs: v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>;
1237
+ schema: v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>;
1238
+ source: v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>;
1239
+ test: v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>;
1240
+ }, undefined>, "entries" | "~run" | "~standard" | "~types"> & {
1241
+ readonly entries: {
1242
+ config: v.OptionalSchema<v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>, undefined>;
1243
+ dependency: v.OptionalSchema<v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>, undefined>;
1244
+ docs: v.OptionalSchema<v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>, undefined>;
1245
+ schema: v.OptionalSchema<v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>, undefined>;
1246
+ source: v.OptionalSchema<v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>, undefined>;
1247
+ test: v.OptionalSchema<v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>, undefined>;
1248
+ };
1249
+ readonly "~standard": v.StandardProps<{
1250
+ config?: "always" | "never" | "thresholds" | undefined;
1251
+ dependency?: "always" | "never" | "thresholds" | undefined;
1252
+ docs?: "always" | "never" | "thresholds" | undefined;
1253
+ schema?: "always" | "never" | "thresholds" | undefined;
1254
+ source?: "always" | "never" | "thresholds" | undefined;
1255
+ test?: "always" | "never" | "thresholds" | undefined;
1256
+ }, {
1257
+ config?: "always" | "never" | "thresholds" | undefined;
1258
+ dependency?: "always" | "never" | "thresholds" | undefined;
1259
+ docs?: "always" | "never" | "thresholds" | undefined;
1260
+ schema?: "always" | "never" | "thresholds" | undefined;
1261
+ source?: "always" | "never" | "thresholds" | undefined;
1262
+ test?: "always" | "never" | "thresholds" | undefined;
1263
+ }>;
1264
+ readonly "~run": (dataset: v.UnknownDataset, config: v.Config<v.BaseIssue<unknown>>) => v.OutputDataset<{
1265
+ config?: "always" | "never" | "thresholds" | undefined;
1266
+ dependency?: "always" | "never" | "thresholds" | undefined;
1267
+ docs?: "always" | "never" | "thresholds" | undefined;
1268
+ schema?: "always" | "never" | "thresholds" | undefined;
1269
+ source?: "always" | "never" | "thresholds" | undefined;
1270
+ test?: "always" | "never" | "thresholds" | undefined;
1271
+ }, v.PicklistIssue | v.StrictObjectIssue>;
1272
+ readonly "~types"?: {
1273
+ readonly input: {
1274
+ config?: "always" | "never" | "thresholds" | undefined;
1275
+ dependency?: "always" | "never" | "thresholds" | undefined;
1276
+ docs?: "always" | "never" | "thresholds" | undefined;
1277
+ schema?: "always" | "never" | "thresholds" | undefined;
1278
+ source?: "always" | "never" | "thresholds" | undefined;
1279
+ test?: "always" | "never" | "thresholds" | undefined;
1280
+ };
1281
+ readonly output: {
1282
+ config?: "always" | "never" | "thresholds" | undefined;
1283
+ dependency?: "always" | "never" | "thresholds" | undefined;
1284
+ docs?: "always" | "never" | "thresholds" | undefined;
1285
+ schema?: "always" | "never" | "thresholds" | undefined;
1286
+ source?: "always" | "never" | "thresholds" | undefined;
1287
+ test?: "always" | "never" | "thresholds" | undefined;
1288
+ };
1289
+ readonly issue: v.PicklistIssue | v.StrictObjectIssue;
1290
+ } | undefined;
1291
+ }, undefined>;
1292
+ viewer: v.OptionalSchema<Omit<v.StrictObjectSchema<{
1293
+ config: v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>;
1294
+ dependency: v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>;
1295
+ docs: v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>;
1296
+ schema: v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>;
1297
+ source: v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>;
1298
+ test: v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>;
1299
+ }, undefined>, "entries" | "~run" | "~standard" | "~types"> & {
1300
+ readonly entries: {
1301
+ config: v.OptionalSchema<v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>, undefined>;
1302
+ dependency: v.OptionalSchema<v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>, undefined>;
1303
+ docs: v.OptionalSchema<v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>, undefined>;
1304
+ schema: v.OptionalSchema<v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>, undefined>;
1305
+ source: v.OptionalSchema<v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>, undefined>;
1306
+ test: v.OptionalSchema<v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>, undefined>;
1307
+ };
1308
+ readonly "~standard": v.StandardProps<{
1309
+ config?: "always" | "never" | "thresholds" | undefined;
1310
+ dependency?: "always" | "never" | "thresholds" | undefined;
1311
+ docs?: "always" | "never" | "thresholds" | undefined;
1312
+ schema?: "always" | "never" | "thresholds" | undefined;
1313
+ source?: "always" | "never" | "thresholds" | undefined;
1314
+ test?: "always" | "never" | "thresholds" | undefined;
1315
+ }, {
1316
+ config?: "always" | "never" | "thresholds" | undefined;
1317
+ dependency?: "always" | "never" | "thresholds" | undefined;
1318
+ docs?: "always" | "never" | "thresholds" | undefined;
1319
+ schema?: "always" | "never" | "thresholds" | undefined;
1320
+ source?: "always" | "never" | "thresholds" | undefined;
1321
+ test?: "always" | "never" | "thresholds" | undefined;
1322
+ }>;
1323
+ readonly "~run": (dataset: v.UnknownDataset, config: v.Config<v.BaseIssue<unknown>>) => v.OutputDataset<{
1324
+ config?: "always" | "never" | "thresholds" | undefined;
1325
+ dependency?: "always" | "never" | "thresholds" | undefined;
1326
+ docs?: "always" | "never" | "thresholds" | undefined;
1327
+ schema?: "always" | "never" | "thresholds" | undefined;
1328
+ source?: "always" | "never" | "thresholds" | undefined;
1329
+ test?: "always" | "never" | "thresholds" | undefined;
1330
+ }, v.PicklistIssue | v.StrictObjectIssue>;
1331
+ readonly "~types"?: {
1332
+ readonly input: {
1333
+ config?: "always" | "never" | "thresholds" | undefined;
1334
+ dependency?: "always" | "never" | "thresholds" | undefined;
1335
+ docs?: "always" | "never" | "thresholds" | undefined;
1336
+ schema?: "always" | "never" | "thresholds" | undefined;
1337
+ source?: "always" | "never" | "thresholds" | undefined;
1338
+ test?: "always" | "never" | "thresholds" | undefined;
1339
+ };
1340
+ readonly output: {
1341
+ config?: "always" | "never" | "thresholds" | undefined;
1342
+ dependency?: "always" | "never" | "thresholds" | undefined;
1343
+ docs?: "always" | "never" | "thresholds" | undefined;
1344
+ schema?: "always" | "never" | "thresholds" | undefined;
1345
+ source?: "always" | "never" | "thresholds" | undefined;
1346
+ test?: "always" | "never" | "thresholds" | undefined;
1347
+ };
1348
+ readonly issue: v.PicklistIssue | v.StrictObjectIssue;
1349
+ } | undefined;
1350
+ }, undefined>;
1351
+ };
1352
+ readonly "~standard": v.StandardProps<{
1353
+ admin?: {
1354
+ config?: "always" | "never" | "thresholds" | undefined;
1355
+ dependency?: "always" | "never" | "thresholds" | undefined;
1356
+ docs?: "always" | "never" | "thresholds" | undefined;
1357
+ schema?: "always" | "never" | "thresholds" | undefined;
1358
+ source?: "always" | "never" | "thresholds" | undefined;
1359
+ test?: "always" | "never" | "thresholds" | undefined;
1360
+ } | undefined;
1361
+ member?: {
1362
+ config?: "always" | "never" | "thresholds" | undefined;
1363
+ dependency?: "always" | "never" | "thresholds" | undefined;
1364
+ docs?: "always" | "never" | "thresholds" | undefined;
1365
+ schema?: "always" | "never" | "thresholds" | undefined;
1366
+ source?: "always" | "never" | "thresholds" | undefined;
1367
+ test?: "always" | "never" | "thresholds" | undefined;
1368
+ } | undefined;
1369
+ viewer?: {
1370
+ config?: "always" | "never" | "thresholds" | undefined;
1371
+ dependency?: "always" | "never" | "thresholds" | undefined;
1372
+ docs?: "always" | "never" | "thresholds" | undefined;
1373
+ schema?: "always" | "never" | "thresholds" | undefined;
1374
+ source?: "always" | "never" | "thresholds" | undefined;
1375
+ test?: "always" | "never" | "thresholds" | undefined;
1376
+ } | undefined;
1377
+ }, {
1378
+ admin?: {
1379
+ config?: "always" | "never" | "thresholds" | undefined;
1380
+ dependency?: "always" | "never" | "thresholds" | undefined;
1381
+ docs?: "always" | "never" | "thresholds" | undefined;
1382
+ schema?: "always" | "never" | "thresholds" | undefined;
1383
+ source?: "always" | "never" | "thresholds" | undefined;
1384
+ test?: "always" | "never" | "thresholds" | undefined;
1385
+ } | undefined;
1386
+ member?: {
1387
+ config?: "always" | "never" | "thresholds" | undefined;
1388
+ dependency?: "always" | "never" | "thresholds" | undefined;
1389
+ docs?: "always" | "never" | "thresholds" | undefined;
1390
+ schema?: "always" | "never" | "thresholds" | undefined;
1391
+ source?: "always" | "never" | "thresholds" | undefined;
1392
+ test?: "always" | "never" | "thresholds" | undefined;
1393
+ } | undefined;
1394
+ viewer?: {
1395
+ config?: "always" | "never" | "thresholds" | undefined;
1396
+ dependency?: "always" | "never" | "thresholds" | undefined;
1397
+ docs?: "always" | "never" | "thresholds" | undefined;
1398
+ schema?: "always" | "never" | "thresholds" | undefined;
1399
+ source?: "always" | "never" | "thresholds" | undefined;
1400
+ test?: "always" | "never" | "thresholds" | undefined;
1401
+ } | undefined;
1402
+ }>;
1403
+ readonly "~run": (dataset: v.UnknownDataset, config: v.Config<v.BaseIssue<unknown>>) => v.OutputDataset<{
1404
+ admin?: {
1405
+ config?: "always" | "never" | "thresholds" | undefined;
1406
+ dependency?: "always" | "never" | "thresholds" | undefined;
1407
+ docs?: "always" | "never" | "thresholds" | undefined;
1408
+ schema?: "always" | "never" | "thresholds" | undefined;
1409
+ source?: "always" | "never" | "thresholds" | undefined;
1410
+ test?: "always" | "never" | "thresholds" | undefined;
1411
+ } | undefined;
1412
+ member?: {
1413
+ config?: "always" | "never" | "thresholds" | undefined;
1414
+ dependency?: "always" | "never" | "thresholds" | undefined;
1415
+ docs?: "always" | "never" | "thresholds" | undefined;
1416
+ schema?: "always" | "never" | "thresholds" | undefined;
1417
+ source?: "always" | "never" | "thresholds" | undefined;
1418
+ test?: "always" | "never" | "thresholds" | undefined;
1419
+ } | undefined;
1420
+ viewer?: {
1421
+ config?: "always" | "never" | "thresholds" | undefined;
1422
+ dependency?: "always" | "never" | "thresholds" | undefined;
1423
+ docs?: "always" | "never" | "thresholds" | undefined;
1424
+ schema?: "always" | "never" | "thresholds" | undefined;
1425
+ source?: "always" | "never" | "thresholds" | undefined;
1426
+ test?: "always" | "never" | "thresholds" | undefined;
1427
+ } | undefined;
1428
+ }, v.PicklistIssue | v.StrictObjectIssue>;
1429
+ readonly "~types"?: {
1430
+ readonly input: {
1431
+ admin?: {
1432
+ config?: "always" | "never" | "thresholds" | undefined;
1433
+ dependency?: "always" | "never" | "thresholds" | undefined;
1434
+ docs?: "always" | "never" | "thresholds" | undefined;
1435
+ schema?: "always" | "never" | "thresholds" | undefined;
1436
+ source?: "always" | "never" | "thresholds" | undefined;
1437
+ test?: "always" | "never" | "thresholds" | undefined;
1438
+ } | undefined;
1439
+ member?: {
1440
+ config?: "always" | "never" | "thresholds" | undefined;
1441
+ dependency?: "always" | "never" | "thresholds" | undefined;
1442
+ docs?: "always" | "never" | "thresholds" | undefined;
1443
+ schema?: "always" | "never" | "thresholds" | undefined;
1444
+ source?: "always" | "never" | "thresholds" | undefined;
1445
+ test?: "always" | "never" | "thresholds" | undefined;
1446
+ } | undefined;
1447
+ viewer?: {
1448
+ config?: "always" | "never" | "thresholds" | undefined;
1449
+ dependency?: "always" | "never" | "thresholds" | undefined;
1450
+ docs?: "always" | "never" | "thresholds" | undefined;
1451
+ schema?: "always" | "never" | "thresholds" | undefined;
1452
+ source?: "always" | "never" | "thresholds" | undefined;
1453
+ test?: "always" | "never" | "thresholds" | undefined;
1454
+ } | undefined;
1455
+ };
1456
+ readonly output: {
1457
+ admin?: {
1458
+ config?: "always" | "never" | "thresholds" | undefined;
1459
+ dependency?: "always" | "never" | "thresholds" | undefined;
1460
+ docs?: "always" | "never" | "thresholds" | undefined;
1461
+ schema?: "always" | "never" | "thresholds" | undefined;
1462
+ source?: "always" | "never" | "thresholds" | undefined;
1463
+ test?: "always" | "never" | "thresholds" | undefined;
1464
+ } | undefined;
1465
+ member?: {
1466
+ config?: "always" | "never" | "thresholds" | undefined;
1467
+ dependency?: "always" | "never" | "thresholds" | undefined;
1468
+ docs?: "always" | "never" | "thresholds" | undefined;
1469
+ schema?: "always" | "never" | "thresholds" | undefined;
1470
+ source?: "always" | "never" | "thresholds" | undefined;
1471
+ test?: "always" | "never" | "thresholds" | undefined;
1472
+ } | undefined;
1473
+ viewer?: {
1474
+ config?: "always" | "never" | "thresholds" | undefined;
1475
+ dependency?: "always" | "never" | "thresholds" | undefined;
1476
+ docs?: "always" | "never" | "thresholds" | undefined;
1477
+ schema?: "always" | "never" | "thresholds" | undefined;
1478
+ source?: "always" | "never" | "thresholds" | undefined;
1479
+ test?: "always" | "never" | "thresholds" | undefined;
1480
+ } | undefined;
1481
+ };
1482
+ readonly issue: v.PicklistIssue | v.StrictObjectIssue;
1483
+ } | undefined;
1484
+ };
1485
+ /**
1486
+ * Roles whose runs are forced into dry-run mode ({@link dryRunRolesSchema}) — the work happens
1487
+ * and the PR opens, but nothing merges. Empty on the built-ins.
1488
+ */
1489
+ readonly dryRunRoles: v.ArraySchema<v.PicklistSchema<readonly ["admin", "member", "viewer"], undefined>, undefined>;
1490
+ /**
1491
+ * Per-ROLE allowlist of the change classes this preset will land at all
1492
+ * ({@link submissionClassesByRoleSchema}). Orthogonal to `classRulesByRole`, and both apply: a
1493
+ * class may be `always` under the role's class rules and still outside its allowlist, and the
1494
+ * allowlist wins, because it bars landing rather than deciding how much review landing takes.
1495
+ * A role with no entry is unrestricted, so `{}` is the identity. Empty on the built-ins.
1496
+ */
1497
+ readonly submissionClassesByRole: Omit<v.StrictObjectSchema<{
1498
+ admin: v.ArraySchema<v.PicklistSchema<readonly ["docs", "test", "dependency", "config", "source", "schema"], undefined>, undefined>;
1499
+ member: v.ArraySchema<v.PicklistSchema<readonly ["docs", "test", "dependency", "config", "source", "schema"], undefined>, undefined>;
1500
+ viewer: v.ArraySchema<v.PicklistSchema<readonly ["docs", "test", "dependency", "config", "source", "schema"], undefined>, undefined>;
1501
+ }, undefined>, "entries" | "~run" | "~standard" | "~types"> & {
1502
+ readonly entries: {
1503
+ admin: v.OptionalSchema<v.ArraySchema<v.PicklistSchema<readonly ["docs", "test", "dependency", "config", "source", "schema"], undefined>, undefined>, undefined>;
1504
+ member: v.OptionalSchema<v.ArraySchema<v.PicklistSchema<readonly ["docs", "test", "dependency", "config", "source", "schema"], undefined>, undefined>, undefined>;
1505
+ viewer: v.OptionalSchema<v.ArraySchema<v.PicklistSchema<readonly ["docs", "test", "dependency", "config", "source", "schema"], undefined>, undefined>, undefined>;
1506
+ };
1507
+ readonly "~standard": v.StandardProps<{
1508
+ admin?: ("config" | "dependency" | "docs" | "schema" | "source" | "test")[] | undefined;
1509
+ member?: ("config" | "dependency" | "docs" | "schema" | "source" | "test")[] | undefined;
1510
+ viewer?: ("config" | "dependency" | "docs" | "schema" | "source" | "test")[] | undefined;
1511
+ }, {
1512
+ admin?: ("config" | "dependency" | "docs" | "schema" | "source" | "test")[] | undefined;
1513
+ member?: ("config" | "dependency" | "docs" | "schema" | "source" | "test")[] | undefined;
1514
+ viewer?: ("config" | "dependency" | "docs" | "schema" | "source" | "test")[] | undefined;
1515
+ }>;
1516
+ readonly "~run": (dataset: v.UnknownDataset, config: v.Config<v.BaseIssue<unknown>>) => v.OutputDataset<{
1517
+ admin?: ("config" | "dependency" | "docs" | "schema" | "source" | "test")[] | undefined;
1518
+ member?: ("config" | "dependency" | "docs" | "schema" | "source" | "test")[] | undefined;
1519
+ viewer?: ("config" | "dependency" | "docs" | "schema" | "source" | "test")[] | undefined;
1520
+ }, v.ArrayIssue | v.PicklistIssue | v.StrictObjectIssue>;
1521
+ readonly "~types"?: {
1522
+ readonly input: {
1523
+ admin?: ("config" | "dependency" | "docs" | "schema" | "source" | "test")[] | undefined;
1524
+ member?: ("config" | "dependency" | "docs" | "schema" | "source" | "test")[] | undefined;
1525
+ viewer?: ("config" | "dependency" | "docs" | "schema" | "source" | "test")[] | undefined;
1526
+ };
1527
+ readonly output: {
1528
+ admin?: ("config" | "dependency" | "docs" | "schema" | "source" | "test")[] | undefined;
1529
+ member?: ("config" | "dependency" | "docs" | "schema" | "source" | "test")[] | undefined;
1530
+ viewer?: ("config" | "dependency" | "docs" | "schema" | "source" | "test")[] | undefined;
1531
+ };
1532
+ readonly issue: v.ArrayIssue | v.PicklistIssue | v.StrictObjectIssue;
1533
+ } | undefined;
1534
+ };
1535
+ /**
1536
+ * Whether a run governed by this policy answers its own automatic-loop caps
1537
+ * ({@link runAutonomySchema}). `attended` on every built-in but the unattended default.
1538
+ */
1539
+ readonly autonomy: v.PicklistSchema<["attended", "unattended"], undefined>;
1540
+ /**
1541
+ * The minimum confidence (0..1) a Requirement-Writer recommendation must REPORT for an
1542
+ * `unattended` run to take it as a review finding's answer and carry on with no person.
1543
+ *
1544
+ * Read ONLY on the unattended path, and inert under `attended` for the reason `dryRunRoles` is
1545
+ * inert without a role policy: an attended run's auto-recommendations are drafts a human is
1546
+ * about to read, so grading them changes nothing about who decides. Under `unattended` the same
1547
+ * suggestion is the final answer, so the grade is the whole bar.
1548
+ *
1549
+ * It gates only the findings the REVIEWER classified `autoAnswerable` — a genuine product
1550
+ * judgement is never eligible however confident the Writer sounds — and an UNREPORTED
1551
+ * confidence is below every floor above 0, so a garbled Writer reply parks the run rather than
1552
+ * quietly answering it. `0` accepts anything the Writer produces for that class of finding.
1553
+ */
1554
+ readonly minAutoAnswerConfidence: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 0, undefined>, v.MaxValueAction<number, 1, undefined>]>;
1555
+ /**
1556
+ * The workspace's fallback preset for a run somebody started IN THE APP, used by tasks that
1557
+ * pick none. Exactly one per workspace is true.
1558
+ */
1559
+ readonly isDefault: v.BooleanSchema<undefined>;
1560
+ /**
1561
+ * The workspace's fallback preset for a run nothing is watching (the public API, a tracker
1562
+ * dispatch, a schedule fire), used by tasks that pick none. Exactly one per workspace is true,
1563
+ * and it may be the same row as `isDefault`: a deployment that wants one posture everywhere
1564
+ * flags one policy both ways.
1565
+ */
1566
+ readonly isUnattendedDefault: v.BooleanSchema<undefined>;
1567
+ /**
1568
+ * Monotonic seed version for a BUILT-IN preset (`seedRiskPolicies()` assigns it). When the
1569
+ * current catalog version for this id exceeds the persisted copy's `version`, the SPA offers
1570
+ * to reseed it. Absent on user-created presets (not version-tracked) and on rows persisted
1571
+ * before versioning existed (treated as 0).
1572
+ */
1573
+ readonly version: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
1574
+ readonly createdAt: v.NumberSchema<undefined>;
1575
+ }, undefined>;
1576
+ export type RiskPolicy = v.InferOutput<typeof riskPolicySchema>;
841
1577
  /**
842
- * Every scope, for the readers that must answer about ALL of them (the board's policy-selection
843
- * guard judges a move against each, because a task can be started either way).
1578
+ * Which tier a risk policy in a board's visible library is STORED at, and therefore who may edit
1579
+ * it. `account` policies are authored once for the whole account and every board under it
1580
+ * inherits them read-only; `workspace` policies belong to the board that holds them.
844
1581
  *
845
- * Read off the picklist's OWN options rather than restated, so a third scope cannot appear in one
846
- * place and be missed in the other.
1582
+ * There is deliberately no `builtin` member, unlike the fragment and foundational-service tiers.
1583
+ * The built-in catalog (`seedRiskPolicies()`) is COPIED into each board at creation and reconciled
1584
+ * against the catalog from there, so a built-in is a `workspace` row a board owns outright: it can
1585
+ * be edited, deleted and reseeded. A tier that carried no rows would have to answer what a reseed
1586
+ * means, and the answer is already "the row this board owns".
847
1587
  */
848
- export declare const RISK_POLICY_DEFAULT_SCOPES: readonly RiskPolicyDefaultScope[];
1588
+ export declare const riskPolicyTierSchema: v.PicklistSchema<["account", "workspace"], undefined>;
1589
+ export type RiskPolicyTier = v.InferOutput<typeof riskPolicyTierSchema>;
849
1590
  /**
850
- * A named, per-workspace merge policy: the upper bounds (0..1) a PR's assessment
851
- * must stay within to auto-merge, plus the CI-fixer attempt budget. A workspace carries TWO
852
- * defaults, one per {@link riskPolicyDefaultScopeSchema}: `isDefault` governs a task somebody
853
- * started in the app, `isUnattendedDefault` one nothing is watching. Either is used by any task
854
- * that has not picked a policy explicitly.
1591
+ * One entry of the library a board actually picks from: the merge of its own policies with the
1592
+ * ones it inherits from its account, each carrying the tier that owns it.
1593
+ *
1594
+ * The tier is what every reader needs and none can re-derive: a board's editor renders an
1595
+ * inherited policy read-only beside a clone action, and the engine resolves a task's pin through
1596
+ * the same merged view, so a pinned account policy governs a run exactly as a local one does.
1597
+ * A workspace row WINS over an account row of the same id, and a board's suppression drops an
1598
+ * inherited id from this list outright (`riskPolicySuppressionSchema`).
855
1599
  */
856
- export declare const riskPolicySchema: v.ObjectSchema<{
1600
+ export declare const riskPolicyLibraryEntrySchema: v.ObjectSchema<{
857
1601
  readonly id: v.StringSchema<undefined>;
858
1602
  readonly name: v.StringSchema<undefined>;
859
1603
  /** Auto-merge only when the assessment's complexity is at or below this. */
@@ -1557,6 +2301,21 @@ export declare const riskPolicySchema: v.ObjectSchema<{
1557
2301
  * ({@link runAutonomySchema}). `attended` on every built-in but the unattended default.
1558
2302
  */
1559
2303
  readonly autonomy: v.PicklistSchema<["attended", "unattended"], undefined>;
2304
+ /**
2305
+ * The minimum confidence (0..1) a Requirement-Writer recommendation must REPORT for an
2306
+ * `unattended` run to take it as a review finding's answer and carry on with no person.
2307
+ *
2308
+ * Read ONLY on the unattended path, and inert under `attended` for the reason `dryRunRoles` is
2309
+ * inert without a role policy: an attended run's auto-recommendations are drafts a human is
2310
+ * about to read, so grading them changes nothing about who decides. Under `unattended` the same
2311
+ * suggestion is the final answer, so the grade is the whole bar.
2312
+ *
2313
+ * It gates only the findings the REVIEWER classified `autoAnswerable` — a genuine product
2314
+ * judgement is never eligible however confident the Writer sounds — and an UNREPORTED
2315
+ * confidence is below every floor above 0, so a garbled Writer reply parks the run rather than
2316
+ * quietly answering it. `0` accepts anything the Writer produces for that class of finding.
2317
+ */
2318
+ readonly minAutoAnswerConfidence: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 0, undefined>, v.MaxValueAction<number, 1, undefined>]>;
1560
2319
  /**
1561
2320
  * The workspace's fallback preset for a run somebody started IN THE APP, used by tasks that
1562
2321
  * pick none. Exactly one per workspace is true.
@@ -1577,8 +2336,38 @@ export declare const riskPolicySchema: v.ObjectSchema<{
1577
2336
  */
1578
2337
  readonly version: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
1579
2338
  readonly createdAt: v.NumberSchema<undefined>;
2339
+ readonly tier: v.PicklistSchema<["account", "workspace"], undefined>;
1580
2340
  }, undefined>;
1581
- export type RiskPolicy = v.InferOutput<typeof riskPolicySchema>;
2341
+ export type RiskPolicyLibraryEntry = v.InferOutput<typeof riskPolicyLibraryEntrySchema>;
2342
+ /**
2343
+ * One policy a board is HIDING: an account policy id it has opted out of, so the policy loses the
2344
+ * merge and no task on that board can pin it.
2345
+ *
2346
+ * A hidden id is by construction absent from the merged library, which is what makes this a
2347
+ * separate read rather than a flag on the entry — without it, hiding would be a one-way door with
2348
+ * nothing on screen to undo.
2349
+ *
2350
+ * `inherited` is the honest half: `false` says the suppression currently hides NOTHING, because
2351
+ * the account has since deleted the policy it named. A reader must not conclude a posture is
2352
+ * being withheld when there is none to withhold, and the name is then the id, which is the only
2353
+ * thing left that identifies what was hidden.
2354
+ */
2355
+ export declare const riskPolicySuppressionSchema: v.ObjectSchema<{
2356
+ readonly id: v.StringSchema<undefined>;
2357
+ readonly name: v.StringSchema<undefined>;
2358
+ readonly inherited: v.BooleanSchema<undefined>;
2359
+ }, undefined>;
2360
+ export type RiskPolicySuppression = v.InferOutput<typeof riskPolicySuppressionSchema>;
2361
+ /**
2362
+ * How long a risk policy's name may be.
2363
+ *
2364
+ * Exported because the SPA has to AGREE about it, not merely be validated against it: cloning an
2365
+ * inherited policy composes the copy's name client-side (the label is localized copy, and the
2366
+ * backend does not localize prose), so the composer needs the same ceiling the schema enforces.
2367
+ * Without it a long enough source name pushed the composed `{name} (copy)` past the limit and the
2368
+ * clone action answered a 422 the operator had no field to act on.
2369
+ */
2370
+ export declare const RISK_POLICY_NAME_MAX_LENGTH = 60;
1582
2371
  /** Create a new merge threshold preset in a workspace. */
1583
2372
  export declare const createRiskPolicySchema: v.ObjectSchema<{
1584
2373
  readonly name: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 60, undefined>]>;
@@ -2199,6 +2988,11 @@ export declare const createRiskPolicySchema: v.ObjectSchema<{
2199
2988
  }, {}>;
2200
2989
  /** Whether this policy answers its own automatic-loop caps; absent ⇒ it parks for a person. */
2201
2990
  readonly autonomy: v.OptionalSchema<v.PicklistSchema<["attended", "unattended"], undefined>, "attended">;
2991
+ /**
2992
+ * Confidence floor for an unattended run taking a Writer recommendation as a finding's answer;
2993
+ * absent ⇒ {@link DEFAULT_MIN_AUTO_ANSWER_CONFIDENCE}. Inert under `attended`.
2994
+ */
2995
+ readonly minAutoAnswerConfidence: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 0, undefined>, v.MaxValueAction<number, 1, undefined>]>, 0.8>;
2202
2996
  /** Make this the workspace's in-app default (demotes the previous one). */
2203
2997
  readonly isDefault: v.OptionalSchema<v.BooleanSchema<undefined>, false>;
2204
2998
  /** Make this the workspace's unattended default (demotes the previous one). */
@@ -2822,10 +3616,28 @@ export declare const updateRiskPolicySchema: v.ObjectSchema<{
2822
3616
  } | undefined;
2823
3617
  }, undefined>;
2824
3618
  readonly autonomy: v.OptionalSchema<v.PicklistSchema<["attended", "unattended"], undefined>, undefined>;
3619
+ readonly minAutoAnswerConfidence: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 0, undefined>, v.MaxValueAction<number, 1, undefined>]>, undefined>;
2825
3620
  readonly isDefault: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
2826
3621
  readonly isUnattendedDefault: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
2827
3622
  }, undefined>;
2828
3623
  export type UpdateRiskPolicyInput = v.InferOutput<typeof updateRiskPolicySchema>;
3624
+ /**
3625
+ * Copy an INHERITED account policy into the board's own tier, so the board can edit its numbers
3626
+ * without an account admin and without changing the posture of every other board.
3627
+ *
3628
+ * The copy gets a FRESH id rather than shadowing the account id. An override sharing the id reads
3629
+ * as the same policy in every picker and on every task that pinned it, so a board editing its copy
3630
+ * would silently re-point work that was filed against the account's posture; a new id moves nothing
3631
+ * that already exists and says what it is.
3632
+ *
3633
+ * `name` is optional and defaults to the source policy's, because two policies may share a name
3634
+ * (nothing keys off it) and the backend does not localize prose — a caller that wants the copy
3635
+ * marked as one sends the marked name itself.
3636
+ */
3637
+ export declare const cloneRiskPolicySchema: v.ObjectSchema<{
3638
+ readonly name: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 60, undefined>]>, undefined>;
3639
+ }, undefined>;
3640
+ export type CloneRiskPolicyInput = v.InferOutput<typeof cloneRiskPolicySchema>;
2829
3641
  /** Parse-or-throw an assessment payload an agent returned (the engine validates it). */
2830
3642
  export declare function parseMergeAssessment(value: unknown): MergeAssessment;
2831
3643
  /** Which assessment axis exceeded its preset ceiling. */