@ninedeploy/schemas 0.2.7 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/dist/auth.d.ts +19 -14
  2. package/dist/auth.d.ts.map +1 -1
  3. package/dist/auth.js +18 -4
  4. package/dist/auth.js.map +1 -1
  5. package/dist/common.d.ts +18 -0
  6. package/dist/common.d.ts.map +1 -1
  7. package/dist/common.js +47 -0
  8. package/dist/common.js.map +1 -1
  9. package/dist/index.d.ts +6 -0
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +4 -0
  12. package/dist/index.js.map +1 -1
  13. package/dist/insights.d.ts +110 -0
  14. package/dist/insights.d.ts.map +1 -0
  15. package/dist/insights.js +64 -0
  16. package/dist/insights.js.map +1 -0
  17. package/dist/labels.d.ts +108 -0
  18. package/dist/labels.d.ts.map +1 -0
  19. package/dist/labels.js +70 -0
  20. package/dist/labels.js.map +1 -0
  21. package/dist/management.d.ts +6 -7
  22. package/dist/management.d.ts.map +1 -1
  23. package/dist/management.js +34 -9
  24. package/dist/management.js.map +1 -1
  25. package/dist/ninedeployManifest.d.ts +292 -0
  26. package/dist/ninedeployManifest.d.ts.map +1 -0
  27. package/dist/ninedeployManifest.js +284 -0
  28. package/dist/ninedeployManifest.js.map +1 -0
  29. package/dist/project.d.ts +4 -2
  30. package/dist/project.d.ts.map +1 -1
  31. package/dist/project.js +2 -2
  32. package/dist/project.js.map +1 -1
  33. package/dist/secretScan.d.ts +52 -0
  34. package/dist/secretScan.d.ts.map +1 -0
  35. package/dist/secretScan.js +125 -0
  36. package/dist/secretScan.js.map +1 -0
  37. package/dist/service.d.ts +118 -4
  38. package/dist/service.d.ts.map +1 -1
  39. package/dist/service.js +148 -10
  40. package/dist/service.js.map +1 -1
  41. package/dist/workspaces.d.ts +49 -0
  42. package/dist/workspaces.d.ts.map +1 -1
  43. package/dist/workspaces.js +9 -0
  44. package/dist/workspaces.js.map +1 -1
  45. package/package.json +1 -1
package/dist/auth.d.ts CHANGED
@@ -40,15 +40,16 @@ export declare const passwordChange: z.ZodObject<{
40
40
  }, z.core.$strip>;
41
41
  export type PasswordChange = z.infer<typeof passwordChange>;
42
42
  /** Admin-initiated password reset for another user. */
43
- /** Admin-created user — same shape as register plus the starting role. */
43
+ /**
44
+ * Admin-created user — same shape as register, no global role.
45
+ * A new user has no workspace memberships until an existing owner/admin
46
+ * invites them; the first user on a fresh install is auto-promoted to owner
47
+ * of a personal workspace by the auth module.
48
+ */
44
49
  export declare const userCreate: z.ZodObject<{
45
50
  email: z.ZodEmail;
46
51
  password: z.ZodString;
47
52
  name: z.ZodOptional<z.ZodString>;
48
- role: z.ZodDefault<z.ZodEnum<{
49
- admin: "admin";
50
- member: "member";
51
- }>>;
52
53
  }, z.core.$strip>;
53
54
  export type UserCreate = z.infer<typeof userCreate>;
