@edgible-team/cli 1.2.11 → 1.2.15

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 (74) hide show
  1. package/dist/commands/agent/install.d.ts +4 -0
  2. package/dist/commands/agent/install.d.ts.map +1 -1
  3. package/dist/commands/agent/install.js +155 -129
  4. package/dist/commands/agent.d.ts.map +1 -1
  5. package/dist/commands/agent.js +4 -0
  6. package/dist/commands/ai/helpers.d.ts.map +1 -1
  7. package/dist/commands/ai/helpers.js +10 -5
  8. package/dist/commands/debug.d.ts.map +1 -1
  9. package/dist/commands/debug.js +7 -3
  10. package/dist/commands/stack/deploy.d.ts +6 -0
  11. package/dist/commands/stack/deploy.d.ts.map +1 -0
  12. package/dist/commands/stack/deploy.js +58 -0
  13. package/dist/commands/stack/diff.d.ts +7 -0
  14. package/dist/commands/stack/diff.d.ts.map +1 -0
  15. package/dist/commands/stack/diff.js +64 -0
  16. package/dist/commands/stack/status.d.ts +9 -0
  17. package/dist/commands/stack/status.d.ts.map +1 -0
  18. package/dist/commands/stack/status.js +53 -0
  19. package/dist/commands/stack/teardown.d.ts +6 -0
  20. package/dist/commands/stack/teardown.d.ts.map +1 -0
  21. package/dist/commands/stack/teardown.js +104 -0
  22. package/dist/commands/stack/validate.d.ts +7 -0
  23. package/dist/commands/stack/validate.d.ts.map +1 -0
  24. package/dist/commands/stack/validate.js +42 -0
  25. package/dist/commands/stack.d.ts +10 -0
  26. package/dist/commands/stack.d.ts.map +1 -0
  27. package/dist/commands/stack.js +112 -0
  28. package/dist/index.js +2 -0
  29. package/dist/services/DependencyInstaller.d.ts +2 -9
  30. package/dist/services/DependencyInstaller.d.ts.map +1 -1
  31. package/dist/services/DependencyInstaller.js +5 -30
  32. package/dist/services/application/ApplicationService.d.ts +3 -0
  33. package/dist/services/application/ApplicationService.d.ts.map +1 -1
  34. package/dist/services/application/ApplicationService.js +3 -0
  35. package/dist/services/instances.d.ts +23 -0
  36. package/dist/services/instances.d.ts.map +1 -1
  37. package/dist/services/instances.js +46 -1
  38. package/dist/services/stack/DependencyGraphManager.d.ts +69 -0
  39. package/dist/services/stack/DependencyGraphManager.d.ts.map +1 -0
  40. package/dist/services/stack/DependencyGraphManager.js +204 -0
  41. package/dist/services/stack/DeviceResolver.d.ts +63 -0
  42. package/dist/services/stack/DeviceResolver.d.ts.map +1 -0
  43. package/dist/services/stack/DeviceResolver.js +147 -0
  44. package/dist/services/stack/GatewayResolver.d.ts +84 -0
  45. package/dist/services/stack/GatewayResolver.d.ts.map +1 -0
  46. package/dist/services/stack/GatewayResolver.js +179 -0
  47. package/dist/services/stack/StackParser.d.ts +38 -0
  48. package/dist/services/stack/StackParser.d.ts.map +1 -0
  49. package/dist/services/stack/StackParser.js +234 -0
  50. package/dist/services/stack/StackService.d.ts +76 -0
  51. package/dist/services/stack/StackService.d.ts.map +1 -0
  52. package/dist/services/stack/StackService.js +476 -0
  53. package/dist/types/ApiRequests.d.ts +8 -0
  54. package/dist/types/ApiRequests.d.ts.map +1 -1
  55. package/dist/types/models/ApplicationData.d.ts +22 -0
  56. package/dist/types/models/ApplicationData.d.ts.map +1 -1
  57. package/dist/types/models/OrganizationData.d.ts +2 -0
  58. package/dist/types/models/OrganizationData.d.ts.map +1 -1
  59. package/dist/types/stack.d.ts +191 -0
  60. package/dist/types/stack.d.ts.map +1 -0
  61. package/dist/types/stack.js +5 -0
  62. package/dist/types/validation/schemas.d.ts +41 -23
  63. package/dist/types/validation/schemas.d.ts.map +1 -1
  64. package/dist/types/validation/schemas.js +20 -0
  65. package/dist/utils/run-as-user.d.ts +24 -0
  66. package/dist/utils/run-as-user.d.ts.map +1 -0
  67. package/dist/utils/run-as-user.js +42 -0
  68. package/dist/utils/stack-errors.d.ts +103 -0
  69. package/dist/utils/stack-errors.d.ts.map +1 -0
  70. package/dist/utils/stack-errors.js +158 -0
  71. package/dist/validation/stack-schemas.d.ts +535 -0
  72. package/dist/validation/stack-schemas.d.ts.map +1 -0
  73. package/dist/validation/stack-schemas.js +178 -0
  74. package/package.json +4 -2
