@shravansunder/agent-vm 0.0.1 → 0.0.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.
- package/dist/backup/backup-encryption.d.ts +2 -2
- package/dist/backup/backup-encryption.d.ts.map +1 -1
- package/dist/backup/backup-encryption.js +29 -7
- package/dist/backup/backup-encryption.js.map +1 -1
- package/dist/build/docker-image-builder.d.ts +3 -1
- package/dist/build/docker-image-builder.d.ts.map +1 -1
- package/dist/build/docker-image-builder.js +4 -4
- package/dist/build/docker-image-builder.js.map +1 -1
- package/dist/build/gondolin-image-builder.d.ts +2 -2
- package/dist/build/gondolin-image-builder.d.ts.map +1 -1
- package/dist/build/gondolin-image-builder.js +10 -9
- package/dist/build/gondolin-image-builder.js.map +1 -1
- package/dist/build/stale-image-cleaner.d.ts.map +1 -1
- package/dist/build/stale-image-cleaner.js +15 -11
- package/dist/build/stale-image-cleaner.js.map +1 -1
- package/dist/cli/agent-vm-cli-support.d.ts +3 -3
- package/dist/cli/agent-vm-cli-support.d.ts.map +1 -1
- package/dist/cli/agent-vm-cli-support.js +5 -8
- package/dist/cli/agent-vm-cli-support.js.map +1 -1
- package/dist/cli/agent-vm-entrypoint.js +0 -0
- package/dist/cli/auth-interactive-command.d.ts +1 -1
- package/dist/cli/auth-interactive-command.d.ts.map +1 -1
- package/dist/cli/build-command.d.ts +2 -1
- package/dist/cli/build-command.d.ts.map +1 -1
- package/dist/cli/build-command.js +29 -1
- package/dist/cli/build-command.js.map +1 -1
- package/dist/cli/commands/command-definition-support.js +5 -5
- package/dist/cli/commands/command-definition-support.js.map +1 -1
- package/dist/cli/commands/controller-definition.d.ts.map +1 -1
- package/dist/cli/commands/controller-definition.js +2 -2
- package/dist/cli/commands/controller-definition.js.map +1 -1
- package/dist/cli/commands/create-app.d.ts +139 -139
- package/dist/cli/commands/create-app.js +1 -1
- package/dist/cli/commands/init-definition.js +1 -1
- package/dist/cli/init-command.d.ts +2 -2
- package/dist/cli/init-command.d.ts.map +1 -1
- package/dist/cli/init-command.js +32 -49
- package/dist/cli/init-command.js.map +1 -1
- package/dist/cli/openclaw-plugin-bundle.d.ts +8 -1
- package/dist/cli/openclaw-plugin-bundle.d.ts.map +1 -1
- package/dist/cli/openclaw-plugin-bundle.js +12 -7
- package/dist/cli/openclaw-plugin-bundle.js.map +1 -1
- package/dist/config/system-config.d.ts +21 -6
- package/dist/config/system-config.d.ts.map +1 -1
- package/dist/config/system-config.js +74 -8
- package/dist/config/system-config.js.map +1 -1
- package/dist/controller/composite-secret-resolver.d.ts +3 -0
- package/dist/controller/composite-secret-resolver.d.ts.map +1 -0
- package/dist/controller/composite-secret-resolver.js +38 -0
- package/dist/controller/composite-secret-resolver.js.map +1 -0
- package/dist/controller/controller-runtime-operations.d.ts +2 -2
- package/dist/controller/controller-runtime-operations.d.ts.map +1 -1
- package/dist/controller/controller-runtime-operations.js +4 -16
- package/dist/controller/controller-runtime-operations.js.map +1 -1
- package/dist/controller/controller-runtime-support.d.ts +3 -2
- package/dist/controller/controller-runtime-support.d.ts.map +1 -1
- package/dist/controller/controller-runtime-support.js +11 -5
- package/dist/controller/controller-runtime-support.js.map +1 -1
- package/dist/controller/controller-runtime-types.d.ts +7 -3
- package/dist/controller/controller-runtime-types.d.ts.map +1 -1
- package/dist/controller/controller-runtime.d.ts.map +1 -1
- package/dist/controller/controller-runtime.js +86 -20
- package/dist/controller/controller-runtime.js.map +1 -1
- package/dist/controller/docker-service-routing.d.ts +11 -0
- package/dist/controller/docker-service-routing.d.ts.map +1 -0
- package/dist/controller/docker-service-routing.js +148 -0
- package/dist/controller/docker-service-routing.js.map +1 -0
- package/dist/controller/http/controller-http-route-support.d.ts +8 -0
- package/dist/controller/http/controller-http-route-support.d.ts.map +1 -1
- package/dist/controller/http/controller-http-route-support.js.map +1 -1
- package/dist/controller/http/controller-http-routes.d.ts +2 -0
- package/dist/controller/http/controller-http-routes.d.ts.map +1 -1
- package/dist/controller/http/controller-http-routes.js +20 -2
- package/dist/controller/http/controller-http-routes.js.map +1 -1
- package/dist/controller/http/controller-request-schemas.d.ts +8 -0
- package/dist/controller/http/controller-request-schemas.d.ts.map +1 -1
- package/dist/controller/http/controller-request-schemas.js +6 -0
- package/dist/controller/http/controller-request-schemas.js.map +1 -1
- package/dist/controller/http/controller-zone-operation-routes.d.ts.map +1 -1
- package/dist/controller/http/controller-zone-operation-routes.js +25 -1
- package/dist/controller/http/controller-zone-operation-routes.js.map +1 -1
- package/dist/controller/leases/lease-manager.d.ts +1 -1
- package/dist/controller/leases/lease-manager.d.ts.map +1 -1
- package/dist/controller/leases/lease-manager.js +1 -3
- package/dist/controller/leases/lease-manager.js.map +1 -1
- package/dist/controller/worker-task-runner.d.ts +39 -0
- package/dist/controller/worker-task-runner.d.ts.map +1 -0
- package/dist/controller/worker-task-runner.js +242 -0
- package/dist/controller/worker-task-runner.js.map +1 -0
- package/dist/gateway/credential-manager.d.ts +1 -1
- package/dist/gateway/credential-manager.d.ts.map +1 -1
- package/dist/gateway/credential-manager.js +26 -7
- package/dist/gateway/credential-manager.js.map +1 -1
- package/dist/gateway/gateway-image-builder.d.ts +1 -1
- package/dist/gateway/gateway-image-builder.d.ts.map +1 -1
- package/dist/gateway/gateway-lifecycle-loader.d.ts +1 -1
- package/dist/gateway/gateway-lifecycle-loader.d.ts.map +1 -1
- package/dist/gateway/gateway-lifecycle-loader.js +3 -3
- package/dist/gateway/gateway-lifecycle-loader.js.map +1 -1
- package/dist/gateway/gateway-recovery.d.ts +19 -0
- package/dist/gateway/gateway-recovery.d.ts.map +1 -0
- package/dist/gateway/gateway-recovery.js +147 -0
- package/dist/gateway/gateway-recovery.js.map +1 -0
- package/dist/gateway/gateway-runtime-record.d.ts +33 -0
- package/dist/gateway/gateway-runtime-record.d.ts.map +1 -0
- package/dist/gateway/gateway-runtime-record.js +114 -0
- package/dist/gateway/gateway-runtime-record.js.map +1 -0
- package/dist/gateway/gateway-zone-orchestrator.d.ts +6 -2
- package/dist/gateway/gateway-zone-orchestrator.d.ts.map +1 -1
- package/dist/gateway/gateway-zone-orchestrator.js +61 -16
- package/dist/gateway/gateway-zone-orchestrator.js.map +1 -1
- package/dist/gateway/gateway-zone-support.d.ts +7 -4
- package/dist/gateway/gateway-zone-support.d.ts.map +1 -1
- package/dist/gateway/gateway-zone-support.js +34 -0
- package/dist/gateway/gateway-zone-support.js.map +1 -1
- package/dist/operations/doctor.d.ts.map +1 -1
- package/dist/operations/doctor.js +22 -11
- package/dist/operations/doctor.js.map +1 -1
- package/dist/operations/upgrade-zone.d.ts +0 -1
- package/dist/operations/upgrade-zone.d.ts.map +1 -1
- package/dist/operations/upgrade-zone.js +0 -1
- package/dist/operations/upgrade-zone.js.map +1 -1
- package/dist/runtime/project-namespace.d.ts +5 -0
- package/dist/runtime/project-namespace.d.ts.map +1 -0
- package/dist/runtime/project-namespace.js +22 -0
- package/dist/runtime/project-namespace.js.map +1 -0
- package/dist/tool-vm/tool-vm-lifecycle.d.ts +1 -1
- package/dist/tool-vm/tool-vm-lifecycle.d.ts.map +1 -1
- package/dist/tool-vm/tool-vm-lifecycle.js +3 -2
- package/dist/tool-vm/tool-vm-lifecycle.js.map +1 -1
- package/package.json +42 -40
|
@@ -12,8 +12,8 @@ interface AgeEncryptionDependencies {
|
|
|
12
12
|
* is stored in 1Password per zone. The public key (recipient) is derived
|
|
13
13
|
* at encryption time via age-keygen -y.
|
|
14
14
|
*
|
|
15
|
-
* Secret keys are
|
|
16
|
-
*
|
|
15
|
+
* Secret keys are written only to a short-lived 0600 temp file for tool
|
|
16
|
+
* compatibility, then deleted immediately after each operation.
|
|
17
17
|
*/
|
|
18
18
|
export declare function createAgeBackupEncryption(dependencies: AgeEncryptionDependencies): BackupEncryption;
|
|
19
19
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"backup-encryption.d.ts","sourceRoot":"","sources":["../../src/backup/backup-encryption.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"backup-encryption.d.ts","sourceRoot":"","sources":["../../src/backup/backup-encryption.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAE5D,UAAU,yBAAyB;IAClC;;mFAE+E;IAC/E,QAAQ,CAAC,eAAe,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;CAChD;AAqED;;;;;;;;;GASG;AACH,wBAAgB,yBAAyB,CACxC,YAAY,EAAE,yBAAyB,GACrC,gBAAgB,CA8BlB"}
|
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
import { spawn } from 'node:child_process';
|
|
2
|
+
import fs from 'node:fs/promises';
|
|
3
|
+
import os from 'node:os';
|
|
4
|
+
import path from 'node:path';
|
|
2
5
|
/**
|
|
3
6
|
* Run a command with optional stdin input. Returns stdout as a string.
|
|
4
7
|
* Rejects if the process exits non-zero.
|
|
@@ -30,13 +33,25 @@ function runWithStdin(command, args, stdinInput) {
|
|
|
30
33
|
}
|
|
31
34
|
});
|
|
32
35
|
}
|
|
36
|
+
async function withTemporaryIdentityFile(identityLine, runWithIdentityFile) {
|
|
37
|
+
const temporaryIdentityPath = path.join(os.tmpdir(), `agent-vm-age-identity-${process.pid}-${Date.now()}.txt`);
|
|
38
|
+
await fs.writeFile(temporaryIdentityPath, `${identityLine}\n`, {
|
|
39
|
+
encoding: 'utf8',
|
|
40
|
+
mode: 0o600,
|
|
41
|
+
});
|
|
42
|
+
try {
|
|
43
|
+
return await runWithIdentityFile(temporaryIdentityPath);
|
|
44
|
+
}
|
|
45
|
+
finally {
|
|
46
|
+
await fs.rm(temporaryIdentityPath, { force: true });
|
|
47
|
+
}
|
|
48
|
+
}
|
|
33
49
|
/**
|
|
34
|
-
* Derive the public key (recipient) from an age identity key via
|
|
35
|
-
*
|
|
50
|
+
* Derive the public key (recipient) from an age identity key via a short-lived
|
|
51
|
+
* 0600 temp file. `/dev/stdin` is not portable enough across CI runners.
|
|
36
52
|
*/
|
|
37
53
|
async function deriveRecipientFromIdentity(identityLine) {
|
|
38
|
-
|
|
39
|
-
return stdout.trim();
|
|
54
|
+
return await withTemporaryIdentityFile(identityLine, async (identityFilePath) => (await runWithStdin('age-keygen', ['-y', identityFilePath])).trim());
|
|
40
55
|
}
|
|
41
56
|
/**
|
|
42
57
|
* Age identity-key-based encryption for zone backups.
|
|
@@ -45,8 +60,8 @@ async function deriveRecipientFromIdentity(identityLine) {
|
|
|
45
60
|
* is stored in 1Password per zone. The public key (recipient) is derived
|
|
46
61
|
* at encryption time via age-keygen -y.
|
|
47
62
|
*
|
|
48
|
-
* Secret keys are
|
|
49
|
-
*
|
|
63
|
+
* Secret keys are written only to a short-lived 0600 temp file for tool
|
|
64
|
+
* compatibility, then deleted immediately after each operation.
|
|
50
65
|
*/
|
|
51
66
|
export function createAgeBackupEncryption(dependencies) {
|
|
52
67
|
return {
|
|
@@ -64,7 +79,14 @@ export function createAgeBackupEncryption(dependencies) {
|
|
|
64
79
|
},
|
|
65
80
|
decrypt: async (inputPath, outputPath) => {
|
|
66
81
|
const identity = await dependencies.resolveIdentity();
|
|
67
|
-
await
|
|
82
|
+
await withTemporaryIdentityFile(identity, async (identityFilePath) => await runWithStdin('age', [
|
|
83
|
+
'--decrypt',
|
|
84
|
+
'--identity',
|
|
85
|
+
identityFilePath,
|
|
86
|
+
'--output',
|
|
87
|
+
outputPath,
|
|
88
|
+
inputPath,
|
|
89
|
+
]));
|
|
68
90
|
},
|
|
69
91
|
};
|
|
70
92
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"backup-encryption.js","sourceRoot":"","sources":["../../src/backup/backup-encryption.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"backup-encryption.js","sourceRoot":"","sources":["../../src/backup/backup-encryption.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
export interface DockerImageBuilderDependencies {
|
|
2
|
-
readonly executeCommand?: (command: string, args: readonly string[]) => Promise<
|
|
2
|
+
readonly executeCommand?: (command: string, args: readonly string[]) => Promise<{
|
|
3
|
+
readonly exitCode?: number;
|
|
4
|
+
} | void>;
|
|
3
5
|
}
|
|
4
6
|
export interface BuildDockerImageOptions {
|
|
5
7
|
readonly dockerfilePath: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"docker-image-builder.d.ts","sourceRoot":"","sources":["../../src/build/docker-image-builder.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,8BAA8B;IAC9C,QAAQ,CAAC,cAAc,CAAC,EAAE,
|
|
1
|
+
{"version":3,"file":"docker-image-builder.d.ts","sourceRoot":"","sources":["../../src/build/docker-image-builder.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,8BAA8B;IAC9C,QAAQ,CAAC,cAAc,CAAC,EAAE,CACzB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,SAAS,MAAM,EAAE,KACnB,OAAO,CAAC;QACZ,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;KAC3B,GAAG,IAAI,CAAC,CAAC;CACV;AAED,MAAM,WAAW,uBAAuB;IACvC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC1B;AAMD,wBAAsB,gBAAgB,CACrC,OAAO,EAAE,uBAAuB,EAChC,YAAY,GAAE,8BAAmC,GAC/C,OAAO,CAAC,IAAI,CAAC,CAoBf"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import path from 'node:path';
|
|
2
2
|
import { execa } from 'execa';
|
|
3
|
-
async function executeDockerCommand(command,
|
|
4
|
-
await execa(command,
|
|
3
|
+
async function executeDockerCommand(command, args) {
|
|
4
|
+
await execa(command, args, { stdio: 'inherit' });
|
|
5
5
|
}
|
|
6
6
|
export async function buildDockerImage(options, dependencies = {}) {
|
|
7
7
|
const executeCommand = dependencies.executeCommand ?? executeDockerCommand;
|
|
8
8
|
const resolvedDockerfilePath = path.resolve(options.dockerfilePath);
|
|
9
|
-
const
|
|
9
|
+
const dockerBuildContextDirectory = path.dirname(resolvedDockerfilePath);
|
|
10
10
|
try {
|
|
11
11
|
await executeCommand('docker', [
|
|
12
12
|
'build',
|
|
@@ -14,7 +14,7 @@ export async function buildDockerImage(options, dependencies = {}) {
|
|
|
14
14
|
resolvedDockerfilePath,
|
|
15
15
|
'-t',
|
|
16
16
|
options.imageTag,
|
|
17
|
-
|
|
17
|
+
dockerBuildContextDirectory,
|
|
18
18
|
]);
|
|
19
19
|
}
|
|
20
20
|
catch (error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"docker-image-builder.js","sourceRoot":"","sources":["../../src/build/docker-image-builder.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"docker-image-builder.js","sourceRoot":"","sources":["../../src/build/docker-image-builder.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAgB9B,KAAK,UAAU,oBAAoB,CAAC,OAAe,EAAE,IAAuB;IAC3E,MAAM,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACrC,OAAgC,EAChC,eAA+C,EAAE;IAEjD,MAAM,cAAc,GAAG,YAAY,CAAC,cAAc,IAAI,oBAAoB,CAAC;IAC3E,MAAM,sBAAsB,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IACpE,MAAM,2BAA2B,GAAG,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;IAEzE,IAAI,CAAC;QACJ,MAAM,cAAc,CAAC,QAAQ,EAAE;YAC9B,OAAO;YACP,IAAI;YACJ,sBAAsB;YACtB,IAAI;YACJ,OAAO,CAAC,QAAQ;YAChB,2BAA2B;SAC3B,CAAC,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CACd,2BAA2B,OAAO,CAAC,QAAQ,KAAK,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EACxG,EAAE,KAAK,EAAE,KAAK,EAAE,CAChB,CAAC;IACH,CAAC;AACF,CAAC"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { type BuildConfig, type BuildImageOptions, type BuildImageResult } from '@shravansunder/
|
|
1
|
+
import { type BuildConfig, type BuildImageOptions, type BuildImageResult } from '@shravansunder/gondolin-core';
|
|
2
2
|
export interface GondolinImageBuilderDependencies {
|
|
3
3
|
readonly buildImage?: (options: BuildImageOptions) => Promise<BuildImageResult>;
|
|
4
4
|
readonly loadBuildConfig?: (buildConfigPath: string) => Promise<BuildConfig>;
|
|
5
5
|
}
|
|
6
|
+
export declare function computeFingerprintFromConfigPath(buildConfigPath: string): Promise<string>;
|
|
6
7
|
export declare function buildGondolinImage(options: {
|
|
7
8
|
readonly buildConfigPath: string;
|
|
8
9
|
readonly cacheDir: string;
|
|
9
10
|
readonly fullReset?: boolean;
|
|
10
11
|
}, dependencies?: GondolinImageBuilderDependencies): Promise<BuildImageResult>;
|
|
11
|
-
export declare function computeFingerprintFromConfigPath(buildConfigPath: string, dependencies?: Pick<GondolinImageBuilderDependencies, 'loadBuildConfig'>): Promise<string>;
|
|
12
12
|
//# sourceMappingURL=gondolin-image-builder.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gondolin-image-builder.d.ts","sourceRoot":"","sources":["../../src/build/gondolin-image-builder.ts"],"names":[],"mappings":"AAGA,OAAO,EAGN,KAAK,WAAW,EAChB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,MAAM,
|
|
1
|
+
{"version":3,"file":"gondolin-image-builder.d.ts","sourceRoot":"","sources":["../../src/build/gondolin-image-builder.ts"],"names":[],"mappings":"AAGA,OAAO,EAGN,KAAK,WAAW,EAChB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,MAAM,8BAA8B,CAAC;AAEtC,MAAM,WAAW,gCAAgC;IAChD,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAChF,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC,eAAe,EAAE,MAAM,KAAK,OAAO,CAAC,WAAW,CAAC,CAAC;CAC7E;AAOD,wBAAsB,gCAAgC,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAG/F;AAED,wBAAsB,kBAAkB,CACvC,OAAO,EAAE;IACR,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;CAC7B,EACD,YAAY,GAAE,gCAAqC,GACjD,OAAO,CAAC,gBAAgB,CAAC,CAY3B"}
|
|
@@ -1,23 +1,24 @@
|
|
|
1
1
|
import fs from 'node:fs/promises';
|
|
2
2
|
import path from 'node:path';
|
|
3
|
-
import { buildImage as buildImageFromCore, computeBuildFingerprint, } from '@shravansunder/
|
|
3
|
+
import { buildImage as buildImageFromCore, computeBuildFingerprint, } from '@shravansunder/gondolin-core';
|
|
4
4
|
async function loadBuildConfigFromJson(buildConfigPath) {
|
|
5
|
-
|
|
5
|
+
const rawContents = await fs.readFile(buildConfigPath, 'utf8');
|
|
6
|
+
return JSON.parse(rawContents);
|
|
7
|
+
}
|
|
8
|
+
export async function computeFingerprintFromConfigPath(buildConfigPath) {
|
|
9
|
+
const buildConfig = await loadBuildConfigFromJson(buildConfigPath);
|
|
10
|
+
return computeBuildFingerprint(buildConfig);
|
|
6
11
|
}
|
|
7
12
|
export async function buildGondolinImage(options, dependencies = {}) {
|
|
8
13
|
const loadBuildConfig = dependencies.loadBuildConfig ?? loadBuildConfigFromJson;
|
|
9
14
|
const buildImage = dependencies.buildImage ?? buildImageFromCore;
|
|
10
|
-
const
|
|
15
|
+
const configDir = path.dirname(path.resolve(options.buildConfigPath));
|
|
11
16
|
const buildConfig = await loadBuildConfig(options.buildConfigPath);
|
|
12
17
|
return await buildImage({
|
|
13
18
|
buildConfig,
|
|
14
19
|
cacheDir: options.cacheDir,
|
|
15
|
-
configDir
|
|
16
|
-
...(options.fullReset
|
|
20
|
+
configDir,
|
|
21
|
+
...(options.fullReset ? { fullReset: true } : {}),
|
|
17
22
|
});
|
|
18
23
|
}
|
|
19
|
-
export async function computeFingerprintFromConfigPath(buildConfigPath, dependencies = {}) {
|
|
20
|
-
const loadBuildConfig = dependencies.loadBuildConfig ?? loadBuildConfigFromJson;
|
|
21
|
-
return computeBuildFingerprint(await loadBuildConfig(buildConfigPath));
|
|
22
|
-
}
|
|
23
24
|
//# sourceMappingURL=gondolin-image-builder.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gondolin-image-builder.js","sourceRoot":"","sources":["../../src/build/gondolin-image-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EACN,UAAU,IAAI,kBAAkB,EAChC,uBAAuB,GAIvB,MAAM,
|
|
1
|
+
{"version":3,"file":"gondolin-image-builder.js","sourceRoot":"","sources":["../../src/build/gondolin-image-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EACN,UAAU,IAAI,kBAAkB,EAChC,uBAAuB,GAIvB,MAAM,8BAA8B,CAAC;AAOtC,KAAK,UAAU,uBAAuB,CAAC,eAAuB;IAC7D,MAAM,WAAW,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;IAC/D,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAgB,CAAC;AAC/C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gCAAgC,CAAC,eAAuB;IAC7E,MAAM,WAAW,GAAG,MAAM,uBAAuB,CAAC,eAAe,CAAC,CAAC;IACnE,OAAO,uBAAuB,CAAC,WAAW,CAAC,CAAC;AAC7C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACvC,OAIC,EACD,eAAiD,EAAE;IAEnD,MAAM,eAAe,GAAG,YAAY,CAAC,eAAe,IAAI,uBAAuB,CAAC;IAChF,MAAM,UAAU,GAAG,YAAY,CAAC,UAAU,IAAI,kBAAkB,CAAC;IACjE,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC;IACtE,MAAM,WAAW,GAAG,MAAM,eAAe,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;IAEnE,OAAO,MAAM,UAAU,CAAC;QACvB,WAAW;QACX,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,SAAS;QACT,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACjD,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stale-image-cleaner.d.ts","sourceRoot":"","sources":["../../src/build/stale-image-cleaner.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,eAAe;IAC/B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,SAAS,EAAE,SAAS,GAAG,MAAM,CAAC;IACvC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC3B;
|
|
1
|
+
{"version":3,"file":"stale-image-cleaner.d.ts","sourceRoot":"","sources":["../../src/build/stale-image-cleaner.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,eAAe;IAC/B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,SAAS,EAAE,SAAS,GAAG,MAAM,CAAC;IACvC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC3B;AAqBD,wBAAgB,yBAAyB,CAAC,OAAO,EAAE;IAClD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,mBAAmB,EAAE;QAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;CAClF,GAAG,SAAS,eAAe,EAAE,CA0B7B;AAED,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,SAAS,eAAe,EAAE,GAAG,IAAI,CAIrF"}
|
|
@@ -3,35 +3,39 @@ import path from 'node:path';
|
|
|
3
3
|
function getDirectorySizeBytes(directoryPath) {
|
|
4
4
|
let totalSizeBytes = 0;
|
|
5
5
|
try {
|
|
6
|
-
for (const
|
|
7
|
-
|
|
6
|
+
for (const directoryEntry of fs.readdirSync(directoryPath, { withFileTypes: true })) {
|
|
7
|
+
const absoluteEntryPath = path.join(directoryPath, directoryEntry.name);
|
|
8
|
+
if (directoryEntry.isDirectory()) {
|
|
9
|
+
totalSizeBytes += getDirectorySizeBytes(absoluteEntryPath);
|
|
8
10
|
continue;
|
|
9
11
|
}
|
|
10
|
-
|
|
12
|
+
if (directoryEntry.isFile()) {
|
|
13
|
+
totalSizeBytes += fs.statSync(absoluteEntryPath).size;
|
|
14
|
+
}
|
|
11
15
|
}
|
|
12
16
|
}
|
|
13
17
|
catch {
|
|
14
|
-
return
|
|
18
|
+
return totalSizeBytes;
|
|
15
19
|
}
|
|
16
20
|
return totalSizeBytes;
|
|
17
21
|
}
|
|
18
22
|
export function findStaleImageDirectories(options) {
|
|
19
23
|
const staleEntries = [];
|
|
20
24
|
for (const imageType of ['gateway', 'tool']) {
|
|
21
|
-
const
|
|
22
|
-
if (!fs.existsSync(
|
|
25
|
+
const imageCacheDirectory = path.join(options.cacheDir, 'images', imageType);
|
|
26
|
+
if (!fs.existsSync(imageCacheDirectory)) {
|
|
23
27
|
continue;
|
|
24
28
|
}
|
|
25
29
|
const currentFingerprint = options.currentFingerprints[imageType];
|
|
26
|
-
for (const
|
|
27
|
-
if (!
|
|
30
|
+
for (const directoryEntry of fs.readdirSync(imageCacheDirectory, { withFileTypes: true })) {
|
|
31
|
+
if (!directoryEntry.isDirectory() || directoryEntry.name === currentFingerprint) {
|
|
28
32
|
continue;
|
|
29
33
|
}
|
|
30
|
-
const absolutePath = path.join(
|
|
34
|
+
const absolutePath = path.join(imageCacheDirectory, directoryEntry.name);
|
|
31
35
|
staleEntries.push({
|
|
32
36
|
absolutePath,
|
|
33
37
|
imageType,
|
|
34
|
-
name:
|
|
38
|
+
name: directoryEntry.name,
|
|
35
39
|
sizeBytes: getDirectorySizeBytes(absolutePath),
|
|
36
40
|
});
|
|
37
41
|
}
|
|
@@ -40,7 +44,7 @@ export function findStaleImageDirectories(options) {
|
|
|
40
44
|
}
|
|
41
45
|
export function deleteStaleImageDirectories(entries) {
|
|
42
46
|
for (const entry of entries) {
|
|
43
|
-
fs.rmSync(entry.absolutePath, {
|
|
47
|
+
fs.rmSync(entry.absolutePath, { force: true, recursive: true });
|
|
44
48
|
}
|
|
45
49
|
}
|
|
46
50
|
//# sourceMappingURL=stale-image-cleaner.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stale-image-cleaner.js","sourceRoot":"","sources":["../../src/build/stale-image-cleaner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAS7B,SAAS,qBAAqB,CAAC,aAAqB;IACnD,IAAI,cAAc,GAAG,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"stale-image-cleaner.js","sourceRoot":"","sources":["../../src/build/stale-image-cleaner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAS7B,SAAS,qBAAqB,CAAC,aAAqB;IACnD,IAAI,cAAc,GAAG,CAAC,CAAC;IACvB,IAAI,CAAC;QACJ,KAAK,MAAM,cAAc,IAAI,EAAE,CAAC,WAAW,CAAC,aAAa,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;YACrF,MAAM,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,cAAc,CAAC,IAAI,CAAC,CAAC;YACxE,IAAI,cAAc,CAAC,WAAW,EAAE,EAAE,CAAC;gBAClC,cAAc,IAAI,qBAAqB,CAAC,iBAAiB,CAAC,CAAC;gBAC3D,SAAS;YACV,CAAC;YACD,IAAI,cAAc,CAAC,MAAM,EAAE,EAAE,CAAC;gBAC7B,cAAc,IAAI,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC;YACvD,CAAC;QACF,CAAC;IACF,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,cAAc,CAAC;IACvB,CAAC;IACD,OAAO,cAAc,CAAC;AACvB,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,OAGzC;IACA,MAAM,YAAY,GAAsB,EAAE,CAAC;IAE3C,KAAK,MAAM,SAAS,IAAI,CAAC,SAAS,EAAE,MAAM,CAAU,EAAE,CAAC;QACtD,MAAM,mBAAmB,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;QAC7E,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,mBAAmB,CAAC,EAAE,CAAC;YACzC,SAAS;QACV,CAAC;QAED,MAAM,kBAAkB,GAAG,OAAO,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;QAClE,KAAK,MAAM,cAAc,IAAI,EAAE,CAAC,WAAW,CAAC,mBAAmB,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;YAC3F,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,IAAI,cAAc,CAAC,IAAI,KAAK,kBAAkB,EAAE,CAAC;gBACjF,SAAS;YACV,CAAC;YAED,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,cAAc,CAAC,IAAI,CAAC,CAAC;YACzE,YAAY,CAAC,IAAI,CAAC;gBACjB,YAAY;gBACZ,SAAS;gBACT,IAAI,EAAE,cAAc,CAAC,IAAI;gBACzB,SAAS,EAAE,qBAAqB,CAAC,YAAY,CAAC;aAC9C,CAAC,CAAC;QACJ,CAAC;IACF,CAAC;IAED,OAAO,YAAY,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,OAAmC;IAC9E,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC7B,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACjE,CAAC;AACF,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { SecretResolver } from '@shravansunder/
|
|
2
|
-
import { createOpCliSecretResolver, resolveServiceAccountToken } from '@shravansunder/
|
|
1
|
+
import type { SecretResolver } from '@shravansunder/gondolin-core';
|
|
2
|
+
import { createOpCliSecretResolver, resolveServiceAccountToken } from '@shravansunder/gondolin-core';
|
|
3
3
|
import { createAgeBackupEncryption } from '../backup/backup-encryption.js';
|
|
4
4
|
import { createZoneBackupManager } from '../backup/backup-manager.js';
|
|
5
5
|
import { loadSystemConfig, type SystemConfig } from '../config/system-config.js';
|
|
@@ -41,7 +41,7 @@ export interface CliDependencies {
|
|
|
41
41
|
readonly zoneId: string;
|
|
42
42
|
}, runtimeDependencies?: ControllerRuntimeDependencies) => Promise<{
|
|
43
43
|
readonly controllerPort: number;
|
|
44
|
-
readonly gateway
|
|
44
|
+
readonly gateway?: {
|
|
45
45
|
readonly ingress: {
|
|
46
46
|
readonly host: string;
|
|
47
47
|
readonly port: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-vm-cli-support.d.ts","sourceRoot":"","sources":["../../src/cli/agent-vm-cli-support.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"agent-vm-cli-support.d.ts","sourceRoot":"","sources":["../../src/cli/agent-vm-cli-support.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import { createOpCliSecretResolver, resolveServiceAccountToken, } from '@shravansunder/
|
|
1
|
+
import { createOpCliSecretResolver, resolveServiceAccountToken, } from '@shravansunder/gondolin-core';
|
|
2
2
|
import { createAgeBackupEncryption } from '../backup/backup-encryption.js';
|
|
3
3
|
import { createZoneBackupManager } from '../backup/backup-manager.js';
|
|
4
4
|
import { loadSystemConfig } from '../config/system-config.js';
|
|
5
|
+
import { createSecretResolver as createControllerSecretResolver } from '../controller/controller-runtime-support.js';
|
|
5
6
|
import { startControllerRuntime } from '../controller/controller-runtime.js';
|
|
6
7
|
import { createControllerClient } from '../controller/http/controller-client.js';
|
|
7
8
|
import { startGatewayZone } from '../gateway/gateway-zone-orchestrator.js';
|
|
@@ -32,9 +33,9 @@ export function writeJson(io, value) {
|
|
|
32
33
|
export function resolveConfigPath(argv) {
|
|
33
34
|
const configFlagIndex = argv.indexOf('--config');
|
|
34
35
|
if (configFlagIndex >= 0) {
|
|
35
|
-
return argv[configFlagIndex + 1] ?? 'system.json';
|
|
36
|
+
return argv[configFlagIndex + 1] ?? 'config/system.json';
|
|
36
37
|
}
|
|
37
|
-
return 'system.json';
|
|
38
|
+
return 'config/system.json';
|
|
38
39
|
}
|
|
39
40
|
export function readZoneFlag(argv) {
|
|
40
41
|
const zoneFlagIndex = argv.indexOf('--zone');
|
|
@@ -63,10 +64,6 @@ export function requireZone(systemConfig, zoneFlag) {
|
|
|
63
64
|
throw new Error(`--zone is required. Available zones:\n${zoneList}`);
|
|
64
65
|
}
|
|
65
66
|
export async function createResolverFromSystemConfig(systemConfig, dependencies) {
|
|
66
|
-
|
|
67
|
-
const serviceAccountToken = await dependencies.resolveServiceAccountToken(tokenSource);
|
|
68
|
-
return await dependencies.createSecretResolver({
|
|
69
|
-
serviceAccountToken,
|
|
70
|
-
});
|
|
67
|
+
return await createControllerSecretResolver(systemConfig, dependencies.createSecretResolver, dependencies.resolveServiceAccountToken);
|
|
71
68
|
}
|
|
72
69
|
//# sourceMappingURL=agent-vm-cli-support.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-vm-cli-support.js","sourceRoot":"","sources":["../../src/cli/agent-vm-cli-support.ts"],"names":[],"mappings":"AACA,OAAO,EACN,yBAAyB,EACzB,0BAA0B,GAC1B,MAAM,
|
|
1
|
+
{"version":3,"file":"agent-vm-cli-support.js","sourceRoot":"","sources":["../../src/cli/agent-vm-cli-support.ts"],"names":[],"mappings":"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"}
|
|
File without changes
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { GatewayAuthConfig } from '@shravansunder/
|
|
1
|
+
import type { GatewayAuthConfig } from '@shravansunder/gateway-interface';
|
|
2
2
|
import type { SystemConfig } from '../config/system-config.js';
|
|
3
3
|
import { type CliDependencies, type CliIo } from './agent-vm-cli-support.js';
|
|
4
4
|
import { type ZoneSshAccessResponse } from './ssh-commands.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth-interactive-command.d.ts","sourceRoot":"","sources":["../../src/cli/auth-interactive-command.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"auth-interactive-command.d.ts","sourceRoot":"","sources":["../../src/cli/auth-interactive-command.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAG1E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EACN,KAAK,eAAe,EACpB,KAAK,KAAK,EAEV,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAA+B,KAAK,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAY5F,wBAAsB,iBAAiB,CAAC,OAAO,EAAE;IAChD,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;IACtC,QAAQ,CAAC,UAAU,CAAC,EAAE,CACrB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,SAAS,MAAM,EAAE,KACzB,OAAO,CAAC;QAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC9F,QAAQ,CAAC,SAAS,EAAE,qBAAqB,CAAC;CAC1C,GAAG,OAAO,CAAC,SAAS,MAAM,EAAE,CAAC,CAuC7B;AAED,wBAAsB,yBAAyB,CAAC,OAAO,EAAE;IACxD,QAAQ,CAAC,UAAU,EAAE,iBAAiB,GAAG,SAAS,CAAC;IACnD,QAAQ,CAAC,YAAY,EAAE,IAAI,CAC1B,eAAe,EACf,wBAAwB,GAAG,YAAY,GAAG,uBAAuB,CACjE,CAAC;IACF,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IACnB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,CAAC,EAAE,CACrB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,SAAS,MAAM,EAAE,KACzB,OAAO,CAAC;QAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC9F,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IACpC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACxB,GAAG,OAAO,CAAC,IAAI,CAAC,CAmDhB"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { BuildImageResult } from '@shravansunder/
|
|
1
|
+
import type { BuildImageResult } from '@shravansunder/gondolin-core';
|
|
2
2
|
import type { SystemConfig } from '../config/system-config.js';
|
|
3
3
|
export interface BuildCommandDependencies {
|
|
4
4
|
readonly buildDockerImage?: (options: {
|
|
@@ -13,6 +13,7 @@ export interface BuildCommandDependencies {
|
|
|
13
13
|
readonly resolveOciImageTag?: (buildConfigPath: string) => Promise<string>;
|
|
14
14
|
/** Override the task runner for testing (bypasses tasuku terminal rendering). */
|
|
15
15
|
readonly runTask?: (title: string, fn: () => Promise<void>) => Promise<void>;
|
|
16
|
+
readonly resolveProjectRootFromDockerfile?: (dockerfilePath: string) => Promise<string>;
|
|
16
17
|
readonly syncBundledOpenClawPlugin?: (targetDir: string) => Promise<'created' | 'skipped'>;
|
|
17
18
|
}
|
|
18
19
|
export declare function runBuildCommand(options: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build-command.d.ts","sourceRoot":"","sources":["../../src/cli/build-command.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"build-command.d.ts","sourceRoot":"","sources":["../../src/cli/build-command.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAMrE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAI/D,MAAM,WAAW,wBAAwB;IACxC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC,OAAO,EAAE;QACrC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;QAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;KAC1B,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACpB,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC,OAAO,EAAE;QACvC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;QACjC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;KAC7B,KAAK,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAChC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC,eAAe,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAC3E,iFAAiF;IACjF,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7E,QAAQ,CAAC,gCAAgC,CAAC,EAAE,CAAC,cAAc,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACxF,QAAQ,CAAC,yBAAyB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC,CAAC;CAC3F;AAqDD,wBAAsB,eAAe,CACpC,OAAO,EAAE;IACR,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;IAChC,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;CACpC,EACD,YAAY,GAAE,wBAA6B,GACzC,OAAO,CAAC,IAAI,CAAC,CAmEf"}
|
|
@@ -26,11 +26,31 @@ async function defaultRunTask(title, fn) {
|
|
|
26
26
|
taskState.setTitle(`${title} done`);
|
|
27
27
|
});
|
|
28
28
|
}
|
|
29
|
+
async function resolveProjectRootFromDockerfile(dockerfilePath) {
|
|
30
|
+
let searchDirectory = path.dirname(path.resolve(dockerfilePath));
|
|
31
|
+
for (;;) {
|
|
32
|
+
try {
|
|
33
|
+
// oxlint-disable-next-line no-await-in-loop -- upward root discovery is intentionally sequential
|
|
34
|
+
await fs.access(path.join(searchDirectory, 'config', 'system.json'));
|
|
35
|
+
return searchDirectory;
|
|
36
|
+
}
|
|
37
|
+
catch {
|
|
38
|
+
const parentDirectory = path.dirname(searchDirectory);
|
|
39
|
+
if (parentDirectory === searchDirectory) {
|
|
40
|
+
// Fallback for older test scaffolds and legacy layouts that still follow the
|
|
41
|
+
// standard images/gateway/Dockerfile shape but do not materialize config/system.json.
|
|
42
|
+
return path.resolve(dockerfilePath, '..', '..', '..');
|
|
43
|
+
}
|
|
44
|
+
searchDirectory = parentDirectory;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
29
48
|
export async function runBuildCommand(options, dependencies = {}) {
|
|
30
49
|
const buildDockerImage = dependencies.buildDockerImage ?? buildDockerImageDefault;
|
|
31
50
|
const buildGondolinImage = dependencies.buildGondolinImage ?? buildGondolinImageDefault;
|
|
32
51
|
const resolveOciImageTag = dependencies.resolveOciImageTag ?? resolveOciImageTagFromConfig;
|
|
33
52
|
const runTaskStep = dependencies.runTask ?? defaultRunTask;
|
|
53
|
+
const resolveProjectRoot = dependencies.resolveProjectRootFromDockerfile ?? resolveProjectRootFromDockerfile;
|
|
34
54
|
const syncBundledOpenClawPlugin = dependencies.syncBundledOpenClawPlugin ?? syncBundledOpenClawPluginBundle;
|
|
35
55
|
const imageTargets = [
|
|
36
56
|
{
|
|
@@ -45,15 +65,22 @@ export async function runBuildCommand(options, dependencies = {}) {
|
|
|
45
65
|
},
|
|
46
66
|
];
|
|
47
67
|
const dockerImageTargets = imageTargets.filter((imageTarget) => imageTarget.dockerfile !== undefined);
|
|
68
|
+
// oxlint-disable-next-line no-await-in-loop -- image builds are intentionally sequential for stable task output and shared image tags
|
|
48
69
|
for (const imageTarget of dockerImageTargets) {
|
|
70
|
+
// oxlint-disable-next-line no-await-in-loop -- each image tag is resolved in lockstep with its matching build task
|
|
49
71
|
const imageTag = await resolveOciImageTag(imageTarget.buildConfigPath);
|
|
50
72
|
if (imageTarget.name === 'gateway' &&
|
|
51
73
|
options.systemConfig.zones.some((zone) => zone.gateway.type === 'openclaw')) {
|
|
52
|
-
|
|
74
|
+
// Resolve the scaffold root via config/system.json instead of assuming a fixed
|
|
75
|
+
// images/gateway/Dockerfile depth.
|
|
76
|
+
// oxlint-disable-next-line no-await-in-loop -- root discovery belongs to the matching build target
|
|
77
|
+
const projectRootDirectory = await resolveProjectRoot(imageTarget.dockerfile);
|
|
78
|
+
// oxlint-disable-next-line no-await-in-loop -- bundle sync must complete before the matching docker build starts
|
|
53
79
|
await runTaskStep('OpenClaw plugin bundle', async () => {
|
|
54
80
|
await syncBundledOpenClawPlugin(projectRootDirectory);
|
|
55
81
|
});
|
|
56
82
|
}
|
|
83
|
+
// oxlint-disable-next-line no-await-in-loop -- docker builds intentionally run one at a time to keep task output readable
|
|
57
84
|
await runTaskStep(`Docker: ${imageTarget.name} (${imageTag})`, async () => {
|
|
58
85
|
await buildDockerImage({
|
|
59
86
|
dockerfilePath: imageTarget.dockerfile,
|
|
@@ -65,6 +92,7 @@ export async function runBuildCommand(options, dependencies = {}) {
|
|
|
65
92
|
for (const imageTarget of imageTargets) {
|
|
66
93
|
const cacheDirectory = path.join(options.systemConfig.cacheDir, 'images', imageTarget.name);
|
|
67
94
|
const shouldResetGondolinCache = options.forceRebuild === true || dockerBackedTargets.has(imageTarget.name);
|
|
95
|
+
// oxlint-disable-next-line no-await-in-loop -- gondolin cache rebuilds are intentionally sequenced per image target
|
|
68
96
|
await runTaskStep(`Gondolin: ${imageTarget.name}`, async () => {
|
|
69
97
|
await buildGondolinImage({
|
|
70
98
|
buildConfigPath: imageTarget.buildConfigPath,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build-command.js","sourceRoot":"","sources":["../../src/cli/build-command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAG7B,OAAO,IAAI,MAAM,QAAQ,CAAC;AAC1B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,gBAAgB,IAAI,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAC/F,OAAO,EAAE,kBAAkB,IAAI,yBAAyB,EAAE,MAAM,oCAAoC,CAAC;AAErG,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,+BAA+B,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"build-command.js","sourceRoot":"","sources":["../../src/cli/build-command.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,8 +7,8 @@ export function createConfigOption() {
|
|
|
7
7
|
type: optional(string),
|
|
8
8
|
long: 'config',
|
|
9
9
|
short: 'c',
|
|
10
|
-
description: 'Path to system.json',
|
|
11
|
-
defaultValue: () => 'system.json',
|
|
10
|
+
description: 'Path to config/system.json',
|
|
11
|
+
defaultValue: () => 'config/system.json',
|
|
12
12
|
});
|
|
13
13
|
}
|
|
14
14
|
export function createZoneOption() {
|
|
@@ -44,7 +44,7 @@ export function createRemoteCommandArguments() {
|
|
|
44
44
|
});
|
|
45
45
|
}
|
|
46
46
|
export function loadSystemConfigFromOption(configPath, dependencies) {
|
|
47
|
-
const resolvedConfigPath = configPath ?? 'system.json';
|
|
47
|
+
const resolvedConfigPath = configPath ?? 'config/system.json';
|
|
48
48
|
return dependencies.loadSystemConfig(resolvedConfigPath).catch((error) => {
|
|
49
49
|
if (error instanceof ZodError) {
|
|
50
50
|
throw new Error(formatZodError(`Invalid ${resolvedConfigPath} configuration:`, error), {
|
|
@@ -66,9 +66,9 @@ export function parseGatewayType(gatewayType) {
|
|
|
66
66
|
if (gatewayType === 'openclaw') {
|
|
67
67
|
return gatewayType;
|
|
68
68
|
}
|
|
69
|
-
if (gatewayType === '
|
|
69
|
+
if (gatewayType === 'worker') {
|
|
70
70
|
return gatewayType;
|
|
71
71
|
}
|
|
72
|
-
throw new Error(`Gateway type is required. Expected 'openclaw' or '
|
|
72
|
+
throw new Error(`Gateway type is required. Expected 'openclaw' or 'worker'${gatewayType ? `, got '${gatewayType}'` : ''}.`);
|
|
73
73
|
}
|
|
74
74
|
//# sourceMappingURL=command-definition-support.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command-definition-support.js","sourceRoot":"","sources":["../../../src/cli/commands/command-definition-support.ts"],"names":[],"mappings":"AAAA,iEAAiE;AACjE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AACzE,OAAO,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC;AAI/B,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAGxD,MAAM,UAAU,kBAAkB;IACjC,OAAO,MAAM,CAAC;QACb,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC;QACtB,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,GAAG;QACV,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"command-definition-support.js","sourceRoot":"","sources":["../../../src/cli/commands/command-definition-support.ts"],"names":[],"mappings":"AAAA,iEAAiE;AACjE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AACzE,OAAO,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC;AAI/B,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAGxD,MAAM,UAAU,kBAAkB;IACjC,OAAO,MAAM,CAAC;QACb,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC;QACtB,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,GAAG;QACV,WAAW,EAAE,4BAA4B;QACzC,YAAY,EAAE,GAAG,EAAE,CAAC,oBAAoB;KACxC,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC/B,OAAO,MAAM,CAAC;QACb,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC;QACtB,IAAI,EAAE,MAAM;QACZ,KAAK,EAAE,GAAG;QACV,WAAW,EAAE,sDAAsD;KACnE,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iBAAiB;IAChC,OAAO,IAAI,CAAC;QACX,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,gCAAgC;KAC7C,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,eAAe;IAC9B,OAAO,IAAI,CAAC;QACX,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,4CAA4C;KACzD,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,eAAe;IAC9B,OAAO,IAAI,CAAC;QACX,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,kDAAkD;KAC/D,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,4BAA4B;IAC3C,OAAO,eAAe,CAAC;QACtB,WAAW,EAAE,gBAAgB;QAC7B,WAAW,EAAE,4CAA4C;KACzD,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,0BAA0B,CACzC,UAA8B,EAC9B,YAAuD;IAEvD,MAAM,kBAAkB,GAAG,UAAU,IAAI,oBAAoB,CAAC;IAC9D,OAAO,YAAY,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;QACjF,IAAI,KAAK,YAAY,QAAQ,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,WAAW,kBAAkB,iBAAiB,EAAE,KAAK,CAAC,EAAE;gBACtF,KAAK,EAAE,KAAK;aACZ,CAAC,CAAC;QACJ,CAAC;QACD,IAAI,KAAK,YAAY,WAAW,EAAE,CAAC;YAClC,MAAM,IAAI,KAAK,CAAC,mBAAmB,kBAAkB,KAAK,KAAK,CAAC,OAAO,EAAE,EAAE;gBAC1E,KAAK,EAAE,KAAK;aACZ,CAAC,CAAC;QACJ,CAAC;QACD,MAAM,KAAK,CAAC;IACb,CAAC,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,UAAoB,EAAE,MAAc;IACtE,OAAO,CAAC,GAAG,UAAU,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,WAA+B;IAC/D,IAAI,WAAW,KAAK,UAAU,EAAE,CAAC;QAChC,OAAO,WAAW,CAAC;IACpB,CAAC;IACD,IAAI,WAAW,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,WAAW,CAAC;IACpB,CAAC;IAED,MAAM,IAAI,KAAK,CACd,4DAA4D,WAAW,CAAC,CAAC,CAAC,UAAU,WAAW,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAC1G,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"controller-definition.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/controller-definition.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,KAAK,eAAe,EAAE,KAAK,KAAK,EAAe,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"controller-definition.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/controller-definition.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,KAAK,eAAe,EAAE,KAAK,KAAK,EAAe,MAAM,4BAA4B,CAAC;AAmF3F,wBAAgB,2BAA2B,CAAC,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA6JnF"}
|
|
@@ -72,8 +72,8 @@ export function createControllerSubcommands(io, dependencies) {
|
|
|
72
72
|
}, { runTask });
|
|
73
73
|
io.stdout.write(`${JSON.stringify({
|
|
74
74
|
controllerPort: runtime.controllerPort,
|
|
75
|
-
ingress: runtime.gateway
|
|
76
|
-
vmId: runtime.gateway
|
|
75
|
+
ingress: runtime.gateway?.ingress ?? null,
|
|
76
|
+
vmId: runtime.gateway?.vm.id ?? null,
|
|
77
77
|
zoneId: selectedZone.id,
|
|
78
78
|
}, null, 2)}\n`);
|
|
79
79
|
},
|