@ninedeploy/schemas 0.10.6 → 0.16.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.
Files changed (113) hide show
  1. package/LICENSE +21 -21
  2. package/dist/accessGrants.d.ts +156 -0
  3. package/dist/accessGrants.d.ts.map +1 -0
  4. package/dist/accessGrants.js +100 -0
  5. package/dist/accessGrants.js.map +1 -0
  6. package/dist/agentCommand.d.ts.map +1 -1
  7. package/dist/agentCommand.js +11 -1
  8. package/dist/agentCommand.js.map +1 -1
  9. package/dist/auth.d.ts +53 -0
  10. package/dist/auth.d.ts.map +1 -1
  11. package/dist/auth.js +26 -0
  12. package/dist/auth.js.map +1 -1
  13. package/dist/backupPolicy.d.ts +37 -0
  14. package/dist/backupPolicy.d.ts.map +1 -0
  15. package/dist/backupPolicy.js +50 -0
  16. package/dist/backupPolicy.js.map +1 -0
  17. package/dist/common.d.ts +21 -5
  18. package/dist/common.d.ts.map +1 -1
  19. package/dist/common.js +35 -6
  20. package/dist/common.js.map +1 -1
  21. package/dist/databaseImport.d.ts +145 -0
  22. package/dist/databaseImport.d.ts.map +1 -0
  23. package/dist/databaseImport.js +115 -0
  24. package/dist/databaseImport.js.map +1 -0
  25. package/dist/doctor.d.ts +16 -0
  26. package/dist/doctor.d.ts.map +1 -1
  27. package/dist/doctor.js +25 -0
  28. package/dist/doctor.js.map +1 -1
  29. package/dist/githubApp.d.ts +236 -0
  30. package/dist/githubApp.d.ts.map +1 -0
  31. package/dist/githubApp.js +223 -0
  32. package/dist/githubApp.js.map +1 -0
  33. package/dist/index.d.ts +11 -0
  34. package/dist/index.d.ts.map +1 -1
  35. package/dist/index.js +11 -0
  36. package/dist/index.js.map +1 -1
  37. package/dist/kernel.d.ts +5 -2
  38. package/dist/kernel.d.ts.map +1 -1
  39. package/dist/kernel.js +11 -2
  40. package/dist/kernel.js.map +1 -1
  41. package/dist/management.d.ts +46 -2
  42. package/dist/management.d.ts.map +1 -1
  43. package/dist/management.js +68 -15
  44. package/dist/management.js.map +1 -1
  45. package/dist/multiNode.d.ts +326 -0
  46. package/dist/multiNode.d.ts.map +1 -0
  47. package/dist/multiNode.js +296 -0
  48. package/dist/multiNode.js.map +1 -0
  49. package/dist/ninedeployManifest.d.ts.map +1 -1
  50. package/dist/ninedeployManifest.js +6 -3
  51. package/dist/ninedeployManifest.js.map +1 -1
  52. package/dist/panelBackup.d.ts +73 -0
  53. package/dist/panelBackup.d.ts.map +1 -0
  54. package/dist/panelBackup.js +45 -0
  55. package/dist/panelBackup.js.map +1 -0
  56. package/dist/proxyConfig.d.ts +132 -0
  57. package/dist/proxyConfig.d.ts.map +1 -0
  58. package/dist/proxyConfig.js +105 -0
  59. package/dist/proxyConfig.js.map +1 -0
  60. package/dist/publicAccess.d.ts +64 -0
  61. package/dist/publicAccess.d.ts.map +1 -0
  62. package/dist/publicAccess.js +63 -0
  63. package/dist/publicAccess.js.map +1 -0
  64. package/dist/secretProviders.d.ts +119 -0
  65. package/dist/secretProviders.d.ts.map +1 -0
  66. package/dist/secretProviders.js +130 -0
  67. package/dist/secretProviders.js.map +1 -0
  68. package/dist/secretScan.js +1 -1
  69. package/dist/service.d.ts +235 -17
  70. package/dist/service.d.ts.map +1 -1
  71. package/dist/service.js +331 -26
  72. package/dist/service.js.map +1 -1
  73. package/dist/terminals.d.ts +284 -0
  74. package/dist/terminals.d.ts.map +1 -0
  75. package/dist/terminals.js +177 -0
  76. package/dist/terminals.js.map +1 -0
  77. package/dist/traffic.d.ts +276 -0
  78. package/dist/traffic.d.ts.map +1 -0
  79. package/dist/traffic.js +103 -0
  80. package/dist/traffic.js.map +1 -0
  81. package/dist/workspaces.d.ts +19 -1
  82. package/dist/workspaces.d.ts.map +1 -1
  83. package/dist/workspaces.js +26 -0
  84. package/dist/workspaces.js.map +1 -1
  85. package/package.json +5 -4
  86. package/src/accessGrants.ts +117 -0
  87. package/src/agentCommand.ts +67 -0
  88. package/src/ai.ts +32 -0
  89. package/src/auth.ts +323 -0
  90. package/src/backupPolicy.ts +55 -0
  91. package/src/common.ts +179 -0
  92. package/src/databaseImport.ts +138 -0
  93. package/src/doctor.ts +161 -0
  94. package/src/environments.ts +23 -0
  95. package/src/githubApp.ts +268 -0
  96. package/src/index.ts +30 -0
  97. package/src/insights.ts +78 -0
  98. package/src/kernel.ts +180 -0
  99. package/src/labels.ts +86 -0
  100. package/src/management.ts +620 -0
  101. package/src/multiNode.ts +356 -0
  102. package/src/ninedeployManifest.ts +363 -0
  103. package/src/panelBackup.ts +90 -0
  104. package/src/project.ts +42 -0
  105. package/src/proxyConfig.ts +139 -0
  106. package/src/publicAccess.ts +80 -0
  107. package/src/runtimeVersions.ts +232 -0
  108. package/src/secretProviders.ts +159 -0
  109. package/src/secretScan.ts +169 -0
  110. package/src/service.ts +1310 -0
  111. package/src/terminals.ts +212 -0
  112. package/src/traffic.ts +130 -0
  113. package/src/workspaces.ts +215 -0
