@dsh-enhanced/lark-channel 0.1.66 → 0.1.68

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 (99) hide show
  1. package/README.md +11 -7
  2. package/docs/operations.md +4 -1
  3. package/docs/rsi-setup.md +6 -6
  4. package/lib/adapter.d.ts +9 -0
  5. package/lib/adapter.d.ts.map +1 -1
  6. package/lib/adapter.js +41 -8
  7. package/lib/adapter.js.map +1 -1
  8. package/lib/config.d.ts +2 -0
  9. package/lib/config.d.ts.map +1 -1
  10. package/lib/config.js +2 -0
  11. package/lib/config.js.map +1 -1
  12. package/lib/group-thread.d.ts +9 -0
  13. package/lib/group-thread.d.ts.map +1 -1
  14. package/lib/group-thread.js +16 -2
  15. package/lib/group-thread.js.map +1 -1
  16. package/lib/normalize.d.ts.map +1 -1
  17. package/lib/normalize.js +7 -4
  18. package/lib/normalize.js.map +1 -1
  19. package/lib/rsi-bootstrap-manifest.d.ts +10 -5
  20. package/lib/rsi-bootstrap-manifest.d.ts.map +1 -1
  21. package/lib/rsi-bootstrap-manifest.js +133 -41
  22. package/lib/rsi-bootstrap-manifest.js.map +1 -1
  23. package/lib/rsi-build.d.ts +48 -38
  24. package/lib/rsi-build.d.ts.map +1 -1
  25. package/lib/rsi-build.js +68 -386
  26. package/lib/rsi-build.js.map +1 -1
  27. package/lib/rsi-install-inputs.js +2 -2
  28. package/lib/rsi-install-inputs.js.map +1 -1
  29. package/lib/rsi-install.d.ts +55 -3
  30. package/lib/rsi-install.d.ts.map +1 -1
  31. package/lib/rsi-install.js +259 -36
  32. package/lib/rsi-install.js.map +1 -1
  33. package/lib/rsi-local-update-build.d.ts +7 -7
  34. package/lib/rsi-local-update-build.d.ts.map +1 -1
  35. package/lib/rsi-local-update-build.js +8 -9
  36. package/lib/rsi-local-update-build.js.map +1 -1
  37. package/lib/rsi-local-update.d.ts +0 -3
  38. package/lib/rsi-local-update.d.ts.map +1 -1
  39. package/lib/rsi-local-update.js +1 -2
  40. package/lib/rsi-local-update.js.map +1 -1
  41. package/lib/rsi-memory-learning.d.ts +7 -1
  42. package/lib/rsi-memory-learning.d.ts.map +1 -1
  43. package/lib/rsi-memory-learning.js +11 -4
  44. package/lib/rsi-memory-learning.js.map +1 -1
  45. package/lib/rsi-native-install.d.ts +2 -2
  46. package/lib/rsi-native-install.d.ts.map +1 -1
  47. package/lib/rsi-native-install.js +15 -10
  48. package/lib/rsi-native-install.js.map +1 -1
  49. package/lib/rsi-native-profile.d.ts +10 -4
  50. package/lib/rsi-native-profile.d.ts.map +1 -1
  51. package/lib/rsi-native-profile.js +110 -22
  52. package/lib/rsi-native-profile.js.map +1 -1
  53. package/lib/rsi-ordinary-use-learning.d.ts +60 -0
  54. package/lib/rsi-ordinary-use-learning.d.ts.map +1 -0
  55. package/lib/rsi-ordinary-use-learning.js +103 -0
  56. package/lib/rsi-ordinary-use-learning.js.map +1 -0
  57. package/lib/rsi-plugin-creation.d.ts +1 -2
  58. package/lib/rsi-plugin-creation.d.ts.map +1 -1
  59. package/lib/rsi-plugin-creation.js +4 -12
  60. package/lib/rsi-plugin-creation.js.map +1 -1
  61. package/lib/rsi-profile.d.ts +3 -0
  62. package/lib/rsi-profile.d.ts.map +1 -1
  63. package/lib/rsi-profile.js +54 -1
  64. package/lib/rsi-profile.js.map +1 -1
  65. package/lib/rsi-release-build.d.ts +8 -6
  66. package/lib/rsi-release-build.d.ts.map +1 -1
  67. package/lib/rsi-release-build.js +13 -69
  68. package/lib/rsi-release-build.js.map +1 -1
  69. package/lib/rsi-scanner-retirement-stage.d.ts.map +1 -1
  70. package/lib/rsi-scanner-retirement-stage.js +3 -5
  71. package/lib/rsi-scanner-retirement-stage.js.map +1 -1
  72. package/lib/rsi-scanner-retirement-transition.d.ts.map +1 -1
  73. package/lib/rsi-scanner-retirement-transition.js +22 -12
  74. package/lib/rsi-scanner-retirement-transition.js.map +1 -1
  75. package/lib/rsi-setup.d.ts +6 -1
  76. package/lib/rsi-setup.d.ts.map +1 -1
  77. package/lib/rsi-setup.js +49 -54
  78. package/lib/rsi-setup.js.map +1 -1
  79. package/lib/sdk.d.ts +12 -2
  80. package/lib/sdk.d.ts.map +1 -1
  81. package/lib/sdk.js +65 -2
  82. package/lib/sdk.js.map +1 -1
  83. package/lib/service.d.ts.map +1 -1
  84. package/lib/service.js +1 -0
  85. package/lib/service.js.map +1 -1
  86. package/lib/types.d.ts +18 -0
  87. package/lib/types.d.ts.map +1 -1
  88. package/lib/types.js.map +1 -1
  89. package/lib/version.d.ts +1 -1
  90. package/lib/version.js +1 -1
  91. package/package.json +24 -21
  92. package/lib/rsi-creation-build.d.ts +0 -51
  93. package/lib/rsi-creation-build.d.ts.map +0 -1
  94. package/lib/rsi-creation-build.js +0 -415
  95. package/lib/rsi-creation-build.js.map +0 -1
  96. package/lib/rsi-local-resources.d.ts +0 -37
  97. package/lib/rsi-local-resources.d.ts.map +0 -1
  98. package/lib/rsi-local-resources.js +0 -189
  99. package/lib/rsi-local-resources.js.map +0 -1
