@cat-factory/contracts 0.22.0 → 0.24.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.
@@ -0,0 +1,83 @@
1
+ import * as v from 'valibot';
2
+ /**
3
+ * Non-secret per-account config. Empty today (the integration credentials live in the
4
+ * sealed secrets blob; an integration is enabled by having its creds set). Retained as
5
+ * an object so forward-compatible non-secret tuning can be added without a migration.
6
+ */
7
+ export declare const accountSettingsConfigSchema: v.ObjectSchema<{}, undefined>;
8
+ export type AccountSettingsConfig = v.InferOutput<typeof accountSettingsConfigSchema>;
9
+ /** Built-in config used when an account has no row yet. */
10
+ export declare const DEFAULT_ACCOUNT_SETTINGS_CONFIG: AccountSettingsConfig;
11
+ /** Parse + fully-default a (possibly partial/legacy) stored config blob. */
12
+ export declare function parseAccountSettingsConfig(raw: unknown): AccountSettingsConfig;
13
+ /** Slack app OAuth credentials (the deployment's registered Slack app). */
14
+ export declare const slackOAuthSecretSchema: v.ObjectSchema<{
15
+ readonly clientId: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>]>;
16
+ readonly clientSecret: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>]>;
17
+ readonly redirectUrl: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.UrlAction<string, undefined>]>;
18
+ }, undefined>;
19
+ export type SlackOAuthSecret = v.InferOutput<typeof slackOAuthSecretSchema>;
20
+ /**
21
+ * Web-search upstream keys. Brave wins when its key is set, else SearXNG (url +
22
+ * optional key). Both optional so an account can use either.
23
+ */
24
+ export declare const webSearchSecretSchema: v.ObjectSchema<{
25
+ readonly braveApiKey: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>]>, undefined>;
26
+ readonly searxngUrl: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.UrlAction<string, undefined>]>, undefined>;
27
+ readonly searxngApiKey: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>]>, undefined>;
28
+ }, undefined>;
29
+ export type WebSearchSecret = v.InferOutput<typeof webSearchSecretSchema>;
30
+ /** The decrypted secrets blob (every group optional). */
31
+ export declare const accountSettingsSecretsSchema: v.ObjectSchema<{
32
+ readonly slackOAuth: v.OptionalSchema<v.ObjectSchema<{
33
+ readonly clientId: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>]>;
34
+ readonly clientSecret: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>]>;
35
+ readonly redirectUrl: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.UrlAction<string, undefined>]>;
36
+ }, undefined>, undefined>;
37
+ readonly webSearch: v.OptionalSchema<v.ObjectSchema<{
38
+ readonly braveApiKey: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>]>, undefined>;
39
+ readonly searxngUrl: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.UrlAction<string, undefined>]>, undefined>;
40
+ readonly searxngApiKey: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>]>, undefined>;
41
+ }, undefined>, undefined>;
42
+ }, undefined>;
43
+ export type AccountSettingsSecrets = v.InferOutput<typeof accountSettingsSecretsSchema>;
44
+ /** Validate a decrypted secrets blob at the read boundary. */
45
+ export declare function parseAccountSettingsSecrets(raw: unknown): AccountSettingsSecrets;
46
+ /**
47
+ * Admin write. `config` (when present) fully replaces the non-secret config.
48
+ * Each secrets group: absent ⇒ leave unchanged, `null` ⇒ clear, value ⇒ set.
49
+ */
50
+ export declare const updateAccountSettingsSchema: v.ObjectSchema<{
51
+ readonly config: v.OptionalSchema<v.ObjectSchema<{}, undefined>, undefined>;
52
+ readonly secrets: v.OptionalSchema<v.ObjectSchema<{
53
+ readonly slackOAuth: v.OptionalSchema<v.NullableSchema<v.ObjectSchema<{
54
+ readonly clientId: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>]>;
55
+ readonly clientSecret: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>]>;
56
+ readonly redirectUrl: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.UrlAction<string, undefined>]>;
57
+ }, undefined>, undefined>, undefined>;
58
+ readonly webSearch: v.OptionalSchema<v.NullableSchema<v.ObjectSchema<{
59
+ readonly braveApiKey: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>]>, undefined>;
60
+ readonly searxngUrl: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.UrlAction<string, undefined>]>, undefined>;
61
+ readonly searxngApiKey: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>]>, undefined>;
62
+ }, undefined>, undefined>, undefined>;
63
+ }, undefined>, undefined>;
64
+ }, undefined>;
65
+ export type UpdateAccountSettingsInput = v.InferOutput<typeof updateAccountSettingsSchema>;
66
+ /** Non-secret presence/status for display — NEVER secret values. */
67
+ export declare const accountSettingsSummarySchema: v.ObjectSchema<{
68
+ readonly slackOAuthConfigured: v.BooleanSchema<undefined>;
69
+ readonly webSearch: v.NullableSchema<v.PicklistSchema<["brave", "searxng"], undefined>, undefined>;
70
+ }, undefined>;
71
+ export type AccountSettingsSummary = v.InferOutput<typeof accountSettingsSummarySchema>;
72
+ /** What `GET /accounts/:id/settings` returns — config + summary, never secrets. */
73
+ export declare const accountSettingsViewSchema: v.ObjectSchema<{
74
+ readonly config: v.ObjectSchema<{}, undefined>;
75
+ readonly summary: v.ObjectSchema<{
76
+ readonly slackOAuthConfigured: v.BooleanSchema<undefined>;
77
+ readonly webSearch: v.NullableSchema<v.PicklistSchema<["brave", "searxng"], undefined>, undefined>;
78
+ }, undefined>;
79
+ }, undefined>;
80
+ export type AccountSettingsView = v.InferOutput<typeof accountSettingsViewSchema>;
81
+ /** Derive the non-secret summary from the secrets blob. */
82
+ export declare function accountSettingsSummary(secrets: AccountSettingsSecrets): AccountSettingsSummary;
83
+ //# sourceMappingURL=accountSettings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accountSettings.d.ts","sourceRoot":"","sources":["../src/accountSettings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAW5B;;;;GAIG;AACH,eAAO,MAAM,2BAA2B,+BAAe,CAAA;AACvD,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,2BAA2B,CAAC,CAAA;AAErF,2DAA2D;AAC3D,eAAO,MAAM,+BAA+B,EAAE,qBAG7C,CAAA;AAED,4EAA4E;AAC5E,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,OAAO,GAAG,qBAAqB,CAE9E;AAID,2EAA2E;AAC3E,eAAO,MAAM,sBAAsB;;;;aAIjC,CAAA;AACF,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,sBAAsB,CAAC,CAAA;AAE3E;;;GAGG;AACH,eAAO,MAAM,qBAAqB;;;;aAIhC,CAAA;AACF,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,qBAAqB,CAAC,CAAA;AAEzE,yDAAyD;AACzD,eAAO,MAAM,4BAA4B;;;;;;;;;;;aAGvC,CAAA;AACF,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,4BAA4B,CAAC,CAAA;AAEvF,8DAA8D;AAC9D,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,OAAO,GAAG,sBAAsB,CAEhF;AAID;;;GAGG;AACH,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;aAQtC,CAAA;AACF,MAAM,MAAM,0BAA0B,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,2BAA2B,CAAC,CAAA;AAE1F,oEAAoE;AACpE,eAAO,MAAM,4BAA4B;;;aAGvC,CAAA;AACF,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,4BAA4B,CAAC,CAAA;AAEvF,mFAAmF;AACnF,eAAO,MAAM,yBAAyB;;;;;;aAGpC,CAAA;AACF,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,yBAAyB,CAAC,CAAA;AAEjF,2DAA2D;AAC3D,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,sBAAsB,GAAG,sBAAsB,CAU9F"}
@@ -0,0 +1,81 @@
1
+ import * as v from 'valibot';
2
+ // ---------------------------------------------------------------------------
3
+ // Per-account (deployment-wide) integration settings, moved out of env vars into a
4
+ // single DB row per account, gated behind account-admin. ONE sealed secrets blob groups
5
+ // every integration credential (Slack OAuth app, web-search keys, Langfuse keys). A
6
+ // (currently empty) non-secret `config` object is kept for forward-compatible tuning.
7
+ // Secrets are write-only — `GET` returns only the derived `summary`. DB is the source of
8
+ // truth (no env fallback). An integration is "on" for an account when its creds exist.
9
+ // ---------------------------------------------------------------------------
10
+ /**
11
+ * Non-secret per-account config. Empty today (the integration credentials live in the
12
+ * sealed secrets blob; an integration is enabled by having its creds set). Retained as
13
+ * an object so forward-compatible non-secret tuning can be added without a migration.
14
+ */
15
+ export const accountSettingsConfigSchema = v.object({});
16
+ /** Built-in config used when an account has no row yet. */
17
+ export const DEFAULT_ACCOUNT_SETTINGS_CONFIG = v.parse(accountSettingsConfigSchema, {});
18
+ /** Parse + fully-default a (possibly partial/legacy) stored config blob. */
19
+ export function parseAccountSettingsConfig(raw) {
20
+ return v.parse(accountSettingsConfigSchema, raw);
21
+ }
22
+ // ---- Write-only secrets ----------------------------------------------------
23
+ /** Slack app OAuth credentials (the deployment's registered Slack app). */
24
+ export const slackOAuthSecretSchema = v.object({
25
+ clientId: v.pipe(v.string(), v.trim(), v.minLength(1)),
26
+ clientSecret: v.pipe(v.string(), v.trim(), v.minLength(1)),
27
+ redirectUrl: v.pipe(v.string(), v.trim(), v.url()),
28
+ });
29
+ /**
30
+ * Web-search upstream keys. Brave wins when its key is set, else SearXNG (url +
31
+ * optional key). Both optional so an account can use either.
32
+ */
33
+ export const webSearchSecretSchema = v.object({
34
+ braveApiKey: v.optional(v.pipe(v.string(), v.trim(), v.minLength(1))),
35
+ searxngUrl: v.optional(v.pipe(v.string(), v.trim(), v.url())),
36
+ searxngApiKey: v.optional(v.pipe(v.string(), v.trim(), v.minLength(1))),
37
+ });
38
+ /** The decrypted secrets blob (every group optional). */
39
+ export const accountSettingsSecretsSchema = v.object({
40
+ slackOAuth: v.optional(slackOAuthSecretSchema),
41
+ webSearch: v.optional(webSearchSecretSchema),
42
+ });
43
+ /** Validate a decrypted secrets blob at the read boundary. */
44
+ export function parseAccountSettingsSecrets(raw) {
45
+ return v.parse(accountSettingsSecretsSchema, raw);
46
+ }
47
+ // ---- Update + view ---------------------------------------------------------
48
+ /**
49
+ * Admin write. `config` (when present) fully replaces the non-secret config.
50
+ * Each secrets group: absent ⇒ leave unchanged, `null` ⇒ clear, value ⇒ set.
51
+ */
52
+ export const updateAccountSettingsSchema = v.object({
53
+ config: v.optional(accountSettingsConfigSchema),
54
+ secrets: v.optional(v.object({
55
+ slackOAuth: v.optional(v.nullable(slackOAuthSecretSchema)),
56
+ webSearch: v.optional(v.nullable(webSearchSecretSchema)),
57
+ })),
58
+ });
59
+ /** Non-secret presence/status for display — NEVER secret values. */
60
+ export const accountSettingsSummarySchema = v.object({
61
+ slackOAuthConfigured: v.boolean(),
62
+ webSearch: v.nullable(v.picklist(['brave', 'searxng'])),
63
+ });
64
+ /** What `GET /accounts/:id/settings` returns — config + summary, never secrets. */
65
+ export const accountSettingsViewSchema = v.object({
66
+ config: accountSettingsConfigSchema,
67
+ summary: accountSettingsSummarySchema,
68
+ });
69
+ /** Derive the non-secret summary from the secrets blob. */
70
+ export function accountSettingsSummary(secrets) {
71
+ const webSearch = secrets.webSearch?.braveApiKey
72
+ ? 'brave'
73
+ : secrets.webSearch?.searxngUrl
74
+ ? 'searxng'
75
+ : null;
76
+ return {
77
+ slackOAuthConfigured: Boolean(secrets.slackOAuth),
78
+ webSearch,
79
+ };
80
+ }
81
+ //# sourceMappingURL=accountSettings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accountSettings.js","sourceRoot":"","sources":["../src/accountSettings.ts"],"names":[],"mappings":"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"}
@@ -303,6 +303,11 @@ export type EnvironmentConnection = v.InferOutput<typeof environmentConnectionSc
303
303
  * actual per-tenant secret values here (write-only); they are encrypted and