@@ -0,0 +1,50 @@
1
+ import { z } from 'zod';
2
+ // ── Per-database backup policy (0.12) ──────────────────────────────────────
3
+ /** Bounds for both retention counts. At least one dump is always kept, so a
4
+ * policy can never prune a database's last good backup. */
5
+ export const BACKUP_RETAIN_MIN = 1;
6
+ export const BACKUP_RETAIN_MAX = 365;
7
+ /** What a database WITHOUT a policy gets: the built-in schedule. */
8
+ export const DEFAULT_BACKUP_RETAIN_COUNT = 7;
9
+ const retain = z.number().int().min(BACKUP_RETAIN_MIN).max(BACKUP_RETAIN_MAX);
10
+ /**
11
+ * PUT /v1/databases/:id/backup-policy — the whole policy (PUT replaces).
12
+ * The cron expression is validated with croner (5-part) at the route, the
13
+ * same rule scheduled jobs use; the schema package has no cron dependency.
14
+ */
15
+ export const backupPolicyInput = z
16
+ .object({
17
+ enabled: z.boolean().default(true),
18
+ cron: z.string().trim().min(1).max(120),
19
+ retainCount: retain,
20
+ /** Remote copies kept; null/omitted = the remote copies of the newest `retainCount` dumps. */
21
+ retainRemoteCount: retain.nullable().optional().transform((v) => v ?? null),
22
+ /** A `backup_destinations` id; null/omitted = the active destination. */
23
+ destinationId: z.number().int().positive().nullable().optional().transform((v) => v ?? null),
24
+ /** true = keep this database's scheduled dumps on the panel host only. */
25
+ localOnly: z.boolean().optional().transform((v) => v ?? false),
26
+ })
27
+ .refine((p) => !(p.localOnly && p.destinationId != null), {
28
+ message: 'localOnly and destinationId are mutually exclusive',
29
+ path: ['destinationId'],
30
+ })
31
+ .refine((p) => !(p.localOnly && p.retainRemoteCount != null), {
32
+ message: 'retainRemoteCount has no effect on a local-only policy',
33
+ path: ['retainRemoteCount'],
34
+ });
35
+ /** GET/PUT response. `configured: false` = no policy row: the built-in
36
+ * schedule (daily, 7 kept, active destination) applies and `cron` is null. */
37
+ export const backupPolicy = z.object({
38
+ databaseId: z.number().int(),
39
+ configured: z.boolean(),
40
+ enabled: z.boolean(),
41
+ cron: z.string().nullable(),
42
+ retainCount: z.number().int(),
43
+ retainRemoteCount: z.number().int().nullable(),
44
+ destinationId: z.number().int().nullable(),
45
+ localOnly: z.boolean(),
46
+ /** Next scheduled run for a configured, enabled policy (ISO); null otherwise. */
47
+ nextRunAt: z.string().nullable(),
48
+ updatedAt: z.string().nullable(),
49
+ });
50
+ //# sourceMappingURL=backupPolicy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backupPolicy.js","sourceRoot":"","sources":["../src/backupPolicy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,8EAA8E;AAC9E;4DAC4D;AAC5D,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC;AACnC,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAG,CAAC;AACrC,oEAAoE;AACpE,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC;AAE7C,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;AAE9E;;;;GAIG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC;KAC/B,MAAM,CAAC;IACN,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IAClC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;IACvC,WAAW,EAAE,MAAM;IACnB,8FAA8F;IAC9F,iBAAiB,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC;IAC3E,yEAAyE;IACzE,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC;IAC5F,0EAA0E;IAC1E,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,KAAK,CAAC;CAC/D,CAAC;KACD,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,aAAa,IAAI,IAAI,CAAC,EAAE;IACxD,OAAO,EAAE,oDAAoD;IAC7D,IAAI,EAAE,CAAC,eAAe,CAAC;CACxB,CAAC;KACD,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,iBAAiB,IAAI,IAAI,CAAC,EAAE;IAC5D,OAAO,EAAE,wDAAwD;IACjE,IAAI,EAAE,CAAC,mBAAmB,CAAC;CAC5B,CAAC,CAAC;AAGL;+EAC+E;AAC/E,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;IACnC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;IAC5B,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE;IACvB,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE;IACpB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;IAC7B,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;IAC9C,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;IAC1C,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE;IACtB,iFAAiF;IACjF,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACjC,CAAC,CAAC"}
package/dist/common.d.ts CHANGED
@@ -30,6 +30,20 @@ export declare const httpPath: z.ZodString;
30
30
  * scheme is pinned here rather than relying on the toolchain to stay strict.
