@spacefast/common 0.2.1 → 0.4.1
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.
- package/dist/agents/marketplace-prompts.d.ts +1 -0
- package/dist/agents/marketplace-prompts.js +6 -0
- package/dist/agents/registry/core.d.ts +4 -12
- package/dist/agents/registry/core.js +7 -28
- package/dist/config/domains.d.ts +10 -8
- package/dist/config/domains.js +4 -7
- package/dist/contracts/access-core.d.ts +135 -0
- package/dist/contracts/access-core.js +242 -0
- package/dist/contracts/access-profiles.d.ts +8 -8
- package/dist/contracts/access-profiles.js +8 -8
- package/dist/contracts/access.d.ts +14 -103
- package/dist/contracts/access.js +10 -210
- package/dist/contracts/activity.d.ts +54 -55
- package/dist/contracts/activity.js +38 -9
- package/dist/contracts/api-keys.d.ts +69 -26
- package/dist/contracts/api-keys.js +29 -2
- package/dist/contracts/application-journal.d.ts +197 -4
- package/dist/contracts/application-journal.js +97 -16
- package/dist/contracts/auth.d.ts +20 -0
- package/dist/contracts/auth.js +18 -0
- package/dist/contracts/beta.d.ts +13 -0
- package/dist/contracts/beta.js +28 -0
- package/dist/contracts/billing.d.ts +2 -2
- package/dist/contracts/bootstrap.d.ts +23 -6
- package/dist/contracts/builds.d.ts +24 -4
- package/dist/contracts/builds.js +16 -4
- package/dist/contracts/channels.d.ts +43 -0
- package/dist/contracts/channels.js +22 -6
- package/dist/contracts/comments.d.ts +49 -0
- package/dist/contracts/comments.js +61 -2
- package/dist/contracts/commerce.d.ts +19 -13
- package/dist/contracts/connector-access.d.ts +28 -0
- package/dist/contracts/connector-access.js +31 -0
- package/dist/contracts/connectors.d.ts +2382 -0
- package/dist/contracts/connectors.js +941 -0
- package/dist/contracts/content-contract-verification.d.ts +112 -58
- package/dist/contracts/content-contract-verification.js +42 -54
- package/dist/contracts/content-model-emit.d.ts +97 -0
- package/dist/contracts/content-model-emit.js +306 -0
- package/dist/contracts/content-model-sdk.d.ts +101 -0
- package/dist/contracts/content-model-sdk.js +232 -0
- package/dist/contracts/{content-program.d.ts → content-model.d.ts} +338 -82
- package/dist/contracts/{content-program.js → content-model.js} +291 -63
- package/dist/contracts/content-platform-fixture.d.ts +380 -110
- package/dist/contracts/content-platform-fixture.js +8 -8
- package/dist/contracts/content-sync.d.ts +197 -74
- package/dist/contracts/content-sync.js +98 -37
- package/dist/contracts/content.d.ts +30 -422
- package/dist/contracts/content.js +34 -294
- package/dist/contracts/dashboard-prefs.d.ts +10 -3
- package/dist/contracts/dashboard-prefs.js +6 -3
- package/dist/contracts/data-location.d.ts +9 -0
- package/dist/contracts/data-location.js +7 -0
- package/dist/contracts/deployment-comparison.d.ts +67 -0
- package/dist/contracts/deployment-comparison.js +68 -0
- package/dist/contracts/device-auth.d.ts +55 -11
- package/dist/contracts/domains.d.ts +40 -16
- package/dist/contracts/domains.js +23 -0
- package/dist/contracts/enums.d.ts +1 -10
- package/dist/contracts/enums.js +0 -15
- package/dist/contracts/error-code-meta.d.ts +388 -20
- package/dist/contracts/error-code-meta.js +201 -5
- package/dist/contracts/error-codes.d.ts +17 -4
- package/dist/contracts/error-codes.js +109 -10
- package/dist/contracts/events.d.ts +5 -0
- package/dist/contracts/events.js +12 -3
- package/dist/contracts/execution.d.ts +5 -1
- package/dist/contracts/execution.js +4 -0
- package/dist/contracts/feature-lifecycle.d.ts +53 -20
- package/dist/contracts/feature-lifecycle.js +65 -23
- package/dist/contracts/features.d.ts +57 -31
- package/dist/contracts/features.js +0 -1
- package/dist/contracts/feedback.d.ts +124 -0
- package/dist/contracts/feedback.js +64 -0
- package/dist/contracts/fixtures/content-model-sdk-v1.generated.d.ts +129 -0
- package/dist/contracts/fixtures/content-model-sdk-v1.generated.js +48 -0
- package/dist/contracts/fixtures/content-platform-v1.json +101 -49
- package/dist/contracts/frame-session.d.ts +60 -10
- package/dist/contracts/frame-session.js +52 -12
- package/dist/contracts/functions.d.ts +28 -2
- package/dist/contracts/functions.js +25 -2
- package/dist/contracts/grant-copy.d.ts +2 -0
- package/dist/contracts/grant-copy.js +2 -0
- package/dist/contracts/grants-core.d.ts +95 -0
- package/dist/contracts/grants-core.js +435 -0
- package/dist/contracts/grants.d.ts +13 -84
- package/dist/contracts/grants.js +21 -369
- package/dist/contracts/ids-core.d.ts +11 -0
- package/dist/contracts/ids-core.js +14 -0
- package/dist/contracts/ids.d.ts +7 -4
- package/dist/contracts/ids.js +12 -4
- package/dist/contracts/internal.d.ts +18 -0
- package/dist/contracts/internal.js +19 -0
- package/dist/contracts/mcp.d.ts +8 -18
- package/dist/contracts/mcp.js +2 -23
- package/dist/contracts/notifications.d.ts +4 -1
- package/dist/contracts/notifications.js +1 -0
- package/dist/contracts/oauth-resources.d.ts +55 -9
- package/dist/contracts/oauth-resources.js +64 -1
- package/dist/contracts/oauth-scope-actions.d.ts +27 -3
- package/dist/contracts/oauth-scope-actions.js +18 -8
- package/dist/contracts/operations.d.ts +1 -1
- package/dist/contracts/partner-account.d.ts +629 -0
- package/dist/contracts/partner-account.js +18 -0
- package/dist/contracts/principal-assertion.d.ts +74 -1
- package/dist/contracts/principal-assertion.js +67 -3
- package/dist/contracts/publish-archive.d.ts +22 -1
- package/dist/contracts/push-new.d.ts +3 -3
- package/dist/contracts/push-new.js +1 -1
- package/dist/contracts/quotas.js +2 -1
- package/dist/contracts/repository-connections.d.ts +10 -6
- package/dist/contracts/repository-connections.js +15 -0
- package/dist/contracts/resources.d.ts +6 -5
- package/dist/contracts/resources.js +7 -0
- package/dist/contracts/route-inventory.d.ts +74 -19
- package/dist/contracts/route-inventory.js +20 -6
- package/dist/contracts/runtime-api.d.ts +415 -4
- package/dist/contracts/runtime-api.js +60 -15
- package/dist/contracts/runtime-app.d.ts +6 -1
- package/dist/contracts/runtime-components.d.ts +646 -18
- package/dist/contracts/runtime-components.js +304 -188
- package/dist/contracts/runtime-services.d.ts +15 -0
- package/dist/contracts/runtime-services.js +25 -0
- package/dist/contracts/runtime-storage.d.ts +32 -0
- package/dist/contracts/runtime-storage.js +37 -0
- package/dist/contracts/source-workspaces.d.ts +511 -0
- package/dist/contracts/source-workspaces.js +276 -0
- package/dist/contracts/space-config-spacefast.d.ts +394 -0
- package/dist/contracts/space-config-spacefast.js +70 -0
- package/dist/contracts/space-config.d.ts +177 -90
- package/dist/contracts/space-config.js +77 -92
- package/dist/contracts/spaces.d.ts +132 -24
- package/dist/contracts/spaces.js +77 -13
- package/dist/contracts/superadmin-connectors.d.ts +371 -0
- package/dist/contracts/superadmin-connectors.js +61 -0
- package/dist/contracts/superadmin-emails.d.ts +1 -1
- package/dist/contracts/superadmin-emails.js +1 -1
- package/dist/contracts/superadmin-entities.d.ts +105 -0
- package/dist/contracts/superadmin-entities.js +64 -0
- package/dist/contracts/superadmin-runtime.d.ts +35 -116
- package/dist/contracts/superadmin-runtime.js +13 -69
- package/dist/contracts/superadmin-search.d.ts +12 -14
- package/dist/contracts/superadmin-search.js +2 -2
- package/dist/contracts/superadmin-spaces.d.ts +15 -72
- package/dist/contracts/superadmin-spaces.js +2 -7
- package/dist/contracts/superadmin-teams.d.ts +12 -0
- package/dist/contracts/superadmin-teams.js +7 -1
- package/dist/contracts/superadmin-tenants.d.ts +44 -16
- package/dist/contracts/superadmin.d.ts +2 -2
- package/dist/contracts/tags.d.ts +12 -12
- package/dist/contracts/teams.d.ts +29 -1
- package/dist/contracts/teams.js +24 -2
- package/dist/contracts/tenants.d.ts +98 -0
- package/dist/contracts/tenants.js +20 -0
- package/dist/contracts/transfers.d.ts +92 -0
- package/dist/contracts/transfers.js +37 -0
- package/dist/contracts/usage.d.ts +9 -1
- package/dist/contracts/usage.js +2 -0
- package/dist/contracts/visual-review.d.ts +448 -0
- package/dist/contracts/visual-review.js +156 -0
- package/dist/contracts/wordpress-php-toolkit.json +9 -0
- package/dist/contracts/work-mode.d.ts +24 -0
- package/dist/contracts/work-mode.js +17 -0
- package/dist/contracts/wp-cli.d.ts +66 -0
- package/dist/contracts/wp-cli.js +68 -0
- package/dist/contracts/zero-catalog.d.ts +29 -0
- package/dist/contracts/zero-catalog.js +55 -0
- package/dist/contracts/zero-platform-abilities.generated.d.ts +31 -0
- package/dist/contracts/zero-platform-abilities.generated.js +373 -0
- package/dist/contracts/zero-spacefast.d.ts +444 -0
- package/dist/contracts/zero-spacefast.js +149 -0
- package/dist/contracts/zero-types.d.ts +47 -0
- package/dist/contracts/zero-types.js +263 -0
- package/dist/contracts/zero.d.ts +781 -14
- package/dist/contracts/zero.js +204 -10
- package/dist/dashboard-paths/index.d.ts +2 -2
- package/dist/dashboard-paths/route-reservations.generated.d.ts +2 -2
- package/dist/dashboard-paths/route-reservations.generated.js +5 -0
- package/dist/docs/agent-prose.d.ts +1 -1
- package/dist/docs/agent-prose.js +15 -18
- package/dist/docs/agent-setup.d.ts +1 -1
- package/dist/docs/agent-setup.js +5 -13
- package/dist/docs/catalog.d.ts +64 -28
- package/dist/docs/catalog.js +155 -28
- package/dist/docs/error-docs.d.ts +365 -17
- package/dist/docs/error-docs.js +369 -21
- package/dist/docs/reference-urls.js +1 -1
- package/dist/docs/skills.d.ts +84 -84
- package/dist/docs/skills.js +66 -47
- package/dist/docs/start-prompts.d.ts +14 -0
- package/dist/docs/start-prompts.js +20 -0
- package/dist/utils/account-labels.d.ts +7 -0
- package/dist/utils/account-labels.js +15 -0
- package/dist/utils/auth.d.ts +1 -0
- package/dist/utils/auth.js +1 -0
- package/dist/utils/credential-policy.d.ts +22 -1
- package/dist/utils/credential-policy.js +55 -6
- package/dist/utils/local-space-state.d.ts +7 -0
- package/dist/utils/local-space-state.js +7 -0
- package/dist/utils/logger.d.ts +34 -0
- package/dist/utils/logger.js +144 -0
- package/dist/utils/page-routes.d.ts +9 -0
- package/dist/utils/page-routes.js +82 -0
- package/dist/utils/pages.d.ts +2 -0
- package/dist/utils/pages.js +7 -0
- package/dist/utils/publish-form-data.d.ts +2 -0
- package/dist/utils/publish-form-data.js +2 -0
- package/dist/utils/publish-policy-spacefast.d.ts +13 -0
- package/dist/utils/publish-policy-spacefast.js +117 -0
- package/dist/utils/publish-policy.d.ts +22 -16
- package/dist/utils/publish-policy.fixtures.json +15 -0
- package/dist/utils/publish-policy.js +62 -139
- package/dist/utils/query-client.js +9 -1
- package/dist/utils/runtime-upload.d.ts +4 -0
- package/dist/utils/runtime-upload.js +5 -0
- package/dist/utils/space-config.d.ts +2 -3
- package/dist/utils/space-config.js +1 -1
- package/dist/utils/uploaded-source.d.ts +4 -0
- package/dist/utils/uploaded-source.js +12 -0
- package/dist/visual-review.d.ts +4 -0
- package/dist/visual-review.js +208 -0
- package/dist/vocabulary.d.ts +38 -0
- package/dist/vocabulary.js +55 -0
- package/package.json +7 -2
- package/dist/agents/registry/deeplink-probes.d.ts +0 -23
- package/dist/agents/registry/deeplink-probes.js +0 -18
|
@@ -63,7 +63,6 @@ declare const InternalBuildInputSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
|
63
63
|
ref: z.ZodString;
|
|
64
64
|
commit: z.ZodOptional<z.ZodString>;
|
|
65
65
|
branch: z.ZodOptional<z.ZodString>;
|
|
66
|
-
pullRequestNumber: z.ZodOptional<z.ZodNumber>;
|
|
67
66
|
repository: z.ZodOptional<z.ZodObject<{
|
|
68
67
|
provider: z.ZodString;
|
|
69
68
|
repositoryId: z.ZodNullable<z.ZodString>;
|
|
@@ -96,7 +95,6 @@ export declare const BuildCreateInputSchema: z.ZodDiscriminatedUnion<[z.ZodObjec
|
|
|
96
95
|
ref: z.ZodOptional<z.ZodString>;
|
|
97
96
|
commit: z.ZodOptional<z.ZodString>;
|
|
98
97
|
branch: z.ZodOptional<z.ZodString>;
|
|
99
|
-
pullRequestNumber: z.ZodOptional<z.ZodNumber>;
|
|
100
98
|
}, z.core.$strip>], "kind">;
|
|
101
99
|
declare const buildExecutionLaunchSchema: z.ZodObject<{
|
|
102
100
|
state: z.ZodEnum<{
|
|
@@ -125,6 +123,12 @@ declare const InternalBuildExecutionSchema: z.ZodObject<{
|
|
|
125
123
|
command: "command";
|
|
126
124
|
timeout: "timeout";
|
|
127
125
|
}>>;
|
|
126
|
+
observedCliError: z.ZodOptional<z.ZodObject<{
|
|
127
|
+
code: z.ZodString;
|
|
128
|
+
message: z.ZodString;
|
|
129
|
+
retryable: z.ZodOptional<z.ZodBoolean>;
|
|
130
|
+
recovery: z.ZodOptional<z.ZodString>;
|
|
131
|
+
}, z.core.$strip>>;
|
|
128
132
|
artifactDeadlineAt: z.ZodOptional<z.ZodString>;
|
|
129
133
|
launch: z.ZodOptional<z.ZodObject<{
|
|
130
134
|
state: z.ZodEnum<{
|
|
@@ -253,7 +257,6 @@ export declare const buildCreateRequestSchema: z.ZodObject<{
|
|
|
253
257
|
ref: z.ZodOptional<z.ZodString>;
|
|
254
258
|
commit: z.ZodOptional<z.ZodString>;
|
|
255
259
|
branch: z.ZodOptional<z.ZodString>;
|
|
256
|
-
pullRequestNumber: z.ZodOptional<z.ZodNumber>;
|
|
257
260
|
}, z.core.$strip>], "kind">;
|
|
258
261
|
settings: z.ZodOptional<z.ZodObject<{
|
|
259
262
|
rootDirectory: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
@@ -322,7 +325,6 @@ export declare const spaceBuildCreateRequestSchema: z.ZodDiscriminatedUnion<[z.Z
|
|
|
322
325
|
ref: z.ZodOptional<z.ZodString>;
|
|
323
326
|
commit: z.ZodOptional<z.ZodString>;
|
|
324
327
|
branch: z.ZodOptional<z.ZodString>;
|
|
325
|
-
pullRequestNumber: z.ZodOptional<z.ZodNumber>;
|
|
326
328
|
}, z.core.$strip>], "kind">;
|
|
327
329
|
settings: z.ZodOptional<z.ZodObject<{
|
|
328
330
|
rootDirectory: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
@@ -402,6 +404,15 @@ export declare const buildSourceArchiveUploadSchema: z.ZodObject<{
|
|
|
402
404
|
sha256: z.ZodOptional<z.ZodString>;
|
|
403
405
|
contentType: z.ZodOptional<z.ZodString>;
|
|
404
406
|
}, z.core.$strip>>>;
|
|
407
|
+
bulk: z.ZodOptional<z.ZodObject<{
|
|
408
|
+
kind: z.ZodLiteral<"zip-cas-v1">;
|
|
409
|
+
method: z.ZodLiteral<"PUT">;
|
|
410
|
+
url: z.ZodUnion<[z.ZodString, z.ZodString]>;
|
|
411
|
+
headers: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
412
|
+
maxCompressedBytes: z.ZodNumber;
|
|
413
|
+
maxExpandedBytes: z.ZodNumber;
|
|
414
|
+
maxBlobs: z.ZodNumber;
|
|
415
|
+
}, z.core.$strip>>;
|
|
405
416
|
links: z.ZodObject<{
|
|
406
417
|
refresh: z.ZodString;
|
|
407
418
|
resume: z.ZodOptional<z.ZodString>;
|
|
@@ -563,6 +574,15 @@ export declare const buildCreateResponseSchema: z.ZodObject<{
|
|
|
563
574
|
sha256: z.ZodOptional<z.ZodString>;
|
|
564
575
|
contentType: z.ZodOptional<z.ZodString>;
|
|
565
576
|
}, z.core.$strip>>>;
|
|
577
|
+
bulk: z.ZodOptional<z.ZodObject<{
|
|
578
|
+
kind: z.ZodLiteral<"zip-cas-v1">;
|
|
579
|
+
method: z.ZodLiteral<"PUT">;
|
|
580
|
+
url: z.ZodUnion<[z.ZodString, z.ZodString]>;
|
|
581
|
+
headers: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
582
|
+
maxCompressedBytes: z.ZodNumber;
|
|
583
|
+
maxExpandedBytes: z.ZodNumber;
|
|
584
|
+
maxBlobs: z.ZodNumber;
|
|
585
|
+
}, z.core.$strip>>;
|
|
566
586
|
links: z.ZodObject<{
|
|
567
587
|
refresh: z.ZodString;
|
|
568
588
|
resume: z.ZodOptional<z.ZodString>;
|
package/dist/contracts/builds.js
CHANGED
|
@@ -103,7 +103,6 @@ const InternalBuildInputSchema = z
|
|
|
103
103
|
ref: z.string().describe("Branch, tag, or ref to build."),
|
|
104
104
|
commit: z.string().optional().describe("Exact commit built, once resolved."),
|
|
105
105
|
branch: z.string().optional().describe("Branch name when the ref is a commit SHA."),
|
|
106
|
-
pullRequestNumber: z.number().int().positive().optional(),
|
|
107
106
|
repository: z
|
|
108
107
|
.object({
|
|
109
108
|
provider: z.string(),
|
|
@@ -161,7 +160,6 @@ export const BuildCreateInputSchema = z
|
|
|
161
160
|
ref: z.string().optional().describe("Branch, tag, or ref to build."),
|
|
162
161
|
commit: z.string().optional().describe("Exact commit built, once resolved."),
|
|
163
162
|
branch: z.string().optional().describe("Branch name when the ref is a commit SHA."),
|
|
164
|
-
pullRequestNumber: z.number().int().positive().optional(),
|
|
165
163
|
}),
|
|
166
164
|
])
|
|
167
165
|
.describe("What a new build should run against.");
|
|
@@ -184,6 +182,12 @@ const buildExecutionSupervisionSchema = z.object({
|
|
|
184
182
|
owner: z.string().min(1),
|
|
185
183
|
leaseExpiresAt: z.string().datetime(),
|
|
186
184
|
});
|
|
185
|
+
const buildExecutionObservedCliErrorSchema = z.object({
|
|
186
|
+
code: z.string().min(1).max(128),
|
|
187
|
+
message: z.string().min(1).max(8_192),
|
|
188
|
+
retryable: z.boolean().optional(),
|
|
189
|
+
recovery: z.string().min(1).max(8_192).optional(),
|
|
190
|
+
});
|
|
187
191
|
const InternalBuildExecutionSchema = z
|
|
188
192
|
.object({
|
|
189
193
|
runner: z.string().nullable().default(null),
|
|
@@ -193,6 +197,9 @@ const InternalBuildExecutionSchema = z
|
|
|
193
197
|
logOffset: z.number().int().nonnegative().optional(),
|
|
194
198
|
exitCode: z.number().int().min(0).max(255).optional(),
|
|
195
199
|
terminationReason: z.enum(["command", "timeout"]).optional(),
|
|
200
|
+
observedCliError: buildExecutionObservedCliErrorSchema
|
|
201
|
+
.optional()
|
|
202
|
+
.describe("The observer stores the latest structured CLI error with the remote log cursor."),
|
|
196
203
|
artifactDeadlineAt: z
|
|
197
204
|
.string()
|
|
198
205
|
.datetime()
|
|
@@ -240,12 +247,17 @@ export const buildCreateRequestSchema = z
|
|
|
240
247
|
.object({
|
|
241
248
|
input: BuildCreateInputSchema,
|
|
242
249
|
settings: BuildSettingsOverrideSchema.optional().describe("Per-run settings overrides, persisted as `settingsSnapshot` after resolution."),
|
|
243
|
-
target: BuildTargetSchema.partial()
|
|
250
|
+
target: BuildTargetSchema.partial()
|
|
251
|
+
.optional()
|
|
252
|
+
.describe("Omit to use the Space's channel mapping for the repository ref. Send channel: null or preview: true to prevent automatic promotion. An empty target object also prevents promotion."),
|
|
244
253
|
diagnostics: z
|
|
245
254
|
.array(baseDiagnosticSchema)
|
|
246
255
|
.optional()
|
|
247
256
|
.describe("Diagnostics already known before the build is queued."),
|
|
248
|
-
wait: z
|
|
257
|
+
wait: z
|
|
258
|
+
.boolean()
|
|
259
|
+
.default(false)
|
|
260
|
+
.describe("Wait for the build to finish before this request returns. Agents must keep this false and poll the build status. Synchronous clients can set it to true."),
|
|
249
261
|
})
|
|
250
262
|
// Strict so a typo is a validation failure instead of a silently dropped
|
|
251
263
|
// field, and so a body that names a managed `source` can never be read as a
|
|
@@ -1,4 +1,16 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
+
export declare const channelPromotionPolicySchema: z.ZodEnum<{
|
|
3
|
+
auto: "auto";
|
|
4
|
+
manual: "manual";
|
|
5
|
+
}>;
|
|
6
|
+
export type ChannelPromotionPolicy = z.infer<typeof channelPromotionPolicySchema>;
|
|
7
|
+
export declare const channelUpdateSchema: z.ZodObject<{
|
|
8
|
+
promotion: z.ZodEnum<{
|
|
9
|
+
auto: "auto";
|
|
10
|
+
manual: "manual";
|
|
11
|
+
}>;
|
|
12
|
+
}, z.core.$strip>;
|
|
13
|
+
export type ChannelUpdateInput = z.infer<typeof channelUpdateSchema>;
|
|
2
14
|
export declare const channelChangeKindSchema: z.ZodEnum<{
|
|
3
15
|
publish: "publish";
|
|
4
16
|
rollback: "rollback";
|
|
@@ -19,6 +31,10 @@ export declare const channelListItemSchema: z.ZodObject<{
|
|
|
19
31
|
currentVersionId: z.ZodNullable<z.ZodString>;
|
|
20
32
|
currentDeploymentUrl: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
21
33
|
previousVersionId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
34
|
+
promotion: z.ZodEnum<{
|
|
35
|
+
auto: "auto";
|
|
36
|
+
manual: "manual";
|
|
37
|
+
}>;
|
|
22
38
|
updatedAt: z.ZodString;
|
|
23
39
|
lastChange: z.ZodOptional<z.ZodNullable<z.ZodObject<{
|
|
24
40
|
kind: z.ZodNullable<z.ZodEnum<{
|
|
@@ -37,6 +53,7 @@ export declare const channelHistoryEntrySchema: z.ZodObject<{
|
|
|
37
53
|
actorType: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
|
|
38
54
|
system: "system";
|
|
39
55
|
user: "user";
|
|
56
|
+
visitor: "visitor";
|
|
40
57
|
api_key: "api_key";
|
|
41
58
|
partner_token: "partner_token";
|
|
42
59
|
oauth_client: "oauth_client";
|
|
@@ -57,6 +74,10 @@ export declare const channelListResponseSchema: z.ZodObject<{
|
|
|
57
74
|
currentVersionId: z.ZodNullable<z.ZodString>;
|
|
58
75
|
currentDeploymentUrl: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
59
76
|
previousVersionId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
77
|
+
promotion: z.ZodEnum<{
|
|
78
|
+
auto: "auto";
|
|
79
|
+
manual: "manual";
|
|
80
|
+
}>;
|
|
60
81
|
updatedAt: z.ZodString;
|
|
61
82
|
lastChange: z.ZodOptional<z.ZodNullable<z.ZodObject<{
|
|
62
83
|
kind: z.ZodNullable<z.ZodEnum<{
|
|
@@ -68,6 +89,27 @@ export declare const channelListResponseSchema: z.ZodObject<{
|
|
|
68
89
|
}, z.core.$strip>>>;
|
|
69
90
|
}, z.core.$strip>>;
|
|
70
91
|
}, z.core.$strip>;
|
|
92
|
+
export declare const channelUpdateResponseSchema: z.ZodObject<{
|
|
93
|
+
data: z.ZodObject<{
|
|
94
|
+
name: z.ZodString;
|
|
95
|
+
currentVersionId: z.ZodNullable<z.ZodString>;
|
|
96
|
+
currentDeploymentUrl: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
97
|
+
previousVersionId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
98
|
+
promotion: z.ZodEnum<{
|
|
99
|
+
auto: "auto";
|
|
100
|
+
manual: "manual";
|
|
101
|
+
}>;
|
|
102
|
+
updatedAt: z.ZodString;
|
|
103
|
+
lastChange: z.ZodOptional<z.ZodNullable<z.ZodObject<{
|
|
104
|
+
kind: z.ZodNullable<z.ZodEnum<{
|
|
105
|
+
publish: "publish";
|
|
106
|
+
rollback: "rollback";
|
|
107
|
+
promote: "promote";
|
|
108
|
+
}>>;
|
|
109
|
+
at: z.ZodString;
|
|
110
|
+
}, z.core.$strip>>>;
|
|
111
|
+
}, z.core.$strip>;
|
|
112
|
+
}, z.core.$strip>;
|
|
71
113
|
export declare const channelHistoryResponseSchema: z.ZodObject<{
|
|
72
114
|
data: z.ZodArray<z.ZodObject<{
|
|
73
115
|
versionId: z.ZodString;
|
|
@@ -76,6 +118,7 @@ export declare const channelHistoryResponseSchema: z.ZodObject<{
|
|
|
76
118
|
actorType: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
|
|
77
119
|
system: "system";
|
|
78
120
|
user: "user";
|
|
121
|
+
visitor: "visitor";
|
|
79
122
|
api_key: "api_key";
|
|
80
123
|
partner_token: "partner_token";
|
|
81
124
|
oauth_client: "oauth_client";
|
|
@@ -1,7 +1,17 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
|
|
3
|
-
//
|
|
4
|
-
//
|
|
2
|
+
import { activityActorTypeSchema } from "./activity.js";
|
|
3
|
+
// Channels surface (the platform spec "Channels"): a projection over the
|
|
4
|
+
// `channels` table and the `channel.promoted` activity log. The promotion
|
|
5
|
+
// policy is the one write; pointer moves stay owned by the publish/version
|
|
6
|
+
// lifecycle.
|
|
7
|
+
// Publication policy for a channel: "auto" lets implicit paths (publish
|
|
8
|
+
// finalize, build auto-promote) move the pointer; "manual" holds every
|
|
9
|
+
// implicit promotion — only the explicit promote endpoint flips. The
|
|
10
|
+
// trigger side (what builds) lives on the repository connection.
|
|
11
|
+
export const channelPromotionPolicySchema = z.enum(["auto", "manual"]);
|
|
12
|
+
export const channelUpdateSchema = z.object({
|
|
13
|
+
promotion: channelPromotionPolicySchema.describe("Whether implicit promotion paths may move this channel's pointer."),
|
|
14
|
+
});
|
|
5
15
|
// How a channel pointer moved: a fresh publish going live, a forward promote,
|
|
6
16
|
// or a rollback to an older version. Recorded on the `channel.promoted` event
|
|
7
17
|
// at write time; null on events that predate kind recording.
|
|
@@ -30,7 +40,11 @@ export const channelListItemSchema = z.object({
|
|
|
30
40
|
.nullable()
|
|
31
41
|
.optional()
|
|
32
42
|
.describe("Last version this channel served before the current pointer (rollback target)."),
|
|
33
|
-
|
|
43
|
+
promotion: channelPromotionPolicySchema.describe("auto: publishes and green builds go live; manual: only explicit promotion moves the pointer."),
|
|
44
|
+
updatedAt: z
|
|
45
|
+
.string()
|
|
46
|
+
.datetime()
|
|
47
|
+
.describe("Instant this channel last changed: a pointer move or a promotion policy change. `lastChange.at` is the pointer-move instant alone."),
|
|
34
48
|
lastChange: channelLastChangeSchema
|
|
35
49
|
.nullable()
|
|
36
50
|
.optional()
|
|
@@ -46,8 +60,7 @@ export const channelHistoryEntrySchema = z.object({
|
|
|
46
60
|
.nullable()
|
|
47
61
|
.optional()
|
|
48
62
|
.describe("Version the channel served immediately before this promotion."),
|
|
49
|
-
actorType:
|
|
50
|
-
.enum(["user", "api_key", "partner_token", "oauth_client", "anonymous_claim", "system"])
|
|
63
|
+
actorType: activityActorTypeSchema
|
|
51
64
|
.nullable()
|
|
52
65
|
.optional()
|
|
53
66
|
.describe("Kind of actor that performed the promotion."),
|
|
@@ -61,6 +74,9 @@ export const channelHistoryEntrySchema = z.object({
|
|
|
61
74
|
export const channelListResponseSchema = z.object({
|
|
62
75
|
data: z.array(channelListItemSchema),
|
|
63
76
|
});
|
|
77
|
+
export const channelUpdateResponseSchema = z.object({
|
|
78
|
+
data: channelListItemSchema,
|
|
79
|
+
});
|
|
64
80
|
export const channelHistoryResponseSchema = z.object({
|
|
65
81
|
data: z.array(channelHistoryEntrySchema),
|
|
66
82
|
});
|
|
@@ -300,6 +300,55 @@ export declare const commentAuthorSchema: z.ZodObject<{
|
|
|
300
300
|
color: z.ZodNullable<z.ZodString>;
|
|
301
301
|
}, z.core.$strip>;
|
|
302
302
|
export declare const commentTargetSchema: z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
303
|
+
/**
|
|
304
|
+
* Where a comment's anchor was captured. Mirrors `AnchorSource` in
|
|
305
|
+
* `@spacefast/collab-sdk` — snake_case because this is the stored shape, not a
|
|
306
|
+
* platform resource.
|
|
307
|
+
*/
|
|
308
|
+
export declare const commentAnchorSourceSchema: z.ZodObject<{
|
|
309
|
+
space_id: z.ZodString;
|
|
310
|
+
version_id: z.ZodNullable<z.ZodString>;
|
|
311
|
+
canonical_path: z.ZodString;
|
|
312
|
+
url: z.ZodString;
|
|
313
|
+
}, z.core.$strip>;
|
|
314
|
+
/**
|
|
315
|
+
* A comment anchored to a file, rather than to something a page rendered.
|
|
316
|
+
*
|
|
317
|
+
* The wire `target` stays free-form: Cast stores whatever the producer sent and
|
|
318
|
+
* the API passes it through unread. THIS is what producers build and consumers
|
|
319
|
+
* parse, so "is this thread about a file, and which lines" is one answer with
|
|
320
|
+
* one shape instead of a guess per reader.
|
|
321
|
+
*
|
|
322
|
+
* Lines are inclusive and 1-based, the coordinates a diff, a stack trace and a
|
|
323
|
+
* `path:line` link already use.
|
|
324
|
+
*/
|
|
325
|
+
export declare const commentFileAnchorSchema: z.ZodObject<{
|
|
326
|
+
v: z.ZodLiteral<2>;
|
|
327
|
+
resolver_version: z.ZodNumber;
|
|
328
|
+
type: z.ZodLiteral<"file">;
|
|
329
|
+
source: z.ZodObject<{
|
|
330
|
+
space_id: z.ZodString;
|
|
331
|
+
version_id: z.ZodNullable<z.ZodString>;
|
|
332
|
+
canonical_path: z.ZodString;
|
|
333
|
+
url: z.ZodString;
|
|
334
|
+
}, z.core.$strip>;
|
|
335
|
+
file: z.ZodObject<{
|
|
336
|
+
path: z.ZodString;
|
|
337
|
+
lines: z.ZodOptional<z.ZodObject<{
|
|
338
|
+
start: z.ZodNumber;
|
|
339
|
+
end: z.ZodNumber;
|
|
340
|
+
}, z.core.$strip>>;
|
|
341
|
+
}, z.core.$strip>;
|
|
342
|
+
}, z.core.$strip>;
|
|
343
|
+
export type CommentFileAnchor = z.infer<typeof commentFileAnchorSchema>;
|
|
344
|
+
/**
|
|
345
|
+
* The file a target names, or null when it is not a file anchor.
|
|
346
|
+
*
|
|
347
|
+
* Total on purpose: every reader of `target` faces free-form JSON, and this is
|
|
348
|
+
* the one place that decides whether it is a file anchor. A malformed one is
|
|
349
|
+
* "not a file anchor", never a throw.
|
|
350
|
+
*/
|
|
351
|
+
export declare function commentFileAnchorPath(target: unknown): string | null;
|
|
303
352
|
/**
|
|
304
353
|
* How many attachments one thread or reply may carry. Mirrors Cast's
|
|
305
354
|
* `@attachment_limit`: Cast enforces it on write, this is what REST readers get.
|
|
@@ -348,6 +348,58 @@ export const commentAuthorSchema = z.object({
|
|
|
348
348
|
color: z.string().max(64).nullable(),
|
|
349
349
|
});
|
|
350
350
|
export const commentTargetSchema = z.record(z.string(), z.unknown()).nullable();
|
|
351
|
+
/**
|
|
352
|
+
* Where a comment's anchor was captured. Mirrors `AnchorSource` in
|
|
353
|
+
* `@spacefast/collab-sdk` — snake_case because this is the stored shape, not a
|
|
354
|
+
* platform resource.
|
|
355
|
+
*/
|
|
356
|
+
export const commentAnchorSourceSchema = z.object({
|
|
357
|
+
space_id: z.string().min(1),
|
|
358
|
+
version_id: z.string().min(1).nullable(),
|
|
359
|
+
canonical_path: z.string().max(COMMENT_PAGE_PATH_MAX_LENGTH),
|
|
360
|
+
url: z.string().max(2_048),
|
|
361
|
+
});
|
|
362
|
+
/**
|
|
363
|
+
* A comment anchored to a file, rather than to something a page rendered.
|
|
364
|
+
*
|
|
365
|
+
* The wire `target` stays free-form: Cast stores whatever the producer sent and
|
|
366
|
+
* the API passes it through unread. THIS is what producers build and consumers
|
|
367
|
+
* parse, so "is this thread about a file, and which lines" is one answer with
|
|
368
|
+
* one shape instead of a guess per reader.
|
|
369
|
+
*
|
|
370
|
+
* Lines are inclusive and 1-based, the coordinates a diff, a stack trace and a
|
|
371
|
+
* `path:line` link already use.
|
|
372
|
+
*/
|
|
373
|
+
export const commentFileAnchorSchema = z.object({
|
|
374
|
+
v: z.literal(2),
|
|
375
|
+
resolver_version: z.number().int().positive(),
|
|
376
|
+
type: z.literal("file"),
|
|
377
|
+
source: commentAnchorSourceSchema,
|
|
378
|
+
file: z.object({
|
|
379
|
+
path: z.string().min(1).max(COMMENT_PAGE_PATH_MAX_LENGTH),
|
|
380
|
+
lines: z
|
|
381
|
+
.object({
|
|
382
|
+
start: z.number().int().min(1),
|
|
383
|
+
end: z.number().int().min(1),
|
|
384
|
+
})
|
|
385
|
+
.refine((lines) => lines.end >= lines.start, {
|
|
386
|
+
message: "Line ranges must end at or after they start.",
|
|
387
|
+
})
|
|
388
|
+
.optional(),
|
|
389
|
+
}),
|
|
390
|
+
});
|
|
391
|
+
/**
|
|
392
|
+
* The file a target names, or null when it is not a file anchor.
|
|
393
|
+
*
|
|
394
|
+
* Total on purpose: every reader of `target` faces free-form JSON, and this is
|
|
395
|
+
* the one place that decides whether it is a file anchor. A malformed one is
|
|
396
|
+
* "not a file anchor", never a throw.
|
|
397
|
+
*/
|
|
398
|
+
// oxlint-disable-next-line anti-slop/no-unknown-parameters -- the wire target is deliberately free-form; deciding what it is is this function's whole job.
|
|
399
|
+
export function commentFileAnchorPath(target) {
|
|
400
|
+
const parsed = commentFileAnchorSchema.safeParse(target);
|
|
401
|
+
return parsed.success ? parsed.data.file.path : null;
|
|
402
|
+
}
|
|
351
403
|
/**
|
|
352
404
|
* How many attachments one thread or reply may carry. Mirrors Cast's
|
|
353
405
|
* `@attachment_limit`: Cast enforces it on write, this is what REST readers get.
|
|
@@ -454,9 +506,16 @@ export const commentListQuerySchema = cursorListQuerySchema.extend({
|
|
|
454
506
|
.describe("Return only threads that have unread comments for the caller."),
|
|
455
507
|
});
|
|
456
508
|
export const commentCreateSchema = z.object({
|
|
457
|
-
pagePath: z
|
|
509
|
+
pagePath: z
|
|
510
|
+
.string()
|
|
511
|
+
.min(1)
|
|
512
|
+
.max(COMMENT_PAGE_PATH_MAX_LENGTH)
|
|
513
|
+
.default("/")
|
|
514
|
+
.describe("Page the thread is anchored to. Ignored when `target` is a file anchor: that anchor's `file.path` is the page path, so the thread is always filed under the file it is about."),
|
|
458
515
|
body: z.string().min(1).max(16_000),
|
|
459
|
-
target: commentTargetSchema
|
|
516
|
+
target: commentTargetSchema
|
|
517
|
+
.optional()
|
|
518
|
+
.describe("Where in the page or file this thread points. Stored and returned unread, so producers and consumers agree on its shape between themselves; a file anchor is the one shape the API itself recognizes."),
|
|
460
519
|
idempotencyKey: z.string().min(1).max(320).optional(),
|
|
461
520
|
});
|
|
462
521
|
export const commentReplySchema = z.object({
|
|
@@ -32,13 +32,16 @@ export declare const PLAN_CATALOG_CAPS: {
|
|
|
32
32
|
};
|
|
33
33
|
export declare const QUOTA_ENFORCEMENT_POLICIES: readonly ["warn", "block"];
|
|
34
34
|
export declare const quotaEnforcementPolicySchema: z.ZodEnum<{
|
|
35
|
-
warn: "warn";
|
|
36
35
|
block: "block";
|
|
36
|
+
warn: "warn";
|
|
37
37
|
}>;
|
|
38
38
|
export type QuotaEnforcementPolicy = z.infer<typeof quotaEnforcementPolicySchema>;
|
|
39
39
|
export declare const planCatalogEntrySchema: z.ZodObject<{
|
|
40
40
|
features: z.ZodArray<z.ZodEnum<{
|
|
41
|
+
connectors: "connectors";
|
|
41
42
|
zero: "zero";
|
|
43
|
+
tags: "tags";
|
|
44
|
+
functions: "functions";
|
|
42
45
|
"plans.paid.available": "plans.paid.available";
|
|
43
46
|
"anonymous.publishing": "anonymous.publishing";
|
|
44
47
|
"beta.enrollment_gate": "beta.enrollment_gate";
|
|
@@ -51,11 +54,10 @@ export declare const planCatalogEntrySchema: z.ZodObject<{
|
|
|
51
54
|
"collab.notices": "collab.notices";
|
|
52
55
|
"collab.comments": "collab.comments";
|
|
53
56
|
"content.managed": "content.managed";
|
|
54
|
-
"sites.dedicated_runtime": "sites.dedicated_runtime";
|
|
55
57
|
"collab.drawing": "collab.drawing";
|
|
56
|
-
|
|
57
|
-
functions: "functions";
|
|
58
|
+
"sites.jetpack": "sites.jetpack";
|
|
58
59
|
"spaces.slug_rename": "spaces.slug_rename";
|
|
60
|
+
"content.users": "content.users";
|
|
59
61
|
"pages.templates": "pages.templates";
|
|
60
62
|
"branding.hide": "branding.hide";
|
|
61
63
|
}>>;
|
|
@@ -66,14 +68,17 @@ export declare const planCatalogEntrySchema: z.ZodObject<{
|
|
|
66
68
|
customDomains: z.ZodOptional<z.ZodNumber>;
|
|
67
69
|
}, z.core.$strict>;
|
|
68
70
|
quotaPolicy: z.ZodOptional<z.ZodEnum<{
|
|
69
|
-
warn: "warn";
|
|
70
71
|
block: "block";
|
|
72
|
+
warn: "warn";
|
|
71
73
|
}>>;
|
|
72
74
|
}, z.core.$strict>;
|
|
73
75
|
export type PlanCatalogEntry = z.infer<typeof planCatalogEntrySchema>;
|
|
74
76
|
export declare const planCatalogSchema: z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
75
77
|
features: z.ZodArray<z.ZodEnum<{
|
|
78
|
+
connectors: "connectors";
|
|
76
79
|
zero: "zero";
|
|
80
|
+
tags: "tags";
|
|
81
|
+
functions: "functions";
|
|
77
82
|
"plans.paid.available": "plans.paid.available";
|
|
78
83
|
"anonymous.publishing": "anonymous.publishing";
|
|
79
84
|
"beta.enrollment_gate": "beta.enrollment_gate";
|
|
@@ -86,11 +91,10 @@ export declare const planCatalogSchema: z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
|
86
91
|
"collab.notices": "collab.notices";
|
|
87
92
|
"collab.comments": "collab.comments";
|
|
88
93
|
"content.managed": "content.managed";
|
|
89
|
-
"sites.dedicated_runtime": "sites.dedicated_runtime";
|
|
90
94
|
"collab.drawing": "collab.drawing";
|
|
91
|
-
|
|
92
|
-
functions: "functions";
|
|
95
|
+
"sites.jetpack": "sites.jetpack";
|
|
93
96
|
"spaces.slug_rename": "spaces.slug_rename";
|
|
97
|
+
"content.users": "content.users";
|
|
94
98
|
"pages.templates": "pages.templates";
|
|
95
99
|
"branding.hide": "branding.hide";
|
|
96
100
|
}>>;
|
|
@@ -101,8 +105,8 @@ export declare const planCatalogSchema: z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
|
101
105
|
customDomains: z.ZodOptional<z.ZodNumber>;
|
|
102
106
|
}, z.core.$strict>;
|
|
103
107
|
quotaPolicy: z.ZodOptional<z.ZodEnum<{
|
|
104
|
-
warn: "warn";
|
|
105
108
|
block: "block";
|
|
109
|
+
warn: "warn";
|
|
106
110
|
}>>;
|
|
107
111
|
}, z.core.$strict>>;
|
|
108
112
|
export type PlanCatalog = z.infer<typeof planCatalogSchema>;
|
|
@@ -110,7 +114,10 @@ export declare const defaultPlanNameSchema: z.ZodString;
|
|
|
110
114
|
export declare const materializedPlanCatalogSchema: z.ZodObject<{
|
|
111
115
|
plans: z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
112
116
|
features: z.ZodArray<z.ZodEnum<{
|
|
117
|
+
connectors: "connectors";
|
|
113
118
|
zero: "zero";
|
|
119
|
+
tags: "tags";
|
|
120
|
+
functions: "functions";
|
|
114
121
|
"plans.paid.available": "plans.paid.available";
|
|
115
122
|
"anonymous.publishing": "anonymous.publishing";
|
|
116
123
|
"beta.enrollment_gate": "beta.enrollment_gate";
|
|
@@ -123,11 +130,10 @@ export declare const materializedPlanCatalogSchema: z.ZodObject<{
|
|
|
123
130
|
"collab.notices": "collab.notices";
|
|
124
131
|
"collab.comments": "collab.comments";
|
|
125
132
|
"content.managed": "content.managed";
|
|
126
|
-
"sites.dedicated_runtime": "sites.dedicated_runtime";
|
|
127
133
|
"collab.drawing": "collab.drawing";
|
|
128
|
-
|
|
129
|
-
functions: "functions";
|
|
134
|
+
"sites.jetpack": "sites.jetpack";
|
|
130
135
|
"spaces.slug_rename": "spaces.slug_rename";
|
|
136
|
+
"content.users": "content.users";
|
|
131
137
|
"pages.templates": "pages.templates";
|
|
132
138
|
"branding.hide": "branding.hide";
|
|
133
139
|
}>>;
|
|
@@ -138,8 +144,8 @@ export declare const materializedPlanCatalogSchema: z.ZodObject<{
|
|
|
138
144
|
customDomains: z.ZodOptional<z.ZodNumber>;
|
|
139
145
|
}, z.core.$strict>;
|
|
140
146
|
quotaPolicy: z.ZodOptional<z.ZodEnum<{
|
|
141
|
-
warn: "warn";
|
|
142
147
|
block: "block";
|
|
148
|
+
warn: "warn";
|
|
143
149
|
}>>;
|
|
144
150
|
}, z.core.$strict>>;
|
|
145
151
|
defaultPlan: z.ZodNullable<z.ZodString>;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
/**
|
|
3
|
+
* ACCESS narrowing for connectors, stored on the credential (api key row /
|
|
4
|
+
* auth grant). Absent (null) means the default derivation applies: a credential
|
|
5
|
+
* holding `connectors:*` scopes may use the team's shared connections plus —
|
|
6
|
+
* when a human subject is attached — that member's own personal connections.
|
|
7
|
+
*
|
|
8
|
+
* `explicit` narrows a credential to specific connections; it is how a
|
|
9
|
+
* third-party OAuth client or a narrow agent token is granted "this Linear and
|
|
10
|
+
* nothing else". Enforcement happens at credential resolution inside the
|
|
11
|
+
* connectors module, never in route handlers.
|
|
12
|
+
*/
|
|
13
|
+
export declare const ConnectorAccessScopeSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
14
|
+
kind: z.ZodLiteral<"all">;
|
|
15
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
16
|
+
kind: z.ZodLiteral<"explicit">;
|
|
17
|
+
connectionIds: z.ZodArray<z.ZodString>;
|
|
18
|
+
}, z.core.$strip>], "kind">;
|
|
19
|
+
export type ConnectorAccessScope = z.infer<typeof ConnectorAccessScopeSchema>;
|
|
20
|
+
/** PATCH body fragment for credentials that can carry connector access. */
|
|
21
|
+
export declare const connectorAccessPatchSchema: z.ZodObject<{
|
|
22
|
+
connectorAccess: z.ZodOptional<z.ZodNullable<z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
23
|
+
kind: z.ZodLiteral<"all">;
|
|
24
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
25
|
+
kind: z.ZodLiteral<"explicit">;
|
|
26
|
+
connectionIds: z.ZodArray<z.ZodString>;
|
|
27
|
+
}, z.core.$strip>], "kind">>>;
|
|
28
|
+
}, z.core.$strip>;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
/**
|
|
3
|
+
* ACCESS narrowing for connectors, stored on the credential (api key row /
|
|
4
|
+
* auth grant). Absent (null) means the default derivation applies: a credential
|
|
5
|
+
* holding `connectors:*` scopes may use the team's shared connections plus —
|
|
6
|
+
* when a human subject is attached — that member's own personal connections.
|
|
7
|
+
*
|
|
8
|
+
* `explicit` narrows a credential to specific connections; it is how a
|
|
9
|
+
* third-party OAuth client or a narrow agent token is granted "this Linear and
|
|
10
|
+
* nothing else". Enforcement happens at credential resolution inside the
|
|
11
|
+
* connectors module, never in route handlers.
|
|
12
|
+
*/
|
|
13
|
+
export const ConnectorAccessScopeSchema = z.discriminatedUnion("kind", [
|
|
14
|
+
z
|
|
15
|
+
.object({ kind: z.literal("all") })
|
|
16
|
+
.describe("Team connections plus the caller's own personal connections."),
|
|
17
|
+
z.object({
|
|
18
|
+
kind: z.literal("explicit"),
|
|
19
|
+
connectionIds: z
|
|
20
|
+
.array(z.string())
|
|
21
|
+
.min(1)
|
|
22
|
+
.max(200)
|
|
23
|
+
.describe("Connection ids (`cxn_`) this credential may use. Nothing else resolves."),
|
|
24
|
+
}),
|
|
25
|
+
]);
|
|
26
|
+
/** PATCH body fragment for credentials that can carry connector access. */
|
|
27
|
+
export const connectorAccessPatchSchema = z.object({
|
|
28
|
+
connectorAccess: ConnectorAccessScopeSchema.nullable()
|
|
29
|
+
.optional()
|
|
30
|
+
.describe("Connector ACCESS narrowing. Null restores the default derivation."),
|
|
31
|
+
});
|