@octonodes/sdk 0.2.7 → 0.2.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/README.md +15 -0
  2. package/dist/gen/index.d.ts +2 -2
  3. package/dist/gen/index.d.ts.map +1 -1
  4. package/dist/gen/index.js +10 -3
  5. package/dist/gen/index.js.map +1 -1
  6. package/dist/gen/sdk.gen.d.ts +126 -82
  7. package/dist/gen/sdk.gen.d.ts.map +1 -1
  8. package/dist/gen/sdk.gen.js +252 -151
  9. package/dist/gen/sdk.gen.js.map +1 -1
  10. package/dist/gen/types.gen.d.ts +445 -0
  11. package/dist/gen/types.gen.d.ts.map +1 -1
  12. package/dist/plugins/schema/app.d.ts +425 -0
  13. package/dist/plugins/schema/app.d.ts.map +1 -0
  14. package/dist/plugins/schema/app.js +136 -0
  15. package/dist/plugins/schema/app.js.map +1 -0
  16. package/dist/plugins/schema/plugin/execution.d.ts +424 -15
  17. package/dist/plugins/schema/plugin/execution.d.ts.map +1 -1
  18. package/dist/plugins/schema/plugin/plugin.d.ts +345 -6
  19. package/dist/plugins/schema/plugin/plugin.d.ts.map +1 -1
  20. package/dist/plugins/schema/plugin/plugin.js +14 -0
  21. package/dist/plugins/schema/plugin/plugin.js.map +1 -1
  22. package/dist/plugins/schema/plugin/publishing.d.ts +59 -59
  23. package/dist/plugins/schema/plugin-publishing.d.ts +59 -59
  24. package/dist/plugins/schema/plugin-sdk/index.d.ts +1 -0
  25. package/dist/plugins/schema/plugin-sdk/index.d.ts.map +1 -1
  26. package/dist/plugins/schema/plugin-sdk/index.js +1 -0
  27. package/dist/plugins/schema/plugin-sdk/index.js.map +1 -1
  28. package/dist/plugins/schema/plugin.d.ts +6 -6
  29. package/dist/plugins/sdk/plugins/index.d.ts +1 -0
  30. package/dist/plugins/sdk/plugins/index.d.ts.map +1 -1
  31. package/dist/plugins/sdk/plugins/index.js +17 -11
  32. package/dist/plugins/sdk/plugins/index.js.map +1 -1
  33. package/package.json +1 -1