31
31
  */
32
32
  export declare const gitRepoUrl: z.ZodURL;
33
+ /**
34
+ * 0.13: the base URL of an operator-supplied git provider API or web UI
35
+ * (a Gitea instance, GitHub Enterprise Server, `https://github.com`).
36
+ *
37
+ * `http:` is accepted HERE on purpose: whether plain http is allowed depends on
38
+ * the server's `NINEDEPLOY_ALLOW_PRIVATE_EGRESS` escape hatch, which this
39
+ * package cannot see. The server refuses `http:` unless that flag is set, and
40
+ * every call still goes through its egress guard. Rejecting http in the schema
41
+ * would make the documented escape hatch (an internal http-only Gitea)
42
+ * unusable. Userinfo, query and fragment are refused — a base URL never needs
43
+ * them, and userinfo would smuggle credentials into a URL that gets logged.
44
+ * Trailing slashes are dropped so `${base}/api/v1/…` joins cleanly.
45
+ */
46
+ export declare const providerBaseUrl: z.ZodPipe<z.ZodPipe<z.ZodString, z.ZodURL>, z.ZodTransform<string, string>>;
33
47
  /**
34
48
  * A git branch/ref name. Reaches `git checkout` / `git pull` as an argv
35
49
  * element, so a value starting with `-` would be read as an option rather
@@ -48,11 +62,13 @@ export declare const repoBaseDir: z.ZodString;
48
62
  */
49
63
  export declare const containerPath: z.ZodString;
50
64
  /**
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.
65
+ * Docker named-volume name: letters (BOTH cases — the `i` flag is deliberate,
66
+ * r474: docker itself accepts uppercase volume names, and rejecting them
67
+ * would break attach flows against pre-existing out-of-band volumes), digits,
68
+ * underscores, hyphens and dots; must start with alnum; max 64 chars (the
69
+ * volume driver limit on most filesystems). The managed prefixes `nd-svc-` /
70
+ * `nd-db-` are lowercased by construction; a non-managed name attaches a
71
+ * pre-existing volume the client created out-of-band.
56
72
  */
57
73
  export declare const dockerVolumeName: z.ZodString;
58
74
  /** Cursor-style pagination params. */
@@ -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;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"}
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;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,eAAe,6EASsB,CAAC;AAEnD;;;;;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,aAQmE,CAAC;AAE9F;;;;;;;;GAQG;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
@@ -44,6 +44,29 @@ export const gitRepoUrl = z
44
44
  .refine((value) => /^(?:https?|ssh):\/\//i.test(value), {
45
45
  message: 'repoUrl must be an http(s) or ssh URL',
46
46
  });
