@cat-factory/contracts 0.154.2 → 0.157.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 (88) hide show
  1. package/dist/agent-effort.d.ts +21 -0
  2. package/dist/agent-effort.d.ts.map +1 -0
  3. package/dist/agent-effort.js +33 -0
  4. package/dist/agent-effort.js.map +1 -0
  5. package/dist/agent-presentation.d.ts +2 -2
  6. package/dist/agent-presentation.d.ts.map +1 -1
  7. package/dist/agent-presentation.js +3 -11
  8. package/dist/agent-presentation.js.map +1 -1
  9. package/dist/companion.d.ts +14 -0
  10. package/dist/companion.d.ts.map +1 -1
  11. package/dist/companion.js +9 -0
  12. package/dist/companion.js.map +1 -1
  13. package/dist/entities.d.ts +2 -1
  14. package/dist/entities.d.ts.map +1 -1
  15. package/dist/environments.d.ts +65 -2
  16. package/dist/environments.d.ts.map +1 -1
  17. package/dist/environments.js +49 -2
  18. package/dist/environments.js.map +1 -1
  19. package/dist/execution.d.ts +52 -0
  20. package/dist/execution.d.ts.map +1 -1
  21. package/dist/execution.js +17 -0
  22. package/dist/execution.js.map +1 -1
  23. package/dist/fragment-adherence.d.ts +38 -0
  24. package/dist/fragment-adherence.d.ts.map +1 -0
  25. package/dist/fragment-adherence.js +38 -0
  26. package/dist/fragment-adherence.js.map +1 -0
  27. package/dist/fragment-library.d.ts +16 -0
  28. package/dist/fragment-library.d.ts.map +1 -1
  29. package/dist/fragment-library.js +14 -0
  30. package/dist/fragment-library.js.map +1 -1
  31. package/dist/index.d.ts +3 -0
  32. package/dist/index.d.ts.map +1 -1
  33. package/dist/index.js +3 -0
  34. package/dist/index.js.map +1 -1
  35. package/dist/initiative.d.ts +10 -5
  36. package/dist/initiative.d.ts.map +1 -1
  37. package/dist/prReview.d.ts +12 -0
  38. package/dist/prReview.d.ts.map +1 -1
  39. package/dist/prReview.js +7 -0
  40. package/dist/prReview.js.map +1 -1
  41. package/dist/primitives.d.ts +41 -2
  42. package/dist/primitives.d.ts.map +1 -1
  43. package/dist/primitives.js +58 -13
  44. package/dist/primitives.js.map +1 -1
  45. package/dist/public-api.d.ts +3 -3
  46. package/dist/requests.d.ts +2 -1
  47. package/dist/requests.d.ts.map +1 -1
  48. package/dist/result-views.d.ts +5 -5
  49. package/dist/result-views.d.ts.map +1 -1
  50. package/dist/result-views.js +8 -7
  51. package/dist/result-views.js.map +1 -1
  52. package/dist/routes/agent-runs.d.ts +26 -0
  53. package/dist/routes/agent-runs.d.ts.map +1 -1
  54. package/dist/routes/board.d.ts +26 -13
  55. package/dist/routes/board.d.ts.map +1 -1
  56. package/dist/routes/environments.d.ts +11 -0
  57. package/dist/routes/environments.d.ts.map +1 -1
  58. package/dist/routes/execution.d.ts +108 -2
  59. package/dist/routes/execution.d.ts.map +1 -1
  60. package/dist/routes/fragment-library.d.ts +39 -0
  61. package/dist/routes/fragment-library.d.ts.map +1 -1
  62. package/dist/routes/fragment-library.js +11 -1
  63. package/dist/routes/fragment-library.js.map +1 -1
  64. package/dist/routes/human-review.d.ts +13 -0
  65. package/dist/routes/human-review.d.ts.map +1 -1
  66. package/dist/routes/human-test.d.ts +65 -0
  67. package/dist/routes/human-test.d.ts.map +1 -1
  68. package/dist/routes/initiative.d.ts +34 -17
  69. package/dist/routes/initiative.d.ts.map +1 -1
  70. package/dist/routes/public-api.d.ts +8 -8
  71. package/dist/routes/tasks.d.ts +6 -3
  72. package/dist/routes/tasks.d.ts.map +1 -1
  73. package/dist/routes/visual-confirm.d.ts +39 -0
  74. package/dist/routes/visual-confirm.d.ts.map +1 -1
  75. package/dist/routes/workspace-settings.d.ts +3 -3
  76. package/dist/routes/workspaces.d.ts +90 -10
  77. package/dist/routes/workspaces.d.ts.map +1 -1
  78. package/dist/snapshot.d.ts +53 -5
  79. package/dist/snapshot.d.ts.map +1 -1
  80. package/dist/snapshot.js +10 -0
  81. package/dist/snapshot.js.map +1 -1
  82. package/dist/task-types.d.ts +103 -0
  83. package/dist/task-types.d.ts.map +1 -0
  84. package/dist/task-types.js +82 -0
  85. package/dist/task-types.js.map +1 -0
  86. package/dist/workspace-settings.d.ts +3 -3
  87. package/dist/workspace-settings.d.ts.map +1 -1
  88. package/package.json +1 -1