304
304
  * stored in D1 and never returned. Every `secretRef.key` in the manifest must
305
305
  * have a matching entry in `secrets`.
306
+ *
307
+ * A native adapter is configured through the SAME manifest path (see
308
+ * `backend/docs/native-environment-adapter.md`): its non-secret per-workspace
309
+ * settings ride the manifest's opaque `providerConfig` bag and its secrets via
310
+ * the manifest `auth` scheme — there is deliberately no separate config channel.
306
311
  */
307
312
  export declare const registerEnvironmentProviderSchema: v.ObjectSchema<{
308
313
  readonly manifest: v.ObjectSchema<{
@@ -1 +1 @@
1
- {"version":3,"file":"environments.d.ts","sourceRoot":"","sources":["../src/environments.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"environments.d.ts","sourceRoot":"","sources":["../src/environments.ts"],"names":[],"mappings":"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"}
@@ -185,6 +185,11 @@ export const environmentConnectionSchema = v.object({
185
185
  * actual per-tenant secret values here (write-only); they are encrypted and
186
186
  * stored in D1 and never returned. Every `secretRef.key` in the manifest must
187
187
  * have a matching entry in `secrets`.
188
+ *
189
+ * A native adapter is configured through the SAME manifest path (see
190
+ * `backend/docs/native-environment-adapter.md`): its non-secret per-workspace
191
+ * settings ride the manifest's opaque `providerConfig` bag and its secrets via
192
+ * the manifest `auth` scheme — there is deliberately no separate config channel.
188
193
  */
189
194
  export const registerEnvironmentProviderSchema = v.object({
190
195
  manifest: environmentManifestSchema,
@@ -1 +1 @@
1
- {"version":3,"file":"environments.js","sourceRoot":"","sources":["../src/environments.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"environments.js","sourceRoot":"","sources":["../src/environments.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,69 @@
1
+ import * as v from 'valibot';
2
+ /** PagerDuty enrichment credentials. */
3
+ export declare const pagerDutyCredentialsSchema: v.ObjectSchema<{
4
+ readonly apiToken: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>]>;
5
+ /** The `From` email PagerDuty requires for note/annotation writes. */
6
+ readonly fromEmail: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.EmailAction<string, undefined>]>;
7
+ }, undefined>;
8
+ export type PagerDutyCredentials = v.InferOutput<typeof pagerDutyCredentialsSchema>;
9
+ /** incident.io enrichment credentials. */
10
+ export declare const incidentIoCredentialsSchema: v.ObjectSchema<{
11
+ readonly apiKey: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>]>;
12
+ }, undefined>;
13
+ export type IncidentIoCredentials = v.InferOutput<typeof incidentIoCredentialsSchema>;
14
+ /**
15
+ * The decrypted incident-enrichment credentials blob. Both providers optional —
16
+ * a workspace may wire one, both, or (after a clear) neither.
17
+ */
18
+ export declare const incidentEnrichmentCredentialsSchema: v.ObjectSchema<{
19
+ readonly pagerDuty: v.OptionalSchema<v.ObjectSchema<{
20
+ readonly apiToken: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>]>;
21
+ /** The `From` email PagerDuty requires for note/annotation writes. */
22
+ readonly fromEmail: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.EmailAction<string, undefined>]>;
23
+ }, undefined>, undefined>;
24
+ readonly incidentIo: v.OptionalSchema<v.ObjectSchema<{
25
+ readonly apiKey: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>]>;
26
+ }, undefined>, undefined>;
27
+ }, undefined>;
28
+ export type IncidentEnrichmentCredentials = v.InferOutput<typeof incidentEnrichmentCredentialsSchema>;
29
+ /**
30
+ * Validate a decrypted incident-enrichment blob at the read boundary, so a
31
+ * drifted/hand-edited row fails with a clear schema error here rather than deep
32
+ * inside the PagerDuty / incident.io client during a live enrichment.
33
+ */
34
+ export declare function parseIncidentEnrichmentCredentials(raw: unknown): IncidentEnrichmentCredentials;
35
+ /**
36
+ * Set a workspace's incident-enrichment credentials (write-only). Each provider group is
37
+ * three-state so an operator can edit one vendor without disturbing the other AND can
38
+ * remove just one: OMITTED ⇒ leave the stored group unchanged, `null` ⇒ clear it, a value
39
+ * ⇒ set it. (A full wipe of both is `DELETE`.) Mirrors the account-settings secrets merge.
40
+ */
41
+ export declare const upsertIncidentEnrichmentSchema: v.ObjectSchema<{
42
+ readonly pagerDuty: v.OptionalSchema<v.NullableSchema<v.ObjectSchema<{
43
+ readonly apiToken: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>]>;
44
+ /** The `From` email PagerDuty requires for note/annotation writes. */
45
+ readonly fromEmail: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.EmailAction<string, undefined>]>;
46
+ }, undefined>, undefined>, undefined>;
47
+ readonly incidentIo: v.OptionalSchema<v.NullableSchema<v.ObjectSchema<{
48
+ readonly apiKey: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>]>;
49
+ }, undefined>, undefined>, undefined>;
50
+ }, undefined>;
51
+ export type UpsertIncidentEnrichmentInput = v.InferOutput<typeof upsertIncidentEnrichmentSchema>;
52
+ /** Non-secret presence flags persisted alongside the sealed blob, for the UI badge. */
53
+ export declare const incidentEnrichmentSummarySchema: v.ObjectSchema<{
54
+ readonly pagerDuty: v.BooleanSchema<undefined>;
55
+ readonly incidentIo: v.BooleanSchema<undefined>;
56
+ }, undefined>;
57
+ export type IncidentEnrichmentSummary = v.InferOutput<typeof incidentEnrichmentSummarySchema>;
58
+ /** What `GET /incident-enrichment` returns — never the secret tokens. */
59
+ export declare const incidentEnrichmentViewSchema: v.ObjectSchema<{
60
+ readonly connected: v.BooleanSchema<undefined>;
61
+ readonly summary: v.NullableSchema<v.ObjectSchema<{
62
+ readonly pagerDuty: v.BooleanSchema<undefined>;
63
+ readonly incidentIo: v.BooleanSchema<undefined>;
64
+ }, undefined>, undefined>;
65
+ }, undefined>;
66
+ export type IncidentEnrichmentView = v.InferOutput<typeof incidentEnrichmentViewSchema>;
67
+ /** Derive the non-secret summary from the credentials blob. */
68
+ export declare function incidentEnrichmentSummary(credentials: IncidentEnrichmentCredentials): IncidentEnrichmentSummary;
69
+ //# sourceMappingURL=incident-enrichment.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"incident-enrichment.d.ts","sourceRoot":"","sources":["../src/incident-enrichment.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAW5B,wCAAwC;AACxC,eAAO,MAAM,0BAA0B;;IAErC,sEAAsE;;aAEtE,CAAA;AACF,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,0BAA0B,CAAC,CAAA;AAEnF,0CAA0C;AAC1C,eAAO,MAAM,2BAA2B;;aAEtC,CAAA;AACF,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,2BAA2B,CAAC,CAAA;AAErF;;;GAGG;AACH,eAAO,MAAM,mCAAmC;;;QAf9C,sEAAsE;;;;;;aAkBtE,CAAA;AACF,MAAM,MAAM,6BAA6B,GAAG,CAAC,CAAC,WAAW,CACvD,OAAO,mCAAmC,CAC3C,CAAA;AAED;;;;GAIG;AACH,wBAAgB,kCAAkC,CAAC,GAAG,EAAE,OAAO,GAAG,6BAA6B,CAE9F;AAED;;;;;GAKG;AACH,eAAO,MAAM,8BAA8B;;;QAtCzC,sEAAsE;;;;;;aAyCtE,CAAA;AACF,MAAM,MAAM,6BAA6B,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,8BAA8B,CAAC,CAAA;AAEhG,uFAAuF;AACvF,eAAO,MAAM,+BAA+B;;;aAG1C,CAAA;AACF,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,+BAA+B,CAAC,CAAA;AAE7F,yEAAyE;AACzE,eAAO,MAAM,4BAA4B;;;;;;aAGvC,CAAA;AACF,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,4BAA4B,CAAC,CAAA;AAEvF,+DAA+D;AAC/D,wBAAgB,yBAAyB,CACvC,WAAW,EAAE,6BAA6B,GACzC,yBAAyB,CAK3B"}
@@ -0,0 +1,63 @@
1
+ import * as v from 'valibot';
2
+ // ---------------------------------------------------------------------------
3
+ // Per-workspace incident-enrichment connection. Moved out of the deployment-wide
4
+ // env vars (`PAGERDUTY_API_TOKEN` / `PAGERDUTY_FROM_EMAIL` / `INCIDENTIO_API_KEY`)
5
+ // onto a sealed per-workspace row so each workspace brings its own PagerDuty /
6
+ // incident.io credentials, configured in the UI. Both vendors live in ONE sealed
7
+ // blob (never one-table-per-secret). Secrets are write-only — never read back.
8
+ // Paired conceptually with the per-workspace observability connection.
9
+ // ---------------------------------------------------------------------------
10
+ /** PagerDuty enrichment credentials. */
11
+ export const pagerDutyCredentialsSchema = v.object({
12
+ apiToken: v.pipe(v.string(), v.trim(), v.minLength(1)),
13
+ /** The `From` email PagerDuty requires for note/annotation writes. */
14
+ fromEmail: v.pipe(v.string(), v.trim(), v.email()),
15
+ });
16
+ /** incident.io enrichment credentials. */
17
+ export const incidentIoCredentialsSchema = v.object({
18
+ apiKey: v.pipe(v.string(), v.trim(), v.minLength(1)),
19
+ });
20
+ /**
21
+ * The decrypted incident-enrichment credentials blob. Both providers optional —
22
+ * a workspace may wire one, both, or (after a clear) neither.
23
+ */
24
+ export const incidentEnrichmentCredentialsSchema = v.object({
25
+ pagerDuty: v.optional(pagerDutyCredentialsSchema),
26
+ incidentIo: v.optional(incidentIoCredentialsSchema),
27
+ });
28
+ /**
29
+ * Validate a decrypted incident-enrichment blob at the read boundary, so a
30
+ * drifted/hand-edited row fails with a clear schema error here rather than deep
31
+ * inside the PagerDuty / incident.io client during a live enrichment.
32
+ */
33
+ export function parseIncidentEnrichmentCredentials(raw) {
34
+ return v.parse(incidentEnrichmentCredentialsSchema, raw);
35
+ }
36
+ /**
37
+ * Set a workspace's incident-enrichment credentials (write-only). Each provider group is
38
+ * three-state so an operator can edit one vendor without disturbing the other AND can
39
+ * remove just one: OMITTED ⇒ leave the stored group unchanged, `null` ⇒ clear it, a value
40
+ * ⇒ set it. (A full wipe of both is `DELETE`.) Mirrors the account-settings secrets merge.
41
+ */
42
+ export const upsertIncidentEnrichmentSchema = v.object({
43
+ pagerDuty: v.optional(v.nullable(pagerDutyCredentialsSchema)),
44
+ incidentIo: v.optional(v.nullable(incidentIoCredentialsSchema)),
45
+ });
46
+ /** Non-secret presence flags persisted alongside the sealed blob, for the UI badge. */
47
+ export const incidentEnrichmentSummarySchema = v.object({
48
+ pagerDuty: v.boolean(),
49
+ incidentIo: v.boolean(),
50
+ });
51
+ /** What `GET /incident-enrichment` returns — never the secret tokens. */
52
+ export const incidentEnrichmentViewSchema = v.object({
53
+ connected: v.boolean(),
54
+ summary: v.nullable(incidentEnrichmentSummarySchema),
55
+ });
56
+ /** Derive the non-secret summary from the credentials blob. */
57
+ export function incidentEnrichmentSummary(credentials) {
58
+ return {
59
+ pagerDuty: Boolean(credentials.pagerDuty),
60
+ incidentIo: Boolean(credentials.incidentIo),
61
+ };
62
+ }
63
+ //# sourceMappingURL=incident-enrichment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"incident-enrichment.js","sourceRoot":"","sources":["../src/incident-enrichment.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAE5B,8EAA8E;AAC9E,iFAAiF;AACjF,mFAAmF;AACnF,+EAA+E;AAC/E,iFAAiF;AACjF,+EAA+E;AAC/E,uEAAuE;AACvE,8EAA8E;AAE9E,wCAAwC;AACxC,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC;IACjD,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IACtD,sEAAsE;IACtE,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;CACnD,CAAC,CAAA;AAGF,0CAA0C;AAC1C,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC,MAAM,CAAC;IAClD,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;CACrD,CAAC,CAAA;AAGF;;;GAGG;AACH,MAAM,CAAC,MAAM,mCAAmC,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1D,SAAS,EAAE,CAAC,CAAC,QAAQ,CAAC,0BAA0B,CAAC;IACjD,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,2BAA2B,CAAC;CACpD,CAAC,CAAA;AAKF;;;;GAIG;AACH,MAAM,UAAU,kCAAkC,CAAC,GAAY;IAC7D,OAAO,CAAC,CAAC,KAAK,CAAC,mCAAmC,EAAE,GAAG,CAAC,CAAA;AAC1D,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,CAAC,MAAM,CAAC;IACrD,SAAS,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,0BAA0B,CAAC,CAAC;IAC7D,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,2BAA2B,CAAC,CAAC;CAChE,CAAC,CAAA;AAGF,uFAAuF;AACvF,MAAM,CAAC,MAAM,+BAA+B,GAAG,CAAC,CAAC,MAAM,CAAC;IACtD,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE;IACtB,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE;CACxB,CAAC,CAAA;AAGF,yEAAyE;AACzE,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,CAAC,MAAM,CAAC;IACnD,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE;IACtB,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,+BAA+B,CAAC;CACrD,CAAC,CAAA;AAGF,+DAA+D;AAC/D,MAAM,UAAU,yBAAyB,CACvC,WAA0C;IAE1C,OAAO;QACL,SAAS,EAAE,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC;QACzC,UAAU,EAAE,OAAO,CAAC,WAAW,CAAC,UAAU,CAAC;KAC5C,CAAA;AACH,CAAC"}
package/dist/index.d.ts CHANGED
@@ -34,6 +34,8 @@ export * from './service-fragment-defaults.js';
34
34
  export * from './notifications.js';
35
35
  export * from './slack.js';
36
36
  export * from './observability.js';
37
+ export * from './incident-enrichment.js';
38
+ export * from './accountSettings.js';
37
39
  export * from './recurring.js';
38
40
  export * from './tracker.js';
39
41
  export * from './vendor-credentials.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAA;AAC/B,cAAc,eAAe,CAAA;AAC7B,cAAc,eAAe,CAAA;AAC7B,cAAc,uBAAuB,CAAA;AACrC,cAAc,eAAe,CAAA;AAC7B,cAAc,WAAW,CAAA;AACzB,cAAc,aAAa,CAAA;AAC3B,cAAc,eAAe,CAAA;AAC7B,cAAc,aAAa,CAAA;AAC3B,cAAc,sBAAsB,CAAA;AACpC,cAAc,kBAAkB,CAAA;AAChC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,YAAY,CAAA;AAC1B,cAAc,mBAAmB,CAAA;AACjC,cAAc,cAAc,CAAA;AAC5B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,eAAe,CAAA;AAC7B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,oBAAoB,CAAA;AAClC,cAAc,mBAAmB,CAAA;AACjC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,cAAc,CAAA;AAC5B,cAAc,WAAW,CAAA;AACzB,cAAc,gBAAgB,CAAA;AAC9B,cAAc,YAAY,CAAA;AAC1B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,cAAc,CAAA;AAC5B,cAAc,mBAAmB,CAAA;AACjC,cAAc,yBAAyB,CAAA;AACvC,cAAc,cAAc,CAAA;AAC5B,cAAc,mBAAmB,CAAA;AACjC,cAAc,oBAAoB,CAAA;AAClC,cAAc,gCAAgC,CAAA;AAC9C,cAAc,oBAAoB,CAAA;AAClC,cAAc,YAAY,CAAA;AAC1B,cAAc,oBAAoB,CAAA;AAClC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,cAAc,CAAA;AAC5B,cAAc,yBAAyB,CAAA;AACvC,cAAc,eAAe,CAAA;AAC7B,cAAc,6BAA6B,CAAA;AAC3C,cAAc,kBAAkB,CAAA;AAChC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,cAAc,CAAA;AAC5B,cAAc,yBAAyB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAA;AAC/B,cAAc,eAAe,CAAA;AAC7B,cAAc,eAAe,CAAA;AAC7B,cAAc,uBAAuB,CAAA;AACrC,cAAc,eAAe,CAAA;AAC7B,cAAc,WAAW,CAAA;AACzB,cAAc,aAAa,CAAA;AAC3B,cAAc,eAAe,CAAA;AAC7B,cAAc,aAAa,CAAA;AAC3B,cAAc,sBAAsB,CAAA;AACpC,cAAc,kBAAkB,CAAA;AAChC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,YAAY,CAAA;AAC1B,cAAc,mBAAmB,CAAA;AACjC,cAAc,cAAc,CAAA;AAC5B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,eAAe,CAAA;AAC7B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,oBAAoB,CAAA;AAClC,cAAc,mBAAmB,CAAA;AACjC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,cAAc,CAAA;AAC5B,cAAc,WAAW,CAAA;AACzB,cAAc,gBAAgB,CAAA;AAC9B,cAAc,YAAY,CAAA;AAC1B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,cAAc,CAAA;AAC5B,cAAc,mBAAmB,CAAA;AACjC,cAAc,yBAAyB,CAAA;AACvC,cAAc,cAAc,CAAA;AAC5B,cAAc,mBAAmB,CAAA;AACjC,cAAc,oBAAoB,CAAA;AAClC,cAAc,gCAAgC,CAAA;AAC9C,cAAc,oBAAoB,CAAA;AAClC,cAAc,YAAY,CAAA;AAC1B,cAAc,oBAAoB,CAAA;AAClC,cAAc,0BAA0B,CAAA;AACxC,cAAc,sBAAsB,CAAA;AACpC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,cAAc,CAAA;AAC5B,cAAc,yBAAyB,CAAA;AACvC,cAAc,eAAe,CAAA;AAC7B,cAAc,6BAA6B,CAAA;AAC3C,cAAc,kBAAkB,CAAA;AAChC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,cAAc,CAAA;AAC5B,cAAc,yBAAyB,CAAA"}
package/dist/index.js CHANGED
@@ -34,6 +34,8 @@ export * from './service-fragment-defaults.js';
34
34
  export * from './notifications.js';
35
35
  export * from './slack.js';
36
36
  export * from './observability.js';
37
+ export * from './incident-enrichment.js';
38
+ export * from './accountSettings.js';
37
39
  export * from './recurring.js';
38
40
  export * from './tracker.js';
39
41
  export * from './vendor-credentials.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAA;AAC/B,cAAc,eAAe,CAAA;AAC7B,cAAc,eAAe,CAAA;AAC7B,cAAc,uBAAuB,CAAA;AACrC,cAAc,eAAe,CAAA;AAC7B,cAAc,WAAW,CAAA;AACzB,cAAc,aAAa,CAAA;AAC3B,cAAc,eAAe,CAAA;AAC7B,cAAc,aAAa,CAAA;AAC3B,cAAc,sBAAsB,CAAA;AACpC,cAAc,kBAAkB,CAAA;AAChC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,YAAY,CAAA;AAC1B,cAAc,mBAAmB,CAAA;AACjC,cAAc,cAAc,CAAA;AAC5B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,eAAe,CAAA;AAC7B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,oBAAoB,CAAA;AAClC,cAAc,mBAAmB,CAAA;AACjC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,cAAc,CAAA;AAC5B,cAAc,WAAW,CAAA;AACzB,cAAc,gBAAgB,CAAA;AAC9B,cAAc,YAAY,CAAA;AAC1B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,cAAc,CAAA;AAC5B,cAAc,mBAAmB,CAAA;AACjC,cAAc,yBAAyB,CAAA;AACvC,cAAc,cAAc,CAAA;AAC5B,cAAc,mBAAmB,CAAA;AACjC,cAAc,oBAAoB,CAAA;AAClC,cAAc,gCAAgC,CAAA;AAC9C,cAAc,oBAAoB,CAAA;AAClC,cAAc,YAAY,CAAA;AAC1B,cAAc,oBAAoB,CAAA;AAClC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,cAAc,CAAA;AAC5B,cAAc,yBAAyB,CAAA;AACvC,cAAc,eAAe,CAAA;AAC7B,cAAc,6BAA6B,CAAA;AAC3C,cAAc,kBAAkB,CAAA;AAChC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,cAAc,CAAA;AAC5B,cAAc,yBAAyB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAA;AAC/B,cAAc,eAAe,CAAA;AAC7B,cAAc,eAAe,CAAA;AAC7B,cAAc,uBAAuB,CAAA;AACrC,cAAc,eAAe,CAAA;AAC7B,cAAc,WAAW,CAAA;AACzB,cAAc,aAAa,CAAA;AAC3B,cAAc,eAAe,CAAA;AAC7B,cAAc,aAAa,CAAA;AAC3B,cAAc,sBAAsB,CAAA;AACpC,cAAc,kBAAkB,CAAA;AAChC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,YAAY,CAAA;AAC1B,cAAc,mBAAmB,CAAA;AACjC,cAAc,cAAc,CAAA;AAC5B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,eAAe,CAAA;AAC7B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,oBAAoB,CAAA;AAClC,cAAc,mBAAmB,CAAA;AACjC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,cAAc,CAAA;AAC5B,cAAc,WAAW,CAAA;AACzB,cAAc,gBAAgB,CAAA;AAC9B,cAAc,YAAY,CAAA;AAC1B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,cAAc,CAAA;AAC5B,cAAc,mBAAmB,CAAA;AACjC,cAAc,yBAAyB,CAAA;AACvC,cAAc,cAAc,CAAA;AAC5B,cAAc,mBAAmB,CAAA;AACjC,cAAc,oBAAoB,CAAA;AAClC,cAAc,gCAAgC,CAAA;AAC9C,cAAc,oBAAoB,CAAA;AAClC,cAAc,YAAY,CAAA;AAC1B,cAAc,oBAAoB,CAAA;AAClC,cAAc,0BAA0B,CAAA;AACxC,cAAc,sBAAsB,CAAA;AACpC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,cAAc,CAAA;AAC5B,cAAc,yBAAyB,CAAA;AACvC,cAAc,eAAe,CAAA;AAC7B,cAAc,6BAA6B,CAAA;AAC3C,cAAc,kBAAkB,CAAA;AAChC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,cAAc,CAAA;AAC5B,cAAc,yBAAyB,CAAA"}
@@ -23,6 +23,15 @@ export declare const providerConfigFieldSchema: v.ObjectSchema<{
23
23
  readonly value: v.StringSchema<undefined>;
24
24
  readonly label: v.StringSchema<undefined>;
25
25
  }, undefined>, undefined>, undefined>;
26
+ /**
27
+ * The provider/manifest's default for this field. When present, the value is
28
+ * optional in practice: leaving the form field blank falls back to this default
29
+ * (so the UI shows an empty input with a "defaulted to …" hint, and clearing an
30
+ * override reverts to it). Never set for secrets — those have no default and must
31
+ * be supplied explicitly. A `required` field WITHOUT a default is what drives the
32
+ * unconfigured-provider banner (see {@link ProviderDescriptor.missingRequired}).
33
+ */
34
+ readonly default: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
26
35
  }, undefined>;