47
+ /**
48
+ * 0.13: the base URL of an operator-supplied git provider API or web UI
49
+ * (a Gitea instance, GitHub Enterprise Server, `https://github.com`).
50
+ *
51
+ * `http:` is accepted HERE on purpose: whether plain http is allowed depends on
52
+ * the server's `NINEDEPLOY_ALLOW_PRIVATE_EGRESS` escape hatch, which this
53
+ * package cannot see. The server refuses `http:` unless that flag is set, and
54
+ * every call still goes through its egress guard. Rejecting http in the schema
55
+ * would make the documented escape hatch (an internal http-only Gitea)
56
+ * unusable. Userinfo, query and fragment are refused — a base URL never needs
57
+ * them, and userinfo would smuggle credentials into a URL that gets logged.
58
+ * Trailing slashes are dropped so `${base}/api/v1/…` joins cleanly.
59
+ */
60
+ export const providerBaseUrl = z
61
+ .string()
62
+ .trim()
63
+ .max(2048)
64
+ .pipe(z.url({ protocol: /^https?$/, message: 'must be an http(s) URL' }))
65
+ // Everything after the scheme: no `@` (userinfo), `?` or `#`.
66
+ .refine((value) => !/[@?#]/.test(value.slice(value.indexOf(':') + 3)), {
67
+ message: 'must be a base URL without credentials, query or fragment',
68
+ })
69
+ .transform((value) => value.replace(/\/+$/, ''));
47
70
  /**
48
71
  * A git branch/ref name. Reaches `git checkout` / `git pull` as an argv
49
72
  * element, so a value starting with `-` would be read as an option rather
@@ -90,13 +113,19 @@ export const containerPath = z
90
113
  .string()
91
114
  .min(1)
92
115
  .max(1024)
93
- .regex(/^\/[^/].*|^\/$/, 'must be an absolute path starting with a single "/"');
116
+ // Anchored on both ends: the old `^\/[^/].*` prefix-match let `/a/../b`,
117
+ // embedded NUL/newline and interior `//` through. Segments are non-empty,
118
+ // slash-free and control-char-free; a lone `/` stays valid.
119
+ .regex(/^\/(?:[^/\0\n\r]+\/?)*$/, 'must be an absolute path starting with a single "/"')
120
+ .refine((v) => !v.split('/').includes('..'), { message: 'must not contain ".." segments' });
94
121
  /**
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.
122
+ * Docker named-volume name: letters (BOTH cases — the `i` flag is deliberate,
123
+ * r474: docker itself accepts uppercase volume names, and rejecting them
124
+ * would break attach flows against pre-existing out-of-band volumes), digits,
125
+ * underscores, hyphens and dots; must start with alnum; max 64 chars (the
126
+ * volume driver limit on most filesystems). The managed prefixes `nd-svc-` /
127
+ * `nd-db-` are lowercased by construction; a non-managed name attaches a
128
+ * pre-existing volume the client created out-of-band.
100
129
  */
101
130
  export const dockerVolumeName = z
102
131
  .string()