@@ -0,0 +1,103 @@
1
+ import * as v from 'valibot';
2
+ /** Card-badge + create-form presentation for a custom task type (mirrors `agentPresentationSchema`). */
3
+ export declare const taskTypePresentationSchema: v.ObjectSchema<{
4
+ /** Human label, e.g. `Incident`. */
5
+ readonly label: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 80, undefined>]>;
6
+ /** Icon id (e.g. an `i-lucide-*` name). */
7
+ readonly icon: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 120, undefined>]>;
8
+ /** Accent colour (CSS hex/keyword). */
9
+ readonly color: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 40, undefined>]>;
10
+ /** One-line description shown in the create-task type picker. */
11
+ readonly description: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 500, undefined>]>;
12
+ }, undefined>;
13
+ export type TaskTypePresentation = v.InferOutput<typeof taskTypePresentationSchema>;
14
+ /** One choice of a `select` {@link taskTypeFieldDescriptorSchema}. */
15
+ export declare const taskTypeFieldOptionSchema: v.ObjectSchema<{
16
+ readonly value: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 120, undefined>]>;
17
+ readonly label: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 120, undefined>]>;
18
+ }, undefined>;
19
+ export type TaskTypeFieldOption = v.InferOutput<typeof taskTypeFieldOptionSchema>;
20
+ /**
21
+ * One data-driven field on a custom task type's create-form — the descriptor-driven form
22
+ * vocabulary (the `credentialFieldSchema` / `agentConfigDescriptorSchema` shape generalized):
23
+ * a label + input kind + options. Its value lands in the sparse `taskTypeFields.custom` bag
24
+ * keyed by {@link key}, so adding a field never needs a schema migration.
25
+ */
26
+ export declare const taskTypeFieldDescriptorSchema: v.ObjectSchema<{
27
+ /** Stable key the collected value is stored under in `taskTypeFields.custom`. */
28
+ readonly key: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 80, undefined>]>;
29
+ /** Human label shown next to the field. */
30
+ readonly label: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 120, undefined>]>;
31
+ /** The control type: free text, multi-line text, a number, or one of {@link options}. */
32
+ readonly type: v.PicklistSchema<["text", "textarea", "number", "select"], undefined>;
33
+ /** One-line helper text shown under the field. */
34
+ readonly help: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MaxLengthAction<string, 300, undefined>]>, undefined>;
35
+ /** Placeholder shown in an empty `text`/`textarea`/`number` input. */
36
+ readonly placeholder: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MaxLengthAction<string, 200, undefined>]>, undefined>;
37
+ /** The choices for a `select` descriptor; absent (and ignored) for the other types. */
38
+ readonly options: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
39
+ readonly value: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 120, undefined>]>;
40
+ readonly label: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 120, undefined>]>;
41
+ }, undefined>, undefined>, undefined>;
42
+ /** Whether the field must be filled before the task can be created. */
43
+ readonly required: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
44
+ /** Max length for a `text`/`textarea` value (characters). */
45
+ readonly maxLength: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 1, undefined>, v.MaxValueAction<number, 10000, undefined>]>, undefined>;
46
+ }, undefined>;
47
+ export type TaskTypeFieldDescriptor = v.InferOutput<typeof taskTypeFieldDescriptorSchema>;
48
+ /**
49
+ * A registered custom task type's wire projection — the snapshot entry the SPA merges into its
50
+ * task-type catalog. Its `taskType` is ALWAYS namespaced ({@link namespacedIdSchema}); a
51
+ * built-in type is never delivered this way.
52
+ */
53
+ export declare const customTaskTypeSchema: v.ObjectSchema<{
54
+ /** The namespaced task type id (`<ns>:<name>`, e.g. `acme:incident`). */
55
+ readonly taskType: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RegexAction<string, "Consumer id must be <namespace>:<name> (lowercase a-z0-9, dash-separated)">]>;
56
+ /** Card badge + create-form presentation. */
57
+ readonly presentation: v.ObjectSchema<{
58
+ /** Human label, e.g. `Incident`. */
59
+ readonly label: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 80, undefined>]>;
60
+ /** Icon id (e.g. an `i-lucide-*` name). */
61
+ readonly icon: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 120, undefined>]>;
62
+ /** Accent colour (CSS hex/keyword). */
63
+ readonly color: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 40, undefined>]>;
64
+ /** One-line description shown in the create-task type picker. */
65
+ readonly description: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 500, undefined>]>;
66
+ }, undefined>;
67
+ /** Data-driven create-form fields (optional; none ⇒ title + description only). */
68
+ readonly fields: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
69
+ /** Stable key the collected value is stored under in `taskTypeFields.custom`. */
70
+ readonly key: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 80, undefined>]>;
71
+ /** Human label shown next to the field. */
72
+ readonly label: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 120, undefined>]>;
73
+ /** The control type: free text, multi-line text, a number, or one of {@link options}. */
74
+ readonly type: v.PicklistSchema<["text", "textarea", "number", "select"], undefined>;
75
+ /** One-line helper text shown under the field. */
76
+ readonly help: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MaxLengthAction<string, 300, undefined>]>, undefined>;
77
+ /** Placeholder shown in an empty `text`/`textarea`/`number` input. */
78
+ readonly placeholder: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MaxLengthAction<string, 200, undefined>]>, undefined>;
79
+ /** The choices for a `select` descriptor; absent (and ignored) for the other types. */
80
+ readonly options: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
81
+ readonly value: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 120, undefined>]>;
82
+ readonly label: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 120, undefined>]>;
83
+ }, undefined>, undefined>, undefined>;
84
+ /** Whether the field must be filled before the task can be created. */
85
+ readonly required: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
86
+ /** Max length for a `text`/`textarea` value (characters). */
87
+ readonly maxLength: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 1, undefined>, v.MaxValueAction<number, 10000, undefined>]>, undefined>;
88
+ }, undefined>, undefined>, undefined>;
89
+ /**
90
+ * The pipeline a task of this type defaults to when the creator pins none — pairs with a
91
+ * pipeline the deployment also registered (validated at boot). Absent ⇒ the workspace's
92
+ * positional default, exactly like an unmapped built-in type.
93
+ */
94
+ readonly defaultPipelineId: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
95
+ /**
96
+ * Optional id of a bespoke create-form section component (`<ns>:<name>`) the deployment
97
+ * contributes to the frontend `taskTypeFormPanels` slot, shown INSTEAD of the descriptor
98
+ * `fields` above. Unpaired ⇒ the descriptor fields render (degrade, never crash).
99
+ */
100
+ readonly formPanel: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RegexAction<string, "Consumer id must be <namespace>:<name> (lowercase a-z0-9, dash-separated)">]>, undefined>;
101
+ }, undefined>;
102
+ export type CustomTaskType = v.InferOutput<typeof customTaskTypeSchema>;
103
+ //# sourceMappingURL=task-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-types.d.ts","sourceRoot":"","sources":["../src/task-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAkB5B,wGAAwG;AACxG,eAAO,MAAM,0BAA0B;IACrC,oCAAoC;;IAEpC,2CAA2C;;IAE3C,uCAAuC;;IAEvC,iEAAiE;;aAEjE,CAAA;AACF,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,0BAA0B,CAAC,CAAA;AAEnF,sEAAsE;AACtE,eAAO,MAAM,yBAAyB;;;aAGpC,CAAA;AACF,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,yBAAyB,CAAC,CAAA;AAEjF;;;;;GAKG;AACH,eAAO,MAAM,6BAA6B;IACxC,iFAAiF;;IAEjF,2CAA2C;;IAE3C,yFAAyF;;IAEzF,kDAAkD;;IAElD,sEAAsE;;IAEtE,uFAAuF;;;;;IAEvF,uEAAuE;;IAEvE,6DAA6D;;aAE7D,CAAA;AACF,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,6BAA6B,CAAC,CAAA;AAEzF;;;;GAIG;AACH,eAAO,MAAM,oBAAoB;IAC/B,yEAAyE;;IAEzE,6CAA6C;;QApD7C,oCAAoC;;QAEpC,2CAA2C;;QAE3C,uCAAuC;;QAEvC,iEAAiE;;;IAgDjE,kFAAkF;;QA7BlF,iFAAiF;;QAEjF,2CAA2C;;QAE3C,yFAAyF;;QAEzF,kDAAkD;;QAElD,sEAAsE;;QAEtE,uFAAuF;;;;;QAEvF,uEAAuE;;QAEvE,6DAA6D;;;IAiB7D;;;;OAIG;;IAEH;;;;OAIG;;aAEH,CAAA;AACF,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,oBAAoB,CAAC,CAAA"}
@@ -0,0 +1,82 @@
1
+ import * as v from 'valibot';
2
+ import { namespacedIdSchema } from './primitives.js';
3
+ // ---------------------------------------------------------------------------
4
+ // The wire projection of a CUSTOM (deployment-registered) task type — the frontend analogue
5
+ // of `customAgentKindSchema` (`agent-presentation.ts`). A deployment registers a task type on
6
+ // its app-owned `TaskTypeRegistry`; the server serialises each registration's presentation +
7
+ // create-form fields into the workspace snapshot (`customTaskTypes`), and the SPA merges them
8
+ // into one task-type catalog so a proprietary work item (an "incident", "pentest",
9
+ // "compliance-audit") becomes a first-class create-task choice + card badge instead of the
10
+ // generic fallback — symmetric with agent kinds.
11
+ //
12
+ // The task type id itself widens `taskTypeSchema` (`primitives.ts`) from a closed picklist to
13
+ // `picklist ∪ namespaced`, exactly the shape `presentation.resultView` uses. An UNREGISTERED
14
+ // namespaced type (stale data after an extension was removed) degrades to the `feature`
15
+ // presentation on the frontend, so a leftover string never breaks a card.
16
+ // ---------------------------------------------------------------------------
17
+ /** Card-badge + create-form presentation for a custom task type (mirrors `agentPresentationSchema`). */
18
+ export const taskTypePresentationSchema = v.object({
19
+ /** Human label, e.g. `Incident`. */
20
+ label: v.pipe(v.string(), v.trim(), v.minLength(1), v.maxLength(80)),
21
+ /** Icon id (e.g. an `i-lucide-*` name). */
22
+ icon: v.pipe(v.string(), v.minLength(1), v.maxLength(120)),
23
+ /** Accent colour (CSS hex/keyword). */
24
+ color: v.pipe(v.string(), v.minLength(1), v.maxLength(40)),
25
+ /** One-line description shown in the create-task type picker. */
26
+ description: v.pipe(v.string(), v.trim(), v.minLength(1), v.maxLength(500)),
27
+ });
28
+ /** One choice of a `select` {@link taskTypeFieldDescriptorSchema}. */
29
+ export const taskTypeFieldOptionSchema = v.object({
30
+ value: v.pipe(v.string(), v.minLength(1), v.maxLength(120)),
31
+ label: v.pipe(v.string(), v.minLength(1), v.maxLength(120)),
32
+ });
33
+ /**
34
+ * One data-driven field on a custom task type's create-form — the descriptor-driven form
35
+ * vocabulary (the `credentialFieldSchema` / `agentConfigDescriptorSchema` shape generalized):
36
+ * a label + input kind + options. Its value lands in the sparse `taskTypeFields.custom` bag
37
+ * keyed by {@link key}, so adding a field never needs a schema migration.
38
+ */
39
+ export const taskTypeFieldDescriptorSchema = v.object({
40
+ /** Stable key the collected value is stored under in `taskTypeFields.custom`. */
41
+ key: v.pipe(v.string(), v.minLength(1), v.maxLength(80)),
42
+ /** Human label shown next to the field. */
43
+ label: v.pipe(v.string(), v.minLength(1), v.maxLength(120)),
44
+ /** The control type: free text, multi-line text, a number, or one of {@link options}. */
45
+ type: v.picklist(['text', 'textarea', 'number', 'select']),
46
+ /** One-line helper text shown under the field. */
47
+ help: v.optional(v.pipe(v.string(), v.maxLength(300))),
48
+ /** Placeholder shown in an empty `text`/`textarea`/`number` input. */
49
+ placeholder: v.optional(v.pipe(v.string(), v.maxLength(200))),
50
+ /** The choices for a `select` descriptor; absent (and ignored) for the other types. */
51
+ options: v.optional(v.array(taskTypeFieldOptionSchema)),
52
+ /** Whether the field must be filled before the task can be created. */
53
+ required: v.optional(v.boolean()),
54
+ /** Max length for a `text`/`textarea` value (characters). */
55
+ maxLength: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(10000))),
56
+ });
57
+ /**
58
+ * A registered custom task type's wire projection — the snapshot entry the SPA merges into its
59
+ * task-type catalog. Its `taskType` is ALWAYS namespaced ({@link namespacedIdSchema}); a
60
+ * built-in type is never delivered this way.
61
+ */
62
+ export const customTaskTypeSchema = v.object({
63
+ /** The namespaced task type id (`<ns>:<name>`, e.g. `acme:incident`). */
64
+ taskType: namespacedIdSchema,
65
+ /** Card badge + create-form presentation. */
66
+ presentation: taskTypePresentationSchema,
67
+ /** Data-driven create-form fields (optional; none ⇒ title + description only). */
68
+ fields: v.optional(v.array(taskTypeFieldDescriptorSchema)),
69
+ /**
70
+ * The pipeline a task of this type defaults to when the creator pins none — pairs with a
71
+ * pipeline the deployment also registered (validated at boot). Absent ⇒ the workspace's
72
+ * positional default, exactly like an unmapped built-in type.
73
+ */
74
+ defaultPipelineId: v.optional(v.string()),
75
+ /**
76
+ * Optional id of a bespoke create-form section component (`<ns>:<name>`) the deployment
77
+ * contributes to the frontend `taskTypeFormPanels` slot, shown INSTEAD of the descriptor
78
+ * `fields` above. Unpaired ⇒ the descriptor fields render (degrade, never crash).
79
+ */
80
+ formPanel: v.optional(namespacedIdSchema),
81
+ });
82
+ //# sourceMappingURL=task-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-types.js","sourceRoot":"","sources":["../src/task-types.ts"],"names":[],"mappings":"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"}
@@ -8,7 +8,7 @@ import * as v from 'valibot';
8
8
  export declare const taskLimitModeSchema: v.PicklistSchema<["off", "shared", "per_type"], undefined>;
