@cat-factory/contracts 0.144.0 → 0.146.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.
@@ -4,7 +4,7 @@ import * as v from 'valibot';
4
4
  * the frontend can switch on it to render the right action; extending it is a
5
5
  * one-line change here plus a handler in the worker's `act` route.
6
6
  */
7
- export declare const notificationTypeSchema: v.PicklistSchema<["merge_review", "pipeline_complete", "ci_failed", "test_failed", "requirement_review", "clarity_review", "release_regression", "decision_required", "human_test_ready", "visual_confirmation_ready", "human_review", "followup_pending", "fork_decision_pending", "pr_review_ready", "initiative"], undefined>;
7
+ export declare const notificationTypeSchema: v.PicklistSchema<["merge_review", "pipeline_complete", "ci_failed", "test_failed", "requirement_review", "clarity_review", "release_regression", "decision_required", "human_test_ready", "visual_confirmation_ready", "human_review", "followup_pending", "fork_decision_pending", "pr_review_ready", "initiative", "budget_paused"], undefined>;
8
8
  export type NotificationType = v.InferOutput<typeof notificationTypeSchema>;
9
9
  /**
10
10
  * Lifecycle of a notification: `open` until a human engages, terminal `acted`
@@ -85,7 +85,7 @@ export type NotificationPayload = v.InferOutput<typeof notificationPayloadSchema
85
85
  /** A human-actionable item surfaced on the board. */
