@agent-vm/agent-vm 0.0.48 → 0.0.50

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 (126) hide show
  1. package/dist/build/gondolin-image-build-child-entrypoint.d.ts +2 -0
  2. package/dist/build/gondolin-image-build-child-entrypoint.d.ts.map +1 -0
  3. package/dist/build/gondolin-image-build-child-entrypoint.js +52 -0
  4. package/dist/build/gondolin-image-build-child-entrypoint.js.map +1 -0
  5. package/dist/build/gondolin-image-builder.d.ts +14 -0
  6. package/dist/build/gondolin-image-builder.d.ts.map +1 -1
  7. package/dist/build/gondolin-image-builder.js +152 -7
  8. package/dist/build/gondolin-image-builder.js.map +1 -1
  9. package/dist/build/managed-image-dockerfile.d.ts +11 -5
  10. package/dist/build/managed-image-dockerfile.d.ts.map +1 -1
  11. package/dist/build/managed-image-dockerfile.js +62 -13
  12. package/dist/build/managed-image-dockerfile.js.map +1 -1
  13. package/dist/build/stale-image-cleaner.d.ts +6 -0
  14. package/dist/build/stale-image-cleaner.d.ts.map +1 -1
  15. package/dist/build/stale-image-cleaner.js +32 -0
  16. package/dist/build/stale-image-cleaner.js.map +1 -1
  17. package/dist/build/zig-compatibility.d.ts +32 -0
  18. package/dist/build/zig-compatibility.d.ts.map +1 -0
  19. package/dist/build/zig-compatibility.js +148 -0
  20. package/dist/build/zig-compatibility.js.map +1 -0
  21. package/dist/cli/auth-interactive-command.d.ts +1 -1
  22. package/dist/cli/auth-interactive-command.d.ts.map +1 -1
  23. package/dist/cli/auth-interactive-command.js +12 -3
  24. package/dist/cli/auth-interactive-command.js.map +1 -1
  25. package/dist/cli/build-command.d.ts +10 -3
  26. package/dist/cli/build-command.d.ts.map +1 -1
  27. package/dist/cli/build-command.js +121 -36
  28. package/dist/cli/build-command.js.map +1 -1
  29. package/dist/cli/cache-commands.d.ts +1 -5
  30. package/dist/cli/cache-commands.d.ts.map +1 -1
  31. package/dist/cli/cache-commands.js.map +1 -1
  32. package/dist/cli/commands/command-definition-support.d.ts +1 -4
  33. package/dist/cli/commands/command-definition-support.d.ts.map +1 -1
  34. package/dist/cli/commands/command-definition-support.js +4 -10
  35. package/dist/cli/commands/command-definition-support.js.map +1 -1
  36. package/dist/cli/commands/controller-definition.d.ts +2 -4
  37. package/dist/cli/commands/controller-definition.d.ts.map +1 -1
  38. package/dist/cli/commands/controller-definition.js +4 -6
  39. package/dist/cli/commands/controller-definition.js.map +1 -1
  40. package/dist/cli/commands/create-app.d.ts +2 -4
  41. package/dist/cli/commands/create-app.d.ts.map +1 -1
  42. package/dist/cli/init-command.d.ts.map +1 -1
  43. package/dist/cli/init-command.js +29 -6
  44. package/dist/cli/init-command.js.map +1 -1
  45. package/dist/cli/manual-templates.d.ts.map +1 -1
  46. package/dist/cli/manual-templates.js +5 -0
  47. package/dist/cli/manual-templates.js.map +1 -1
  48. package/dist/cli/ssh-commands.d.ts +6 -0
  49. package/dist/cli/ssh-commands.d.ts.map +1 -1
  50. package/dist/cli/ssh-commands.js +44 -22
  51. package/dist/cli/ssh-commands.js.map +1 -1
  52. package/dist/cli/vm-host-system-templates.d.ts.map +1 -1
  53. package/dist/cli/vm-host-system-templates.js +0 -6
  54. package/dist/cli/vm-host-system-templates.js.map +1 -1
  55. package/dist/config/system-cache-identifier.d.ts +5 -2
  56. package/dist/config/system-cache-identifier.d.ts.map +1 -1
  57. package/dist/config/system-cache-identifier.js +33 -3
  58. package/dist/config/system-cache-identifier.js.map +1 -1
  59. package/dist/config/system-config.d.ts +24 -0
  60. package/dist/config/system-config.d.ts.map +1 -1
  61. package/dist/config/system-config.js +22 -0
  62. package/dist/config/system-config.js.map +1 -1
  63. package/dist/controller/controller-runtime-operations.d.ts +9 -2
  64. package/dist/controller/controller-runtime-operations.d.ts.map +1 -1
  65. package/dist/controller/controller-runtime-operations.js +75 -6
  66. package/dist/controller/controller-runtime-operations.js.map +1 -1
  67. package/dist/controller/controller-runtime.d.ts.map +1 -1
  68. package/dist/controller/controller-runtime.js +1 -0
  69. package/dist/controller/controller-runtime.js.map +1 -1
  70. package/dist/controller/git-pull-default-operations.d.ts +1 -0
  71. package/dist/controller/git-pull-default-operations.d.ts.map +1 -1
  72. package/dist/controller/git-pull-default-operations.js +100 -43
  73. package/dist/controller/git-pull-default-operations.js.map +1 -1
  74. package/dist/controller/git-push-operations.d.ts +1 -0
  75. package/dist/controller/git-push-operations.d.ts.map +1 -1
  76. package/dist/controller/git-push-operations.js +50 -32
  77. package/dist/controller/git-push-operations.js.map +1 -1
  78. package/dist/controller/git-retry-support.d.ts +3 -2
  79. package/dist/controller/git-retry-support.d.ts.map +1 -1
  80. package/dist/controller/git-retry-support.js +16 -8
  81. package/dist/controller/git-retry-support.js.map +1 -1
  82. package/dist/controller/heartbeat-sender.d.ts.map +1 -1
  83. package/dist/controller/heartbeat-sender.js +6 -0
  84. package/dist/controller/heartbeat-sender.js.map +1 -1
  85. package/dist/controller/host-git-command.d.ts +6 -0
  86. package/dist/controller/host-git-command.d.ts.map +1 -0
  87. package/dist/controller/host-git-command.js +13 -0
  88. package/dist/controller/host-git-command.js.map +1 -0
  89. package/dist/controller/http/controller-client.d.ts +9 -2
  90. package/dist/controller/http/controller-client.d.ts.map +1 -1
  91. package/dist/controller/http/controller-client.js +13 -3
  92. package/dist/controller/http/controller-client.js.map +1 -1
  93. package/dist/controller/http/controller-http-route-support.d.ts +9 -2
  94. package/dist/controller/http/controller-http-route-support.d.ts.map +1 -1
  95. package/dist/controller/http/controller-http-route-support.js.map +1 -1
  96. package/dist/controller/http/controller-request-schemas.d.ts +9 -1
  97. package/dist/controller/http/controller-request-schemas.d.ts.map +1 -1
  98. package/dist/controller/http/controller-request-schemas.js +11 -2
  99. package/dist/controller/http/controller-request-schemas.js.map +1 -1
  100. package/dist/controller/http/controller-zone-operation-routes.d.ts.map +1 -1
  101. package/dist/controller/http/controller-zone-operation-routes.js +101 -24
  102. package/dist/controller/http/controller-zone-operation-routes.js.map +1 -1
  103. package/dist/controller/worker-task-runner.d.ts.map +1 -1
  104. package/dist/controller/worker-task-runner.js +42 -19
  105. package/dist/controller/worker-task-runner.js.map +1 -1
  106. package/dist/controller/zone-runtimes/zone-runtime-errors.d.ts +10 -0
  107. package/dist/controller/zone-runtimes/zone-runtime-errors.d.ts.map +1 -1
  108. package/dist/controller/zone-runtimes/zone-runtime-errors.js +14 -0
  109. package/dist/controller/zone-runtimes/zone-runtime-errors.js.map +1 -1
  110. package/dist/gateway/gateway-zone-support.d.ts.map +1 -1
  111. package/dist/gateway/gateway-zone-support.js +1 -0
  112. package/dist/gateway/gateway-zone-support.js.map +1 -1
  113. package/dist/operations/doctor.d.ts +0 -3
  114. package/dist/operations/doctor.d.ts.map +1 -1
  115. package/dist/operations/doctor.js +8 -35
  116. package/dist/operations/doctor.js.map +1 -1
  117. package/dist/resources/repo-resource-contract-loader.d.ts +1 -1
  118. package/dist/resources/repo-resource-contract-loader.d.ts.map +1 -1
  119. package/dist/resources/repo-resource-contract-loader.js +2 -6
  120. package/dist/resources/repo-resource-contract-loader.js.map +1 -1
  121. package/dist/resources/repo-resource-provider-runner.d.ts +3 -1
  122. package/dist/resources/repo-resource-provider-runner.d.ts.map +1 -1
  123. package/dist/resources/repo-resource-provider-runner.js +24 -10
  124. package/dist/resources/repo-resource-provider-runner.js.map +1 -1
  125. package/managed-images.json +19 -0
  126. package/package.json +10 -9
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=gondolin-image-build-child-entrypoint.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gondolin-image-build-child-entrypoint.d.ts","sourceRoot":"","sources":["../../src/build/gondolin-image-build-child-entrypoint.ts"],"names":[],"mappings":""}
@@ -0,0 +1,52 @@
1
+ function isGondolinBuildRequestMessage(value) {
2
+ if (typeof value !== 'object' || value === null) {
3
+ return false;
4
+ }
5
+ const candidate = value;
6
+ return candidate.type === 'build-request' && typeof candidate.request === 'object';
7
+ }
8
+ function disconnectFromParent() {
9
+ process.disconnect?.();
10
+ }
11
+ function sendStructuredError(error) {
12
+ process.send?.({
13
+ message: error instanceof Error ? error.message : String(error),
14
+ ...(error instanceof Error && error.stack ? { stack: error.stack } : {}),
15
+ type: 'error',
16
+ });
17
+ }
18
+ process.on('uncaughtException', (error) => {
19
+ sendStructuredError(error);
20
+ disconnectFromParent();
21
+ process.exitCode = 1;
22
+ });
23
+ process.on('unhandledRejection', (reason) => {
24
+ sendStructuredError(reason);
25
+ disconnectFromParent();
26
+ process.exitCode = 1;
27
+ });
28
+ process.once('message', (message) => {
29
+ void (async () => {
30
+ if (!isGondolinBuildRequestMessage(message)) {
31
+ process.send?.({
32
+ message: 'Invalid Gondolin build child request.',
33
+ type: 'error',
34
+ });
35
+ disconnectFromParent();
36
+ return;
37
+ }
38
+ try {
39
+ const { runGondolinImageBuildRequest } = await import('./gondolin-image-builder.js');
40
+ const result = await runGondolinImageBuildRequest(message.request);
41
+ process.send?.({ result, type: 'result' });
42
+ }
43
+ catch (error) {
44
+ sendStructuredError(error);
45
+ }
46
+ finally {
47
+ disconnectFromParent();
48
+ }
49
+ })();
50
+ });
51
+ export {};
52
+ //# sourceMappingURL=gondolin-image-build-child-entrypoint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gondolin-image-build-child-entrypoint.js","sourceRoot":"","sources":["../../src/build/gondolin-image-build-child-entrypoint.ts"],"names":[],"mappings":"AAOA,SAAS,6BAA6B,CAAC,KAAc;IACpD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QACjD,OAAO,KAAK,CAAC;IACd,CAAC;IACD,MAAM,SAAS,GAAG,KAGjB,CAAC;IACF,OAAO,SAAS,CAAC,IAAI,KAAK,eAAe,IAAI,OAAO,SAAS,CAAC,OAAO,KAAK,QAAQ,CAAC;AACpF,CAAC;AAED,SAAS,oBAAoB;IAC5B,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;AACxB,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAc;IAC1C,OAAO,CAAC,IAAI,EAAE,CAAC;QACd,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;QAC/D,GAAG,CAAC,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACxE,IAAI,EAAE,OAAO;KACb,CAAC,CAAC;AACJ,CAAC;AAED,OAAO,CAAC,EAAE,CAAC,mBAAmB,EAAE,CAAC,KAAK,EAAE,EAAE;IACzC,mBAAmB,CAAC,KAAK,CAAC,CAAC;IAC3B,oBAAoB,EAAE,CAAC;IACvB,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;AACtB,CAAC,CAAC,CAAC;AAEH,OAAO,CAAC,EAAE,CAAC,oBAAoB,EAAE,CAAC,MAAM,EAAE,EAAE;IAC3C,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAC5B,oBAAoB,EAAE,CAAC;IACvB,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;AACtB,CAAC,CAAC,CAAC;AAEH,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,OAAgB,EAAE,EAAE;IAC5C,KAAK,CAAC,KAAK,IAAmB,EAAE;QAC/B,IAAI,CAAC,6BAA6B,CAAC,OAAO,CAAC,EAAE,CAAC;YAC7C,OAAO,CAAC,IAAI,EAAE,CAAC;gBACd,OAAO,EAAE,uCAAuC;gBAChD,IAAI,EAAE,OAAO;aACb,CAAC,CAAC;YACH,oBAAoB,EAAE,CAAC;YACvB,OAAO;QACR,CAAC;QAED,IAAI,CAAC;YACJ,MAAM,EAAE,4BAA4B,EAAE,GAAG,MAAM,MAAM,CAAC,6BAA6B,CAAC,CAAC;YACrF,MAAM,MAAM,GAAG,MAAM,4BAA4B,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YACnE,OAAO,CAAC,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC5C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,mBAAmB,CAAC,KAAK,CAAC,CAAC;QAC5B,CAAC;gBAAS,CAAC;YACV,oBAAoB,EAAE,CAAC;QACxB,CAAC;IACF,CAAC,CAAC,EAAE,CAAC;AACN,CAAC,CAAC,CAAC"}
@@ -1,13 +1,27 @@
1
1
  import { type BuildConfig, type BuildImageOptions, type BuildImageResult } from '@agent-vm/gondolin-adapter';