27
36
  export type ProviderConfigField = v.InferOutput<typeof providerConfigFieldSchema>;
28
37
  /**
@@ -56,9 +65,47 @@ export declare const providerDescriptorSchema: v.ObjectSchema<{
56
65
  readonly value: v.StringSchema<undefined>;
57
66
  readonly label: v.StringSchema<undefined>;
58
67
  }, undefined>, undefined>, undefined>;
68
+ /**
69
+ * The provider/manifest's default for this field. When present, the value is
70
+ * optional in practice: leaving the form field blank falls back to this default
71
+ * (so the UI shows an empty input with a "defaulted to …" hint, and clearing an
72
+ * override reverts to it). Never set for secrets — those have no default and must
73
+ * be supplied explicitly. A `required` field WITHOUT a default is what drives the
74
+ * unconfigured-provider banner (see {@link ProviderDescriptor.missingRequired}).
75
+ */
76
+ readonly default: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
59
77
  }, undefined>, undefined>;
60
78
  /** Whether the provider implements a connection test the UI can call. */
61
79
  readonly supportsTest: v.BooleanSchema<undefined>;
80
+ /**
81
+ * Keys of `configFields` that are `required`, have no `default`, and have no
82
+ * stored value for this workspace yet (e.g. an unset API token). Empty ⇒ the
83
+ * provider is fully configured. Non-empty while a provider is registered for the
84
+ * instance is exactly the "loud banner" signal: the org still has to supply these
85
+ * before the provider can be used. Computed server-side so the form, the banner,
86
+ * and the register-time validation all read one source of truth.
87
+ */
88
+ readonly missingRequired: v.ArraySchema<v.StringSchema<undefined>, undefined>;
89
+ /**
90
+ * For a NATIVE provider: the base manifest the SPA overlays the flat `configFields`
91
+ * values onto before POSTing (so the connect form is flat fields but storage stays a
92
+ * single full manifest — see `backend/docs/native-environment-adapter.md`). A `secret`
93
+ * field → the secret bundle, a non-secret field → `providerConfig[key]` (a `baseUrl`
94
+ * field → `baseUrl`). Absent ⇒ a manifest-authored provider (the SPA edits the manifest
95
+ * directly). Provider-specific JSON (an EnvironmentManifest or RunnerPoolManifest shape)
96
+ * carrying NO secret values — only the shape + secret-ref keys.
97
+ */
98
+ readonly manifestTemplate: v.OptionalSchema<v.RecordSchema<v.StringSchema<undefined>, v.UnknownSchema, undefined>, undefined>;
99
+ /**
100
+ * The provider's CURRENT saved manifest, when a connection exists. Non-secret: the
101
+ * manifest only carries secret-ref key NAMES (the actual values live in the encrypted
102
+ * bundle and are never returned), so this is safe to expose. The native connect form
103
+ * overlays edited fields onto THIS (falling back to `manifestTemplate` on a first
104
+ * connect), so re-saving preserves previously-stored `providerConfig` — including nested
105
+ * values the flat form doesn't render — instead of silently dropping it. Absent ⇒ no
106
+ * connection yet.
107
+ */
108
+ readonly savedManifest: v.OptionalSchema<v.RecordSchema<v.StringSchema<undefined>, v.UnknownSchema, undefined>, undefined>;
62
109
  }, undefined>;
