@shravansunder/agent-vm 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (245) hide show
  1. package/dist/backup/backup-archive-layout.d.ts +15 -0
  2. package/dist/backup/backup-archive-layout.d.ts.map +1 -0
  3. package/dist/backup/backup-archive-layout.js +34 -0
  4. package/dist/backup/backup-archive-layout.js.map +1 -0
  5. package/dist/backup/backup-create-operation.d.ts +9 -0
  6. package/dist/backup/backup-create-operation.d.ts.map +1 -0
  7. package/dist/backup/backup-create-operation.js +50 -0
  8. package/dist/backup/backup-create-operation.js.map +1 -0
  9. package/dist/backup/backup-encryption.d.ts +20 -0
  10. package/dist/backup/backup-encryption.d.ts.map +1 -0
  11. package/dist/backup/backup-encryption.js +71 -0
  12. package/dist/backup/backup-encryption.js.map +1 -0
  13. package/dist/backup/backup-manager.d.ts +42 -0
  14. package/dist/backup/backup-manager.d.ts.map +1 -0
  15. package/dist/backup/backup-manager.js +37 -0
  16. package/dist/backup/backup-manager.js.map +1 -0
  17. package/dist/backup/backup-restore-operation.d.ts +8 -0
  18. package/dist/backup/backup-restore-operation.d.ts.map +1 -0
  19. package/dist/backup/backup-restore-operation.js +53 -0
  20. package/dist/backup/backup-restore-operation.js.map +1 -0
  21. package/dist/build/docker-image-builder.d.ts +9 -0
  22. package/dist/build/docker-image-builder.d.ts.map +1 -0
  23. package/dist/build/docker-image-builder.js +24 -0
  24. package/dist/build/docker-image-builder.js.map +1 -0
  25. package/dist/build/gondolin-image-builder.d.ts +12 -0
  26. package/dist/build/gondolin-image-builder.d.ts.map +1 -0
  27. package/dist/build/gondolin-image-builder.js +23 -0
  28. package/dist/build/gondolin-image-builder.js.map +1 -0
  29. package/dist/build/stale-image-cleaner.d.ts +15 -0
  30. package/dist/build/stale-image-cleaner.d.ts.map +1 -0
  31. package/dist/build/stale-image-cleaner.js +46 -0
  32. package/dist/build/stale-image-cleaner.js.map +1 -0
  33. package/dist/cli/agent-vm-cli-support.d.ts +68 -0
  34. package/dist/cli/agent-vm-cli-support.d.ts.map +1 -0
  35. package/dist/cli/agent-vm-cli-support.js +72 -0
  36. package/dist/cli/agent-vm-cli-support.js.map +1 -0
  37. package/dist/cli/agent-vm-entrypoint.d.ts +9 -0
  38. package/dist/cli/agent-vm-entrypoint.d.ts.map +1 -0
  39. package/dist/cli/agent-vm-entrypoint.js +59 -0
  40. package/dist/cli/agent-vm-entrypoint.js.map +1 -0
  41. package/dist/cli/auth-interactive-command.d.ts +27 -0
  42. package/dist/cli/auth-interactive-command.d.ts.map +1 -0
  43. package/dist/cli/auth-interactive-command.js +83 -0
  44. package/dist/cli/auth-interactive-command.js.map +1 -0
  45. package/dist/cli/backup-commands.d.ts +11 -0
  46. package/dist/cli/backup-commands.d.ts.map +1 -0
  47. package/dist/cli/backup-commands.js +46 -0
  48. package/dist/cli/backup-commands.js.map +1 -0
  49. package/dist/cli/build-command.d.ts +22 -0
  50. package/dist/cli/build-command.d.ts.map +1 -0
  51. package/dist/cli/build-command.js +77 -0
  52. package/dist/cli/build-command.js.map +1 -0
  53. package/dist/cli/cache-commands.d.ts +29 -0
  54. package/dist/cli/cache-commands.d.ts.map +1 -0
  55. package/dist/cli/cache-commands.js +71 -0
  56. package/dist/cli/cache-commands.js.map +1 -0
  57. package/dist/cli/commands/auth-interactive-definition.d.ts +15 -0
  58. package/dist/cli/commands/auth-interactive-definition.d.ts.map +1 -0
  59. package/dist/cli/commands/auth-interactive-definition.js +36 -0
  60. package/dist/cli/commands/auth-interactive-definition.js.map +1 -0
  61. package/dist/cli/commands/backup-definition.d.ts +63 -0
  62. package/dist/cli/commands/backup-definition.d.ts.map +1 -0
  63. package/dist/cli/commands/backup-definition.js +73 -0
  64. package/dist/cli/commands/backup-definition.js.map +1 -0
  65. package/dist/cli/commands/build-definition.d.ts +13 -0
  66. package/dist/cli/commands/build-definition.d.ts.map +1 -0
  67. package/dist/cli/commands/build-definition.js +27 -0
  68. package/dist/cli/commands/build-definition.js.map +1 -0
  69. package/dist/cli/commands/cache-definition.d.ts +41 -0
  70. package/dist/cli/commands/cache-definition.d.ts.map +1 -0
  71. package/dist/cli/commands/cache-definition.js +41 -0
  72. package/dist/cli/commands/cache-definition.js.map +1 -0
  73. package/dist/cli/commands/command-definition-support.d.ts +25 -0
  74. package/dist/cli/commands/command-definition-support.d.ts.map +1 -0
  75. package/dist/cli/commands/command-definition-support.js +74 -0
  76. package/dist/cli/commands/command-definition-support.js.map +1 -0
  77. package/dist/cli/commands/controller-definition.d.ts +223 -0
  78. package/dist/cli/commands/controller-definition.d.ts.map +1 -0
  79. package/dist/cli/commands/controller-definition.js +200 -0
  80. package/dist/cli/commands/controller-definition.js.map +1 -0
  81. package/dist/cli/commands/create-app.d.ts +421 -0
  82. package/dist/cli/commands/create-app.d.ts.map +1 -0
  83. package/dist/cli/commands/create-app.js +26 -0
  84. package/dist/cli/commands/create-app.js.map +1 -0
  85. package/dist/cli/commands/doctor-definition.d.ts +11 -0
  86. package/dist/cli/commands/doctor-definition.d.ts.map +1 -0
  87. package/dist/cli/commands/doctor-definition.js +23 -0
  88. package/dist/cli/commands/doctor-definition.js.map +1 -0
  89. package/dist/cli/commands/init-definition.d.ts +13 -0
  90. package/dist/cli/commands/init-definition.d.ts.map +1 -0
  91. package/dist/cli/commands/init-definition.js +32 -0
  92. package/dist/cli/commands/init-definition.js.map +1 -0
  93. package/dist/cli/controller-operation-commands.d.ts +12 -0
  94. package/dist/cli/controller-operation-commands.d.ts.map +1 -0
  95. package/dist/cli/controller-operation-commands.js +74 -0
  96. package/dist/cli/controller-operation-commands.js.map +1 -0
  97. package/dist/cli/format-zod-error.d.ts +3 -0
  98. package/dist/cli/format-zod-error.d.ts.map +1 -0
  99. package/dist/cli/format-zod-error.js +18 -0
  100. package/dist/cli/format-zod-error.js.map +1 -0
  101. package/dist/cli/init-command.d.ts +29 -0
  102. package/dist/cli/init-command.d.ts.map +1 -0
  103. package/dist/cli/init-command.js +407 -0
  104. package/dist/cli/init-command.js.map +1 -0
  105. package/dist/cli/keychain-credential.d.ts +19 -0
  106. package/dist/cli/keychain-credential.d.ts.map +1 -0
  107. package/dist/cli/keychain-credential.js +52 -0
  108. package/dist/cli/keychain-credential.js.map +1 -0
  109. package/dist/cli/lease-commands.d.ts +11 -0
  110. package/dist/cli/lease-commands.d.ts.map +1 -0
  111. package/dist/cli/lease-commands.js +22 -0
  112. package/dist/cli/lease-commands.js.map +1 -0
  113. package/dist/cli/openclaw-plugin-bundle.d.ts +3 -0
  114. package/dist/cli/openclaw-plugin-bundle.d.ts.map +1 -0
  115. package/dist/cli/openclaw-plugin-bundle.js +30 -0
  116. package/dist/cli/openclaw-plugin-bundle.js.map +1 -0
  117. package/dist/cli/run-task.d.ts +4 -0
  118. package/dist/cli/run-task.d.ts.map +1 -0
  119. package/dist/cli/run-task.js +17 -0
  120. package/dist/cli/run-task.js.map +1 -0
  121. package/dist/cli/ssh-commands.d.ts +20 -0
  122. package/dist/cli/ssh-commands.d.ts.map +1 -0
  123. package/dist/cli/ssh-commands.js +72 -0
  124. package/dist/cli/ssh-commands.js.map +1 -0
  125. package/dist/config/system-config.d.ts +72 -0
  126. package/dist/config/system-config.d.ts.map +1 -0
  127. package/dist/config/system-config.js +121 -0
  128. package/dist/config/system-config.js.map +1 -0
  129. package/dist/controller/controller-runtime-operations.d.ts +62 -0
  130. package/dist/controller/controller-runtime-operations.d.ts.map +1 -0
  131. package/dist/controller/controller-runtime-operations.js +111 -0
  132. package/dist/controller/controller-runtime-operations.js.map +1 -0
  133. package/dist/controller/controller-runtime-support.d.ts +8 -0
  134. package/dist/controller/controller-runtime-support.d.ts.map +1 -0
  135. package/dist/controller/controller-runtime-support.js +15 -0
  136. package/dist/controller/controller-runtime-support.js.map +1 -0
  137. package/dist/controller/controller-runtime-types.d.ts +46 -0
  138. package/dist/controller/controller-runtime-types.d.ts.map +1 -0
  139. package/dist/controller/controller-runtime-types.js +2 -0
  140. package/dist/controller/controller-runtime-types.js.map +1 -0
  141. package/dist/controller/controller-runtime.d.ts +3 -0
  142. package/dist/controller/controller-runtime.d.ts.map +1 -0
  143. package/dist/controller/controller-runtime.js +135 -0
  144. package/dist/controller/controller-runtime.js.map +1 -0
  145. package/dist/controller/http/controller-client.d.ts +17 -0
  146. package/dist/controller/http/controller-client.d.ts.map +1 -0
  147. package/dist/controller/http/controller-client.js +76 -0
  148. package/dist/controller/http/controller-client.js.map +1 -0
  149. package/dist/controller/http/controller-http-route-support.d.ts +26 -0
  150. package/dist/controller/http/controller-http-route-support.d.ts.map +1 -0
  151. package/dist/controller/http/controller-http-route-support.js +21 -0
  152. package/dist/controller/http/controller-http-route-support.js.map +1 -0
  153. package/dist/controller/http/controller-http-routes.d.ts +20 -0
  154. package/dist/controller/http/controller-http-routes.d.ts.map +1 -0
  155. package/dist/controller/http/controller-http-routes.js +83 -0
  156. package/dist/controller/http/controller-http-routes.js.map +1 -0
  157. package/dist/controller/http/controller-http-server.d.ts +8 -0
  158. package/dist/controller/http/controller-http-server.d.ts.map +1 -0
  159. package/dist/controller/http/controller-http-server.js +21 -0
  160. package/dist/controller/http/controller-http-server.js.map +1 -0
  161. package/dist/controller/http/controller-request-schemas.d.ts +15 -0
  162. package/dist/controller/http/controller-request-schemas.d.ts.map +1 -0
  163. package/dist/controller/http/controller-request-schemas.js +15 -0
  164. package/dist/controller/http/controller-request-schemas.js.map +1 -0
  165. package/dist/controller/http/controller-zone-operation-routes.d.ts +4 -0
  166. package/dist/controller/http/controller-zone-operation-routes.d.ts.map +1 -0
  167. package/dist/controller/http/controller-zone-operation-routes.js +54 -0
  168. package/dist/controller/http/controller-zone-operation-routes.js.map +1 -0
  169. package/dist/controller/leases/idle-reaper.d.ts +12 -0
  170. package/dist/controller/leases/idle-reaper.d.ts.map +1 -0
  171. package/dist/controller/leases/idle-reaper.js +15 -0
  172. package/dist/controller/leases/idle-reaper.js.map +1 -0
  173. package/dist/controller/leases/lease-manager.d.ts +57 -0
  174. package/dist/controller/leases/lease-manager.d.ts.map +1 -0
  175. package/dist/controller/leases/lease-manager.js +83 -0
  176. package/dist/controller/leases/lease-manager.js.map +1 -0
  177. package/dist/controller/leases/tcp-pool.d.ts +11 -0
  178. package/dist/controller/leases/tcp-pool.d.ts.map +1 -0
  179. package/dist/controller/leases/tcp-pool.js +26 -0
  180. package/dist/controller/leases/tcp-pool.js.map +1 -0
  181. package/dist/gateway/credential-manager.d.ts +8 -0
  182. package/dist/gateway/credential-manager.d.ts.map +1 -0
  183. package/dist/gateway/credential-manager.js +46 -0
  184. package/dist/gateway/credential-manager.js.map +1 -0
  185. package/dist/gateway/gateway-image-builder.d.ts +13 -0
  186. package/dist/gateway/gateway-image-builder.d.ts.map +1 -0
  187. package/dist/gateway/gateway-image-builder.js +19 -0
  188. package/dist/gateway/gateway-image-builder.js.map +1 -0
  189. package/dist/gateway/gateway-lifecycle-loader.d.ts +3 -0
  190. package/dist/gateway/gateway-lifecycle-loader.d.ts.map +1 -0
  191. package/dist/gateway/gateway-lifecycle-loader.js +10 -0
  192. package/dist/gateway/gateway-lifecycle-loader.js.map +1 -0
  193. package/dist/gateway/gateway-zone-orchestrator.d.ts +10 -0
  194. package/dist/gateway/gateway-zone-orchestrator.d.ts.map +1 -0
  195. package/dist/gateway/gateway-zone-orchestrator.js +92 -0
  196. package/dist/gateway/gateway-zone-orchestrator.js.map +1 -0
  197. package/dist/gateway/gateway-zone-support.d.ts +49 -0
  198. package/dist/gateway/gateway-zone-support.d.ts.map +1 -0
  199. package/dist/gateway/gateway-zone-support.js +8 -0
  200. package/dist/gateway/gateway-zone-support.js.map +1 -0
  201. package/dist/gateway-api-client/gateway-api-client.d.ts +34 -0
  202. package/dist/gateway-api-client/gateway-api-client.d.ts.map +1 -0
  203. package/dist/gateway-api-client/gateway-api-client.js +29 -0
  204. package/dist/gateway-api-client/gateway-api-client.js.map +1 -0
  205. package/dist/gateway-api-client/gateway-websocket-client.d.ts +45 -0
  206. package/dist/gateway-api-client/gateway-websocket-client.d.ts.map +1 -0
  207. package/dist/gateway-api-client/gateway-websocket-client.js +140 -0
  208. package/dist/gateway-api-client/gateway-websocket-client.js.map +1 -0
  209. package/dist/index.d.ts +15 -0
  210. package/dist/index.d.ts.map +1 -0
  211. package/dist/index.js +15 -0
  212. package/dist/index.js.map +1 -0
  213. package/dist/operations/controller-status.d.ts +13 -0
  214. package/dist/operations/controller-status.d.ts.map +1 -0
  215. package/dist/operations/controller-status.js +13 -0
  216. package/dist/operations/controller-status.js.map +1 -0
  217. package/dist/operations/credentials-refresh.d.ts +10 -0
  218. package/dist/operations/credentials-refresh.d.ts.map +1 -0
  219. package/dist/operations/credentials-refresh.js +9 -0
  220. package/dist/operations/credentials-refresh.js.map +1 -0
  221. package/dist/operations/destroy-zone.d.ts +14 -0
  222. package/dist/operations/destroy-zone.d.ts.map +1 -0
  223. package/dist/operations/destroy-zone.js +19 -0
  224. package/dist/operations/destroy-zone.js.map +1 -0
  225. package/dist/operations/doctor.d.ts +22 -0
  226. package/dist/operations/doctor.d.ts.map +1 -0
  227. package/dist/operations/doctor.js +83 -0
  228. package/dist/operations/doctor.js.map +1 -0
  229. package/dist/operations/upgrade-zone.d.ts +13 -0
  230. package/dist/operations/upgrade-zone.d.ts.map +1 -0
  231. package/dist/operations/upgrade-zone.js +11 -0
  232. package/dist/operations/upgrade-zone.js.map +1 -0
  233. package/dist/operations/zone-logs.d.ts +9 -0
  234. package/dist/operations/zone-logs.d.ts.map +1 -0
  235. package/dist/operations/zone-logs.js +7 -0
  236. package/dist/operations/zone-logs.js.map +1 -0
  237. package/dist/shared/run-task.d.ts +3 -0
  238. package/dist/shared/run-task.d.ts.map +1 -0
  239. package/dist/shared/run-task.js +12 -0
  240. package/dist/shared/run-task.js.map +1 -0
  241. package/dist/tool-vm/tool-vm-lifecycle.d.ts +27 -0
  242. package/dist/tool-vm/tool-vm-lifecycle.d.ts.map +1 -0
  243. package/dist/tool-vm/tool-vm-lifecycle.js +54 -0
  244. package/dist/tool-vm/tool-vm-lifecycle.js.map +1 -0
  245. package/package.json +41 -0