@@ -1 +1 @@
1
- {"version":3,"file":"common.js","sourceRoot":"","sources":["../src/common.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"common.js","sourceRoot":"","sources":["../src/common.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,145 @@
1
+ import { z } from 'zod';
2
+ /** 8 MiB. Advertised by the server on every import; chunks arrive in order. */
3
+ export declare const DATABASE_IMPORT_CHUNK_SIZE: number;
4
+ /** Mirrors `databaseImportSource` in `@ninedeploy/db`. */
5
+ export declare const databaseImportSource: z.ZodEnum<{
6
+ s3: "s3";
7
+ upload: "upload";
8
+ }>;
9
+ export type DatabaseImportSource = z.infer<typeof databaseImportSource>;
10
+ /** Mirrors `databaseImportStatus` in `@ninedeploy/db`. */
11
+ export declare const databaseImportStatus: z.ZodEnum<{
12
+ cancelled: "cancelled";
13
+ completed: "completed";
14
+ completed_with_warnings: "completed_with_warnings";
15
+ expired: "expired";
16
+ failed: "failed";
17
+ pending: "pending";
18
+ running: "running";
19
+ uploading: "uploading";
20
+ }>;
21
+ export type DatabaseImportStatus = z.infer<typeof databaseImportStatus>;
22
+ /** Mirrors `databaseImportFormat` in `@ninedeploy/db`. */
23
+ export declare const databaseImportFormat: z.ZodEnum<{
24
+ mongo_archive: "mongo_archive";
25
+ mysql_sql: "mysql_sql";
26
+ pg_custom: "pg_custom";
27
+ pg_plain: "pg_plain";
28
+ rdb: "rdb";
29
+ }>;
30
+ export type DatabaseImportFormat = z.infer<typeof databaseImportFormat>;
31
+ /**
32
+ * Import options. Strict: an unknown key is refused, not dropped. The server
33
+ * further refuses keys that do not apply to the database's engine, and
34
+ * applies `singleTransaction: true` when it is omitted (postgres).
35
+ */
36
+ export declare const databaseImportOptions: z.ZodObject<{
37
+ clean: z.ZodOptional<z.ZodBoolean>;
38
+ singleTransaction: z.ZodOptional<z.ZodBoolean>;
39
+ drop: z.ZodOptional<z.ZodBoolean>;
40
+ confirmReplace: z.ZodOptional<z.ZodBoolean>;
41
+ skipSafetyBackup: z.ZodOptional<z.ZodBoolean>;
42
+ }, z.core.$strict>;
43
+ export type DatabaseImportOptions = z.infer<typeof databaseImportOptions>;
44
+ /**
45
+ * The engines an import accepts, and the option keys each one applies. The
46
+ * server refuses (422) any other engine, and any key not listed for the
47
+ * database's engine. clickhouse, meilisearch and rabbitmq have no import.
48
+ */
49
+ export declare const DATABASE_IMPORT_ENGINE_OPTIONS: {
50
+ readonly postgres: readonly ["clean", "singleTransaction", "skipSafetyBackup"];
51
+ readonly mysql: readonly ["skipSafetyBackup"];
52
+ readonly mariadb: readonly ["skipSafetyBackup"];
53
+ readonly mongo: readonly ["drop", "skipSafetyBackup"];
54
+ readonly redis: readonly ["confirmReplace", "skipSafetyBackup"];
55
+ readonly valkey: readonly ["confirmReplace", "skipSafetyBackup"];
56
+ readonly keydb: readonly ["confirmReplace", "skipSafetyBackup"];
57
+ readonly dragonfly: readonly ["confirmReplace", "skipSafetyBackup"];
58
+ };
59
+ export type DatabaseImportEngine = keyof typeof DATABASE_IMPORT_ENGINE_OPTIONS;
60
+ /** POST /v1/databases/:id/imports. */
61
+ export declare const databaseImportCreate: z.ZodDiscriminatedUnion<[z.ZodObject<{
62
+ source: z.ZodLiteral<"upload">;
63
+ sizeBytes: z.ZodNumber;
64
+ sha256: z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>>;
65
+ filename: z.ZodOptional<z.ZodString>;
66
+ options: z.ZodDefault<z.ZodObject<{
67
+ clean: z.ZodOptional<z.ZodBoolean>;
68
+ singleTransaction: z.ZodOptional<z.ZodBoolean>;
69
+ drop: z.ZodOptional<z.ZodBoolean>;
70
+ confirmReplace: z.ZodOptional<z.ZodBoolean>;
71
+ skipSafetyBackup: z.ZodOptional<z.ZodBoolean>;
72
+ }, z.core.$strict>>;
73
+ }, z.core.$strip>, z.ZodObject<{
74
+ source: z.ZodLiteral<"s3">;
75
+ destinationId: z.ZodNumber;
76
+ key: z.ZodString;
77
+ options: z.ZodDefault<z.ZodObject<{
78
+ clean: z.ZodOptional<z.ZodBoolean>;
79
+ singleTransaction: z.ZodOptional<z.ZodBoolean>;
80
+ drop: z.ZodOptional<z.ZodBoolean>;
81
+ confirmReplace: z.ZodOptional<z.ZodBoolean>;
82
+ skipSafetyBackup: z.ZodOptional<z.ZodBoolean>;
83
+ }, z.core.$strict>>;
84
+ }, z.core.$strip>], "source">;
85
+ export type DatabaseImportCreate = z.input<typeof databaseImportCreate>;
86
+ /** One import row as the API returns it. */
87
+ export declare const databaseImport: z.ZodObject<{
88
+ id: z.ZodNumber;
89
+ databaseId: z.ZodNumber;
90
+ source: z.ZodEnum<{
91
+ s3: "s3";
92
+ upload: "upload";
93
+ }>;
94
+ status: z.ZodEnum<{
95
+ cancelled: "cancelled";
96
+ completed: "completed";
97
+ completed_with_warnings: "completed_with_warnings";
98
+ expired: "expired";
99
+ failed: "failed";
100
+ pending: "pending";
101
+ running: "running";
102
+ uploading: "uploading";
103
+ }>;
104
+ format: z.ZodNullable<z.ZodEnum<{
105
+ mongo_archive: "mongo_archive";
106
+ mysql_sql: "mysql_sql";
107
+ pg_custom: "pg_custom";
108
+ pg_plain: "pg_plain";
109
+ rdb: "rdb";
110
+ }>>;
111
+ sizeBytes: z.ZodNumber;
112
+ receivedBytes: z.ZodNumber;
113
+ chunkSize: z.ZodNumber;
114
+ sha256: z.ZodNullable<z.ZodString>;
115
+ filename: z.ZodNullable<z.ZodString>;
116
+ destinationId: z.ZodNullable<z.ZodNumber>;
117
+ objectKey: z.ZodNullable<z.ZodString>;
118
+ options: z.ZodObject<{
119
+ clean: z.ZodOptional<z.ZodBoolean>;
120
+ singleTransaction: z.ZodOptional<z.ZodBoolean>;
121
+ drop: z.ZodOptional<z.ZodBoolean>;
122
+ confirmReplace: z.ZodOptional<z.ZodBoolean>;
123
+ skipSafetyBackup: z.ZodOptional<z.ZodBoolean>;
124
+ }, z.core.$strict>;
125
+ safetyBackupId: z.ZodNullable<z.ZodNumber>;
126
+ error: z.ZodNullable<z.ZodString>;
127
+ createdByUserId: z.ZodNullable<z.ZodNumber>;
128
+ createdAt: z.ZodString;
129
+ updatedAt: z.ZodString;
130
+ startedAt: z.ZodNullable<z.ZodString>;
131
+ completedAt: z.ZodNullable<z.ZodString>;
132
+ }, z.core.$strip>;
133
+ export type DatabaseImport = z.infer<typeof databaseImport>;
134
+ /** GET /v1/backup-destinations/:id/objects?prefix= (operator). */
135
+ export declare const backupDestinationObjectsQuery: z.ZodObject<{
136
+ prefix: z.ZodOptional<z.ZodString>;
137
+ }, z.core.$strip>;
138
+ export type BackupDestinationObjectsQuery = z.infer<typeof backupDestinationObjectsQuery>;
139
+ export declare const backupDestinationObject: z.ZodObject<{
140
+ key: z.ZodString;
141
+ sizeBytes: z.ZodNumber;
142
+ lastModified: z.ZodNullable<z.ZodString>;
143
+ }, z.core.$strip>;
144
+ export type BackupDestinationObject = z.infer<typeof backupDestinationObject>;
145
+ //# sourceMappingURL=databaseImport.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"databaseImport.d.ts","sourceRoot":"","sources":["../src/databaseImport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAUxB,+EAA+E;AAC/E,eAAO,MAAM,0BAA0B,QAAkB,CAAC;AAE1D,0DAA0D;AAC1D,eAAO,MAAM,oBAAoB;;;EAA2B,CAAC;AAC7D,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAExE,0DAA0D;AAC1D,eAAO,MAAM,oBAAoB;;;;;;;;;EAS/B,CAAC;AACH,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAExE,0DAA0D;AAC1D,eAAO,MAAM,oBAAoB;;;;;;EAAyE,CAAC;AAC3G,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAExE;;;;GAIG;AACH,eAAO,MAAM,qBAAqB;;;;;;kBAavB,CAAC;AACZ,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAE1E;;;;GAIG;AACH,eAAO,MAAM,8BAA8B;;;;;;;;;CASoC,CAAC;AAChF,MAAM,MAAM,oBAAoB,GAAG,MAAM,OAAO,8BAA8B,CAAC;AA2B/E,sCAAsC;AACtC,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;6BAA2D,CAAC;AAC7F,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAExE,4CAA4C;AAC5C,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAqBzB,CAAC;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAE5D,kEAAkE;AAClE,eAAO,MAAM,6BAA6B;;iBAExC,CAAC;AACH,MAAM,MAAM,6BAA6B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,6BAA6B,CAAC,CAAC;AAE1F,eAAO,MAAM,uBAAuB;;;;iBAIlC,CAAC;AACH,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC"}
@@ -0,0 +1,115 @@
1
+ import { z } from 'zod';
2
+ import { id } from './common.js';
3
+ // ── Database dump import (0.14) ────────────────────────────────────────────
4
+ // Request and response shapes for `/v1/databases/:id/imports` and
5
+ // `/v1/backup-destinations/:id/objects`. Uploads are chunked and resumable
6
+ // (Traefik's 60s read timeout would cut a single multi-GB request). The
7
+ // server detects the format by magic bytes, refuses engines and options that
8
+ // do not apply, and enforces size, disk and role rules. Design: DESIGN.md §3.
9
+ /** 8 MiB. Advertised by the server on every import; chunks arrive in order. */
10
+ export const DATABASE_IMPORT_CHUNK_SIZE = 8 * 1024 * 1024;
11
+ /** Mirrors `databaseImportSource` in `@ninedeploy/db`. */
12
+ export const databaseImportSource = z.enum(['upload', 's3']);
13
+ /** Mirrors `databaseImportStatus` in `@ninedeploy/db`. */
14
+ export const databaseImportStatus = z.enum([
15
+ 'uploading',
16
+ 'pending',
17
+ 'running',
18
+ 'completed',
19
+ 'completed_with_warnings',
20
+ 'failed',
21
+ 'cancelled',
22
+ 'expired',
23
+ ]);
24
+ /** Mirrors `databaseImportFormat` in `@ninedeploy/db`. */
25
+ export const databaseImportFormat = z.enum(['pg_custom', 'pg_plain', 'mysql_sql', 'mongo_archive', 'rdb']);
26
+ /**
27
+ * Import options. Strict: an unknown key is refused, not dropped. The server
28
+ * further refuses keys that do not apply to the database's engine, and
29
+ * applies `singleTransaction: true` when it is omitted (postgres).
30
+ */
31
+ export const databaseImportOptions = z
32
+ .object({
33
+ /** postgres custom format: `--clean --if-exists`. */
34
+ clean: z.boolean().optional(),
35
+ /** postgres: wrap the restore in one transaction (server default true). */
36
+ singleTransaction: z.boolean().optional(),
37
+ /** mongo: `--drop`. */
38
+ drop: z.boolean().optional(),
39
+ /** redis/valkey/keydb/dragonfly: required, the RDB replaces the whole dataset. */
40
+ confirmReplace: z.boolean().optional(),
41
+ /** Operator, or a database initialised in the last 10 minutes, only. */
42
+ skipSafetyBackup: z.boolean().optional(),
43
+ })
44
+ .strict();
45
+ /**
46
+ * The engines an import accepts, and the option keys each one applies. The
47
+ * server refuses (422) any other engine, and any key not listed for the
48
+ * database's engine. clickhouse, meilisearch and rabbitmq have no import.
49
+ */
50
+ export const DATABASE_IMPORT_ENGINE_OPTIONS = {
51
+ postgres: ['clean', 'singleTransaction', 'skipSafetyBackup'],
52
+ mysql: ['skipSafetyBackup'],
53
+ mariadb: ['skipSafetyBackup'],
54
+ mongo: ['drop', 'skipSafetyBackup'],
55
+ redis: ['confirmReplace', 'skipSafetyBackup'],
56
+ valkey: ['confirmReplace', 'skipSafetyBackup'],
57
+ keydb: ['confirmReplace', 'skipSafetyBackup'],
58
+ dragonfly: ['confirmReplace', 'skipSafetyBackup'],
59
+ };
60
+ const sha256Hex = z
61
+ .string()
62
+ .trim()
63
+ .regex(/^[A-Fa-f0-9]{64}$/, 'sha256 must be 64 hex characters')
64
+ .transform((v) => v.toLowerCase());
65
+ /** Display only; the staging path is always chosen by the server. */
66
+ const importFilename = z.string().trim().min(1).max(255);
67
+ const uploadSource = z.object({
68
+ source: z.literal('upload'),
69
+ sizeBytes: z.number().int().positive(),
70
+ sha256: sha256Hex.optional(),
71
+ filename: importFilename.optional(),
72
+ options: databaseImportOptions.default({}),
73
+ });
74
+ /** S3 imports are operator only (checked in the handler). */
75
+ const s3Source = z.object({
76
+ source: z.literal('s3'),
77
+ destinationId: id,
78
+ key: z.string().min(1).max(1024),
79
+ options: databaseImportOptions.default({}),
80
+ });
81
+ /** POST /v1/databases/:id/imports. */
82
+ export const databaseImportCreate = z.discriminatedUnion('source', [uploadSource, s3Source]);
83
+ /** One import row as the API returns it. */
84
+ export const databaseImport = z.object({
85
+ id: z.number().int(),
86
+ databaseId: z.number().int(),
87
+ source: databaseImportSource,
88
+ status: databaseImportStatus,
89
+ format: databaseImportFormat.nullable(),
90
+ sizeBytes: z.number().int(),
91
+ receivedBytes: z.number().int(),
92
+ chunkSize: z.number().int(),
93
+ sha256: z.string().nullable(),
94
+ filename: z.string().nullable(),
95
+ destinationId: z.number().int().nullable(),
96
+ objectKey: z.string().nullable(),
97
+ options: databaseImportOptions,
98
+ safetyBackupId: z.number().int().nullable(),
99
+ error: z.string().nullable(),
100
+ createdByUserId: z.number().int().nullable(),
101
+ createdAt: z.string(),
102
+ updatedAt: z.string(),
103
+ startedAt: z.string().nullable(),
104
+ completedAt: z.string().nullable(),
105
+ });
106
+ /** GET /v1/backup-destinations/:id/objects?prefix= (operator). */
107
+ export const backupDestinationObjectsQuery = z.object({
108
+ prefix: z.string().max(1024).optional(),
109
+ });
110
+ export const backupDestinationObject = z.object({
111
+ key: z.string(),
112
+ sizeBytes: z.number().int(),
113
+ lastModified: z.string().nullable(),
114
+ });
115
+ //# sourceMappingURL=databaseImport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"databaseImport.js","sourceRoot":"","sources":["../src/databaseImport.ts"],"names":[],"mappings":"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"}
package/dist/doctor.d.ts CHANGED
@@ -34,8 +34,12 @@ export declare const doctorFindingKind: z.ZodEnum<{
34
34
  invalid_slug: "invalid_slug";
35
35
  orphan_network: "orphan_network";
36
36
  orphan_volume: "orphan_volume";
37
+ panel_plaintext_exposure: "panel_plaintext_exposure";
38
+ repo_insights_leak: "repo_insights_leak";
39
+ sandbox_plugin_network: "sandbox_plugin_network";
37
40
  service_runtime_desync: "service_runtime_desync";
38
41
  stuck_deployment: "stuck_deployment";
42
+ templates_source_plaintext: "templates_source_plaintext";
39
43
  }>;
40
44
  export type DoctorFindingKind = z.infer<typeof doctorFindingKind>;
41
45
  /** Executable repair actions. Every one re-validates its precondition against
@@ -66,8 +70,12 @@ export declare const doctorFinding: z.ZodObject<{
66
70
  invalid_slug: "invalid_slug";
67
71
  orphan_network: "orphan_network";
68
72
  orphan_volume: "orphan_volume";
73
+ panel_plaintext_exposure: "panel_plaintext_exposure";
74
+ repo_insights_leak: "repo_insights_leak";
75
+ sandbox_plugin_network: "sandbox_plugin_network";
69
76
  service_runtime_desync: "service_runtime_desync";
70
77
  stuck_deployment: "stuck_deployment";
78
+ templates_source_plaintext: "templates_source_plaintext";
71
79
  }>;
72
80
  severity: z.ZodEnum<{
73
81
  critical: "critical";
@@ -149,8 +157,12 @@ export declare const doctorReport: z.ZodObject<{
149
157
  invalid_slug: "invalid_slug";
150
158
  orphan_network: "orphan_network";
151
159
  orphan_volume: "orphan_volume";
160
+ panel_plaintext_exposure: "panel_plaintext_exposure";
161
+ repo_insights_leak: "repo_insights_leak";
162
+ sandbox_plugin_network: "sandbox_plugin_network";
152
163
  service_runtime_desync: "service_runtime_desync";
153
164
  stuck_deployment: "stuck_deployment";
165
+ templates_source_plaintext: "templates_source_plaintext";
154
166
  }>;
155
167
  severity: z.ZodEnum<{
156
168
  critical: "critical";
@@ -246,8 +258,12 @@ export declare const doctorFixResponse: z.ZodObject<{
246
258
  invalid_slug: "invalid_slug";
247
259
  orphan_network: "orphan_network";
248
260
  orphan_volume: "orphan_volume";
261
+ panel_plaintext_exposure: "panel_plaintext_exposure";
262
+ repo_insights_leak: "repo_insights_leak";
263
+ sandbox_plugin_network: "sandbox_plugin_network";
249
264
  service_runtime_desync: "service_runtime_desync";
250
265
  stuck_deployment: "stuck_deployment";
266
+ templates_source_plaintext: "templates_source_plaintext";
251
267
  }>;
252
268
  severity: z.ZodEnum<{
253
269
  critical: "critical";
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../src/doctor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;8EAG8E;AAC9E,eAAO,MAAM,cAAc;;;;EAAuC,CAAC;AACnE,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAE5D,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;EAc3B,CAAC;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAEhE,eAAO,MAAM,iBAAiB;;;;;;;;;;;;EA4B5B,CAAC;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAElE;uEACuE;AACvE,eAAO,MAAM,gBAAgB;;;;;;;;;;;;EAkB3B,CAAC;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAEhE,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAcxB,CAAC;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAE1D,eAAO,MAAM,eAAe;;;;;;;iBAO1B,CAAC;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAE9D,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAYvB,CAAC;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAExD,eAAO,MAAM,gBAAgB;;iBAE3B,CAAC;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAChE,MAAM,MAAM,qBAAqB,GAAG,gBAAgB,CAAC;AAErD,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAM5B,CAAC;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC"}
1
+ {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../src/doctor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;8EAG8E;AAC9E,eAAO,MAAM,cAAc;;;;EAAuC,CAAC;AACnE,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAE5D,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;EAc3B,CAAC;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAEhE,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;EAqD5B,CAAC;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAElE;uEACuE;AACvE,eAAO,MAAM,gBAAgB;;;;;;;;;;;;EAkB3B,CAAC;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAEhE,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAcxB,CAAC;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAE1D,eAAO,MAAM,eAAe;;;;;;;iBAO1B,CAAC;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAE9D,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAYvB,CAAC;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAExD,eAAO,MAAM,gBAAgB;;iBAE3B,CAAC;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAChE,MAAM,MAAM,qBAAqB,GAAG,gBAAgB,CAAC;AAErD,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAM5B,CAAC;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC"}
package/dist/doctor.js CHANGED
@@ -47,6 +47,31 @@ export const doctorFindingKind = z.enum([
47
47
  * without re-validating. Such a row is a record its own API rejects on PATCH.
48
48
  */
49
49
  'invalid_slug',
50
+ /**
51
+ * r575: the panel's own port listens on a non-loopback address over plain
52
+ * HTTP (bare-metal default 0.0.0.0:3000) — logins and API tokens crossing
53
+ * it are readable on the network. Advisory: changing the bind is the
54
+ * operator's call (it cuts off whoever reaches the panel at http://ip:3000).
55
+ */
56
+ 'panel_plaintext_exposure',
57
+ /**
58
+ * r600: enabled sandbox plugins on a Node whose permission model has no
59
+ * network scope (< 25) — their code can reach anything the host can.
60
+ * Advisory: they keep loading (upgrade-safe); upgrading Node closes it.
61
+ */
62
+ 'sandbox_plugin_network',
63
+ /**
64
+ * r620: a stored repository analysis holds a nodeVersion that is not a
65
+ * version — host file content captured through a symlinked .nvmrc before
66
+ * 0.10.41. Critical: the exposed secrets must be rotated.
67
+ */
68
+ 'repo_insights_leak',
69
+ /**
70
+ * r655: the Hub's remote template registry is fetched over plain http, so
71
+ * anyone on the path can swap the catalog (images, env defaults). Advisory:
72
+ * the source keeps loading (upgrade-safe); new http sources are refused.
73
+ */
74
+ 'templates_source_plaintext',
50
75
  ]);
51
76
  /** Executable repair actions. Every one re-validates its precondition against
52
77
  * current state inside the fix path; the enum is the full surface. */
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../src/doctor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../src/doctor.ts"],"names":[],"mappings":"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"}