63
110
  export type ProviderDescriptor = v.InferOutput<typeof providerDescriptorSchema>;
64
111
  /** The outcome of a provider connection test (never throws to the client). */
@@ -1 +1 @@
1
- {"version":3,"file":"provider-config.d.ts","sourceRoot":"","sources":["../src/provider-config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAc5B,gDAAgD;AAChD,eAAO,MAAM,6BAA6B,6DAA6C,CAAA;AACvF,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,6BAA6B,CAAC,CAAA;AAEzF,0EAA0E;AAC1E,eAAO,MAAM,yBAAyB;IACpC,iFAAiF;;IAEjF,sCAAsC;;IAEtC,kDAAkD;;IAElD,kCAAkC;;IAElC,gEAAgE;;IAEhE,oEAAoE;;IAEpE,+CAA+C;;IAE/C,oCAAoC;;;;;aAEpC,CAAA;AACF,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,yBAAyB,CAAC,CAAA;AAEjF;;;;;;GAMG;AACH,eAAO,MAAM,wBAAwB;;;;;QA1BnC,iFAAiF;;QAEjF,sCAAsC;;QAEtC,kDAAkD;;QAElD,kCAAkC;;QAElC,gEAAgE;;QAEhE,oEAAoE;;QAEpE,+CAA+C;;QAE/C,oCAAoC;;;;;;IAiBpC,yEAAyE;;aAEzE,CAAA;AACF,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,wBAAwB,CAAC,CAAA;AAE/E,8EAA8E;AAC9E,eAAO,MAAM,0BAA0B;;IAErC,oEAAoE;;aAEpE,CAAA;AACF,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,0BAA0B,CAAC,CAAA"}
1
+ {"version":3,"file":"provider-config.d.ts","sourceRoot":"","sources":["../src/provider-config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAc5B,gDAAgD;AAChD,eAAO,MAAM,6BAA6B,6DAA6C,CAAA;AACvF,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,6BAA6B,CAAC,CAAA;AAEzF,0EAA0E;AAC1E,eAAO,MAAM,yBAAyB;IACpC,iFAAiF;;IAEjF,sCAAsC;;IAEtC,kDAAkD;;IAElD,kCAAkC;;IAElC,gEAAgE;;IAEhE,oEAAoE;;IAEpE,+CAA+C;;IAE/C,oCAAoC;;;;;IAEpC;;;;;;;OAOG;;aAEH,CAAA;AACF,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,yBAAyB,CAAC,CAAA;AAEjF;;;;;;GAMG;AACH,eAAO,MAAM,wBAAwB;;;;;QAnCnC,iFAAiF;;QAEjF,sCAAsC;;QAEtC,kDAAkD;;QAElD,kCAAkC;;QAElC,gEAAgE;;QAEhE,oEAAoE;;QAEpE,+CAA+C;;QAE/C,oCAAoC;;;;;QAEpC;;;;;;;WAOG;;;IAiBH,yEAAyE;;IAEzE;;;;;;;OAOG;;IAEH;;;;;;;;OAQG;;IAEH;;;;;;;;OAQG;;aAEH,CAAA;AACF,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,wBAAwB,CAAC,CAAA;AAE/E,8EAA8E;AAC9E,eAAO,MAAM,0BAA0B;;IAErC,oEAAoE;;aAEpE,CAAA;AACF,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,0BAA0B,CAAC,CAAA"}
@@ -30,6 +30,15 @@ export const providerConfigFieldSchema = v.object({
30
30
  type: v.optional(providerConfigFieldTypeSchema),
31
31
  /** Choices for a `select` field. */
32
32
  options: v.optional(v.array(v.object({ value: v.string(), label: v.string() }))),
33
+ /**
34
+ * The provider/manifest's default for this field. When present, the value is
35
+ * optional in practice: leaving the form field blank falls back to this default
36
+ * (so the UI shows an empty input with a "defaulted to …" hint, and clearing an
37
+ * override reverts to it). Never set for secrets — those have no default and must
38
+ * be supplied explicitly. A `required` field WITHOUT a default is what drives the
39
+ * unconfigured-provider banner (see {@link ProviderDescriptor.missingRequired}).
40
+ */
41
+ default: v.optional(v.string()),
33
42
  });
34
43
  /**
35
44
  * What the SPA needs to render a provider's config form. `kind` distinguishes a
@@ -45,6 +54,35 @@ export const providerDescriptorSchema = v.object({
45
54
  configFields: v.array(providerConfigFieldSchema),
46
55
  /** Whether the provider implements a connection test the UI can call. */
47
56
  supportsTest: v.boolean(),
57
+ /**
58
+ * Keys of `configFields` that are `required`, have no `default`, and have no
59
+ * stored value for this workspace yet (e.g. an unset API token). Empty ⇒ the
60
+ * provider is fully configured. Non-empty while a provider is registered for the
61
+ * instance is exactly the "loud banner" signal: the org still has to supply these
62
+ * before the provider can be used. Computed server-side so the form, the banner,
63
+ * and the register-time validation all read one source of truth.
64
+ */
65
+ missingRequired: v.array(v.string()),
66
+ /**
67
+ * For a NATIVE provider: the base manifest the SPA overlays the flat `configFields`
68
+ * values onto before POSTing (so the connect form is flat fields but storage stays a
69
+ * single full manifest — see `backend/docs/native-environment-adapter.md`). A `secret`
70
+ * field → the secret bundle, a non-secret field → `providerConfig[key]` (a `baseUrl`
71
+ * field → `baseUrl`). Absent ⇒ a manifest-authored provider (the SPA edits the manifest
72
+ * directly). Provider-specific JSON (an EnvironmentManifest or RunnerPoolManifest shape)
73
+ * carrying NO secret values — only the shape + secret-ref keys.
74
+ */
75
+ manifestTemplate: v.optional(v.record(v.string(), v.unknown())),
76
+ /**
77
+ * The provider's CURRENT saved manifest, when a connection exists. Non-secret: the
78
+ * manifest only carries secret-ref key NAMES (the actual values live in the encrypted
79
+ * bundle and are never returned), so this is safe to expose. The native connect form
80
+ * overlays edited fields onto THIS (falling back to `manifestTemplate` on a first
81
+ * connect), so re-saving preserves previously-stored `providerConfig` — including nested
82
+ * values the flat form doesn't render — instead of silently dropping it. Absent ⇒ no
83
+ * connection yet.
84
+ */
85
+ savedManifest: v.optional(v.record(v.string(), v.unknown())),
48
86
  });