package/lib/rsi-build.js CHANGED
@@ -1,29 +1,15 @@
1
- import { createHash } from 'node:crypto';
2
1
  import { spawn } from 'node:child_process';
2
+ import { createHash } from 'node:crypto';
3
3
  import { constants } from 'node:fs';
4
- import { chmod, lstat, mkdir, mkdtemp, open, readdir, realpath, rename, rm, stat } from 'node:fs/promises';
5
- import { basename, dirname, isAbsolute, join, resolve } from 'node:path';
6
- import { homedir } from 'node:os';
7
- import { isDeepStrictEqual } from 'node:util';
8
- import { readRsiSourceWorkspace } from './rsi-source.js';
9
- const COMMIT = /^[a-f0-9]{40}$/u;
10
- const IMAGE = /^sha256:[a-f0-9]{64}$/u;
11
- const PROFILE = /^[A-Za-z0-9][A-Za-z0-9._-]{0,63}$/u;
12
- const SECCOMP_SHA = 'b1e4b5b709578785bd2aff4a3a344301997571ad0e8ae5747aec176571ddc342';
13
- const LEGACY_BUILDER_SHA = '7b7eb0797e1ca543fb1ffa0463eb78b3ecad14f28fe4bfca25651640aac4669b';
14
- const LEGACY_DOCKERFILE_SHA = 'c936e136517c5bc85603e7187fe74691e32f954f57b5076946dc42fed33c65f5';
15
- const BUILDER_SHA = '0f17e5976f7c7e689ca1cd965d7b24a8e2032c216a12c321af90c172e0e8b51b';
16
- const DOCKERFILE_SHA = 'b3b7d88cf3cf648db2082c49189ec0480bf6969be911448293cf202216be6906';
17
- const BASE_IMAGE = 'node:22.23.2-bookworm-slim@sha256:48e4b67d85f87bd551df43704e24d252f56cc5f8e9718841aace50f19948f0f9';
18
- const PACKAGE_MANAGER = 'pnpm@11.7.0';
4
+ import { lstat, open, realpath } from 'node:fs/promises';
5
+ import { isAbsolute, join, resolve } from 'node:path';
19
6
  const MAX_OUTPUT = 65_536;
7
+ const PROFILE = /^[A-Za-z0-9][A-Za-z0-9._-]{0,63}$/u;
20
8
  export class RsiBuildUnavailableError extends Error {
21
9
  code = 'rsi-build-unavailable';
22
10
  constructor(message) { super(`rsi build unavailable: ${message}`); }
23
11
  }
24
12
  function fail(message) { throw new Error(`rsi build: ${message}`); }
25
- function digest(bytes) { return createHash('sha256').update(bytes).digest('hex'); }
26
- function exactPath(path) { return isAbsolute(path) && resolve(path) === path && !path.includes('\0'); }
27
13
  function diagnosticTail(value) {
28
14
  const redacted = value.replace(/https?:\/\/[^\s/@]+:[^\s/@]+@/giu, 'https://[redacted]@')
29
15
  .replace(/authorization\s*:\s*[^\s]+/giu, 'authorization: [redacted]');
@@ -75,7 +61,7 @@ async function syncDirectory(path) {
75
61
  await fd.close();
76
62
  }
77
63
  }
78
- /** Drain a cancelled builder, giving its own finally block time to remove its context. */
64
+ /** Drain a cancelled subprocess, giving its own finally block time to clean up. */
79
65
  async function command(executable, args, environment, signal, timeoutMs, outputLimit = MAX_OUTPUT) {
80
66
  signal.throwIfAborted();
81
67
  const deadline = AbortSignal.any([signal, AbortSignal.timeout(timeoutMs)]);
@@ -126,8 +112,7 @@ async function command(executable, args, environment, signal, timeoutMs, outputL
126
112
  stdout.push(data);
127
113
  }
128
114
  else {
129
- // Docker build progress can be large. Drain it without logging it or
130
- // treating normal progress as a malformed JSON result.
115
+ // Drain progress output without logging it or treating it as result data.
131
116
  stderrTail = (stderrTail + data.toString('utf8')).slice(-8_192);
132
117
  }
133
118
  };