2
2
  import type { TaskOutput } from '../shared/run-task.js';
3
+ export interface GondolinImageBuildRequest {
4
+ readonly buildConfigPath: string;
5
+ readonly systemCacheIdentifierPath: string;
6
+ readonly cacheDir: string;
7
+ readonly fullReset?: boolean;
8
+ }
9
+ export interface RunGondolinBuildChildProcessOptions {
10
+ readonly childModuleUrl?: URL;
11
+ readonly request: GondolinImageBuildRequest;
12
+ readonly streamPreview: TaskOutput;
13
+ }
3
14
  export interface GondolinImageBuilderDependencies {
4
15
  readonly buildImage?: (options: BuildImageOptions, dependencies?: {
5
16
  readonly gondolinVersion?: string;
6
17
  }) => Promise<BuildImageResult>;
7
18
  readonly loadBuildConfig?: (buildConfigPath: string) => Promise<BuildConfig>;
19
+ readonly runBuildChildProcess?: (options: RunGondolinBuildChildProcessOptions) => Promise<BuildImageResult>;
8
20
  readonly resolveRuntimeBuildVersionTag?: () => Promise<string>;
9
21
  }
10
22
  export declare function computeFingerprintFromConfigPath(buildConfigPath: string, systemCacheIdentifierPath: string, dependencies?: Pick<GondolinImageBuilderDependencies, 'resolveRuntimeBuildVersionTag'>): Promise<string>;