49
87
  /** The outcome of a provider connection test (never throws to the client). */
50
88
  export const connectionTestResultSchema = v.object({
@@ -1 +1 @@
1
- {"version":3,"file":"provider-config.js","sourceRoot":"","sources":["../src/provider-config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAE5B,8EAA8E;AAC9E,qEAAqE;AACrE,EAAE;AACF,6EAA6E;AAC7E,gFAAgF;AAChF,kFAAkF;AAClF,gFAAgF;AAChF,8EAA8E;AAC9E,gFAAgF;AAChF,kFAAkF;AAClF,8EAA8E;AAE9E,gDAAgD;AAChD,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAA;AAGvF,0EAA0E;AAC1E,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,MAAM,CAAC;IAChD,iFAAiF;IACjF,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;IACf,sCAAsC;IACtC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,kDAAkD;IAClD,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC5B,kCAAkC;IAClC,WAAW,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IACnC,gEAAgE;IAChE,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;IAC/B,oEAAoE;IACpE,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;IACjC,+CAA+C;IAC/C,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,6BAA6B,CAAC;IAC/C,oCAAoC;IACpC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;CACjF,CAAC,CAAA;AAGF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/C,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;IACtB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IACxC,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,yBAAyB,CAAC;IAChD,yEAAyE;IACzE,YAAY,EAAE,CAAC,CAAC,OAAO,EAAE;CAC1B,CAAC,CAAA;AAGF,8EAA8E;AAC9E,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC;IACjD,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE;IACf,oEAAoE;IACpE,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;CAChC,CAAC,CAAA"}
1
+ {"version":3,"file":"provider-config.js","sourceRoot":"","sources":["../src/provider-config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAE5B,8EAA8E;AAC9E,qEAAqE;AACrE,EAAE;AACF,6EAA6E;AAC7E,gFAAgF;AAChF,kFAAkF;AAClF,gFAAgF;AAChF,8EAA8E;AAC9E,gFAAgF;AAChF,kFAAkF;AAClF,8EAA8E;AAE9E,gDAAgD;AAChD,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAA;AAGvF,0EAA0E;AAC1E,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,MAAM,CAAC;IAChD,iFAAiF;IACjF,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;IACf,sCAAsC;IACtC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,kDAAkD;IAClD,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC5B,kCAAkC;IAClC,WAAW,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IACnC,gEAAgE;IAChE,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;IAC/B,oEAAoE;IACpE,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;IACjC,+CAA+C;IAC/C,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,6BAA6B,CAAC;IAC/C,oCAAoC;IACpC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;IAChF;;;;;;;OAOG;IACH,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;CAChC,CAAC,CAAA;AAGF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/C,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;IACtB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IACxC,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,yBAAyB,CAAC;IAChD,yEAAyE;IACzE,YAAY,EAAE,CAAC,CAAC,OAAO,EAAE;IACzB;;;;;;;OAOG;IACH,eAAe,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IACpC;;;;;;;;OAQG;IACH,gBAAgB,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;IAC/D;;;;;;;;OAQG;IACH,aAAa,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;CAC7D,CAAC,CAAA;AAGF,8EAA8E;AAC9E,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC;IACjD,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE;IACf,oEAAoE;IACpE,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;CAChC,CAAC,CAAA"}
package/dist/runners.d.ts CHANGED
@@ -250,7 +250,9 @@ export type RunnerPoolConnection = v.InferOutput<typeof runnerPoolConnectionSche
250
250
  * Register (or replace) a workspace's runner pool. The org supplies the actual
251
251
  * per-tenant scheduler-API secret values here (write-only); they are encrypted
252
252
  * and stored in D1 and never returned. Every `secretRef.key` in the manifest
253
- * must have a matching entry in `secrets`.
253
+ * must have a matching entry in `secrets`. A native pool adapter is configured
254
+ * through the same manifest path (per-workspace settings on the manifest's
255
+ * `providerConfig` bag), mirroring the environment provider.
254
256
  */
255
257
  export declare const registerRunnerPoolSchema: v.ObjectSchema<{
256
258
  readonly manifest: v.ObjectSchema<{
@@ -1 +1 @@
1
- {"version":3,"file":"runners.d.ts","sourceRoot":"","sources":["../src/runners.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runners.d.ts","sourceRoot":"","sources":["../src/runners.ts"],"names":[],"mappings":"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"}
package/dist/runners.js CHANGED
@@ -104,7 +104,9 @@ export const runnerPoolConnectionSchema = v.object({
104
104
  * Register (or replace) a workspace's runner pool. The org supplies the actual
105
105
  * per-tenant scheduler-API secret values here (write-only); they are encrypted
106
106
  * and stored in D1 and never returned. Every `secretRef.key` in the manifest
107
- * must have a matching entry in `secrets`.
107
+ * must have a matching entry in `secrets`. A native pool adapter is configured
108
+ * through the same manifest path (per-workspace settings on the manifest's
109
+ * `providerConfig` bag), mirroring the environment provider.
108
110
  */
109
111
  export const registerRunnerPoolSchema = v.object({
110
112
  manifest: runnerPoolManifestSchema,
@@ -1 +1 @@
1
- {"version":3,"file":"runners.js","sourceRoot":"","sources":["../src/runners.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runners.js","sourceRoot":"","sources":["../src/runners.ts"],"names":[],"mappings":"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"}
@@ -567,6 +567,12 @@ export declare const workspaceSnapshotSchema: v.ObjectSchema<{
567
567
  readonly taskLimitMode: v.PicklistSchema<["off", "shared", "per_type"], undefined>;
568
568
  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>;
569
569
  readonly taskLimitPerType: v.NullableSchema<v.RecordSchema<v.PicklistSchema<["feature", "bug", "document", "spike"], undefined>, v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 1, undefined>, v.MaxValueAction<number, 1000, undefined>]>, undefined>, undefined>;
570
+ readonly spendCurrency: v.NullableSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.ToUpperCaseAction, v.LengthAction<string, 3, undefined>, v.RegexAction<string, "currency must be a 3-letter ISO 4217 code">]>, undefined>;
571
+ readonly spendMonthlyLimit: v.NullableSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 0, undefined>]>, undefined>;
572
+ readonly spendModelPrices: v.NullableSchema<v.RecordSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>]>, v.ObjectSchema<{
573
+ readonly inputPerMillion: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 0, undefined>]>;
574
+ readonly outputPerMillion: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 0, undefined>]>;
575
+ }, undefined>, undefined>, undefined>;
570
576
  }, undefined>, undefined>;
571
577
  /**
572
578
  * Registered CUSTOM agent kinds (kind + presentation + container flag) a deployment
@@ -1 +1 @@
1
- {"version":3,"file":"snapshot.d.ts","sourceRoot":"","sources":["../src/snapshot.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAyB5B,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAKlC;;;;;OAKG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAEH;;;OAGG;;;;;;;;;;IAEH;;;;;OAKG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAEH;;;OAGG;;;;;;;;;;;;;;;IAEH;;;;;;OAMG;;;;;;;;;;;;;IAEH;;;;;OAKG;;;;;;;;;IAEH;;;;;;;;OAQG;;;;;IAOH;;;OAGG;;;;IAEH;;;;OAIG;;;;;;;;;;;;;;;;;;;;;IAEH;;;OAGG;;;;;;;;IAEH;;;;;OAKG;;;;;;;;;;;;;;;;;;;;;;;;IAGH;;;;OAIG;;;;;;;IAEH;;;;;;OAMG;;;;;;;;;;;;;aAEH,CAAA;AACF,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,uBAAuB,CAAC,CAAA"}
1
+ {"version":3,"file":"snapshot.d.ts","sourceRoot":"","sources":["../src/snapshot.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAyB5B,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAKlC;;;;;OAKG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAEH;;;OAGG;;;;;;;;;;IAEH;;;;;OAKG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAEH;;;OAGG;;;;;;;;;;;;;;;IAEH;;;;;;OAMG;;;;;;;;;;;;;IAEH;;;;;OAKG;;;;;;;;;IAEH;;;;;;;;OAQG;;;;;IAOH;;;OAGG;;;;IAEH;;;;OAIG;;;;;;;;;;;;;;;;;;;;;IAEH;;;OAGG;;;;;;;;IAEH;;;;;OAKG;;;;;;;;;;;;;;;;;;;;;;;;IAGH;;;;OAIG;;;;;;;;;;;;;IAEH;;;;;;OAMG;;;;;;;;;;;;;aAEH,CAAA;AACF,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,uBAAuB,CAAC,CAAA"}
@@ -45,6 +45,7 @@ export declare const userSecretDescriptorSchema: v.ObjectSchema<{
45
45
  readonly value: v.StringSchema<undefined>;
46
46
  readonly label: v.StringSchema<undefined>;
47
47
  }, undefined>, undefined>, undefined>;
48
+ readonly default: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
48
49
  }, undefined>, undefined>;
49
50
  readonly supportsTest: v.BooleanSchema<undefined>;
50
51
  }, undefined>;
@@ -1 +1 @@
1
- {"version":3,"file":"user-secret.d.ts","sourceRoot":"","sources":["../src/user-secret.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAgB5B,oFAAoF;AACpF,eAAO,MAAM,iBAAiB,YAAI,YAAY,CAAU,CAAA;AACxD,eAAO,MAAM,oBAAoB,sDAAgC,CAAA;AACjE,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,oBAAoB,CAAC,CAAA;AAEvE,+EAA+E;AAC/E,eAAO,MAAM,sBAAsB;;;IAGjC,6DAA6D;;IAE7D,+DAA+D;;;aAG/D,CAAA;AACF,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,sBAAsB,CAAC,CAAA;AAM3E,iEAAiE;AACjE,eAAO,MAAM,qBAAqB;;IAEhC,6DAA6D;;IAE7D,0EAA0E;;aAE1E,CAAA;AACF,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,qBAAqB,CAAC,CAAA;AAE9E,2EAA2E;AAC3E,eAAO,MAAM,oBAAoB;;;aAG/B,CAAA;AACF,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,oBAAoB,CAAC,CAAA;AAE5E,8DAA8D;AAC9D,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;aAKrC,CAAA;AACF,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,0BAA0B,CAAC,CAAA"}
1
+ {"version":3,"file":"user-secret.d.ts","sourceRoot":"","sources":["../src/user-secret.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAgB5B,oFAAoF;AACpF,eAAO,MAAM,iBAAiB,YAAI,YAAY,CAAU,CAAA;AACxD,eAAO,MAAM,oBAAoB,sDAAgC,CAAA;AACjE,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,oBAAoB,CAAC,CAAA;AAEvE,+EAA+E;AAC/E,eAAO,MAAM,sBAAsB;;;IAGjC,6DAA6D;;IAE7D,+DAA+D;;;aAG/D,CAAA;AACF,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,sBAAsB,CAAC,CAAA;AAM3E,iEAAiE;AACjE,eAAO,MAAM,qBAAqB;;IAEhC,6DAA6D;;IAE7D,0EAA0E;;aAE1E,CAAA;AACF,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,qBAAqB,CAAC,CAAA;AAE9E,2EAA2E;AAC3E,eAAO,MAAM,oBAAoB;;;aAG/B,CAAA;AACF,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,oBAAoB,CAAC,CAAA;AAE5E,8DAA8D;AAC9D,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;aAKrC,CAAA;AACF,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,0BAA0B,CAAC,CAAA"}
@@ -10,6 +10,22 @@ export type TaskLimitMode = v.InferOutput<typeof taskLimitModeSchema>;
10
10
  /** Per-task-type running-task caps (used when {@link taskLimitModeSchema} is `per_type`). */
11
11
  export declare const taskLimitPerTypeSchema: v.RecordSchema<v.PicklistSchema<["feature", "bug", "document", "spike"], 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
+ /** A single model's per-1M-token price override. */
14
+ export declare const spendModelPriceSchema: v.ObjectSchema<{
15
+ readonly inputPerMillion: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 0, undefined>]>;
16
+ readonly outputPerMillion: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 0, undefined>]>;
17
+ }, undefined>;
18
+ export type SpendModelPrice = v.InferOutput<typeof spendModelPriceSchema>;
19
+ /**
20
+ * Per-model price overrides, keyed by `provider:model` then bare `provider`
21
+ * (most-specific-first, exactly like the built-in table). Overlaid onto
22
+ * `DEFAULT_SPEND_PRICING.prices` when resolving a workspace's effective pricing.
23
+ */
24
+ export declare const spendModelPricesSchema: v.RecordSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>]>, v.ObjectSchema<{
25
+ readonly inputPerMillion: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 0, undefined>]>;
26
+ readonly outputPerMillion: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 0, undefined>]>;
27
+ }, undefined>, undefined>;
28
+ export type SpendModelPrices = v.InferOutput<typeof spendModelPricesSchema>;
13
29
  /** A workspace's runtime settings. */
14
30
  export declare const workspaceSettingsSchema: v.ObjectSchema<{
15
31
  /**
@@ -23,6 +39,25 @@ export declare const workspaceSettingsSchema: v.ObjectSchema<{
23
39
  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
40
  /** The per-type caps, when {@link taskLimitMode} is `per_type`. Null otherwise. */
25
41
  readonly taskLimitPerType: v.NullableSchema<v.RecordSchema<v.PicklistSchema<["feature", "bug", "document", "spike"], undefined>, v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 1, undefined>, v.MaxValueAction<number, 1000, undefined>]>, undefined>, undefined>;
42
+ /** Spend budget currency (ISO 4217). Null ⇒ the built-in default (`EUR`). */
43
+ readonly spendCurrency: v.NullableSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.ToUpperCaseAction, v.LengthAction<string, 3, undefined>, v.RegexAction<string, "currency must be a 3-letter ISO 4217 code">]>, undefined>;
44
+ /**
45
+ * Monthly spend budget in {@link spendCurrency}. Null ⇒ the built-in default
46
+ * (~100 EUR). `0` is intentional and valid — it means "no PAID spend": runs on
47
+ * metered models (direct API keys / Cloudflare Workers AI) are refused at start and
48
+ * paused mid-run, while LOCAL-runner models (keyless) and connected SUBSCRIPTIONS
49
+ * (Claude Code / Codex, flat-rate quota) keep running, since they incur no metered
50
+ * cost. So `0` is the "local-/subscription-only" setting, not a footgun — it's
51
+ * reversible from the UI and clearer than an unbounded "unlimited" that can run up a
52
+ * bill. The gate is per-workspace (see the spend safeguard); web search still costs
53
+ * money, so a `0` budget also blocks paid web searches.
54
+ */
55
+ readonly spendMonthlyLimit: v.NullableSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 0, undefined>]>, undefined>;
56
+ /** Per-model price overrides overlaid on the base table. Null ⇒ no overrides. */
57
+ readonly spendModelPrices: v.NullableSchema<v.RecordSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>]>, v.ObjectSchema<{
58
+ readonly inputPerMillion: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 0, undefined>]>;
59
+ readonly outputPerMillion: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 0, undefined>]>;
60
+ }, undefined>, undefined>, undefined>;
26
61
  }, undefined>;
