@launchpod/shared 1.1.1 → 1.1.3

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.
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=constants.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/constants.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const vitest_1 = require("vitest");
4
+ const constants_js_1 = require("../constants.js");
5
+ (0, vitest_1.describe)('TIER_CONFIGS', () => {
6
+ (0, vitest_1.it)('should have exactly 3 entries', () => {
7
+ (0, vitest_1.expect)(constants_js_1.TIER_CONFIGS).toHaveLength(3);
8
+ });
9
+ (0, vitest_1.it)('should have correct tier names in order', () => {
10
+ (0, vitest_1.expect)(constants_js_1.TIER_CONFIGS[0].tier).toBe('standard');
11
+ (0, vitest_1.expect)(constants_js_1.TIER_CONFIGS[1].tier).toBe('plus');
12
+ (0, vitest_1.expect)(constants_js_1.TIER_CONFIGS[2].tier).toBe('pro');
13
+ });
14
+ (0, vitest_1.it)('should have all required fields on each tier', () => {
15
+ const requiredFields = ['tier', 'vCpu', 'memoryGb', 'storage', 'label', 'monthlyPrice', 'description'];
16
+ for (const config of constants_js_1.TIER_CONFIGS) {
17
+ for (const field of requiredFields) {
18
+ (0, vitest_1.expect)(config).toHaveProperty(field);
19
+ }
20
+ }
21
+ });
22
+ });
23
+ (0, vitest_1.describe)('SUPPORTED_REGIONS', () => {
24
+ (0, vitest_1.it)('should contain us-east-1', () => {
25
+ (0, vitest_1.expect)(constants_js_1.SUPPORTED_REGIONS).toContain('us-east-1');
26
+ });
27
+ (0, vitest_1.it)('should contain us-west-2', () => {
28
+ (0, vitest_1.expect)(constants_js_1.SUPPORTED_REGIONS).toContain('us-west-2');
29
+ });
30
+ });
31
+ (0, vitest_1.describe)('REGION_NAMES', () => {
32
+ (0, vitest_1.it)('should map each supported region to a name', () => {
33
+ for (const region of constants_js_1.SUPPORTED_REGIONS) {
34
+ (0, vitest_1.expect)(constants_js_1.REGION_NAMES[region]).toBeDefined();
35
+ (0, vitest_1.expect)(typeof constants_js_1.REGION_NAMES[region]).toBe('string');
36
+ }
37
+ });
38
+ });
39
+ (0, vitest_1.describe)('FRAMEWORKS', () => {
40
+ (0, vitest_1.it)('should have at least one framework with status available', () => {
41
+ const available = constants_js_1.FRAMEWORKS.filter((f) => f.status === 'available');
42
+ (0, vitest_1.expect)(available.length).toBeGreaterThanOrEqual(1);
43
+ });
44
+ });
45
+ (0, vitest_1.describe)('Constants', () => {
46
+ (0, vitest_1.it)('MAX_INSTANCES_PER_USER should be 1', () => {
47
+ (0, vitest_1.expect)(constants_js_1.MAX_INSTANCES_PER_USER).toBe(1);
48
+ });
49
+ (0, vitest_1.it)('GATEWAY_PORT should be 18789', () => {
50
+ (0, vitest_1.expect)(constants_js_1.GATEWAY_PORT).toBe(18789);
51
+ });
52
+ (0, vitest_1.it)('INSTANCE_NAME_REGEX should be a RegExp', () => {
53
+ (0, vitest_1.expect)(constants_js_1.INSTANCE_NAME_REGEX).toBeInstanceOf(RegExp);
54
+ });
55
+ (0, vitest_1.it)('PROVISIONING_TIMEOUT_MS should be 600000', () => {
56
+ (0, vitest_1.expect)(constants_js_1.PROVISIONING_TIMEOUT_MS).toBe(600000);
57
+ });
58
+ });
59
+ //# sourceMappingURL=constants.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.test.js","sourceRoot":"","sources":["../../src/__tests__/constants.test.ts"],"names":[],"mappings":";;AAAA,mCAA8C;AAC9C,kDASyB;AAEzB,IAAA,iBAAQ,EAAC,cAAc,EAAE,GAAG,EAAE;IAC5B,IAAA,WAAE,EAAC,+BAA+B,EAAE,GAAG,EAAE;QACvC,IAAA,eAAM,EAAC,2BAAY,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,yCAAyC,EAAE,GAAG,EAAE;QACjD,IAAA,eAAM,EAAC,2BAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC9C,IAAA,eAAM,EAAC,2BAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC1C,IAAA,eAAM,EAAC,2BAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,8CAA8C,EAAE,GAAG,EAAE;QACtD,MAAM,cAAc,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,cAAc,EAAE,aAAa,CAAC,CAAC;QACvG,KAAK,MAAM,MAAM,IAAI,2BAAY,EAAE,CAAC;YAClC,KAAK,MAAM,KAAK,IAAI,cAAc,EAAE,CAAC;gBACnC,IAAA,eAAM,EAAC,MAAM,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;YACvC,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAA,iBAAQ,EAAC,mBAAmB,EAAE,GAAG,EAAE;IACjC,IAAA,WAAE,EAAC,0BAA0B,EAAE,GAAG,EAAE;QAClC,IAAA,eAAM,EAAC,gCAAiB,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,0BAA0B,EAAE,GAAG,EAAE;QAClC,IAAA,eAAM,EAAC,gCAAiB,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAA,iBAAQ,EAAC,cAAc,EAAE,GAAG,EAAE;IAC5B,IAAA,WAAE,EAAC,4CAA4C,EAAE,GAAG,EAAE;QACpD,KAAK,MAAM,MAAM,IAAI,gCAAiB,EAAE,CAAC;YACvC,IAAA,eAAM,EAAC,2BAAY,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;YAC3C,IAAA,eAAM,EAAC,OAAO,2BAAY,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACrD,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAA,iBAAQ,EAAC,YAAY,EAAE,GAAG,EAAE;IAC1B,IAAA,WAAE,EAAC,0DAA0D,EAAE,GAAG,EAAE;QAClE,MAAM,SAAS,GAAG,yBAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC;QACrE,IAAA,eAAM,EAAC,SAAS,CAAC,MAAM,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAA,iBAAQ,EAAC,WAAW,EAAE,GAAG,EAAE;IACzB,IAAA,WAAE,EAAC,oCAAoC,EAAE,GAAG,EAAE;QAC5C,IAAA,eAAM,EAAC,qCAAsB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,8BAA8B,EAAE,GAAG,EAAE;QACtC,IAAA,eAAM,EAAC,2BAAY,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,wCAAwC,EAAE,GAAG,EAAE;QAChD,IAAA,eAAM,EAAC,kCAAmB,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,0CAA0C,EAAE,GAAG,EAAE;QAClD,IAAA,eAAM,EAAC,sCAAuB,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=utils.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/utils.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,196 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const vitest_1 = require("vitest");
4
+ const utils_js_1 = require("../utils.js");
5
+ (0, vitest_1.describe)('getTierConfig', () => {
6
+ (0, vitest_1.it)('should return config for standard tier', () => {
7
+ const config = (0, utils_js_1.getTierConfig)('standard');
8
+ (0, vitest_1.expect)(config).toBeDefined();
9
+ (0, vitest_1.expect)(config.tier).toBe('standard');
10
+ (0, vitest_1.expect)(config.vCpu).toBe(3);
11
+ (0, vitest_1.expect)(config.memoryGb).toBe(4);
12
+ (0, vitest_1.expect)(config.storage).toBe(80);
13
+ (0, vitest_1.expect)(config.monthlyPrice).toBe(29);
14
+ });
15
+ (0, vitest_1.it)('should return config for plus tier', () => {
16
+ const config = (0, utils_js_1.getTierConfig)('plus');
17
+ (0, vitest_1.expect)(config).toBeDefined();
18
+ (0, vitest_1.expect)(config.tier).toBe('plus');
19
+ (0, vitest_1.expect)(config.vCpu).toBe(4);
20
+ (0, vitest_1.expect)(config.memoryGb).toBe(8);
21
+ (0, vitest_1.expect)(config.storage).toBe(160);
22
+ (0, vitest_1.expect)(config.monthlyPrice).toBe(55);
23
+ });
24
+ (0, vitest_1.it)('should return config for pro tier', () => {
25
+ const config = (0, utils_js_1.getTierConfig)('pro');
26
+ (0, vitest_1.expect)(config).toBeDefined();
27
+ (0, vitest_1.expect)(config.tier).toBe('pro');
28
+ (0, vitest_1.expect)(config.vCpu).toBe(8);
29
+ (0, vitest_1.expect)(config.memoryGb).toBe(16);
30
+ (0, vitest_1.expect)(config.storage).toBe(240);
31
+ (0, vitest_1.expect)(config.monthlyPrice).toBe(99);
32
+ });
33
+ (0, vitest_1.it)('should return undefined for invalid tier', () => {
34
+ const config = (0, utils_js_1.getTierConfig)('invalid');
35
+ (0, vitest_1.expect)(config).toBeUndefined();
36
+ });
37
+ });
38
+ (0, vitest_1.describe)('isValidInstanceName', () => {
39
+ (0, vitest_1.it)('should accept valid names (min 3 chars)', () => {
40
+ (0, vitest_1.expect)((0, utils_js_1.isValidInstanceName)('abc')).toBe(true);
41
+ (0, vitest_1.expect)((0, utils_js_1.isValidInstanceName)('my-instance')).toBe(true);
42
+ (0, vitest_1.expect)((0, utils_js_1.isValidInstanceName)('MyInstance123')).toBe(true);
43
+ (0, vitest_1.expect)((0, utils_js_1.isValidInstanceName)('a-b-c')).toBe(true);
44
+ });
45
+ (0, vitest_1.it)('should reject names that are too short', () => {
46
+ (0, vitest_1.expect)((0, utils_js_1.isValidInstanceName)('ab')).toBe(false);
47
+ (0, vitest_1.expect)((0, utils_js_1.isValidInstanceName)('a')).toBe(false);
48
+ (0, vitest_1.expect)((0, utils_js_1.isValidInstanceName)('')).toBe(false);
49
+ });
50
+ (0, vitest_1.it)('should reject names starting with a number', () => {
51
+ (0, vitest_1.expect)((0, utils_js_1.isValidInstanceName)('1abc')).toBe(false);
52
+ (0, vitest_1.expect)((0, utils_js_1.isValidInstanceName)('9instance')).toBe(false);
53
+ });
54
+ (0, vitest_1.it)('should reject names starting with a dash', () => {
55
+ (0, vitest_1.expect)((0, utils_js_1.isValidInstanceName)('-abc')).toBe(false);
56
+ (0, vitest_1.expect)((0, utils_js_1.isValidInstanceName)('-my-instance')).toBe(false);
57
+ });
58
+ (0, vitest_1.it)('should reject names that are too long (>63 chars)', () => {
59
+ const longName = 'a' + 'b'.repeat(63); // 64 chars total
60
+ (0, vitest_1.expect)(longName.length).toBe(64);
61
+ (0, vitest_1.expect)((0, utils_js_1.isValidInstanceName)(longName)).toBe(false);
62
+ });
63
+ (0, vitest_1.it)('should accept names at the max length (63 chars)', () => {
64
+ const maxName = 'a' + 'b'.repeat(62); // 63 chars total
65
+ (0, vitest_1.expect)(maxName.length).toBe(63);
66
+ (0, vitest_1.expect)((0, utils_js_1.isValidInstanceName)(maxName)).toBe(true);
67
+ });
68
+ (0, vitest_1.it)('should reject names with special characters', () => {
69
+ (0, vitest_1.expect)((0, utils_js_1.isValidInstanceName)('my_instance')).toBe(false);
70
+ (0, vitest_1.expect)((0, utils_js_1.isValidInstanceName)('my.instance')).toBe(false);
71
+ (0, vitest_1.expect)((0, utils_js_1.isValidInstanceName)('my instance')).toBe(false);
72
+ (0, vitest_1.expect)((0, utils_js_1.isValidInstanceName)('my@instance')).toBe(false);
73
+ (0, vitest_1.expect)((0, utils_js_1.isValidInstanceName)('my!instance')).toBe(false);
74
+ });
75
+ (0, vitest_1.it)('should reject names with underscores', () => {
76
+ (0, vitest_1.expect)((0, utils_js_1.isValidInstanceName)('my_pod')).toBe(false);
77
+ (0, vitest_1.expect)((0, utils_js_1.isValidInstanceName)('a_b_c')).toBe(false);
78
+ });
79
+ });
80
+ (0, vitest_1.describe)('generateToken', () => {
81
+ (0, vitest_1.it)('should generate a token with default length of 32', () => {
82
+ const token = (0, utils_js_1.generateToken)();
83
+ (0, vitest_1.expect)(token).toHaveLength(32);
84
+ });
85
+ (0, vitest_1.it)('should generate a token with custom length', () => {
86
+ (0, vitest_1.expect)((0, utils_js_1.generateToken)(8)).toHaveLength(8);
87
+ (0, vitest_1.expect)((0, utils_js_1.generateToken)(64)).toHaveLength(64);
88
+ (0, vitest_1.expect)((0, utils_js_1.generateToken)(1)).toHaveLength(1);
89
+ });
90
+ (0, vitest_1.it)('should only contain alphanumeric characters', () => {
91
+ const token = (0, utils_js_1.generateToken)(100);
92
+ (0, vitest_1.expect)(token).toMatch(/^[A-Za-z0-9]+$/);
93
+ });
94
+ (0, vitest_1.it)('should generate unique tokens between calls', () => {
95
+ const tokens = new Set(Array.from({ length: 10 }, () => (0, utils_js_1.generateToken)()));
96
+ (0, vitest_1.expect)(tokens.size).toBe(10);
97
+ });
98
+ });
99
+ (0, vitest_1.describe)('generateInstanceId', () => {
100
+ (0, vitest_1.it)('should match the expected format', () => {
101
+ const id = (0, utils_js_1.generateInstanceId)();
102
+ (0, vitest_1.expect)(id).toMatch(/^oc-[a-z0-9]+-[a-z0-9]{8}$/);
103
+ });
104
+ (0, vitest_1.it)('should generate unique IDs between calls', () => {
105
+ const ids = new Set(Array.from({ length: 10 }, () => (0, utils_js_1.generateInstanceId)()));
106
+ (0, vitest_1.expect)(ids.size).toBe(10);
107
+ });
108
+ });
109
+ (0, vitest_1.describe)('formatBytes', () => {
110
+ (0, vitest_1.it)('should format 0 bytes', () => {
111
+ (0, vitest_1.expect)((0, utils_js_1.formatBytes)(0)).toBe('0 B');
112
+ });
113
+ (0, vitest_1.it)('should format bytes to KB', () => {
114
+ (0, vitest_1.expect)((0, utils_js_1.formatBytes)(1024)).toBe('1 KB');
115
+ });
116
+ (0, vitest_1.it)('should format fractional KB', () => {
117
+ (0, vitest_1.expect)((0, utils_js_1.formatBytes)(1536)).toBe('1.5 KB');
118
+ });
119
+ (0, vitest_1.it)('should format bytes to MB', () => {
120
+ (0, vitest_1.expect)((0, utils_js_1.formatBytes)(1048576)).toBe('1 MB');
121
+ });
122
+ (0, vitest_1.it)('should format bytes to GB', () => {
123
+ (0, vitest_1.expect)((0, utils_js_1.formatBytes)(1073741824)).toBe('1 GB');
124
+ });
125
+ });
126
+ (0, vitest_1.describe)('formatCost', () => {
127
+ (0, vitest_1.it)('should format cost with 4 decimal places', () => {
128
+ (0, vitest_1.expect)((0, utils_js_1.formatCost)(29)).toBe('$29.0000');
129
+ });
130
+ (0, vitest_1.it)('should format small costs', () => {
131
+ (0, vitest_1.expect)((0, utils_js_1.formatCost)(0.0123)).toBe('$0.0123');
132
+ });
133
+ (0, vitest_1.it)('should format zero cost', () => {
134
+ (0, vitest_1.expect)((0, utils_js_1.formatCost)(0)).toBe('$0.0000');
135
+ });
136
+ });
137
+ (0, vitest_1.describe)('sleep', () => {
138
+ (0, vitest_1.it)('should resolve after approximately N ms', async () => {
139
+ const delay = 50;
140
+ const start = Date.now();
141
+ await (0, utils_js_1.sleep)(delay);
142
+ const elapsed = Date.now() - start;
143
+ (0, vitest_1.expect)(elapsed).toBeGreaterThanOrEqual(delay - 10);
144
+ (0, vitest_1.expect)(elapsed).toBeLessThan(delay + 100);
145
+ });
146
+ });
147
+ (0, vitest_1.describe)('retry', () => {
148
+ (0, vitest_1.it)('should succeed on first try and call fn once', async () => {
149
+ const fn = vitest_1.vi.fn().mockResolvedValue('ok');
150
+ const result = await (0, utils_js_1.retry)(fn, 3, 10);
151
+ (0, vitest_1.expect)(result).toBe('ok');
152
+ (0, vitest_1.expect)(fn).toHaveBeenCalledTimes(1);
153
+ });
154
+ (0, vitest_1.it)('should succeed on second attempt after first failure', async () => {
155
+ const fn = vitest_1.vi
156
+ .fn()
157
+ .mockRejectedValueOnce(new Error('fail'))
158
+ .mockResolvedValue('ok');
159
+ const result = await (0, utils_js_1.retry)(fn, 3, 10);
160
+ (0, vitest_1.expect)(result).toBe('ok');
161
+ (0, vitest_1.expect)(fn).toHaveBeenCalledTimes(2);
162
+ });
163
+ (0, vitest_1.it)('should throw last error after exhausting all retries', async () => {
164
+ const fn = vitest_1.vi.fn().mockRejectedValue(new Error('always fails'));
165
+ await (0, vitest_1.expect)((0, utils_js_1.retry)(fn, 3, 10)).rejects.toThrow('always fails');
166
+ (0, vitest_1.expect)(fn).toHaveBeenCalledTimes(3);
167
+ });
168
+ (0, vitest_1.it)('should delay between retries', async () => {
169
+ const fn = vitest_1.vi
170
+ .fn()
171
+ .mockRejectedValueOnce(new Error('fail'))
172
+ .mockResolvedValue('ok');
173
+ const start = Date.now();
174
+ await (0, utils_js_1.retry)(fn, 3, 50);
175
+ const elapsed = Date.now() - start;
176
+ // First retry delay is baseDelay * 2^0 = 50ms
177
+ (0, vitest_1.expect)(elapsed).toBeGreaterThanOrEqual(40);
178
+ });
179
+ });
180
+ (0, vitest_1.describe)('maskSecret', () => {
181
+ (0, vitest_1.it)('should fully mask short values', () => {
182
+ // visibleChars default is 4, so values <= 8 chars are fully masked
183
+ (0, vitest_1.expect)((0, utils_js_1.maskSecret)('abcdefgh')).toBe('********');
184
+ (0, vitest_1.expect)((0, utils_js_1.maskSecret)('short')).toBe('*****');
185
+ });
186
+ (0, vitest_1.it)('should show first and last 4 chars for long values', () => {
187
+ (0, vitest_1.expect)((0, utils_js_1.maskSecret)('abcdefghijklmnop')).toBe('abcd********mnop');
188
+ });
189
+ (0, vitest_1.it)('should return empty string for empty input', () => {
190
+ (0, vitest_1.expect)((0, utils_js_1.maskSecret)('')).toBe('');
191
+ });
192
+ (0, vitest_1.it)('should handle single character', () => {
193
+ (0, vitest_1.expect)((0, utils_js_1.maskSecret)('x')).toBe('*');
194
+ });
195
+ });
196
+ //# sourceMappingURL=utils.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.test.js","sourceRoot":"","sources":["../../src/__tests__/utils.test.ts"],"names":[],"mappings":"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"}
@@ -7,5 +7,4 @@ export declare const GATEWAY_PORT = 18789;
7
7
  export declare const INSTANCE_NAME_REGEX: RegExp;