@@ -141,9 +126,7 @@ async function command(executable, args, environment, signal, timeoutMs, outputL
141
126
  if (spawnError || overLimit || deadline.aborted || code !== 0 || killed !== null) {
142
127
  // Git calls lead with `-c key=value` / `-C dir`; name the subcommand instead.
143
128
  const gitIndex = executable.endsWith('/git') ? args.findIndex((arg, index) => !arg.startsWith('-') && args[index - 1] !== '-c' && args[index - 1] !== '-C') : -1;
144
- const stage = executable === process.execPath ? 'source-image-builder'
145
- : gitIndex >= 0 ? `git-${args[gitIndex]}${overLimit ? '-output-limit' : ''}`
146
- : args[0] === 'image' ? 'image-inspect' : args[0] ?? 'command';
129
+ const stage = gitIndex >= 0 ? `git-${args[gitIndex]}${overLimit ? '-output-limit' : ''}` : args[0] ?? 'command';
147
130
  const tail = diagnosticTail(stderrTail);
148
131
  reject(new Error(`rsi build: subprocess failed, was cancelled, or exceeded its bound (stage=${stage}, exit=${code ?? 'signal'}${tail ? `, stderr=${tail}` : ''})`));
149
132
  }
@@ -152,377 +135,76 @@ async function command(executable, args, environment, signal, timeoutMs, outputL
152
135
  });
153
136
  });
154
137
  }