27
62
  export type WorkspaceSettings = v.InferOutput<typeof workspaceSettingsSchema>;
28
63
  /** Update a workspace's runtime settings (full replace of the supplied fields). */
@@ -31,6 +66,12 @@ export declare const updateWorkspaceSettingsSchema: v.ObjectSchema<{
31
66
  readonly taskLimitMode: v.OptionalSchema<v.PicklistSchema<["off", "shared", "per_type"], undefined>, undefined>;
32
67
  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>;
33
68
  readonly taskLimitPerType: v.OptionalSchema<v.NullableSchema<v.RecordSchema<v.PicklistSchema<["feature", "bug", "document", "spike"], undefined>, v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 1, undefined>, v.MaxValueAction<number, 1000, undefined>]>, undefined>, undefined>, undefined>;
69
+ readonly spendCurrency: v.OptionalSchema<v.NullableSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.ToUpperCaseAction, v.LengthAction<string, 3, undefined>, v.RegexAction<string, "currency must be a 3-letter ISO 4217 code">]>, undefined>, undefined>;
70
+ readonly spendMonthlyLimit: v.OptionalSchema<v.NullableSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 0, undefined>]>, undefined>, undefined>;
71
+ readonly spendModelPrices: v.OptionalSchema<v.NullableSchema<v.RecordSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>]>, v.ObjectSchema<{
72
+ readonly inputPerMillion: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 0, undefined>]>;
73
+ readonly outputPerMillion: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 0, undefined>]>;
74
+ }, undefined>, undefined>, undefined>, undefined>;
34
75
  }, undefined>;