@@ -0,0 +1,191 @@
1
+ /**
2
+ * Application Stack type definitions
3
+ * Defines the structure for declarative application deployments
4
+ */
5
+ /**
6
+ * Main application stack structure
7
+ */
8
+ export interface ApplicationStack {
9
+ apiVersion: string;
10
+ kind: 'ApplicationStack';
11
+ metadata: StackMetadata;
12
+ applications: StackApplication[];
13
+ }
14
+ /**
15
+ * Stack metadata
16
+ */
17
+ export interface StackMetadata {
18
+ name: string;
19
+ description?: string;
20
+ }
21
+ /**
22
+ * Application definition within a stack
23
+ */
24
+ export interface StackApplication {
25
+ name: string;
26
+ description?: string;
27
+ port: number;
28
+ protocol: 'http' | 'https' | 'tcp' | 'udp';
29
+ subtype: ApplicationSubtype;
30
+ deviceName: string;
31
+ published?: boolean;
32
+ hostnames?: string[];
33
+ dependsOn?: string[];
34
+ authModes?: AuthMode[];
35
+ allowedOrganizations?: string[];
36
+ composeFile?: string;
37
+ command?: string;
38
+ workingDir?: string;
39
+ environment?: Record<string, string>;
40
+ logFile?: string;
41
+ }
42
+ /**
43
+ * Supported application subtypes
44
+ */
45
+ export type ApplicationSubtype = 'existing' | 'docker-compose' | 'managed-process' | 'docker' | 'podman' | 'qemu';
46
+ /**
47
+ * Authentication modes
48
+ */
49
+ export type AuthMode = 'none' | 'org' | 'api-key';
50
+ /**
51
+ * Stack with resolved device and gateway IDs
52
+ */
53
+ export interface ResolvedStack extends ApplicationStack {
54
+ resolved: {
55
+ devices: Map<string, string>;
56
+ gateways: Map<string, string[]>;
57
+ applications: Map<string, string>;
58
+ };
59
+ }
60
+ /**
61
+ * Resolved application ready for deployment
62
+ */
63
+ export interface ResolvedApplication extends StackApplication {
64
+ deviceId: string;
65
+ gatewayIds?: string[];
66
+ existingApplicationId?: string;
67
+ }
68
+ /**
69
+ * Stack validation result
70
+ */
71
+ export interface StackValidationResult {
72
+ valid: boolean;
73
+ errors: StackValidationError[];
74
+ warnings: StackValidationWarning[];
75
+ }
76
+ /**
77
+ * Validation error
78
+ */
79
+ export interface StackValidationError {
80
+ path: string;
81
+ message: string;
82
+ line?: number;
83
+ }
84
+ /**
85
+ * Validation warning
86
+ */
87
+ export interface StackValidationWarning {
88
+ path: string;
89
+ message: string;
90
+ }
91
+ /**
92
+ * Options for deploy command
93
+ */
94
+ export interface DeployOptions {
95
+ file: string;
96
+ app?: string;
97
+ dryRun?: boolean;
98
+ skipDependencies?: boolean;
99
+ force?: boolean;
100
+ }
101
+ /**
102
+ * Options for teardown command
103
+ */
104
+ export interface TeardownOptions {
105
+ file: string;
106
+ app?: string;
107
+ force?: boolean;
108
+ keepDependencies?: boolean;
109
+ }
110
+ /**
111
+ * Deploy operation result
112
+ */
113
+ export interface DeployResult {
114
+ success: boolean;
115
+ deployed: DeployedApplication[];
116
+ failed: FailedApplication[];
117
+ skipped: string[];
118
+ }
119
+ /**
120
+ * Successfully deployed application
121
+ */
122
+ export interface DeployedApplication {
123
+ name: string;
124
+ applicationId: string;
125
+ urls?: string[];
126
+ }
127
+ /**
128
+ * Failed application deployment
129
+ */
130
+ export interface FailedApplication {
131
+ name: string;
132
+ error: string;
133
+ }
134
+ /**
135
+ * Teardown operation result
136
+ */
137
+ export interface TeardownResult {
138
+ success: boolean;
139
+ removed: string[];
140
+ failed: FailedApplication[];
141
+ skipped: string[];
142
+ }
143
+ /**
144
+ * Stack status information
145
+ */
146
+ export interface StackStatus {
147
+ stackName: string;
148
+ applications: ApplicationStatus[];
149
+ }
150
+ /**
151
+ * Individual application status
152
+ */
153
+ export interface ApplicationStatus {
154
+ name: string;
155
+ status: 'deployed' | 'not-deployed' | 'error';
156
+ applicationId?: string;
157
+ deviceName: string;
158
+ deviceId?: string;
159
+ published: boolean;
160
+ urls?: string[];
161
+ lastUpdated?: Date;
162
+ error?: string;
163
+ }
164
+ /**
165
+ * Stack diff result
166
+ */
167
+ export interface StackDiff {
168
+ toCreate: StackApplication[];
169
+ toUpdate: ApplicationDiff[];
170
+ toDelete: ApplicationStatus[];
171
+ unchanged: string[];
172
+ }
173
+ /**
174
+ * Application diff details
175
+ */
176
+ export interface ApplicationDiff {
177
+ name: string;
178
+ changes: {
179
+ field: string;
180
+ oldValue: any;
181
+ newValue: any;
182
+ }[];
183
+ }
184
+ /**
185
+ * Dependency graph node
186
+ */
187
+ export interface DependencyNode {
188
+ name: string;
189
+ dependencies: string[];
190
+ }
191
+ //# sourceMappingURL=stack.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stack.d.ts","sourceRoot":"","sources":["../../src/types/stack.ts"],"names":[],"mappings":"AAGA;;;GAGG;AAEH;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,kBAAkB,CAAC;IACzB,QAAQ,EAAE,aAAa,CAAC;IACxB,YAAY,EAAE,gBAAgB,EAAE,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,KAAK,CAAC;IAC3C,OAAO,EAAE,kBAAkB,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;IACvB,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC;IAGhC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAC1B,UAAU,GACV,gBAAgB,GAChB,iBAAiB,GACjB,QAAQ,GACR,QAAQ,GACR,MAAM,CAAC;AAEX;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,KAAK,GAAG,SAAS,CAAC;AAElD;;GAEG;AACH,MAAM,WAAW,aAAc,SAAQ,gBAAgB;IACrD,QAAQ,EAAE;QACR,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC7B,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QAChC,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KACnC,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,mBAAoB,SAAQ,gBAAgB;IAC3D,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,oBAAoB,EAAE,CAAC;IAC/B,QAAQ,EAAE,sBAAsB,EAAE,CAAC;CACpC;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,mBAAmB,EAAE,CAAC;IAChC,MAAM,EAAE,iBAAiB,EAAE,CAAC;IAC5B,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,EAAE,iBAAiB,EAAE,CAAC;IAC5B,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,iBAAiB,EAAE,CAAC;CACnC;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,UAAU,GAAG,cAAc,GAAG,OAAO,CAAC;IAC9C,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,WAAW,CAAC,EAAE,IAAI,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,gBAAgB,EAAE,CAAC;IAC7B,QAAQ,EAAE,eAAe,EAAE,CAAC;IAC5B,QAAQ,EAAE,iBAAiB,EAAE,CAAC;IAC9B,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE;QACP,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,GAAG,CAAC;QACd,QAAQ,EAAE,GAAG,CAAC;KACf,EAAE,CAAC;CACL;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB"}
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ // AUTO-GENERATED FILE - DO NOT EDIT
3
+ // This file is copied from backend during build. Changes will be overwritten.
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ //# sourceMappingURL=stack.js.map
@@ -4,26 +4,32 @@ export declare const CreateOrganizationSchema: z.ZodObject<{
4
4
  rootUserEmail: z.ZodString;
5
5
  description: z.ZodOptional<z.ZodString>;
6
6
  billingOrganizationId: z.ZodOptional<z.ZodString>;
7
+ urlAlias: z.ZodOptional<z.ZodEffects<z.ZodString, string, string>>;
7
8
  }, "strip", z.ZodTypeAny, {
8
9
  name: string;
9
10
  rootUserEmail: string;
10
11
  description?: string | undefined;
11
12
  billingOrganizationId?: string | undefined;
13
+ urlAlias?: string | undefined;
12
14
  }, {
13
15
  name: string;
14
16
  rootUserEmail: string;
15
17
  description?: string | undefined;
16
18
  billingOrganizationId?: string | undefined;
19
+ urlAlias?: string | undefined;
17
20
  }>;