9
9
  export type TaskLimitMode = v.InferOutput<typeof taskLimitModeSchema>;
10
10
  /** Per-task-type running-task caps (used when {@link taskLimitModeSchema} is `per_type`). */
11
- export declare const taskLimitPerTypeSchema: v.RecordSchema<v.PicklistSchema<["feature", "bug", "document", "spike", "review", "ralph"], undefined>, v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 1, undefined>, v.MaxValueAction<number, 1000, undefined>]>, undefined>;
11
+ export declare const taskLimitPerTypeSchema: v.RecordSchema<v.UnionSchema<[v.PicklistSchema<readonly ["feature", "bug", "document", "spike", "review", "ralph"], undefined>, v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RegexAction<string, "Consumer id must be <namespace>:<name> (lowercase a-z0-9, dash-separated)">]>], undefined>, v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 1, undefined>, v.MaxValueAction<number, 1000, undefined>]>, undefined>;
12
12
  export type TaskLimitPerType = v.InferOutput<typeof taskLimitPerTypeSchema>;
13
13
  /** A workspace's runtime settings. */
14
14
  export declare const workspaceSettingsSchema: v.ObjectSchema<{
@@ -22,7 +22,7 @@ export declare const workspaceSettingsSchema: v.ObjectSchema<{
22
22
  /** The shared cap, when {@link taskLimitMode} is `shared`. Null otherwise. */
23
23
  readonly taskLimitShared: v.NullableSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 1, undefined>, v.MaxValueAction<number, 1000, undefined>]>, undefined>;
24
24
  /** The per-type caps, when {@link taskLimitMode} is `per_type`. Null otherwise. */
25
- readonly taskLimitPerType: v.NullableSchema<v.RecordSchema<v.PicklistSchema<["feature", "bug", "document", "spike", "review", "ralph"], undefined>, v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 1, undefined>, v.MaxValueAction<number, 1000, undefined>]>, undefined>, undefined>;
25
+ readonly taskLimitPerType: v.NullableSchema<v.RecordSchema<v.UnionSchema<[v.PicklistSchema<readonly ["feature", "bug", "document", "spike", "review", "ralph"], undefined>, v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RegexAction<string, "Consumer id must be <namespace>:<name> (lowercase a-z0-9, dash-separated)">]>], undefined>, v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 1, undefined>, v.MaxValueAction<number, 1000, undefined>]>, undefined>, undefined>;
26
26
  /**
27
27
  * Whether to store the complete context provided to each container agent (the
28
28
  * fully composed system + user prompts, the best-practice fragment bodies folded
@@ -73,7 +73,7 @@ export declare const updateWorkspaceSettingsSchema: v.ObjectSchema<{
73
73
  readonly waitingEscalationMinutes: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 1, undefined>, v.MaxValueAction<number, 100000, undefined>]>, undefined>;
74
74
  readonly taskLimitMode: v.OptionalSchema<v.PicklistSchema<["off", "shared", "per_type"], undefined>, undefined>;
75
75
  readonly taskLimitShared: v.OptionalSchema<v.NullableSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 1, undefined>, v.MaxValueAction<number, 1000, undefined>]>, undefined>, undefined>;
76
- readonly taskLimitPerType: v.OptionalSchema<v.NullableSchema<v.RecordSchema<v.PicklistSchema<["feature", "bug", "document", "spike", "review", "ralph"], undefined>, v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 1, undefined>, v.MaxValueAction<number, 1000, undefined>]>, undefined>, undefined>, undefined>;
76
+ readonly taskLimitPerType: v.OptionalSchema<v.NullableSchema<v.RecordSchema<v.UnionSchema<[v.PicklistSchema<readonly ["feature", "bug", "document", "spike", "review", "ralph"], undefined>, v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RegexAction<string, "Consumer id must be <namespace>:<name> (lowercase a-z0-9, dash-separated)">]>], undefined>, v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 1, undefined>, v.MaxValueAction<number, 1000, undefined>]>, undefined>, undefined>, undefined>;
77
77
  readonly storeAgentContext: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
78
78
  readonly artifactRetentionDays: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 1, undefined>, v.MaxValueAction<number, 3650, undefined>]>, undefined>;
79
79
  readonly kaizenEnabled: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
@@ -1 +1 @@
1
- {"version":3,"file":"workspace-settings.d.ts","sourceRoot":"","sources":["../src/workspace-settings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAW5B;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,4DAA4C,CAAA;AAC5E,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,mBAAmB,CAAC,CAAA;AAIrE,6FAA6F;AAC7F,eAAO,MAAM,sBAAsB,mSAA8C,CAAA;AACjF,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,sBAAsB,CAAC,CAAA;AAoB3E,sCAAsC;AACtC,eAAO,MAAM,uBAAuB;IAClC;;;OAGG;;IAEH,kEAAkE;;IAElE,8EAA8E;;IAE9E,mFAAmF;;IAEnF;;;;;;;OAOG;;IAEH;;;;OAIG;;IAEH;;;;OAIG;;IAEH;;;;;;OAMG;;IAEH,6EAA6E;;IAE7E;;;;;;;;;;OAUG;;aAEH,CAAA;AACF,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,uBAAuB,CAAC,CAAA;AAE7E,mFAAmF;AACnF,eAAO,MAAM,6BAA6B;;;;;;;;;;;aAexC,CAAA;AACF,MAAM,MAAM,4BAA4B,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,6BAA6B,CAAC,CAAA"}
1
+ {"version":3,"file":"workspace-settings.d.ts","sourceRoot":"","sources":["../src/workspace-settings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAW5B;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,4DAA4C,CAAA;AAC5E,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,mBAAmB,CAAC,CAAA;AAIrE,6FAA6F;AAC7F,eAAO,MAAM,sBAAsB,oeAA8C,CAAA;AACjF,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,sBAAsB,CAAC,CAAA;AAoB3E,sCAAsC;AACtC,eAAO,MAAM,uBAAuB;IAClC;;;OAGG;;IAEH,kEAAkE;;IAElE,8EAA8E;;IAE9E,mFAAmF;;IAEnF;;;;;;;OAOG;;IAEH;;;;OAIG;;IAEH;;;;OAIG;;IAEH;;;;;;OAMG;;IAEH,6EAA6E;;IAE7E;;;;;;;;;;OAUG;;aAEH,CAAA;AACF,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,uBAAuB,CAAC,CAAA;AAE7E,mFAAmF;AACnF,eAAO,MAAM,6BAA6B;;;;;;;;;;;aAexC,CAAA;AACF,MAAM,MAAM,4BAA4B,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,6BAA6B,CAAC,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cat-factory/contracts",
3
- "version": "0.154.2",
3
+ "version": "0.157.0",
4
4
  "description": "Valibot wire contract shared between the Agent Architecture Board frontend and backend.",
5
5
  "repository": {
6
6
  "type": "git",