54
55
  export declare const passwordReset: z.ZodObject<{
@@ -77,15 +78,20 @@ export declare const refresh: z.ZodObject<{
77
78
  refreshToken: z.ZodString;
78
79
  }, z.core.$strip>;
79
80
  export type Refresh = z.infer<typeof refresh>;
80
- /** Public user representation (never includes passwordHash). */
81
+ /**
82
+ * Public user representation (never includes passwordHash).
83
+ * The legacy global `role` field was removed; authorization is per-workspace
84
+ * now. The effective "is operator" check is computed by joining
85
+ * `workspace_members` and asking whether the user holds owner/admin in any
86
+ * workspace.
87
+ */
81
88
  export declare const publicUser: z.ZodObject<{
82
89
  id: z.ZodNumber;
83
90
  email: z.ZodEmail;
84
91
  name: z.ZodNullable<z.ZodString>;
85
- role: z.ZodEnum<{
86
- admin: "admin";
87
- member: "member";
88
- }>;
92
+ isOperator: z.ZodBoolean;
93
+ workspaceCount: z.ZodNumber;
94
+ createdAt: z.ZodString;
89
95
  }, z.core.$strip>;
90
96
  export type PublicUser = z.infer<typeof publicUser>;
91
97
  export declare const session: z.ZodObject<{
@@ -93,10 +99,9 @@ export declare const session: z.ZodObject<{
93
99
  id: z.ZodNumber;
94
100
  email: z.ZodEmail;
95
101
  name: z.ZodNullable<z.ZodString>;
96
- role: z.ZodEnum<{
97
- admin: "admin";
98
- member: "member";
99
- }>;
102
+ isOperator: z.ZodBoolean;
103
+ workspaceCount: z.ZodNumber;
104
+ createdAt: z.ZodString;
100
105
  }, z.core.$strip>;
101
106
  tokens: z.ZodObject<{
102
107
  accessToken: z.ZodString;
@@ -1 +1 @@
1
- {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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"}
package/dist/auth.js CHANGED
@@ -26,12 +26,16 @@ export const passwordChange = z.object({
26
26
  newPassword: z.string().min(8).max(128),
27
27
  });
28
28
  /** Admin-initiated password reset for another user. */
29
- /** Admin-created user — same shape as register plus the starting role. */
29
+ /**
30
+ * Admin-created user — same shape as register, no global role.
31
+ * A new user has no workspace memberships until an existing owner/admin
32
+ * invites them; the first user on a fresh install is auto-promoted to owner
33
+ * of a personal workspace by the auth module.
34
+ */
30
35
  export const userCreate = z.object({
31
36
  email: z.email().max(255),
32
37
  password: z.string().min(8).max(128),
33
38
  name: z.string().min(1).max(100).optional(),
34
- role: z.enum(['admin', 'member']).default('member'),
35
39
  });
36
40
  export const passwordReset = z.object({
37
41
  newPassword: z.string().min(8).max(128),
@@ -54,12 +58,22 @@ export const tokenPair = z.object({
54
58
  export const refresh = z.object({
55
59
  refreshToken: z.string().min(1),
56
60
  });
57
- /** Public user representation (never includes passwordHash). */
61
+ /**
62
+ * Public user representation (never includes passwordHash).
63
+ * The legacy global `role` field was removed; authorization is per-workspace
64
+ * now. The effective "is operator" check is computed by joining
65
+ * `workspace_members` and asking whether the user holds owner/admin in any
66
+ * workspace.
67
+ */
58
68
  export const publicUser = z.object({
59
69
  id: z.number().int(),
60
70
  email: z.email(),
61
71
  name: z.string().nullable(),
62
- role: z.enum(['admin', 'member']),
72
+ /** True iff the user holds owner/admin in at least one workspace. */
73
+ isOperator: z.boolean(),
74
+ /** Number of workspaces the user belongs to. Computed by the server. */
75
+ workspaceCount: z.number().int().nonnegative(),
76
+ createdAt: z.string().datetime(),
63
77
  });
64
78
  export const session = z.object({
65
79
  user: publicUser,
package/dist/auth.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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"}
package/dist/common.d.ts CHANGED
@@ -37,6 +37,24 @@ export declare const gitRepoUrl: z.ZodURL;
37
37
  * itself rejects in `check-ref-format`.
38
38
  */
39
39
  export declare const gitBranch: z.ZodString;
40
+ export declare const repoRelativePath: z.ZodString;
41
+ /** Same rules as {@link repoRelativePath}; named for the build-context field. */
42
+ export declare const repoBaseDir: z.ZodString;
43
+ /**
44
+ * Absolute path inside a container (e.g. `/data`, `/var/lib/uploads`).
45
+ * Rejected: empty, relative, paths containing NUL, parent-relative segments,
46
+ * or a leading double slash (Docker treats `//` as the named-volume named
47
+ * bind-mount form which is not what we want here).
48
+ */
49
+ export declare const containerPath: z.ZodString;
50
+ /**
51
+ * Docker named-volume name. Lowercase letters, digits, underscores, hyphens
52
+ * and dots; must start with alnum; max 64 chars (the volume driver limit
53
+ * on most filesystems). The managed prefixes `nd-svc-` / `nd-db-` are
54
+ * accepted; clients sending a non-managed name attach a pre-existing volume
55
+ * they have created out-of-band.
56
+ */
57
+ export declare const dockerVolumeName: z.ZodString;
40
58
  /** Cursor-style pagination params. */
41
59
  export declare const pagination: z.ZodObject<{
42
60
  limit: z.ZodDefault<z.ZodCoercedNumber<unknown>>;
@@ -1 +1 @@
1
- {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../src/common.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,yDAAyD;AACzD,eAAO,MAAM,IAAI,aAIqE,CAAC;AAEvF;;;;;;GAMG;AACH,eAAO,MAAM,UAAU,aAMpB,CAAC;AAEJ,eAAO,MAAM,EAAE,aAA8B,CAAC;AAE9C;;;;;;;;GAQG;AACH,eAAO,MAAM,QAAQ,aAMlB,CAAC;AAEJ;;;;;;;;GAQG;AACH,eAAO,MAAM,UAAU,UAInB,CAAC;AAEL;;;;;GAKG;AACH,eAAO,MAAM,SAAS,aAKyE,CAAC;AAEhG,sCAAsC;AACtC,eAAO,MAAM,UAAU;;;iBAGrB,CAAC;AACH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC;AAEpD,mDAAmD;AACnD,eAAO,MAAM,aAAa;;;;;;iBAMxB,CAAC;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAE1D,yBAAyB;AACzB,wBAAgB,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC;;;;kBAMnD"}
1
+ {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../src/common.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,yDAAyD;AACzD,eAAO,MAAM,IAAI,aAIqE,CAAC;AAEvF;;;;;;GAMG;AACH,eAAO,MAAM,UAAU,aAMpB,CAAC;AAEJ,eAAO,MAAM,EAAE,aAA8B,CAAC;AAE9C;;;;;;;;GAQG;AACH,eAAO,MAAM,QAAQ,aAMlB,CAAC;AAEJ;;;;;;;;GAQG;AACH,eAAO,MAAM,UAAU,UAInB,CAAC;AAEL;;;;;GAKG;AACH,eAAO,MAAM,SAAS,aAKyE,CAAC;AAqBhG,eAAO,MAAM,gBAAgB,aAIuD,CAAC;AAErF,iFAAiF;AACjF,eAAO,MAAM,WAAW,aAAmB,CAAC;AAE5C;;;;;GAKG;AACH,eAAO,MAAM,aAAa,aAIuD,CAAC;AAElF;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,aAIoC,CAAC;AAElE,sCAAsC;AACtC,eAAO,MAAM,UAAU;;;iBAGrB,CAAC;AACH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC;AAEpD,mDAAmD;AACnD,eAAO,MAAM,aAAa;;;;;;iBAMxB,CAAC;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAE1D,yBAAyB;AACzB,wBAAgB,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC;;;;kBAMnD"}
package/dist/common.js CHANGED
@@ -56,6 +56,53 @@ export const gitBranch = z
56
56
  .max(200)
57
57
  .regex(/^[A-Za-z0-9._][A-Za-z0-9._/-]*$/, 'invalid branch name')
58
58
  .refine((v) => !v.includes('..') && !v.endsWith('.lock'), { message: 'invalid branch name' });
59
+ /**
60
+ * A path interpreted relative to the checked-out repository.
61
+ *
62
+ * A LEADING SLASH IS ALLOWED and means "from the repo root" — that is the
63
+ * existing convention for `baseDir` (`/`, `/app`), so rejecting it here would
64
+ * break real configurations. What is rejected is anything that could climb out
65
+ * of the checkout once resolved: `..` segments, NUL, and Windows drive
66
+ * letters.
67
+ *
68
+ * This is a usability guard, not the security boundary. The sinks
69
+ * (`docker build -f` / its build context, `docker compose -f`) resolve these
70
+ * values against the work dir, so they re-anchor the path themselves — see
71
+ * `lib/repoPath.ts`.
72
+ */
73
+ const insideRepo = (value) => !/^[A-Za-z]:/.test(value) &&
74
+ !value.includes('\0') &&
75
+ !value.split(/[\\/]/).includes('..');
76
+ export const repoRelativePath = z
77
+ .string()
78
+ .trim()
79
+ .max(400)
80
+ .refine(insideRepo, { message: 'must be a path inside the repository (no "..")' });
81
+ /** Same rules as {@link repoRelativePath}; named for the build-context field. */
82
+ export const repoBaseDir = repoRelativePath;
83
+ /**
84
+ * Absolute path inside a container (e.g. `/data`, `/var/lib/uploads`).
85
+ * Rejected: empty, relative, paths containing NUL, parent-relative segments,
86
+ * or a leading double slash (Docker treats `//` as the named-volume named
87
+ * bind-mount form which is not what we want here).
88
+ */
89
+ export const containerPath = z
90
+ .string()
91
+ .min(1)
92
+ .max(1024)
93
+ .regex(/^\/[^/].*|^\/$/, 'must be an absolute path starting with a single "/"');
94
+ /**
95
+ * Docker named-volume name. Lowercase letters, digits, underscores, hyphens
96
+ * and dots; must start with alnum; max 64 chars (the volume driver limit
97
+ * on most filesystems). The managed prefixes `nd-svc-` / `nd-db-` are
98
+ * accepted; clients sending a non-managed name attach a pre-existing volume
99
+ * they have created out-of-band.
100
+ */
101
+ export const dockerVolumeName = z
102
+ .string()
103
+ .min(1)
104
+ .max(64)
105
+ .regex(/^[a-z0-9][a-z0-9_.-]*$/i, 'invalid docker volume name');
59
106
  /** Cursor-style pagination params. */
60
107
  export const pagination = z.object({
61
108
  limit: z.coerce.number().int().min(1).max(100).default(25),
@@ -1 +1 @@
1
- {"version":3,"file":"common.js","sourceRoot":"","sources":["../src/common.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,yDAAyD;AACzD,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC;KAClB,MAAM,EAAE;KACR,GAAG,CAAC,CAAC,CAAC;KACN,GAAG,CAAC,EAAE,CAAC;KACP,KAAK,CAAC,mCAAmC,EAAE,uCAAuC,CAAC,CAAC;AAEvF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC;KACxB,MAAM,EAAE;KACR,IAAI,EAAE;KACN,KAAK,CACJ,0BAA0B,EAC1B,oGAAoG,CACrG,CAAC;AAEJ,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC;AAE9C;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC;KACtB,MAAM,EAAE;KACR,GAAG,CAAC,GAAG,CAAC;KACR,KAAK,CACJ,yCAAyC,EACzC,+DAA+D,CAChE,CAAC;AAEJ;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC;KACxB,GAAG,EAAE;KACL,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,uBAAuB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;IACtD,OAAO,EAAE,uCAAuC;CACjD,CAAC,CAAC;AAEL;;;;;GAKG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC;KACvB,MAAM,EAAE;KACR,GAAG,CAAC,CAAC,CAAC;KACN,GAAG,CAAC,GAAG,CAAC;KACR,KAAK,CAAC,iCAAiC,EAAE,qBAAqB,CAAC;KAC/D,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,EAAE,qBAAqB,EAAE,CAAC,CAAC;AAEhG,sCAAsC;AACtC,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC;IACjC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IAC1D,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;CACtD,CAAC,CAAC;AAGH,mDAAmD;AACnD,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;QAChB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;QACnB,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;KAChC,CAAC;CACH,CAAC,CAAC;AAGH,yBAAyB;AACzB,MAAM,UAAU,IAAI,CAAyB,IAAO;IAClD,OAAO,CAAC,CAAC,MAAM,CAAC;QACd,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;QACpB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;QAClD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE;KACjD,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"common.js","sourceRoot":"","sources":["../src/common.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,8 +1,14 @@
1
1
  export * from './common.js';
2
2
  export * from './auth.js';
3
3
  export * from './management.js';
4
+ export * from './ninedeployManifest.js';
5
+ export type { AlertWhen } from './ninedeployManifest.js';
6
+ export type { RestartPolicy } from './ninedeployManifest.js';
4
7
  export * from './project.js';
5
8
  export * from './service.js';
9
+ export * from './insights.js';
6
10
  export * from './kernel.js';
7
11
  export * from './workspaces.js';
12
+ export * from './labels.js';
13
+ export * from './secretScan.js';
8
14
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,yBAAyB,CAAC;AACxC,YAAY,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACzD,YAAY,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC7D,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC"}
package/dist/index.js CHANGED
@@ -1,8 +1,12 @@
1
1
  export * from './common.js';
2
2
  export * from './auth.js';
3
3
  export * from './management.js';
4
+ export * from './ninedeployManifest.js';
4
5
  export * from './project.js';
5
6
  export * from './service.js';
7
+ export * from './insights.js';
6
8
  export * from './kernel.js';
7
9
  export * from './workspaces.js';
10
+ export * from './labels.js';
11
+ export * from './secretScan.js';
8
12
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,yBAAyB,CAAC;AAGxC,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC"}
@@ -0,0 +1,110 @@
1
+ import { z } from 'zod';
2
+ export declare const frameworkCategory: z.ZodEnum<{
3
+ backend: "backend";
4
+ container: "container";
5
+ spa: "spa";
6
+ ssr: "ssr";
7
+ static: "static";
8
+ unknown: "unknown";
9
+ }>;
10
+ export type FrameworkCategory = z.infer<typeof frameworkCategory>;
11
+ export declare const packageManagerId: z.ZodEnum<{
12
+ bun: "bun";
13
+ npm: "npm";
14
+ pnpm: "pnpm";
15
+ yarn: "yarn";
16
+ }>;
17
+ export type PackageManagerId = z.infer<typeof packageManagerId>;
18
+ /** One recommended environment variable (pre-filled, user-editable). */
19
+ export declare const envSuggestion: z.ZodObject<{
20
+ key: z.ZodString;
21
+ value: z.ZodString;
22
+ description: z.ZodOptional<z.ZodString>;
23
+ }, z.core.$strip>;
24
+ export type EnvSuggestion = z.infer<typeof envSuggestion>;
25
+ /** A detected framework plus its deploy preset (commands already adapted to
26
+ * the detected package manager). Null commands mean "no safe suggestion". */
27
+ export declare const frameworkPreset: z.ZodObject<{
28
+ id: z.ZodString;
29
+ name: z.ZodString;
30
+ emoji: z.ZodString;
31
+ category: z.ZodEnum<{
32
+ backend: "backend";
33
+ container: "container";
34
+ spa: "spa";
35
+ ssr: "ssr";
36
+ static: "static";
37
+ unknown: "unknown";
38
+ }>;
39
+ port: z.ZodNumber;
40
+ installCmd: z.ZodNullable<z.ZodString>;
41
+ buildCmd: z.ZodNullable<z.ZodString>;
42
+ startCmd: z.ZodNullable<z.ZodString>;
43
+ env: z.ZodArray<z.ZodObject<{
44
+ key: z.ZodString;
45
+ value: z.ZodString;
46
+ description: z.ZodOptional<z.ZodString>;
47
+ }, z.core.$strip>>;
48
+ notes: z.ZodArray<z.ZodString>;
49
+ }, z.core.$strip>;
50
+ export type FrameworkPreset = z.infer<typeof frameworkPreset>;
51
+ export declare const repoInsights: z.ZodObject<{
52
+ framework: z.ZodObject<{
53
+ id: z.ZodString;
54
+ name: z.ZodString;
55
+ emoji: z.ZodString;
56
+ category: z.ZodEnum<{
57
+ backend: "backend";
58
+ container: "container";
59
+ spa: "spa";
60
+ ssr: "ssr";
61
+ static: "static";
62
+ unknown: "unknown";
63
+ }>;
64
+ port: z.ZodNumber;
65
+ installCmd: z.ZodNullable<z.ZodString>;
66
+ buildCmd: z.ZodNullable<z.ZodString>;
67
+ startCmd: z.ZodNullable<z.ZodString>;
68
+ env: z.ZodArray<z.ZodObject<{
69
+ key: z.ZodString;
70
+ value: z.ZodString;
71
+ description: z.ZodOptional<z.ZodString>;
72
+ }, z.core.$strip>>;
73
+ notes: z.ZodArray<z.ZodString>;
74
+ }, z.core.$strip>;
75
+ language: z.ZodString;
76
+ packageManager: z.ZodNullable<z.ZodEnum<{
77
+ bun: "bun";
78
+ npm: "npm";
79
+ pnpm: "pnpm";
80
+ yarn: "yarn";
81
+ }>>;
82
+ nodeVersion: z.ZodNullable<z.ZodString>;
83
+ frameworkVersion: z.ZodNullable<z.ZodString>;
84
+ scripts: z.ZodRecord<z.ZodString, z.ZodString>;
85
+ dependencyCount: z.ZodNumber;
86
+ devDependencyCount: z.ZodNumber;
87
+ hasDockerfile: z.ZodBoolean;
88
+ hasComposeFile: z.ZodBoolean;
89
+ monorepo: z.ZodBoolean;
90
+ detectedFiles: z.ZodArray<z.ZodString>;
91
+ workspacePackages: z.ZodArray<z.ZodObject<{
92
+ dir: z.ZodString;
93
+ name: z.ZodNullable<z.ZodString>;
94
+ framework: z.ZodNullable<z.ZodString>;
95
+ frameworkVersion: z.ZodNullable<z.ZodString>;
96
+ }, z.core.$strip>>;
97
+ baseDir: z.ZodString;
98
+ commitSha: z.ZodOptional<z.ZodNullable<z.ZodString>>;
99
+ analyzedAt: z.ZodString;
100
+ }, z.core.$strip>;
101
+ export type RepoInsights = z.infer<typeof repoInsights>;
102
+ /** Pre-deploy inspection request (DeployWizard, before a service exists). */
103
+ export declare const analyzeRepoInput: z.ZodObject<{
104
+ repoUrl: z.ZodURL;
105
+ branch: z.ZodDefault<z.ZodString>;
106
+ sourceId: z.ZodOptional<z.ZodNumber>;
107
+ baseDir: z.ZodOptional<z.ZodString>;
108
+ }, z.core.$strip>;
109
+ export type AnalyzeRepoInput = z.input<typeof analyzeRepoInput>;
110
+ //# sourceMappingURL=insights.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"insights.d.ts","sourceRoot":"","sources":["../src/insights.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAQxB,eAAO,MAAM,iBAAiB;;;;;;;EAAsE,CAAC;AACrG,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAElE,eAAO,MAAM,gBAAgB;;;;;EAAyC,CAAC;AACvE,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAEhE,wEAAwE;AACxE,eAAO,MAAM,aAAa;;;;iBAIxB,CAAC;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAE1D;6EAC6E;AAC7E,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;iBAW1B,CAAC;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAE9D,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA6BvB,CAAC;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAExD,6EAA6E;AAC7E,eAAO,MAAM,gBAAgB;;;;;iBAK3B,CAAC;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC"}
@@ -0,0 +1,64 @@
1
+ import { z } from 'zod';
2
+ import { gitBranch, gitRepoUrl, repoBaseDir } from './common.js';
3
+ // ── Repository / framework insights ─────────────────────────────────────────
4
+ // The analysis engine (server lib/frameworks.ts) inspects a checked-out repo
5
+ // and reduces it to this shape; the wizard and the service-detail Framework
6
+ // tab render it to explain "what is in this repo and how should it deploy".
7
+ export const frameworkCategory = z.enum(['ssr', 'spa', 'static', 'backend', 'container', 'unknown']);
8
+ export const packageManagerId = z.enum(['npm', 'pnpm', 'yarn', 'bun']);
9
+ /** One recommended environment variable (pre-filled, user-editable). */
10
+ export const envSuggestion = z.object({
11
+ key: z.string(),
12
+ value: z.string(),
13
+ description: z.string().optional(),
14
+ });
15
+ /** A detected framework plus its deploy preset (commands already adapted to
16
+ * the detected package manager). Null commands mean "no safe suggestion". */
17
+ export const frameworkPreset = z.object({
18
+ id: z.string(),
19
+ name: z.string(),
20
+ emoji: z.string(),
21
+ category: frameworkCategory,
22
+ port: z.number().int().min(1).max(65535),
23
+ installCmd: z.string().nullable(),
24
+ buildCmd: z.string().nullable(),
25
+ startCmd: z.string().nullable(),
26
+ env: z.array(envSuggestion),
27
+ notes: z.array(z.string()),
28
+ });
29
+ export const repoInsights = z.object({
30
+ framework: frameworkPreset,
31
+ language: z.string(),
32
+ packageManager: packageManagerId.nullable(),
33
+ nodeVersion: z.string().nullable(),
34
+ frameworkVersion: z.string().nullable(),
35
+ scripts: z.record(z.string(), z.string()),
36
+ dependencyCount: z.number().int(),
37
+ devDependencyCount: z.number().int(),
38
+ hasDockerfile: z.boolean(),
39
+ hasComposeFile: z.boolean(),
40
+ monorepo: z.boolean(),
41
+ /** Marker files the detection was derived from (e.g. package.json, go.mod). */
42
+ detectedFiles: z.array(z.string()),
43
+ /** Workspace member packages of a monorepo root (empty for single-app repos
44
+ * and for analyses scoped to a base directory). Powers the wizard's
45
+ * "deploy each sub-app as its own service" picker. */
46
+ workspacePackages: z.array(z.object({
47
+ /** Repo-relative directory, e.g. "apps/web". */
48
+ dir: z.string(),
49
+ name: z.string().nullable(),
50
+ framework: z.string().nullable(),
51
+ frameworkVersion: z.string().nullable(),
52
+ })),
53
+ baseDir: z.string(),
54
+ commitSha: z.string().nullable().optional(),
55
+ analyzedAt: z.string().datetime(),
56
+ });
57
+ /** Pre-deploy inspection request (DeployWizard, before a service exists). */
58
+ export const analyzeRepoInput = z.object({
59
+ repoUrl: gitRepoUrl,
60
+ branch: gitBranch.default('main'),
61
+ sourceId: z.number().int().positive().optional(),
62
+ baseDir: repoBaseDir.optional(),
63
+ });
64
+ //# sourceMappingURL=insights.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"insights.js","sourceRoot":"","sources":["../src/insights.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,108 @@
1
+ import { z } from 'zod';
2
+ /**
3
+ * Workspace-scoped free-form labels used to tag services without tying them
4
+ * to the project hierarchy (e.g. "production", "staging", "team-x"). Labels
5
+ * can be created on the fly; the color is a tailwind-style palette token
6
+ * consumed by the UI.
7
+ */
8
+ export declare const labelColor: z.ZodEnum<{
9
+ amber: "amber";
10
+ emerald: "emerald";
11
+ indigo: "indigo";
12
+ lime: "lime";
13
+ rose: "rose";
14
+ sky: "sky";
15
+ slate: "slate";
16
+ violet: "violet";
17
+ }>;
18
+ export type LabelColor = z.infer<typeof labelColor>;
19
+ export declare const createLabel: z.ZodObject<{
20
+ workspaceId: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
21
+ name: z.ZodString;
22
+ color: z.ZodDefault<z.ZodEnum<{
23
+ amber: "amber";
24
+ emerald: "emerald";
25
+ indigo: "indigo";
26
+ lime: "lime";
27
+ rose: "rose";
28
+ sky: "sky";
29
+ slate: "slate";
30
+ violet: "violet";
31
+ }>>;
32
+ }, z.core.$strip>;
33
+ export type CreateLabel = z.infer<typeof createLabel>;
34
+ export type CreateLabelInput = CreateLabel;
35
+ export declare const labelPatch: z.ZodObject<{
36
+ name: z.ZodOptional<z.ZodString>;
37
+ color: z.ZodOptional<z.ZodEnum<{
38
+ amber: "amber";
39
+ emerald: "emerald";
40
+ indigo: "indigo";
41
+ lime: "lime";
42
+ rose: "rose";
43
+ sky: "sky";
44
+ slate: "slate";
45
+ violet: "violet";
46
+ }>>;
47
+ }, z.core.$strip>;
48
+ export type LabelPatch = z.infer<typeof labelPatch>;
49
+ export type LabelPatchInput = LabelPatch;
50
+ export declare const label: z.ZodObject<{
51
+ id: z.ZodNumber;
52
+ workspaceId: z.ZodNullable<z.ZodNumber>;
53
+ name: z.ZodString;
54
+ color: z.ZodString;
55
+ serviceCount: z.ZodNumber;
56
+ createdAt: z.ZodString;
57
+ updatedAt: z.ZodString;
58
+ }, z.core.$strip>;
59
+ export type Label = z.infer<typeof label>;
60
+ /**
61
+ * PUT /v1/services/:id/tags body — replaces the service's project / workspace
62
+ * / label memberships wholesale. The caller must be a member of every
63
+ * workspace in `workspaceIds` (or an operator), and every project/label id
64
+ * must be valid. Empty arrays clear the corresponding dimension.
65
+ */
66
+ export declare const setServiceTags: z.ZodObject<{
67
+ projectIds: z.ZodDefault<z.ZodArray<z.ZodNumber>>;
68
+ workspaceIds: z.ZodDefault<z.ZodArray<z.ZodNumber>>;
69
+ labelIds: z.ZodDefault<z.ZodArray<z.ZodNumber>>;
70
+ }, z.core.$strip>;
71
+ export type SetServiceTags = z.infer<typeof setServiceTags>;
72
+ export type SetServiceTagsInput = SetServiceTags;
73
+ export declare const serviceTags: z.ZodObject<{
74
+ serviceId: z.ZodNumber;
75
+ projects: z.ZodArray<z.ZodObject<{
76
+ id: z.ZodNumber;
77
+ name: z.ZodString;
78
+ slug: z.ZodString;
79
+ }, z.core.$strip>>;
80
+ workspaces: z.ZodArray<z.ZodObject<{
81
+ id: z.ZodNumber;
82
+ name: z.ZodString;
83
+ slug: z.ZodString;
84
+ }, z.core.$strip>>;
85
+ labels: z.ZodArray<z.ZodObject<{
86
+ id: z.ZodNumber;
87
+ name: z.ZodString;
88
+ color: z.ZodString;
89
+ }, z.core.$strip>>;
90
+ }, z.core.$strip>;
91
+ export type ServiceTags = z.infer<typeof serviceTags>;
92
+ /**
93
+ * /v1/services list filter — every present array is OR'd within its dimension
94
+ * and AND'd across dimensions. An empty array means "no filter on this
95
+ * dimension" (so omitting all three is equivalent to the unfiltered list).
96
+ *
97
+ * ?tagWorkspaceIds=1,2 → service is in ws 1 OR ws 2
98
+ * ?tagProjectIds=10 → service has project 10
99
+ * ?tagLabelIds=3,4 → service has label 3 OR 4
100
+ * combined: AND across dimensions
101
+ */
102
+ export declare const serviceListFilter: z.ZodObject<{
103
+ tagWorkspaceIds: z.ZodDefault<z.ZodArray<z.ZodNumber>>;
104
+ tagProjectIds: z.ZodDefault<z.ZodArray<z.ZodNumber>>;
105
+ tagLabelIds: z.ZodDefault<z.ZodArray<z.ZodNumber>>;
106
+ }, z.core.$strip>;
107
+ export type ServiceListFilter = z.infer<typeof serviceListFilter>;
108
+ //# sourceMappingURL=labels.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"labels.d.ts","sourceRoot":"","sources":["../src/labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;GAKG;AACH,eAAO,MAAM,UAAU;;;;;;;;;EASrB,CAAC;AACH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC;AAEpD,eAAO,MAAM,WAAW;;;;;;;;;;;;;iBAItB,CAAC;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AACtD,MAAM,MAAM,gBAAgB,GAAG,WAAW,CAAC;AAE3C,eAAO,MAAM,UAAU;;;;;;;;;;;;iBAKsD,CAAC;AAC9E,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC;AACpD,MAAM,MAAM,eAAe,GAAG,UAAU,CAAC;AAEzC,eAAO,MAAM,KAAK;;;;;;;;iBAQhB,CAAC;AACH,MAAM,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,KAAK,CAAC,CAAC;AAE1C;;;;;GAKG;AACH,eAAO,MAAM,cAAc;;;;iBAIzB,CAAC;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAC5D,MAAM,MAAM,mBAAmB,GAAG,cAAc,CAAC;AAEjD,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;iBAKtB,CAAC;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAEtD;;;;;;;;;GASG;AACH,eAAO,MAAM,iBAAiB;;;;iBAI5B,CAAC;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC"}