18
21
  export declare const UpdateOrganizationSchema: z.ZodObject<{
19
22
  name: z.ZodOptional<z.ZodString>;
20
23
  description: z.ZodOptional<z.ZodString>;
24
+ urlAlias: z.ZodOptional<z.ZodEffects<z.ZodString, string, string>>;
21
25
  }, "strip", z.ZodTypeAny, {
22
26
  name?: string | undefined;
23
27
  description?: string | undefined;
28
+ urlAlias?: string | undefined;
24
29
  }, {
25
30
  name?: string | undefined;
26
31
  description?: string | undefined;
32
+ urlAlias?: string | undefined;
27
33
  }>;
28
34
  export declare const GetOrganizationSchema: z.ZodObject<{
29
35
  organizationId: z.ZodString;
@@ -93,9 +99,9 @@ export declare const CreateApplicationSchema: z.ZodObject<{
93
99
  deleteVolumesOnDeletion: boolean;
94
100
  command?: string | undefined;
95
101
  logFile?: string | undefined;
96
- workingDirectory?: string | undefined;
97
- env?: Record<string, string> | undefined;
98
102
  dockerComposePath?: string | undefined;
103
+ env?: Record<string, string> | undefined;
104
+ workingDirectory?: string | undefined;
99
105
  healthCheckPath?: string | undefined;
100
106
  systemdService?: string | undefined;
101
107
  }, {
@@ -103,9 +109,9 @@ export declare const CreateApplicationSchema: z.ZodObject<{
103
109
  protocol: "http" | "https" | "tcp" | "udp";
104
110
  command?: string | undefined;
105
111
  logFile?: string | undefined;
106
- workingDirectory?: string | undefined;
107
- env?: Record<string, string> | undefined;
108
112
  dockerComposePath?: string | undefined;
113
+ env?: Record<string, string> | undefined;
114
+ workingDirectory?: string | undefined;
109
115
  deleteVolumesOnDeletion?: boolean | undefined;
110
116
  healthCheckPath?: string | undefined;
111
117
  systemdService?: string | undefined;
@@ -119,6 +125,8 @@ export declare const CreateApplicationSchema: z.ZodObject<{
119
125
  requireOrgAuth: z.ZodOptional<z.ZodBoolean>;
120
126
  allowedOrganizations: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
121
127
  customHeaders: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
128
+ targetState: z.ZodDefault<z.ZodEnum<["running", "suspended"]>>;
129
+ dependsOnApplicationIds: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
122
130
  }, "strip", z.ZodTypeAny, {
123
131
  organizationId: string;
124
132
  name: string;
@@ -128,23 +136,25 @@ export declare const CreateApplicationSchema: z.ZodObject<{
128
136
  deleteVolumesOnDeletion: boolean;
129
137
  command?: string | undefined;
130
138
  logFile?: string | undefined;
131
- workingDirectory?: string | undefined;
132
- env?: Record<string, string> | undefined;
133
139
  dockerComposePath?: string | undefined;
140
+ env?: Record<string, string> | undefined;
141
+ workingDirectory?: string | undefined;
134
142
  healthCheckPath?: string | undefined;
135
143
  systemdService?: string | undefined;
136
144
  };
137
145
  subtype: "systemd" | "local-preexisting" | "managed-docker" | "docker-compose" | "managed-process";
138
146
  environment: "development" | "staging" | "prod";
139
147
  deviceIds: string[];
148
+ targetState: "running" | "suspended";
140
149
  description?: string | undefined;
141
- gatewayIds?: string[] | undefined;
142
150
  hostnames?: string[] | undefined;
143
- useManagedGateway?: boolean | undefined;
144
151
  authModes?: ("none" | "org" | "api-key")[] | undefined;
145
- requireOrgAuth?: boolean | undefined;
146
152
  allowedOrganizations?: string[] | undefined;
153
+ gatewayIds?: string[] | undefined;
154
+ useManagedGateway?: boolean | undefined;
155
+ requireOrgAuth?: boolean | undefined;
147
156
  customHeaders?: Record<string, string> | undefined;
157
+ dependsOnApplicationIds?: string[] | undefined;
148
158
  }, {
149
159
  organizationId: string;
150
160
  name: string;
@@ -153,9 +163,9 @@ export declare const CreateApplicationSchema: z.ZodObject<{
153
163
  protocol: "http" | "https" | "tcp" | "udp";
154
164
  command?: string | undefined;
155
165
  logFile?: string | undefined;
156
- workingDirectory?: string | undefined;
157
- env?: Record<string, string> | undefined;
158
166
  dockerComposePath?: string | undefined;
167
+ env?: Record<string, string> | undefined;
168
+ workingDirectory?: string | undefined;
159
169
  deleteVolumesOnDeletion?: boolean | undefined;
160
170
  healthCheckPath?: string | undefined;
161
171
  systemdService?: string | undefined;
@@ -163,14 +173,16 @@ export declare const CreateApplicationSchema: z.ZodObject<{
163
173
  subtype: "systemd" | "local-preexisting" | "managed-docker" | "docker-compose" | "managed-process";
164
174
  deviceIds: string[];
165
175
  description?: string | undefined;
166
- gatewayIds?: string[] | undefined;
167
- environment?: "development" | "staging" | "prod" | undefined;
168
176
  hostnames?: string[] | undefined;
169
- useManagedGateway?: boolean | undefined;
170
177
  authModes?: ("none" | "org" | "api-key")[] | undefined;
171
- requireOrgAuth?: boolean | undefined;
172
178
  allowedOrganizations?: string[] | undefined;
179
+ environment?: "development" | "staging" | "prod" | undefined;
180
+ gatewayIds?: string[] | undefined;
181
+ useManagedGateway?: boolean | undefined;
182
+ requireOrgAuth?: boolean | undefined;
173
183
  customHeaders?: Record<string, string> | undefined;
184
+ targetState?: "running" | "suspended" | undefined;
185
+ dependsOnApplicationIds?: string[] | undefined;
174
186
  }>;
175
187
  export declare const UpdateApplicationSchema: z.ZodObject<{
176
188
  name: z.ZodOptional<z.ZodString>;
@@ -180,21 +192,27 @@ export declare const UpdateApplicationSchema: z.ZodObject<{
180
192
  authModes: z.ZodOptional<z.ZodArray<z.ZodEnum<["none", "org", "api-key"]>, "many">>;
181
193
  allowedOrganizations: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
182
194
  customHeaders: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
195
+ targetState: z.ZodOptional<z.ZodEnum<["running", "suspended"]>>;
196
+ dependsOnApplicationIds: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
183
197
  }, "strip", z.ZodTypeAny, {
184
198
  name?: string | undefined;
185
199
  description?: string | undefined;
186
- environment?: "development" | "staging" | "prod" | undefined;
187
200
  authModes?: ("none" | "org" | "api-key")[] | undefined;
188
201
  allowedOrganizations?: string[] | undefined;
202
+ environment?: "development" | "staging" | "prod" | undefined;
189
203
  customHeaders?: Record<string, string> | undefined;
204
+ targetState?: "running" | "suspended" | undefined;
205
+ dependsOnApplicationIds?: string[] | undefined;
190
206
  allowedSourceIPs?: string[] | undefined;
191
207
  }, {
192
208
  name?: string | undefined;
193
209
  description?: string | undefined;
194
- environment?: "development" | "staging" | "prod" | undefined;
195
210
  authModes?: ("none" | "org" | "api-key")[] | undefined;
196
211
  allowedOrganizations?: string[] | undefined;
212
+ environment?: "development" | "staging" | "prod" | undefined;
197
213
  customHeaders?: Record<string, string> | undefined;
214
+ targetState?: "running" | "suspended" | undefined;
215
+ dependsOnApplicationIds?: string[] | undefined;
198
216
  allowedSourceIPs?: string[] | undefined;
199
217
  }>;
200
218
  export declare const GetApplicationSchema: z.ZodObject<{
@@ -286,7 +304,7 @@ export declare const UpdateDeviceSchema: z.ZodObject<{
286
304
  ipAddress: z.ZodOptional<z.ZodString>;
287
305
  }, "strip", z.ZodTypeAny, {
288
306
  name?: string | undefined;
289
- status?: "active" | "inactive" | "pending" | "suspended" | undefined;
307
+ status?: "suspended" | "active" | "inactive" | "pending" | undefined;
290
308
  type?: "gateway" | "laptop" | "desktop" | "mobile" | "tablet" | "server" | undefined;
291
309
  description?: string | undefined;
292
310
  os?: string | undefined;
@@ -296,7 +314,7 @@ export declare const UpdateDeviceSchema: z.ZodObject<{
296
314
  isTrusted?: boolean | undefined;
297
315
  }, {
298
316
  name?: string | undefined;
299
- status?: "active" | "inactive" | "pending" | "suspended" | undefined;
317
+ status?: "suspended" | "active" | "inactive" | "pending" | undefined;
300
318
  type?: "gateway" | "laptop" | "desktop" | "mobile" | "tablet" | "server" | undefined;
301
319
  description?: string | undefined;
302
320
  os?: string | undefined;
@@ -497,7 +515,7 @@ export declare const CreateResourceSchema: z.ZodObject<{
497
515
  name: string;
498
516
  resourceType: string;
499
517
  organizationId?: string | undefined;
500
- status?: "pending" | "running" | "stopped" | "error" | undefined;
518
+ status?: "running" | "pending" | "stopped" | "error" | undefined;
501
519
  type?: string | undefined;
502
520
  description?: string | undefined;
503
521
  region?: string | undefined;
@@ -509,7 +527,7 @@ export declare const CreateResourceSchema: z.ZodObject<{
509
527
  name: string;
510
528
  resourceType: string;
511
529
  organizationId?: string | undefined;
512
- status?: "pending" | "running" | "stopped" | "error" | undefined;
530
+ status?: "running" | "pending" | "stopped" | "error" | undefined;
513
531
  type?: string | undefined;
514
532
  description?: string | undefined;
515
533
  region?: string | undefined;
@@ -527,14 +545,14 @@ export declare const UpdateResourceSchema: z.ZodObject<{
527
545
  region: z.ZodOptional<z.ZodString>;
528
546
  }, "strip", z.ZodTypeAny, {
529
547
  name?: string | undefined;
530
- status?: "pending" | "running" | "stopped" | "error" | undefined;
548
+ status?: "running" | "pending" | "stopped" | "error" | undefined;
531
549
  description?: string | undefined;
532
550
  region?: string | undefined;
533
551
  tags?: string[] | undefined;
534
552
  cost?: number | undefined;
535
553
  }, {
536
554
  name?: string | undefined;
537
- status?: "pending" | "running" | "stopped" | "error" | undefined;
555
+ status?: "running" | "pending" | "stopped" | "error" | undefined;
538
556
  description?: string | undefined;
539
557
  region?: string | undefined;
540
558
  tags?: string[] | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../../src/types/validation/schemas.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../../src/types/validation/schemas.ts"],"names":[],"mappings":"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"}
@@ -4,16 +4,32 @@
4
4
  Object.defineProperty(exports, "__esModule", { value: true });
5
5
  exports.CreateLifecycleEventSchema = exports.PostDevicePoolTrafficSchema = exports.CheckApplicationReachabilitySchema = exports.GetResourceSchema = exports.UpdateResourceSchema = exports.CreateResourceSchema = exports.CreateDeviceWithOrphanedOrganizationSchema = exports.GetChallengeSessionSchema = exports.ForceChangePasswordSchema = exports.RefreshTokenSchema = exports.AuthenticateSchema = exports.LinkOrganizationSchema = exports.UpdateResourceLimitsSchema = exports.CreateBillingOrganizationSchema = exports.AdoptOrganizationSchema = exports.CancelInviteSchema = exports.DeclineInviteSchema = exports.AcceptInviteSchema = exports.CreateOrganizationInviteSchema = exports.GetDeviceSchema = exports.UpdateDeviceSchema = exports.CreateDeviceSchema = exports.RefreshCertificatePathSchema = exports.GetCertificatePathSchema = exports.GetCertificatesPathSchema = exports.GetApplicationSchema = exports.UpdateApplicationSchema = exports.CreateApplicationSchema = exports.GetUserSchema = exports.UpdateUserSchema = exports.CreateUserSchema = exports.GetOrganizationSchema = exports.UpdateOrganizationSchema = exports.CreateOrganizationSchema = void 0;
6
6
  const zod_1 = require("zod");
7
+ // Reserved URL aliases that cannot be used
8
+ const RESERVED_ALIASES = [
9
+ 'api', 'www', 'admin', 'app', 'apps', 'gateway', 'gateways',
10
+ 'device', 'devices', 'user', 'users', 'auth', 'login', 'signup',
11
+ 'dashboard', 'console', 'portal', 'system', 'internal', 'staging',
12
+ 'prod', 'production', 'dev', 'development', 'test', 'testing',
13
+ 'v1', 'v2', 'v3', 'static', 'cdn', 'assets', 'public'
14
+ ];
15
+ // URL alias validation: lowercase alphanumeric + hyphens, 3-30 chars
16
+ const UrlAliasSchema = zod_1.z.string()
17
+ .min(3, 'URL alias must be at least 3 characters')
18
+ .max(30, 'URL alias must be 30 characters or less')
19
+ .regex(/^[a-z0-9][a-z0-9-]{1,28}[a-z0-9]$/, 'URL alias must be lowercase alphanumeric with hyphens, cannot start/end with hyphen')
20
+ .refine((val) => !RESERVED_ALIASES.includes(val), 'This alias is reserved and cannot be used');
7
21
  // Organization validation schemas
8
22
  exports.CreateOrganizationSchema = zod_1.z.object({
9
23
  name: zod_1.z.string().min(1, 'Name is required').max(100, 'Name must be 100 characters or less'),
10
24
  rootUserEmail: zod_1.z.string().email('Invalid email format'),
11
25
  description: zod_1.z.string().max(500, 'Description must be 500 characters or less').optional(),
12
26
  billingOrganizationId: zod_1.z.string().min(1, 'Billing organization ID must be provided if specified').optional(),
27
+ urlAlias: UrlAliasSchema.optional(),
13
28
  });
14
29
  exports.UpdateOrganizationSchema = zod_1.z.object({
15
30
  name: zod_1.z.string().min(1).max(100).optional(),
16
31
  description: zod_1.z.string().max(500).optional(),
32
+ urlAlias: UrlAliasSchema.optional(),
17
33
  });
18
34
  exports.GetOrganizationSchema = zod_1.z.object({
19
35
  organizationId: zod_1.z.string().min(1, 'Organization ID is required'),
@@ -74,6 +90,8 @@ exports.CreateApplicationSchema = zod_1.z.object({
74
90
  requireOrgAuth: zod_1.z.boolean().optional(), // deprecated, use authModes
75
91
  allowedOrganizations: zod_1.z.array(zod_1.z.string()).optional(),
76
92
  customHeaders: zod_1.z.record(zod_1.z.string(), zod_1.z.string()).optional(),
93
+ targetState: zod_1.z.enum(['running', 'suspended']).default('running'),
94
+ dependsOnApplicationIds: zod_1.z.array(zod_1.z.string().min(1)).optional(),
77
95
  });
78
96
  // IP address or CIDR block validation
79
97
  const IPOrCIDRSchema = zod_1.z.string().regex(/^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(?:\/(?:[0-9]|[1-2][0-9]|3[0-2]))?$/, 'Invalid IP address or CIDR block (e.g., 192.168.1.0/24 or 10.0.0.1)');
@@ -85,6 +103,8 @@ exports.UpdateApplicationSchema = zod_1.z.object({
85
103
  authModes: zod_1.z.array(zod_1.z.enum(['none', 'org', 'api-key'])).optional(),
86
104
  allowedOrganizations: zod_1.z.array(zod_1.z.string()).optional(),
87
105
  customHeaders: zod_1.z.record(zod_1.z.string(), zod_1.z.string()).optional(),
106
+ targetState: zod_1.z.enum(['running', 'suspended']).optional(),
107
+ dependsOnApplicationIds: zod_1.z.array(zod_1.z.string().min(1)).optional(),
88
108
  });
89
109
  exports.GetApplicationSchema = zod_1.z.object({
90
110
  applicationId: zod_1.z.string().min(1, 'Application ID is required'),
@@ -0,0 +1,24 @@
1
+ import { ExecSyncOptions } from 'child_process';
2
+ /**
3
+ * Utilities to run commands as the real (non-root) user when the process was
4
+ * started with sudo. Ensures tools like Homebrew install under the user's
5
+ * account rather than root.
6
+ */
7
+ /**
8
+ * Get the original user when running under sudo.
9
+ * @returns SUDO_USER if process is root via sudo, otherwise undefined
10
+ */
11
+ export declare function getSudoUser(): string | undefined;
12
+ /**
13
+ * Execute a command as the original user when executed via sudo.
14
+ * Uses: sudo -u ${SUDO_USER} HOME=$(eval echo ~${SUDO_USER}) <command>
15
+ *
16
+ * Important for Homebrew on macOS: brew refuses to run as root and installs
17
+ * should go to the user's prefix (e.g. /opt/homebrew or ~/.local) not root's.
18
+ *
19
+ * @param command The command to execute
20
+ * @param options Optional execSync options (e.g. stdio: 'inherit' for interactive)
21
+ * @returns Result of execSync
22
+ */
23
+ export declare function execAsRealUser(command: string, options?: ExecSyncOptions): Buffer | string;
24
+ //# sourceMappingURL=run-as-user.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-as-user.d.ts","sourceRoot":"","sources":["../../src/utils/run-as-user.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,eAAe,EAAE,MAAM,eAAe,CAAC;AAE1D;;;;GAIG;AAEH;;;GAGG;AACH,wBAAgB,WAAW,IAAI,MAAM,GAAG,SAAS,CAShD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,MAAM,GAAG,MAAM,CAS1F"}
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getSudoUser = getSudoUser;
4
+ exports.execAsRealUser = execAsRealUser;
5
+ const child_process_1 = require("child_process");
6
+ /**
7
+ * Utilities to run commands as the real (non-root) user when the process was
8
+ * started with sudo. Ensures tools like Homebrew install under the user's
9
+ * account rather than root.
10
+ */
11
+ /**
12
+ * Get the original user when running under sudo.
13
+ * @returns SUDO_USER if process is root via sudo, otherwise undefined
14
+ */
15
+ function getSudoUser() {
16
+ const uid = process.getuid ? process.getuid() : undefined;
17
+ const sudoUser = process.env['SUDO_USER'];
18
+ if (uid === 0 && sudoUser) {
19
+ return sudoUser;
20
+ }
21
+ return undefined;
22
+ }
23
+ /**
24
+ * Execute a command as the original user when executed via sudo.
25
+ * Uses: sudo -u ${SUDO_USER} HOME=$(eval echo ~${SUDO_USER}) <command>
26
+ *
27
+ * Important for Homebrew on macOS: brew refuses to run as root and installs
28
+ * should go to the user's prefix (e.g. /opt/homebrew or ~/.local) not root's.
29
+ *
30
+ * @param command The command to execute
31
+ * @param options Optional execSync options (e.g. stdio: 'inherit' for interactive)
32
+ * @returns Result of execSync
33
+ */
34
+ function execAsRealUser(command, options) {
35
+ const sudoUser = getSudoUser();
36
+ if (sudoUser) {
37
+ const wrappedCommand = `sudo -u ${sudoUser} HOME=$(eval echo ~${sudoUser}) ${command}`;
38
+ return (0, child_process_1.execSync)(wrappedCommand, options);
39
+ }
40
+ return (0, child_process_1.execSync)(command, options);
41
+ }
42
+ //# sourceMappingURL=run-as-user.js.map
@@ -0,0 +1,103 @@
1
+ /**
2
+ * Stack-specific error classes
3
+ * Provides detailed error information for stack operations
4
+ */
5
+ /**
6
+ * Base error for all stack-related errors
7
+ */
8
+ export declare class StackError extends Error {
9
+ constructor(message: string);
10
+ }
11
+ /**
12
+ * Error parsing stack YAML file
13
+ */
14
+ export declare class StackParseError extends StackError {
15
+ filePath?: string | undefined;
16
+ line?: number | undefined;
17
+ constructor(message: string, filePath?: string | undefined, line?: number | undefined);
18
+ }
19
+ /**
20
+ * Error validating stack schema
21
+ */
22
+ export declare class StackValidationError extends StackError {
23
+ errors: Array<{
24
+ path: string;
25
+ message: string;
26
+ line?: number;
27
+ }>;
28
+ constructor(message: string, errors: Array<{
29
+ path: string;
30
+ message: string;
31
+ line?: number;
32
+ }>);
33
+ }
34
+ /**
35
+ * Error when device not found
36
+ */
37
+ export declare class DeviceNotFoundError extends StackError {
38
+ deviceName: string;
39
+ constructor(deviceName: string);
40
+ }
41
+ /**
42
+ * Error when multiple devices match the same name
43
+ */
44
+ export declare class DeviceAmbiguousError extends StackError {
45
+ deviceName: string;
46
+ matchingDeviceIds: string[];
47
+ constructor(deviceName: string, matchingDeviceIds: string[]);
48
+ }
49
+ /**
50
+ * Error when circular dependency detected
51
+ */
52
+ export declare class CircularDependencyError extends StackError {
53
+ cycle: string[];
54
+ constructor(cycle: string[]);
55
+ }
56
+ /**
57
+ * Error deploying an application
58
+ */
59
+ export declare class ApplicationDeploymentError extends StackError {
60
+ appName: string;
61
+ reason: string;
62
+ originalError?: Error | undefined;
63
+ constructor(appName: string, reason: string, originalError?: Error | undefined);
64
+ }
65
+ /**
66
+ * Error when dependency deployment fails
67
+ */
68
+ export declare class DependencyDeploymentError extends StackError {
69
+ appName: string;
70
+ dependencyName: string;
71
+ reason: string;
72
+ constructor(appName: string, dependencyName: string, reason: string);
73
+ }
74
+ /**
75
+ * Error when stack file not found
76
+ */
77
+ export declare class StackFileNotFoundError extends StackError {
78
+ filePath: string;
79
+ constructor(filePath: string);
80
+ }
81
+ /**
82
+ * Error when required environment variable is missing
83
+ */
84
+ export declare class EnvironmentVariableError extends StackError {
85
+ variableName: string;
86
+ constructor(variableName: string);
87
+ }
88
+ /**
89
+ * Error when application not found in deployed state
90
+ */
91
+ export declare class ApplicationNotFoundError extends StackError {
92
+ appName: string;
93
+ constructor(appName: string);
94
+ }
95
+ /**
96
+ * Error when gateway provisioning fails
97
+ */
98
+ export declare class GatewayProvisioningError extends StackError {
99
+ appName: string;
100
+ reason: string;
101
+ constructor(appName: string, reason: string);
102
+ }
103
+ //# sourceMappingURL=stack-errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stack-errors.d.ts","sourceRoot":"","sources":["../../src/utils/stack-errors.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AACH,qBAAa,UAAW,SAAQ,KAAK;gBACvB,OAAO,EAAE,MAAM;CAK5B;AAED;;GAEG;AACH,qBAAa,eAAgB,SAAQ,UAAU;IAGpC,QAAQ,CAAC,EAAE,MAAM;IACjB,IAAI,CAAC,EAAE,MAAM;gBAFpB,OAAO,EAAE,MAAM,EACR,QAAQ,CAAC,EAAE,MAAM,YAAA,EACjB,IAAI,CAAC,EAAE,MAAM,YAAA;CAMvB;AAED;;GAEG;AACH,qBAAa,oBAAqB,SAAQ,UAAU;IAGzC,MAAM,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;gBADtE,OAAO,EAAE,MAAM,EACR,MAAM,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAMzE;AAED;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,UAAU;IAC9B,UAAU,EAAE,MAAM;gBAAlB,UAAU,EAAE,MAAM;CAKtC;AAED;;GAEG;AACH,qBAAa,oBAAqB,SAAQ,UAAU;IAEzC,UAAU,EAAE,MAAM;IAClB,iBAAiB,EAAE,MAAM,EAAE;gBAD3B,UAAU,EAAE,MAAM,EAClB,iBAAiB,EAAE,MAAM,EAAE;CAQrC;AAED;;GAEG;AACH,qBAAa,uBAAwB,SAAQ,UAAU;IAClC,KAAK,EAAE,MAAM,EAAE;gBAAf,KAAK,EAAE,MAAM,EAAE;CAKnC;AAED;;GAEG;AACH,qBAAa,0BAA2B,SAAQ,UAAU;IAE/C,OAAO,EAAE,MAAM;IACf,MAAM,EAAE,MAAM;IACd,aAAa,CAAC,EAAE,KAAK;gBAFrB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,aAAa,CAAC,EAAE,KAAK,YAAA;CAM/B;AAED;;GAEG;AACH,qBAAa,yBAA0B,SAAQ,UAAU;IAE9C,OAAO,EAAE,MAAM;IACf,cAAc,EAAE,MAAM;IACtB,MAAM,EAAE,MAAM;gBAFd,OAAO,EAAE,MAAM,EACf,cAAc,EAAE,MAAM,EACtB,MAAM,EAAE,MAAM;CAQxB;AAED;;GAEG;AACH,qBAAa,sBAAuB,SAAQ,UAAU;IACjC,QAAQ,EAAE,MAAM;gBAAhB,QAAQ,EAAE,MAAM;CAKpC;AAED;;GAEG;AACH,qBAAa,wBAAyB,SAAQ,UAAU;IACnC,YAAY,EAAE,MAAM;gBAApB,YAAY,EAAE,MAAM;CAKxC;AAED;;GAEG;AACH,qBAAa,wBAAyB,SAAQ,UAAU;IACnC,OAAO,EAAE,MAAM;gBAAf,OAAO,EAAE,MAAM;CAKnC;AAED;;GAEG;AACH,qBAAa,wBAAyB,SAAQ,UAAU;IAE7C,OAAO,EAAE,MAAM;IACf,MAAM,EAAE,MAAM;gBADd,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM;CAMxB"}