@agent-vm/agent-vm 0.0.20
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/LICENSE +21 -0
- package/dist/backup/backup-archive-layout.d.ts +15 -0
- package/dist/backup/backup-archive-layout.d.ts.map +1 -0
- package/dist/backup/backup-archive-layout.js +34 -0
- package/dist/backup/backup-archive-layout.js.map +1 -0
- package/dist/backup/backup-create-operation.d.ts +9 -0
- package/dist/backup/backup-create-operation.d.ts.map +1 -0
- package/dist/backup/backup-create-operation.js +50 -0
- package/dist/backup/backup-create-operation.js.map +1 -0
- package/dist/backup/backup-encryption.d.ts +20 -0
- package/dist/backup/backup-encryption.d.ts.map +1 -0
- package/dist/backup/backup-encryption.js +93 -0
- package/dist/backup/backup-encryption.js.map +1 -0
- package/dist/backup/backup-manager.d.ts +42 -0
- package/dist/backup/backup-manager.d.ts.map +1 -0
- package/dist/backup/backup-manager.js +37 -0
- package/dist/backup/backup-manager.js.map +1 -0
- package/dist/backup/backup-restore-operation.d.ts +8 -0
- package/dist/backup/backup-restore-operation.d.ts.map +1 -0
- package/dist/backup/backup-restore-operation.js +53 -0
- package/dist/backup/backup-restore-operation.js.map +1 -0
- package/dist/build/docker-image-builder.d.ts +11 -0
- package/dist/build/docker-image-builder.d.ts.map +1 -0
- package/dist/build/docker-image-builder.js +24 -0
- package/dist/build/docker-image-builder.js.map +1 -0
- package/dist/build/gondolin-image-builder.d.ts +16 -0
- package/dist/build/gondolin-image-builder.d.ts.map +1 -0
- package/dist/build/gondolin-image-builder.js +52 -0
- package/dist/build/gondolin-image-builder.js.map +1 -0
- package/dist/build/runtime-versions.d.ts +13 -0
- package/dist/build/runtime-versions.d.ts.map +1 -0
- package/dist/build/runtime-versions.js +100 -0
- package/dist/build/runtime-versions.js.map +1 -0
- package/dist/build/stale-image-cleaner.d.ts +17 -0
- package/dist/build/stale-image-cleaner.d.ts.map +1 -0
- package/dist/build/stale-image-cleaner.js +70 -0
- package/dist/build/stale-image-cleaner.js.map +1 -0
- package/dist/cli/agent-vm-cli-support.d.ts +78 -0
- package/dist/cli/agent-vm-cli-support.d.ts.map +1 -0
- package/dist/cli/agent-vm-cli-support.js +77 -0
- package/dist/cli/agent-vm-cli-support.js.map +1 -0
- package/dist/cli/agent-vm-entrypoint.d.ts +9 -0
- package/dist/cli/agent-vm-entrypoint.d.ts.map +1 -0
- package/dist/cli/agent-vm-entrypoint.js +59 -0
- package/dist/cli/agent-vm-entrypoint.js.map +1 -0
- package/dist/cli/auth-interactive-command.d.ts +27 -0
- package/dist/cli/auth-interactive-command.d.ts.map +1 -0
- package/dist/cli/auth-interactive-command.js +83 -0
- package/dist/cli/auth-interactive-command.js.map +1 -0
- package/dist/cli/backup-commands.d.ts +11 -0
- package/dist/cli/backup-commands.d.ts.map +1 -0
- package/dist/cli/backup-commands.js +46 -0
- package/dist/cli/backup-commands.js.map +1 -0
- package/dist/cli/build-command.d.ts +24 -0
- package/dist/cli/build-command.d.ts.map +1 -0
- package/dist/cli/build-command.js +132 -0
- package/dist/cli/build-command.js.map +1 -0
- package/dist/cli/cache-commands.d.ts +32 -0
- package/dist/cli/cache-commands.d.ts.map +1 -0
- package/dist/cli/cache-commands.js +106 -0
- package/dist/cli/cache-commands.js.map +1 -0
- package/dist/cli/commands/auth-interactive-definition.d.ts +15 -0
- package/dist/cli/commands/auth-interactive-definition.d.ts.map +1 -0
- package/dist/cli/commands/auth-interactive-definition.js +36 -0
- package/dist/cli/commands/auth-interactive-definition.js.map +1 -0
- package/dist/cli/commands/backup-definition.d.ts +63 -0
- package/dist/cli/commands/backup-definition.d.ts.map +1 -0
- package/dist/cli/commands/backup-definition.js +73 -0
- package/dist/cli/commands/backup-definition.js.map +1 -0
- package/dist/cli/commands/build-definition.d.ts +13 -0
- package/dist/cli/commands/build-definition.d.ts.map +1 -0
- package/dist/cli/commands/build-definition.js +27 -0
- package/dist/cli/commands/build-definition.js.map +1 -0
- package/dist/cli/commands/cache-definition.d.ts +41 -0
- package/dist/cli/commands/cache-definition.d.ts.map +1 -0
- package/dist/cli/commands/cache-definition.js +41 -0
- package/dist/cli/commands/cache-definition.js.map +1 -0
- package/dist/cli/commands/command-definition-support.d.ts +26 -0
- package/dist/cli/commands/command-definition-support.d.ts.map +1 -0
- package/dist/cli/commands/command-definition-support.js +85 -0
- package/dist/cli/commands/command-definition-support.js.map +1 -0
- package/dist/cli/commands/config-definition.d.ts +27 -0
- package/dist/cli/commands/config-definition.d.ts.map +1 -0
- package/dist/cli/commands/config-definition.js +60 -0
- package/dist/cli/commands/config-definition.js.map +1 -0
- package/dist/cli/commands/controller-definition.d.ts +225 -0
- package/dist/cli/commands/controller-definition.d.ts.map +1 -0
- package/dist/cli/commands/controller-definition.js +211 -0
- package/dist/cli/commands/controller-definition.js.map +1 -0
- package/dist/cli/commands/create-app.d.ts +541 -0
- package/dist/cli/commands/create-app.d.ts.map +1 -0
- package/dist/cli/commands/create-app.js +32 -0
- package/dist/cli/commands/create-app.js.map +1 -0
- package/dist/cli/commands/doctor-definition.d.ts +11 -0
- package/dist/cli/commands/doctor-definition.d.ts.map +1 -0
- package/dist/cli/commands/doctor-definition.js +23 -0
- package/dist/cli/commands/doctor-definition.js.map +1 -0
- package/dist/cli/commands/init-definition.d.ts +34 -0
- package/dist/cli/commands/init-definition.d.ts.map +1 -0
- package/dist/cli/commands/init-definition.js +134 -0
- package/dist/cli/commands/init-definition.js.map +1 -0
- package/dist/cli/commands/resources-definition.d.ts +55 -0
- package/dist/cli/commands/resources-definition.d.ts.map +1 -0
- package/dist/cli/commands/resources-definition.js +93 -0
- package/dist/cli/commands/resources-definition.js.map +1 -0
- package/dist/cli/commands/validate-definition.d.ts +11 -0
- package/dist/cli/commands/validate-definition.d.ts.map +1 -0
- package/dist/cli/commands/validate-definition.js +20 -0
- package/dist/cli/commands/validate-definition.js.map +1 -0
- package/dist/cli/config-commands.d.ts +10 -0
- package/dist/cli/config-commands.d.ts.map +1 -0
- package/dist/cli/config-commands.js +103 -0
- package/dist/cli/config-commands.js.map +1 -0
- package/dist/cli/controller-operation-commands.d.ts +12 -0
- package/dist/cli/controller-operation-commands.d.ts.map +1 -0
- package/dist/cli/controller-operation-commands.js +133 -0
- package/dist/cli/controller-operation-commands.js.map +1 -0
- package/dist/cli/format-zod-error.d.ts +3 -0
- package/dist/cli/format-zod-error.d.ts.map +1 -0
- package/dist/cli/format-zod-error.js +18 -0
- package/dist/cli/format-zod-error.js.map +1 -0
- package/dist/cli/init-command.d.ts +52 -0
- package/dist/cli/init-command.d.ts.map +1 -0
- package/dist/cli/init-command.js +645 -0
- package/dist/cli/init-command.js.map +1 -0
- package/dist/cli/keychain-credential.d.ts +19 -0
- package/dist/cli/keychain-credential.d.ts.map +1 -0
- package/dist/cli/keychain-credential.js +52 -0
- package/dist/cli/keychain-credential.js.map +1 -0
- package/dist/cli/lease-commands.d.ts +11 -0
- package/dist/cli/lease-commands.d.ts.map +1 -0
- package/dist/cli/lease-commands.js +22 -0
- package/dist/cli/lease-commands.js.map +1 -0
- package/dist/cli/openclaw-plugin-bundle.d.ts +10 -0
- package/dist/cli/openclaw-plugin-bundle.d.ts.map +1 -0
- package/dist/cli/openclaw-plugin-bundle.js +37 -0
- package/dist/cli/openclaw-plugin-bundle.js.map +1 -0
- package/dist/cli/resource-contract-templates.d.ts +8 -0
- package/dist/cli/resource-contract-templates.d.ts.map +1 -0
- package/dist/cli/resource-contract-templates.js +157 -0
- package/dist/cli/resource-contract-templates.js.map +1 -0
- package/dist/cli/resources-commands.d.ts +19 -0
- package/dist/cli/resources-commands.d.ts.map +1 -0
- package/dist/cli/resources-commands.js +158 -0
- package/dist/cli/resources-commands.js.map +1 -0
- package/dist/cli/run-task.d.ts +4 -0
- package/dist/cli/run-task.d.ts.map +1 -0
- package/dist/cli/run-task.js +17 -0
- package/dist/cli/run-task.js.map +1 -0
- package/dist/cli/ssh-commands.d.ts +20 -0
- package/dist/cli/ssh-commands.d.ts.map +1 -0
- package/dist/cli/ssh-commands.js +72 -0
- package/dist/cli/ssh-commands.js.map +1 -0
- package/dist/cli/vm-host-system-templates.d.ts +12 -0
- package/dist/cli/vm-host-system-templates.d.ts.map +1 -0
- package/dist/cli/vm-host-system-templates.js +186 -0
- package/dist/cli/vm-host-system-templates.js.map +1 -0
- package/dist/config/resource-contracts/index.d.ts +3 -0
- package/dist/config/resource-contracts/index.d.ts.map +1 -0
- package/dist/config/resource-contracts/index.js +2 -0
- package/dist/config/resource-contracts/index.js.map +1 -0
- package/dist/config/resource-contracts/repo-resource-contract-types.d.ts +110 -0
- package/dist/config/resource-contracts/repo-resource-contract-types.d.ts.map +1 -0
- package/dist/config/resource-contracts/repo-resource-contract-types.js +2 -0
- package/dist/config/resource-contracts/repo-resource-contract-types.js.map +1 -0
- package/dist/config/resource-contracts/resource-contract-schemas.d.ts +198 -0
- package/dist/config/resource-contracts/resource-contract-schemas.d.ts.map +1 -0
- package/dist/config/resource-contracts/resource-contract-schemas.js +163 -0
- package/dist/config/resource-contracts/resource-contract-schemas.js.map +1 -0
- package/dist/config/system-cache-identifier.d.ts +22 -0
- package/dist/config/system-cache-identifier.d.ts.map +1 -0
- package/dist/config/system-cache-identifier.js +49 -0
- package/dist/config/system-cache-identifier.js.map +1 -0
- package/dist/config/system-config.d.ts +111 -0
- package/dist/config/system-config.d.ts.map +1 -0
- package/dist/config/system-config.js +267 -0
- package/dist/config/system-config.js.map +1 -0
- package/dist/controller/active-task-registry.d.ts +32 -0
- package/dist/controller/active-task-registry.d.ts.map +1 -0
- package/dist/controller/active-task-registry.js +83 -0
- package/dist/controller/active-task-registry.js.map +1 -0
- 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 +62 -0
- package/dist/controller/controller-runtime-operations.d.ts.map +1 -0
- package/dist/controller/controller-runtime-operations.js +99 -0
- package/dist/controller/controller-runtime-operations.js.map +1 -0
- package/dist/controller/controller-runtime-support.d.ts +10 -0
- package/dist/controller/controller-runtime-support.d.ts.map +1 -0
- package/dist/controller/controller-runtime-support.js +36 -0
- package/dist/controller/controller-runtime-support.js.map +1 -0
- package/dist/controller/controller-runtime-types.d.ts +58 -0
- package/dist/controller/controller-runtime-types.d.ts.map +1 -0
- package/dist/controller/controller-runtime-types.js +2 -0
- package/dist/controller/controller-runtime-types.js.map +1 -0
- package/dist/controller/controller-runtime.d.ts +3 -0
- package/dist/controller/controller-runtime.d.ts.map +1 -0
- package/dist/controller/controller-runtime.js +326 -0
- package/dist/controller/controller-runtime.js.map +1 -0
- package/dist/controller/git-auth-support.d.ts +3 -0
- package/dist/controller/git-auth-support.d.ts.map +1 -0
- package/dist/controller/git-auth-support.js +11 -0
- package/dist/controller/git-auth-support.js.map +1 -0
- package/dist/controller/git-pull-default-operations.d.ts +34 -0
- package/dist/controller/git-pull-default-operations.d.ts.map +1 -0
- package/dist/controller/git-pull-default-operations.js +175 -0
- package/dist/controller/git-pull-default-operations.js.map +1 -0
- package/dist/controller/git-push-operations.d.ts +38 -0
- package/dist/controller/git-push-operations.d.ts.map +1 -0
- package/dist/controller/git-push-operations.js +247 -0
- package/dist/controller/git-push-operations.js.map +1 -0
- package/dist/controller/heartbeat-sender.d.ts +13 -0
- package/dist/controller/heartbeat-sender.d.ts.map +1 -0
- package/dist/controller/heartbeat-sender.js +94 -0
- package/dist/controller/heartbeat-sender.js.map +1 -0
- package/dist/controller/http/controller-client.d.ts +17 -0
- package/dist/controller/http/controller-client.d.ts.map +1 -0
- package/dist/controller/http/controller-client.js +76 -0
- package/dist/controller/http/controller-client.js.map +1 -0
- package/dist/controller/http/controller-http-route-support.d.ts +46 -0
- package/dist/controller/http/controller-http-route-support.d.ts.map +1 -0
- package/dist/controller/http/controller-http-route-support.js +25 -0
- package/dist/controller/http/controller-http-route-support.js.map +1 -0
- package/dist/controller/http/controller-http-routes.d.ts +22 -0
- package/dist/controller/http/controller-http-routes.d.ts.map +1 -0
- package/dist/controller/http/controller-http-routes.js +107 -0
- package/dist/controller/http/controller-http-routes.js.map +1 -0
- package/dist/controller/http/controller-http-server.d.ts +8 -0
- package/dist/controller/http/controller-http-server.d.ts.map +1 -0
- package/dist/controller/http/controller-http-server.js +21 -0
- package/dist/controller/http/controller-http-server.js.map +1 -0
- package/dist/controller/http/controller-request-schemas.d.ts +102 -0
- package/dist/controller/http/controller-request-schemas.d.ts.map +1 -0
- package/dist/controller/http/controller-request-schemas.js +66 -0
- package/dist/controller/http/controller-request-schemas.js.map +1 -0
- package/dist/controller/http/controller-zone-operation-routes.d.ts +4 -0
- package/dist/controller/http/controller-zone-operation-routes.d.ts.map +1 -0
- package/dist/controller/http/controller-zone-operation-routes.js +223 -0
- package/dist/controller/http/controller-zone-operation-routes.js.map +1 -0
- package/dist/controller/leases/idle-reaper.d.ts +12 -0
- package/dist/controller/leases/idle-reaper.d.ts.map +1 -0
- package/dist/controller/leases/idle-reaper.js +15 -0
- package/dist/controller/leases/idle-reaper.js.map +1 -0
- package/dist/controller/leases/lease-manager.d.ts +58 -0
- package/dist/controller/leases/lease-manager.d.ts.map +1 -0
- package/dist/controller/leases/lease-manager.js +81 -0
- package/dist/controller/leases/lease-manager.js.map +1 -0
- package/dist/controller/leases/tcp-pool.d.ts +11 -0
- package/dist/controller/leases/tcp-pool.d.ts.map +1 -0
- package/dist/controller/leases/tcp-pool.js +26 -0
- package/dist/controller/leases/tcp-pool.js.map +1 -0
- package/dist/controller/request-heartbeat-registry.d.ts +15 -0
- package/dist/controller/request-heartbeat-registry.d.ts.map +1 -0
- package/dist/controller/request-heartbeat-registry.js +54 -0
- package/dist/controller/request-heartbeat-registry.js.map +1 -0
- package/dist/controller/task-config-builder.d.ts +14 -0
- package/dist/controller/task-config-builder.d.ts.map +1 -0
- package/dist/controller/task-config-builder.js +14 -0
- package/dist/controller/task-config-builder.js.map +1 -0
- package/dist/controller/task-state-reader.d.ts +17 -0
- package/dist/controller/task-state-reader.d.ts.map +1 -0
- package/dist/controller/task-state-reader.js +87 -0
- package/dist/controller/task-state-reader.js.map +1 -0
- package/dist/controller/worker-task-runner.d.ts +67 -0
- package/dist/controller/worker-task-runner.d.ts.map +1 -0
- package/dist/controller/worker-task-runner.js +497 -0
- package/dist/controller/worker-task-runner.js.map +1 -0
- package/dist/gateway/credential-manager.d.ts +8 -0
- package/dist/gateway/credential-manager.d.ts.map +1 -0
- package/dist/gateway/credential-manager.js +65 -0
- package/dist/gateway/credential-manager.js.map +1 -0
- package/dist/gateway/gateway-image-builder.d.ts +14 -0
- package/dist/gateway/gateway-image-builder.d.ts.map +1 -0
- package/dist/gateway/gateway-image-builder.js +33 -0
- package/dist/gateway/gateway-image-builder.js.map +1 -0
- package/dist/gateway/gateway-lifecycle-loader.d.ts +3 -0
- package/dist/gateway/gateway-lifecycle-loader.d.ts.map +1 -0
- package/dist/gateway/gateway-lifecycle-loader.js +10 -0
- package/dist/gateway/gateway-lifecycle-loader.js.map +1 -0
- 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 +14 -0
- package/dist/gateway/gateway-zone-orchestrator.d.ts.map +1 -0
- package/dist/gateway/gateway-zone-orchestrator.js +161 -0
- package/dist/gateway/gateway-zone-orchestrator.js.map +1 -0
- package/dist/gateway/gateway-zone-support.d.ts +55 -0
- package/dist/gateway/gateway-zone-support.d.ts.map +1 -0
- package/dist/gateway/gateway-zone-support.js +42 -0
- package/dist/gateway/gateway-zone-support.js.map +1 -0
- package/dist/gateway-api-client/gateway-api-client.d.ts +34 -0
- package/dist/gateway-api-client/gateway-api-client.d.ts.map +1 -0
- package/dist/gateway-api-client/gateway-api-client.js +29 -0
- package/dist/gateway-api-client/gateway-api-client.js.map +1 -0
- package/dist/gateway-api-client/gateway-websocket-client.d.ts +45 -0
- package/dist/gateway-api-client/gateway-websocket-client.d.ts.map +1 -0
- package/dist/gateway-api-client/gateway-websocket-client.js +140 -0
- package/dist/gateway-api-client/gateway-websocket-client.js.map +1 -0
- package/dist/index.d.ts +17 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +17 -0
- package/dist/index.js.map +1 -0
- package/dist/operations/config-validation.d.ts +15 -0
- package/dist/operations/config-validation.d.ts.map +1 -0
- package/dist/operations/config-validation.js +126 -0
- package/dist/operations/config-validation.js.map +1 -0
- package/dist/operations/controller-status.d.ts +13 -0
- package/dist/operations/controller-status.d.ts.map +1 -0
- package/dist/operations/controller-status.js +13 -0
- package/dist/operations/controller-status.js.map +1 -0
- package/dist/operations/credentials-refresh.d.ts +10 -0
- package/dist/operations/credentials-refresh.d.ts.map +1 -0
- package/dist/operations/credentials-refresh.js +9 -0
- package/dist/operations/credentials-refresh.js.map +1 -0
- package/dist/operations/destroy-zone.d.ts +14 -0
- package/dist/operations/destroy-zone.d.ts.map +1 -0
- package/dist/operations/destroy-zone.js +19 -0
- package/dist/operations/destroy-zone.js.map +1 -0
- package/dist/operations/doctor.d.ts +23 -0
- package/dist/operations/doctor.d.ts.map +1 -0
- package/dist/operations/doctor.js +148 -0
- package/dist/operations/doctor.js.map +1 -0
- package/dist/operations/upgrade-zone.d.ts +12 -0
- package/dist/operations/upgrade-zone.d.ts.map +1 -0
- package/dist/operations/upgrade-zone.js +10 -0
- package/dist/operations/upgrade-zone.js.map +1 -0
- package/dist/operations/zone-logs.d.ts +9 -0
- package/dist/operations/zone-logs.d.ts.map +1 -0
- package/dist/operations/zone-logs.js +7 -0
- package/dist/operations/zone-logs.js.map +1 -0
- package/dist/resources/repo-resource-contract-loader.d.ts +12 -0
- package/dist/resources/repo-resource-contract-loader.d.ts.map +1 -0
- package/dist/resources/repo-resource-contract-loader.js +100 -0
- package/dist/resources/repo-resource-contract-loader.js.map +1 -0
- package/dist/resources/repo-resource-provider-runner.d.ts +32 -0
- package/dist/resources/repo-resource-provider-runner.d.ts.map +1 -0
- package/dist/resources/repo-resource-provider-runner.js +415 -0
- package/dist/resources/repo-resource-provider-runner.js.map +1 -0
- package/dist/resources/resource-compiler.d.ts +18 -0
- package/dist/resources/resource-compiler.d.ts.map +1 -0
- package/dist/resources/resource-compiler.js +51 -0
- package/dist/resources/resource-compiler.js.map +1 -0
- package/dist/resources/resource-resolver.d.ts +25 -0
- package/dist/resources/resource-resolver.d.ts.map +1 -0
- package/dist/resources/resource-resolver.js +90 -0
- package/dist/resources/resource-resolver.js.map +1 -0
- 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/shared/run-task.d.ts +3 -0
- package/dist/shared/run-task.d.ts.map +1 -0
- package/dist/shared/run-task.js +12 -0
- package/dist/shared/run-task.js.map +1 -0
- package/dist/tool-vm/tool-vm-lifecycle.d.ts +28 -0
- package/dist/tool-vm/tool-vm-lifecycle.d.ts.map +1 -0
- package/dist/tool-vm/tool-vm-lifecycle.js +60 -0
- package/dist/tool-vm/tool-vm-lifecycle.js.map +1 -0
- package/package.json +52 -0
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import fs from 'node:fs/promises';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import { fileURLToPath } from 'node:url';
|
|
4
|
+
function isRecord(value) {
|
|
5
|
+
return typeof value === 'object' && value !== null;
|
|
6
|
+
}
|
|
7
|
+
function readOptionalString(record, propertyName) {
|
|
8
|
+
const value = record[propertyName];
|
|
9
|
+
return typeof value === 'string' ? value : undefined;
|
|
10
|
+
}
|
|
11
|
+
function readStringDependencyMap(record) {
|
|
12
|
+
const dependencies = record.dependencies;
|
|
13
|
+
if (!isRecord(dependencies)) {
|
|
14
|
+
return undefined;
|
|
15
|
+
}
|
|
16
|
+
return Object.fromEntries(Object.entries(dependencies).filter((dependency) => {
|
|
17
|
+
const [, dependencyVersion] = dependency;
|
|
18
|
+
return typeof dependencyVersion === 'string';
|
|
19
|
+
}));
|
|
20
|
+
}
|
|
21
|
+
function parsePackageJson(rawContents, packageJsonPath) {
|
|
22
|
+
const parsed = JSON.parse(rawContents);
|
|
23
|
+
if (!isRecord(parsed)) {
|
|
24
|
+
throw new Error(`Invalid package.json at ${packageJsonPath}: expected object.`);
|
|
25
|
+
}
|
|
26
|
+
const name = readOptionalString(parsed, 'name');
|
|
27
|
+
const version = readOptionalString(parsed, 'version');
|
|
28
|
+
const dependencies = readStringDependencyMap(parsed);
|
|
29
|
+
return {
|
|
30
|
+
...(name ? { name } : {}),
|
|
31
|
+
...(version ? { version } : {}),
|
|
32
|
+
...(dependencies ? { dependencies } : {}),
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
export async function findPackageJsonPathFromStart(startPath) {
|
|
36
|
+
let searchDirectory = path.dirname(path.resolve(startPath));
|
|
37
|
+
for (;;) {
|
|
38
|
+
const candidatePath = path.join(searchDirectory, 'package.json');
|
|
39
|
+
try {
|
|
40
|
+
await fs.access(candidatePath);
|
|
41
|
+
return candidatePath;
|
|
42
|
+
}
|
|
43
|
+
catch (error) {
|
|
44
|
+
if (!(typeof error === 'object' &&
|
|
45
|
+
error !== null &&
|
|
46
|
+
'code' in error &&
|
|
47
|
+
error.code === 'ENOENT')) {
|
|
48
|
+
throw error;
|
|
49
|
+
}
|
|
50
|
+
const parentDirectory = path.dirname(searchDirectory);
|
|
51
|
+
if (parentDirectory === searchDirectory) {
|
|
52
|
+
throw new Error(`Could not find package.json above ${startPath}.`);
|
|
53
|
+
}
|
|
54
|
+
searchDirectory = parentDirectory;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
async function readPackageJson(packageJsonPath) {
|
|
59
|
+
return parsePackageJson(await fs.readFile(packageJsonPath, 'utf8'), packageJsonPath);
|
|
60
|
+
}
|
|
61
|
+
function requirePackageVersion(packageJson, packageJsonPath) {
|
|
62
|
+
if (!packageJson.version) {
|
|
63
|
+
throw new Error(`Missing version in ${packageJsonPath}.`);
|
|
64
|
+
}
|
|
65
|
+
return packageJson.version;
|
|
66
|
+
}
|
|
67
|
+
function formatGondolinDependencyVersion(dependencyVersion) {
|
|
68
|
+
const npmAliasMatch = /^npm:.+@([^@]+)$/u.exec(dependencyVersion);
|
|
69
|
+
return `@earendil-works/gondolin@${npmAliasMatch?.[1] ?? dependencyVersion}`;
|
|
70
|
+
}
|
|
71
|
+
export async function readRuntimePackageVersions(options) {
|
|
72
|
+
const agentVmPackageJson = await readPackageJson(options.agentVmPackageJsonPath);
|
|
73
|
+
const gondolinAdapterPackageJson = await readPackageJson(options.gondolinAdapterPackageJsonPath);
|
|
74
|
+
const gondolinPackage = gondolinAdapterPackageJson.dependencies?.['@earendil-works/gondolin'];
|
|
75
|
+
if (!gondolinPackage) {
|
|
76
|
+
throw new Error(`Missing @earendil-works/gondolin dependency in ${options.gondolinAdapterPackageJsonPath}.`);
|
|
77
|
+
}
|
|
78
|
+
return {
|
|
79
|
+
agentVm: requirePackageVersion(agentVmPackageJson, options.agentVmPackageJsonPath),
|
|
80
|
+
gondolinAdapter: requirePackageVersion(gondolinAdapterPackageJson, options.gondolinAdapterPackageJsonPath),
|
|
81
|
+
gondolinPackage: formatGondolinDependencyVersion(gondolinPackage),
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
export function formatRuntimeBuildVersionTag(versions) {
|
|
85
|
+
return [
|
|
86
|
+
`agent-vm@${versions.agentVm}`,
|
|
87
|
+
`gondolin-adapter@${versions.gondolinAdapter}`,
|
|
88
|
+
`gondolin@${versions.gondolinPackage}`,
|
|
89
|
+
].join('+');
|
|
90
|
+
}
|
|
91
|
+
export async function resolveRuntimeBuildVersionTag() {
|
|
92
|
+
const agentVmPackageJsonPath = await findPackageJsonPathFromStart(fileURLToPath(import.meta.url));
|
|
93
|
+
const gondolinAdapterModulePath = fileURLToPath(import.meta.resolve('@agent-vm/gondolin-adapter'));
|
|
94
|
+
const gondolinAdapterPackageJsonPath = await findPackageJsonPathFromStart(gondolinAdapterModulePath);
|
|
95
|
+
return formatRuntimeBuildVersionTag(await readRuntimePackageVersions({
|
|
96
|
+
agentVmPackageJsonPath,
|
|
97
|
+
gondolinAdapterPackageJsonPath,
|
|
98
|
+
}));
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=runtime-versions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime-versions.js","sourceRoot":"","sources":["../../src/build/runtime-versions.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export interface StaleImageEntry {
|
|
2
|
+
readonly absolutePath: string;
|
|
3
|
+
readonly family: 'gateway' | 'toolVm';
|
|
4
|
+
readonly fingerprint: string;
|
|
5
|
+
readonly profileName: string;
|
|
6
|
+
readonly sizeBytes: number;
|
|
7
|
+
}
|
|
8
|
+
export interface CurrentImageFingerprints {
|
|
9
|
+
readonly gateways: Record<string, string>;
|
|
10
|
+
readonly toolVms: Record<string, string>;
|
|
11
|
+
}
|
|
12
|
+
export declare function findStaleImageDirectories(options: {
|
|
13
|
+
readonly cacheDir: string;
|
|
14
|
+
readonly currentFingerprints: CurrentImageFingerprints;
|
|
15
|
+
}): Promise<readonly StaleImageEntry[]>;
|
|
16
|
+
export declare function deleteStaleImageDirectories(entries: readonly StaleImageEntry[]): Promise<void>;
|
|
17
|
+
//# sourceMappingURL=stale-image-cleaner.d.ts.map
|
|
@@ -0,0 +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,MAAM,EAAE,SAAS,GAAG,QAAQ,CAAC;IACtC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,wBAAwB;IACxC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACzC;AA8BD,wBAAsB,yBAAyB,CAAC,OAAO,EAAE;IACxD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,mBAAmB,EAAE,wBAAwB,CAAC;CACvD,GAAG,OAAO,CAAC,SAAS,eAAe,EAAE,CAAC,CAuCtC;AAED,wBAAsB,2BAA2B,CAChD,OAAO,EAAE,SAAS,eAAe,EAAE,GACjC,OAAO,CAAC,IAAI,CAAC,CAIf"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import fs from 'node:fs/promises';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
async function pathExists(filePath) {
|
|
4
|
+
try {
|
|
5
|
+
await fs.access(filePath);
|
|
6
|
+
return true;
|
|
7
|
+
}
|
|
8
|
+
catch {
|
|
9
|
+
return false;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
async function getDirectorySizeBytes(directoryPath) {
|
|
13
|
+
let totalSizeBytes = 0;
|
|
14
|
+
try {
|
|
15
|
+
for (const directoryEntry of await fs.readdir(directoryPath, { withFileTypes: true })) {
|
|
16
|
+
const absoluteEntryPath = path.join(directoryPath, directoryEntry.name);
|
|
17
|
+
if (directoryEntry.isDirectory()) {
|
|
18
|
+
totalSizeBytes += await getDirectorySizeBytes(absoluteEntryPath);
|
|
19
|
+
continue;
|
|
20
|
+
}
|
|
21
|
+
if (directoryEntry.isFile()) {
|
|
22
|
+
totalSizeBytes += (await fs.stat(absoluteEntryPath)).size;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
catch {
|
|
27
|
+
return totalSizeBytes;
|
|
28
|
+
}
|
|
29
|
+
return totalSizeBytes;
|
|
30
|
+
}
|
|
31
|
+
export async function findStaleImageDirectories(options) {
|
|
32
|
+
const staleEntries = [];
|
|
33
|
+
for (const [family, cacheDirectoryName, currentFingerprints] of [
|
|
34
|
+
['gateway', 'gateway-images', options.currentFingerprints.gateways],
|
|
35
|
+
['toolVm', 'tool-vm-images', options.currentFingerprints.toolVms],
|
|
36
|
+
]) {
|
|
37
|
+
const familyCacheDirectory = path.join(options.cacheDir, cacheDirectoryName);
|
|
38
|
+
if (!(await pathExists(familyCacheDirectory))) {
|
|
39
|
+
continue;
|
|
40
|
+
}
|
|
41
|
+
for (const profileDirectoryEntry of await fs.readdir(familyCacheDirectory, {
|
|
42
|
+
withFileTypes: true,
|
|
43
|
+
})) {
|
|
44
|
+
if (!profileDirectoryEntry.isDirectory()) {
|
|
45
|
+
continue;
|
|
46
|
+
}
|
|
47
|
+
const profileName = profileDirectoryEntry.name;
|
|
48
|
+
const currentFingerprint = currentFingerprints[profileName] ?? null;
|
|
49
|
+
const imageCacheDirectory = path.join(familyCacheDirectory, profileName);
|
|
50
|
+
for (const directoryEntry of await fs.readdir(imageCacheDirectory, { withFileTypes: true })) {
|
|
51
|
+
if (!directoryEntry.isDirectory() || directoryEntry.name === currentFingerprint) {
|
|
52
|
+
continue;
|
|
53
|
+
}
|
|
54
|
+
const absolutePath = path.join(imageCacheDirectory, directoryEntry.name);
|
|
55
|
+
staleEntries.push({
|
|
56
|
+
absolutePath,
|
|
57
|
+
family,
|
|
58
|
+
fingerprint: directoryEntry.name,
|
|
59
|
+
profileName,
|
|
60
|
+
sizeBytes: await getDirectorySizeBytes(absolutePath),
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
return staleEntries;
|
|
66
|
+
}
|
|
67
|
+
export async function deleteStaleImageDirectories(entries) {
|
|
68
|
+
await Promise.all(entries.map(async (entry) => await fs.rm(entry.absolutePath, { force: true, recursive: true })));
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=stale-image-cleaner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stale-image-cleaner.js","sourceRoot":"","sources":["../../src/build/stale-image-cleaner.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import type { SecretResolver } from '@agent-vm/gondolin-adapter';
|
|
2
|
+
import { createOpCliSecretResolver, resolveServiceAccountToken } from '@agent-vm/gondolin-adapter';
|
|
3
|
+
import { createAgeBackupEncryption } from '../backup/backup-encryption.js';
|
|
4
|
+
import { createZoneBackupManager } from '../backup/backup-manager.js';
|
|
5
|
+
import { type LoadedSystemConfig, type SystemConfig } from '../config/system-config.js';
|
|
6
|
+
import type { ControllerRuntimeDependencies } from '../controller/controller-runtime-types.js';
|
|
7
|
+
import { createControllerClient } from '../controller/http/controller-client.js';
|
|
8
|
+
import { startGatewayZone } from '../gateway/gateway-zone-orchestrator.js';
|
|
9
|
+
import { runConfigValidation } from '../operations/config-validation.js';
|
|
10
|
+
import { buildControllerStatus } from '../operations/controller-status.js';
|
|
11
|
+
import { runControllerDoctor } from '../operations/doctor.js';
|
|
12
|
+
import { runBuildCommand } from './build-command.js';
|
|
13
|
+
import { runCacheCommand } from './cache-commands.js';
|
|
14
|
+
import { resetWorkerInstructions } from './config-commands.js';
|
|
15
|
+
import { type ScaffoldAgentVmProjectOptions, type ScaffoldAgentVmProjectResult } from './init-command.js';
|
|
16
|
+
import { type InitRepoResourcesResult, type UpdateRepoResourcesResult, type ValidateRepoResourcesResult } from './resources-commands.js';
|
|
17
|
+
export interface CliDependencies {
|
|
18
|
+
readonly buildControllerStatus: typeof buildControllerStatus;
|
|
19
|
+
readonly createAgeBackupEncryption: typeof createAgeBackupEncryption;
|
|
20
|
+
readonly createControllerClient: typeof createControllerClient;
|
|
21
|
+
readonly createSecretResolver: typeof createOpCliSecretResolver;
|
|
22
|
+
readonly createZoneBackupManager: typeof createZoneBackupManager;
|
|
23
|
+
readonly getCurrentWorkingDirectory?: () => string;
|
|
24
|
+
readonly initRepoResources?: (options: {
|
|
25
|
+
readonly targetDir: string;
|
|
26
|
+
}) => Promise<InitRepoResourcesResult>;
|
|
27
|
+
readonly updateRepoResources?: (options: {
|
|
28
|
+
readonly targetDir: string;
|
|
29
|
+
}) => Promise<UpdateRepoResourcesResult>;
|
|
30
|
+
readonly validateRepoResources?: (options: {
|
|
31
|
+
readonly targetDir: string;
|
|
32
|
+
}) => Promise<ValidateRepoResourcesResult>;
|
|
33
|
+
readonly isGatewayImageCached?: (systemConfig: LoadedSystemConfig, zoneId: string) => Promise<boolean>;
|
|
34
|
+
readonly loadSystemConfig: (configPath: string) => Promise<LoadedSystemConfig>;
|
|
35
|
+
readonly runBuildCommand?: typeof runBuildCommand;
|
|
36
|
+
readonly runCacheCommand?: typeof runCacheCommand;
|
|
37
|
+
readonly runCommand?: (command: string, arguments_: readonly string[]) => Promise<{
|
|
38
|
+
readonly exitCode: number;
|
|
39
|
+
readonly stderr: string;
|
|
40
|
+
readonly stdout: string;
|
|
41
|
+
}>;
|
|
42
|
+
readonly runInteractiveProcess?: (command: string, arguments_: readonly string[]) => Promise<void>;
|
|
43
|
+
readonly resolveServiceAccountToken: typeof resolveServiceAccountToken;
|
|
44
|
+
readonly runControllerDoctor: typeof runControllerDoctor;
|
|
45
|
+
readonly runConfigValidation?: typeof runConfigValidation;
|
|
46
|
+
readonly promptAndStoreServiceAccountToken?: () => Promise<boolean>;
|
|
47
|
+
readonly resetWorkerInstructions?: typeof resetWorkerInstructions;
|
|
48
|
+
readonly scaffoldAgentVmProject?: (options: ScaffoldAgentVmProjectOptions) => Promise<ScaffoldAgentVmProjectResult>;
|
|
49
|
+
readonly startControllerRuntime: (options: {
|
|
50
|
+
readonly systemConfig: LoadedSystemConfig;
|
|
51
|
+
readonly zoneId: string;
|
|
52
|
+
}, runtimeDependencies?: ControllerRuntimeDependencies) => Promise<{
|
|
53
|
+
readonly controllerPort: number;
|
|
54
|
+
readonly gateway?: {
|
|
55
|
+
readonly ingress: {
|
|
56
|
+
readonly host: string;
|
|
57
|
+
readonly port: number;
|
|
58
|
+
};
|
|
59
|
+
readonly vm: {
|
|
60
|
+
readonly id: string;
|
|
61
|
+
};
|
|
62
|
+
};
|
|
63
|
+
}>;
|
|
64
|
+
readonly startGatewayZone: typeof startGatewayZone;
|
|
65
|
+
}
|
|
66
|
+
export interface CliIo {
|
|
67
|
+
readonly stderr: Pick<NodeJS.WriteStream, 'write'>;
|
|
68
|
+
readonly stdout: Pick<NodeJS.WriteStream, 'write'>;
|
|
69
|
+
}
|
|
70
|
+
export declare const defaultCliDependencies: CliDependencies;
|
|
71
|
+
export declare function writeJson(io: CliIo, value: unknown): void;
|
|
72
|
+
export declare function resolveConfigPath(argv: readonly string[]): string;
|
|
73
|
+
export declare function readZoneFlag(argv: readonly string[]): string | undefined;
|
|
74
|
+
export declare function resolveControllerBaseUrl(systemConfig: SystemConfig): string;
|
|
75
|
+
export declare function findZone(systemConfig: SystemConfig, zoneId: string): SystemConfig['zones'][number];
|
|
76
|
+
export declare function requireZone(systemConfig: SystemConfig, zoneFlag: string | undefined): SystemConfig['zones'][number];
|
|
77
|
+
export declare function createResolverFromSystemConfig(systemConfig: SystemConfig, dependencies: Pick<CliDependencies, 'createSecretResolver' | 'resolveServiceAccountToken'>): Promise<SecretResolver>;
|
|
78
|
+
//# sourceMappingURL=agent-vm-cli-support.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
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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"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { createOpCliSecretResolver, resolveServiceAccountToken } from '@agent-vm/gondolin-adapter';
|
|
2
|
+
import { createAgeBackupEncryption } from '../backup/backup-encryption.js';
|
|
3
|
+
import { createZoneBackupManager } from '../backup/backup-manager.js';
|
|
4
|
+
import { loadSystemConfig, } from '../config/system-config.js';
|
|
5
|
+
import { createSecretResolver as createControllerSecretResolver } from '../controller/controller-runtime-support.js';
|
|
6
|
+
import { startControllerRuntime } from '../controller/controller-runtime.js';
|
|
7
|
+
import { createControllerClient } from '../controller/http/controller-client.js';
|
|
8
|
+
import { startGatewayZone } from '../gateway/gateway-zone-orchestrator.js';
|
|
9
|
+
import { runConfigValidation } from '../operations/config-validation.js';
|
|
10
|
+
import { buildControllerStatus } from '../operations/controller-status.js';
|
|
11
|
+
import { runControllerDoctor } from '../operations/doctor.js';
|
|
12
|
+
import { runBuildCommand } from './build-command.js';
|
|
13
|
+
import { runCacheCommand } from './cache-commands.js';
|
|
14
|
+
import { resetWorkerInstructions } from './config-commands.js';
|
|
15
|
+
import { scaffoldAgentVmProject, } from './init-command.js';
|
|
16
|
+
import { initRepoResources, updateRepoResources, validateRepoResources, } from './resources-commands.js';
|
|
17
|
+
export const defaultCliDependencies = {
|
|
18
|
+
buildControllerStatus,
|
|
19
|
+
createAgeBackupEncryption,
|
|
20
|
+
createControllerClient,
|
|
21
|
+
createSecretResolver: createOpCliSecretResolver,
|
|
22
|
+
createZoneBackupManager,
|
|
23
|
+
getCurrentWorkingDirectory: () => process.cwd(),
|
|
24
|
+
loadSystemConfig,
|
|
25
|
+
runBuildCommand,
|
|
26
|
+
runCacheCommand,
|
|
27
|
+
resolveServiceAccountToken,
|
|
28
|
+
runControllerDoctor,
|
|
29
|
+
runConfigValidation,
|
|
30
|
+
resetWorkerInstructions,
|
|
31
|
+
scaffoldAgentVmProject,
|
|
32
|
+
initRepoResources,
|
|
33
|
+
updateRepoResources,
|
|
34
|
+
validateRepoResources,
|
|
35
|
+
startControllerRuntime: async (runtimeOptions, runtimeDependencies) => await startControllerRuntime(runtimeOptions, runtimeDependencies ?? {}),
|
|
36
|
+
startGatewayZone,
|
|
37
|
+
};
|
|
38
|
+
export function writeJson(io, value) {
|
|
39
|
+
io.stdout.write(`${JSON.stringify(value, null, 2)}\n`);
|
|
40
|
+
}
|
|
41
|
+
export function resolveConfigPath(argv) {
|
|
42
|
+
const configFlagIndex = argv.indexOf('--config');
|
|
43
|
+
if (configFlagIndex >= 0) {
|
|
44
|
+
return argv[configFlagIndex + 1] ?? 'config/system.json';
|
|
45
|
+
}
|
|
46
|
+
return 'config/system.json';
|
|
47
|
+
}
|
|
48
|
+
export function readZoneFlag(argv) {
|
|
49
|
+
const zoneFlagIndex = argv.indexOf('--zone');
|
|
50
|
+
if (zoneFlagIndex >= 0) {
|
|
51
|
+
return argv[zoneFlagIndex + 1];
|
|
52
|
+
}
|
|
53
|
+
return undefined;
|
|
54
|
+
}
|
|
55
|
+
export function resolveControllerBaseUrl(systemConfig) {
|
|
56
|
+
return `http://127.0.0.1:${systemConfig.host.controllerPort}`;
|
|
57
|
+
}
|
|
58
|
+
export function findZone(systemConfig, zoneId) {
|
|
59
|
+
const zone = systemConfig.zones.find((candidateZone) => candidateZone.id === zoneId);
|
|
60
|
+
if (!zone) {
|
|
61
|
+
throw new Error(`Unknown zone '${zoneId}'.`);
|
|
62
|
+
}
|
|
63
|
+
return zone;
|
|
64
|
+
}
|
|
65
|
+
export function requireZone(systemConfig, zoneFlag) {
|
|
66
|
+
if (zoneFlag) {
|
|
67
|
+
return findZone(systemConfig, zoneFlag);
|
|
68
|
+
}
|
|
69
|
+
const zoneList = systemConfig.zones
|
|
70
|
+
.map((zone) => ` --zone ${zone.id} (${zone.gateway.type})`)
|
|
71
|
+
.join('\n');
|
|
72
|
+
throw new Error(`--zone is required. Available zones:\n${zoneList}`);
|
|
73
|
+
}
|
|
74
|
+
export async function createResolverFromSystemConfig(systemConfig, dependencies) {
|
|
75
|
+
return await createControllerSecretResolver(systemConfig, dependencies.createSecretResolver, dependencies.resolveServiceAccountToken);
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=agent-vm-cli-support.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-vm-cli-support.js","sourceRoot":"","sources":["../../src/cli/agent-vm-cli-support.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
declare function loadOptionalLocalEnvironmentFile(environmentFilePath?: string): void;
|
|
3
|
+
import { type CliDependencies, type CliIo } from './agent-vm-cli-support.js';
|
|
4
|
+
export declare class ReportedCliError extends Error {
|
|
5
|
+
}
|
|
6
|
+
export declare function runAgentVmCli(argv: readonly string[], io: CliIo, dependencies?: CliDependencies): Promise<void>;
|
|
7
|
+
export { loadOptionalLocalEnvironmentFile };
|
|
8
|
+
export declare function handleCliMainError(error: unknown, stderr: Pick<NodeJS.WriteStream, 'write'>): void;
|
|
9
|
+
//# sourceMappingURL=agent-vm-entrypoint.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-vm-entrypoint.d.ts","sourceRoot":"","sources":["../../src/cli/agent-vm-entrypoint.ts"],"names":[],"mappings":";AACA,iBAAS,gCAAgC,CAAC,mBAAmB,GAAE,MAAqB,GAAG,IAAI,CAe1F;AAQD,OAAO,EAEN,KAAK,eAAe,EACpB,KAAK,KAAK,EACV,MAAM,2BAA2B,CAAC;AAGnC,qBAAa,gBAAiB,SAAQ,KAAK;CAAG;AAE9C,wBAAsB,aAAa,CAClC,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,EAAE,EAAE,KAAK,EACT,YAAY,GAAE,eAAwC,GACpD,OAAO,CAAC,IAAI,CAAC,CAaf;AAED,OAAO,EAAE,gCAAgC,EAAE,CAAC;AAE5C,wBAAgB,kBAAkB,CACjC,KAAK,EAAE,OAAO,EACd,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,GACvC,IAAI,CASN"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
function loadOptionalLocalEnvironmentFile(environmentFilePath = '.env.local') {
|
|
3
|
+
try {
|
|
4
|
+
process.loadEnvFile(environmentFilePath);
|
|
5
|
+
}
|
|
6
|
+
catch (error) {
|
|
7
|
+
if (typeof error === 'object' && error !== null && 'code' in error && error.code === 'ENOENT') {
|
|
8
|
+
return;
|
|
9
|
+
}
|
|
10
|
+
throw new Error(`Failed to load ${environmentFilePath}: ${error instanceof Error ? error.message : String(error)}`, {
|
|
11
|
+
cause: error,
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
loadOptionalLocalEnvironmentFile();
|
|
16
|
+
import { pathToFileURL } from 'node:url';
|
|
17
|
+
import { runSafely } from 'cmd-ts';
|
|
18
|
+
import { defaultCliDependencies, } from './agent-vm-cli-support.js';
|
|
19
|
+
import { createAgentVmApp } from './commands/create-app.js';
|
|
20
|
+
export class ReportedCliError extends Error {
|
|
21
|
+
}
|
|
22
|
+
export async function runAgentVmCli(argv, io, dependencies = defaultCliDependencies) {
|
|
23
|
+
const result = await runSafely(createAgentVmApp(io, dependencies), [...argv]);
|
|
24
|
+
if (result._tag === 'ok') {
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
const outputStream = result.error.config.into === 'stderr' ? io.stderr : io.stdout;
|
|
28
|
+
outputStream.write(result.error.config.message);
|
|
29
|
+
if (!result.error.config.message.endsWith('\n')) {
|
|
30
|
+
outputStream.write('\n');
|
|
31
|
+
}
|
|
32
|
+
if (result.error.config.exitCode !== 0) {
|
|
33
|
+
throw new ReportedCliError(result.error.config.message);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
export { loadOptionalLocalEnvironmentFile };
|
|
37
|
+
export function handleCliMainError(error, stderr) {
|
|
38
|
+
if (error instanceof ReportedCliError) {
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
if (error instanceof Error) {
|
|
42
|
+
stderr.write(`${error.message}\n`);
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
stderr.write(`${String(error)}\n`);
|
|
46
|
+
}
|
|
47
|
+
async function main() {
|
|
48
|
+
await runAgentVmCli(process.argv.slice(2), {
|
|
49
|
+
stderr: process.stderr,
|
|
50
|
+
stdout: process.stdout,
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
if (process.argv[1] && import.meta.url === pathToFileURL(process.argv[1]).href) {
|
|
54
|
+
void main().catch((error) => {
|
|
55
|
+
handleCliMainError(error, process.stderr);
|
|
56
|
+
process.exitCode = 1;
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=agent-vm-entrypoint.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-vm-entrypoint.js","sourceRoot":"","sources":["../../src/cli/agent-vm-entrypoint.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { GatewayAuthConfig } from '@agent-vm/gateway-interface';
|
|
2
|
+
import type { SystemConfig } from '../config/system-config.js';
|
|
3
|
+
import { type CliDependencies, type CliIo } from './agent-vm-cli-support.js';
|
|
4
|
+
import { type ZoneSshAccessResponse } from './ssh-commands.js';
|
|
5
|
+
export declare function listAuthProviders(options: {
|
|
6
|
+
readonly listProvidersCommand: string;
|
|
7
|
+
readonly runCommand?: (command: string, arguments_: readonly string[]) => Promise<{
|
|
8
|
+
readonly exitCode: number;
|
|
9
|
+
readonly stderr: string;
|
|
10
|
+
readonly stdout: string;
|
|
11
|
+
}>;
|
|
12
|
+
readonly sshAccess: ZoneSshAccessResponse;
|
|
13
|
+
}): Promise<readonly string[]>;
|
|
14
|
+
export declare function runAuthInteractiveCommand(options: {
|
|
15
|
+
readonly authConfig: GatewayAuthConfig | undefined;
|
|
16
|
+
readonly dependencies: Pick<CliDependencies, 'createControllerClient' | 'runCommand' | 'runInteractiveProcess'>;
|
|
17
|
+
readonly io: CliIo;
|
|
18
|
+
readonly provider: string;
|
|
19
|
+
readonly runCommand?: (command: string, arguments_: readonly string[]) => Promise<{
|
|
20
|
+
readonly exitCode: number;
|
|
21
|
+
readonly stderr: string;
|
|
22
|
+
readonly stdout: string;
|
|
23
|
+
}>;
|
|
24
|
+
readonly systemConfig: SystemConfig;
|
|
25
|
+
readonly zoneId: string;
|
|
26
|
+
}): Promise<void>;
|
|
27
|
+
//# sourceMappingURL=auth-interactive-command.d.ts.map
|
|
@@ -0,0 +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,6BAA6B,CAAC;AAGrE,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"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { execa } from 'execa';
|
|
2
|
+
import { resolveControllerBaseUrl, } from './agent-vm-cli-support.js';
|
|
3
|
+
import { zoneSshAccessResponseSchema } from './ssh-commands.js';
|
|
4
|
+
const openClawShellEnvFilePath = '/etc/profile.d/openclaw-env.sh';
|
|
5
|
+
function shellQuote(value) {
|
|
6
|
+
return `'${value.replace(/'/gu, `'\\''`)}'`;
|
|
7
|
+
}
|
|
8
|
+
function wrapWithOpenClawShellEnvironment(command) {
|
|
9
|
+
return `bash -lc ${shellQuote(`source ${openClawShellEnvFilePath} && ${command}`)}`;
|
|
10
|
+
}
|
|
11
|
+
export async function listAuthProviders(options) {
|
|
12
|
+
if (!options.sshAccess.host || !options.sshAccess.port) {
|
|
13
|
+
throw new Error('Cannot list auth providers: controller returned incomplete SSH access.');
|
|
14
|
+
}
|
|
15
|
+
const runCommand = options.runCommand ??
|
|
16
|
+
(async (command, arguments_) => {
|
|
17
|
+
const result = await execa(command, arguments_, { reject: false });
|
|
18
|
+
return {
|
|
19
|
+
exitCode: result.exitCode ?? 0,
|
|
20
|
+
stderr: result.stderr,
|
|
21
|
+
stdout: result.stdout,
|
|
22
|
+
};
|
|
23
|
+
});
|
|
24
|
+
const commandResult = await runCommand('ssh', [
|
|
25
|
+
'-o',
|
|
26
|
+
'StrictHostKeyChecking=no',
|
|
27
|
+
'-o',
|
|
28
|
+
'UserKnownHostsFile=/dev/null',
|
|
29
|
+
...(options.sshAccess.identityFile ? ['-i', options.sshAccess.identityFile] : []),
|
|
30
|
+
'-p',
|
|
31
|
+
String(options.sshAccess.port),
|
|
32
|
+
`${options.sshAccess.user ?? 'root'}@${options.sshAccess.host}`,
|
|
33
|
+
wrapWithOpenClawShellEnvironment(options.listProvidersCommand),
|
|
34
|
+
]);
|
|
35
|
+
if (commandResult.exitCode !== 0) {
|
|
36
|
+
throw new Error(`Failed to list auth providers: ${commandResult.stderr || `ssh exited with ${commandResult.exitCode}`}`);
|
|
37
|
+
}
|
|
38
|
+
return commandResult.stdout
|
|
39
|
+
.split('\n')
|
|
40
|
+
.map((line) => line.trim())
|
|
41
|
+
.filter((line) => line.length > 0);
|
|
42
|
+
}
|
|
43
|
+
export async function runAuthInteractiveCommand(options) {
|
|
44
|
+
if (!options.authConfig) {
|
|
45
|
+
throw new Error(`Zone '${options.zoneId}' does not support interactive auth.`);
|
|
46
|
+
}
|
|
47
|
+
const controllerClient = options.dependencies.createControllerClient({
|
|
48
|
+
baseUrl: resolveControllerBaseUrl(options.systemConfig),
|
|
49
|
+
});
|
|
50
|
+
const parsedSshResponse = zoneSshAccessResponseSchema.safeParse(await controllerClient.enableZoneSsh(options.zoneId));
|
|
51
|
+
if (!parsedSshResponse.success) {
|
|
52
|
+
throw new Error('Controller returned an invalid SSH response.');
|
|
53
|
+
}
|
|
54
|
+
const sshResponse = parsedSshResponse.data;
|
|
55
|
+
if (!sshResponse.host || !sshResponse.port) {
|
|
56
|
+
throw new Error(`Cannot auth: controller returned incomplete SSH access for zone '${options.zoneId}'.`);
|
|
57
|
+
}
|
|
58
|
+
const sshArguments = [
|
|
59
|
+
'-t',
|
|
60
|
+
'-o',
|
|
61
|
+
'StrictHostKeyChecking=no',
|
|
62
|
+
'-o',
|
|
63
|
+
'UserKnownHostsFile=/dev/null',
|
|
64
|
+
...(sshResponse.identityFile ? ['-i', sshResponse.identityFile] : []),
|
|
65
|
+
'-p',
|
|
66
|
+
String(sshResponse.port),
|
|
67
|
+
`${sshResponse.user ?? 'root'}@${sshResponse.host}`,
|
|
68
|
+
wrapWithOpenClawShellEnvironment(options.authConfig.buildLoginCommand(options.provider)),
|
|
69
|
+
];
|
|
70
|
+
const runInteractiveProcess = options.dependencies.runInteractiveProcess ??
|
|
71
|
+
(async (command, arguments_) => {
|
|
72
|
+
await execa(command, arguments_, {
|
|
73
|
+
stdio: 'inherit',
|
|
74
|
+
});
|
|
75
|
+
});
|
|
76
|
+
try {
|
|
77
|
+
await runInteractiveProcess('ssh', sshArguments);
|
|
78
|
+
}
|
|
79
|
+
catch (error) {
|
|
80
|
+
throw new Error(`Auth failed for ${options.provider} in zone '${options.zoneId}': ${error instanceof Error ? error.message : String(error)}`, { cause: error });
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=auth-interactive-command.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth-interactive-command.js","sourceRoot":"","sources":["../../src/cli/auth-interactive-command.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { SystemConfig } from '../config/system-config.js';
|
|
2
|
+
import { type CliDependencies, type CliIo } from './agent-vm-cli-support.js';
|
|
3
|
+
interface RunBackupCommandOptions {
|
|
4
|
+
readonly dependencies: CliDependencies;
|
|
5
|
+
readonly io: CliIo;
|
|
6
|
+
readonly restArguments: readonly string[];
|
|
7
|
+
readonly systemConfig: SystemConfig;
|
|
8
|
+
}
|
|
9
|
+
export declare function runBackupCommand(options: RunBackupCommandOptions): Promise<void>;
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=backup-commands.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"backup-commands.d.ts","sourceRoot":"","sources":["../../src/cli/backup-commands.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAEN,KAAK,eAAe,EACpB,KAAK,KAAK,EAIV,MAAM,2BAA2B,CAAC;AAEnC,UAAU,uBAAuB;IAChC,QAAQ,CAAC,YAAY,EAAE,eAAe,CAAC;IACvC,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IACnB,QAAQ,CAAC,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1C,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;CACpC;AAED,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC,CA0DtF"}
|