35
76
  export type UpdateWorkspaceSettingsInput = v.InferOutput<typeof updateWorkspaceSettingsSchema>;
36
77
  //# sourceMappingURL=workspace-settings.d.ts.map
@@ -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,gRAA8C,CAAA;AACjF,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,sBAAsB,CAAC,CAAA;AAE3E,sCAAsC;AACtC,eAAO,MAAM,uBAAuB;IAClC;;;OAGG;;IAEH,kEAAkE;;IAElE,8EAA8E;;IAE9E,mFAAmF;;aAEnF,CAAA;AACF,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,uBAAuB,CAAC,CAAA;AAE7E,mFAAmF;AACnF,eAAO,MAAM,6BAA6B;;;;;aAOxC,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,gRAA8C,CAAA;AACjF,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,sBAAsB,CAAC,CAAA;AAoB3E,oDAAoD;AACpD,eAAO,MAAM,qBAAqB;;;aAGhC,CAAA;AACF,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,qBAAqB,CAAC,CAAA;AAEzE;;;;GAIG;AACH,eAAO,MAAM,sBAAsB;;;yBAGlC,CAAA;AACD,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,sBAAsB,CAAC,CAAA;AAE3E,sCAAsC;AACtC,eAAO,MAAM,uBAAuB;IAClC;;;OAGG;;IAEH,kEAAkE;;IAElE,8EAA8E;;IAE9E,mFAAmF;;IAEnF,6EAA6E;;IAE7E;;;;;;;;;;OAUG;;IAEH,iFAAiF;;;;;aAEjF,CAAA;AACF,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,uBAAuB,CAAC,CAAA;AAE7E,mFAAmF;AACnF,eAAO,MAAM,6BAA6B;;;;;;;;;;;aAUxC,CAAA;AACF,MAAM,MAAM,4BAA4B,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,6BAA6B,CAAC,CAAA"}
@@ -17,6 +17,27 @@ export const taskLimitModeSchema = v.picklist(['off', 'shared', 'per_type']);
17
17
  const limitSchema = v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(1000));