86
86
  export declare const notificationSchema: v.ObjectSchema<{
87
87
  readonly id: v.StringSchema<undefined>;
88
- readonly type: v.PicklistSchema<["merge_review", "pipeline_complete", "ci_failed", "test_failed", "requirement_review", "clarity_review", "release_regression", "decision_required", "human_test_ready", "visual_confirmation_ready", "human_review", "followup_pending", "fork_decision_pending", "pr_review_ready", "initiative"], undefined>;
88
+ readonly type: v.PicklistSchema<["merge_review", "pipeline_complete", "ci_failed", "test_failed", "requirement_review", "clarity_review", "release_regression", "decision_required", "human_test_ready", "visual_confirmation_ready", "human_review", "followup_pending", "fork_decision_pending", "pr_review_ready", "initiative", "budget_paused"], undefined>;
89
89
  readonly status: v.PicklistSchema<["open", "acted", "dismissed"], undefined>;
90
90
  /**
91
91
  * Render urgency (see {@link notificationSeveritySchema}). Absent ⇒ `normal`. Flipped
@@ -1 +1 @@
1
- {"version":3,"file":"notifications.d.ts","sourceRoot":"","sources":["../src/notifications.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AA2D5B;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,kUAgBjC,CAAA;AACF,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,sBAAsB,CAAC,CAAA;AAE3E;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,6DAA6C,CAAA;AAClF,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,wBAAwB,CAAC,CAAA;AAE/E;;;;;;;GAOG;AACH,eAAO,MAAM,0BAA0B,mDAAmC,CAAA;AAC1E,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,0BAA0B,CAAC,CAAA;AAEnF;;;;;GAKG;AACH,eAAO,MAAM,yBAAyB;IACpC,4DAA4D;;;;;;;IAE5D,sEAAsE;;IAEtE,gFAAgF;;IAEhF,0DAA0D;;IAE1D,kGAAkG;;IAElG,iFAAiF;;IAEjF,mEAAmE;;;;;;;IAEnE,mEAAmE;;;;;;;;IAEnE,4EAA4E;;IAE5E;;;;OAIG;;IAEH,gFAAgF;;IAEhF;;;;OAIG;;IAEH,yGAAyG;;aAEzG,CAAA;AACF,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,yBAAyB,CAAC,CAAA;AAEjF,qDAAqD;AACrD,eAAO,MAAM,kBAAkB;;;;IAI7B;;;OAGG;;IAEH,iFAAiF;;IAEjF,yDAAyD;;IAEzD,wCAAwC;;IAExC,mCAAmC;;IAEnC,wFAAwF;;QAvDxF,4DAA4D;;;;;;;QAE5D,sEAAsE;;QAEtE,gFAAgF;;QAEhF,0DAA0D;;QAE1D,kGAAkG;;QAElG,iFAAiF;;QAEjF,mEAAmE;;;;;;;QAEnE,mEAAmE;;;;;;;;QAEnE,4EAA4E;;QAE5E;;;;WAIG;;QAEH,gFAAgF;;QAEhF;;;;WAIG;;QAEH,yGAAyG;;;;IA0BzG,8DAA8D;;aAE9D,CAAA;AACF,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,kBAAkB,CAAC,CAAA;AAInE,yDAAyD;AACzD,eAAO,MAAM,+BAA+B,iDAAiC,CAAA;AAC7E,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,+BAA+B,CAAC,CAAA"}
1
+ {"version":3,"file":"notifications.d.ts","sourceRoot":"","sources":["../src/notifications.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAiE5B;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,mVAiBjC,CAAA;AACF,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,sBAAsB,CAAC,CAAA;AAE3E;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,6DAA6C,CAAA;AAClF,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,wBAAwB,CAAC,CAAA;AAE/E;;;;;;;GAOG;AACH,eAAO,MAAM,0BAA0B,mDAAmC,CAAA;AAC1E,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,0BAA0B,CAAC,CAAA;AAEnF;;;;;GAKG;AACH,eAAO,MAAM,yBAAyB;IACpC,4DAA4D;;;;;;;IAE5D,sEAAsE;;IAEtE,gFAAgF;;IAEhF,0DAA0D;;IAE1D,kGAAkG;;IAElG,iFAAiF;;IAEjF,mEAAmE;;;;;;;IAEnE,mEAAmE;;;;;;;;IAEnE,4EAA4E;;IAE5E;;;;OAIG;;IAEH,gFAAgF;;IAEhF;;;;OAIG;;IAEH,yGAAyG;;aAEzG,CAAA;AACF,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,yBAAyB,CAAC,CAAA;AAEjF,qDAAqD;AACrD,eAAO,MAAM,kBAAkB;;;;IAI7B;;;OAGG;;IAEH,iFAAiF;;IAEjF,yDAAyD;;IAEzD,wCAAwC;;IAExC,mCAAmC;;IAEnC,wFAAwF;;QAvDxF,4DAA4D;;;;;;;QAE5D,sEAAsE;;QAEtE,gFAAgF;;QAEhF,0DAA0D;;QAE1D,kGAAkG;;QAElG,iFAAiF;;QAEjF,mEAAmE;;;;;;;QAEnE,mEAAmE;;;;;;;;QAEnE,4EAA4E;;QAE5E;;;;WAIG;;QAEH,gFAAgF;;QAEhF;;;;WAIG;;QAEH,yGAAyG;;;;IA0BzG,8DAA8D;;aAE9D,CAAA;AACF,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,kBAAkB,CAAC,CAAA;AAInE,yDAAyD;AACzD,eAAO,MAAM,+BAA+B,iDAAiC,CAAA;AAC7E,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,+BAA+B,CAAC,CAAA"}
@@ -50,6 +50,12 @@ import { onCallAssessmentSchema, releaseSignalSchema } from './release.js';
50
50
  // this the three-choice decision is reachable only by drilling
51
51
  // into the parked step, so the run looks silently stuck; acting
52
52
  // on it opens that step's decision surface.
53
+ // - `budget_paused` — one or more runs were paused by the spend safeguard (the workspace,
54
+ // account, or user budget is exhausted). Workspace-scoped (one card,
55
+ // not one per run) and purely informational: the sweeper never re-drives
56
+ // a `paused` run, so without this card the ONLY signal is the paused
57
+ // badge on the board. Raise the budget then resume from the spend panel;
58
+ // `act` just marks it read.
53
59
  //
54
60
  // In-app delivery is the only channel today, but the core models delivery behind
55
61
  // a `NotificationChannel` port so email / Slack channels can be added later
@@ -76,6 +82,7 @@ export const notificationTypeSchema = v.picklist([
76
82
  'fork_decision_pending',
77
83
  'pr_review_ready',
78
84
  'initiative',
85
+ 'budget_paused',
79
86
  ]);
80
87
  /**
81
88
  * Lifecycle of a notification: `open` until a human engages, terminal `acted`
@@ -1 +1 @@
1
- {"version":3,"file":"notifications.js","sourceRoot":"","sources":["../src/notifications.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"notifications.js","sourceRoot":"","sources":["../src/notifications.ts"],"names":[],"mappings":"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"}
@@ -269,7 +269,7 @@ export type PublicPipelineList = v.InferOutput<typeof publicPipelineListSchema>;
269
269
  export declare const publicNotificationListSchema: v.ObjectSchema<{
270
270
  readonly notifications: v.ArraySchema<v.ObjectSchema<{
271
271
  readonly id: v.StringSchema<undefined>;
272
- readonly type: v.PicklistSchema<["merge_review", "pipeline_complete", "ci_failed", "test_failed", "requirement_review", "clarity_review", "release_regression", "decision_required", "human_test_ready", "visual_confirmation_ready", "human_review", "followup_pending", "fork_decision_pending", "pr_review_ready", "initiative"], undefined>;
272
+ readonly type: v.PicklistSchema<["merge_review", "pipeline_complete", "ci_failed", "test_failed", "requirement_review", "clarity_review", "release_regression", "decision_required", "human_test_ready", "visual_confirmation_ready", "human_review", "followup_pending", "fork_decision_pending", "pr_review_ready", "initiative", "budget_paused"], undefined>;
273
273
  readonly status: v.PicklistSchema<["open", "acted", "dismissed"], undefined>;
274
274
  readonly severity: v.OptionalSchema<v.PicklistSchema<["normal", "urgent"], undefined>, undefined>;
275
275
  readonly blockId: v.NullableSchema<v.StringSchema<undefined>, undefined>;
@@ -56,6 +56,7 @@ export * from './tracker.js';
56
56
  export * from './user-secret.js';
57
57
  export * from './user-settings.js';
58
58
  export * from './vendor-credentials.js';
59
+ export * from './workspace-members.js';
59
60
  export * from './workspace-settings.js';
60
61
  export * from './workspaces.js';
61
62
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/routes/index.ts"],"names":[],"mappings":"AAGA,cAAc,cAAc,CAAA;AAC5B,cAAc,eAAe,CAAA;AAC7B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,eAAe,CAAA;AAC7B,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA;AAC1B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,cAAc,CAAA;AAC5B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,mBAAmB,CAAA;AACjC,cAAc,8BAA8B,CAAA;AAC5C,cAAc,gBAAgB,CAAA;AAC9B,cAAc,oBAAoB,CAAA;AAClC,cAAc,eAAe,CAAA;AAC7B,cAAc,mBAAmB,CAAA;AACjC,cAAc,eAAe,CAAA;AAC7B,cAAc,uBAAuB,CAAA;AACrC,cAAc,oBAAoB,CAAA;AAClC,cAAc,aAAa,CAAA;AAC3B,cAAc,mBAAmB,CAAA;AACjC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,qBAAqB,CAAA;AACnC,cAAc,0BAA0B,CAAA;AACxC,cAAc,aAAa,CAAA;AAC3B,cAAc,kBAAkB,CAAA;AAChC,cAAc,oBAAoB,CAAA;AAClC,cAAc,YAAY,CAAA;AAC1B,cAAc,oBAAoB,CAAA;AAClC,cAAc,oBAAoB,CAAA;AAClC,cAAc,aAAa,CAAA;AAC3B,cAAc,oBAAoB,CAAA;AAClC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,yBAAyB,CAAA;AACvC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,gBAAgB,CAAA;AAC9B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,cAAc,CAAA;AAC5B,cAAc,uBAAuB,CAAA;AACrC,cAAc,wBAAwB,CAAA;AACtC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,cAAc,CAAA;AAC5B,cAAc,mBAAmB,CAAA;AACjC,cAAc,cAAc,CAAA;AAC5B,cAAc,cAAc,CAAA;AAC5B,cAAc,gCAAgC,CAAA;AAC9C,cAAc,eAAe,CAAA;AAC7B,cAAc,mBAAmB,CAAA;AACjC,cAAc,YAAY,CAAA;AAC1B,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA;AAC1B,cAAc,cAAc,CAAA;AAC5B,cAAc,kBAAkB,CAAA;AAChC,cAAc,oBAAoB,CAAA;AAClC,cAAc,yBAAyB,CAAA;AACvC,cAAc,yBAAyB,CAAA;AACvC,cAAc,iBAAiB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/routes/index.ts"],"names":[],"mappings":"AAGA,cAAc,cAAc,CAAA;AAC5B,cAAc,eAAe,CAAA;AAC7B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,eAAe,CAAA;AAC7B,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA;AAC1B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,cAAc,CAAA;AAC5B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,mBAAmB,CAAA;AACjC,cAAc,8BAA8B,CAAA;AAC5C,cAAc,gBAAgB,CAAA;AAC9B,cAAc,oBAAoB,CAAA;AAClC,cAAc,eAAe,CAAA;AAC7B,cAAc,mBAAmB,CAAA;AACjC,cAAc,eAAe,CAAA;AAC7B,cAAc,uBAAuB,CAAA;AACrC,cAAc,oBAAoB,CAAA;AAClC,cAAc,aAAa,CAAA;AAC3B,cAAc,mBAAmB,CAAA;AACjC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,qBAAqB,CAAA;AACnC,cAAc,0BAA0B,CAAA;AACxC,cAAc,aAAa,CAAA;AAC3B,cAAc,kBAAkB,CAAA;AAChC,cAAc,oBAAoB,CAAA;AAClC,cAAc,YAAY,CAAA;AAC1B,cAAc,oBAAoB,CAAA;AAClC,cAAc,oBAAoB,CAAA;AAClC,cAAc,aAAa,CAAA;AAC3B,cAAc,oBAAoB,CAAA;AAClC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,yBAAyB,CAAA;AACvC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,gBAAgB,CAAA;AAC9B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,cAAc,CAAA;AAC5B,cAAc,uBAAuB,CAAA;AACrC,cAAc,wBAAwB,CAAA;AACtC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,cAAc,CAAA;AAC5B,cAAc,mBAAmB,CAAA;AACjC,cAAc,cAAc,CAAA;AAC5B,cAAc,cAAc,CAAA;AAC5B,cAAc,gCAAgC,CAAA;AAC9C,cAAc,eAAe,CAAA;AAC7B,cAAc,mBAAmB,CAAA;AACjC,cAAc,YAAY,CAAA;AAC1B,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA;AAC1B,cAAc,cAAc,CAAA;AAC5B,cAAc,kBAAkB,CAAA;AAChC,cAAc,oBAAoB,CAAA;AAClC,cAAc,yBAAyB,CAAA;AACvC,cAAc,wBAAwB,CAAA;AACtC,cAAc,yBAAyB,CAAA;AACvC,cAAc,iBAAiB,CAAA"}
@@ -59,6 +59,7 @@ export * from './tracker.js';
59
59
  export * from './user-secret.js';
60
60
  export * from './user-settings.js';
61
61
  export * from './vendor-credentials.js';
62
+ export * from './workspace-members.js';
62
63
  export * from './workspace-settings.js';
63
64
  export * from './workspaces.js';
64
65
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/routes/index.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,+EAA+E;AAC/E,oDAAoD;AACpD,cAAc,cAAc,CAAA;AAC5B,cAAc,eAAe,CAAA;AAC7B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,eAAe,CAAA;AAC7B,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA;AAC1B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,cAAc,CAAA;AAC5B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,mBAAmB,CAAA;AACjC,cAAc,8BAA8B,CAAA;AAC5C,cAAc,gBAAgB,CAAA;AAC9B,cAAc,oBAAoB,CAAA;AAClC,cAAc,eAAe,CAAA;AAC7B,cAAc,mBAAmB,CAAA;AACjC,cAAc,eAAe,CAAA;AAC7B,cAAc,uBAAuB,CAAA;AACrC,cAAc,oBAAoB,CAAA;AAClC,cAAc,aAAa,CAAA;AAC3B,cAAc,mBAAmB,CAAA;AACjC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,qBAAqB,CAAA;AACnC,cAAc,0BAA0B,CAAA;AACxC,cAAc,aAAa,CAAA;AAC3B,cAAc,kBAAkB,CAAA;AAChC,cAAc,oBAAoB,CAAA;AAClC,cAAc,YAAY,CAAA;AAC1B,cAAc,oBAAoB,CAAA;AAClC,cAAc,oBAAoB,CAAA;AAClC,cAAc,aAAa,CAAA;AAC3B,cAAc,oBAAoB,CAAA;AAClC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,yBAAyB,CAAA;AACvC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,gBAAgB,CAAA;AAC9B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,cAAc,CAAA;AAC5B,cAAc,uBAAuB,CAAA;AACrC,cAAc,wBAAwB,CAAA;AACtC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,cAAc,CAAA;AAC5B,cAAc,mBAAmB,CAAA;AACjC,cAAc,cAAc,CAAA;AAC5B,cAAc,cAAc,CAAA;AAC5B,cAAc,gCAAgC,CAAA;AAC9C,cAAc,eAAe,CAAA;AAC7B,cAAc,mBAAmB,CAAA;AACjC,cAAc,YAAY,CAAA;AAC1B,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA;AAC1B,cAAc,cAAc,CAAA;AAC5B,cAAc,kBAAkB,CAAA;AAChC,cAAc,oBAAoB,CAAA;AAClC,cAAc,yBAAyB,CAAA;AACvC,cAAc,yBAAyB,CAAA;AACvC,cAAc,iBAAiB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/routes/index.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,+EAA+E;AAC/E,oDAAoD;AACpD,cAAc,cAAc,CAAA;AAC5B,cAAc,eAAe,CAAA;AAC7B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,eAAe,CAAA;AAC7B,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA;AAC1B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,cAAc,CAAA;AAC5B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,mBAAmB,CAAA;AACjC,cAAc,8BAA8B,CAAA;AAC5C,cAAc,gBAAgB,CAAA;AAC9B,cAAc,oBAAoB,CAAA;AAClC,cAAc,eAAe,CAAA;AAC7B,cAAc,mBAAmB,CAAA;AACjC,cAAc,eAAe,CAAA;AAC7B,cAAc,uBAAuB,CAAA;AACrC,cAAc,oBAAoB,CAAA;AAClC,cAAc,aAAa,CAAA;AAC3B,cAAc,mBAAmB,CAAA;AACjC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,qBAAqB,CAAA;AACnC,cAAc,0BAA0B,CAAA;AACxC,cAAc,aAAa,CAAA;AAC3B,cAAc,kBAAkB,CAAA;AAChC,cAAc,oBAAoB,CAAA;AAClC,cAAc,YAAY,CAAA;AAC1B,cAAc,oBAAoB,CAAA;AAClC,cAAc,oBAAoB,CAAA;AAClC,cAAc,aAAa,CAAA;AAC3B,cAAc,oBAAoB,CAAA;AAClC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,yBAAyB,CAAA;AACvC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,gBAAgB,CAAA;AAC9B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,cAAc,CAAA;AAC5B,cAAc,uBAAuB,CAAA;AACrC,cAAc,wBAAwB,CAAA;AACtC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,cAAc,CAAA;AAC5B,cAAc,mBAAmB,CAAA;AACjC,cAAc,cAAc,CAAA;AAC5B,cAAc,cAAc,CAAA;AAC5B,cAAc,gCAAgC,CAAA;AAC9C,cAAc,eAAe,CAAA;AAC7B,cAAc,mBAAmB,CAAA;AACjC,cAAc,YAAY,CAAA;AAC1B,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA;AAC1B,cAAc,cAAc,CAAA;AAC5B,cAAc,kBAAkB,CAAA;AAChC,cAAc,oBAAoB,CAAA;AAClC,cAAc,yBAAyB,CAAA;AACvC,cAAc,wBAAwB,CAAA;AACtC,cAAc,yBAAyB,CAAA;AACvC,cAAc,iBAAiB,CAAA"}
@@ -28,7 +28,7 @@ export declare const listNotificationsContract: {
28
28
  }, undefined>;
29
29
  readonly 200: v.ArraySchema<v.ObjectSchema<{
30
30
  readonly id: v.StringSchema<undefined>;
31
- readonly type: v.PicklistSchema<["merge_review", "pipeline_complete", "ci_failed", "test_failed", "requirement_review", "clarity_review", "release_regression", "decision_required", "human_test_ready", "visual_confirmation_ready", "human_review", "followup_pending", "fork_decision_pending", "pr_review_ready", "initiative"], undefined>;
31
+ readonly type: v.PicklistSchema<["merge_review", "pipeline_complete", "ci_failed", "test_failed", "requirement_review", "clarity_review", "release_regression", "decision_required", "human_test_ready", "visual_confirmation_ready", "human_review", "followup_pending", "fork_decision_pending", "pr_review_ready", "initiative", "budget_paused"], undefined>;
32
32
  readonly status: v.PicklistSchema<["open", "acted", "dismissed"], undefined>;
33
33
  readonly severity: v.OptionalSchema<v.PicklistSchema<["normal", "urgent"], undefined>, undefined>;
34
34
  readonly blockId: v.NullableSchema<v.StringSchema<undefined>, undefined>;
@@ -105,7 +105,7 @@ export declare const actNotificationContract: {
105
105
  }, undefined>;
106
106
  readonly 200: v.ObjectSchema<{
107
107
  readonly id: v.StringSchema<undefined>;
108
- readonly type: v.PicklistSchema<["merge_review", "pipeline_complete", "ci_failed", "test_failed", "requirement_review", "clarity_review", "release_regression", "decision_required", "human_test_ready", "visual_confirmation_ready", "human_review", "followup_pending", "fork_decision_pending", "pr_review_ready", "initiative"], undefined>;
108
+ readonly type: v.PicklistSchema<["merge_review", "pipeline_complete", "ci_failed", "test_failed", "requirement_review", "clarity_review", "release_regression", "decision_required", "human_test_ready", "visual_confirmation_ready", "human_review", "followup_pending", "fork_decision_pending", "pr_review_ready", "initiative", "budget_paused"], undefined>;
109
109
  readonly status: v.PicklistSchema<["open", "acted", "dismissed"], undefined>;
110
110
  readonly severity: v.OptionalSchema<v.PicklistSchema<["normal", "urgent"], undefined>, undefined>;
111
111
  readonly blockId: v.NullableSchema<v.StringSchema<undefined>, undefined>;
@@ -182,7 +182,7 @@ export declare const dismissNotificationContract: {
182
182
  }, undefined>;
183
183
  readonly 200: v.ObjectSchema<{
184
184
  readonly id: v.StringSchema<undefined>;
185
- readonly type: v.PicklistSchema<["merge_review", "pipeline_complete", "ci_failed", "test_failed", "requirement_review", "clarity_review", "release_regression", "decision_required", "human_test_ready", "visual_confirmation_ready", "human_review", "followup_pending", "fork_decision_pending", "pr_review_ready", "initiative"], undefined>;
185
+ readonly type: v.PicklistSchema<["merge_review", "pipeline_complete", "ci_failed", "test_failed", "requirement_review", "clarity_review", "release_regression", "decision_required", "human_test_ready", "visual_confirmation_ready", "human_review", "followup_pending", "fork_decision_pending", "pr_review_ready", "initiative", "budget_paused"], undefined>;
186
186
  readonly status: v.PicklistSchema<["open", "acted", "dismissed"], undefined>;
187
187
  readonly severity: v.OptionalSchema<v.PicklistSchema<["normal", "urgent"], undefined>, undefined>;
188
188
  readonly blockId: v.NullableSchema<v.StringSchema<undefined>, undefined>;
@@ -737,7 +737,7 @@ export declare const listPublicNotificationsContract: {
737
737
  readonly 200: import("valibot").ObjectSchema<{
738
738
  readonly notifications: import("valibot").ArraySchema<import("valibot").ObjectSchema<{
739
739
  readonly id: import("valibot").StringSchema<undefined>;
740
- readonly type: import("valibot").PicklistSchema<["merge_review", "pipeline_complete", "ci_failed", "test_failed", "requirement_review", "clarity_review", "release_regression", "decision_required", "human_test_ready", "visual_confirmation_ready", "human_review", "followup_pending", "fork_decision_pending", "pr_review_ready", "initiative"], undefined>;
740
+ readonly type: import("valibot").PicklistSchema<["merge_review", "pipeline_complete", "ci_failed", "test_failed", "requirement_review", "clarity_review", "release_regression", "decision_required", "human_test_ready", "visual_confirmation_ready", "human_review", "followup_pending", "fork_decision_pending", "pr_review_ready", "initiative", "budget_paused"], undefined>;
741
741
  readonly status: import("valibot").PicklistSchema<["open", "acted", "dismissed"], undefined>;
742
742
  readonly severity: import("valibot").OptionalSchema<import("valibot").PicklistSchema<["normal", "urgent"], undefined>, undefined>;
743
743
  readonly blockId: import("valibot").NullableSchema<import("valibot").StringSchema<undefined>, undefined>;
@@ -816,7 +816,7 @@ export declare const actPublicNotificationContract: {
816
816
  }, undefined>;
817
817
  readonly 200: import("valibot").ObjectSchema<{
818
818
  readonly id: import("valibot").StringSchema<undefined>;
819
- readonly type: import("valibot").PicklistSchema<["merge_review", "pipeline_complete", "ci_failed", "test_failed", "requirement_review", "clarity_review", "release_regression", "decision_required", "human_test_ready", "visual_confirmation_ready", "human_review", "followup_pending", "fork_decision_pending", "pr_review_ready", "initiative"], undefined>;
819
+ readonly type: import("valibot").PicklistSchema<["merge_review", "pipeline_complete", "ci_failed", "test_failed", "requirement_review", "clarity_review", "release_regression", "decision_required", "human_test_ready", "visual_confirmation_ready", "human_review", "followup_pending", "fork_decision_pending", "pr_review_ready", "initiative", "budget_paused"], undefined>;
820
820
  readonly status: import("valibot").PicklistSchema<["open", "acted", "dismissed"], undefined>;
821
821
  readonly severity: import("valibot").OptionalSchema<import("valibot").PicklistSchema<["normal", "urgent"], undefined>, undefined>;
822
822
  readonly blockId: import("valibot").NullableSchema<import("valibot").StringSchema<undefined>, undefined>;
@@ -894,7 +894,7 @@ export declare const dismissPublicNotificationContract: {
894
894
  }, undefined>;
895
895
  readonly 200: import("valibot").ObjectSchema<{
896
896
  readonly id: import("valibot").StringSchema<undefined>;
897
- readonly type: import("valibot").PicklistSchema<["merge_review", "pipeline_complete", "ci_failed", "test_failed", "requirement_review", "clarity_review", "release_regression", "decision_required", "human_test_ready", "visual_confirmation_ready", "human_review", "followup_pending", "fork_decision_pending", "pr_review_ready", "initiative"], undefined>;
897
+ readonly type: import("valibot").PicklistSchema<["merge_review", "pipeline_complete", "ci_failed", "test_failed", "requirement_review", "clarity_review", "release_regression", "decision_required", "human_test_ready", "visual_confirmation_ready", "human_review", "followup_pending", "fork_decision_pending", "pr_review_ready", "initiative", "budget_paused"], undefined>;
898
898
  readonly status: import("valibot").PicklistSchema<["open", "acted", "dismissed"], undefined>;
899
899
  readonly severity: import("valibot").OptionalSchema<import("valibot").PicklistSchema<["normal", "urgent"], undefined>, undefined>;
900
900
  readonly blockId: import("valibot").NullableSchema<import("valibot").StringSchema<undefined>, undefined>;
@@ -200,7 +200,7 @@ export declare const getSlackSettingsContract: {
200
200
  }, undefined>;
201
201
  }, undefined>;
202
202
  readonly 200: v.ObjectSchema<{
203
- readonly routes: v.RecordSchema<v.PicklistSchema<["merge_review", "pipeline_complete", "ci_failed", "test_failed", "requirement_review", "clarity_review", "release_regression", "decision_required", "human_test_ready", "visual_confirmation_ready", "human_review", "followup_pending", "fork_decision_pending", "pr_review_ready", "initiative"], undefined>, v.ObjectSchema<{
203
+ readonly routes: v.RecordSchema<v.PicklistSchema<["merge_review", "pipeline_complete", "ci_failed", "test_failed", "requirement_review", "clarity_review", "release_regression", "decision_required", "human_test_ready", "visual_confirmation_ready", "human_review", "followup_pending", "fork_decision_pending", "pr_review_ready", "initiative", "budget_paused"], undefined>, v.ObjectSchema<{
204
204
  readonly enabled: v.BooleanSchema<undefined>;
205
205
  readonly channel: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MaxLengthAction<string, 200, undefined>]>;
206
206
  }, undefined>, undefined>;
@@ -213,7 +213,7 @@ export declare const updateSlackSettingsContract: {
213
213
  readonly method: "put";
214
214
  readonly pathResolver: () => string;
215
215
  readonly requestBodySchema: v.ObjectSchema<{
216
- readonly routes: v.RecordSchema<v.PicklistSchema<["merge_review", "pipeline_complete", "ci_failed", "test_failed", "requirement_review", "clarity_review", "release_regression", "decision_required", "human_test_ready", "visual_confirmation_ready", "human_review", "followup_pending", "fork_decision_pending", "pr_review_ready", "initiative"], undefined>, v.ObjectSchema<{
216
+ readonly routes: v.RecordSchema<v.PicklistSchema<["merge_review", "pipeline_complete", "ci_failed", "test_failed", "requirement_review", "clarity_review", "release_regression", "decision_required", "human_test_ready", "visual_confirmation_ready", "human_review", "followup_pending", "fork_decision_pending", "pr_review_ready", "initiative", "budget_paused"], undefined>, v.ObjectSchema<{
217
217
  readonly enabled: v.BooleanSchema<undefined>;
218
218
  readonly channel: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MaxLengthAction<string, 200, undefined>]>;
219
219
  }, undefined>, undefined>;
@@ -243,7 +243,7 @@ export declare const updateSlackSettingsContract: {
243
243
  }, undefined>;
244
244
  }, undefined>;
245
245
  readonly 200: v.ObjectSchema<{
246
- readonly routes: v.RecordSchema<v.PicklistSchema<["merge_review", "pipeline_complete", "ci_failed", "test_failed", "requirement_review", "clarity_review", "release_regression", "decision_required", "human_test_ready", "visual_confirmation_ready", "human_review", "followup_pending", "fork_decision_pending", "pr_review_ready", "initiative"], undefined>, v.ObjectSchema<{
246
+ readonly routes: v.RecordSchema<v.PicklistSchema<["merge_review", "pipeline_complete", "ci_failed", "test_failed", "requirement_review", "clarity_review", "release_regression", "decision_required", "human_test_ready", "visual_confirmation_ready", "human_review", "followup_pending", "fork_decision_pending", "pr_review_ready", "initiative", "budget_paused"], undefined>, v.ObjectSchema<{
247
247
  readonly enabled: v.BooleanSchema<undefined>;
248
248
  readonly channel: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MaxLengthAction<string, 200, undefined>]>;
249
249
  }, undefined>, undefined>;
@@ -0,0 +1,221 @@
1
+ import { ContractNoBody } from '@toad-contracts/valibot';
2
+ import * as v from 'valibot';
3
+ export declare const listWorkspaceMembersContract: {
4
+ readonly method: "get";
5
+ readonly requestPathParamsSchema: v.ObjectSchema<{
6
+ workspaceId: v.StringSchema<undefined>;
7
+ }, undefined> & import("@toad-contracts/core").StandardObjectKeysV1<unknown, unknown>;
8
+ readonly pathResolver: ({ workspaceId }: {
9
+ workspaceId: string;
10
+ }) => string;
11
+ readonly responsesByStatusCode: {
12
+ readonly '4xx': v.ObjectSchema<{
13
+ readonly error: v.ObjectSchema<{
14
+ readonly code: v.StringSchema<undefined>;
15
+ readonly message: v.StringSchema<undefined>;
16
+ readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
17
+ readonly issues: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
18
+ readonly path: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
19
+ readonly message: v.StringSchema<undefined>;
20
+ }, undefined>, undefined>, undefined>;
21
+ }, undefined>;
22
+ }, undefined>;
23
+ readonly '5xx': v.ObjectSchema<{
24
+ readonly error: v.ObjectSchema<{
25
+ readonly code: v.StringSchema<undefined>;
26
+ readonly message: v.StringSchema<undefined>;
27
+ readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
28
+ readonly issues: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
29
+ readonly path: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
30
+ readonly message: v.StringSchema<undefined>;
31
+ }, undefined>, undefined>, undefined>;
32
+ }, undefined>;
33
+ }, undefined>;
34
+ readonly 200: v.ArraySchema<v.ObjectSchema<{
35
+ readonly workspaceId: v.StringSchema<undefined>;
36
+ readonly userId: v.StringSchema<undefined>;
37
+ readonly role: v.PicklistSchema<["admin", "member", "viewer"], undefined>;
38
+ readonly createdAt: v.NumberSchema<undefined>;
39
+ readonly addedBy: v.NullableSchema<v.StringSchema<undefined>, undefined>;
40
+ readonly name: v.OptionalSchema<v.NullableSchema<v.StringSchema<undefined>, undefined>, undefined>;
41
+ readonly email: v.OptionalSchema<v.NullableSchema<v.StringSchema<undefined>, undefined>, undefined>;
42
+ readonly avatarUrl: v.OptionalSchema<v.NullableSchema<v.StringSchema<undefined>, undefined>, undefined>;
43
+ }, undefined>, undefined>;
44
+ };
45
+ };
46
+ export declare const addWorkspaceMemberContract: {
47
+ readonly method: "post";
48
+ readonly requestPathParamsSchema: v.ObjectSchema<{
49
+ workspaceId: v.StringSchema<undefined>;
50
+ }, undefined> & import("@toad-contracts/core").StandardObjectKeysV1<unknown, unknown>;
51
+ readonly pathResolver: ({ workspaceId }: {
52
+ workspaceId: string;
53
+ }) => string;
54
+ readonly requestBodySchema: v.ObjectSchema<{
55
+ readonly userId: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
56
+ readonly role: v.PicklistSchema<["admin", "member", "viewer"], undefined>;
57
+ }, undefined>;
58
+ readonly responsesByStatusCode: {
59
+ readonly '4xx': v.ObjectSchema<{
60
+ readonly error: v.ObjectSchema<{
61
+ readonly code: v.StringSchema<undefined>;
62
+ readonly message: v.StringSchema<undefined>;
63
+ readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
64
+ readonly issues: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
65
+ readonly path: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
66
+ readonly message: v.StringSchema<undefined>;
67
+ }, undefined>, undefined>, undefined>;
68
+ }, undefined>;
69
+ }, undefined>;
70
+ readonly '5xx': v.ObjectSchema<{
71
+ readonly error: v.ObjectSchema<{
72
+ readonly code: v.StringSchema<undefined>;
73
+ readonly message: v.StringSchema<undefined>;
74
+ readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
75
+ readonly issues: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
76
+ readonly path: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
77
+ readonly message: v.StringSchema<undefined>;
78
+ }, undefined>, undefined>, undefined>;
79
+ }, undefined>;
80
+ }, undefined>;
81
+ readonly 201: v.ObjectSchema<{
82
+ readonly workspaceId: v.StringSchema<undefined>;
83
+ readonly userId: v.StringSchema<undefined>;
84
+ readonly role: v.PicklistSchema<["admin", "member", "viewer"], undefined>;
85
+ readonly createdAt: v.NumberSchema<undefined>;
86
+ readonly addedBy: v.NullableSchema<v.StringSchema<undefined>, undefined>;
87
+ readonly name: v.OptionalSchema<v.NullableSchema<v.StringSchema<undefined>, undefined>, undefined>;
88
+ readonly email: v.OptionalSchema<v.NullableSchema<v.StringSchema<undefined>, undefined>, undefined>;
89
+ readonly avatarUrl: v.OptionalSchema<v.NullableSchema<v.StringSchema<undefined>, undefined>, undefined>;
90
+ }, undefined>;
91
+ };
92
+ };
93
+ export declare const setWorkspaceMemberRoleContract: {
94
+ readonly method: "patch";
95
+ readonly requestPathParamsSchema: v.ObjectSchema<{
96
+ readonly workspaceId: v.StringSchema<undefined>;
97
+ readonly userId: v.StringSchema<undefined>;
98
+ }, undefined> & import("@toad-contracts/core").StandardObjectKeysV1<unknown, unknown>;
99
+ readonly pathResolver: ({ workspaceId, userId }: {
100
+ workspaceId: string;
101
+ userId: string;
102
+ }) => string;
103
+ readonly requestBodySchema: v.ObjectSchema<{
104
+ readonly role: v.PicklistSchema<["admin", "member", "viewer"], undefined>;
105
+ }, undefined>;
106
+ readonly responsesByStatusCode: {
107
+ readonly '4xx': v.ObjectSchema<{
108
+ readonly error: v.ObjectSchema<{
109
+ readonly code: v.StringSchema<undefined>;
110
+ readonly message: v.StringSchema<undefined>;
111
+ readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
112
+ readonly issues: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
113
+ readonly path: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
114
+ readonly message: v.StringSchema<undefined>;
115
+ }, undefined>, undefined>, undefined>;
116
+ }, undefined>;
117
+ }, undefined>;
118
+ readonly '5xx': v.ObjectSchema<{
119
+ readonly error: v.ObjectSchema<{
120
+ readonly code: v.StringSchema<undefined>;
121
+ readonly message: v.StringSchema<undefined>;
122
+ readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
123
+ readonly issues: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
124
+ readonly path: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
125
+ readonly message: v.StringSchema<undefined>;
126
+ }, undefined>, undefined>, undefined>;
127
+ }, undefined>;
128
+ }, undefined>;
129
+ readonly 200: v.ObjectSchema<{
130
+ readonly workspaceId: v.StringSchema<undefined>;
131
+ readonly userId: v.StringSchema<undefined>;
132
+ readonly role: v.PicklistSchema<["admin", "member", "viewer"], undefined>;
133
+ readonly createdAt: v.NumberSchema<undefined>;
134
+ readonly addedBy: v.NullableSchema<v.StringSchema<undefined>, undefined>;
135
+ readonly name: v.OptionalSchema<v.NullableSchema<v.StringSchema<undefined>, undefined>, undefined>;
136
+ readonly email: v.OptionalSchema<v.NullableSchema<v.StringSchema<undefined>, undefined>, undefined>;
137
+ readonly avatarUrl: v.OptionalSchema<v.NullableSchema<v.StringSchema<undefined>, undefined>, undefined>;
138
+ }, undefined>;
139
+ };
140
+ };
141
+ export declare const removeWorkspaceMemberContract: {
142
+ readonly method: "delete";
143
+ readonly requestPathParamsSchema: v.ObjectSchema<{
144
+ readonly workspaceId: v.StringSchema<undefined>;
145
+ readonly userId: v.StringSchema<undefined>;
146
+ }, undefined> & import("@toad-contracts/core").StandardObjectKeysV1<unknown, unknown>;
147
+ readonly pathResolver: ({ workspaceId, userId }: {
148
+ workspaceId: string;
149
+ userId: string;
150
+ }) => string;
151
+ readonly responsesByStatusCode: {
152
+ readonly '4xx': v.ObjectSchema<{
153
+ readonly error: v.ObjectSchema<{
154
+ readonly code: v.StringSchema<undefined>;
155
+ readonly message: v.StringSchema<undefined>;
156
+ readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
157
+ readonly issues: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
158
+ readonly path: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
159
+ readonly message: v.StringSchema<undefined>;
160
+ }, undefined>, undefined>, undefined>;
161
+ }, undefined>;
162
+ }, undefined>;
163
+ readonly '5xx': v.ObjectSchema<{
164
+ readonly error: v.ObjectSchema<{
165
+ readonly code: v.StringSchema<undefined>;
166
+ readonly message: v.StringSchema<undefined>;
167
+ readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
168
+ readonly issues: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
169
+ readonly path: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
170
+ readonly message: v.StringSchema<undefined>;
171
+ }, undefined>, undefined>, undefined>;
172
+ }, undefined>;
173
+ }, undefined>;
174
+ readonly 204: typeof ContractNoBody;
175
+ };
176
+ };
177
+ export declare const setWorkspaceAccessModeContract: {
178
+ readonly method: "put";
179
+ readonly requestPathParamsSchema: v.ObjectSchema<{
180
+ workspaceId: v.StringSchema<undefined>;
181
+ }, undefined> & import("@toad-contracts/core").StandardObjectKeysV1<unknown, unknown>;
182
+ readonly pathResolver: ({ workspaceId }: {
183
+ workspaceId: string;
184
+ }) => string;
185
+ readonly requestBodySchema: v.ObjectSchema<{
186
+ readonly accessMode: v.PicklistSchema<["account", "restricted"], undefined>;
187
+ }, undefined>;
188
+ readonly responsesByStatusCode: {
189
+ readonly '4xx': v.ObjectSchema<{
190
+ readonly error: v.ObjectSchema<{
191
+ readonly code: v.StringSchema<undefined>;
192
+ readonly message: v.StringSchema<undefined>;
193
+ readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
194
+ readonly issues: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
195
+ readonly path: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
196
+ readonly message: v.StringSchema<undefined>;
197
+ }, undefined>, undefined>, undefined>;
198
+ }, undefined>;
199
+ }, undefined>;
200
+ readonly '5xx': v.ObjectSchema<{
201
+ readonly error: v.ObjectSchema<{
202
+ readonly code: v.StringSchema<undefined>;
203
+ readonly message: v.StringSchema<undefined>;
204
+ readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
205
+ readonly issues: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
206
+ readonly path: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
207
+ readonly message: v.StringSchema<undefined>;
208
+ }, undefined>, undefined>, undefined>;
209
+ }, undefined>;
210
+ }, undefined>;
211
+ readonly 200: v.ObjectSchema<{
212
+ readonly id: v.StringSchema<undefined>;
213
+ readonly name: v.StringSchema<undefined>;
214
+ readonly description: v.NullableSchema<v.StringSchema<undefined>, undefined>;
215
+ readonly createdAt: v.NumberSchema<undefined>;
216
+ readonly accountId: v.NullableSchema<v.StringSchema<undefined>, undefined>;
217
+ readonly accessMode: v.OptionalSchema<v.PicklistSchema<["account", "restricted"], undefined>, undefined>;
218
+ }, undefined>;
219
+ };
220
+ };
221
+ //# sourceMappingURL=workspace-members.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace-members.d.ts","sourceRoot":"","sources":["../../src/routes/workspace-members.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAqC,MAAM,yBAAyB,CAAA;AAC3F,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAuB5B,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAKvC,CAAA;AAEF,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAMrC,CAAA;AAEF,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAMzC,CAAA;AAEF,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAKxC,CAAA;AAEF,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAMzC,CAAA"}
@@ -0,0 +1,49 @@
1
+ import { ContractNoBody, defineApiContract, withObjectKeys } from '@toad-contracts/valibot';
2
+ import * as v from 'valibot';
3
+ import { workspaceSchema } from '../entities.js';
4
+ import { addWorkspaceMemberSchema, setWorkspaceAccessModeSchema, setWorkspaceMemberRoleSchema, workspaceMemberSchema, } from '../workspace-members.js';
5
+ import { errorResponses, singleStringParam } from './_shared.js';
6
+ // ---------------------------------------------------------------------------
7
+ // Workspace-membership route contracts (workspace-rbac initiative, slice 5). See
8
+ // WorkspaceMemberController in @cat-factory/server. All mounted under
9
+ // `/workspaces/:workspaceId`. The roster read is open to any resolved role
10
+ // (`workspace.read`, satisfied by the gate resolution itself); every write requires
11
+ // `members.manage` (enforced by `requirePermission` in the controller).
12
+ // ---------------------------------------------------------------------------
13
+ const workspaceMemberListSchema = v.array(workspaceMemberSchema);
14
+ const workspaceIdParams = singleStringParam('workspaceId');
15
+ const memberParams = withObjectKeys(v.object({ workspaceId: v.string(), userId: v.string() }));
16
+ export const listWorkspaceMembersContract = defineApiContract({
17
+ method: 'get',
18
+ requestPathParamsSchema: workspaceIdParams,
19
+ pathResolver: ({ workspaceId }) => `/workspaces/${workspaceId}/members`,
20
+ responsesByStatusCode: { 200: workspaceMemberListSchema, ...errorResponses },
21
+ });
22
+ export const addWorkspaceMemberContract = defineApiContract({
23
+ method: 'post',
24
+ requestPathParamsSchema: workspaceIdParams,
25
+ pathResolver: ({ workspaceId }) => `/workspaces/${workspaceId}/members`,
26
+ requestBodySchema: addWorkspaceMemberSchema,
27
+ responsesByStatusCode: { 201: workspaceMemberSchema, ...errorResponses },
28
+ });
29
+ export const setWorkspaceMemberRoleContract = defineApiContract({
30
+ method: 'patch',
31
+ requestPathParamsSchema: memberParams,
32
+ pathResolver: ({ workspaceId, userId }) => `/workspaces/${workspaceId}/members/${userId}`,
33
+ requestBodySchema: setWorkspaceMemberRoleSchema,
34
+ responsesByStatusCode: { 200: workspaceMemberSchema, ...errorResponses },
35
+ });
36
+ export const removeWorkspaceMemberContract = defineApiContract({
37
+ method: 'delete',
38
+ requestPathParamsSchema: memberParams,
39
+ pathResolver: ({ workspaceId, userId }) => `/workspaces/${workspaceId}/members/${userId}`,
40
+ responsesByStatusCode: { 204: ContractNoBody, ...errorResponses },
41
+ });
42
+ export const setWorkspaceAccessModeContract = defineApiContract({
43
+ method: 'put',
44
+ requestPathParamsSchema: workspaceIdParams,
45
+ pathResolver: ({ workspaceId }) => `/workspaces/${workspaceId}/access-mode`,
46
+ requestBodySchema: setWorkspaceAccessModeSchema,
47
+ responsesByStatusCode: { 200: workspaceSchema, ...errorResponses },
48
+ });
49
+ //# sourceMappingURL=workspace-members.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace-members.js","sourceRoot":"","sources":["../../src/routes/workspace-members.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAC3F,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAC5B,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAChD,OAAO,EACL,wBAAwB,EACxB,4BAA4B,EAC5B,4BAA4B,EAC5B,qBAAqB,GACtB,MAAM,yBAAyB,CAAA;AAChC,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAA;AAEhE,8EAA8E;AAC9E,iFAAiF;AACjF,sEAAsE;AACtE,2EAA2E;AAC3E,oFAAoF;AACpF,wEAAwE;AACxE,8EAA8E;AAE9E,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAA;AAEhE,MAAM,iBAAiB,GAAG,iBAAiB,CAAC,aAAa,CAAC,CAAA;AAC1D,MAAM,YAAY,GAAG,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAA;AAE9F,MAAM,CAAC,MAAM,4BAA4B,GAAG,iBAAiB,CAAC;IAC5D,MAAM,EAAE,KAAK;IACb,uBAAuB,EAAE,iBAAiB;IAC1C,YAAY,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,eAAe,WAAW,UAAU;IACvE,qBAAqB,EAAE,EAAE,GAAG,EAAE,yBAAyB,EAAE,GAAG,cAAc,EAAE;CAC7E,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,0BAA0B,GAAG,iBAAiB,CAAC;IAC1D,MAAM,EAAE,MAAM;IACd,uBAAuB,EAAE,iBAAiB;IAC1C,YAAY,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,eAAe,WAAW,UAAU;IACvE,iBAAiB,EAAE,wBAAwB;IAC3C,qBAAqB,EAAE,EAAE,GAAG,EAAE,qBAAqB,EAAE,GAAG,cAAc,EAAE;CACzE,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,8BAA8B,GAAG,iBAAiB,CAAC;IAC9D,MAAM,EAAE,OAAO;IACf,uBAAuB,EAAE,YAAY;IACrC,YAAY,EAAE,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,eAAe,WAAW,YAAY,MAAM,EAAE;IACzF,iBAAiB,EAAE,4BAA4B;IAC/C,qBAAqB,EAAE,EAAE,GAAG,EAAE,qBAAqB,EAAE,GAAG,cAAc,EAAE;CACzE,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,6BAA6B,GAAG,iBAAiB,CAAC;IAC7D,MAAM,EAAE,QAAQ;IAChB,uBAAuB,EAAE,YAAY;IACrC,YAAY,EAAE,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,eAAe,WAAW,YAAY,MAAM,EAAE;IACzF,qBAAqB,EAAE,EAAE,GAAG,EAAE,cAAc,EAAE,GAAG,cAAc,EAAE;CAClE,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,8BAA8B,GAAG,iBAAiB,CAAC;IAC9D,MAAM,EAAE,KAAK;IACb,uBAAuB,EAAE,iBAAiB;IAC1C,YAAY,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,eAAe,WAAW,cAAc;IAC3E,iBAAiB,EAAE,4BAA4B;IAC/C,qBAAqB,EAAE,EAAE,GAAG,EAAE,eAAe,EAAE,GAAG,cAAc,EAAE;CACnE,CAAC,CAAA"}
@@ -1386,7 +1386,7 @@ export declare const createWorkspaceContract: {
1386
1386
  }, undefined>, undefined>;
1387
1387
  readonly notifications: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
1388
1388
  readonly id: v.StringSchema<undefined>;
1389
- readonly type: v.PicklistSchema<["merge_review", "pipeline_complete", "ci_failed", "test_failed", "requirement_review", "clarity_review", "release_regression", "decision_required", "human_test_ready", "visual_confirmation_ready", "human_review", "followup_pending", "fork_decision_pending", "pr_review_ready", "initiative"], undefined>;
1389
+ readonly type: v.PicklistSchema<["merge_review", "pipeline_complete", "ci_failed", "test_failed", "requirement_review", "clarity_review", "release_regression", "decision_required", "human_test_ready", "visual_confirmation_ready", "human_review", "followup_pending", "fork_decision_pending", "pr_review_ready", "initiative", "budget_paused"], undefined>;
1390
1390
  readonly status: v.PicklistSchema<["open", "acted", "dismissed"], undefined>;
1391
1391
  readonly severity: v.OptionalSchema<v.PicklistSchema<["normal", "urgent"], undefined>, undefined>;
1392
1392
  readonly blockId: v.NullableSchema<v.StringSchema<undefined>, undefined>;
@@ -3627,7 +3627,7 @@ export declare const getWorkspaceContract: {
3627
3627
  }, undefined>, undefined>;
3628
3628
  readonly notifications: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
3629
3629
  readonly id: v.StringSchema<undefined>;
3630
- readonly type: v.PicklistSchema<["merge_review", "pipeline_complete", "ci_failed", "test_failed", "requirement_review", "clarity_review", "release_regression", "decision_required", "human_test_ready", "visual_confirmation_ready", "human_review", "followup_pending", "fork_decision_pending", "pr_review_ready", "initiative"], undefined>;
3630
+ readonly type: v.PicklistSchema<["merge_review", "pipeline_complete", "ci_failed", "test_failed", "requirement_review", "clarity_review", "release_regression", "decision_required", "human_test_ready", "visual_confirmation_ready", "human_review", "followup_pending", "fork_decision_pending", "pr_review_ready", "initiative", "budget_paused"], undefined>;
3631
3631
  readonly status: v.PicklistSchema<["open", "acted", "dismissed"], undefined>;
3632
3632
  readonly severity: v.OptionalSchema<v.PicklistSchema<["normal", "urgent"], undefined>, undefined>;
3633
3633
  readonly blockId: v.NullableSchema<v.StringSchema<undefined>, undefined>;
package/dist/slack.d.ts CHANGED
@@ -30,7 +30,7 @@ export type SlackRoute = v.InferOutput<typeof slackRouteSchema>;
30
30
  * type absent from `routes`, disabled, or with an empty channel does not post.
31
31
  */
32
32
  export declare const slackNotificationSettingsSchema: v.ObjectSchema<{
33
- readonly routes: v.RecordSchema<v.PicklistSchema<["merge_review", "pipeline_complete", "ci_failed", "test_failed", "requirement_review", "clarity_review", "release_regression", "decision_required", "human_test_ready", "visual_confirmation_ready", "human_review", "followup_pending", "fork_decision_pending", "pr_review_ready", "initiative"], undefined>, v.ObjectSchema<{
33
+ readonly routes: v.RecordSchema<v.PicklistSchema<["merge_review", "pipeline_complete", "ci_failed", "test_failed", "requirement_review", "clarity_review", "release_regression", "decision_required", "human_test_ready", "visual_confirmation_ready", "human_review", "followup_pending", "fork_decision_pending", "pr_review_ready", "initiative", "budget_paused"], undefined>, v.ObjectSchema<{
34
34
  readonly enabled: v.BooleanSchema<undefined>;
35
35
  /** A channel id (`C0123…`) or name (`#general`); empty = unrouted. */
36
36
  readonly channel: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MaxLengthAction<string, 200, undefined>]>;
@@ -83,7 +83,7 @@ export declare const connectSlackByTokenSchema: v.ObjectSchema<{
83
83
  export type ConnectSlackByTokenInput = v.InferOutput<typeof connectSlackByTokenSchema>;
84
84
  /** Replace a workspace's Slack notification routing. */
85
85
  export declare const updateSlackSettingsSchema: v.ObjectSchema<{
86
- readonly routes: v.RecordSchema<v.PicklistSchema<["merge_review", "pipeline_complete", "ci_failed", "test_failed", "requirement_review", "clarity_review", "release_regression", "decision_required", "human_test_ready", "visual_confirmation_ready", "human_review", "followup_pending", "fork_decision_pending", "pr_review_ready", "initiative"], undefined>, v.ObjectSchema<{
86
+ readonly routes: v.RecordSchema<v.PicklistSchema<["merge_review", "pipeline_complete", "ci_failed", "test_failed", "requirement_review", "clarity_review", "release_regression", "decision_required", "human_test_ready", "visual_confirmation_ready", "human_review", "followup_pending", "fork_decision_pending", "pr_review_ready", "initiative", "budget_paused"], undefined>, v.ObjectSchema<{
87
87
  readonly enabled: v.BooleanSchema<undefined>;
88
88
  /** A channel id (`C0123…`) or name (`#general`); empty = unrouted. */
89
89
  readonly channel: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MaxLengthAction<string, 200, undefined>]>;
@@ -1361,7 +1361,7 @@ export declare const workspaceSnapshotSchema: v.ObjectSchema<{
1361
1361
  */
1362
1362
  readonly notifications: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
1363
1363
  readonly id: v.StringSchema<undefined>;
1364
- readonly type: v.PicklistSchema<["merge_review", "pipeline_complete", "ci_failed", "test_failed", "requirement_review", "clarity_review", "release_regression", "decision_required", "human_test_ready", "visual_confirmation_ready", "human_review", "followup_pending", "fork_decision_pending", "pr_review_ready", "initiative"], undefined>;
1364
+ readonly type: v.PicklistSchema<["merge_review", "pipeline_complete", "ci_failed", "test_failed", "requirement_review", "clarity_review", "release_regression", "decision_required", "human_test_ready", "visual_confirmation_ready", "human_review", "followup_pending", "fork_decision_pending", "pr_review_ready", "initiative", "budget_paused"], undefined>;
1365
1365
  readonly status: v.PicklistSchema<["open", "acted", "dismissed"], undefined>;
1366
1366
  readonly severity: v.OptionalSchema<v.PicklistSchema<["normal", "urgent"], undefined>, undefined>;
1367
1367
  readonly blockId: v.NullableSchema<v.StringSchema<undefined>, undefined>;
@@ -53,4 +53,27 @@ export declare const workspaceAccessSchema: v.ObjectSchema<{
53
53
  readonly permissions: v.ArraySchema<v.PicklistSchema<["workspace.read", "board.write", "runs.execute", "settings.manage", "integrations.manage", "secrets.manage", "members.manage"], undefined>, undefined>;
54
54
  }, undefined>;
55
55
  export type WorkspaceAccess = v.InferOutput<typeof workspaceAccessSchema>;
56
+ /**
57
+ * Add a member to a board by their internal user id, at a workspace role. The target
58
+ * MUST already belong to the board's owning account (contractors join the account first,
59
+ * then get scoped) — the service rejects a non-account-member. Upsert semantics.
60
+ */
61
+ export declare const addWorkspaceMemberSchema: v.ObjectSchema<{
62
+ readonly userId: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
63
+ readonly role: v.PicklistSchema<["admin", "member", "viewer"], undefined>;
64
+ }, undefined>;
65
+ export type AddWorkspaceMemberInput = v.InferOutput<typeof addWorkspaceMemberSchema>;
66
+ /** Change an existing member's workspace role. */
67
+ export declare const setWorkspaceMemberRoleSchema: v.ObjectSchema<{
68
+ readonly role: v.PicklistSchema<["admin", "member", "viewer"], undefined>;
69
+ }, undefined>;
70
+ export type SetWorkspaceMemberRoleInput = v.InferOutput<typeof setWorkspaceMemberRoleSchema>;
71
+ /**
72
+ * Flip a board's access mode. `restricted` limits it to the explicit member list;
73
+ * `account` restores the legacy "every account member sees it" behaviour.
74
+ */
75
+ export declare const setWorkspaceAccessModeSchema: v.ObjectSchema<{
76
+ readonly accessMode: v.PicklistSchema<["account", "restricted"], undefined>;
77
+ }, undefined>;
78
+ export type SetWorkspaceAccessModeInput = v.InferOutput<typeof setWorkspaceAccessModeSchema>;
56
79
  //# sourceMappingURL=workspace-members.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"workspace-members.d.ts","sourceRoot":"","sources":["../src/workspace-members.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAc5B;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,4DAA4C,CAAA;AAC5E,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,mBAAmB,CAAC,CAAA;AAErE;;;;;;GAMG;AACH,eAAO,MAAM,yBAAyB,8JAuBpC,CAAA;AACF,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,yBAAyB,CAAC,CAAA;AAEjF;;;;GAIG;AACH,eAAO,MAAM,yBAAyB,wDAAwC,CAAA;AAC9E,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,yBAAyB,CAAC,CAAA;AAEjF;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB;;;;;IAKhC,iFAAiF;;IAEjF,qFAAqF;;;;aAIrF,CAAA;AACF,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,qBAAqB,CAAC,CAAA;AAEzE;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB;;;aAGhC,CAAA;AACF,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,qBAAqB,CAAC,CAAA"}
1
+ {"version":3,"file":"workspace-members.d.ts","sourceRoot":"","sources":["../src/workspace-members.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAc5B;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,4DAA4C,CAAA;AAC5E,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,mBAAmB,CAAC,CAAA;AAErE;;;;;;GAMG;AACH,eAAO,MAAM,yBAAyB,8JAuBpC,CAAA;AACF,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,yBAAyB,CAAC,CAAA;AAEjF;;;;GAIG;AACH,eAAO,MAAM,yBAAyB,wDAAwC,CAAA;AAC9E,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,yBAAyB,CAAC,CAAA;AAEjF;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB;;;;;IAKhC,iFAAiF;;IAEjF,qFAAqF;;;;aAIrF,CAAA;AACF,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,qBAAqB,CAAC,CAAA;AAEzE;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB;;;aAGhC,CAAA;AACF,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,qBAAqB,CAAC,CAAA;AAIzE;;;;GAIG;AACH,eAAO,MAAM,wBAAwB;;;aAGnC,CAAA;AACF,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,wBAAwB,CAAC,CAAA;AAEpF,kDAAkD;AAClD,eAAO,MAAM,4BAA4B;;aAEvC,CAAA;AACF,MAAM,MAAM,2BAA2B,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,4BAA4B,CAAC,CAAA;AAE5F;;;GAGG;AACH,eAAO,MAAM,4BAA4B;;aAEvC,CAAA;AACF,MAAM,MAAM,2BAA2B,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,4BAA4B,CAAC,CAAA"}
@@ -82,6 +82,25 @@ export const workspaceAccessSchema = v.object({
82
82
  role: workspaceRoleSchema,
83
83
  permissions: v.array(workspacePermissionSchema),
84
84
  });
85
- // Request bodies for the member-management API land with that API (a later slice of the
86
- // workspace-rbac initiative) — this file is the shared VOCABULARY only.
85
+ // ---- Request bodies (member-management API) -------------------------------
86
+ /**
87
+ * Add a member to a board by their internal user id, at a workspace role. The target
88
+ * MUST already belong to the board's owning account (contractors join the account first,
89
+ * then get scoped) — the service rejects a non-account-member. Upsert semantics.
90
+ */
91
+ export const addWorkspaceMemberSchema = v.object({
92
+ userId: v.pipe(v.string(), v.minLength(1)),
93
+ role: workspaceRoleSchema,
94
+ });
95
+ /** Change an existing member's workspace role. */
96
+ export const setWorkspaceMemberRoleSchema = v.object({
97
+ role: workspaceRoleSchema,
98
+ });
99
+ /**
100
+ * Flip a board's access mode. `restricted` limits it to the explicit member list;
101
+ * `account` restores the legacy "every account member sees it" behaviour.
102
+ */
103
+ export const setWorkspaceAccessModeSchema = v.object({
104
+ accessMode: workspaceAccessModeSchema,
105
+ });
87
106
  //# sourceMappingURL=workspace-members.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"workspace-members.js","sourceRoot":"","sources":["../src/workspace-members.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAE5B,8EAA8E;AAC9E,gFAAgF;AAChF,+EAA+E;AAC/E,gFAAgF;AAChF,+EAA+E;AAC/E,+EAA+E;AAC/E,0EAA0E;AAC1E,EAAE;AACF,iFAAiF;AACjF,gEAAgE;AAChE,8EAA8E;AAE9E;;;;;GAKG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAA;AAG5E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,QAAQ,CAAC;IAClD,mFAAmF;IACnF,qFAAqF;IACrF,yBAAyB;IACzB,gBAAgB;IAChB,iFAAiF;IACjF,8DAA8D;IAC9D,aAAa;IACb,qFAAqF;IACrF,uEAAuE;IACvE,cAAc;IACd,oFAAoF;IACpF,mFAAmF;IACnF,wDAAwD;IACxD,iBAAiB;IACjB,8EAA8E;IAC9E,4EAA4E;IAC5E,0CAA0C;IAC1C,qBAAqB;IACrB,kFAAkF;IAClF,gBAAgB;IAChB,oDAAoD;IACpD,gBAAgB;CACjB,CAAC,CAAA;AAGF;;;;GAIG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,CAAA;AAG9E;;;;;GAKG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;IACvB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,IAAI,EAAE,mBAAmB;IACzB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,iFAAiF;IACjF,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC/B,qFAAqF;IACrF,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;IACxC,KAAK,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;IACzC,SAAS,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;CAC9C,CAAC,CAAA;AAGF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,IAAI,EAAE,mBAAmB;IACzB,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,yBAAyB,CAAC;CAChD,CAAC,CAAA;AAGF,wFAAwF;AACxF,wEAAwE"}
1
+ {"version":3,"file":"workspace-members.js","sourceRoot":"","sources":["../src/workspace-members.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAE5B,8EAA8E;AAC9E,gFAAgF;AAChF,+EAA+E;AAC/E,gFAAgF;AAChF,+EAA+E;AAC/E,+EAA+E;AAC/E,0EAA0E;AAC1E,EAAE;AACF,iFAAiF;AACjF,gEAAgE;AAChE,8EAA8E;AAE9E;;;;;GAKG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAA;AAG5E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,QAAQ,CAAC;IAClD,mFAAmF;IACnF,qFAAqF;IACrF,yBAAyB;IACzB,gBAAgB;IAChB,iFAAiF;IACjF,8DAA8D;IAC9D,aAAa;IACb,qFAAqF;IACrF,uEAAuE;IACvE,cAAc;IACd,oFAAoF;IACpF,mFAAmF;IACnF,wDAAwD;IACxD,iBAAiB;IACjB,8EAA8E;IAC9E,4EAA4E;IAC5E,0CAA0C;IAC1C,qBAAqB;IACrB,kFAAkF;IAClF,gBAAgB;IAChB,oDAAoD;IACpD,gBAAgB;CACjB,CAAC,CAAA;AAGF;;;;GAIG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,CAAA;AAG9E;;;;;GAKG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;IACvB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,IAAI,EAAE,mBAAmB;IACzB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,iFAAiF;IACjF,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC/B,qFAAqF;IACrF,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;IACxC,KAAK,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;IACzC,SAAS,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;CAC9C,CAAC,CAAA;AAGF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,IAAI,EAAE,mBAAmB;IACzB,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,yBAAyB,CAAC;CAChD,CAAC,CAAA;AAGF,8EAA8E;AAE9E;;;;GAIG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/C,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAC1C,IAAI,EAAE,mBAAmB;CAC1B,CAAC,CAAA;AAGF,kDAAkD;AAClD,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,CAAC,MAAM,CAAC;IACnD,IAAI,EAAE,mBAAmB;CAC1B,CAAC,CAAA;AAGF;;;GAGG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,CAAC,MAAM,CAAC;IACnD,UAAU,EAAE,yBAAyB;CACtC,CAAC,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cat-factory/contracts",
3
- "version": "0.144.0",
3
+ "version": "0.146.0",
4
4
  "description": "Valibot wire contract shared between the Agent Architecture Board frontend and backend.",
5
5
  "repository": {
6
6
  "type": "git",