8
8
  export declare const MAX_INSTANCES_PER_USER = 1;
9
9
  export declare const PROVISIONING_TIMEOUT_MS: number;
10
- export declare const BILLING_MARKUP_PERCENTAGE = 0.35;
11
10
  //# sourceMappingURL=constants.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEhE,eAAO,MAAM,iBAAiB,EAAE,MAAM,EAA+B,CAAC;AAEtE,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAG/C,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,UAAU,EA4BpC,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,SAAS,EAQjC,CAAC;AAEF,eAAO,MAAM,YAAY,QAAQ,CAAC;AAElC,eAAO,MAAM,mBAAmB,QAAiC,CAAC;AAElE,eAAO,MAAM,sBAAsB,IAAI,CAAC;AAExC,eAAO,MAAM,uBAAuB,QAAiB,CAAC;AAGtD,eAAO,MAAM,yBAAyB,OAAO,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEhE,eAAO,MAAM,iBAAiB,EAAE,MAAM,EAA+B,CAAC;AAEtE,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAG/C,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,UAAU,EA4BpC,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,SAAS,EAOjC,CAAC;AAEF,eAAO,MAAM,YAAY,QAAQ,CAAC;AAElC,eAAO,MAAM,mBAAmB,QAAiC,CAAC;AAElE,eAAO,MAAM,sBAAsB,IAAI,CAAC;AAExC,eAAO,MAAM,uBAAuB,QAAiB,CAAC"}