23
+ export declare function runGondolinImageBuildRequest(request: GondolinImageBuildRequest, dependencies?: Omit<GondolinImageBuilderDependencies, 'runBuildChildProcess'>): Promise<BuildImageResult>;
24
+ export declare function runGondolinBuildChildProcess(options: RunGondolinBuildChildProcessOptions): Promise<BuildImageResult>;
11
25
  export declare function buildGondolinImage(options: {
12
26
  readonly buildConfigPath: string;
13
27
  readonly systemCacheIdentifierPath: string;
@@ -1 +1 @@
1
- {"version":3,"file":"gondolin-image-builder.d.ts","sourceRoot":"","sources":["../../src/build/gondolin-image-builder.ts"],"names":[],"mappings":"AAEA,OAAO,EAGN,KAAK,WAAW,EAChB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,MAAM,4BAA4B,CAAC;AAIpC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAGxD,MAAM,WAAW,gCAAgC;IAChD,QAAQ,CAAC,UAAU,CAAC,EAAE,CACrB,OAAO,EAAE,iBAAiB,EAC1B,YAAY,CAAC,EAAE;QAAE,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAA;KAAE,KAChD,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC/B,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC,eAAe,EAAE,MAAM,KAAK,OAAO,CAAC,WAAW,CAAC,CAAC;IAC7E,QAAQ,CAAC,6BAA6B,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;CAC/D;AAkBD,wBAAsB,gCAAgC,CACrD,eAAe,EAAE,MAAM,EACvB,yBAAyB,EAAE,MAAM,EACjC,YAAY,GAAE,IAAI,CAAC,gCAAgC,EAAE,+BAA+B,CAAM,GACxF,OAAO,CAAC,MAAM,CAAC,CAQjB;AAED,wBAAsB,kBAAkB,CACvC,OAAO,EAAE;IACR,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,yBAAyB,EAAE,MAAM,CAAC;IAC3C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,aAAa,CAAC,EAAE,UAAU,CAAC;CACpC,EACD,YAAY,GAAE,gCAAqC,GACjD,OAAO,CAAC,gBAAgB,CAAC,CAyB3B"}
1
+ {"version":3,"file":"gondolin-image-builder.d.ts","sourceRoot":"","sources":["../../src/build/gondolin-image-builder.ts"],"names":[],"mappings":"AAIA,OAAO,EAGN,KAAK,WAAW,EAChB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,MAAM,4BAA4B,CAAC;AAIpC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAGxD,MAAM,WAAW,yBAAyB;IACzC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,yBAAyB,EAAE,MAAM,CAAC;IAC3C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,MAAM,WAAW,mCAAmC;IACnD,QAAQ,CAAC,cAAc,CAAC,EAAE,GAAG,CAAC;IAC9B,QAAQ,CAAC,OAAO,EAAE,yBAAyB,CAAC;IAC5C,QAAQ,CAAC,aAAa,EAAE,UAAU,CAAC;CACnC;AAED,MAAM,WAAW,gCAAgC;IAChD,QAAQ,CAAC,UAAU,CAAC,EAAE,CACrB,OAAO,EAAE,iBAAiB,EAC1B,YAAY,CAAC,EAAE;QAAE,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAA;KAAE,KAChD,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC/B,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC,eAAe,EAAE,MAAM,KAAK,OAAO,CAAC,WAAW,CAAC,CAAC;IAC7E,QAAQ,CAAC,oBAAoB,CAAC,EAAE,CAC/B,OAAO,EAAE,mCAAmC,KACxC,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC/B,QAAQ,CAAC,6BAA6B,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;CAC/D;AAoCD,wBAAsB,gCAAgC,CACrD,eAAe,EAAE,MAAM,EACvB,yBAAyB,EAAE,MAAM,EACjC,YAAY,GAAE,IAAI,CAAC,gCAAgC,EAAE,+BAA+B,CAAM,GACxF,OAAO,CAAC,MAAM,CAAC,CAQjB;AA4DD,wBAAsB,4BAA4B,CACjD,OAAO,EAAE,yBAAyB,EAClC,YAAY,GAAE,IAAI,CAAC,gCAAgC,EAAE,sBAAsB,CAAM,GAC/E,OAAO,CAAC,gBAAgB,CAAC,CAwB3B;AAED,wBAAsB,4BAA4B,CACjD,OAAO,EAAE,mCAAmC,GAC1C,OAAO,CAAC,gBAAgB,CAAC,CA+E3B;AAED,wBAAsB,kBAAkB,CACvC,OAAO,EAAE;IACR,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,yBAAyB,EAAE,MAAM,CAAC;IAC3C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,aAAa,CAAC,EAAE,UAAU,CAAC;CACpC,EACD,YAAY,GAAE,gCAAqC,GACjD,OAAO,CAAC,gBAAgB,CAAC,CAe3B"}
@@ -1,8 +1,11 @@
1
1
  import path from 'node:path';
2
+ import { fork } from 'node:child_process';
2
3
  import { buildImage as buildImageFromCore, computeBuildFingerprint, } from '@agent-vm/gondolin-adapter';
3
4
  import { loadSystemCacheIdentifier } from '../config/system-cache-identifier.js';
4
5
  import { loadJsonConfigFile } from '../config/json-config-file.js';
5
6
  import { resolveRuntimeBuildVersionTag as resolveRuntimeBuildVersionTagDefault } from './runtime-versions.js';
7
+ const CHILD_EXIT_GRACE_MS = 2_000;
8
+ const CHILD_STDERR_TAIL_BYTES = 16_384;
6
9
  async function loadBuildConfigFromJson(buildConfigPath) {
7
10
  try {
8
11
  return (await loadJsonConfigFile(buildConfigPath));
@@ -25,24 +28,166 @@ export async function computeFingerprintFromConfigPath(buildConfigPath, systemCa
25
28
  const runtimeBuildVersionTag = await (dependencies.resolveRuntimeBuildVersionTag ?? resolveRuntimeBuildVersionTagDefault)();
26
29
  return computeBuildFingerprint(buildConfig, runtimeBuildVersionTag, fingerprintInput);
27
30
  }
28
- export async function buildGondolinImage(options, dependencies = {}) {
31
+ function isGondolinBuildChildMessage(value) {
32
+ if (typeof value !== 'object' || value === null || !('type' in value)) {
33
+ return false;
34
+ }
35
+ const message = value;
36
+ return message.type === 'result' || message.type === 'error';
37
+ }
38
+ function childProcessExecArgv() {
39
+ const filteredArgs = [];
40
+ let skipNextArg = false;
41
+ for (const arg of process.execArgv) {
42
+ if (skipNextArg) {
43
+ skipNextArg = false;
44
+ continue;
45
+ }
46
+ if (arg === '--input-type') {
47
+ skipNextArg = true;
48
+ continue;
49
+ }
50
+ if (arg.startsWith('--input-type=')) {
51
+ continue;
52
+ }
53
+ filteredArgs.push(arg);
54
+ }
55
+ return filteredArgs;
56
+ }
57
+ function appendStderrTail(currentTail, chunk) {
58
+ const nextTail = `${currentTail}${chunk.toString('utf8')}`;
59
+ if (Buffer.byteLength(nextTail, 'utf8') <= CHILD_STDERR_TAIL_BYTES) {
60
+ return nextTail;
61
+ }
62
+ return nextTail.slice(-CHILD_STDERR_TAIL_BYTES);
63
+ }
64
+ function formatChildExitError(exitCode, signal, stderrTail) {
65
+ const details = [`exitCode=${String(exitCode)}`, `signal=${String(signal)}`];
66
+ const trimmedStderrTail = stderrTail.trim();
67
+ if (trimmedStderrTail.length > 0) {
68
+ details.push(`stderr tail:\n${trimmedStderrTail}`);
69
+ }
70
+ return new Error(`Gondolin build child process exited without a result: ${details.join(' ')}`);
71
+ }
72
+ function forwardChildStream(stream, output, onChunk) {
73
+ stream?.on('data', (chunk) => {
74
+ onChunk?.(chunk);
75
+ const canContinue = output.write(chunk);
76
+ if (!canContinue) {
77
+ stream.pause();
78
+ process.nextTick(() => {
79
+ stream.resume();
80
+ });
81
+ }
82
+ });
83
+ }
84
+ export async function runGondolinImageBuildRequest(request, dependencies = {}) {
29
85
  const loadBuildConfig = dependencies.loadBuildConfig ?? loadBuildConfigFromJson;
30
86
  const buildImage = dependencies.buildImage ?? buildImageFromCore;
31
- const configDir = path.dirname(path.resolve(options.buildConfigPath));
32
- const buildConfig = await loadBuildConfig(options.buildConfigPath);
87
+ const configDir = path.dirname(path.resolve(request.buildConfigPath));
88
+ const buildConfig = await loadBuildConfig(request.buildConfigPath);
33
89
  const fingerprintInput = await loadSystemCacheIdentifier({
34
- filePath: options.systemCacheIdentifierPath,
90
+ filePath: request.systemCacheIdentifierPath,
35
91
  });
36
92
  const runtimeBuildVersionTag = await (dependencies.resolveRuntimeBuildVersionTag ?? resolveRuntimeBuildVersionTagDefault)();
37
93
  return await buildImage({
38
94
  buildConfig,
39
- cacheDir: options.cacheDir,
95
+ cacheDir: request.cacheDir,
40
96
  configDir,
41
97
  fingerprintInput,
42
- ...(options.streamPreview ? { output: options.streamPreview } : {}),
43
- ...(options.fullReset ? { fullReset: true } : {}),
98
+ ...(request.fullReset ? { fullReset: true } : {}),
44
99
  }, {
45
100
  gondolinVersion: runtimeBuildVersionTag,
46
101
  });
47
102
  }
103
+ export async function runGondolinBuildChildProcess(options) {
104
+ return await new Promise((resolve, reject) => {
105
+ const childModuleUrl = options.childModuleUrl ??
106
+ new URL('./gondolin-image-build-child-entrypoint.js', import.meta.url);
107
+ const childProcess = fork(childModuleUrl, [], {
108
+ execArgv: [...childProcessExecArgv()],
109
+ stdio: ['ignore', 'pipe', 'pipe', 'ipc'],
110
+ });
111
+ let childResult;
112
+ let childError;
113
+ let settled = false;
114
+ let stderrTail = '';
115
+ let graceTimer;
116
+ const clearGraceTimer = () => {
117
+ if (graceTimer) {
118
+ clearTimeout(graceTimer);
119
+ graceTimer = undefined;
120
+ }
121
+ };
122
+ forwardChildStream(childProcess.stdout, options.streamPreview);
123
+ forwardChildStream(childProcess.stderr, options.streamPreview, (chunk) => {
124
+ stderrTail = appendStderrTail(stderrTail, chunk);
125
+ });
126
+ childProcess.on('message', (message) => {
127
+ if (settled) {
128
+ return;
129
+ }
130
+ if (!isGondolinBuildChildMessage(message)) {
131
+ return;
132
+ }
133
+ if (message.type === 'result') {
134
+ childResult = message.result;
135
+ settled = true;
136
+ resolve(message.result);
137
+ graceTimer = setTimeout(() => {
138
+ if (!childProcess.killed) {
139
+ childProcess.kill();
140
+ }
141
+ }, CHILD_EXIT_GRACE_MS);
142
+ return;
143
+ }
144
+ childError = new Error(message.message);
145
+ if (message.stack) {
146
+ childError.stack = message.stack;
147
+ }
148
+ settled = true;
149
+ reject(childError);
150
+ });
151
+ childProcess.on('error', (error) => {
152
+ if (settled) {
153
+ return;
154
+ }
155
+ childError = error;
156
+ settled = true;
157
+ reject(error);
158
+ });
159
+ childProcess.on('close', (exitCode, signal) => {
160
+ clearGraceTimer();
161
+ if (settled) {
162
+ return;
163
+ }
164
+ if (childResult) {
165
+ resolve(childResult);
166
+ return;
167
+ }
168
+ if (childError) {
169
+ reject(childError);
170
+ return;
171
+ }
172
+ reject(formatChildExitError(exitCode, signal, stderrTail));
173
+ });
174
+ childProcess.send({
175
+ request: options.request,
176
+ type: 'build-request',
177
+ });
178
+ });
179
+ }
180
+ export async function buildGondolinImage(options, dependencies = {}) {
181
+ const request = {
182
+ buildConfigPath: options.buildConfigPath,
183
+ cacheDir: options.cacheDir,
184
+ systemCacheIdentifierPath: options.systemCacheIdentifierPath,
185
+ ...(options.fullReset ? { fullReset: true } : {}),
186
+ };
187
+ if (options.streamPreview) {
188
+ const runBuildChildProcess = dependencies.runBuildChildProcess ?? runGondolinBuildChildProcess;
189
+ return await runBuildChildProcess({ request, streamPreview: options.streamPreview });
190
+ }
191
+ return await runGondolinImageBuildRequest(request, dependencies);
192
+ }
48
193
  //# sourceMappingURL=gondolin-image-builder.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"gondolin-image-builder.js","sourceRoot":"","sources":["../../src/build/gondolin-image-builder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gondolin-image-builder.js","sourceRoot":"","sources":["../../src/build/gondolin-image-builder.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,4 @@
1
1
  export type ManagedImageBase = 'openclaw-gateway' | 'tool-vm' | 'worker-gateway';
2
- export declare const MANAGED_BASE_IMAGE_VERSION = "0.0.48";
3
- export declare const MANAGED_OPENCLAW_VERSION = "2026.5.2";
4
- export declare const MANAGED_OPENCLAW_AGENT_VM_PLUGIN_VERSION = "0.0.48";
5
2
  export interface ManagedImageSource {
6
3
  readonly kind: 'managedBase';
7
4
  readonly base: ManagedImageBase;
@@ -13,9 +10,18 @@ export interface GenerateManagedDockerfileOptions {
13
10
  readonly imageTargetName: string;
14
11
  readonly outputDirectory: string;
15
12
  readonly overlayPath?: string | undefined;
16
- readonly baseImageVersion: string;
13
+ readonly managedImageRelease: ManagedImageRelease;
17
14
  readonly requiredOpenClawPackages?: readonly string[];
18
15
  }
16
+ export interface ManagedBaseImageReference {
17
+ readonly repository: string;
18
+ readonly tag: string;
19
+ }
20
+ export interface ManagedImageRelease {
21
+ readonly baseImages: Readonly<Record<ManagedImageBase, ManagedBaseImageReference>>;
22
+ readonly openClawVersion: string;
23
+ readonly openClawAgentVmPluginVersion: string;
24
+ }
19
25
  export declare function generateManagedDockerfile(options: GenerateManagedDockerfileOptions): Promise<string>;
20
- export declare function resolveManagedBaseImageVersion(): Promise<string>;
26
+ export declare function resolveManagedImageRelease(): Promise<ManagedImageRelease>;
21
27
  //# sourceMappingURL=managed-image-dockerfile.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"managed-image-dockerfile.d.ts","sourceRoot":"","sources":["../../src/build/managed-image-dockerfile.ts"],"names":[],"mappings":"AAQA,MAAM,MAAM,gBAAgB,GAAG,kBAAkB,GAAG,SAAS,GAAG,gBAAgB,CAAC;AAEjF,eAAO,MAAM,0BAA0B,WAAW,CAAC;AACnD,eAAO,MAAM,wBAAwB,aAAa,CAAC;AACnD,eAAO,MAAM,wCAAwC,WAAW,CAAC;AAQjE,MAAM,WAAW,kBAAkB;IAClC,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAC7B,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;IAChC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACtC;AAED,MAAM,WAAW,gCAAgC;IAChD,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;IAChC,QAAQ,CAAC,iBAAiB,EAAE,SAAS,GAAG,QAAQ,CAAC;IACjD,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1C,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,wBAAwB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACtD;AA2GD,wBAAsB,yBAAyB,CAC9C,OAAO,EAAE,gCAAgC,GACvC,OAAO,CAAC,MAAM,CAAC,CA2BjB;AAED,wBAAsB,8BAA8B,IAAI,OAAO,CAAC,MAAM,CAAC,CAEtE"}
1
+ {"version":3,"file":"managed-image-dockerfile.d.ts","sourceRoot":"","sources":["../../src/build/managed-image-dockerfile.ts"],"names":[],"mappings":"AASA,MAAM,MAAM,gBAAgB,GAAG,kBAAkB,GAAG,SAAS,GAAG,gBAAgB,CAAC;AAOjF,MAAM,WAAW,kBAAkB;IAClC,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAC7B,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;IAChC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACtC;AAED,MAAM,WAAW,gCAAgC;IAChD,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;IAChC,QAAQ,CAAC,iBAAiB,EAAE,SAAS,GAAG,QAAQ,CAAC;IACjD,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1C,QAAQ,CAAC,mBAAmB,EAAE,mBAAmB,CAAC;IAClD,QAAQ,CAAC,wBAAwB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACtD;AAED,MAAM,WAAW,yBAAyB;IACzC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,mBAAmB;IACnC,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,gBAAgB,EAAE,yBAAyB,CAAC,CAAC,CAAC;IACnF,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,4BAA4B,EAAE,MAAM,CAAC;CAC9C;AA6HD,wBAAsB,yBAAyB,CAC9C,OAAO,EAAE,gCAAgC,GACvC,OAAO,CAAC,MAAM,CAAC,CA6BjB;AAmCD,wBAAsB,0BAA0B,IAAI,OAAO,CAAC,mBAAmB,CAAC,CAY/E"}
@@ -1,13 +1,10 @@
1
1
  import fs from 'node:fs/promises';
2
2
  import path from 'node:path';
3
+ import { fileURLToPath } from 'node:url';
3
4
  import { z } from 'zod';
4
5
  import { loadJsonConfigFile } from '../config/json-config-file.js';
5
6
  import { formatZodError } from '../cli/format-zod-error.js';
6
- export const MANAGED_BASE_IMAGE_VERSION = '0.0.48';
7
- export const MANAGED_OPENCLAW_VERSION = '2026.5.2';
8
- export const MANAGED_OPENCLAW_AGENT_VM_PLUGIN_VERSION = '0.0.48';
9
7
  const managedOpenClawAgentVmPluginPackageName = '@agent-vm/openclaw-agent-vm-plugin';
10
- const managedOpenClawAgentVmPluginPackage = `${managedOpenClawAgentVmPluginPackageName}@${MANAGED_OPENCLAW_AGENT_VM_PLUGIN_VERSION}`;
11
8
  const managedOpenClawAgentVmPluginExtensionPath = '/home/openclaw/.openclaw/extensions/gondolin';
12
9
  const managedOpenClawAgentVmPluginPackagePath = '/pnpm/global/5/node_modules/@agent-vm/openclaw-agent-vm-plugin/dist';
13
10
  const overlayCopySchema = z
@@ -25,11 +22,26 @@ const managedImageOverlaySchema = z
25
22
  runAfterBase: z.array(z.string().min(1)).default([]),
26
23
  })
27
24
  .strict();
28
- const baseImageRepositoryByBase = {
29
- 'openclaw-gateway': 'ghcr.io/shravansunder/agent-vm-openclaw-gateway-base',
30
- 'tool-vm': 'ghcr.io/shravansunder/agent-vm-tool-vm-base',
31
- 'worker-gateway': 'ghcr.io/shravansunder/agent-vm-worker-gateway-base',
32
- };
25
+ const managedBaseImageReferenceSchema = z
26
+ .object({
27
+ repository: z.string().min(1),
28
+ tag: z.string().min(1),
29
+ })
30
+ .strict();
31
+ const managedImageReleaseSchema = z
32
+ .object({
33
+ schemaVersion: z.literal(1),
34
+ baseImages: z
35
+ .object({
36
+ 'openclaw-gateway': managedBaseImageReferenceSchema,
37
+ 'tool-vm': managedBaseImageReferenceSchema,
38
+ 'worker-gateway': managedBaseImageReferenceSchema,
39
+ })
40
+ .strict(),
41
+ openClawVersion: z.string().min(1),
42
+ openClawAgentVmPluginVersion: z.string().min(1),
43
+ })
44
+ .strict();
33
45
  async function loadManagedImageOverlay(overlayPath) {
34
46
  if (!overlayPath) {
35
47
  return {
@@ -51,8 +63,9 @@ function shellJoin(argumentsToQuote) {
51
63
  return argumentsToQuote.map((argument) => JSON.stringify(argument)).join(' ');
52
64
  }
53
65
  function renderManagedDockerfile(props) {
66
+ const managedOpenClawAgentVmPluginPackage = `${managedOpenClawAgentVmPluginPackageName}@${props.openClawAgentVmPluginVersion}`;
54
67
  const lines = [
55
- `FROM ${baseImageRepositoryByBase[props.base]}:${props.baseImageVersion}`,
68
+ `FROM ${props.baseImage.repository}:${props.baseImage.tag}`,
56
69
  '',
57
70
  '# Generated by agent-vm from a managed image profile. Do not edit by hand.',
58
71
  ];
@@ -108,13 +121,49 @@ export async function generateManagedDockerfile(options) {
108
121
  const dockerfilePath = path.join(options.outputDirectory, 'Dockerfile');
109
122
  await fs.writeFile(dockerfilePath, renderManagedDockerfile({
110
123
  base: options.base,
111
- baseImageVersion: options.baseImageVersion,
124
+ baseImage: options.managedImageRelease.baseImages[options.base],
112
125
  overlay,
126
+ openClawAgentVmPluginVersion: options.managedImageRelease.openClawAgentVmPluginVersion,
113
127
  requiredOpenClawPackages: options.requiredOpenClawPackages ?? [],
114
128
  }), 'utf8');
115
129
  return dockerfilePath;
116
130
  }
117
- export async function resolveManagedBaseImageVersion() {
118
- return MANAGED_BASE_IMAGE_VERSION;
131
+ async function resolveAgentVmPackageRoot() {
132
+ let searchDirectory = path.dirname(fileURLToPath(import.meta.url));
133
+ for (;;) {
134
+ const packageJsonPath = path.join(searchDirectory, 'package.json');
135
+ try {
136
+ // oxlint-disable-next-line no-await-in-loop -- upward package root discovery is intentionally sequential
137
+ const packageJson = await loadJsonConfigFile(packageJsonPath);
138
+ if (typeof packageJson === 'object' &&
139
+ packageJson !== null &&
140
+ 'name' in packageJson &&
141
+ packageJson.name === '@agent-vm/agent-vm') {
142
+ return searchDirectory;
143
+ }
144
+ }
145
+ catch (error) {
146
+ if (typeof error !== 'object' ||
147
+ error === null ||
148
+ !('code' in error) ||
149
+ error.code !== 'ENOENT') {
150
+ throw error;
151
+ }
152
+ }
153
+ const parentDirectory = path.dirname(searchDirectory);
154
+ if (parentDirectory === searchDirectory) {
155
+ throw new Error('Unable to resolve @agent-vm/agent-vm package root.');
156
+ }
157
+ searchDirectory = parentDirectory;
158
+ }
159
+ }
160
+ export async function resolveManagedImageRelease() {
161
+ const packageRoot = await resolveAgentVmPackageRoot();
162
+ const manifestPath = path.join(packageRoot, 'managed-images.json');
163
+ const parsedRelease = managedImageReleaseSchema.safeParse(await loadJsonConfigFile(manifestPath));
164
+ if (!parsedRelease.success) {
165
+ throw new Error(formatZodError(`Invalid managed image release manifest at ${manifestPath}:`, parsedRelease.error));
166
+ }
167
+ return parsedRelease.data;
119
168
  }
120
169
  //# sourceMappingURL=managed-image-dockerfile.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"managed-image-dockerfile.js","sourceRoot":"","sources":["../../src/build/managed-image-dockerfile.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"managed-image-dockerfile.js","sourceRoot":"","sources":["../../src/build/managed-image-dockerfile.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,7 @@ export interface StaleImageEntry {
2
2
  readonly absolutePath: string;
3
3
  readonly family: 'gateway' | 'toolVm';
4
4
  readonly fingerprint: string;
5
+ readonly modifiedAtMs: number;
5
6
  readonly profileName: string;
6
7
  readonly sizeBytes: number;
7
8
  }
@@ -13,5 +14,10 @@ export declare function findStaleImageDirectories(options: {
13
14
  readonly cacheDir: string;
14
15
  readonly currentFingerprints: CurrentImageFingerprints;
15
16
  }): Promise<readonly StaleImageEntry[]>;
17
+ export declare function findPrunableImageDirectories(options: {
18
+ readonly cacheDir: string;
19
+ readonly currentFingerprints: CurrentImageFingerprints;
20
+ readonly retainStaleGenerationsPerProfile: number;
21
+ }): Promise<readonly StaleImageEntry[]>;
16
22
  export declare function deleteStaleImageDirectories(entries: readonly StaleImageEntry[]): Promise<void>;
17
23
  //# sourceMappingURL=stale-image-cleaner.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"stale-image-cleaner.d.ts","sourceRoot":"","sources":["../../src/build/stale-image-cleaner.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,eAAe;IAC/B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,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"}
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,YAAY,EAAE,MAAM,CAAC;IAC9B,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,CAyCtC;AA2BD,wBAAsB,4BAA4B,CAAC,OAAO,EAAE;IAC3D,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,mBAAmB,EAAE,wBAAwB,CAAC;IACvD,QAAQ,CAAC,gCAAgC,EAAE,MAAM,CAAC;CAClD,GAAG,OAAO,CAAC,SAAS,eAAe,EAAE,CAAC,CAYtC;AAED,wBAAsB,2BAA2B,CAChD,OAAO,EAAE,SAAS,eAAe,EAAE,GACjC,OAAO,CAAC,IAAI,CAAC,CAIf"}
@@ -52,10 +52,12 @@ export async function findStaleImageDirectories(options) {
52
52
  continue;
53
53
  }
54
54
  const absolutePath = path.join(imageCacheDirectory, directoryEntry.name);
55
+ const directoryStat = await fs.stat(absolutePath);
55
56
  staleEntries.push({
56
57
  absolutePath,
57
58
  family,
58
59
  fingerprint: directoryEntry.name,
60
+ modifiedAtMs: directoryStat.mtimeMs,
59
61
  profileName,
60
62
  sizeBytes: await getDirectorySizeBytes(absolutePath),
61
63
  });
@@ -64,6 +66,36 @@ export async function findStaleImageDirectories(options) {
64
66
  }
65
67
  return staleEntries;
66
68
  }
69
+ function groupImageEntriesByProfile(entries) {
70
+ const groupedEntries = new Map();
71
+ for (const entry of entries) {
72
+ const groupKey = `${entry.family}/${entry.profileName}`;
73
+ const group = groupedEntries.get(groupKey) ?? [];
74
+ group.push(entry);
75
+ groupedEntries.set(groupKey, group);
76
+ }
77
+ return new Map([...groupedEntries.entries()].map(([groupKey, group]) => [
78
+ groupKey,
79
+ group.toSorted((leftEntry, rightEntry) => {
80
+ const modifiedDifference = rightEntry.modifiedAtMs - leftEntry.modifiedAtMs;
81
+ if (modifiedDifference !== 0) {
82
+ return modifiedDifference;
83
+ }
84
+ return leftEntry.fingerprint.localeCompare(rightEntry.fingerprint);
85
+ }),
86
+ ]));
87
+ }
88
+ export async function findPrunableImageDirectories(options) {
89
+ const staleEntries = await findStaleImageDirectories({
90
+ cacheDir: options.cacheDir,
91
+ currentFingerprints: options.currentFingerprints,
92
+ });
93
+ const prunableEntries = [];
94
+ for (const group of groupImageEntriesByProfile(staleEntries).values()) {
95
+ prunableEntries.push(...group.slice(options.retainStaleGenerationsPerProfile));
96
+ }
97
+ return prunableEntries;
98
+ }
67
99
  export async function deleteStaleImageDirectories(entries) {
68
100
  await Promise.all(entries.map(async (entry) => await fs.rm(entry.absolutePath, { force: true, recursive: true })));
69
101
  }
@@ -1 +1 @@
1
- {"version":3,"file":"stale-image-cleaner.js","sourceRoot":"","sources":["../../src/build/stale-image-cleaner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"stale-image-cleaner.js","sourceRoot":"","sources":["../../src/build/stale-image-cleaner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAgB7B,KAAK,UAAU,UAAU,CAAC,QAAgB;IACzC,IAAI,CAAC;QACJ,MAAM,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC1B,OAAO,IAAI,CAAC;IACb,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,KAAK,CAAC;IACd,CAAC;AACF,CAAC;AAED,KAAK,UAAU,qBAAqB,CAAC,aAAqB;IACzD,IAAI,cAAc,GAAG,CAAC,CAAC;IACvB,IAAI,CAAC;QACJ,KAAK,MAAM,cAAc,IAAI,MAAM,EAAE,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;YACvF,MAAM,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,cAAc,CAAC,IAAI,CAAC,CAAC;YACxE,IAAI,cAAc,CAAC,WAAW,EAAE,EAAE,CAAC;gBAClC,cAAc,IAAI,MAAM,qBAAqB,CAAC,iBAAiB,CAAC,CAAC;gBACjE,SAAS;YACV,CAAC;YACD,IAAI,cAAc,CAAC,MAAM,EAAE,EAAE,CAAC;gBAC7B,cAAc,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC;YAC3D,CAAC;QACF,CAAC;IACF,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,cAAc,CAAC;IACvB,CAAC;IACD,OAAO,cAAc,CAAC;AACvB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAAC,OAG/C;IACA,MAAM,YAAY,GAAsB,EAAE,CAAC;IAE3C,KAAK,MAAM,CAAC,MAAM,EAAE,kBAAkB,EAAE,mBAAmB,CAAC,IAAI;QAC/D,CAAC,SAAS,EAAE,gBAAgB,EAAE,OAAO,CAAC,mBAAmB,CAAC,QAAQ,CAAC;QACnE,CAAC,QAAQ,EAAE,gBAAgB,EAAE,OAAO,CAAC,mBAAmB,CAAC,OAAO,CAAC;KACxD,EAAE,CAAC;QACZ,MAAM,oBAAoB,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC;QAC7E,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC;YAC/C,SAAS;QACV,CAAC;QAED,KAAK,MAAM,qBAAqB,IAAI,MAAM,EAAE,CAAC,OAAO,CAAC,oBAAoB,EAAE;YAC1E,aAAa,EAAE,IAAI;SACnB,CAAC,EAAE,CAAC;YACJ,IAAI,CAAC,qBAAqB,CAAC,WAAW,EAAE,EAAE,CAAC;gBAC1C,SAAS;YACV,CAAC;YACD,MAAM,WAAW,GAAG,qBAAqB,CAAC,IAAI,CAAC;YAC/C,MAAM,kBAAkB,GAAG,mBAAmB,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC;YACpE,MAAM,mBAAmB,GAAG,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,WAAW,CAAC,CAAC;YACzE,KAAK,MAAM,cAAc,IAAI,MAAM,EAAE,CAAC,OAAO,CAAC,mBAAmB,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;gBAC7F,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,IAAI,cAAc,CAAC,IAAI,KAAK,kBAAkB,EAAE,CAAC;oBACjF,SAAS;gBACV,CAAC;gBAED,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,cAAc,CAAC,IAAI,CAAC,CAAC;gBACzE,MAAM,aAAa,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBAClD,YAAY,CAAC,IAAI,CAAC;oBACjB,YAAY;oBACZ,MAAM;oBACN,WAAW,EAAE,cAAc,CAAC,IAAI;oBAChC,YAAY,EAAE,aAAa,CAAC,OAAO;oBACnC,WAAW;oBACX,SAAS,EAAE,MAAM,qBAAqB,CAAC,YAAY,CAAC;iBACpD,CAAC,CAAC;YACJ,CAAC;QACF,CAAC;IACF,CAAC;IAED,OAAO,YAAY,CAAC;AACrB,CAAC;AAED,SAAS,0BAA0B,CAClC,OAAmC;IAEnC,MAAM,cAAc,GAAG,IAAI,GAAG,EAA6B,CAAC;IAC5D,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,QAAQ,GAAG,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;QACxD,MAAM,KAAK,GAAG,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QACjD,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClB,cAAc,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IACrC,CAAC;IAED,OAAO,IAAI,GAAG,CACb,CAAC,GAAG,cAAc,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC;QACxD,QAAQ;QACR,KAAK,CAAC,QAAQ,CAAC,CAAC,SAAS,EAAE,UAAU,EAAE,EAAE;YACxC,MAAM,kBAAkB,GAAG,UAAU,CAAC,YAAY,GAAG,SAAS,CAAC,YAAY,CAAC;YAC5E,IAAI,kBAAkB,KAAK,CAAC,EAAE,CAAC;gBAC9B,OAAO,kBAAkB,CAAC;YAC3B,CAAC;YACD,OAAO,SAAS,CAAC,WAAW,CAAC,aAAa,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;QACpE,CAAC,CAAC;KACF,CAAC,CACF,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAAC,OAIlD;IACA,MAAM,YAAY,GAAG,MAAM,yBAAyB,CAAC;QACpD,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,mBAAmB,EAAE,OAAO,CAAC,mBAAmB;KAChD,CAAC,CAAC;IACH,MAAM,eAAe,GAAsB,EAAE,CAAC;IAE9C,KAAK,MAAM,KAAK,IAAI,0BAA0B,CAAC,YAAY,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;QACvE,eAAe,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,gCAAgC,CAAC,CAAC,CAAC;IAChF,CAAC;IAED,OAAO,eAAe,CAAC;AACxB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAChD,OAAmC;IAEnC,MAAM,OAAO,CAAC,GAAG,CAChB,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAC/F,CAAC;AACH,CAAC"}
@@ -0,0 +1,32 @@
1
+ export type GondolinZigCompatibilityResult = {
2
+ readonly compatible: true;
3
+ readonly hint: string;
4
+ readonly installedVersion: string;
5
+ readonly kind: 'compatible';
6
+ readonly requiredVersion: string;
7
+ } | {
8
+ readonly compatible: false;
9
+ readonly hint: string;
10
+ readonly kind: 'missing';
11
+ readonly requiredVersion: string;
12
+ } | {
13
+ readonly compatible: false;
14
+ readonly hint: string;
15
+ readonly installedVersion: string;
16
+ readonly kind: 'incompatible';
17
+ readonly requiredVersion: string;
18
+ };
19
+ export declare function resolveGondolinCompatibleZigVersion(resolveRequiredVersion?: () => Promise<string>): Promise<string>;
20
+ export declare function resolveHostZigVersion(): Promise<string | undefined>;
21
+ export declare function isZigVersionAtLeast(version: string, minimumVersion: string): boolean;
22
+ export declare function buildZigInstallHint(requiredZigVersion: string | undefined): string;
23
+ export declare function buildZigUpgradeHint(requiredZigVersion: string): string;
24
+ export declare function checkGondolinZigCompatibility(options: {
25
+ readonly installedVersion?: string;
26
+ readonly requiredVersion: string;
27
+ }): GondolinZigCompatibilityResult;
28
+ export declare function assertGondolinZigCompatibility(options: {
29
+ readonly installedVersion?: string;
30
+ readonly requiredVersion: string;
31
+ }): void;
32
+ //# sourceMappingURL=zig-compatibility.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zig-compatibility.d.ts","sourceRoot":"","sources":["../../src/build/zig-compatibility.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,8BAA8B,GACvC;IACA,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAC5B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;CAChC,GACD;IACA,QAAQ,CAAC,UAAU,EAAE,KAAK,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;CAChC,GACD;IACA,QAAQ,CAAC,UAAU,EAAE,KAAK,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;CAChC,CAAC;AAEL,wBAAsB,mCAAmC,CACxD,sBAAsB,GAAE,MAAM,OAAO,CAAC,MAAM,CAAoC,GAC9E,OAAO,CAAC,MAAM,CAAC,CAEjB;AAeD,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAUzE;AAuFD,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAOpF;AAED,wBAAgB,mBAAmB,CAAC,kBAAkB,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAIlF;AAED,wBAAgB,mBAAmB,CAAC,kBAAkB,EAAE,MAAM,GAAG,MAAM,CAEtE;AAED,wBAAgB,6BAA6B,CAAC,OAAO,EAAE;IACtD,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;CACjC,GAAG,8BAA8B,CAyBjC;AAED,wBAAgB,8BAA8B,CAAC,OAAO,EAAE;IACvD,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;CACjC,GAAG,IAAI,CASP"}