@@ -0,0 +1,18 @@
1
+ function formatIssuePath(pathSegments) {
2
+ if (pathSegments.length === 0) {
3
+ return '(root)';
4
+ }
5
+ return pathSegments.reduce((currentPath, pathSegment) => {
6
+ if (typeof pathSegment === 'number') {
7
+ return `${currentPath}[${pathSegment}]`;
8
+ }
9
+ return currentPath.length > 0 ? `${currentPath}.${String(pathSegment)}` : String(pathSegment);
10
+ }, '');
11
+ }
12
+ function formatIssue(issue) {
13
+ return ` ${formatIssuePath(issue.path)}: ${issue.message}`;
14
+ }
15
+ export function formatZodError(title, error) {
16
+ return [title, ...error.issues.map(formatIssue)].join('\n');
17
+ }
18
+ //# sourceMappingURL=format-zod-error.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format-zod-error.js","sourceRoot":"","sources":["../../src/cli/format-zod-error.ts"],"names":[],"mappings":"AAEA,SAAS,eAAe,CAAC,YAAoC;IAC5D,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/B,OAAO,QAAQ,CAAC;IACjB,CAAC;IAED,OAAO,YAAY,CAAC,MAAM,CAAC,CAAC,WAAmB,EAAE,WAAW,EAAE,EAAE;QAC/D,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE,CAAC;YACrC,OAAO,GAAG,WAAW,IAAI,WAAW,GAAG,CAAC;QACzC,CAAC;QAED,OAAO,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,WAAW,IAAI,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAC/F,CAAC,EAAE,EAAE,CAAC,CAAC;AACR,CAAC;AAED,SAAS,WAAW,CAAC,KAAe;IACnC,OAAO,KAAK,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC;AAC7D,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,KAAa,EAAE,KAAe;IAC5D,OAAO,CAAC,KAAK,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC7D,CAAC"}
@@ -0,0 +1,29 @@
1
+ import readline from 'node:readline/promises';
2
+ export interface ScaffoldAgentVmProjectOptions {
3
+ readonly gatewayType: GatewayType;
4
+ readonly targetDir: string;
5
+ readonly zoneId: string;
6
+ }
7
+ export interface ScaffoldAgentVmProjectResult {
8
+ readonly created: readonly string[];
9
+ readonly keychainStored: boolean;
10
+ readonly skipped: readonly string[];
11
+ }
12
+ interface ScaffoldAgentVmProjectDependencies {
13
+ readonly copyBundledOpenClawPlugin?: (targetDir: string) => Promise<'created' | 'skipped'>;
14
+ readonly generateAgeIdentityKey?: () => string | undefined;
15
+ }
16
+ export interface PromptAndStoreTokenDependencies {
17
+ readonly hasKeychainToken?: () => boolean;
18
+ readonly storeKeychainToken?: (token: string) => void;
19
+ readonly createReadlineInterface?: () => readline.Interface;
20
+ }
21
+ export type GatewayType = 'coding' | 'openclaw';
22
+ export declare function scaffoldAgentVmProject(options: ScaffoldAgentVmProjectOptions, dependencies?: ScaffoldAgentVmProjectDependencies): Promise<ScaffoldAgentVmProjectResult>;
23
+ /**
24
+ * Interactively prompt for the 1Password service account token and store it
25
+ * in macOS Keychain. Skips if stdin is not a TTY or if a token already exists.
26
+ */
27
+ export declare function promptAndStoreServiceAccountToken(dependencies?: PromptAndStoreTokenDependencies): Promise<boolean>;
28
+ export {};
29
+ //# sourceMappingURL=init-command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init-command.d.ts","sourceRoot":"","sources":["../../src/cli/init-command.ts"],"names":[],"mappings":"AAGA,OAAO,QAAQ,MAAM,wBAAwB,CAAC;AAY9C,MAAM,WAAW,6BAA6B;IAC7C,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAClC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,4BAA4B;IAC5C,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;IACjC,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;CACpC;AAED,UAAU,kCAAkC;IAC3C,QAAQ,CAAC,yBAAyB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC,CAAC;IAC3F,QAAQ,CAAC,sBAAsB,CAAC,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;CAC3D;AAED,MAAM,WAAW,+BAA+B;IAC/C,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,OAAO,CAAC;IAC1C,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACtD,QAAQ,CAAC,uBAAuB,CAAC,EAAE,MAAM,QAAQ,CAAC,SAAS,CAAC;CAC5D;AAED,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,UAAU,CAAC;AAoUhD,wBAAgB,sBAAsB,CACrC,OAAO,EAAE,6BAA6B,EACtC,YAAY,GAAE,kCAAuC,GACnD,OAAO,CAAC,4BAA4B,CAAC,CAEvC;AAiHD;;;GAGG;AACH,wBAAsB,iCAAiC,CACtD,YAAY,GAAE,+BAAoC,GAChD,OAAO,CAAC,OAAO,CAAC,CA0ClB"}
@@ -0,0 +1,407 @@
1
+ import { execFileSync } from 'node:child_process';
2
+ import fs from 'node:fs/promises';
3
+ import path from 'node:path';
4
+ import readline from 'node:readline/promises';
5
+ import { getKeychainTokenSource, hasServiceAccountToken, storeServiceAccountToken, } from './keychain-credential.js';
6
+ import { openClawPluginVendorDirectory, syncBundledOpenClawPluginBundle, } from './openclaw-plugin-bundle.js';
7
+ const defaultGatewayIngressPort = 18791;
8
+ const defaultOpenClawExtensionsPath = '/home/openclaw/.openclaw/extensions';
9
+ function resolveGatewayConfigFileName(gatewayType) {
10
+ return gatewayType === 'coding' ? 'coding.json' : 'openclaw.json';
11
+ }
12
+ const defaultSystemConfig = (zoneId, gatewayType) => ({
13
+ host: {
14
+ controllerPort: 18800,
15
+ secretsProvider: {
16
+ type: '1password',
17
+ tokenSource: getKeychainTokenSource(),
18
+ },
19
+ },
20
+ cacheDir: './cache',
21
+ images: {
22
+ gateway: {
23
+ buildConfig: './images/gateway/build-config.json',
24
+ dockerfile: './images/gateway/Dockerfile',
25
+ },
26
+ tool: {
27
+ buildConfig: './images/tool/build-config.json',
28
+ dockerfile: './images/tool/Dockerfile',
29
+ },
30
+ },
31
+ zones: [
32
+ {
33
+ id: zoneId,
34
+ gateway: {
35
+ type: gatewayType,
36
+ memory: '2G',
37
+ cpus: 2,
38
+ port: defaultGatewayIngressPort,
39
+ gatewayConfig: `./config/${zoneId}/${resolveGatewayConfigFileName(gatewayType)}`,
40
+ stateDir: `./state/${zoneId}`,
41
+ workspaceDir: `./workspaces/${zoneId}`,
42
+ },
43
+ secrets: defaultSecretsForGatewayType(zoneId, gatewayType),
44
+ allowedHosts: defaultAllowedHostsForGatewayType(gatewayType),
45
+ websocketBypass: defaultWebsocketBypassForGatewayType(gatewayType),
46
+ toolProfile: 'standard',
47
+ },
48
+ ],
49
+ toolProfiles: {
50
+ standard: {
51
+ memory: '1G',
52
+ cpus: 1,
53
+ workspaceRoot: './workspaces/tools',
54
+ },
55
+ },
56
+ tcpPool: {
57
+ basePort: 19000,
58
+ size: 5,
59
+ },
60
+ });
61
+ function defaultSecretsForGatewayType(zoneId, gatewayType) {
62
+ if (gatewayType === 'coding') {
63
+ return {
64
+ ANTHROPIC_API_KEY: {
65
+ ref: `op://agent-vm/${zoneId}-anthropic/credential`,
66
+ source: '1password',
67
+ hosts: ['api.anthropic.com'],
68
+ injection: 'http-mediation',
69
+ },
70
+ OPENAI_API_KEY: {
71
+ ref: `op://agent-vm/${zoneId}-openai/credential`,
72
+ source: '1password',
73
+ hosts: ['api.openai.com'],
74
+ injection: 'http-mediation',
75
+ },
76
+ };
77
+ }
78
+ return {
79
+ DISCORD_BOT_TOKEN: {
80
+ ref: `op://agent-vm/${zoneId}-discord/bot-token`,
81
+ source: '1password',
82
+ injection: 'env',
83
+ },
84
+ PERPLEXITY_API_KEY: {
85
+ ref: `op://agent-vm/${zoneId}-perplexity/credential`,
86
+ source: '1password',
87
+ hosts: ['api.perplexity.ai'],
88
+ injection: 'http-mediation',
89
+ },
90
+ OPENCLAW_GATEWAY_TOKEN: {
91
+ ref: `op://agent-vm/${zoneId}-gateway-auth/password`,
92
+ source: '1password',
93
+ injection: 'env',
94
+ },
95
+ };
96
+ }
97
+ function defaultAllowedHostsForGatewayType(gatewayType) {
98
+ if (gatewayType === 'coding') {
99
+ return [
100
+ 'api.anthropic.com',
101
+ 'api.openai.com',
102
+ 'auth.openai.com',
103
+ 'api.github.com',
104
+ 'registry.npmjs.org',
105
+ ];
106
+ }
107
+ return [
108
+ 'api.openai.com',
109
+ 'auth.openai.com',
110
+ 'api.perplexity.ai',
111
+ 'discord.com',
112
+ 'cdn.discordapp.com',
113
+ 'api.github.com',
114
+ 'registry.npmjs.org',
115
+ ];
116
+ }
117
+ function defaultWebsocketBypassForGatewayType(gatewayType) {
118
+ if (gatewayType === 'coding') {
119
+ return [];
120
+ }
121
+ return [
122
+ 'gateway.discord.gg:443',
123
+ 'web.whatsapp.com:443',
124
+ 'g.whatsapp.net:443',
125
+ 'mmg.whatsapp.net:443',
126
+ ];
127
+ }
128
+ function defaultEnvTemplateForGatewayType(_gatewayType) {
129
+ return `# agent-vm environment configuration
130
+ # 1Password token is stored in macOS Keychain by agent-vm init.
131
+ # Only set this for CI or non-macOS environments:
132
+ # OP_SERVICE_ACCOUNT_TOKEN=
133
+ `;
134
+ }
135
+ const defaultGatewayDockerfile = `FROM node:24-slim
136
+
137
+ ENV PNPM_HOME=/pnpm
138
+ ENV PATH=\${PNPM_HOME}:\${PATH}
139
+
140
+ RUN apt-get update && \\
141
+ apt-get install -y --no-install-recommends \\
142
+ openssh-server \\
143
+ ca-certificates \\
144
+ git \\
145
+ curl \\
146
+ python3 && \\
147
+ rm -rf /var/lib/apt/lists/* && \\
148
+ update-ca-certificates && \\
149
+ corepack enable && \\
150
+ pnpm add -g openclaw@2026.4.2 && \\
151
+ OPENCLAW_PACKAGE_ROOT="$(pnpm root -g)/openclaw" && \\
152
+ (cd "$OPENCLAW_PACKAGE_ROOT" && node scripts/postinstall-bundled-plugins.mjs) && \\
153
+ mkdir -p /opt/openclaw-sdk && \\
154
+ ln -sf "$OPENCLAW_PACKAGE_ROOT/dist/plugin-sdk/sandbox.js" /opt/openclaw-sdk/sandbox.js && \\
155
+ printf '#!/bin/sh\\nexec /pnpm/openclaw "$@"\\n' > /usr/local/bin/openclaw && \\
156
+ chmod 755 /usr/local/bin/openclaw && \\
157
+ useradd -m -s /bin/bash openclaw && \\
158
+ mkdir -p ${defaultOpenClawExtensionsPath} /home/openclaw/workspace /run/sshd /root && \\
159
+ chown -R openclaw:openclaw /home/openclaw && \\
160
+ ln -sf /proc/self/fd /dev/fd 2>/dev/null || true
161
+
162
+ COPY vendor/gondolin ${defaultOpenClawExtensionsPath}/gondolin
163
+ `;
164
+ const defaultCodingGatewayDockerfile = `FROM node:24-slim
165
+
166
+ ENV PNPM_HOME=/pnpm
167
+ ENV PATH=\${PNPM_HOME}:\${PATH}
168
+
169
+ RUN apt-get update && \\
170
+ apt-get install -y --no-install-recommends \\
171
+ openssh-server \\
172
+ ca-certificates \\
173
+ git \\
174
+ curl \\
175
+ python3 && \\
176
+ rm -rf /var/lib/apt/lists/* && \\
177
+ update-ca-certificates && \\
178
+ corepack enable && \\
179
+ pnpm add -g @openai/codex-cli && \\
180
+ printf '#!/bin/sh\\nexec /pnpm/codex "$@"\\n' > /usr/local/bin/codex && \\
181
+ chmod 755 /usr/local/bin/codex && \\
182
+ useradd -m -s /bin/bash coder && \\
183
+ mkdir -p /workspace /run/sshd /state && \\
184
+ chown -R coder:coder /workspace /state && \\
185
+ ln -sf /proc/self/fd /dev/fd 2>/dev/null || true
186
+ `;
187
+ const defaultToolDockerfile = `FROM node:24-slim
188
+
189
+ RUN apt-get update && \\
190
+ apt-get install -y --no-install-recommends \\
191
+ openssh-server \\
192
+ ca-certificates \\
193
+ git \\
194
+ curl \\
195
+ python3 && \\
196
+ rm -rf /var/lib/apt/lists/* && \\
197
+ update-ca-certificates && \\
198
+ useradd -m -s /bin/bash sandbox && \\
199
+ mkdir -p /workspace /run/sshd && \\
200
+ chown sandbox:sandbox /workspace && \\
201
+ ln -sf /proc/self/fd /dev/fd 2>/dev/null || true
202
+ `;
203
+ const defaultGatewayBuildConfig = () => ({
204
+ arch: 'aarch64',
205
+ distro: 'alpine',
206
+ alpine: {
207
+ version: '3.23.0',
208
+ kernelPackage: 'linux-virt',
209
+ kernelImage: 'vmlinuz-virt',
210
+ rootfsPackages: [],
211
+ initramfsPackages: [],
212
+ },
213
+ oci: {
214
+ image: 'agent-vm-gateway:latest',
215
+ pullPolicy: 'never',
216
+ },
217
+ rootfs: {
218
+ label: 'gondolin-root',
219
+ sizeMb: 4096,
220
+ },
221
+ });
222
+ const defaultToolBuildConfig = () => ({
223
+ arch: 'aarch64',
224
+ distro: 'alpine',
225
+ alpine: {
226
+ version: '3.23.0',
227
+ kernelPackage: 'linux-virt',
228
+ kernelImage: 'vmlinuz-virt',
229
+ rootfsPackages: [],
230
+ initramfsPackages: [],
231
+ },
232
+ oci: {
233
+ image: 'agent-vm-tool:latest',
234
+ pullPolicy: 'never',
235
+ },
236
+ rootfs: {
237
+ label: 'tool-root',
238
+ sizeMb: 2048,
239
+ },
240
+ });
241
+ const defaultOpenClawConfig = (zoneId, gatewayIngressPort) => ({
242
+ gateway: {
243
+ auth: { mode: 'token' },
244
+ bind: 'loopback',
245
+ controlUi: {
246
+ allowedOrigins: [
247
+ `http://127.0.0.1:${gatewayIngressPort}`,
248
+ `http://localhost:${gatewayIngressPort}`,
249
+ ],
250
+ },
251
+ mode: 'local',
252
+ port: 18789,
253
+ },
254
+ agents: {
255
+ defaults: {
256
+ model: { primary: 'openai-codex/gpt-5.4' },
257
+ sandbox: { backend: 'gondolin', mode: 'all', scope: 'session' },
258
+ workspace: '/home/openclaw/workspace',
259
+ },
260
+ },
261
+ tools: { elevated: { enabled: false } },
262
+ plugins: {
263
+ load: {
264
+ paths: [defaultOpenClawExtensionsPath],
265
+ },
266
+ entries: {
267
+ gondolin: {
268
+ enabled: true,
269
+ config: {
270
+ controllerUrl: 'http://controller.vm.host:18800',
271
+ zoneId,
272
+ },
273
+ },
274
+ },
275
+ },
276
+ channels: {},
277
+ });
278
+ const defaultCodingGatewayConfig = () => ({
279
+ agentTimeoutMs: 600_000,
280
+ branchPrefix: 'agent/',
281
+ commitCoAuthor: 'agent-vm-coding <noreply@agent-vm>',
282
+ idleTimeoutMs: 1_800_000,
283
+ lintCommand: 'pnpm lint',
284
+ maxRetries: 3,
285
+ model: 'gpt-5.4-mini',
286
+ stateDir: '/state',
287
+ testCommand: 'pnpm test',
288
+ verificationTimeoutMs: 300_000,
289
+ });
290
+ async function writeFileIfMissing(filePath, content) {
291
+ await fs.mkdir(path.dirname(filePath), { recursive: true });
292
+ try {
293
+ await fs.writeFile(filePath, content, {
294
+ encoding: 'utf8',
295
+ flag: 'wx',
296
+ });
297
+ return 'created';
298
+ }
299
+ catch (error) {
300
+ if (typeof error === 'object' && error !== null && 'code' in error && error.code === 'EEXIST') {
301
+ return 'skipped';
302
+ }
303
+ throw error;
304
+ }
305
+ }
306
+ export function scaffoldAgentVmProject(options, dependencies = {}) {
307
+ return scaffoldAgentVmProjectInternal(options, dependencies);
308
+ }
309
+ async function scaffoldAgentVmProjectInternal(options, dependencies = {}) {
310
+ const created = [];
311
+ const skipped = [];
312
+ const gatewayType = options.gatewayType;
313
+ const systemConfigPath = path.join(options.targetDir, 'system.json');
314
+ const systemConfigStatus = await writeFileIfMissing(systemConfigPath, `${JSON.stringify(defaultSystemConfig(options.zoneId, gatewayType), null, '\t')}\n`);
315
+ (systemConfigStatus === 'created' ? created : skipped).push('system.json');
316
+ const envFilePath = path.join(options.targetDir, '.env.local');
317
+ const envFileStatus = await writeFileIfMissing(envFilePath, defaultEnvTemplateForGatewayType(gatewayType));
318
+ (envFileStatus === 'created' ? created : skipped).push('.env.local');
319
+ if (envFileStatus === 'created') {
320
+ const generateAgeIdentityKey = dependencies.generateAgeIdentityKey ??
321
+ (() => {
322
+ try {
323
+ const keygenOutput = execFileSync('age-keygen', [], { encoding: 'utf8' });
324
+ return keygenOutput
325
+ .split('\n')
326
+ .find((line) => line.startsWith('AGE-SECRET-KEY-'))
327
+ ?.trim();
328
+ }
329
+ catch {
330
+ return undefined;
331
+ }
332
+ });
333
+ const ageIdentityKey = generateAgeIdentityKey();
334
+ if (ageIdentityKey) {
335
+ await fs.appendFile(envFilePath, `AGE_IDENTITY_KEY=${ageIdentityKey}\n`, 'utf8');
336
+ }
337
+ }
338
+ const gatewayConfigFileName = resolveGatewayConfigFileName(gatewayType);
339
+ const gatewayConfigPath = path.join(options.targetDir, 'config', options.zoneId, gatewayConfigFileName);
340
+ const gatewayConfigStatus = await writeFileIfMissing(gatewayConfigPath, `${JSON.stringify(gatewayType === 'openclaw'
341
+ ? defaultOpenClawConfig(options.zoneId, defaultGatewayIngressPort)
342
+ : defaultCodingGatewayConfig(), null, '\t')}\n`);
343
+ (gatewayConfigStatus === 'created' ? created : skipped).push(`config/${options.zoneId}/${gatewayConfigFileName}`);
344
+ const gatewayDockerfilePath = path.join(options.targetDir, 'images', 'gateway', 'Dockerfile');
345
+ const gatewayDockerfileStatus = await writeFileIfMissing(gatewayDockerfilePath, gatewayType === 'openclaw' ? defaultGatewayDockerfile : defaultCodingGatewayDockerfile);
346
+ (gatewayDockerfileStatus === 'created' ? created : skipped).push('images/gateway/Dockerfile');
347
+ const gatewayBuildConfigPath = path.join(options.targetDir, 'images', 'gateway', 'build-config.json');
348
+ const gatewayBuildConfigStatus = await writeFileIfMissing(gatewayBuildConfigPath, `${JSON.stringify(defaultGatewayBuildConfig(), null, '\t')}\n`);
349
+ (gatewayBuildConfigStatus === 'created' ? created : skipped).push('images/gateway/build-config.json');
350
+ if (gatewayType === 'openclaw') {
351
+ const pluginCopyStatus = await (dependencies.copyBundledOpenClawPlugin ?? syncBundledOpenClawPluginBundle)(options.targetDir);
352
+ (pluginCopyStatus === 'created' ? created : skipped).push(openClawPluginVendorDirectory);
353
+ }
354
+ const toolDockerfilePath = path.join(options.targetDir, 'images', 'tool', 'Dockerfile');
355
+ const toolDockerfileStatus = await writeFileIfMissing(toolDockerfilePath, defaultToolDockerfile);
356
+ (toolDockerfileStatus === 'created' ? created : skipped).push('images/tool/Dockerfile');
357
+ const toolBuildConfigPath = path.join(options.targetDir, 'images', 'tool', 'build-config.json');
358
+ const toolBuildConfigStatus = await writeFileIfMissing(toolBuildConfigPath, `${JSON.stringify(defaultToolBuildConfig(), null, '\t')}\n`);
359
+ (toolBuildConfigStatus === 'created' ? created : skipped).push('images/tool/build-config.json');
360
+ for (const directoryPath of [
361
+ path.join(options.targetDir, 'state', options.zoneId),
362
+ path.join(options.targetDir, 'workspaces', options.zoneId),
363
+ path.join(options.targetDir, 'workspaces', 'tools'),
364
+ ]) {
365
+ await fs.mkdir(directoryPath, { recursive: true });
366
+ }
367
+ return { created, keychainStored: false, skipped };
368
+ }
369
+ /**
370
+ * Interactively prompt for the 1Password service account token and store it
371
+ * in macOS Keychain. Skips if stdin is not a TTY or if a token already exists.
372
+ */
373
+ export async function promptAndStoreServiceAccountToken(dependencies = {}) {
374
+ const hasToken = dependencies.hasKeychainToken ?? hasServiceAccountToken;
375
+ const storeToken = dependencies.storeKeychainToken ?? storeServiceAccountToken;
376
+ if (hasToken()) {
377
+ return false;
378
+ }
379
+ if (!process.stdin.isTTY) {
380
+ return false;
381
+ }
382
+ // Use a muted output stream so readline doesn't echo the token
383
+ const { Writable } = await import('node:stream');
384
+ const mutedOutput = new Writable({
385
+ write(_chunk, _encoding, callback) {
386
+ callback();
387
+ },
388
+ });
389
+ const rl = dependencies.createReadlineInterface?.() ??
390
+ readline.createInterface({ input: process.stdin, output: mutedOutput, terminal: true });
391
+ try {
392
+ process.stderr.write('Paste your 1Password service account token (from https://my.1password.com/developer-tools/service-accounts):\n> ');
393
+ const token = await rl.question('');
394
+ process.stderr.write('\n');
395
+ const trimmedToken = token.trim();
396
+ if (!trimmedToken) {
397
+ return false;
398
+ }
399
+ storeToken(trimmedToken);
400
+ process.stderr.write('✓ Stored in macOS Keychain\n');
401
+ return true;
402
+ }
403
+ finally {
404
+ rl.close();
405
+ }
406
+ }
407
+ //# sourceMappingURL=init-command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init-command.js","sourceRoot":"","sources":["../../src/cli/init-command.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ export interface KeychainCredentialDependencies {
2
+ readonly execFileSync?: (command: string, args: readonly string[]) => string;
3
+ }
4
+ /**
5
+ * Store the 1Password service account token in macOS Keychain.
6
+ * Uses `security add-generic-password -U` which creates or updates.
7
+ * No password prompt when logged in — Keychain is unlocked.
8
+ */
9
+ export declare function storeServiceAccountToken(token: string, dependencies?: KeychainCredentialDependencies): void;
10
+ /**
11
+ * Check whether a service account token exists in macOS Keychain.
12
+ */
13
+ export declare function hasServiceAccountToken(dependencies?: KeychainCredentialDependencies): boolean;
14
+ export declare function getKeychainTokenSource(): {
15
+ readonly type: 'keychain';
16
+ readonly service: string;
17
+ readonly account: string;
18
+ };
19
+ //# sourceMappingURL=keychain-credential.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keychain-credential.d.ts","sourceRoot":"","sources":["../../src/cli/keychain-credential.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,8BAA8B;IAC9C,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,MAAM,EAAE,KAAK,MAAM,CAAC;CAC7E;AAMD;;;;GAIG;AACH,wBAAgB,wBAAwB,CACvC,KAAK,EAAE,MAAM,EACb,YAAY,GAAE,8BAAmC,GAC/C,IAAI,CAYN;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,YAAY,GAAE,8BAAmC,GAAG,OAAO,CAejG;AAED,wBAAgB,sBAAsB,IAAI;IACzC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CACzB,CAMA"}
@@ -0,0 +1,52 @@
1
+ import { execFileSync } from 'node:child_process';
2
+ const KEYCHAIN_SERVICE = 'agent-vm';
3
+ const KEYCHAIN_ACCOUNT = '1p-service-account';
4
+ function defaultExecFileSync(command, args) {
5
+ return execFileSync(command, [...args], { encoding: 'utf8' });
6
+ }
7
+ /**
8
+ * Store the 1Password service account token in macOS Keychain.
9
+ * Uses `security add-generic-password -U` which creates or updates.
10
+ * No password prompt when logged in — Keychain is unlocked.
11
+ */
12
+ export function storeServiceAccountToken(token, dependencies = {}) {
13
+ const exec = dependencies.execFileSync ?? defaultExecFileSync;
14
+ exec('security', [
15
+ 'add-generic-password',
16
+ '-s',
17
+ KEYCHAIN_SERVICE,
18
+ '-a',
19
+ KEYCHAIN_ACCOUNT,
20
+ '-w',
21
+ token,
22
+ '-U',
23
+ ]);
24
+ }
25
+ /**
26
+ * Check whether a service account token exists in macOS Keychain.
27
+ */
28
+ export function hasServiceAccountToken(dependencies = {}) {
29
+ const exec = dependencies.execFileSync ?? defaultExecFileSync;
30
+ try {
31
+ exec('security', [
32
+ 'find-generic-password',
33
+ '-s',
34
+ KEYCHAIN_SERVICE,
35
+ '-a',
36
+ KEYCHAIN_ACCOUNT,
37
+ '-w',
38
+ ]);
39
+ return true;
40
+ }
41
+ catch {
42
+ return false;
43
+ }
44
+ }
45
+ export function getKeychainTokenSource() {
46
+ return {
47
+ type: 'keychain',
48
+ service: KEYCHAIN_SERVICE,
49
+ account: KEYCHAIN_ACCOUNT,
50
+ };
51
+ }
52
+ //# sourceMappingURL=keychain-credential.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keychain-credential.js","sourceRoot":"","sources":["../../src/cli/keychain-credential.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,MAAM,gBAAgB,GAAG,UAAU,CAAC;AACpC,MAAM,gBAAgB,GAAG,oBAAoB,CAAC;AAM9C,SAAS,mBAAmB,CAAC,OAAe,EAAE,IAAuB;IACpE,OAAO,YAAY,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;AAC/D,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,wBAAwB,CACvC,KAAa,EACb,eAA+C,EAAE;IAEjD,MAAM,IAAI,GAAG,YAAY,CAAC,YAAY,IAAI,mBAAmB,CAAC;IAC9D,IAAI,CAAC,UAAU,EAAE;QAChB,sBAAsB;QACtB,IAAI;QACJ,gBAAgB;QAChB,IAAI;QACJ,gBAAgB;QAChB,IAAI;QACJ,KAAK;QACL,IAAI;KACJ,CAAC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB,CAAC,eAA+C,EAAE;IACvF,MAAM,IAAI,GAAG,YAAY,CAAC,YAAY,IAAI,mBAAmB,CAAC;IAC9D,IAAI,CAAC;QACJ,IAAI,CAAC,UAAU,EAAE;YAChB,uBAAuB;YACvB,IAAI;YACJ,gBAAgB;YAChB,IAAI;YACJ,gBAAgB;YAChB,IAAI;SACJ,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACb,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,KAAK,CAAC;IACd,CAAC;AACF,CAAC;AAED,MAAM,UAAU,sBAAsB;IAKrC,OAAO;QACN,IAAI,EAAE,UAAU;QAChB,OAAO,EAAE,gBAAgB;QACzB,OAAO,EAAE,gBAAgB;KACzB,CAAC;AACH,CAAC"}
@@ -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 RunLeaseCommandOptions {
4
+ readonly dependencies: CliDependencies;
5
+ readonly io: CliIo;
6
+ readonly restArguments: readonly string[];
7
+ readonly systemConfig: SystemConfig;
8
+ }
9
+ export declare function runLeaseCommand(options: RunLeaseCommandOptions): Promise<void>;
10
+ export {};
11
+ //# sourceMappingURL=lease-commands.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lease-commands.d.ts","sourceRoot":"","sources":["../../src/cli/lease-commands.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EACN,KAAK,eAAe,EACpB,KAAK,KAAK,EAGV,MAAM,2BAA2B,CAAC;AAEnC,UAAU,sBAAsB;IAC/B,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,eAAe,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,CAsBpF"}
@@ -0,0 +1,22 @@
1
+ import { resolveControllerBaseUrl, writeJson, } from './agent-vm-cli-support.js';
2
+ export async function runLeaseCommand(options) {
3
+ const controllerClient = options.dependencies.createControllerClient({
4
+ baseUrl: resolveControllerBaseUrl(options.systemConfig),
5
+ });
6
+ const leaseSubcommand = options.restArguments[0];
7
+ if (leaseSubcommand === 'list') {
8
+ writeJson(options.io, await controllerClient.listLeases());
9
+ return;
10
+ }
11
+ if (leaseSubcommand === 'release') {
12
+ const leaseId = options.restArguments[1];
13
+ if (!leaseId) {
14
+ throw new Error('Usage: agent-vm controller lease release <leaseId>');
15
+ }
16
+ await controllerClient.releaseLease(leaseId);
17
+ writeJson(options.io, { ok: true, released: leaseId });
18
+ return;
19
+ }
20
+ throw new Error(`Unknown lease subcommand '${leaseSubcommand ?? 'undefined'}'.`);
21
+ }
22
+ //# sourceMappingURL=lease-commands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lease-commands.js","sourceRoot":"","sources":["../../src/cli/lease-commands.ts"],"names":[],"mappings":"AACA,OAAO,EAGN,wBAAwB,EACxB,SAAS,GACT,MAAM,2BAA2B,CAAC;AASnC,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,OAA+B;IACpE,MAAM,gBAAgB,GAAG,OAAO,CAAC,YAAY,CAAC,sBAAsB,CAAC;QACpE,OAAO,EAAE,wBAAwB,CAAC,OAAO,CAAC,YAAY,CAAC;KACvD,CAAC,CAAC;IACH,MAAM,eAAe,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IAEjD,IAAI,eAAe,KAAK,MAAM,EAAE,CAAC;QAChC,SAAS,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,gBAAgB,CAAC,UAAU,EAAE,CAAC,CAAC;QAC3D,OAAO;IACR,CAAC;IAED,IAAI,eAAe,KAAK,SAAS,EAAE,CAAC;QACnC,MAAM,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;QACzC,IAAI,CAAC,OAAO,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;QACvE,CAAC;QACD,MAAM,gBAAgB,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QAC7C,SAAS,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;QACvD,OAAO;IACR,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,6BAA6B,eAAe,IAAI,WAAW,IAAI,CAAC,CAAC;AAClF,CAAC"}
@@ -0,0 +1,3 @@
1
+ export declare const openClawPluginVendorDirectory = "images/gateway/vendor/gondolin";
2
+ export declare function syncBundledOpenClawPluginBundle(targetDir: string): Promise<'created' | 'skipped'>;
3
+ //# sourceMappingURL=openclaw-plugin-bundle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openclaw-plugin-bundle.d.ts","sourceRoot":"","sources":["../../src/cli/openclaw-plugin-bundle.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,6BAA6B,mCAAmC,CAAC;AAkB9E,wBAAsB,+BAA+B,CACpD,SAAS,EAAE,MAAM,GACf,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC,CAahC"}
@@ -0,0 +1,30 @@
1
+ import fs from 'node:fs/promises';
2
+ import path from 'node:path';
3
+ import { fileURLToPath } from 'node:url';
4
+ export const openClawPluginVendorDirectory = 'images/gateway/vendor/gondolin';
5
+ async function resolveBundledOpenClawPluginDistDirectory() {
6
+ const pluginEntrypointPath = fileURLToPath(import.meta.resolve('@shravansunder/openclaw-agent-vm-plugin'));
7
+ const pluginDistDirectory = path.dirname(pluginEntrypointPath);
8
+ try {
9
+ await fs.access(path.join(pluginDistDirectory, 'openclaw.plugin.json'));
10
+ }
11
+ catch (error) {
12
+ throw new Error(`Bundled gondolin plugin dist is missing at '${pluginDistDirectory}'. Run \`pnpm build\` before using the OpenClaw gateway scaffold/build path.`, { cause: error });
13
+ }
14
+ return pluginDistDirectory;
15
+ }
16
+ export async function syncBundledOpenClawPluginBundle(targetDir) {
17
+ const pluginTargetDirectory = path.join(targetDir, openClawPluginVendorDirectory);
18
+ try {
19
+ await fs.access(path.join(pluginTargetDirectory, 'openclaw.plugin.json'));
20
+ await fs.rm(pluginTargetDirectory, { force: true, recursive: true });
21
+ }
22
+ catch {
23
+ // continue
24
+ }
25
+ const pluginDistDirectory = await resolveBundledOpenClawPluginDistDirectory();
26
+ await fs.mkdir(path.dirname(pluginTargetDirectory), { recursive: true });
27
+ await fs.cp(pluginDistDirectory, pluginTargetDirectory, { recursive: true });
28
+ return 'created';
29
+ }
30
+ //# sourceMappingURL=openclaw-plugin-bundle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openclaw-plugin-bundle.js","sourceRoot":"","sources":["../../src/cli/openclaw-plugin-bundle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,CAAC,MAAM,6BAA6B,GAAG,gCAAgC,CAAC;AAE9E,KAAK,UAAU,yCAAyC;IACvD,MAAM,oBAAoB,GAAG,aAAa,CACzC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,yCAAyC,CAAC,CAC9D,CAAC;IACF,MAAM,mBAAmB,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAC/D,IAAI,CAAC;QACJ,MAAM,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,sBAAsB,CAAC,CAAC,CAAC;IACzE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CACd,+CAA+C,mBAAmB,8EAA8E,EAChJ,EAAE,KAAK,EAAE,KAAK,EAAE,CAChB,CAAC;IACH,CAAC;IACD,OAAO,mBAAmB,CAAC;AAC5B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,+BAA+B,CACpD,SAAiB;IAEjB,MAAM,qBAAqB,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,6BAA6B,CAAC,CAAC;IAClF,IAAI,CAAC;QACJ,MAAM,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,sBAAsB,CAAC,CAAC,CAAC;QAC1E,MAAM,EAAE,CAAC,EAAE,CAAC,qBAAqB,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACtE,CAAC;IAAC,MAAM,CAAC;QACR,WAAW;IACZ,CAAC;IAED,MAAM,mBAAmB,GAAG,MAAM,yCAAyC,EAAE,CAAC;IAC9E,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,qBAAqB,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzE,MAAM,EAAE,CAAC,EAAE,CAAC,mBAAmB,EAAE,qBAAqB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7E,OAAO,SAAS,CAAC;AAClB,CAAC"}