@@ -0,0 +1,425 @@
1
+ import { z } from "zod";
2
+ export declare const AppAction: z.ZodEnum<["projects:read", "data:read", "data:write", "workflows:run"]>;
3
+ export type AppAction = z.infer<typeof AppAction>;
4
+ export declare const SelfHostedAppExtension: z.ZodObject<{
5
+ id: z.ZodString;
6
+ target: z.ZodEnum<["app.page", "workspace.block"]>;
7
+ url: z.ZodEffects<z.ZodString, string, string>;
8
+ sha256: z.ZodString;
9
+ }, "strict", z.ZodTypeAny, {
10
+ url: string;
11
+ id: string;
12
+ target: "app.page" | "workspace.block";
13
+ sha256: string;
14
+ }, {
15
+ url: string;
16
+ id: string;
17
+ target: "app.page" | "workspace.block";
18
+ sha256: string;
19
+ }>;
20
+ export type SelfHostedAppExtension = z.infer<typeof SelfHostedAppExtension>;
21
+ /** Legacy releases retain their original validation and serialized defaults. */
22
+ export declare const SelfHostedApp: z.ZodEffects<z.ZodObject<{
23
+ apiVersion: z.ZodLiteral<"1">;
24
+ hosting: z.ZodLiteral<"self-hosted">;
25
+ applicationUrl: z.ZodEffects<z.ZodString, string, string>;
26
+ iconUrl: z.ZodOptional<z.ZodEffects<z.ZodString, string, string>>;
27
+ privacyUrl: z.ZodOptional<z.ZodEffects<z.ZodString, string, string>>;
28
+ supportUrl: z.ZodOptional<z.ZodEffects<z.ZodString, string, string>>;
29
+ redirectUrls: z.ZodArray<z.ZodEffects<z.ZodString, string, string>, "many">;
30
+ webhookUrl: z.ZodOptional<z.ZodEffects<z.ZodString, string, string>>;
31
+ requestedActions: z.ZodEffects<z.ZodDefault<z.ZodArray<z.ZodEnum<["projects:read", "data:read", "data:write", "workflows:run"]>, "many">>, ("projects:read" | "data:read" | "data:write" | "workflows:run")[], ("projects:read" | "data:read" | "data:write" | "workflows:run")[] | undefined>;
32
+ extensions: z.ZodDefault<z.ZodArray<z.ZodObject<{
33
+ id: z.ZodString;
34
+ target: z.ZodEnum<["app.page", "workspace.block"]>;
35
+ url: z.ZodEffects<z.ZodString, string, string>;
36
+ sha256: z.ZodString;
37
+ }, "strict", z.ZodTypeAny, {
38
+ url: string;
39
+ id: string;
40
+ target: "app.page" | "workspace.block";
41
+ sha256: string;
42
+ }, {
43
+ url: string;
44
+ id: string;
45
+ target: "app.page" | "workspace.block";
46
+ sha256: string;
47
+ }>, "many">>;
48
+ }, "strict", z.ZodTypeAny, {
49
+ apiVersion: "1";
50
+ hosting: "self-hosted";
51
+ applicationUrl: string;
52
+ redirectUrls: string[];
53
+ requestedActions: ("projects:read" | "data:read" | "data:write" | "workflows:run")[];
54
+ extensions: {
55
+ url: string;
56
+ id: string;
57
+ target: "app.page" | "workspace.block";
58
+ sha256: string;
59
+ }[];
60
+ iconUrl?: string | undefined;
61
+ privacyUrl?: string | undefined;
62
+ supportUrl?: string | undefined;
63
+ webhookUrl?: string | undefined;
64
+ }, {
65
+ apiVersion: "1";
66
+ hosting: "self-hosted";
67
+ applicationUrl: string;
68
+ redirectUrls: string[];
69
+ iconUrl?: string | undefined;
70
+ privacyUrl?: string | undefined;
71
+ supportUrl?: string | undefined;
72
+ webhookUrl?: string | undefined;
73
+ requestedActions?: ("projects:read" | "data:read" | "data:write" | "workflows:run")[] | undefined;
74
+ extensions?: {
75
+ url: string;
76
+ id: string;
77
+ target: "app.page" | "workspace.block";
78
+ sha256: string;
79
+ }[] | undefined;
80
+ }>, {
81
+ apiVersion: "1";
82
+ hosting: "self-hosted";
83
+ applicationUrl: string;
84
+ redirectUrls: string[];
85
+ requestedActions: ("projects:read" | "data:read" | "data:write" | "workflows:run")[];
86
+ extensions: {
87
+ url: string;
88
+ id: string;
89
+ target: "app.page" | "workspace.block";
90
+ sha256: string;
91
+ }[];
92
+ iconUrl?: string | undefined;
93
+ privacyUrl?: string | undefined;
94
+ supportUrl?: string | undefined;
95
+ webhookUrl?: string | undefined;
96
+ }, {
97
+ apiVersion: "1";
98
+ hosting: "self-hosted";
99
+ applicationUrl: string;
100
+ redirectUrls: string[];
101
+ iconUrl?: string | undefined;
102
+ privacyUrl?: string | undefined;
103
+ supportUrl?: string | undefined;
104
+ webhookUrl?: string | undefined;
105
+ requestedActions?: ("projects:read" | "data:read" | "data:write" | "workflows:run")[] | undefined;
106
+ extensions?: {
107
+ url: string;
108
+ id: string;
109
+ target: "app.page" | "workspace.block";
110
+ sha256: string;
111
+ }[] | undefined;
112
+ }>;
113
+ export type SelfHostedApp = z.infer<typeof SelfHostedApp>;
114
+ /** Static browser extensions use the existing artifact store, never backend compute. */
115
+ export declare const ExtensionOnlyApp: z.ZodEffects<z.ZodObject<{
116
+ apiVersion: z.ZodLiteral<"2">;
117
+ hosting: z.ZodLiteral<"extension-only">;
118
+ iconUrl: z.ZodOptional<z.ZodEffects<z.ZodString, string, string>>;
119
+ settings: z.ZodDefault<z.ZodArray<z.ZodObject<{
120
+ id: z.ZodString;
121
+ label: z.ZodString;
122
+ defaultValue: z.ZodDefault<z.ZodString>;
123
+ }, "strict", z.ZodTypeAny, {
124
+ label: string;
125
+ id: string;
126
+ defaultValue: string;
127
+ }, {
128
+ label: string;
129
+ id: string;
130
+ defaultValue?: string | undefined;
131
+ }>, "many">>;
132
+ privacyUrl: z.ZodOptional<z.ZodEffects<z.ZodString, string, string>>;
133
+ supportUrl: z.ZodOptional<z.ZodEffects<z.ZodString, string, string>>;
134
+ requestedActions: z.ZodEffects<z.ZodDefault<z.ZodArray<z.ZodEnum<["projects:read", "data:read", "data:write", "workflows:run"]>, "many">>, ("projects:read" | "data:read" | "data:write" | "workflows:run")[], ("projects:read" | "data:read" | "data:write" | "workflows:run")[] | undefined>;
135
+ extensions: z.ZodArray<z.ZodObject<{
136
+ id: z.ZodString;
137
+ target: z.ZodEnum<["app.page", "workspace.block"]>;
138
+ path: z.ZodString;
139
+ sha256: z.ZodString;
140
+ }, "strict", z.ZodTypeAny, {
141
+ path: string;
142
+ id: string;
143
+ target: "app.page" | "workspace.block";
144
+ sha256: string;
145
+ }, {
146
+ path: string;
147
+ id: string;
148
+ target: "app.page" | "workspace.block";
149
+ sha256: string;
150
+ }>, "many">;
151
+ }, "strict", z.ZodTypeAny, {
152
+ settings: {
153
+ label: string;
154
+ id: string;
155
+ defaultValue: string;
156
+ }[];
157
+ apiVersion: "2";
158
+ hosting: "extension-only";
159
+ requestedActions: ("projects:read" | "data:read" | "data:write" | "workflows:run")[];
160
+ extensions: {
161
+ path: string;
162
+ id: string;
163
+ target: "app.page" | "workspace.block";
164
+ sha256: string;
165
+ }[];
166
+ iconUrl?: string | undefined;
167
+ privacyUrl?: string | undefined;
168
+ supportUrl?: string | undefined;
169
+ }, {
170
+ apiVersion: "2";
171
+ hosting: "extension-only";
172
+ extensions: {
173
+ path: string;
174
+ id: string;
175
+ target: "app.page" | "workspace.block";
176
+ sha256: string;
177
+ }[];
178
+ settings?: {
179
+ label: string;
180
+ id: string;
181
+ defaultValue?: string | undefined;
182
+ }[] | undefined;
183
+ iconUrl?: string | undefined;
184
+ privacyUrl?: string | undefined;
185
+ supportUrl?: string | undefined;
186
+ requestedActions?: ("projects:read" | "data:read" | "data:write" | "workflows:run")[] | undefined;
187
+ }>, {
188
+ settings: {
189
+ label: string;
190
+ id: string;
191
+ defaultValue: string;
192
+ }[];
193
+ apiVersion: "2";
194
+ hosting: "extension-only";
195
+ requestedActions: ("projects:read" | "data:read" | "data:write" | "workflows:run")[];
196
+ extensions: {
197
+ path: string;
198
+ id: string;
199
+ target: "app.page" | "workspace.block";
200
+ sha256: string;
201
+ }[];
202
+ iconUrl?: string | undefined;
203
+ privacyUrl?: string | undefined;
204
+ supportUrl?: string | undefined;
205
+ }, {
206
+ apiVersion: "2";
207
+ hosting: "extension-only";
208
+ extensions: {
209
+ path: string;
210
+ id: string;
211
+ target: "app.page" | "workspace.block";
212
+ sha256: string;
213
+ }[];
214
+ settings?: {
215
+ label: string;
216
+ id: string;
217
+ defaultValue?: string | undefined;
218
+ }[] | undefined;
219
+ iconUrl?: string | undefined;
220
+ privacyUrl?: string | undefined;
221
+ supportUrl?: string | undefined;
222
+ requestedActions?: ("projects:read" | "data:read" | "data:write" | "workflows:run")[] | undefined;
223
+ }>;
224
+ export type ExtensionOnlyApp = z.infer<typeof ExtensionOnlyApp>;
225
+ export declare const AppDefinition: z.ZodUnion<[z.ZodEffects<z.ZodObject<{
226
+ apiVersion: z.ZodLiteral<"1">;
227
+ hosting: z.ZodLiteral<"self-hosted">;
228
+ applicationUrl: z.ZodEffects<z.ZodString, string, string>;
229
+ iconUrl: z.ZodOptional<z.ZodEffects<z.ZodString, string, string>>;
230
+ privacyUrl: z.ZodOptional<z.ZodEffects<z.ZodString, string, string>>;
231
+ supportUrl: z.ZodOptional<z.ZodEffects<z.ZodString, string, string>>;
232
+ redirectUrls: z.ZodArray<z.ZodEffects<z.ZodString, string, string>, "many">;
233
+ webhookUrl: z.ZodOptional<z.ZodEffects<z.ZodString, string, string>>;
234
+ requestedActions: z.ZodEffects<z.ZodDefault<z.ZodArray<z.ZodEnum<["projects:read", "data:read", "data:write", "workflows:run"]>, "many">>, ("projects:read" | "data:read" | "data:write" | "workflows:run")[], ("projects:read" | "data:read" | "data:write" | "workflows:run")[] | undefined>;
235
+ extensions: z.ZodDefault<z.ZodArray<z.ZodObject<{
236
+ id: z.ZodString;
237
+ target: z.ZodEnum<["app.page", "workspace.block"]>;
238
+ url: z.ZodEffects<z.ZodString, string, string>;
239
+ sha256: z.ZodString;
240
+ }, "strict", z.ZodTypeAny, {
241
+ url: string;
242
+ id: string;
243
+ target: "app.page" | "workspace.block";
244
+ sha256: string;
245
+ }, {
246
+ url: string;
247
+ id: string;
248
+ target: "app.page" | "workspace.block";
249
+ sha256: string;
250
+ }>, "many">>;
251
+ }, "strict", z.ZodTypeAny, {
252
+ apiVersion: "1";
253
+ hosting: "self-hosted";
254
+ applicationUrl: string;
255
+ redirectUrls: string[];
256
+ requestedActions: ("projects:read" | "data:read" | "data:write" | "workflows:run")[];
257
+ extensions: {
258
+ url: string;
259
+ id: string;
260
+ target: "app.page" | "workspace.block";
261
+ sha256: string;
262
+ }[];
263
+ iconUrl?: string | undefined;
264
+ privacyUrl?: string | undefined;
265
+ supportUrl?: string | undefined;
266
+ webhookUrl?: string | undefined;
267
+ }, {
268
+ apiVersion: "1";
269
+ hosting: "self-hosted";
270
+ applicationUrl: string;
271
+ redirectUrls: string[];
272
+ iconUrl?: string | undefined;
273
+ privacyUrl?: string | undefined;
274
+ supportUrl?: string | undefined;
275
+ webhookUrl?: string | undefined;
276
+ requestedActions?: ("projects:read" | "data:read" | "data:write" | "workflows:run")[] | undefined;
277
+ extensions?: {
278
+ url: string;
279
+ id: string;
280
+ target: "app.page" | "workspace.block";
281
+ sha256: string;
282
+ }[] | undefined;
283
+ }>, {
284
+ apiVersion: "1";
285
+ hosting: "self-hosted";
286
+ applicationUrl: string;
287
+ redirectUrls: string[];
288
+ requestedActions: ("projects:read" | "data:read" | "data:write" | "workflows:run")[];
289
+ extensions: {
290
+ url: string;
291
+ id: string;
292
+ target: "app.page" | "workspace.block";
293
+ sha256: string;
294
+ }[];
295
+ iconUrl?: string | undefined;
296
+ privacyUrl?: string | undefined;
297
+ supportUrl?: string | undefined;
298
+ webhookUrl?: string | undefined;
299
+ }, {
300
+ apiVersion: "1";
301
+ hosting: "self-hosted";
302
+ applicationUrl: string;
303
+ redirectUrls: string[];
304
+ iconUrl?: string | undefined;
305
+ privacyUrl?: string | undefined;
306
+ supportUrl?: string | undefined;
307
+ webhookUrl?: string | undefined;
308
+ requestedActions?: ("projects:read" | "data:read" | "data:write" | "workflows:run")[] | undefined;
309
+ extensions?: {
310
+ url: string;
311
+ id: string;
312
+ target: "app.page" | "workspace.block";
313
+ sha256: string;
314
+ }[] | undefined;
315
+ }>, z.ZodEffects<z.ZodObject<{
316
+ apiVersion: z.ZodLiteral<"2">;
317
+ hosting: z.ZodLiteral<"extension-only">;
318
+ iconUrl: z.ZodOptional<z.ZodEffects<z.ZodString, string, string>>;
319
+ settings: z.ZodDefault<z.ZodArray<z.ZodObject<{
320
+ id: z.ZodString;
321
+ label: z.ZodString;
322
+ defaultValue: z.ZodDefault<z.ZodString>;
323
+ }, "strict", z.ZodTypeAny, {
324
+ label: string;
325
+ id: string;
326
+ defaultValue: string;
327
+ }, {
328
+ label: string;
329
+ id: string;
330
+ defaultValue?: string | undefined;
331
+ }>, "many">>;
332
+ privacyUrl: z.ZodOptional<z.ZodEffects<z.ZodString, string, string>>;
333
+ supportUrl: z.ZodOptional<z.ZodEffects<z.ZodString, string, string>>;
334
+ requestedActions: z.ZodEffects<z.ZodDefault<z.ZodArray<z.ZodEnum<["projects:read", "data:read", "data:write", "workflows:run"]>, "many">>, ("projects:read" | "data:read" | "data:write" | "workflows:run")[], ("projects:read" | "data:read" | "data:write" | "workflows:run")[] | undefined>;
335
+ extensions: z.ZodArray<z.ZodObject<{
336
+ id: z.ZodString;
337
+ target: z.ZodEnum<["app.page", "workspace.block"]>;
338
+ path: z.ZodString;
339
+ sha256: z.ZodString;
340
+ }, "strict", z.ZodTypeAny, {
341
+ path: string;
342
+ id: string;
343
+ target: "app.page" | "workspace.block";
344
+ sha256: string;
345
+ }, {
346
+ path: string;
347
+ id: string;
348
+ target: "app.page" | "workspace.block";
349
+ sha256: string;
350
+ }>, "many">;
351
+ }, "strict", z.ZodTypeAny, {
352
+ settings: {
353
+ label: string;
354
+ id: string;
355
+ defaultValue: string;
356
+ }[];
357
+ apiVersion: "2";
358
+ hosting: "extension-only";
359
+ requestedActions: ("projects:read" | "data:read" | "data:write" | "workflows:run")[];
360
+ extensions: {
361
+ path: string;
362
+ id: string;
363
+ target: "app.page" | "workspace.block";
364
+ sha256: string;
365
+ }[];
366
+ iconUrl?: string | undefined;
367
+ privacyUrl?: string | undefined;
368
+ supportUrl?: string | undefined;
369
+ }, {
370
+ apiVersion: "2";
371
+ hosting: "extension-only";
372
+ extensions: {
373
+ path: string;
374
+ id: string;
375
+ target: "app.page" | "workspace.block";
376
+ sha256: string;
377
+ }[];
378
+ settings?: {
379
+ label: string;
380
+ id: string;
381
+ defaultValue?: string | undefined;
382
+ }[] | undefined;
383
+ iconUrl?: string | undefined;
384
+ privacyUrl?: string | undefined;
385
+ supportUrl?: string | undefined;
386
+ requestedActions?: ("projects:read" | "data:read" | "data:write" | "workflows:run")[] | undefined;
387
+ }>, {
388
+ settings: {
389
+ label: string;
390
+ id: string;
391
+ defaultValue: string;
392
+ }[];
393
+ apiVersion: "2";
394
+ hosting: "extension-only";
395
+ requestedActions: ("projects:read" | "data:read" | "data:write" | "workflows:run")[];
396
+ extensions: {
397
+ path: string;
398
+ id: string;
399
+ target: "app.page" | "workspace.block";
400
+ sha256: string;
401
+ }[];
402
+ iconUrl?: string | undefined;
403
+ privacyUrl?: string | undefined;
404
+ supportUrl?: string | undefined;
405
+ }, {
406
+ apiVersion: "2";
407
+ hosting: "extension-only";
408
+ extensions: {
409
+ path: string;
410
+ id: string;
411
+ target: "app.page" | "workspace.block";
412
+ sha256: string;
413
+ }[];
414
+ settings?: {
415
+ label: string;
416
+ id: string;
417
+ defaultValue?: string | undefined;
418
+ }[] | undefined;
419
+ iconUrl?: string | undefined;
420
+ privacyUrl?: string | undefined;
421
+ supportUrl?: string | undefined;
422
+ requestedActions?: ("projects:read" | "data:read" | "data:write" | "workflows:run")[] | undefined;
423
+ }>]>;
424
+ export type AppDefinition = z.infer<typeof AppDefinition>;
425
+ //# sourceMappingURL=app.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../../src/plugins/schema/app.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,SAAS,0EAAwE,CAAC;AAC/F,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,SAAS,CAAC,CAAC;AA8BlD,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;EAUxB,CAAC;AACZ,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAE5E,gFAAgF;AAChF,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsCtB,CAAC;AACL,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAE1D,wFAAwF;AACxF,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAoDzB,CAAC;AACL,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAChE,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAA6C,CAAC;AACxE,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC"}
@@ -0,0 +1,136 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AppDefinition = exports.ExtensionOnlyApp = exports.SelfHostedApp = exports.SelfHostedAppExtension = exports.AppAction = void 0;
4
+ // Generated from packages/schema/src/app.ts. Do not edit; run the Octonode SDK sync.
5
+ const zod_1 = require("zod");
6
+ exports.AppAction = zod_1.z.enum(["projects:read", "data:read", "data:write", "workflows:run"]);
7
+ /** Registration validation only; outbound callers must also enforce DNS/redirect SSRF policy. */
8
+ const appUrl = zod_1.z
9
+ .string()
10
+ .max(2_048)
11
+ .url()
12
+ .refine((value) => {
13
+ try {
14
+ const url = new URL(value);
15
+ return (value === value.trim() &&
16
+ /^https:\/\//i.test(value) &&
17
+ !/[\p{Cc}\s\\?#]/u.test(value) &&
18
+ url.protocol === "https:" &&
19
+ !url.username &&
20
+ !url.password &&
21
+ !url.search &&
22
+ !url.hash &&
23
+ url.hostname.includes(".") &&
24
+ !url.hostname.endsWith(".") &&
25
+ !url.hostname.includes(":") &&
26
+ !/^\d+\.\d+\.\d+\.\d+$/.test(url.hostname) &&
27
+ !/\.(localhost|local|internal)$/.test(url.hostname));
28
+ }
29
+ catch {
30
+ return false;
31
+ }
32
+ }, "App URLs must use public HTTPS hostnames without credentials, query strings or fragments");
33
+ exports.SelfHostedAppExtension = zod_1.z
34
+ .object({
35
+ id: zod_1.z
36
+ .string()
37
+ .regex(/^[a-z0-9][a-z0-9-]*$/)
38
+ .max(100),
39
+ target: zod_1.z.enum(["app.page", "workspace.block"]),
40
+ url: appUrl,
41
+ sha256: zod_1.z.string().regex(/^sha256:[a-f0-9]{64}$/),
42
+ })
43
+ .strict();
44
+ /** Legacy releases retain their original validation and serialized defaults. */
45
+ exports.SelfHostedApp = zod_1.z
46
+ .object({
47
+ apiVersion: zod_1.z.literal("1"),
48
+ hosting: zod_1.z.literal("self-hosted"),
49
+ applicationUrl: appUrl,
50
+ iconUrl: appUrl.optional(),
51
+ privacyUrl: appUrl.optional(),
52
+ supportUrl: appUrl.optional(),
53
+ redirectUrls: zod_1.z.array(appUrl).min(1).max(10),
54
+ webhookUrl: appUrl.optional(),
55
+ requestedActions: zod_1.z
56
+ .array(exports.AppAction)
57
+ .max(4)
58
+ .default([])
59
+ .refine((actions) => new Set(actions).size === actions.length, "App actions must be unique"),
60
+ extensions: zod_1.z.array(exports.SelfHostedAppExtension).max(32).default([]),
61
+ })
62
+ .strict()
63
+ .superRefine((app, ctx) => {
64
+ if (!URL.canParse(app.applicationUrl))
65
+ return;
66
+ const origin = new URL(app.applicationUrl).origin;
67
+ for (const [path, url] of [
68
+ ...app.redirectUrls.map((url, index) => [["redirectUrls", index], url]),
69
+ ...(app.iconUrl ? [[["iconUrl"], app.iconUrl]] : []),
70
+ ...(app.webhookUrl ? [[["webhookUrl"], app.webhookUrl]] : []),
71
+ ...app.extensions.map((extension, index) => [["extensions", index, "url"], extension.url]),
72
+ ]) {
73
+ if (URL.canParse(url) && new URL(url).origin !== origin)
74
+ ctx.addIssue({
75
+ code: "custom",
76
+ path: [...path],
77
+ message: "App endpoints and assets must share the application origin",
78
+ });
79
+ }
80
+ if (new Set(app.redirectUrls).size !== app.redirectUrls.length)
81
+ ctx.addIssue({ code: "custom", path: ["redirectUrls"], message: "App redirect URLs must be unique" });
82
+ if (new Set(app.extensions.map((extension) => extension.id)).size !== app.extensions.length)
83
+ ctx.addIssue({ code: "custom", path: ["extensions"], message: "App extension IDs must be unique" });
84
+ });
85
+ /** Static browser extensions use the existing artifact store, never backend compute. */
86
+ exports.ExtensionOnlyApp = zod_1.z
87
+ .object({
88
+ apiVersion: zod_1.z.literal("2"),
89
+ hosting: zod_1.z.literal("extension-only"),
90
+ iconUrl: appUrl.optional(),
91
+ settings: zod_1.z
92
+ .array(zod_1.z
93
+ .object({
94
+ id: zod_1.z
95
+ .string()
96
+ .regex(/^[a-z][a-zA-Z0-9_]*$/)
97
+ .max(100),
98
+ label: zod_1.z.string().trim().min(1).max(240),
99
+ defaultValue: zod_1.z.string().max(4000).default(""),
100
+ })
101
+ .strict())
102
+ .max(32)
103
+ .default([]),
104
+ privacyUrl: appUrl.optional(),
105
+ supportUrl: appUrl.optional(),
106
+ requestedActions: zod_1.z
107
+ .array(exports.AppAction)
108
+ .max(0)
109
+ .default([])
110
+ .refine((actions) => new Set(actions).size === actions.length, "App actions must be unique"),
111
+ extensions: zod_1.z
112
+ .array(zod_1.z
113
+ .object({
114
+ id: exports.SelfHostedAppExtension.shape.id,
115
+ target: exports.SelfHostedAppExtension.shape.target,
116
+ path: zod_1.z
117
+ .string()
118
+ .regex(/^extensions\/[a-z0-9][a-z0-9-]*\.js$/)
119
+ .max(150),
120
+ sha256: exports.SelfHostedAppExtension.shape.sha256,
121
+ })
122
+ .strict())
123
+ .min(1)
124
+ .max(32),
125
+ })
126
+ .strict()
127
+ .superRefine((app, ctx) => {
128
+ if (new Set(app.settings.map((setting) => setting.id)).size !== app.settings.length)
129
+ ctx.addIssue({ code: "custom", path: ["settings"], message: "App setting IDs must be unique" });
130
+ for (const field of ["id", "path"]) {
131
+ if (new Set(app.extensions.map((extension) => extension[field])).size !== app.extensions.length)
132
+ ctx.addIssue({ code: "custom", path: ["extensions"], message: `App extension ${field}s must be unique` });
133
+ }
134
+ });
135
+ exports.AppDefinition = zod_1.z.union([exports.SelfHostedApp, exports.ExtensionOnlyApp]);
136
+ //# sourceMappingURL=app.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app.js","sourceRoot":"","sources":["../../../src/plugins/schema/app.ts"],"names":[],"mappings":"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"}