155
- function isolatedEnvironment(home) {
156
- return { PATH: '/usr/bin:/bin', LANG: 'C', LC_ALL: 'C', HOME: home, DOCKER_CONFIG: join(home, 'docker-config'),
157
- DOCKER_BUILDKIT: '1' };
158
- }
159
- function hostPlatform() {
160
- if (process.platform === 'linux' && process.arch === 'x64')
161
- return 'linux/amd64';
162
- if (process.platform === 'darwin' && process.arch === 'x64')
163
- return 'darwin/amd64';
164
- if (process.platform === 'darwin' && process.arch === 'arm64')
165
- return 'darwin/arm64';
166
- throw new RsiBuildUnavailableError('Linux x64 or native macOS x64/arm64 is required');
167
- }
168
- async function localSocket(path) {
169
- const expected = join(homedir(), '.docker', 'run', 'docker.sock');
170
- const socket = path ?? expected;
171
- if (!exactPath(socket) || socket !== expected)
172
- fail('Docker socket must be the owner local socket');
173
- let canonical;
174
- try {
175
- canonical = await realpath(socket);
176
- }
177
- catch (error) {
178
- if (error.code === 'ENOENT')
179
- throw new RsiBuildUnavailableError('local Docker socket is unavailable');
180
- throw error;
181
- }
182
- if (canonical !== socket)
183
- fail('Docker socket must be the owner local socket');
184
- let info, parent;
185
- try {
186
- [info, parent] = await Promise.all([lstat(socket), lstat(dirname(socket))]);
187
- }
188
- catch (error) {
189
- if (error.code === 'ENOENT')
190
- throw new RsiBuildUnavailableError('local Docker socket is unavailable');
191
- throw error;
192
- }
193
- if (!info.isSocket() || info.uid !== process.getuid?.() || !parent.isDirectory()
194
- || parent.uid !== process.getuid?.() || parent.mode & 0o022)
195
- fail('Docker socket is not owner-safe');
196
- return socket;
197
- }
198
- function dockerArgs(args, scratch, socket) {
199
- return socket === undefined ? args : ['--config', join(scratch, 'docker-config'), '-H', `unix://${socket}`, ...args];
200
- }
201
- // Shared by the release-toolchain preparer; these helpers never change a profile.
202
- export const rsiBuildResources = { directory, readStable, writeExclusive, syncDirectory, command, isolatedEnvironment,
203
- hostPlatform, localSocket, dockerArgs, runtime, imageExists };
204
- async function dockerExecutable(requested) {
205
- let path = requested;
206
- if (path === undefined) {
207
- for (const folder of (process.env.PATH ?? '').split(':')) {
208
- if (!folder || !exactPath(folder))
209
- continue;
210
- const candidate = join(folder, 'docker');
211
- try {
212
- await lstat(candidate);
213
- path = candidate;
214
- break;
215
- }
216
- catch (error) {
217
- if (error.code !== 'ENOENT')
218
- throw error;
219
- }
220
- }
221
- path ??= '/usr/bin/docker';
222
- }
223
- if (!exactPath(path))
224
- fail('Docker path must be absolute');
225
- let canonical;
226
- try {
227
- canonical = await realpath(path);
228
- }
229
- catch (error) {
230
- if (error.code === 'ENOENT')
231
- throw new RsiBuildUnavailableError('Docker executable was not found');
232
- throw error;
233
- }
234
- const file = await lstat(canonical), parent = await lstat(dirname(canonical)), uid = process.getuid?.();
235
- if (!file.isFile() || file.isSymbolicLink() || file.mode & 0o022 || !(file.mode & 0o111)
236
- || !parent.isDirectory() || parent.isSymbolicLink() || parent.mode & 0o002
237
- || uid !== undefined && file.uid !== uid && file.uid !== 0)
238
- fail('Docker executable is not owner-safe');
239
- return { path: canonical, sha256: digest(await readStable(canonical, 100_000_000, false, true)) };
240
- }
241
- async function runtime(dockerPath, scratch, signal, platform, socket) {
242
- let output;
243
- try {
244
- output = await command(dockerPath, dockerArgs(['version', '--format', '{{.Server.Version}}/{{.Server.Os}}/{{.Server.Arch}}'], scratch, socket), isolatedEnvironment(scratch), signal, 10_000, 4096);
245
- }
246
- catch {
247
- if (signal.aborted)
248
- signal.throwIfAborted();
249
- throw new RsiBuildUnavailableError('local Docker daemon is unavailable');
250
- }
251
- const arch = platform.endsWith('/arm64') ? 'arm64' : 'amd64';
252
- if (output !== `29.4.1/linux/${arch}`)
253
- throw new RsiBuildUnavailableError(`Docker Server 29.4.1/linux/${arch} is required`);
254
- if (socket === undefined)
255
- return undefined;
256
- let daemonId;
257
- try {
258
- daemonId = await command(dockerPath, dockerArgs(['info', '--format', '{{.ID}}'], scratch, socket), isolatedEnvironment(scratch), signal, 10_000, 4096);
259
- }
260
- catch {
261
- signal.throwIfAborted();
262
- throw new RsiBuildUnavailableError('local Docker daemon is unavailable');
263
- }
264
- if (!/^[A-Za-z0-9][A-Za-z0-9:._-]{7,127}$/u.test(daemonId))
265
- fail('Docker daemon identity is invalid');
266
- return daemonId;
267
- }
268
- async function sourceInputs(source, expectedRepository) {
269
- if (source.schemaVersion !== 1 || !COMMIT.test(source.sourceCommit) || source.repository !== expectedRepository
270
- || !COMMIT.test(source.baseline.initialCommit)
271
- || source.baseline.ref !== 'refs/dsh-source/repairs' || source.baseline.targetBranch !== 'repairs'
272
- || source.baseline.remote !== join(dirname(expectedRepository), 'release.git'))
273
- fail('source workspace binding is invalid');
274
- if (source.baseline.initialCommit !== source.sourceCommit) {
275
- // A newer checkout must be derived from retained, Host-signed maintenance
276
- // history. A caller-supplied commit alone cannot replace the original root.
277
- const current = await readRsiSourceWorkspace({ dshHome: dirname(dirname(dirname(expectedRepository))),
278
- profile: basename(dirname(expectedRepository)),
279
- ...(source.origin.kind === 'local-head' ? { sourceRepository: source.origin.locator } : {}) });
280
- if (!isDeepStrictEqual(current, source))
281
- fail('source workspace differs from signed maintenance history');
282
- }
283
- await directory(source.repository);
284
- const files = new Map();
285
- const contextFiles = ['scripts/isolation/source-builder.Dockerfile', 'package.json', 'pnpm-lock.yaml', 'pnpm-workspace.yaml'];
286
- for (const folder of ['plugins', 'packages']) {
287
- for (const entry of await readdir(join(source.repository, folder), { withFileTypes: true })) {
288
- if (!entry.isDirectory() || entry.isSymbolicLink())
289
- continue;
290
- const name = `${folder}/${entry.name}/package.json`;
291
- try {
292
- await lstat(join(source.repository, name));
293
- contextFiles.push(name);
294
- }
295
- catch (error) {
296
- if (error.code !== 'ENOENT')
297
- throw error;
298
- }
299
- }
300
- }
301
- contextFiles.sort();
302
- if (contextFiles.length > 256)
303
- fail('source context file count exceeds bound');
304
- const inputs = [...contextFiles, 'scripts/isolation/build-source-image.mjs', 'scripts/isolation/source-builder-seccomp.json'];
305
- for (const name of inputs)
306
- files.set(name, await readStable(join(source.repository, name), 4_194_304));
307
- const manifest = JSON.parse(files.get('package.json').toString('utf8'));
308
- if (manifest.name !== 'dsh-enhanced' || manifest.version !== source.version || manifest.packageManager !== PACKAGE_MANAGER)
309
- fail('source manifest differs from installed cohort');
310
- const builderHash = digest(files.get('scripts/isolation/build-source-image.mjs'));
311
- const dockerfileHash = digest(files.get('scripts/isolation/source-builder.Dockerfile'));
312
- const current = builderHash === BUILDER_SHA && dockerfileHash === DOCKERFILE_SHA;
313
- const legacy = builderHash === LEGACY_BUILDER_SHA && dockerfileHash === LEGACY_DOCKERFILE_SHA;
314
- if (!current && !(hostPlatform() === 'linux/amd64' && legacy))
315
- fail('source builder differs from installed trusted builder');
316
- if (digest(files.get('scripts/isolation/source-builder-seccomp.json')) !== SECCOMP_SHA)
317
- fail('repository seccomp differs from approved runtime profile');
318
- const hashes = Object.fromEntries([...files].map(([name, bytes]) => [name, digest(bytes)]));
319
- return { files, hashes, contextFiles, lockSha256: digest(files.get('pnpm-lock.yaml')) };
320
- }
321
- async function snapshot(root, files) {
322
- for (const [name, bytes] of files) {
323
- const path = join(root, name);
324
- await mkdir(dirname(path), { recursive: true, mode: 0o700 });
325
- await writeExclusive(path, bytes);
326
- }
327
- }
328
- function parseBuildOutput(raw, expected) {
329
- if (Buffer.byteLength(raw) > 16_384)
330
- fail('builder output exceeds bound');
331
- const value = JSON.parse(raw);
332
- if (!value || typeof value !== 'object' || Array.isArray(value)
333
- || Object.keys(value).sort().join('\0') !== ['image', 'tag', 'baseImage', 'packageManager', 'lockSha256', 'contextFiles'].sort().join('\0')
334
- || typeof value.image !== 'string' || !IMAGE.test(value.image)
335
- || value.baseImage !== BASE_IMAGE || value.packageManager !== PACKAGE_MANAGER
336
- || value.lockSha256 !== expected.lockSha256
337
- || JSON.stringify(value.contextFiles) !== JSON.stringify(expected.contextFiles))
338
- fail('builder output does not match frozen source inputs');
339
- return value.image;
340
- }
341
- function buildConfig(dockerPath, image, seccompPath, socket, daemonId) {
342
- if (socket !== undefined && daemonId === undefined)
343
- fail('portable Docker daemon identity is absent');
344
- const common = { dockerPath, image, timeoutMs: 1_800_000, memoryMiB: 16_384, cpus: 8, pidsLimit: 1_024,
345
- workspaceMiB: 4_096, temporaryMiB: 2_048, outputBytes: 65_536,
346
- versioning: 'patch' };
347
- return socket === undefined
348
- ? { ...common, profile: 'repository', repositorySandbox: { seccompPath } }
349
- : { ...common, temporaryMiB: 4_096, profile: 'portable-repository', repositorySandbox: { seccompPath }, socketPath: socket, daemonId: daemonId };
350
- }
351
- async function imageExists(dockerPath, image, scratch, signal, platform, socket, unavailable = false) {
352
- const arch = platform.endsWith('/arm64') ? 'arm64' : 'amd64';
353
- let actual;
354
- try {
355
- actual = await command(dockerPath, dockerArgs(['image', 'inspect', '--format', '{{.Id}}/{{.Os}}/{{.Architecture}}', image], scratch, socket), isolatedEnvironment(scratch), signal, 30_000, 4096);
356
- }
357
- catch (error) {
358
- signal.throwIfAborted();
359
- if (unavailable)
360
- throw new RsiBuildUnavailableError('recorded Docker image is unavailable');
361
- throw error;
362
- }
363
- if (actual !== `${image}/linux/${arch}`)
364
- fail('Docker image ID or platform differs from builder receipt');
365
- }
366
- async function replay(final, expected, scratch, signal) {
367
- await directory(final);
368
- if (JSON.stringify((await readdir(final)).sort()) !== JSON.stringify(['bootstrap.json', 'seccomp.json']))
369
- fail('build workspace incomplete or unexpected');
370
- const value = JSON.parse((await readStable(join(final, 'bootstrap.json'), 65_536, true)).toString('utf8'));
371
- const { receiptDigest, ...content } = value;
372
- if (value.schemaVersion !== 1 || digest(JSON.stringify(content)) !== receiptDigest
373
- || value.dshHome !== expected.dshHome || value.profile !== expected.profile
374
- || value.repository !== expected.repository || value.sourceCommit !== expected.sourceCommit
375
- || value.dockerSha256 !== expected.dockerSha256 || value.sourceBuild?.dockerPath !== expected.dockerPath
376
- || value.hostPlatform !== (expected.socket === undefined ? undefined : expected.hostPlatform)
377
- || value.imagePlatform !== (expected.socket === undefined ? undefined : `linux/${expected.hostPlatform.endsWith('/arm64') ? 'arm64' : 'amd64'}`)
378
- || value.daemonId !== expected.daemonId
379
- || !IMAGE.test(value.sourceBuild?.image ?? '')
380
- || JSON.stringify(value.inputHashes) !== JSON.stringify(expected.inputHashes)
381
- || JSON.stringify(value.contextFiles) !== JSON.stringify(expected.contextFiles)
382
- || value.lockSha256 !== expected.lockSha256
383
- || JSON.stringify(value.sourceBuild) !== JSON.stringify(buildConfig(expected.dockerPath, value.sourceBuild.image, join(final, 'seccomp.json'), expected.socket, expected.daemonId)))
384
- fail('build receipt differs from frozen source or Docker client');
385
- if (digest(await readStable(join(final, 'seccomp.json'), 65_536, true)) !== SECCOMP_SHA)
386
- fail('private repository seccomp changed');
387
- if (scratch !== undefined)
388
- await imageExists(expected.dockerPath, value.sourceBuild.image, scratch, signal, expected.hostPlatform, expected.socket);
389
- signal.throwIfAborted();
390
- return { schemaVersion: 1, sourceCommit: value.sourceCommit, sourceBuild: value.sourceBuild };
391
- }
392
- /** Read recorded build inputs without creating resources or running Docker.
393
- * Image availability is checked separately by preparation/execution. */
138
+ // Shared by the native release/creation/locality modules; these helpers never
139
+ // change a profile and no longer provide any container runtime seam.
140
+ export const rsiBuildResources = { directory, readStable, writeExclusive, syncDirectory, command };
141
+ function digest(bytes) { return createHash('sha256').update(bytes).digest('hex'); }
142
+ function exactPath(path) { return isAbsolute(path) && resolve(path) === path && !path.includes('\0'); }
143
+ function legacySourceBuild(value) {
144
+ if (value === null || typeof value !== 'object' || Array.isArray(value))
145
+ return false;
146
+ const config = value;
147
+ return !Object.hasOwn(config, 'backend') && typeof config.dockerPath === 'string' && config.dockerPath.startsWith('/')
148
+ && typeof config.image === 'string' && config.image.length > 0 && config.image.length <= 256
149
+ && Object.keys(config).every(key => ['dockerPath', 'socketPath', 'daemonId', 'image', 'timeoutMs', 'memoryMiB',
150
+ 'cpus', 'pidsLimit', 'workspaceMiB', 'outputBytes', 'versioning', 'profile', 'temporaryMiB',
151
+ 'repositorySandbox'].includes(key));
152
+ }
153
+ /** Decode a persisted Docker-era build receipt without creating resources,
154
+ * validating a client or invoking any container. This is the read-only replay
155
+ * seam used when a candidate Home still carries the legacy `rsi-builds` tree;
156
+ * it can never continue that build. */
394
157
  export async function readRsiBuildEnvironment(input) {
395
158
  if (!exactPath(input.dshHome) || !PROFILE.test(input.profile))
396
159
  fail('invalid DSH_HOME or profile');
160
+ input.signal?.throwIfAborted();
397
161
  await directory(input.dshHome, false);
398
162
  const repository = join(input.dshHome, 'rsi-sources', input.profile, 'checkout');
399
- const source = await sourceInputs(input.source, repository);
163
+ if (input.source.repository !== repository)
164
+ fail('source workspace does not belong to the recorded Home');
400
165
  const parent = join(input.dshHome, 'rsi-builds'), final = join(parent, input.profile);
401
166
  await directory(parent);
402
167
  await directory(final);
403
168
  const saved = JSON.parse((await readStable(join(final, 'bootstrap.json'), 65_536, true)).toString('utf8'));
404
- if (typeof saved.sourceBuild?.dockerPath !== 'string')
405
- fail('recorded Docker path is absent');
406
- const docker = await dockerExecutable(saved.sourceBuild.dockerPath);
407
- const platform = hostPlatform();
408
- const socket = platform.startsWith('darwin/') ? await localSocket(saved.sourceBuild.socketPath) : undefined;
409
- const signal = input.signal ?? new AbortController().signal;
410
- return replay(final, { dshHome: input.dshHome, profile: input.profile, repository,
411
- sourceCommit: input.source.sourceCommit, dockerPath: docker.path, dockerSha256: docker.sha256,
412
- inputHashes: source.hashes, contextFiles: source.contextFiles, lockSha256: source.lockSha256,
413
- hostPlatform: platform, socket, daemonId: saved.daemonId }, undefined, signal);
414
- }
415
- /** Check the recorded environment using bounded Docker queries only. Missing
416
- * images remain unavailable; this never prepares or repairs a build receipt. */
417
- export async function verifyRsiBuildEnvironmentReady(input) {
418
- const signal = AbortSignal.any([input.signal ?? new AbortController().signal, AbortSignal.timeout(120_000)]);
419
- signal.throwIfAborted();
420
- const recorded = await readRsiBuildEnvironment({ ...input, signal });
421
- const parent = join(input.dshHome, 'rsi-builds');
422
- signal.throwIfAborted();
423
- const scratch = await mkdtemp(join(parent, `.${input.profile}-ready-`));
424
- try {
425
- await chmod(scratch, 0o700);
426
- await mkdir(join(scratch, 'docker-config'), { mode: 0o700 });
427
- const build = recorded.sourceBuild, platform = hostPlatform();
428
- const daemonId = await runtime(build.dockerPath, scratch, signal, platform, build.socketPath);
429
- if (daemonId !== build.daemonId)
430
- fail('Docker daemon differs from builder receipt');
431
- await imageExists(build.dockerPath, build.image, scratch, signal, platform, build.socketPath, true);
432
- if (await runtime(build.dockerPath, scratch, signal, platform, build.socketPath) !== daemonId) {
433
- fail('Docker daemon changed during readiness check');
434
- }
435
- if (!isDeepStrictEqual(await readRsiBuildEnvironment({ ...input, signal }), recorded)) {
436
- fail('recorded build changed during readiness check');
437
- }
438
- signal.throwIfAborted();
439
- return recorded;
440
- }
441
- finally {
442
- await rm(scratch, { recursive: true, force: true });
443
- await syncDirectory(parent);
444
- }
445
- }
446
- /** Caller holds the DSH_HOME lifecycle lock; no profile or service is changed here. */
447
- export async function prepareRsiBuildEnvironment(input) {
448
- if (!exactPath(input.dshHome) || !PROFILE.test(input.profile))
449
- fail('invalid DSH_HOME or profile');
450
- const platform = hostPlatform();
451
- if (platform === 'linux/amd64' && input.socketPath !== undefined)
452
- fail('Linux source build does not accept a portable socket');
169
+ const { receiptDigest: recordedDigest, ...content } = saved;
170
+ if (saved.schemaVersion !== 1 || recordedDigest !== digest(JSON.stringify(content))
171
+ || saved.sourceCommit !== input.source.sourceCommit || !legacySourceBuild(saved.sourceBuild)) {
172
+ fail('recorded Docker build receipt is invalid or does not match the source');
173
+ }
174
+ input.signal?.throwIfAborted();
175
+ return { schemaVersion: 1, sourceCommit: saved.sourceCommit,
176
+ sourceBuild: saved.sourceBuild };
177
+ }
178
+ const IMAGE_DIGEST = /^sha256:[a-f0-9]{64}$/u;
179
+ const SOURCE_COMMIT = /^[a-f0-9]{40}$/u;
180
+ /** Read the historical creation-build receipt for comparison during a Docker -> native handoff.
181
+ * It performs no Docker call and never proves the image is present or prepares/resumes a build. */
182
+ export async function readLegacyRsiCreationBuildReceipt(input) {
183
+ if (!exactPath(input.dshHome) || !PROFILE.test(input.profile)
184
+ || input.source.schemaVersion !== 1 || !SOURCE_COMMIT.test(input.source.sourceCommit))
185
+ fail('invalid DSH_HOME, profile or source');
186
+ input.signal?.throwIfAborted();
453
187
  await directory(input.dshHome, false);
454
- const repository = join(input.dshHome, 'rsi-sources', input.profile, 'checkout');
455
- const source = await sourceInputs(input.source, repository);
456
- const docker = await dockerExecutable(input.dockerPath);
457
- const socket = platform.startsWith('darwin/') ? await localSocket(input.socketPath) : undefined;
458
- const parent = join(input.dshHome, 'rsi-builds');
459
- try {
460
- await mkdir(parent, { mode: 0o700 });
461
- }
462
- catch (error) {
463
- if (error.code !== 'EEXIST')
464
- throw error;
465
- }
188
+ const parent = join(input.dshHome, 'rsi-creation-builds'), final = join(parent, input.profile);
466
189
  await directory(parent);
467
- const final = join(parent, input.profile), signal = AbortSignal.any([input.signal ?? new AbortController().signal, AbortSignal.timeout(1_860_000)]);
468
- const stage = await mkdtemp(join(parent, `.${input.profile}-stage-`));
469
- await chmod(stage, 0o700);
470
- let claimed;
471
- try {
472
- await mkdir(join(stage, 'docker-config'), { mode: 0o700 });
473
- const daemonId = await runtime(docker.path, stage, signal, platform, socket);
474
- const expected = { dshHome: input.dshHome, profile: input.profile, repository, sourceCommit: input.source.sourceCommit,
475
- dockerPath: docker.path, dockerSha256: docker.sha256, inputHashes: source.hashes,
476
- contextFiles: source.contextFiles, lockSha256: source.lockSha256, hostPlatform: platform, socket, daemonId };
477
- const present = await lstat(final).then(() => true, error => {
478
- if (error.code === 'ENOENT')
479
- return false;
480
- throw error;
481
- });
482
- if (present)
483
- return await replay(final, expected, stage, signal);
484
- const sourceSnapshot = join(stage, 'source');
485
- await mkdir(sourceSnapshot, { mode: 0o700 });
486
- await snapshot(sourceSnapshot, source.files);
487
- const builder = join(sourceSnapshot, 'scripts', 'isolation', 'build-source-image.mjs');
488
- const raw = await command(process.execPath, [builder, '--docker-path', docker.path, '--timeout-ms', '1800000',
489
- ...(socket === undefined ? [] : ['--socket-path', socket, '--platform', platform.slice('darwin/'.length)])], isolatedEnvironment(stage), signal, 1_810_000);
490
- const image = parseBuildOutput(raw, source);
491
- await imageExists(docker.path, image, stage, signal, platform, socket);
492
- if (await runtime(docker.path, stage, signal, platform, socket) !== daemonId)
493
- fail('Docker daemon changed during source image build');
494
- const fresh = await sourceInputs(input.source, repository);
495
- if (JSON.stringify(fresh.hashes) !== JSON.stringify(source.hashes))
496
- fail('source inputs changed during Docker build');
497
- await mkdir(final, { mode: 0o700 });
498
- const identity = await stat(final);
499
- claimed = { dev: identity.dev, ino: identity.ino };
500
- await writeExclusive(join(stage, 'seccomp.json'), source.files.get('scripts/isolation/source-builder-seccomp.json'));
501
- await rename(join(stage, 'seccomp.json'), join(final, 'seccomp.json'));
502
- const result = { schemaVersion: 1, sourceCommit: input.source.sourceCommit,
503
- sourceBuild: buildConfig(docker.path, image, join(final, 'seccomp.json'), socket, daemonId) };
504
- const content = { ...result, dshHome: input.dshHome, profile: input.profile, repository,
505
- dockerSha256: docker.sha256, inputHashes: source.hashes, contextFiles: source.contextFiles, lockSha256: source.lockSha256,
506
- ...(socket === undefined ? {} : { hostPlatform: platform, imagePlatform: `linux/${platform.endsWith('/arm64') ? 'arm64' : 'amd64'}`, daemonId }) };
507
- await writeExclusive(join(final, 'bootstrap.json'), JSON.stringify({ ...content, receiptDigest: digest(JSON.stringify(content)) }));
508
- await syncDirectory(final);
509
- await syncDirectory(parent);
510
- return result;
511
- }
512
- catch (error) {
513
- if (claimed) {
514
- const current = await lstat(final).catch(() => undefined);
515
- if (current?.isDirectory() && current.dev === claimed.dev && current.ino === claimed.ino) {
516
- const names = await readdir(final).catch(() => []);
517
- if (names.every(name => ['seccomp.json', 'bootstrap.json'].includes(name)))
518
- await rm(final, { recursive: true, force: true });
519
- }
520
- }
521
- throw error;
522
- }
523
- finally {
524
- await rm(stage, { recursive: true, force: true });
525
- await syncDirectory(parent);
526
- }
527
- }
190
+ await directory(final);
191
+ if ((await realpath(final)) !== final)
192
+ fail('creation build home is not canonical');
193
+ const saved = JSON.parse((await readStable(join(final, 'bootstrap.json'), 65_536, true)).toString('utf8'));
194
+ const { receiptDigest: recordedDigest, ...content } = saved;
195
+ if (saved.schemaVersion !== 1 || typeof recordedDigest !== 'string' || digest(JSON.stringify(content)) !== recordedDigest
196
+ || saved.sourceCommit !== input.source.sourceCommit
197
+ || typeof saved.sourceImage !== 'string' || !IMAGE_DIGEST.test(saved.sourceImage)
198
+ || typeof saved.image !== 'string' || !IMAGE_DIGEST.test(saved.image)
199
+ || typeof saved.dockerPath !== 'string' || !exactPath(saved.dockerPath)
200
+ || (saved.socketPath !== undefined && (typeof saved.socketPath !== 'string' || !isAbsolute(saved.socketPath)))) {
201
+ fail('recorded Docker creation build receipt is invalid or does not match the source');
202
+ }
203
+ input.signal?.throwIfAborted();
204
+ return { schemaVersion: 1, sourceCommit: saved.sourceCommit,
205
+ sourceImage: saved.sourceImage, image: saved.image, dockerPath: saved.dockerPath,
206
+ ...(saved.socketPath === undefined ? {} : { socketPath: saved.socketPath }) };
207
+ }
208
+ /** Installer-facing name retained for the Docker -> native handoff; purely read-only. */
209
+ export const readRsiCreationBuildEnvironment = readLegacyRsiCreationBuildReceipt;
528
210
  //# sourceMappingURL=rsi-build.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"rsi-build.js","sourceRoot":"","sources":["../src/rsi-build.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rsi-build.js","sourceRoot":"","sources":["../src/rsi-build.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@ import { constants } from 'node:fs';
