@ankhorage/studio 0.0.20 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (211) hide show
  1. package/README.md +1 -2
  2. package/dist/cli/index.d.ts +4 -4
  3. package/dist/cli/index.d.ts.map +1 -1
  4. package/dist/cli/index.js +81 -56
  5. package/dist/cli/index.js.map +1 -1
  6. package/dist/core/constants.d.ts.map +1 -1
  7. package/dist/core/constants.js +17 -6
  8. package/dist/core/constants.js.map +1 -1
  9. package/dist/hooks/useProjects.js +1 -1
  10. package/dist/hooks/useProjects.js.map +1 -1
  11. package/dist/host/createStudioHost.d.ts +13 -0
  12. package/dist/host/createStudioHost.d.ts.map +1 -0
  13. package/dist/host/createStudioHost.js +16 -0
  14. package/dist/host/createStudioHost.js.map +1 -0
  15. package/dist/host/http/security.d.ts +2 -0
  16. package/dist/host/http/security.d.ts.map +1 -0
  17. package/dist/host/http/security.js +55 -0
  18. package/dist/host/http/security.js.map +1 -0
  19. package/dist/host/http/server.d.ts +16 -0
  20. package/dist/host/http/server.d.ts.map +1 -0
  21. package/dist/host/http/server.js +549 -0
  22. package/dist/host/http/server.js.map +1 -0
  23. package/dist/host/layout/auth/resolveAuthLayoutPlan.d.ts +38 -0
  24. package/dist/host/layout/auth/resolveAuthLayoutPlan.d.ts.map +1 -0
  25. package/dist/host/layout/auth/resolveAuthLayoutPlan.js +262 -0
  26. package/dist/host/layout/auth/resolveAuthLayoutPlan.js.map +1 -0
  27. package/dist/host/layout/layoutGenerator.d.ts +19 -0
  28. package/dist/host/layout/layoutGenerator.d.ts.map +1 -0
  29. package/dist/host/layout/layoutGenerator.js +418 -0
  30. package/dist/host/layout/layoutGenerator.js.map +1 -0
  31. package/dist/host/layout/templates/auth/adapter.d.ts +6 -0
  32. package/dist/host/layout/templates/auth/adapter.d.ts.map +1 -0
  33. package/dist/host/layout/templates/auth/adapter.js +94 -0
  34. package/dist/host/layout/templates/auth/adapter.js.map +1 -0
  35. package/dist/host/layout/templates/auth/screen.d.ts +12 -0
  36. package/dist/host/layout/templates/auth/screen.d.ts.map +1 -0
  37. package/dist/host/layout/templates/auth/screen.js +648 -0
  38. package/dist/host/layout/templates/auth/screen.js.map +1 -0
  39. package/dist/host/layout/templates/auth/session.d.ts +2 -0
  40. package/dist/host/layout/templates/auth/session.d.ts.map +1 -0
  41. package/dist/host/layout/templates/auth/session.js +326 -0
  42. package/dist/host/layout/templates/auth/session.js.map +1 -0
  43. package/dist/host/layout/templates/auth/signOut.d.ts +2 -0
  44. package/dist/host/layout/templates/auth/signOut.d.ts.map +1 -0
  45. package/dist/host/layout/templates/auth/signOut.js +43 -0
  46. package/dist/host/layout/templates/auth/signOut.js.map +1 -0
  47. package/dist/host/layout/templates/index.d.ts +11 -0
  48. package/dist/host/layout/templates/index.d.ts.map +1 -0
  49. package/dist/host/layout/templates/index.js +10 -0
  50. package/dist/host/layout/templates/index.js.map +1 -0
  51. package/dist/host/layout/templates/navigation.d.ts +16 -0
  52. package/dist/host/layout/templates/navigation.d.ts.map +1 -0
  53. package/dist/host/layout/templates/navigation.js +332 -0
  54. package/dist/host/layout/templates/navigation.js.map +1 -0
  55. package/dist/host/layout/templates/nestedLayout.d.ts +7 -0
  56. package/dist/host/layout/templates/nestedLayout.d.ts.map +1 -0
  57. package/dist/host/layout/templates/nestedLayout.js +56 -0
  58. package/dist/host/layout/templates/nestedLayout.js.map +1 -0
  59. package/dist/host/layout/templates/redirect.d.ts +2 -0
  60. package/dist/host/layout/templates/redirect.d.ts.map +1 -0
  61. package/dist/host/layout/templates/redirect.js +10 -0
  62. package/dist/host/layout/templates/redirect.js.map +1 -0
  63. package/dist/host/layout/templates/rootLayout.d.ts +28 -0
  64. package/dist/host/layout/templates/rootLayout.d.ts.map +1 -0
  65. package/dist/host/layout/templates/rootLayout.js +507 -0
  66. package/dist/host/layout/templates/rootLayout.js.map +1 -0
  67. package/dist/host/layout/templates/screen.d.ts +6 -0
  68. package/dist/host/layout/templates/screen.d.ts.map +1 -0
  69. package/dist/host/layout/templates/screen.js +94 -0
  70. package/dist/host/layout/templates/screen.js.map +1 -0
  71. package/dist/host/layout/templates/utils/routes.d.ts +3 -0
  72. package/dist/host/layout/templates/utils/routes.d.ts.map +1 -0
  73. package/dist/host/layout/templates/utils/routes.js +15 -0
  74. package/dist/host/layout/templates/utils/routes.js.map +1 -0
  75. package/dist/host/layout/templates/utils/strings.d.ts +3 -0
  76. package/dist/host/layout/templates/utils/strings.d.ts.map +1 -0
  77. package/dist/host/layout/templates/utils/strings.js +7 -0
  78. package/dist/host/layout/templates/utils/strings.js.map +1 -0
  79. package/dist/host/layout/utils/escapeStringLiteral.d.ts +2 -0
  80. package/dist/host/layout/utils/escapeStringLiteral.d.ts.map +1 -0
  81. package/dist/host/layout/utils/escapeStringLiteral.js +8 -0
  82. package/dist/host/layout/utils/escapeStringLiteral.js.map +1 -0
  83. package/dist/host/manifestSystem/auth/index.d.ts +2 -0
  84. package/dist/host/manifestSystem/auth/index.d.ts.map +1 -0
  85. package/dist/host/manifestSystem/auth/index.js +2 -0
  86. package/dist/host/manifestSystem/auth/index.js.map +1 -0
  87. package/dist/host/manifestSystem/auth/shared/global.auth.system.tpl.d.ts +4 -0
  88. package/dist/host/manifestSystem/auth/shared/global.auth.system.tpl.d.ts.map +1 -0
  89. package/dist/host/manifestSystem/auth/shared/global.auth.system.tpl.js +7 -0
  90. package/dist/host/manifestSystem/auth/shared/global.auth.system.tpl.js.map +1 -0
  91. package/dist/host/manifestSystem/auth/shared/index.d.ts +3 -0
  92. package/dist/host/manifestSystem/auth/shared/index.d.ts.map +1 -0
  93. package/dist/host/manifestSystem/auth/shared/index.js +8 -0
  94. package/dist/host/manifestSystem/auth/shared/index.js.map +1 -0
  95. package/dist/host/manifestSystem/index.d.ts +5 -0
  96. package/dist/host/manifestSystem/index.d.ts.map +1 -0
  97. package/dist/host/manifestSystem/index.js +23 -0
  98. package/dist/host/manifestSystem/index.js.map +1 -0
  99. package/dist/host/manifestSystem/types.d.ts +8 -0
  100. package/dist/host/manifestSystem/types.d.ts.map +1 -0
  101. package/dist/host/manifestSystem/types.js +2 -0
  102. package/dist/host/manifestSystem/types.js.map +1 -0
  103. package/dist/host/modules/catalog.d.ts +40 -0
  104. package/dist/host/modules/catalog.d.ts.map +1 -0
  105. package/dist/host/modules/catalog.js +112 -0
  106. package/dist/host/modules/catalog.js.map +1 -0
  107. package/dist/host/modules/layout.d.ts +7 -0
  108. package/dist/host/modules/layout.d.ts.map +1 -0
  109. package/dist/host/modules/layout.js +2 -0
  110. package/dist/host/modules/layout.js.map +1 -0
  111. package/dist/host/modules/runtime/LocalFsTargetAdapter.d.ts +34 -0
  112. package/dist/host/modules/runtime/LocalFsTargetAdapter.d.ts.map +1 -0
  113. package/dist/host/modules/runtime/LocalFsTargetAdapter.js +85 -0
  114. package/dist/host/modules/runtime/LocalFsTargetAdapter.js.map +1 -0
  115. package/dist/host/orchestrator/generatedAppFiles.d.ts +8 -0
  116. package/dist/host/orchestrator/generatedAppFiles.d.ts.map +1 -0
  117. package/dist/host/orchestrator/generatedAppFiles.js +125 -0
  118. package/dist/host/orchestrator/generatedAppFiles.js.map +1 -0
  119. package/dist/host/orchestrator/generatedRouteCleanup.d.ts +5 -0
  120. package/dist/host/orchestrator/generatedRouteCleanup.d.ts.map +1 -0
  121. package/dist/host/orchestrator/generatedRouteCleanup.js +117 -0
  122. package/dist/host/orchestrator/generatedRouteCleanup.js.map +1 -0
  123. package/dist/host/orchestrator/infraGenerator.d.ts +35 -0
  124. package/dist/host/orchestrator/infraGenerator.d.ts.map +1 -0
  125. package/dist/host/orchestrator/infraGenerator.js +135 -0
  126. package/dist/host/orchestrator/infraGenerator.js.map +1 -0
  127. package/dist/host/orchestrator/infraRuntime.d.ts +38 -0
  128. package/dist/host/orchestrator/infraRuntime.d.ts.map +1 -0
  129. package/dist/host/orchestrator/infraRuntime.js +227 -0
  130. package/dist/host/orchestrator/infraRuntime.js.map +1 -0
  131. package/dist/host/orchestrator/infraValidation.d.ts +3 -0
  132. package/dist/host/orchestrator/infraValidation.d.ts.map +1 -0
  133. package/dist/host/orchestrator/infraValidation.js +59 -0
  134. package/dist/host/orchestrator/infraValidation.js.map +1 -0
  135. package/dist/host/orchestrator/moduleManager.d.ts +86 -0
  136. package/dist/host/orchestrator/moduleManager.d.ts.map +1 -0
  137. package/dist/host/orchestrator/moduleManager.js +312 -0
  138. package/dist/host/orchestrator/moduleManager.js.map +1 -0
  139. package/dist/host/orchestrator/projectDeletion.d.ts +27 -0
  140. package/dist/host/orchestrator/projectDeletion.d.ts.map +1 -0
  141. package/dist/host/orchestrator/projectDeletion.js +242 -0
  142. package/dist/host/orchestrator/projectDeletion.js.map +1 -0
  143. package/dist/host/orchestrator/projectManager.d.ts +87 -0
  144. package/dist/host/orchestrator/projectManager.d.ts.map +1 -0
  145. package/dist/host/orchestrator/projectManager.js +371 -0
  146. package/dist/host/orchestrator/projectManager.js.map +1 -0
  147. package/dist/host/orchestrator/projectPaths.d.ts +4 -0
  148. package/dist/host/orchestrator/projectPaths.d.ts.map +1 -0
  149. package/dist/host/orchestrator/projectPaths.js +25 -0
  150. package/dist/host/orchestrator/projectPaths.js.map +1 -0
  151. package/dist/host/orchestrator/projectStore.d.ts +24 -0
  152. package/dist/host/orchestrator/projectStore.d.ts.map +1 -0
  153. package/dist/host/orchestrator/projectStore.js +155 -0
  154. package/dist/host/orchestrator/projectStore.js.map +1 -0
  155. package/dist/host/orchestrator/resolveMutations.d.ts +3 -0
  156. package/dist/host/orchestrator/resolveMutations.d.ts.map +1 -0
  157. package/dist/host/orchestrator/resolveMutations.js +12 -0
  158. package/dist/host/orchestrator/resolveMutations.js.map +1 -0
  159. package/dist/host/orchestrator/scaffolder.d.ts +33 -0
  160. package/dist/host/orchestrator/scaffolder.d.ts.map +1 -0
  161. package/dist/host/orchestrator/scaffolder.js +246 -0
  162. package/dist/host/orchestrator/scaffolder.js.map +1 -0
  163. package/dist/host/orchestrator/templates.d.ts +83 -0
  164. package/dist/host/orchestrator/templates.d.ts.map +1 -0
  165. package/dist/host/orchestrator/templates.js +355 -0
  166. package/dist/host/orchestrator/templates.js.map +1 -0
  167. package/dist/host/orchestrator/workspaceRuntime.d.ts +2 -0
  168. package/dist/host/orchestrator/workspaceRuntime.d.ts.map +1 -0
  169. package/dist/host/orchestrator/workspaceRuntime.js +82 -0
  170. package/dist/host/orchestrator/workspaceRuntime.js.map +1 -0
  171. package/dist/host/templateRegistry/index.d.ts +16 -0
  172. package/dist/host/templateRegistry/index.d.ts.map +1 -0
  173. package/dist/host/templateRegistry/index.js +74 -0
  174. package/dist/host/templateRegistry/index.js.map +1 -0
  175. package/dist/host/utils/requirementsInference.d.ts +4 -0
  176. package/dist/host/utils/requirementsInference.d.ts.map +1 -0
  177. package/dist/host/utils/requirementsInference.js +49 -0
  178. package/dist/host/utils/requirementsInference.js.map +1 -0
  179. package/dist/host/utils/trimOutput.d.ts +7 -0
  180. package/dist/host/utils/trimOutput.d.ts.map +1 -0
  181. package/dist/host/utils/trimOutput.js +32 -0
  182. package/dist/host/utils/trimOutput.js.map +1 -0
  183. package/dist/host/utils/workspaceRoot.d.ts +2 -0
  184. package/dist/host/utils/workspaceRoot.d.ts.map +1 -0
  185. package/dist/host/utils/workspaceRoot.js +33 -0
  186. package/dist/host/utils/workspaceRoot.js.map +1 -0
  187. package/dist/host/zoraExtensions/index.d.ts +11 -0
  188. package/dist/host/zoraExtensions/index.d.ts.map +1 -0
  189. package/dist/host/zoraExtensions/index.js +54 -0
  190. package/dist/host/zoraExtensions/index.js.map +1 -0
  191. package/dist/runtime/appExtensionRegistry.d.ts +3 -0
  192. package/dist/runtime/appExtensionRegistry.d.ts.map +1 -0
  193. package/dist/runtime/appExtensionRegistry.js +8 -0
  194. package/dist/runtime/appExtensionRegistry.js.map +1 -0
  195. package/dist/runtime/index.d.ts +8 -4
  196. package/dist/runtime/index.d.ts.map +1 -1
  197. package/dist/runtime/index.js +8 -4
  198. package/dist/runtime/index.js.map +1 -1
  199. package/dist/runtime/registry.d.ts +7 -0
  200. package/dist/runtime/registry.d.ts.map +1 -0
  201. package/dist/runtime/registry.js +7 -0
  202. package/dist/runtime/registry.js.map +1 -0
  203. package/dist/runtime/runtimeActions.d.ts +19 -0
  204. package/dist/runtime/runtimeActions.d.ts.map +1 -0
  205. package/dist/runtime/runtimeActions.js +5 -0
  206. package/dist/runtime/runtimeActions.js.map +1 -0
  207. package/dist/runtime/useRuntimeAction.d.ts +10 -0
  208. package/dist/runtime/useRuntimeAction.d.ts.map +1 -0
  209. package/dist/runtime/useRuntimeAction.js +30 -0
  210. package/dist/runtime/useRuntimeAction.js.map +1 -0
  211. package/package.json +35 -3