18
18
  /** Per-task-type running-task caps (used when {@link taskLimitModeSchema} is `per_type`). */
19
19
  export const taskLimitPerTypeSchema = v.record(createTaskTypeSchema, limitSchema);
20
+ // ---------------------------------------------------------------------------
21
+ // Per-workspace spend budget. Moved out of the deployment-wide env vars
22
+ // (`SPEND_MONTHLY_LIMIT` / `SPEND_CURRENCY` / `SPEND_MODEL_PRICES`) onto the
23
+ // workspace settings row so an operator can tune a workspace's budget in the UI
24
+ // without a redeploy. All three are nullable; null ⇒ fall back to the built-in
25
+ // `DEFAULT_SPEND_PRICING` base table (the spend service resolves the effective
26
+ // pricing per workspace, overlaying the OpenRouter catalog as before).
27
+ // ---------------------------------------------------------------------------
28
+ /** ISO 4217 currency code (3 letters), e.g. `EUR`. */
29
+ const spendCurrencySchema = v.pipe(v.string(), v.trim(), v.toUpperCase(), v.length(3), v.regex(/^[A-Z]{3}$/, 'currency must be a 3-letter ISO 4217 code'));
30
+ /** A single model's per-1M-token price override. */
31
+ export const spendModelPriceSchema = v.object({
32
+ inputPerMillion: v.pipe(v.number(), v.minValue(0)),
33
+ outputPerMillion: v.pipe(v.number(), v.minValue(0)),
34
+ });
35
+ /**
36
+ * Per-model price overrides, keyed by `provider:model` then bare `provider`
37
+ * (most-specific-first, exactly like the built-in table). Overlaid onto
38
+ * `DEFAULT_SPEND_PRICING.prices` when resolving a workspace's effective pricing.
39
+ */
40
+ export const spendModelPricesSchema = v.record(v.pipe(v.string(), v.trim(), v.minLength(1)), spendModelPriceSchema);
20
41
  /** A workspace's runtime settings. */
21
42
  export const workspaceSettingsSchema = v.object({
22
43
  /**
@@ -30,6 +51,22 @@ export const workspaceSettingsSchema = v.object({
30
51
  taskLimitShared: v.nullable(limitSchema),
31
52
  /** The per-type caps, when {@link taskLimitMode} is `per_type`. Null otherwise. */
32
53
  taskLimitPerType: v.nullable(taskLimitPerTypeSchema),
54
+ /** Spend budget currency (ISO 4217). Null ⇒ the built-in default (`EUR`). */
55
+ spendCurrency: v.nullable(spendCurrencySchema),
56
+ /**
57
+ * Monthly spend budget in {@link spendCurrency}. Null ⇒ the built-in default
58
+ * (~100 EUR). `0` is intentional and valid — it means "no PAID spend": runs on
59
+ * metered models (direct API keys / Cloudflare Workers AI) are refused at start and
60
+ * paused mid-run, while LOCAL-runner models (keyless) and connected SUBSCRIPTIONS
61
+ * (Claude Code / Codex, flat-rate quota) keep running, since they incur no metered
62
+ * cost. So `0` is the "local-/subscription-only" setting, not a footgun — it's
63
+ * reversible from the UI and clearer than an unbounded "unlimited" that can run up a
64
+ * bill. The gate is per-workspace (see the spend safeguard); web search still costs
65
+ * money, so a `0` budget also blocks paid web searches.
66
+ */
67
+ spendMonthlyLimit: v.nullable(v.pipe(v.number(), v.minValue(0))),
68
+ /** Per-model price overrides overlaid on the base table. Null ⇒ no overrides. */
69
+ spendModelPrices: v.nullable(spendModelPricesSchema),
33
70
  });
34
71
  /** Update a workspace's runtime settings (full replace of the supplied fields). */
35
72
  export const updateWorkspaceSettingsSchema = v.object({
@@ -37,5 +74,8 @@ export const updateWorkspaceSettingsSchema = v.object({
37
74
  taskLimitMode: v.optional(taskLimitModeSchema),
38
75
  taskLimitShared: v.optional(v.nullable(limitSchema)),
39
76
  taskLimitPerType: v.optional(v.nullable(taskLimitPerTypeSchema)),
77
+ spendCurrency: v.optional(v.nullable(spendCurrencySchema)),
78
+ spendMonthlyLimit: v.optional(v.nullable(v.pipe(v.number(), v.minValue(0)))),
79
+ spendModelPrices: v.optional(v.nullable(spendModelPricesSchema)),
40
80
  });
41
81
  //# sourceMappingURL=workspace-settings.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"workspace-settings.js","sourceRoot":"","sources":["../src/workspace-settings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAC5B,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAA;AAEtD,8EAA8E;AAC9E,iFAAiF;AACjF,8EAA8E;AAC9E,kFAAkF;AAClF,oFAAoF;AACpF,gFAAgF;AAChF,8EAA8E;AAE9E;;;;;GAKG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAA;AAG5E,MAAM,WAAW,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAA;AAEpF,6FAA6F;AAC7F,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC,oBAAoB,EAAE,WAAW,CAAC,CAAA;AAGjF,sCAAsC;AACtC,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9C;;;OAGG;IACH,wBAAwB,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC7F,kEAAkE;IAClE,aAAa,EAAE,mBAAmB;IAClC,8EAA8E;IAC9E,eAAe,EAAE,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC;IACxC,mFAAmF;IACnF,gBAAgB,EAAE,CAAC,CAAC,QAAQ,CAAC,sBAAsB,CAAC;CACrD,CAAC,CAAA;AAGF,mFAAmF;AACnF,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,CAAC,MAAM,CAAC;IACpD,wBAAwB,EAAE,CAAC,CAAC,QAAQ,CAClC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CACpE;IACD,aAAa,EAAE,CAAC,CAAC,QAAQ,CAAC,mBAAmB,CAAC;IAC9C,eAAe,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IACpD,gBAAgB,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAC;CACjE,CAAC,CAAA"}
1
+ {"version":3,"file":"workspace-settings.js","sourceRoot":"","sources":["../src/workspace-settings.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cat-factory/contracts",
3
- "version": "0.22.0",
3
+ "version": "0.24.0",
4
4
  "description": "Valibot wire contract shared between the Agent Architecture Board frontend and backend.",
5
5
  "repository": {
6
6
  "type": "git",