3
3
  import { lstat, open, realpath } from 'node:fs/promises';
4
4
  import { createRequire } from 'node:module';
5
5
  import { delimiter, dirname, isAbsolute, join, relative, resolve, sep } from 'node:path';
6
- import { PROTECTED_PLUGIN_DENYLIST, resolveLocalExecutable, runtimeConfigDigest, validateHostDeploymentInputs } from '@dsh-enhanced/plugin-control-plane';
6
+ import { OWNER_REPAIR_PROTECTED_PLUGIN_DENYLIST, resolveLocalExecutable, runtimeConfigDigest, validateHostDeploymentInputs } from '@dsh-enhanced/plugin-control-plane';
7
7
  import { isMap, isSeq, parseDocument } from 'yaml';
8
8
  import { rawLoaderConfig } from './rsi-bootstrap-manifest.js';
9
9
  import { readRsiLocalCohort, verifyRsiLocalInstalledPackages } from './rsi-local-cohort.js';
@@ -191,7 +191,7 @@ export async function collectRsiInstalledInputs(input) {
191
191
  if (!pluginPattern.test(plugin) || id !== `dsh-enhanced-${plugin}`)
192
192
  fail(`installed ${id} has inconsistent package identity`);
193
193
  activeBundles.push(plugin);
194
- if (!PROTECTED_PLUGIN_DENYLIST.has(plugin))
194
+ if (!OWNER_REPAIR_PROTECTED_PLUGIN_DENYLIST.has(plugin))
195
195
  plugins.push(plugin);
196
196
  }
197
197
  const permission = rows.get('permission');