@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.
- package/README.md +1 -2
- package/dist/cli/index.d.ts +4 -4
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +81 -56
- package/dist/cli/index.js.map +1 -1
- package/dist/core/constants.d.ts.map +1 -1
- package/dist/core/constants.js +17 -6
- package/dist/core/constants.js.map +1 -1
- package/dist/hooks/useProjects.js +1 -1
- package/dist/hooks/useProjects.js.map +1 -1
- package/dist/host/createStudioHost.d.ts +13 -0
- package/dist/host/createStudioHost.d.ts.map +1 -0
- package/dist/host/createStudioHost.js +16 -0
- package/dist/host/createStudioHost.js.map +1 -0
- package/dist/host/http/security.d.ts +2 -0
- package/dist/host/http/security.d.ts.map +1 -0
- package/dist/host/http/security.js +55 -0
- package/dist/host/http/security.js.map +1 -0
- package/dist/host/http/server.d.ts +16 -0
- package/dist/host/http/server.d.ts.map +1 -0
- package/dist/host/http/server.js +549 -0
- package/dist/host/http/server.js.map +1 -0
- package/dist/host/layout/auth/resolveAuthLayoutPlan.d.ts +38 -0
- package/dist/host/layout/auth/resolveAuthLayoutPlan.d.ts.map +1 -0
- package/dist/host/layout/auth/resolveAuthLayoutPlan.js +262 -0
- package/dist/host/layout/auth/resolveAuthLayoutPlan.js.map +1 -0
- package/dist/host/layout/layoutGenerator.d.ts +19 -0
- package/dist/host/layout/layoutGenerator.d.ts.map +1 -0
- package/dist/host/layout/layoutGenerator.js +418 -0
- package/dist/host/layout/layoutGenerator.js.map +1 -0
- package/dist/host/layout/templates/auth/adapter.d.ts +6 -0
- package/dist/host/layout/templates/auth/adapter.d.ts.map +1 -0
- package/dist/host/layout/templates/auth/adapter.js +94 -0
- package/dist/host/layout/templates/auth/adapter.js.map +1 -0
- package/dist/host/layout/templates/auth/screen.d.ts +12 -0
- package/dist/host/layout/templates/auth/screen.d.ts.map +1 -0
- package/dist/host/layout/templates/auth/screen.js +648 -0
- package/dist/host/layout/templates/auth/screen.js.map +1 -0
- package/dist/host/layout/templates/auth/session.d.ts +2 -0
- package/dist/host/layout/templates/auth/session.d.ts.map +1 -0
- package/dist/host/layout/templates/auth/session.js +326 -0
- package/dist/host/layout/templates/auth/session.js.map +1 -0
- package/dist/host/layout/templates/auth/signOut.d.ts +2 -0
- package/dist/host/layout/templates/auth/signOut.d.ts.map +1 -0
- package/dist/host/layout/templates/auth/signOut.js +43 -0
- package/dist/host/layout/templates/auth/signOut.js.map +1 -0
- package/dist/host/layout/templates/index.d.ts +11 -0
- package/dist/host/layout/templates/index.d.ts.map +1 -0
- package/dist/host/layout/templates/index.js +10 -0
- package/dist/host/layout/templates/index.js.map +1 -0
- package/dist/host/layout/templates/navigation.d.ts +16 -0
- package/dist/host/layout/templates/navigation.d.ts.map +1 -0
- package/dist/host/layout/templates/navigation.js +332 -0
- package/dist/host/layout/templates/navigation.js.map +1 -0
- package/dist/host/layout/templates/nestedLayout.d.ts +7 -0
- package/dist/host/layout/templates/nestedLayout.d.ts.map +1 -0
- package/dist/host/layout/templates/nestedLayout.js +56 -0
- package/dist/host/layout/templates/nestedLayout.js.map +1 -0
- package/dist/host/layout/templates/redirect.d.ts +2 -0
- package/dist/host/layout/templates/redirect.d.ts.map +1 -0
- package/dist/host/layout/templates/redirect.js +10 -0
- package/dist/host/layout/templates/redirect.js.map +1 -0
- package/dist/host/layout/templates/rootLayout.d.ts +28 -0
- package/dist/host/layout/templates/rootLayout.d.ts.map +1 -0
- package/dist/host/layout/templates/rootLayout.js +507 -0
- package/dist/host/layout/templates/rootLayout.js.map +1 -0
- package/dist/host/layout/templates/screen.d.ts +6 -0
- package/dist/host/layout/templates/screen.d.ts.map +1 -0
- package/dist/host/layout/templates/screen.js +94 -0
- package/dist/host/layout/templates/screen.js.map +1 -0
- package/dist/host/layout/templates/utils/routes.d.ts +3 -0
- package/dist/host/layout/templates/utils/routes.d.ts.map +1 -0
- package/dist/host/layout/templates/utils/routes.js +15 -0
- package/dist/host/layout/templates/utils/routes.js.map +1 -0
- package/dist/host/layout/templates/utils/strings.d.ts +3 -0
- package/dist/host/layout/templates/utils/strings.d.ts.map +1 -0
- package/dist/host/layout/templates/utils/strings.js +7 -0
- package/dist/host/layout/templates/utils/strings.js.map +1 -0
- package/dist/host/layout/utils/escapeStringLiteral.d.ts +2 -0
- package/dist/host/layout/utils/escapeStringLiteral.d.ts.map +1 -0
- package/dist/host/layout/utils/escapeStringLiteral.js +8 -0
- package/dist/host/layout/utils/escapeStringLiteral.js.map +1 -0
- package/dist/host/manifestSystem/auth/index.d.ts +2 -0
- package/dist/host/manifestSystem/auth/index.d.ts.map +1 -0
- package/dist/host/manifestSystem/auth/index.js +2 -0
- package/dist/host/manifestSystem/auth/index.js.map +1 -0
- package/dist/host/manifestSystem/auth/shared/global.auth.system.tpl.d.ts +4 -0
- package/dist/host/manifestSystem/auth/shared/global.auth.system.tpl.d.ts.map +1 -0
- package/dist/host/manifestSystem/auth/shared/global.auth.system.tpl.js +7 -0
- package/dist/host/manifestSystem/auth/shared/global.auth.system.tpl.js.map +1 -0
- package/dist/host/manifestSystem/auth/shared/index.d.ts +3 -0
- package/dist/host/manifestSystem/auth/shared/index.d.ts.map +1 -0
- package/dist/host/manifestSystem/auth/shared/index.js +8 -0
- package/dist/host/manifestSystem/auth/shared/index.js.map +1 -0
- package/dist/host/manifestSystem/index.d.ts +5 -0
- package/dist/host/manifestSystem/index.d.ts.map +1 -0
- package/dist/host/manifestSystem/index.js +23 -0
- package/dist/host/manifestSystem/index.js.map +1 -0
- package/dist/host/manifestSystem/types.d.ts +8 -0
- package/dist/host/manifestSystem/types.d.ts.map +1 -0
- package/dist/host/manifestSystem/types.js +2 -0
- package/dist/host/manifestSystem/types.js.map +1 -0
- package/dist/host/modules/catalog.d.ts +40 -0
- package/dist/host/modules/catalog.d.ts.map +1 -0
- package/dist/host/modules/catalog.js +112 -0
- package/dist/host/modules/catalog.js.map +1 -0
- package/dist/host/modules/layout.d.ts +7 -0
- package/dist/host/modules/layout.d.ts.map +1 -0
- package/dist/host/modules/layout.js +2 -0
- package/dist/host/modules/layout.js.map +1 -0
- package/dist/host/modules/runtime/LocalFsTargetAdapter.d.ts +34 -0
- package/dist/host/modules/runtime/LocalFsTargetAdapter.d.ts.map +1 -0
- package/dist/host/modules/runtime/LocalFsTargetAdapter.js +85 -0
- package/dist/host/modules/runtime/LocalFsTargetAdapter.js.map +1 -0
- package/dist/host/orchestrator/generatedAppFiles.d.ts +8 -0
- package/dist/host/orchestrator/generatedAppFiles.d.ts.map +1 -0
- package/dist/host/orchestrator/generatedAppFiles.js +125 -0
- package/dist/host/orchestrator/generatedAppFiles.js.map +1 -0
- package/dist/host/orchestrator/generatedRouteCleanup.d.ts +5 -0
- package/dist/host/orchestrator/generatedRouteCleanup.d.ts.map +1 -0
- package/dist/host/orchestrator/generatedRouteCleanup.js +117 -0
- package/dist/host/orchestrator/generatedRouteCleanup.js.map +1 -0
- package/dist/host/orchestrator/infraGenerator.d.ts +35 -0
- package/dist/host/orchestrator/infraGenerator.d.ts.map +1 -0
- package/dist/host/orchestrator/infraGenerator.js +135 -0
- package/dist/host/orchestrator/infraGenerator.js.map +1 -0
- package/dist/host/orchestrator/infraRuntime.d.ts +38 -0
- package/dist/host/orchestrator/infraRuntime.d.ts.map +1 -0
- package/dist/host/orchestrator/infraRuntime.js +227 -0
- package/dist/host/orchestrator/infraRuntime.js.map +1 -0
- package/dist/host/orchestrator/infraValidation.d.ts +3 -0
- package/dist/host/orchestrator/infraValidation.d.ts.map +1 -0
- package/dist/host/orchestrator/infraValidation.js +59 -0
- package/dist/host/orchestrator/infraValidation.js.map +1 -0
- package/dist/host/orchestrator/moduleManager.d.ts +86 -0
- package/dist/host/orchestrator/moduleManager.d.ts.map +1 -0
- package/dist/host/orchestrator/moduleManager.js +312 -0
- package/dist/host/orchestrator/moduleManager.js.map +1 -0
- package/dist/host/orchestrator/projectDeletion.d.ts +27 -0
- package/dist/host/orchestrator/projectDeletion.d.ts.map +1 -0
- package/dist/host/orchestrator/projectDeletion.js +242 -0
- package/dist/host/orchestrator/projectDeletion.js.map +1 -0
- package/dist/host/orchestrator/projectManager.d.ts +87 -0
- package/dist/host/orchestrator/projectManager.d.ts.map +1 -0
- package/dist/host/orchestrator/projectManager.js +371 -0
- package/dist/host/orchestrator/projectManager.js.map +1 -0
- package/dist/host/orchestrator/projectPaths.d.ts +4 -0
- package/dist/host/orchestrator/projectPaths.d.ts.map +1 -0
- package/dist/host/orchestrator/projectPaths.js +25 -0
- package/dist/host/orchestrator/projectPaths.js.map +1 -0
- package/dist/host/orchestrator/projectStore.d.ts +24 -0
- package/dist/host/orchestrator/projectStore.d.ts.map +1 -0
- package/dist/host/orchestrator/projectStore.js +155 -0
- package/dist/host/orchestrator/projectStore.js.map +1 -0
- package/dist/host/orchestrator/resolveMutations.d.ts +3 -0
- package/dist/host/orchestrator/resolveMutations.d.ts.map +1 -0
- package/dist/host/orchestrator/resolveMutations.js +12 -0
- package/dist/host/orchestrator/resolveMutations.js.map +1 -0
- package/dist/host/orchestrator/scaffolder.d.ts +33 -0
- package/dist/host/orchestrator/scaffolder.d.ts.map +1 -0
- package/dist/host/orchestrator/scaffolder.js +246 -0
- package/dist/host/orchestrator/scaffolder.js.map +1 -0
- package/dist/host/orchestrator/templates.d.ts +83 -0
- package/dist/host/orchestrator/templates.d.ts.map +1 -0
- package/dist/host/orchestrator/templates.js +355 -0
- package/dist/host/orchestrator/templates.js.map +1 -0
- package/dist/host/orchestrator/workspaceRuntime.d.ts +2 -0
- package/dist/host/orchestrator/workspaceRuntime.d.ts.map +1 -0
- package/dist/host/orchestrator/workspaceRuntime.js +82 -0
- package/dist/host/orchestrator/workspaceRuntime.js.map +1 -0
- package/dist/host/templateRegistry/index.d.ts +16 -0
- package/dist/host/templateRegistry/index.d.ts.map +1 -0
- package/dist/host/templateRegistry/index.js +74 -0
- package/dist/host/templateRegistry/index.js.map +1 -0
- package/dist/host/utils/requirementsInference.d.ts +4 -0
- package/dist/host/utils/requirementsInference.d.ts.map +1 -0
- package/dist/host/utils/requirementsInference.js +49 -0
- package/dist/host/utils/requirementsInference.js.map +1 -0
- package/dist/host/utils/trimOutput.d.ts +7 -0
- package/dist/host/utils/trimOutput.d.ts.map +1 -0
- package/dist/host/utils/trimOutput.js +32 -0
- package/dist/host/utils/trimOutput.js.map +1 -0
- package/dist/host/utils/workspaceRoot.d.ts +2 -0
- package/dist/host/utils/workspaceRoot.d.ts.map +1 -0
- package/dist/host/utils/workspaceRoot.js +33 -0
- package/dist/host/utils/workspaceRoot.js.map +1 -0
- package/dist/host/zoraExtensions/index.d.ts +11 -0
- package/dist/host/zoraExtensions/index.d.ts.map +1 -0
- package/dist/host/zoraExtensions/index.js +54 -0
- package/dist/host/zoraExtensions/index.js.map +1 -0
- package/dist/runtime/appExtensionRegistry.d.ts +3 -0
- package/dist/runtime/appExtensionRegistry.d.ts.map +1 -0
- package/dist/runtime/appExtensionRegistry.js +8 -0
- package/dist/runtime/appExtensionRegistry.js.map +1 -0
- package/dist/runtime/index.d.ts +8 -4
- package/dist/runtime/index.d.ts.map +1 -1
- package/dist/runtime/index.js +8 -4
- package/dist/runtime/index.js.map +1 -1
- package/dist/runtime/registry.d.ts +7 -0
- package/dist/runtime/registry.d.ts.map +1 -0
- package/dist/runtime/registry.js +7 -0
- package/dist/runtime/registry.js.map +1 -0
- package/dist/runtime/runtimeActions.d.ts +19 -0
- package/dist/runtime/runtimeActions.d.ts.map +1 -0
- package/dist/runtime/runtimeActions.js +5 -0
- package/dist/runtime/runtimeActions.js.map +1 -0
- package/dist/runtime/useRuntimeAction.d.ts +10 -0
- package/dist/runtime/useRuntimeAction.d.ts.map +1 -0
- package/dist/runtime/useRuntimeAction.js +30 -0
- package/dist/runtime/useRuntimeAction.js.map +1 -0
- package/package.json +35 -3
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import { promises as fs } from 'fs';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
const ROUTE_LEDGER_REL_PATH = '.ankh/route-ledger.json';
|
|
4
|
+
const ROUTE_ROOT_REL_PATH = 'src/app';
|
|
5
|
+
export async function syncGeneratedRouteFiles(args) {
|
|
6
|
+
const { projectPath, generatedPaths } = args;
|
|
7
|
+
const nextFiles = new Set(generatedPaths.map((filePath) => normalizeRel(filePath)));
|
|
8
|
+
const previousLedger = await readRouteLedger(projectPath);
|
|
9
|
+
const previousFiles = new Set((previousLedger?.files ?? []).map((filePath) => normalizeRel(filePath)));
|
|
10
|
+
if (previousLedger) {
|
|
11
|
+
const staleFiles = new Set([...previousFiles].filter((filePath) => !nextFiles.has(filePath)));
|
|
12
|
+
await removeFiles(projectPath, staleFiles);
|
|
13
|
+
}
|
|
14
|
+
else {
|
|
15
|
+
await removeOrphanedGeneratedScreenFiles(projectPath, nextFiles);
|
|
16
|
+
}
|
|
17
|
+
await writeRouteLedger(projectPath, {
|
|
18
|
+
schemaVersion: 1,
|
|
19
|
+
generatedAt: new Date().toISOString(),
|
|
20
|
+
files: [...nextFiles].sort(),
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
async function removeOrphanedGeneratedScreenFiles(projectPath, generatedFiles) {
|
|
24
|
+
const appRoot = resolveProjectFile(projectPath, ROUTE_ROOT_REL_PATH);
|
|
25
|
+
if (!(await exists(appRoot)))
|
|
26
|
+
return;
|
|
27
|
+
const routeFiles = await listFilesRecursively(appRoot);
|
|
28
|
+
for (const absPath of routeFiles) {
|
|
29
|
+
if (!absPath.endsWith('.tsx'))
|
|
30
|
+
continue;
|
|
31
|
+
const relPath = normalizeRel(path.relative(projectPath, absPath));
|
|
32
|
+
if (generatedFiles.has(relPath))
|
|
33
|
+
continue;
|
|
34
|
+
const content = await fs.readFile(absPath, 'utf8');
|
|
35
|
+
if (!looksLikeGeneratedScreenFile(content))
|
|
36
|
+
continue;
|
|
37
|
+
await fs.rm(absPath, { force: true });
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
async function listFilesRecursively(absDir) {
|
|
41
|
+
const entries = await fs.readdir(absDir, { withFileTypes: true });
|
|
42
|
+
const files = [];
|
|
43
|
+
for (const entry of entries) {
|
|
44
|
+
const absPath = path.join(absDir, entry.name);
|
|
45
|
+
if (entry.isDirectory()) {
|
|
46
|
+
files.push(...(await listFilesRecursively(absPath)));
|
|
47
|
+
}
|
|
48
|
+
else if (entry.isFile()) {
|
|
49
|
+
files.push(absPath);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
return files;
|
|
53
|
+
}
|
|
54
|
+
function looksLikeGeneratedScreenFile(content) {
|
|
55
|
+
return (content.includes("import ankhConfig from '@root/ankh.config.json';") &&
|
|
56
|
+
content.includes('useOptionalManifestContext') &&
|
|
57
|
+
content.includes('RuntimeRenderer') &&
|
|
58
|
+
content.includes('currentScreenId') &&
|
|
59
|
+
content.includes('Screen configuration not found for ID:'));
|
|
60
|
+
}
|
|
61
|
+
async function readRouteLedger(projectPath) {
|
|
62
|
+
const ledgerPath = resolveProjectFile(projectPath, ROUTE_LEDGER_REL_PATH);
|
|
63
|
+
try {
|
|
64
|
+
const raw = await fs.readFile(ledgerPath, 'utf8');
|
|
65
|
+
const parsed = JSON.parse(raw);
|
|
66
|
+
if (parsed.schemaVersion !== 1 || !Array.isArray(parsed.files)) {
|
|
67
|
+
return null;
|
|
68
|
+
}
|
|
69
|
+
return {
|
|
70
|
+
schemaVersion: 1,
|
|
71
|
+
generatedAt: typeof parsed.generatedAt === 'string' ? parsed.generatedAt : '',
|
|
72
|
+
files: parsed.files.filter((file) => typeof file === 'string'),
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
catch {
|
|
76
|
+
return null;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
async function writeRouteLedger(projectPath, ledger) {
|
|
80
|
+
const ledgerPath = resolveProjectFile(projectPath, ROUTE_LEDGER_REL_PATH);
|
|
81
|
+
await fs.mkdir(path.dirname(ledgerPath), { recursive: true });
|
|
82
|
+
await fs.writeFile(ledgerPath, JSON.stringify(ledger, null, 2), 'utf8');
|
|
83
|
+
}
|
|
84
|
+
async function removeFiles(projectPath, files) {
|
|
85
|
+
for (const relPath of files) {
|
|
86
|
+
const absPath = resolveProjectFile(projectPath, relPath);
|
|
87
|
+
try {
|
|
88
|
+
await fs.rm(absPath, { force: true });
|
|
89
|
+
}
|
|
90
|
+
catch {
|
|
91
|
+
// Best-effort cleanup of stale generated route files.
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
function resolveProjectFile(projectPath, relPath) {
|
|
96
|
+
const root = path.resolve(projectPath);
|
|
97
|
+
const absPath = path.resolve(root, relPath);
|
|
98
|
+
const relative = path.relative(root, absPath);
|
|
99
|
+
const isInsideProject = relative === '' || (!relative.startsWith('..') && !path.isAbsolute(relative));
|
|
100
|
+
if (!isInsideProject) {
|
|
101
|
+
throw new Error(`Invalid route path outside project root: ${relPath}`);
|
|
102
|
+
}
|
|
103
|
+
return absPath;
|
|
104
|
+
}
|
|
105
|
+
function normalizeRel(filePath) {
|
|
106
|
+
return filePath.replace(/\\/g, '/');
|
|
107
|
+
}
|
|
108
|
+
async function exists(absPath) {
|
|
109
|
+
try {
|
|
110
|
+
await fs.access(absPath);
|
|
111
|
+
return true;
|
|
112
|
+
}
|
|
113
|
+
catch {
|
|
114
|
+
return false;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
//# sourceMappingURL=generatedRouteCleanup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generatedRouteCleanup.js","sourceRoot":"","sources":["../../../src/host/orchestrator/generatedRouteCleanup.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { AppManifest } from '@ankhorage/contracts';
|
|
2
|
+
import { generateInfrastructure } from '@ankhorage/infra';
|
|
3
|
+
type InfrastructureGenerator = typeof generateInfrastructure;
|
|
4
|
+
export interface InfraSyncResult {
|
|
5
|
+
generated: number;
|
|
6
|
+
removed: number;
|
|
7
|
+
warnings: string[];
|
|
8
|
+
skipped?: {
|
|
9
|
+
reason: string;
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
export interface InfraStatusResult {
|
|
13
|
+
target: string | null;
|
|
14
|
+
hasDeployment: boolean;
|
|
15
|
+
hasLedger: boolean;
|
|
16
|
+
trackedFiles: number;
|
|
17
|
+
generatedAt: string | null;
|
|
18
|
+
warnings: string[];
|
|
19
|
+
skipped?: {
|
|
20
|
+
reason: string;
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
export declare function syncProjectInfrastructure(args: {
|
|
24
|
+
projectId: string;
|
|
25
|
+
projectPath: string;
|
|
26
|
+
manifest: AppManifest;
|
|
27
|
+
generateInfrastructureImpl?: InfrastructureGenerator;
|
|
28
|
+
}): Promise<InfraSyncResult>;
|
|
29
|
+
export declare function getProjectInfrastructureStatus(args: {
|
|
30
|
+
projectId: string;
|
|
31
|
+
projectPath: string;
|
|
32
|
+
manifest: AppManifest;
|
|
33
|
+
}): Promise<InfraStatusResult>;
|
|
34
|
+
export {};
|
|
35
|
+
//# sourceMappingURL=infraGenerator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"infraGenerator.d.ts","sourceRoot":"","sources":["../../../src/host/orchestrator/infraGenerator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAQ1D,KAAK,uBAAuB,GAAG,OAAO,sBAAsB,CAAC;AAU7D,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,CAAC,EAAE;QACR,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;CACH;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,aAAa,EAAE,OAAO,CAAC;IACvB,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,CAAC,EAAE;QACR,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;CACH;AAED,wBAAsB,yBAAyB,CAAC,IAAI,EAAE;IACpD,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,WAAW,CAAC;IACtB,0BAA0B,CAAC,EAAE,uBAAuB,CAAC;CACtD,GAAG,OAAO,CAAC,eAAe,CAAC,CAyD3B;AAED,wBAAsB,8BAA8B,CAAC,IAAI,EAAE;IACzD,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,WAAW,CAAC;CACvB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CA4B7B"}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
import { generateInfrastructure } from '@ankhorage/infra';
|
|
2
|
+
import { promises as fs } from 'fs';
|
|
3
|
+
import path from 'path';
|
|
4
|
+
import { validateInfraSupport } from './infraValidation';
|
|
5
|
+
const INFRA_LEDGER_REL_PATH = '.ankh/infra-ledger.json';
|
|
6
|
+
const STUDIO_PROJECT_ID = 'studio';
|
|
7
|
+
export async function syncProjectInfrastructure(args) {
|
|
8
|
+
const { projectId, projectPath, manifest, generateInfrastructureImpl } = args;
|
|
9
|
+
const supportWarnings = validateInfraSupport(manifest.infra);
|
|
10
|
+
if (projectId === STUDIO_PROJECT_ID) {
|
|
11
|
+
return {
|
|
12
|
+
generated: 0,
|
|
13
|
+
removed: 0,
|
|
14
|
+
warnings: supportWarnings,
|
|
15
|
+
skipped: {
|
|
16
|
+
reason: 'apps/studio is the dashboard and is not a generated app target.',
|
|
17
|
+
},
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
const previousLedger = await readInfraLedger(projectPath);
|
|
21
|
+
const previousFiles = new Set(previousLedger?.files ?? []);
|
|
22
|
+
if (!manifest.infra.deployment) {
|
|
23
|
+
const removed = await removeFiles(projectPath, previousFiles);
|
|
24
|
+
await removeInfraLedger(projectPath);
|
|
25
|
+
return { generated: 0, removed, warnings: supportWarnings };
|
|
26
|
+
}
|
|
27
|
+
const generated = (generateInfrastructureImpl ?? generateInfrastructure)(manifest.infra, {
|
|
28
|
+
namespaceHint: projectId,
|
|
29
|
+
appManifest: manifest,
|
|
30
|
+
});
|
|
31
|
+
const combinedWarnings = unique([...supportWarnings, ...generated.warnings]);
|
|
32
|
+
const nextFiles = new Set();
|
|
33
|
+
for (const file of generated.files) {
|
|
34
|
+
const absPath = resolveProjectFile(projectPath, file.path);
|
|
35
|
+
await fs.mkdir(path.dirname(absPath), { recursive: true });
|
|
36
|
+
await fs.writeFile(absPath, file.content, 'utf8');
|
|
37
|
+
if (file.executable) {
|
|
38
|
+
await fs.chmod(absPath, 0o755);
|
|
39
|
+
}
|
|
40
|
+
nextFiles.add(file.path);
|
|
41
|
+
}
|
|
42
|
+
const staleFiles = new Set([...previousFiles].filter((f) => !nextFiles.has(f)));
|
|
43
|
+
const removed = await removeFiles(projectPath, staleFiles);
|
|
44
|
+
await writeInfraLedger(projectPath, {
|
|
45
|
+
schemaVersion: 1,
|
|
46
|
+
generatedAt: new Date().toISOString(),
|
|
47
|
+
target: generated.meta.target,
|
|
48
|
+
files: [...nextFiles].sort(),
|
|
49
|
+
warnings: combinedWarnings,
|
|
50
|
+
});
|
|
51
|
+
return {
|
|
52
|
+
generated: generated.files.length,
|
|
53
|
+
removed,
|
|
54
|
+
warnings: combinedWarnings,
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
export async function getProjectInfrastructureStatus(args) {
|
|
58
|
+
const { projectId, projectPath, manifest } = args;
|
|
59
|
+
const supportWarnings = validateInfraSupport(manifest.infra);
|
|
60
|
+
if (projectId === STUDIO_PROJECT_ID) {
|
|
61
|
+
return {
|
|
62
|
+
target: null,
|
|
63
|
+
hasDeployment: false,
|
|
64
|
+
hasLedger: false,
|
|
65
|
+
trackedFiles: 0,
|
|
66
|
+
generatedAt: null,
|
|
67
|
+
warnings: supportWarnings,
|
|
68
|
+
skipped: {
|
|
69
|
+
reason: 'apps/studio is the dashboard and is not a generated app target.',
|
|
70
|
+
},
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
const ledger = await readInfraLedger(projectPath);
|
|
74
|
+
return {
|
|
75
|
+
target: manifest.infra.deployment?.target ?? ledger?.target ?? null,
|
|
76
|
+
hasDeployment: manifest.infra.deployment !== undefined,
|
|
77
|
+
hasLedger: ledger !== null,
|
|
78
|
+
trackedFiles: ledger?.files.length ?? 0,
|
|
79
|
+
generatedAt: ledger?.generatedAt ?? null,
|
|
80
|
+
warnings: unique([...supportWarnings, ...(ledger?.warnings ?? [])]),
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
function resolveProjectFile(projectPath, filePath) {
|
|
84
|
+
const root = path.resolve(projectPath);
|
|
85
|
+
const resolved = path.resolve(root, filePath);
|
|
86
|
+
const relative = path.relative(root, resolved);
|
|
87
|
+
if (relative.startsWith('..') || path.isAbsolute(relative)) {
|
|
88
|
+
throw new Error(`Invalid infra output path outside project root: ${filePath}`);
|
|
89
|
+
}
|
|
90
|
+
return resolved;
|
|
91
|
+
}
|
|
92
|
+
async function readInfraLedger(projectPath) {
|
|
93
|
+
const ledgerPath = path.join(projectPath, INFRA_LEDGER_REL_PATH);
|
|
94
|
+
try {
|
|
95
|
+
const raw = await fs.readFile(ledgerPath, 'utf8');
|
|
96
|
+
const parsed = JSON.parse(raw);
|
|
97
|
+
if (!isInfraLedger(parsed)) {
|
|
98
|
+
return null;
|
|
99
|
+
}
|
|
100
|
+
return parsed;
|
|
101
|
+
}
|
|
102
|
+
catch {
|
|
103
|
+
return null;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
async function writeInfraLedger(projectPath, ledger) {
|
|
107
|
+
const ledgerPath = path.join(projectPath, INFRA_LEDGER_REL_PATH);
|
|
108
|
+
await fs.mkdir(path.dirname(ledgerPath), { recursive: true });
|
|
109
|
+
await fs.writeFile(ledgerPath, `${JSON.stringify(ledger, null, 2)}\n`, 'utf8');
|
|
110
|
+
}
|
|
111
|
+
async function removeInfraLedger(projectPath) {
|
|
112
|
+
await fs.rm(path.join(projectPath, INFRA_LEDGER_REL_PATH), { force: true });
|
|
113
|
+
}
|
|
114
|
+
async function removeFiles(projectPath, files) {
|
|
115
|
+
let removed = 0;
|
|
116
|
+
for (const file of files) {
|
|
117
|
+
await fs.rm(resolveProjectFile(projectPath, file), { force: true });
|
|
118
|
+
removed += 1;
|
|
119
|
+
}
|
|
120
|
+
return removed;
|
|
121
|
+
}
|
|
122
|
+
function isInfraLedger(value) {
|
|
123
|
+
return (typeof value === 'object' &&
|
|
124
|
+
value !== null &&
|
|
125
|
+
!Array.isArray(value) &&
|
|
126
|
+
value.schemaVersion === 1 &&
|
|
127
|
+
typeof value.generatedAt === 'string' &&
|
|
128
|
+
typeof value.target === 'string' &&
|
|
129
|
+
Array.isArray(value.files) &&
|
|
130
|
+
Array.isArray(value.warnings));
|
|
131
|
+
}
|
|
132
|
+
function unique(values) {
|
|
133
|
+
return [...new Set(values)];
|
|
134
|
+
}
|
|
135
|
+
//# sourceMappingURL=infraGenerator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"infraGenerator.js","sourceRoot":"","sources":["../../../src/host/orchestrator/infraGenerator.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,IAAI,CAAC;AACpC,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAEzD,MAAM,qBAAqB,GAAG,yBAAyB,CAAC;AACxD,MAAM,iBAAiB,GAAG,QAAQ,CAAC;AAgCnC,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAAC,IAK/C;IACC,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,0BAA0B,EAAE,GAAG,IAAI,CAAC;IAC9E,MAAM,eAAe,GAAG,oBAAoB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAE7D,IAAI,SAAS,KAAK,iBAAiB,EAAE,CAAC;QACpC,OAAO;YACL,SAAS,EAAE,CAAC;YACZ,OAAO,EAAE,CAAC;YACV,QAAQ,EAAE,eAAe;YACzB,OAAO,EAAE;gBACP,MAAM,EAAE,iEAAiE;aAC1E;SACF,CAAC;IACJ,CAAC;IAED,MAAM,cAAc,GAAG,MAAM,eAAe,CAAC,WAAW,CAAC,CAAC;IAC1D,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,cAAc,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;IAE3D,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;QAC/B,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;QAC9D,MAAM,iBAAiB,CAAC,WAAW,CAAC,CAAC;QACrC,OAAO,EAAE,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,CAAC;IAC9D,CAAC;IAED,MAAM,SAAS,GAAG,CAAC,0BAA0B,IAAI,sBAAsB,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE;QACvF,aAAa,EAAE,SAAS;QACxB,WAAW,EAAE,QAAQ;KACtB,CAAC,CAAC;IACH,MAAM,gBAAgB,GAAG,MAAM,CAAC,CAAC,GAAG,eAAe,EAAE,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC7E,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;IAEpC,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,KAAK,EAAE,CAAC;QACnC,MAAM,OAAO,GAAG,kBAAkB,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3D,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3D,MAAM,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAClD,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,MAAM,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACjC,CAAC;QACD,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAChF,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;IAE3D,MAAM,gBAAgB,CAAC,WAAW,EAAE;QAClC,aAAa,EAAE,CAAC;QAChB,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACrC,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,MAAM;QAC7B,KAAK,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC,IAAI,EAAE;QAC5B,QAAQ,EAAE,gBAAgB;KAC3B,CAAC,CAAC;IAEH,OAAO;QACL,SAAS,EAAE,SAAS,CAAC,KAAK,CAAC,MAAM;QACjC,OAAO;QACP,QAAQ,EAAE,gBAAgB;KAC3B,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,8BAA8B,CAAC,IAIpD;IACC,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;IAClD,MAAM,eAAe,GAAG,oBAAoB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAE7D,IAAI,SAAS,KAAK,iBAAiB,EAAE,CAAC;QACpC,OAAO;YACL,MAAM,EAAE,IAAI;YACZ,aAAa,EAAE,KAAK;YACpB,SAAS,EAAE,KAAK;YAChB,YAAY,EAAE,CAAC;YACf,WAAW,EAAE,IAAI;YACjB,QAAQ,EAAE,eAAe;YACzB,OAAO,EAAE;gBACP,MAAM,EAAE,iEAAiE;aAC1E;SACF,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,WAAW,CAAC,CAAC;IAElD,OAAO;QACL,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,UAAU,EAAE,MAAM,IAAI,MAAM,EAAE,MAAM,IAAI,IAAI;QACnE,aAAa,EAAE,QAAQ,CAAC,KAAK,CAAC,UAAU,KAAK,SAAS;QACtD,SAAS,EAAE,MAAM,KAAK,IAAI;QAC1B,YAAY,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,CAAC;QACvC,WAAW,EAAE,MAAM,EAAE,WAAW,IAAI,IAAI;QACxC,QAAQ,EAAE,MAAM,CAAC,CAAC,GAAG,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,IAAI,EAAE,CAAC,CAAC,CAAC;KACpE,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CAAC,WAAmB,EAAE,QAAgB;IAC/D,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAE9C,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC/C,IAAI,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC3D,MAAM,IAAI,KAAK,CAAC,mDAAmD,QAAQ,EAAE,CAAC,CAAC;IACjF,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,WAAmB;IAChD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,qBAAqB,CAAC,CAAC;IACjE,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QAClD,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACxC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3B,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAC,WAAmB,EAAE,MAAmB;IACtE,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,qBAAqB,CAAC,CAAC;IACjE,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9D,MAAM,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AACjF,CAAC;AAED,KAAK,UAAU,iBAAiB,CAAC,WAAmB;IAClD,MAAM,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,qBAAqB,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AAC9E,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,WAAmB,EAAE,KAA0B;IACxE,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,EAAE,CAAC,EAAE,CAAC,kBAAkB,CAAC,WAAW,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACpE,OAAO,IAAI,CAAC,CAAC;IACf,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,aAAa,CAAC,KAAc;IACnC,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QACpB,KAA8B,CAAC,aAAa,KAAK,CAAC;QACnD,OAAQ,KAA8B,CAAC,WAAW,KAAK,QAAQ;QAC/D,OAAQ,KAA8B,CAAC,MAAM,KAAK,QAAQ;QAC1D,KAAK,CAAC,OAAO,CAAE,KAA8B,CAAC,KAAK,CAAC;QACpD,KAAK,CAAC,OAAO,CAAE,KAA8B,CAAC,QAAQ,CAAC,CACxD,CAAC;AACJ,CAAC;AAED,SAAS,MAAM,CAAC,MAAyB;IACvC,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;AAC9B,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
export type InfraLifecycleScript = 'up' | 'down' | 'status' | 'port-forward';
|
|
2
|
+
export interface InfraScriptOutput {
|
|
3
|
+
stdout: string;
|
|
4
|
+
stderr: string;
|
|
5
|
+
}
|
|
6
|
+
export declare class InfraScriptExecutionError extends Error {
|
|
7
|
+
readonly stdout: string;
|
|
8
|
+
readonly stderr: string;
|
|
9
|
+
readonly exitCode: number | null;
|
|
10
|
+
constructor(args: {
|
|
11
|
+
message: string;
|
|
12
|
+
stdout: string;
|
|
13
|
+
stderr: string;
|
|
14
|
+
exitCode: number | null;
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
export declare function runProjectInfraScript(args: {
|
|
18
|
+
rootPath: string;
|
|
19
|
+
projectId: string;
|
|
20
|
+
target: string;
|
|
21
|
+
script: InfraLifecycleScript;
|
|
22
|
+
}): Promise<void>;
|
|
23
|
+
export declare function runProjectInfraScriptCapture(args: {
|
|
24
|
+
rootPath: string;
|
|
25
|
+
projectId: string;
|
|
26
|
+
target: string;
|
|
27
|
+
script: InfraLifecycleScript;
|
|
28
|
+
}): Promise<InfraScriptOutput>;
|
|
29
|
+
export declare function ensureProjectInfraPortForward(args: {
|
|
30
|
+
rootPath: string;
|
|
31
|
+
projectId: string;
|
|
32
|
+
target: string;
|
|
33
|
+
}): Promise<{
|
|
34
|
+
url: string;
|
|
35
|
+
started: boolean;
|
|
36
|
+
}>;
|
|
37
|
+
export declare function stopAllProjectInfraPortForwards(): Promise<void>;
|
|
38
|
+
//# sourceMappingURL=infraRuntime.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"infraRuntime.d.ts","sourceRoot":"","sources":["../../../src/host/orchestrator/infraRuntime.ts"],"names":[],"mappings":"AAOA,MAAM,MAAM,oBAAoB,GAAG,IAAI,GAAG,MAAM,GAAG,QAAQ,GAAG,cAAc,CAAC;AAE7E,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAUD,qBAAa,yBAA0B,SAAQ,KAAK;IAClD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;gBAErB,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE;CAO/F;AAcD,wBAAsB,qBAAqB,CAAC,IAAI,EAAE;IAChD,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,oBAAoB,CAAC;CAC9B,iBAUA;AAED,wBAAsB,4BAA4B,CAAC,IAAI,EAAE;IACvD,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,oBAAoB,CAAC;CAC9B,8BAUA;AAED,wBAAsB,6BAA6B,CAAC,IAAI,EAAE;IACxD,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;CAChB,GAAG,OAAO,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,CA4C7C;AAED,wBAAsB,+BAA+B,kBAgBpD"}
|
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
import { spawn } from 'child_process';
|
|
2
|
+
import { promises as fs } from 'fs';
|
|
3
|
+
import path from 'path';
|
|
4
|
+
import { getProjectPath } from './projectPaths';
|
|
5
|
+
const PORT_FORWARD_STARTUP_TIMEOUT_MS = 1_000;
|
|
6
|
+
const portForwardSessions = new Map();
|
|
7
|
+
export class InfraScriptExecutionError extends Error {
|
|
8
|
+
stdout;
|
|
9
|
+
stderr;
|
|
10
|
+
exitCode;
|
|
11
|
+
constructor(args) {
|
|
12
|
+
super(args.message);
|
|
13
|
+
this.name = 'InfraScriptExecutionError';
|
|
14
|
+
this.stdout = args.stdout;
|
|
15
|
+
this.stderr = args.stderr;
|
|
16
|
+
this.exitCode = args.exitCode;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
function resolveProjectInfraScriptPath(args) {
|
|
20
|
+
const { rootPath, projectId, target, script } = args;
|
|
21
|
+
const projectPath = getProjectPath(rootPath, projectId);
|
|
22
|
+
return path.join(projectPath, getInfraScriptsDir(target), `${script}.sh`);
|
|
23
|
+
}
|
|
24
|
+
export async function runProjectInfraScript(args) {
|
|
25
|
+
const scriptPath = resolveProjectInfraScriptPath(args);
|
|
26
|
+
if (!(await exists(scriptPath))) {
|
|
27
|
+
throw new Error(`Infra script not found: ${scriptPath}. Run 'ankh infra:regenerate ${args.projectId}' first.`);
|
|
28
|
+
}
|
|
29
|
+
await runShellScript(scriptPath, 'inherit');
|
|
30
|
+
}
|
|
31
|
+
export async function runProjectInfraScriptCapture(args) {
|
|
32
|
+
const scriptPath = resolveProjectInfraScriptPath(args);
|
|
33
|
+
if (!(await exists(scriptPath))) {
|
|
34
|
+
throw new Error(`Infra script not found: ${scriptPath}. Run 'ankh infra:regenerate ${args.projectId}' first.`);
|
|
35
|
+
}
|
|
36
|
+
return runShellScript(scriptPath, 'capture');
|
|
37
|
+
}
|
|
38
|
+
export async function ensureProjectInfraPortForward(args) {
|
|
39
|
+
const scriptPath = resolveProjectInfraScriptPath({ ...args, script: 'port-forward' });
|
|
40
|
+
if (!(await exists(scriptPath))) {
|
|
41
|
+
throw new Error(`Infra script not found: ${scriptPath}. Run 'ankh infra:regenerate ${args.projectId}' first.`);
|
|
42
|
+
}
|
|
43
|
+
const sessionKey = `${args.rootPath}:${args.projectId}:${args.target}`;
|
|
44
|
+
const existing = portForwardSessions.get(sessionKey);
|
|
45
|
+
if (existing?.child.exitCode === null && !existing.child.killed) {
|
|
46
|
+
return {
|
|
47
|
+
url: existing.url,
|
|
48
|
+
started: false,
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
portForwardSessions.delete(sessionKey);
|
|
52
|
+
const localPort = await resolveProjectPortForwardLocalPort(args);
|
|
53
|
+
const url = `http://127.0.0.1:${localPort}`;
|
|
54
|
+
const child = spawn('bash', [scriptPath], {
|
|
55
|
+
cwd: path.dirname(scriptPath),
|
|
56
|
+
stdio: ['ignore', 'pipe', 'pipe'],
|
|
57
|
+
env: process.env,
|
|
58
|
+
});
|
|
59
|
+
const session = { child, url };
|
|
60
|
+
portForwardSessions.set(sessionKey, session);
|
|
61
|
+
child.once('close', () => {
|
|
62
|
+
portForwardSessions.delete(sessionKey);
|
|
63
|
+
});
|
|
64
|
+
child.once('error', () => {
|
|
65
|
+
portForwardSessions.delete(sessionKey);
|
|
66
|
+
});
|
|
67
|
+
await waitForPortForwardStartup({ child, scriptPath });
|
|
68
|
+
return {
|
|
69
|
+
url,
|
|
70
|
+
started: true,
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
export async function stopAllProjectInfraPortForwards() {
|
|
74
|
+
const sessions = [...portForwardSessions.values()];
|
|
75
|
+
portForwardSessions.clear();
|
|
76
|
+
await Promise.all(sessions.map(async ({ child }) => {
|
|
77
|
+
if (child.exitCode !== null || child.killed)
|
|
78
|
+
return;
|
|
79
|
+
await new Promise((resolve) => {
|
|
80
|
+
const timer = setTimeout(resolve, 1_000);
|
|
81
|
+
child.once('close', () => {
|
|
82
|
+
clearTimeout(timer);
|
|
83
|
+
resolve();
|
|
84
|
+
});
|
|
85
|
+
child.kill('SIGTERM');
|
|
86
|
+
});
|
|
87
|
+
}));
|
|
88
|
+
}
|
|
89
|
+
function getInfraScriptsDir(target) {
|
|
90
|
+
switch (target) {
|
|
91
|
+
case 'minikube':
|
|
92
|
+
return 'infra/minikube/scripts';
|
|
93
|
+
default:
|
|
94
|
+
throw new Error(`Unsupported deployment target for infra scripts: ${target}`);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
async function resolveProjectPortForwardLocalPort(args) {
|
|
98
|
+
const projectPath = getProjectPath(args.rootPath, args.projectId);
|
|
99
|
+
const infraRoot = path.join(projectPath, 'infra', args.target);
|
|
100
|
+
const envPath = path.join(infraRoot, '.env');
|
|
101
|
+
const fallbackEnvPath = path.join(infraRoot, '.env.example');
|
|
102
|
+
const envMap = await readSimpleEnvMap((await exists(envPath)) ? envPath : fallbackEnvPath);
|
|
103
|
+
const localPortRaw = envMap.get('APP_PORT_FORWARD_LOCAL_PORT');
|
|
104
|
+
const parsedPort = parsePositivePort(localPortRaw);
|
|
105
|
+
return parsedPort ?? 18080;
|
|
106
|
+
}
|
|
107
|
+
async function readSimpleEnvMap(filePath) {
|
|
108
|
+
const out = new Map();
|
|
109
|
+
if (!(await exists(filePath)))
|
|
110
|
+
return out;
|
|
111
|
+
const content = await fs.readFile(filePath, 'utf8');
|
|
112
|
+
const lines = content.split(/\r?\n/u);
|
|
113
|
+
for (const line of lines) {
|
|
114
|
+
const trimmed = line.trim();
|
|
115
|
+
if (!trimmed || trimmed.startsWith('#'))
|
|
116
|
+
continue;
|
|
117
|
+
const idx = trimmed.indexOf('=');
|
|
118
|
+
if (idx <= 0)
|
|
119
|
+
continue;
|
|
120
|
+
const key = trimmed.slice(0, idx).trim();
|
|
121
|
+
const value = trimmed
|
|
122
|
+
.slice(idx + 1)
|
|
123
|
+
.trim()
|
|
124
|
+
.replace(/^['"]|['"]$/g, '');
|
|
125
|
+
out.set(key, value);
|
|
126
|
+
}
|
|
127
|
+
return out;
|
|
128
|
+
}
|
|
129
|
+
function parsePositivePort(value) {
|
|
130
|
+
if (!value)
|
|
131
|
+
return null;
|
|
132
|
+
const parsed = Number.parseInt(value, 10);
|
|
133
|
+
if (!Number.isInteger(parsed))
|
|
134
|
+
return null;
|
|
135
|
+
if (parsed < 1 || parsed > 65535)
|
|
136
|
+
return null;
|
|
137
|
+
return parsed;
|
|
138
|
+
}
|
|
139
|
+
function waitForPortForwardStartup(args) {
|
|
140
|
+
const { child, scriptPath } = args;
|
|
141
|
+
return new Promise((resolve, reject) => {
|
|
142
|
+
let settled = false;
|
|
143
|
+
let stderr = '';
|
|
144
|
+
child.stderr?.setEncoding('utf8');
|
|
145
|
+
child.stderr?.on('data', (chunk) => {
|
|
146
|
+
stderr += chunk;
|
|
147
|
+
if (stderr.length > 8_000) {
|
|
148
|
+
stderr = stderr.slice(stderr.length - 8_000);
|
|
149
|
+
}
|
|
150
|
+
});
|
|
151
|
+
const completeResolve = () => {
|
|
152
|
+
if (settled)
|
|
153
|
+
return;
|
|
154
|
+
settled = true;
|
|
155
|
+
clearTimeout(timer);
|
|
156
|
+
resolve();
|
|
157
|
+
};
|
|
158
|
+
const completeReject = (error) => {
|
|
159
|
+
if (settled)
|
|
160
|
+
return;
|
|
161
|
+
settled = true;
|
|
162
|
+
clearTimeout(timer);
|
|
163
|
+
reject(error);
|
|
164
|
+
};
|
|
165
|
+
const timer = setTimeout(() => {
|
|
166
|
+
completeResolve();
|
|
167
|
+
}, PORT_FORWARD_STARTUP_TIMEOUT_MS);
|
|
168
|
+
child.once('error', (err) => {
|
|
169
|
+
completeReject(new Error(`Failed to start infra script '${scriptPath}': ${err.message}`));
|
|
170
|
+
});
|
|
171
|
+
child.once('close', (code) => {
|
|
172
|
+
if (code === 0) {
|
|
173
|
+
completeResolve();
|
|
174
|
+
return;
|
|
175
|
+
}
|
|
176
|
+
const stderrSnippet = stderr.trim();
|
|
177
|
+
const suffix = stderrSnippet ? ` stderr: ${stderrSnippet}` : '';
|
|
178
|
+
completeReject(new Error(`Infra script '${scriptPath}' exited with code ${code ?? 'unknown'}.${suffix}`));
|
|
179
|
+
});
|
|
180
|
+
});
|
|
181
|
+
}
|
|
182
|
+
function runShellScript(scriptPath, mode) {
|
|
183
|
+
return new Promise((resolve, reject) => {
|
|
184
|
+
const child = spawn('bash', [scriptPath], {
|
|
185
|
+
cwd: path.dirname(scriptPath),
|
|
186
|
+
stdio: mode === 'inherit' ? 'inherit' : 'pipe',
|
|
187
|
+
env: process.env,
|
|
188
|
+
});
|
|
189
|
+
let stdout = '';
|
|
190
|
+
let stderr = '';
|
|
191
|
+
if (mode === 'capture') {
|
|
192
|
+
child.stdout?.setEncoding('utf8');
|
|
193
|
+
child.stderr?.setEncoding('utf8');
|
|
194
|
+
child.stdout?.on('data', (chunk) => {
|
|
195
|
+
stdout += chunk;
|
|
196
|
+
});
|
|
197
|
+
child.stderr?.on('data', (chunk) => {
|
|
198
|
+
stderr += chunk;
|
|
199
|
+
});
|
|
200
|
+
}
|
|
201
|
+
child.once('error', (err) => {
|
|
202
|
+
reject(new Error(`Failed to start infra script '${scriptPath}': ${err.message}`));
|
|
203
|
+
});
|
|
204
|
+
child.once('close', (code) => {
|
|
205
|
+
if (code === 0) {
|
|
206
|
+
resolve({ stdout, stderr });
|
|
207
|
+
return;
|
|
208
|
+
}
|
|
209
|
+
reject(new InfraScriptExecutionError({
|
|
210
|
+
message: `Infra script '${scriptPath}' exited with code ${code ?? 'unknown'}.`,
|
|
211
|
+
stdout,
|
|
212
|
+
stderr,
|
|
213
|
+
exitCode: code,
|
|
214
|
+
}));
|
|
215
|
+
});
|
|
216
|
+
});
|
|
217
|
+
}
|
|
218
|
+
async function exists(p) {
|
|
219
|
+
try {
|
|
220
|
+
await fs.access(p);
|
|
221
|
+
return true;
|
|
222
|
+
}
|
|
223
|
+
catch {
|
|
224
|
+
return false;
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
//# sourceMappingURL=infraRuntime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"infraRuntime.js","sourceRoot":"","sources":["../../../src/host/orchestrator/infraRuntime.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"infraValidation.d.ts","sourceRoot":"","sources":["../../../src/host/orchestrator/infraValidation.ts"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,aAAa,EACnB,MAAM,sBAAsB,CAAC;AAE9B,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,aAAa,GAAG,MAAM,EAAE,CA2DtE"}
|