package/dist/constants.js CHANGED
@@ -1,17 +1,17 @@
1
1
  "use strict";
2
2
  // Launchpod SaaS Constants
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.BILLING_MARKUP_PERCENTAGE = exports.PROVISIONING_TIMEOUT_MS = exports.MAX_INSTANCES_PER_USER = exports.INSTANCE_NAME_REGEX = exports.GATEWAY_PORT = exports.FRAMEWORKS = exports.TIER_CONFIGS = exports.REGION_NAMES = exports.SUPPORTED_REGIONS = void 0;
4
+ exports.PROVISIONING_TIMEOUT_MS = exports.MAX_INSTANCES_PER_USER = exports.INSTANCE_NAME_REGEX = exports.GATEWAY_PORT = exports.FRAMEWORKS = exports.TIER_CONFIGS = exports.REGION_NAMES = exports.SUPPORTED_REGIONS = void 0;
5
5
  exports.SUPPORTED_REGIONS = ['us-east-1', 'us-west-2'];
6
6
  exports.REGION_NAMES = {
7
- 'us-east-1': 'US East (N. Virginia)',
7
+ 'us-east-1': 'US East (Ashburn, VA)',
8
8
  'us-west-2': 'US West (Oregon)',
9
9
  };
10
10
  exports.TIER_CONFIGS = [
11
11
  {
12
12
  tier: 'standard',
13
- ecsCpu: 1024,
14
- ecsMemory: 4096,
13
+ vCpu: 3,
14
+ memoryGb: 4,
15
15
  storage: 80,
16
16
  label: 'Standard',
17
17
  monthlyPrice: 29,
@@ -19,8 +19,8 @@ exports.TIER_CONFIGS = [
19
19
  },
20
20
  {
21
21
  tier: 'plus',
22
- ecsCpu: 1536,
23
- ecsMemory: 8192,
22
+ vCpu: 4,
23
+ memoryGb: 8,
24
24
  storage: 160,
25
25
  label: 'Plus',
26
26
  monthlyPrice: 55,
@@ -28,8 +28,8 @@ exports.TIER_CONFIGS = [
28
28
  },
29
29
  {
30
30
  tier: 'pro',
31
- ecsCpu: 2048,
32
- ecsMemory: 16384,
31
+ vCpu: 8,
32
+ memoryGb: 16,
33
33
  storage: 240,
34
34
  label: 'Pro',
35
35
  monthlyPrice: 99,
@@ -42,13 +42,10 @@ exports.FRAMEWORKS = [
42
42
  name: 'OpenClaw',
43
43
  tagline: 'Personal AI agent — messaging, automation, browser, cron',
44
44
  status: 'available',
45
- stars: '150k+',
46
45
  },
47
46
  ];
48
47
  exports.GATEWAY_PORT = 18789;
49
48
  exports.INSTANCE_NAME_REGEX = /^[a-zA-Z][a-zA-Z0-9-]{2,62}$/;
50
49
  exports.MAX_INSTANCES_PER_USER = 1;
51
50
  exports.PROVISIONING_TIMEOUT_MS = 10 * 60 * 1000; // 10 minutes
52
- // Legacy — kept for API backward compatibility, remove when AI proxy is fully removed
53
- exports.BILLING_MARKUP_PERCENTAGE = 0.35;
54
51
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";AAAA,2BAA2B;;;AAId,QAAA,iBAAiB,GAAa,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;AAEzD,QAAA,YAAY,GAA2B;IAClD,WAAW,EAAE,uBAAuB;IACpC,WAAW,EAAE,kBAAkB;CAChC,CAAC;AAEW,QAAA,YAAY,GAAiB;IACxC;QACE,IAAI,EAAE,UAAU;QAChB,MAAM,EAAE,IAAI;QACZ,SAAS,EAAE,IAAI;QACf,OAAO,EAAE,EAAE;QACX,KAAK,EAAE,UAAU;QACjB,YAAY,EAAE,EAAE;QAChB,WAAW,EAAE,yBAAyB;KACvC;IACD;QACE,IAAI,EAAE,MAAM;QACZ,MAAM,EAAE,IAAI;QACZ,SAAS,EAAE,IAAI;QACf,OAAO,EAAE,GAAG;QACZ,KAAK,EAAE,MAAM;QACb,YAAY,EAAE,EAAE;QAChB,WAAW,EAAE,6BAA6B;KAC3C;IACD;QACE,IAAI,EAAE,KAAK;QACX,MAAM,EAAE,IAAI;QACZ,SAAS,EAAE,KAAK;QAChB,OAAO,EAAE,GAAG;QACZ,KAAK,EAAE,KAAK;QACZ,YAAY,EAAE,EAAE;QAChB,WAAW,EAAE,mCAAmC;KACjD;CACF,CAAC;AAEW,QAAA,UAAU,GAAgB;IACrC;QACE,EAAE,EAAE,UAAU;QACd,IAAI,EAAE,UAAU;QAChB,OAAO,EAAE,0DAA0D;QACnE,MAAM,EAAE,WAAW;QACnB,KAAK,EAAE,OAAO;KACf;CACF,CAAC;AAEW,QAAA,YAAY,GAAG,KAAK,CAAC;AAErB,QAAA,mBAAmB,GAAG,8BAA8B,CAAC;AAErD,QAAA,sBAAsB,GAAG,CAAC,CAAC;AAE3B,QAAA,uBAAuB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,aAAa;AAEpE,sFAAsF;AACzE,QAAA,yBAAyB,GAAG,IAAI,CAAC"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";AAAA,2BAA2B;;;AAId,QAAA,iBAAiB,GAAa,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;AAEzD,QAAA,YAAY,GAA2B;IAClD,WAAW,EAAE,uBAAuB;IACpC,WAAW,EAAE,kBAAkB;CAChC,CAAC;AAEW,QAAA,YAAY,GAAiB;IACxC;QACE,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,CAAC;QACP,QAAQ,EAAE,CAAC;QACX,OAAO,EAAE,EAAE;QACX,KAAK,EAAE,UAAU;QACjB,YAAY,EAAE,EAAE;QAChB,WAAW,EAAE,yBAAyB;KACvC;IACD;QACE,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,CAAC;QACP,QAAQ,EAAE,CAAC;QACX,OAAO,EAAE,GAAG;QACZ,KAAK,EAAE,MAAM;QACb,YAAY,EAAE,EAAE;QAChB,WAAW,EAAE,6BAA6B;KAC3C;IACD;QACE,IAAI,EAAE,KAAK;QACX,IAAI,EAAE,CAAC;QACP,QAAQ,EAAE,EAAE;QACZ,OAAO,EAAE,GAAG;QACZ,KAAK,EAAE,KAAK;QACZ,YAAY,EAAE,EAAE;QAChB,WAAW,EAAE,mCAAmC;KACjD;CACF,CAAC;AAEW,QAAA,UAAU,GAAgB;IACrC;QACE,EAAE,EAAE,UAAU;QACd,IAAI,EAAE,UAAU;QAChB,OAAO,EAAE,0DAA0D;QACnE,MAAM,EAAE,WAAW;KACpB;CACF,CAAC;AAEW,QAAA,YAAY,GAAG,KAAK,CAAC;AAErB,QAAA,mBAAmB,GAAG,8BAA8B,CAAC;AAErD,QAAA,sBAAsB,GAAG,CAAC,CAAC;AAE3B,QAAA,uBAAuB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,aAAa"}
package/dist/index.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  export * from './types.js';
2
2
  export * from './constants.js';
3
3
  export * from './utils.js';
4
+ export * from './managed-config.js';
4
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,qBAAqB,CAAC"}
package/dist/index.js CHANGED
@@ -18,4 +18,5 @@ Object.defineProperty(exports, "__esModule", { value: true });
18
18
  __exportStar(require("./types.js"), exports);
19
19
  __exportStar(require("./constants.js"), exports);
20
20
  __exportStar(require("./utils.js"), exports);
21
+ __exportStar(require("./managed-config.js"), exports);
21
22
  //# 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,4CAA4C;;;;;;;;;;;;;;;;AAE5C,6CAA2B;AAC3B,iDAA+B;AAC/B,6CAA2B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA,4CAA4C;;;;;;;;;;;;;;;;AAE5C,6CAA2B;AAC3B,iDAA+B;AAC/B,6CAA2B;AAC3B,sDAAoC"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Locked-down base OpenClaw config template for Santuri managed instances.
3
+ * Every managed client starts from this. Per-client customization adds on top, never loosens.
4
+ */
5
+ export declare const LOCKED_DOWN_BASE_CONFIG: Record<string, any>;
6
+ /** Controls which Google Workspace tools are enabled per instance */
7
+ export type ScopeProfile = 'essential' | 'standard' | 'full';
8
+ /** Returns the Google Workspace tools allowed for a given scope profile */
9
+ export declare function getGoogleTools(profile: ScopeProfile): string[];
10
+ /** Returns the Google Workspace tools to deny for a given scope profile */
11
+ export declare function getGoogleToolDenyList(profile: ScopeProfile): string[];
12
+ /** Default scope profile for new instances */
13
+ export declare const DEFAULT_SCOPE_PROFILE: ScopeProfile;
14
+ /** Resource profile mapping (replaces tier-based server selection) */
15
+ export type ResourceProfile = 'small' | 'medium' | 'large';
16
+ export declare const RESOURCE_PROFILES: Record<ResourceProfile, {
17
+ serverType: string;
18
+ memoryMax: string;
19
+ cpuQuota: string;
20
+ tasksMax: number;
21
+ diskQuotaSoftGB: number;
22
+ diskQuotaHardGB: number;
23
+ }>;
24
+ /** Map legacy tiers to resource profiles */
25
+ export declare const TIER_TO_PROFILE: Record<string, ResourceProfile>;
26
+ export interface ManagedClientConfig {
27
+ botName: string;
28
+ botTheme?: string;
29
+ botEmoji?: string;
30
+ timezone: string;
31
+ channel: 'whatsapp' | 'telegram';
32
+ googleEmail?: string;
33
+ scopeProfile?: ScopeProfile;
34
+ plugins?: string[];
35
+ soulMd?: string;
36
+ agentsMd?: string;
37
+ }
38
+ /**
39
+ * Build a locked-down openclaw.json for a managed client.
40
+ * Merges base template with per-client overrides. Never loosens deny lists.
41
+ */
42
+ export declare function buildClientConfig(clientConfig: ManagedClientConfig, gatewayToken: string): Record<string, any>;
43
+ //# sourceMappingURL=managed-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"managed-config.d.ts","sourceRoot":"","sources":["../src/managed-config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAmJvD,CAAC;AAIF,qEAAqE;AACrE,MAAM,MAAM,YAAY,GAAG,WAAW,GAAG,UAAU,GAAG,MAAM,CAAC;AAmC7D,2EAA2E;AAC3E,wBAAgB,cAAc,CAAC,OAAO,EAAE,YAAY,GAAG,MAAM,EAAE,CAE9D;AAED,2EAA2E;AAC3E,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,YAAY,GAAG,MAAM,EAAE,CAGrE;AAED,8CAA8C;AAC9C,eAAO,MAAM,qBAAqB,EAAE,YAAyB,CAAC;AA8B9D,sEAAsE;AACtE,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;AAE3D,eAAO,MAAM,iBAAiB,EAAE,MAAM,CACpC,eAAe,EACf;IACE,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;CACzB,CA0BF,CAAC;AAEF,4CAA4C;AAC5C,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAI3D,CAAC;AAEF,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,UAAU,GAAG,UAAU,CAAC;IACjC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,YAAY,EAAE,mBAAmB,EACjC,YAAY,EAAE,MAAM,GACnB,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAyDrB"}
@@ -0,0 +1,300 @@
1
+ "use strict";
2
+ /**
3
+ * Locked-down base OpenClaw config template for Santuri managed instances.
4
+ * Every managed client starts from this. Per-client customization adds on top, never loosens.
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.TIER_TO_PROFILE = exports.RESOURCE_PROFILES = exports.DEFAULT_SCOPE_PROFILE = exports.LOCKED_DOWN_BASE_CONFIG = void 0;
8
+ exports.getGoogleTools = getGoogleTools;
9
+ exports.getGoogleToolDenyList = getGoogleToolDenyList;
10
+ exports.buildClientConfig = buildClientConfig;
11
+ exports.LOCKED_DOWN_BASE_CONFIG = {
12
+ // ─── Identity (customize per client) ───────────────────────────
13
+ identity: {
14
+ name: 'Assistant',
15
+ theme: 'helpful, professional business assistant',
16
+ emoji: '🤖',
17
+ },
18
+ // ─── Agent Configuration ───────────────────────────────────────
19
+ agents: {
20
+ defaults: {
21
+ workspace: '~/.openclaw/workspace',
22
+ skipBootstrap: false,
23
+ model: {
24
+ primary: 'anthropic/claude-opus-4-6',
25
+ fallbacks: ['anthropic/claude-sonnet-4-5'],
26
+ },
27
+ maxConcurrent: 1,
28
+ timeoutSeconds: 300,
29
+ contextTokens: 100000,
30
+ elevatedDefault: 'off',
31
+ thinkingDefault: 'low',
32
+ userTimezone: 'Africa/Nairobi',
33
+ },
34
+ list: [
35
+ {
36
+ id: 'main',
37
+ default: true,
38
+ tools: {
39
+ profile: 'messaging',
40
+ allow: [
41
+ 'web_search',
42
+ 'web_fetch',
43
+ 'tts',
44
+ 'image',
45
+ 'read',
46
+ 'write',
47
+ 'edit',
48
+ 'cron',
49
+ 'memory_search',
50
+ 'memory_get',
51
+ ],
52
+ deny: [
53
+ 'exec',
54
+ 'process',
55
+ 'browser',
56
+ 'canvas',
57
+ 'nodes',
58
+ 'gateway',
59
+ 'apply_patch',
60
+ 'subagents',
61
+ ],
62
+ elevated: { enabled: false },
63
+ },
64
+ },
65
+ ],
66
+ },
67
+ // ─── Global Tool Policy ────────────────────────────────────────
68
+ tools: {
69
+ elevated: { enabled: false },
70
+ exec: { security: 'deny' },
71
+ fs: { workspaceOnly: true },
72
+ deny: [
73
+ 'exec',
74
+ 'process',
75
+ 'browser',
76
+ 'canvas',
77
+ 'nodes',
78
+ 'gateway',
79
+ 'apply_patch',
80
+ 'subagents',
81
+ ],
82
+ },
83
+ // ─── Commands (all dangerous commands disabled) ────────────────
84
+ commands: {
85
+ bash: false,
86
+ config: false,
87
+ debug: false,
88
+ restart: false,
89
+ },
90
+ // ─── Session Management ────────────────────────────────────────
91
+ session: {
92
+ dmScope: 'per-channel-peer',
93
+ reset: {
94
+ mode: 'idle',
95
+ idleMinutes: 120,
96
+ },
97
+ maintenance: {
98
+ mode: 'enforce',
99
+ pruneAfter: '7d',
100
+ maxEntries: 200,
101
+ rotateBytes: '5mb',
102
+ },
103
+ },
104
+ // ─── Channels (per-client — placeholders) ──────────────────────
105
+ channels: {
106
+ whatsapp: {
107
+ enabled: false,
108
+ dmPolicy: 'allowlist',
109
+ allowFrom: [],
110
+ groupPolicy: 'disabled',
111
+ configWrites: false,
112
+ },
113
+ telegram: {
114
+ enabled: false,
115
+ dmPolicy: 'allowlist',
116
+ allowFrom: [],
117
+ groupPolicy: 'disabled',
118
+ configWrites: false,
119
+ },
120
+ },
121
+ // ─── Gateway ───────────────────────────────────────────────────
122
+ gateway: {
123
+ bind: 'loopback',
124
+ auth: {
125
+ mode: 'token',
126
+ token: 'GENERATED_AT_PROVISION_TIME',
127
+ },
128
+ controlUi: {
129
+ enabled: true,
130
+ allowInsecureAuth: true,
131
+ },
132
+ trustedProxies: ['127.0.0.1', '::1'],
133
+ },
134
+ // ─── Plugins ───────────────────────────────────────────────────
135
+ plugins: {
136
+ enabled: true,
137
+ allow: [],
138
+ entries: {},
139
+ },
140
+ // ─── Skills ────────────────────────────────────────────────────
141
+ skills: {
142
+ allowBundled: [],
143
+ },
144
+ // ─── Logging ───────────────────────────────────────────────────
145
+ logging: {
146
+ level: 'info',
147
+ redactSensitive: 'tools',
148
+ },
149
+ };
150
+ /** All Google Workspace tools across all profiles */
151
+ const ALL_GOOGLE_TOOLS = [
152
+ 'gmail_search', 'gmail_read', 'gmail_labels',
153
+ 'gmail_send', 'gmail_draft', 'gmail_archive',
154
+ 'calendar_list', 'calendar_create', 'calendar_update', 'calendar_delete',
155
+ 'contacts_search', 'contacts_create', 'contacts_update',
156
+ 'drive_search', 'drive_read',
157
+ ];
158
+ const ESSENTIAL_TOOLS = [
159
+ 'gmail_search', 'gmail_read', 'gmail_labels',
160
+ 'calendar_list',
161
+ 'contacts_search',
162
+ ];
163
+ const STANDARD_TOOLS = [
164
+ ...ESSENTIAL_TOOLS,
165
+ 'gmail_send', 'gmail_draft', 'gmail_archive',
166
+ 'calendar_create', 'calendar_update', 'calendar_delete',
167
+ ];
168
+ const FULL_TOOLS = [
169
+ ...STANDARD_TOOLS,
170
+ 'contacts_create', 'contacts_update',
171
+ 'drive_search', 'drive_read',
172
+ ];
173
+ const SCOPE_PROFILE_TOOLS = {
174
+ essential: ESSENTIAL_TOOLS,
175
+ standard: STANDARD_TOOLS,
176
+ full: FULL_TOOLS,
177
+ };
178
+ /** Returns the Google Workspace tools allowed for a given scope profile */
179
+ function getGoogleTools(profile) {
180
+ return SCOPE_PROFILE_TOOLS[profile];
181
+ }
182
+ /** Returns the Google Workspace tools to deny for a given scope profile */
183
+ function getGoogleToolDenyList(profile) {
184
+ const allowed = getGoogleTools(profile);
185
+ return ALL_GOOGLE_TOOLS.filter(t => !allowed.includes(t));
186
+ }
187
+ /** Default scope profile for new instances */
188
+ exports.DEFAULT_SCOPE_PROFILE = 'standard';
189
+ // ─── Weekly Safety Report Cron (§5) ──────────────────────────────────
190
+ /** Build the weekly safety report cron job config */
191
+ function buildWeeklySafetyReportCron(timezone) {
192
+ return {
193
+ name: 'weekly-safety-report',
194
+ schedule: {
195
+ kind: 'cron',
196
+ expr: '0 9 * * 1', // Every Monday at 9am
197
+ tz: timezone,
198
+ },
199
+ payload: {
200
+ kind: 'agentTurn',
201
+ message: [
202
+ 'Generate and send your weekly safety report. Read the audit log',
203
+ 'summary from /var/log/openclaw/ and send a brief message to the',
204
+ 'client with: email count (read/sent/drafted), calendar events',
205
+ '(created/updated), contacts looked up, and "All systems healthy"',
206
+ 'if everything is normal. Keep it short and conversational.',
207
+ ].join(' '),
208
+ },
209
+ sessionTarget: 'isolated',
210
+ delivery: {
211
+ mode: 'announce',
212
+ },
213
+ };
214
+ }
215
+ exports.RESOURCE_PROFILES = {
216
+ small: {
217
+ serverType: 'cpx21', // 3 vCPU / 4 GB / 80 GB — $9.99/mo
218
+ memoryMax: '3G',
219
+ cpuQuota: '300%',
220
+ tasksMax: 512,
221
+ diskQuotaSoftGB: 60,
222
+ diskQuotaHardGB: 62,
223
+ },
224
+ medium: {
225
+ serverType: 'cpx31', // 4 vCPU / 8 GB / 160 GB — $17.99/mo
226
+ memoryMax: '6G',
227
+ cpuQuota: '400%',
228
+ tasksMax: 1024,
229
+ diskQuotaSoftGB: 120,
230
+ diskQuotaHardGB: 124,
231
+ },
232
+ large: {
233
+ serverType: 'cpx41', // 8 vCPU / 16 GB / 240 GB — $33.49/mo
234
+ memoryMax: '12G',
235
+ cpuQuota: '800%',
236
+ tasksMax: 2048,
237
+ diskQuotaSoftGB: 180,
238
+ diskQuotaHardGB: 186,
239
+ },
240
+ };
241
+ /** Map legacy tiers to resource profiles */
242
+ exports.TIER_TO_PROFILE = {
243
+ standard: 'small',
244
+ plus: 'medium',
245
+ pro: 'large',
246
+ };
247
+ /**
248
+ * Build a locked-down openclaw.json for a managed client.
249
+ * Merges base template with per-client overrides. Never loosens deny lists.
250
+ */
251
+ function buildClientConfig(clientConfig, gatewayToken) {
252
+ const config = JSON.parse(JSON.stringify(exports.LOCKED_DOWN_BASE_CONFIG));
253
+ // Identity
254
+ config.identity.name = clientConfig.botName;
255
+ if (clientConfig.botTheme)
256
+ config.identity.theme = clientConfig.botTheme;
257
+ if (clientConfig.botEmoji)
258
+ config.identity.emoji = clientConfig.botEmoji;
259
+ // Timezone
260
+ config.agents.defaults.userTimezone = clientConfig.timezone;
261
+ // Gateway token
262
+ config.gateway.auth.token = gatewayToken;
263
+ // Channel
264
+ config.channels[clientConfig.channel].enabled = true;
265
+ // Browser config (headless chromium)
266
+ config.browser = {
267
+ enabled: true,
268
+ executablePath: '/usr/local/bin/chromium',
269
+ headless: true,
270
+ noSandbox: true,
271
+ };
272
+ // Plugins
273
+ const plugins = clientConfig.plugins || [];
274
+ if (clientConfig.googleEmail && !plugins.includes('google-workspace')) {
275
+ plugins.push('google-workspace');
276
+ }
277
+ if (plugins.length > 0) {
278
+ config.plugins.allow = plugins;
279
+ // Add Google Workspace tools based on scope profile
280
+ if (plugins.includes('google-workspace')) {
281
+ const profile = clientConfig.scopeProfile || exports.DEFAULT_SCOPE_PROFILE;
282
+ const allowedTools = getGoogleTools(profile);
283
+ const deniedTools = getGoogleToolDenyList(profile);
284
+ config.agents.list[0].tools.allow.push(...allowedTools);
285
+ // Add denied Google tools to global + agent deny lists
286
+ config.tools.deny.push(...deniedTools);
287
+ config.agents.list[0].tools.deny.push(...deniedTools);
288
+ }
289
+ }
290
+ // Cron jobs — weekly safety report (§5)
291
+ if (clientConfig.googleEmail) {
292
+ config.cron = {
293
+ jobs: [
294
+ buildWeeklySafetyReportCron(clientConfig.timezone),
295
+ ],
296
+ };
297
+ }
298
+ return config;
299
+ }
300
+ //# sourceMappingURL=managed-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"managed-config.js","sourceRoot":"","sources":["../src/managed-config.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AA8LH,wCAEC;AAGD,sDAGC;AAiGD,8CA4DC;AAjWY,QAAA,uBAAuB,GAAwB;IAC1D,kEAAkE;IAClE,QAAQ,EAAE;QACR,IAAI,EAAE,WAAW;QACjB,KAAK,EAAE,0CAA0C;QACjD,KAAK,EAAE,IAAI;KACZ;IAED,kEAAkE;IAClE,MAAM,EAAE;QACN,QAAQ,EAAE;YACR,SAAS,EAAE,uBAAuB;YAClC,aAAa,EAAE,KAAK;YACpB,KAAK,EAAE;gBACL,OAAO,EAAE,2BAA2B;gBACpC,SAAS,EAAE,CAAC,6BAA6B,CAAC;aAC3C;YACD,aAAa,EAAE,CAAC;YAChB,cAAc,EAAE,GAAG;YACnB,aAAa,EAAE,MAAM;YACrB,eAAe,EAAE,KAAK;YACtB,eAAe,EAAE,KAAK;YACtB,YAAY,EAAE,gBAAgB;SAC/B;QACD,IAAI,EAAE;YACJ;gBACE,EAAE,EAAE,MAAM;gBACV,OAAO,EAAE,IAAI;gBACb,KAAK,EAAE;oBACL,OAAO,EAAE,WAAW;oBACpB,KAAK,EAAE;wBACL,YAAY;wBACZ,WAAW;wBACX,KAAK;wBACL,OAAO;wBACP,MAAM;wBACN,OAAO;wBACP,MAAM;wBACN,MAAM;wBACN,eAAe;wBACf,YAAY;qBACb;oBACD,IAAI,EAAE;wBACJ,MAAM;wBACN,SAAS;wBACT,SAAS;wBACT,QAAQ;wBACR,OAAO;wBACP,SAAS;wBACT,aAAa;wBACb,WAAW;qBACZ;oBACD,QAAQ,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE;iBAC7B;aACF;SACF;KACF;IAED,kEAAkE;IAClE,KAAK,EAAE;QACL,QAAQ,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE;QAC5B,IAAI,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE;QAC1B,EAAE,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE;QAC3B,IAAI,EAAE;YACJ,MAAM;YACN,SAAS;YACT,SAAS;YACT,QAAQ;YACR,OAAO;YACP,SAAS;YACT,aAAa;YACb,WAAW;SACZ;KACF;IAED,kEAAkE;IAClE,QAAQ,EAAE;QACR,IAAI,EAAE,KAAK;QACX,MAAM,EAAE,KAAK;QACb,KAAK,EAAE,KAAK;QACZ,OAAO,EAAE,KAAK;KACf;IAED,kEAAkE;IAClE,OAAO,EAAE;QACP,OAAO,EAAE,kBAAkB;QAC3B,KAAK,EAAE;YACL,IAAI,EAAE,MAAM;YACZ,WAAW,EAAE,GAAG;SACjB;QACD,WAAW,EAAE;YACX,IAAI,EAAE,SAAS;YACf,UAAU,EAAE,IAAI;YAChB,UAAU,EAAE,GAAG;YACf,WAAW,EAAE,KAAK;SACnB;KACF;IAED,kEAAkE;IAClE,QAAQ,EAAE;QACR,QAAQ,EAAE;YACR,OAAO,EAAE,KAAK;YACd,QAAQ,EAAE,WAAW;YACrB,SAAS,EAAE,EAAE;YACb,WAAW,EAAE,UAAU;YACvB,YAAY,EAAE,KAAK;SACpB;QACD,QAAQ,EAAE;YACR,OAAO,EAAE,KAAK;YACd,QAAQ,EAAE,WAAW;YACrB,SAAS,EAAE,EAAE;YACb,WAAW,EAAE,UAAU;YACvB,YAAY,EAAE,KAAK;SACpB;KACF;IAED,kEAAkE;IAClE,OAAO,EAAE;QACP,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE;YACJ,IAAI,EAAE,OAAO;YACb,KAAK,EAAE,6BAA6B;SACrC;QACD,SAAS,EAAE;YACT,OAAO,EAAE,IAAI;YACb,iBAAiB,EAAE,IAAI;SACxB;QACD,cAAc,EAAE,CAAC,WAAW,EAAE,KAAK,CAAC;KACrC;IAED,kEAAkE;IAClE,OAAO,EAAE;QACP,OAAO,EAAE,IAAI;QACb,KAAK,EAAE,EAAE;QACT,OAAO,EAAE,EAAE;KACZ;IAED,kEAAkE;IAClE,MAAM,EAAE;QACN,YAAY,EAAE,EAAE;KACjB;IAED,kEAAkE;IAClE,OAAO,EAAE;QACP,KAAK,EAAE,MAAM;QACb,eAAe,EAAE,OAAO;KACzB;CACF,CAAC;AAOF,qDAAqD;AACrD,MAAM,gBAAgB,GAAG;IACvB,cAAc,EAAE,YAAY,EAAE,cAAc;IAC5C,YAAY,EAAE,aAAa,EAAE,eAAe;IAC5C,eAAe,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB;IACxE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB;IACvD,cAAc,EAAE,YAAY;CACpB,CAAC;AAEX,MAAM,eAAe,GAAa;IAChC,cAAc,EAAE,YAAY,EAAE,cAAc;IAC5C,eAAe;IACf,iBAAiB;CAClB,CAAC;AAEF,MAAM,cAAc,GAAa;IAC/B,GAAG,eAAe;IAClB,YAAY,EAAE,aAAa,EAAE,eAAe;IAC5C,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB;CACxD,CAAC;AAEF,MAAM,UAAU,GAAa;IAC3B,GAAG,cAAc;IACjB,iBAAiB,EAAE,iBAAiB;IACpC,cAAc,EAAE,YAAY;CAC7B,CAAC;AAEF,MAAM,mBAAmB,GAAmC;IAC1D,SAAS,EAAE,eAAe;IAC1B,QAAQ,EAAE,cAAc;IACxB,IAAI,EAAE,UAAU;CACjB,CAAC;AAEF,2EAA2E;AAC3E,SAAgB,cAAc,CAAC,OAAqB;IAClD,OAAO,mBAAmB,CAAC,OAAO,CAAC,CAAC;AACtC,CAAC;AAED,2EAA2E;AAC3E,SAAgB,qBAAqB,CAAC,OAAqB;IACzD,MAAM,OAAO,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;IACxC,OAAO,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5D,CAAC;AAED,8CAA8C;AACjC,QAAA,qBAAqB,GAAiB,UAAU,CAAC;AAE9D,wEAAwE;AAExE,qDAAqD;AACrD,SAAS,2BAA2B,CAAC,QAAgB;IACnD,OAAO;QACL,IAAI,EAAE,sBAAsB;QAC5B,QAAQ,EAAE;YACR,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,WAAW,EAAE,sBAAsB;YACzC,EAAE,EAAE,QAAQ;SACb;QACD,OAAO,EAAE;YACP,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE;gBACP,iEAAiE;gBACjE,iEAAiE;gBACjE,+DAA+D;gBAC/D,kEAAkE;gBAClE,4DAA4D;aAC7D,CAAC,IAAI,CAAC,GAAG,CAAC;SACZ;QACD,aAAa,EAAE,UAAU;QACzB,QAAQ,EAAE;YACR,IAAI,EAAE,UAAU;SACjB;KACF,CAAC;AACJ,CAAC;AAKY,QAAA,iBAAiB,GAU1B;IACF,KAAK,EAAE;QACL,UAAU,EAAE,OAAO,EAAE,mCAAmC;QACxD,SAAS,EAAE,IAAI;QACf,QAAQ,EAAE,MAAM;QAChB,QAAQ,EAAE,GAAG;QACb,eAAe,EAAE,EAAE;QACnB,eAAe,EAAE,EAAE;KACpB;IACD,MAAM,EAAE;QACN,UAAU,EAAE,OAAO,EAAE,qCAAqC;QAC1D,SAAS,EAAE,IAAI;QACf,QAAQ,EAAE,MAAM;QAChB,QAAQ,EAAE,IAAI;QACd,eAAe,EAAE,GAAG;QACpB,eAAe,EAAE,GAAG;KACrB;IACD,KAAK,EAAE;QACL,UAAU,EAAE,OAAO,EAAE,sCAAsC;QAC3D,SAAS,EAAE,KAAK;QAChB,QAAQ,EAAE,MAAM;QAChB,QAAQ,EAAE,IAAI;QACd,eAAe,EAAE,GAAG;QACpB,eAAe,EAAE,GAAG;KACrB;CACF,CAAC;AAEF,4CAA4C;AAC/B,QAAA,eAAe,GAAoC;IAC9D,QAAQ,EAAE,OAAO;IACjB,IAAI,EAAE,QAAQ;IACd,GAAG,EAAE,OAAO;CACb,CAAC;AAeF;;;GAGG;AACH,SAAgB,iBAAiB,CAC/B,YAAiC,EACjC,YAAoB;IAEpB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,+BAAuB,CAAC,CAAC,CAAC;IAEnE,WAAW;IACX,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,YAAY,CAAC,OAAO,CAAC;IAC5C,IAAI,YAAY,CAAC,QAAQ;QAAE,MAAM,CAAC,QAAQ,CAAC,KAAK,GAAG,YAAY,CAAC,QAAQ,CAAC;IACzE,IAAI,YAAY,CAAC,QAAQ;QAAE,MAAM,CAAC,QAAQ,CAAC,KAAK,GAAG,YAAY,CAAC,QAAQ,CAAC;IAEzE,WAAW;IACX,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,GAAG,YAAY,CAAC,QAAQ,CAAC;IAE5D,gBAAgB;IAChB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,GAAG,YAAY,CAAC;IAEzC,UAAU;IACV,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC;IAErD,qCAAqC;IACrC,MAAM,CAAC,OAAO,GAAG;QACf,OAAO,EAAE,IAAI;QACb,cAAc,EAAE,yBAAyB;QACzC,QAAQ,EAAE,IAAI;QACd,SAAS,EAAE,IAAI;KAChB,CAAC;IAEF,UAAU;IACV,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,IAAI,EAAE,CAAC;IAC3C,IAAI,YAAY,CAAC,WAAW,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC;QACtE,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IACnC,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,CAAC,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC;QAE/B,oDAAoD;QACpD,IAAI,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC;YACzC,MAAM,OAAO,GAAG,YAAY,CAAC,YAAY,IAAI,6BAAqB,CAAC;YACnE,MAAM,YAAY,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;YAC7C,MAAM,WAAW,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;YAEnD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,CAAC;YAExD,uDAAuD;YACvD,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,CAAC;YACvC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,CAAC;QACxD,CAAC;IACH,CAAC;IAED,wCAAwC;IACxC,IAAI,YAAY,CAAC,WAAW,EAAE,CAAC;QAC7B,MAAM,CAAC,IAAI,GAAG;YACZ,IAAI,EAAE;gBACJ,2BAA2B,CAAC,YAAY,CAAC,QAAQ,CAAC;aACnD;SACF,CAAC;IACJ,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
package/dist/types.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export type DeploymentType = 'ec2' | 'ecs' | 'hetzner';
1
+ export type DeploymentType = 'hetzner';
2
2
  export type InstanceStatus = 'pending' | 'provisioning' | 'awaiting_setup' | 'running' | 'stopping' | 'stopped' | 'terminating' | 'terminated' | 'failed';
3
3
  export type InstanceTier = 'standard' | 'plus' | 'pro';
4
4
  export type Region = 'us-east-1' | 'us-west-2';
@@ -16,6 +16,7 @@ export interface User {
16
16
  email: string;
17
17
  name: string | null;
18
18
  stripeCustomerId: string | null;
19
+ isAdmin: boolean;
19
20
  createdAt: Date;
20
21
  updatedAt: Date;
21
22
  }
@@ -28,19 +29,19 @@ export interface Instance {
28
29
  region: Region;
29
30
  status: InstanceStatus;
30
31
  modelId: string;
31
- awsInstanceId: string | null;
32
- awsClusterArn: string | null;
33
- awsServiceArn: string | null;
34
32
  gatewayUrl: string | null;
35
33
  gatewayToken: string;
36
- gatewayTokenSecretArn: string | null;
37
- proxyToken: string | null;
38
- proxyTokenSecretArn: string | null;
39
- telegramBotTokenArn: string | null;
40
- telegramUserId: string | null;
41
34
  hetznerServerId: string | null;
42
35
  hetznerIpAddress: string | null;
43
36
  sshPrivateKey: string | null;
37
+ sshAdminPrivateKey: string | null;
38
+ sshAdminPrivateKeyIv: string | null;
39
+ sshAdminPrivateKeyAuthTag: string | null;
40
+ sshUserPrivateKey: string | null;
41
+ sshUserPrivateKeyIv: string | null;
42
+ sshUserPrivateKeyAuthTag: string | null;
43
+ managedClientName: string | null;
44
+ managedBy: string | null;
44
45
  createdAt: Date;
45
46
  updatedAt: Date;
46
47
  startedAt: Date | null;
@@ -67,8 +68,8 @@ export interface InstanceMetrics {
67
68
  }
68
69
  export interface TierConfig {
69
70
  tier: InstanceTier;
70
- ecsCpu: number;
71
- ecsMemory: number;
71
+ vCpu: number;
72
+ memoryGb: number;
72
73
  storage: number;
73
74
  label: string;
74
75
  monthlyPrice: number;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/utils.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type { InstanceTier, TierConfig, Region } from './types.js';
1
+ import type { InstanceTier, TierConfig } from './types.js';
2
2
  /**
3
3
  * Get tier configuration by tier name
4
4
  */
@@ -12,6 +12,13 @@ export declare function isValidInstanceName(name: string): boolean;
12
12
  * SECURITY: Uses rejection sampling to ensure uniform distribution
13
13
  */
14
14
  export declare function generateToken(length?: number): string;
15
+ /**
16
+ * Generate an instance name from a full name.
17
+ * "Jane Smith" → "jane-s"
18
+ * "Jane" → "jane"
19
+ * "María José García" → "maria-jose-g"
20
+ */
21
+ export declare function generateInstanceName(fullName: string): string;
15
22
  /**
16
23
  * Generate a unique instance ID
17
24
  */
@@ -24,10 +31,6 @@ export declare function formatBytes(bytes: number): string;
24
31
  * Format cost in USD
25
32
  */
26
33
  export declare function formatCost(cost: number): string;
27
- /**
28
- * Get AWS region endpoint
29
- */
30
- export declare function getAwsEndpoint(region: Region): string;
31
34
  /**
32
35
  * Sleep utility for async operations
33
36
  */
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEnE;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,YAAY,GAAG,UAAU,GAAG,SAAS,CAExE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEzD;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,MAAM,GAAE,MAAW,GAAG,MAAM,CAqBzD;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,CAI3C;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAMjD;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAO/C;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAErD;AAED;;GAEG;AACH,wBAAgB,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE/C;AAED;;GAEG;AACH,wBAAsB,KAAK,CAAC,CAAC,EAC3B,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,UAAU,GAAE,MAAU,EACtB,SAAS,GAAE,MAAa,GACvB,OAAO,CAAC,CAAC,CAAC,CAgBZ;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,GAAE,MAAU,GAAG,MAAM,CAO1E"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE3D;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,YAAY,GAAG,UAAU,GAAG,SAAS,CAExE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEzD;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,MAAM,GAAE,MAAW,GAAG,MAAM,CAqBzD;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAkB7D;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,CAI3C;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAMjD;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAO/C;AAED;;GAEG;AACH,wBAAgB,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE/C;AAED;;GAEG;AACH,wBAAsB,KAAK,CAAC,CAAC,EAC3B,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,UAAU,GAAE,MAAU,EACtB,SAAS,GAAE,MAAa,GACvB,OAAO,CAAC,CAAC,CAAC,CAgBZ;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,GAAE,MAAU,GAAG,MAAM,CAO1E"}
package/dist/utils.js CHANGED
@@ -4,10 +4,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
4
4
  exports.getTierConfig = getTierConfig;
5
5
  exports.isValidInstanceName = isValidInstanceName;
6
6
  exports.generateToken = generateToken;
7
+ exports.generateInstanceName = generateInstanceName;
7
8
  exports.generateInstanceId = generateInstanceId;
8
9
  exports.formatBytes = formatBytes;
9
10
  exports.formatCost = formatCost;
10
- exports.getAwsEndpoint = getAwsEndpoint;
11
11
  exports.sleep = sleep;
12
12
  exports.retry = retry;
13
13
  exports.maskSecret = maskSecret;
@@ -48,6 +48,34 @@ function generateToken(length = 32) {
48
48
  }
49
49
  return token;
50
50
  }
51
+ /**
52
+ * Generate an instance name from a full name.
53
+ * "Jane Smith" → "jane-s"
54
+ * "Jane" → "jane"
55
+ * "María José García" → "maria-jose-g"
56
+ */
57
+ function generateInstanceName(fullName) {
58
+ // Normalize unicode (e.g., accented chars → base letters)
59
+ const normalized = fullName.normalize('NFD').replace(/[\u0300-\u036f]/g, '');
60
+ // Lowercase and split into parts
61
+ const parts = normalized.toLowerCase().trim().split(/\s+/).filter(Boolean);
62
+ if (parts.length === 0)
63
+ return '';
64
+ if (parts.length === 1) {
65
+ const single = parts[0].replace(/[^a-z0-9-]/g, '');
66
+ if (!single || !/^[a-z]/.test(single))
67
+ return '';
68
+ return single.slice(0, 63);
69
+ }
70
+ // firstname-lastinitial format
71
+ const firstName = parts.slice(0, -1).join('-').replace(/[^a-z0-9-]/g, '');
72
+ const lastInitial = parts[parts.length - 1][0]?.replace(/[^a-z0-9]/g, '') || '';
73
+ const name = lastInitial ? `${firstName}-${lastInitial}` : firstName;
74
+ // Ensure starts with a letter and is valid
75
+ if (!name || !/^[a-z]/.test(name))
76
+ return '';
77
+ return name.slice(0, 63);
78
+ }
51
79
  /**
52
80
  * Generate a unique instance ID
53
81
  */
@@ -78,12 +106,6 @@ function formatCost(cost) {
78
106
  maximumFractionDigits: 4,
79
107
  }).format(cost);
80
108
  }
81
- /**
82
- * Get AWS region endpoint
83
- */
84
- function getAwsEndpoint(region) {
85
- return `https://ec2.${region}.amazonaws.com`;
86
- }
87
109
  /**
88
110
  * Sleep utility for async operations
89
111
  */
package/dist/utils.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@launchpod/shared",
3
- "version": "1.1.1",
3
+ "version": "1.1.3",
4
4
  "main": "./dist/index.js",
5
5
  "files": [
6
6
  "dist/"
@@ -15,14 +15,16 @@
15
15
  "default": "./dist/index.js"
16
16
  }
17
17
  },
18
- "devDependencies": {
19
- "@types/node": "^20.11.0",
20
- "typescript": "^5.3.0"
21
- },
22
18
  "scripts": {
23
19
  "build": "tsc",
24
20
  "dev": "tsc --watch",
25
21
  "clean": "rm -rf dist",
26
- "type-check": "tsc --noEmit"
22
+ "type-check": "tsc --noEmit",
23
+ "test": "vitest --passWithNoTests"
24
+ },
25
+ "devDependencies": {
26
+ "@types/node": "^20.11.0",
27
+ "typescript": "^5.3.0",
28
+ "vitest": "^1.2.0"
27
29
  }
28
- }
30
+ }