@@ -0,0 +1,242 @@
1
+ import { execFile } from 'child_process';
2
+ import { promises as fs } from 'fs';
3
+ import path from 'path';
4
+ import { promisify } from 'util';
5
+ const execFileAsync = promisify(execFile);
6
+ const DOCKER_LIST_TIMEOUT_MS = 8_000;
7
+ const DOCKER_REMOVE_TIMEOUT_MS = 15_000;
8
+ const DOCKER_IMAGE_REMOVE_TIMEOUT_MS = 15_000;
9
+ const MINIKUBE_IMAGE_REMOVE_TIMEOUT_MS = 20_000;
10
+ const EXEC_MAX_BUFFER = 1024 * 1024;
11
+ const defaultCommandRunner = {
12
+ async run(command, args, timeoutMs) {
13
+ const output = await execFileAsync(command, args, {
14
+ timeout: timeoutMs,
15
+ maxBuffer: EXEC_MAX_BUFFER,
16
+ });
17
+ return {
18
+ stdout: output.stdout,
19
+ stderr: output.stderr,
20
+ };
21
+ },
22
+ };
23
+ function getSupabaseContainersForProject(args) {
24
+ const { projectId, containerNames } = args;
25
+ const suffix = `_${projectId}`;
26
+ return containerNames.filter((name) => name.startsWith('supabase_') && name.endsWith(suffix));
27
+ }
28
+ export async function cleanupProjectGeneratedAppImage(args) {
29
+ const { projectPath, target, runner = defaultCommandRunner } = args;
30
+ if (target !== 'minikube') {
31
+ return {
32
+ removedImages: 0,
33
+ warnings: [],
34
+ skipped: {
35
+ reason: `Generated app image cleanup is not implemented for deployment target: ${target}.`,
36
+ },
37
+ };
38
+ }
39
+ const env = await readMinikubeEnv(projectPath);
40
+ const cleanupEnabled = readBooleanEnv(env, 'APP_IMAGE_CLEANUP_ON_DOWN', true);
41
+ if (!cleanupEnabled) {
42
+ return {
43
+ removedImages: 0,
44
+ warnings: [],
45
+ skipped: {
46
+ reason: 'Generated app image cleanup disabled by APP_IMAGE_CLEANUP_ON_DOWN=false.',
47
+ },
48
+ };
49
+ }
50
+ const appImage = env.get('APP_IMAGE')?.trim();
51
+ if (!appImage) {
52
+ return {
53
+ removedImages: 0,
54
+ warnings: ['Skipping generated app image cleanup because APP_IMAGE could not be resolved.'],
55
+ };
56
+ }
57
+ const profile = env.get('MINIKUBE_PROFILE')?.trim() ?? 'minikube';
58
+ const warnings = [];
59
+ let removedImages = 0;
60
+ if (readBooleanEnv(env, 'APP_IMAGE_CLEANUP_MINIKUBE', true)) {
61
+ const result = await removeMinikubeImage({ appImage, profile, runner });
62
+ removedImages += result.removedImages;
63
+ warnings.push(...result.warnings);
64
+ }
65
+ if (readBooleanEnv(env, 'APP_IMAGE_CLEANUP_DOCKER', true)) {
66
+ const result = await removeDockerImage({ appImage, runner });
67
+ removedImages += result.removedImages;
68
+ warnings.push(...result.warnings);
69
+ }
70
+ return {
71
+ removedImages,
72
+ warnings,
73
+ };
74
+ }
75
+ export async function stopProjectSupabaseContainers(args) {
76
+ const { projectId, runner = defaultCommandRunner } = args;
77
+ if (!projectId) {
78
+ return {
79
+ removedContainers: 0,
80
+ warnings: [],
81
+ };
82
+ }
83
+ try {
84
+ const listResult = await runner.run('docker', ['ps', '-a', '--format', '{{.Names}}'], DOCKER_LIST_TIMEOUT_MS);
85
+ const allContainerNames = listResult.stdout
86
+ .split(/\r?\n/u)
87
+ .map((value) => value.trim())
88
+ .filter((value) => value.length > 0);
89
+ const supabaseContainers = getSupabaseContainersForProject({
90
+ projectId,
91
+ containerNames: allContainerNames,
92
+ });
93
+ if (supabaseContainers.length === 0) {
94
+ return {
95
+ removedContainers: 0,
96
+ warnings: [],
97
+ };
98
+ }
99
+ try {
100
+ await runner.run('docker', ['rm', '-f', ...supabaseContainers], DOCKER_REMOVE_TIMEOUT_MS);
101
+ }
102
+ catch (err) {
103
+ throw new Error(`Failed to remove Supabase containers: ${formatError(err)}`, { cause: err });
104
+ }
105
+ return {
106
+ removedContainers: supabaseContainers.length,
107
+ warnings: [],
108
+ };
109
+ }
110
+ catch (err) {
111
+ if (isMissingCommandError(err)) {
112
+ return {
113
+ removedContainers: 0,
114
+ warnings: ['Skipping Supabase container cleanup because docker is not available in PATH.'],
115
+ };
116
+ }
117
+ throw new Error(`Failed to list Docker containers: ${formatError(err)}`, { cause: err });
118
+ }
119
+ }
120
+ async function removeMinikubeImage(args) {
121
+ const { appImage, profile, runner } = args;
122
+ try {
123
+ await runner.run('minikube', ['-p', profile, 'image', 'rm', appImage], MINIKUBE_IMAGE_REMOVE_TIMEOUT_MS);
124
+ return {
125
+ removedImages: 1,
126
+ warnings: [],
127
+ };
128
+ }
129
+ catch (err) {
130
+ if (isMissingCommandError(err)) {
131
+ return {
132
+ removedImages: 0,
133
+ warnings: ['Skipping Minikube image cleanup because minikube is not available in PATH.'],
134
+ };
135
+ }
136
+ if (isImageNotFoundError(err)) {
137
+ return {
138
+ removedImages: 0,
139
+ warnings: [],
140
+ };
141
+ }
142
+ return {
143
+ removedImages: 0,
144
+ warnings: [`Skipping Minikube image cleanup for ${appImage}: ${formatError(err)}`],
145
+ };
146
+ }
147
+ }
148
+ async function removeDockerImage(args) {
149
+ const { appImage, runner } = args;
150
+ try {
151
+ await runner.run('docker', ['image', 'rm', appImage], DOCKER_IMAGE_REMOVE_TIMEOUT_MS);
152
+ return {
153
+ removedImages: 1,
154
+ warnings: [],
155
+ };
156
+ }
157
+ catch (err) {
158
+ if (isMissingCommandError(err)) {
159
+ return {
160
+ removedImages: 0,
161
+ warnings: ['Skipping Docker image cleanup because docker is not available in PATH.'],
162
+ };
163
+ }
164
+ if (isImageNotFoundError(err)) {
165
+ return {
166
+ removedImages: 0,
167
+ warnings: [],
168
+ };
169
+ }
170
+ return {
171
+ removedImages: 0,
172
+ warnings: [`Skipping Docker image cleanup for ${appImage}: ${formatError(err)}`],
173
+ };
174
+ }
175
+ }
176
+ async function readMinikubeEnv(projectPath) {
177
+ const infraRoot = path.join(projectPath, 'infra', 'minikube');
178
+ const env = new Map();
179
+ await mergeEnvFile(env, path.join(infraRoot, '.env.example'));
180
+ await mergeEnvFile(env, path.join(infraRoot, '.env'));
181
+ return env;
182
+ }
183
+ async function mergeEnvFile(env, filePath) {
184
+ try {
185
+ const content = await fs.readFile(filePath, 'utf8');
186
+ for (const line of content.split(/\r?\n/u)) {
187
+ const parsed = parseEnvLine(line);
188
+ if (!parsed)
189
+ continue;
190
+ env.set(parsed.key, parsed.value);
191
+ }
192
+ }
193
+ catch (err) {
194
+ if (isMissingFileError(err))
195
+ return;
196
+ throw err;
197
+ }
198
+ }
199
+ function parseEnvLine(line) {
200
+ const trimmed = line.trim();
201
+ if (!trimmed || trimmed.startsWith('#'))
202
+ return null;
203
+ const assignmentIndex = trimmed.indexOf('=');
204
+ if (assignmentIndex <= 0)
205
+ return null;
206
+ const key = trimmed.slice(0, assignmentIndex).trim();
207
+ const rawValue = trimmed.slice(assignmentIndex + 1).trim();
208
+ const value = rawValue.replace(/^['"]|['"]$/g, '');
209
+ return { key, value };
210
+ }
211
+ function readBooleanEnv(env, key, fallback) {
212
+ const value = env.get(key)?.trim().toLowerCase();
213
+ if (!value)
214
+ return fallback;
215
+ if (['1', 'true', 'yes', 'on'].includes(value))
216
+ return true;
217
+ if (['0', 'false', 'no', 'off'].includes(value))
218
+ return false;
219
+ return fallback;
220
+ }
221
+ function isMissingCommandError(err) {
222
+ if (!err || typeof err !== 'object')
223
+ return false;
224
+ const maybeNodeErr = err;
225
+ return maybeNodeErr.code === 'ENOENT';
226
+ }
227
+ function isMissingFileError(err) {
228
+ if (!err || typeof err !== 'object')
229
+ return false;
230
+ const maybeNodeErr = err;
231
+ return maybeNodeErr.code === 'ENOENT';
232
+ }
233
+ function isImageNotFoundError(err) {
234
+ const message = formatError(err);
235
+ return /no such image|image .* not found|not found/i.test(message);
236
+ }
237
+ function formatError(err) {
238
+ if (err instanceof Error && err.message)
239
+ return err.message;
240
+ return String(err);
241
+ }
242
+ //# sourceMappingURL=projectDeletion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projectDeletion.js","sourceRoot":"","sources":["../../../src/host/orchestrator/projectDeletion.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,87 @@
1
+ import type { AppManifest } from '@ankhorage/contracts';
2
+ import type { LayoutMutation } from '../modules/layout';
3
+ import type { ProjectTemplateSelection } from '../templateRegistry';
4
+ import { type ProjectSummary } from './projectStore';
5
+ export declare class ProjectManager {
6
+ private readonly rootPath;
7
+ private readonly store;
8
+ private readonly scaffolder;
9
+ private readonly layout;
10
+ private readonly appsRoot;
11
+ constructor(rootPath: string);
12
+ listProjects(): Promise<ProjectSummary[]>;
13
+ deleteProject(projectId: string): Promise<{
14
+ success: boolean;
15
+ infraDown: boolean;
16
+ warnings: string[];
17
+ }>;
18
+ createProject(name: string, templateSelection: ProjectTemplateSelection, onProjectCreated?: (projectId: string) => Promise<void>, options?: {
19
+ includeStudio?: boolean;
20
+ }): Promise<{
21
+ success: boolean;
22
+ id: string;
23
+ path: string;
24
+ }>;
25
+ installWorkspacePackages(): Promise<{
26
+ success: boolean;
27
+ }>;
28
+ getProjectManifest(projectId: string): Promise<AppManifest>;
29
+ getStudioManifest(projectId: string): Promise<AppManifest>;
30
+ updateStudioManifestIfExists(projectId: string, updater: (manifest: AppManifest) => AppManifest): Promise<{
31
+ updated: boolean;
32
+ }>;
33
+ /**
34
+ * Save manifest and (optionally) regenerate router files immediately.
35
+ *
36
+ * We take `mutations` as input to keep module boundaries clean.
37
+ */
38
+ saveProjectManifest(args: {
39
+ projectId: string;
40
+ manifest: AppManifest;
41
+ mutations: LayoutMutation[];
42
+ regenerateRouterFiles?: boolean;
43
+ }): Promise<{
44
+ success: boolean;
45
+ }>;
46
+ saveStudioManifest(args: {
47
+ projectId: string;
48
+ manifest: AppManifest;
49
+ }): Promise<{
50
+ success: boolean;
51
+ }>;
52
+ syncStudioRuntime(args: {
53
+ projectId: string;
54
+ manifest: AppManifest;
55
+ }): Promise<{
56
+ success: boolean;
57
+ }>;
58
+ /**
59
+ * Rebuild only the root layout file from manifest + mutations.
60
+ */
61
+ rebuildRootLayout(args: {
62
+ projectId: string;
63
+ mutations: LayoutMutation[];
64
+ }): Promise<{
65
+ success: boolean;
66
+ }>;
67
+ syncProject(args: {
68
+ projectId: string;
69
+ mutations: LayoutMutation[];
70
+ includeStudio?: boolean;
71
+ }): Promise<{
72
+ success: boolean;
73
+ }>;
74
+ regenerateInfrastructure(projectId: string): Promise<import("./infraGenerator").InfraSyncResult>;
75
+ getInfrastructureStatus(projectId: string): Promise<import("./infraGenerator").InfraStatusResult>;
76
+ getLocalizationLocales(projectId: string): Promise<string[]>;
77
+ getLocalizationLocale(projectId: string, locale: string): Promise<Record<string, string>>;
78
+ saveLocalizationLocale(projectId: string, locale: string, dict: Record<string, string>): Promise<{
79
+ success: boolean;
80
+ }>;
81
+ private validateLocale;
82
+ private writeGeneratedFiles;
83
+ private writeText;
84
+ private shouldIncludeStudio;
85
+ private syncProjectScaffold;
86
+ }
87
+ //# sourceMappingURL=projectManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projectManager.d.ts","sourceRoot":"","sources":["../../../src/host/orchestrator/projectManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAOxD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAOpE,OAAO,EAAgB,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAMnE,qBAAa,cAAc;IAOb,OAAO,CAAC,QAAQ,CAAC,QAAQ;IANrC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAe;IACrC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAoB;IAC/C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkB;IAEzC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;gBAEL,QAAQ,EAAE,MAAM;IAWvC,YAAY,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IAIzC,aAAa,CAAC,SAAS,EAAE,MAAM;;;;;IAsD/B,aAAa,CACjB,IAAI,EAAE,MAAM,EACZ,iBAAiB,EAAE,wBAAwB,EAC3C,gBAAgB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,EACvD,OAAO,GAAE;QAAE,aAAa,CAAC,EAAE,OAAO,CAAA;KAAO;;;;;IAkDrC,wBAAwB;;;IASxB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAI3D,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAI1D,4BAA4B,CAChC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,CAAC,QAAQ,EAAE,WAAW,KAAK,WAAW,GAC9C,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;IAYhC;;;;OAIG;IACG,mBAAmB,CAAC,IAAI,EAAE;QAC9B,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,WAAW,CAAC;QACtB,SAAS,EAAE,cAAc,EAAE,CAAC;QAC5B,qBAAqB,CAAC,EAAE,OAAO,CAAC;KACjC;;;IAiCK,kBAAkB,CAAC,IAAI,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,WAAW,CAAA;KAAE;;;IAOrE,iBAAiB,CAAC,IAAI,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,WAAW,CAAA;KAAE;;;IAiC1E;;OAEG;IACG,iBAAiB,CAAC,IAAI,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,cAAc,EAAE,CAAA;KAAE;;;IAqB1E,WAAW,CAAC,IAAI,EAAE;QACtB,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,cAAc,EAAE,CAAC;QAC5B,aAAa,CAAC,EAAE,OAAO,CAAC;KACzB;;;IAsCK,wBAAwB,CAAC,SAAS,EAAE,MAAM;IAW1C,uBAAuB,CAAC,SAAS,EAAE,MAAM;IAezC,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAe5D,qBAAqB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAmBzF,sBAAsB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;;;IAW5F,OAAO,CAAC,cAAc;YAUR,mBAAmB;YAsBnB,SAAS;YAKT,mBAAmB;YAQnB,mBAAmB;CAelC"}