@dsh-enhanced/lark-channel 0.1.48 → 0.1.53

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 (205) hide show
  1. package/README.md +20 -8
  2. package/docs/rsi-setup.md +145 -12
  3. package/docs/setup.md +29 -14
  4. package/docs/supervised-growth.md +2 -0
  5. package/lib/adapter.d.ts +6 -0
  6. package/lib/adapter.d.ts.map +1 -1
  7. package/lib/adapter.js +79 -8
  8. package/lib/adapter.js.map +1 -1
  9. package/lib/business-cli-install.d.ts +9 -0
  10. package/lib/business-cli-install.d.ts.map +1 -0
  11. package/lib/business-cli-install.js +367 -0
  12. package/lib/business-cli-install.js.map +1 -0
  13. package/lib/business-environment.d.ts +2 -0
  14. package/lib/business-environment.d.ts.map +1 -0
  15. package/lib/business-environment.js +16 -0
  16. package/lib/business-environment.js.map +1 -0
  17. package/lib/business-skill.d.ts +32 -0
  18. package/lib/business-skill.d.ts.map +1 -0
  19. package/lib/business-skill.js +202 -0
  20. package/lib/business-skill.js.map +1 -0
  21. package/lib/launchd-control.d.ts +24 -0
  22. package/lib/launchd-control.d.ts.map +1 -0
  23. package/lib/launchd-control.js +68 -0
  24. package/lib/launchd-control.js.map +1 -0
  25. package/lib/launchd-identity.d.ts +34 -0
  26. package/lib/launchd-identity.d.ts.map +1 -0
  27. package/lib/launchd-identity.js +184 -0
  28. package/lib/launchd-identity.js.map +1 -0
  29. package/lib/launchd-target-lock.d.ts +6 -0
  30. package/lib/launchd-target-lock.d.ts.map +1 -0
  31. package/lib/launchd-target-lock.js +48 -0
  32. package/lib/launchd-target-lock.js.map +1 -0
  33. package/lib/launchd.d.ts +18 -0
  34. package/lib/launchd.d.ts.map +1 -1
  35. package/lib/launchd.js +211 -54
  36. package/lib/launchd.js.map +1 -1
  37. package/lib/rsi-authority-config.d.ts +29 -0
  38. package/lib/rsi-authority-config.d.ts.map +1 -0
  39. package/lib/rsi-authority-config.js +233 -0
  40. package/lib/rsi-authority-config.js.map +1 -0
  41. package/lib/rsi-authority-resources.d.ts +36 -0
  42. package/lib/rsi-authority-resources.d.ts.map +1 -0
  43. package/lib/rsi-authority-resources.js +139 -0
  44. package/lib/rsi-authority-resources.js.map +1 -0
  45. package/lib/rsi-authority-runtime.d.ts +50 -0
  46. package/lib/rsi-authority-runtime.d.ts.map +1 -0
  47. package/lib/rsi-authority-runtime.js +393 -0
  48. package/lib/rsi-authority-runtime.js.map +1 -0
  49. package/lib/rsi-bootstrap-manifest.d.ts +39 -0
  50. package/lib/rsi-bootstrap-manifest.d.ts.map +1 -0
  51. package/lib/rsi-bootstrap-manifest.js +345 -0
  52. package/lib/rsi-bootstrap-manifest.js.map +1 -0
  53. package/lib/rsi-bootstrap.d.ts +30 -0
  54. package/lib/rsi-bootstrap.d.ts.map +1 -0
  55. package/lib/rsi-bootstrap.js +363 -0
  56. package/lib/rsi-bootstrap.js.map +1 -0
  57. package/lib/rsi-build.d.ts +54 -0
  58. package/lib/rsi-build.d.ts.map +1 -0
  59. package/lib/rsi-build.js +478 -0
  60. package/lib/rsi-build.js.map +1 -0
  61. package/lib/rsi-creation-build.d.ts +48 -0
  62. package/lib/rsi-creation-build.d.ts.map +1 -0
  63. package/lib/rsi-creation-build.js +363 -0
  64. package/lib/rsi-creation-build.js.map +1 -0
  65. package/lib/rsi-host-authorities.d.ts +18 -0
  66. package/lib/rsi-host-authorities.d.ts.map +1 -0
  67. package/lib/rsi-host-authorities.js +129 -0
  68. package/lib/rsi-host-authorities.js.map +1 -0
  69. package/lib/rsi-host-update.d.ts +113 -0
  70. package/lib/rsi-host-update.d.ts.map +1 -0
  71. package/lib/rsi-host-update.js +316 -0
  72. package/lib/rsi-host-update.js.map +1 -0
  73. package/lib/rsi-install-inputs.d.ts +43 -0
  74. package/lib/rsi-install-inputs.d.ts.map +1 -0
  75. package/lib/rsi-install-inputs.js +342 -0
  76. package/lib/rsi-install-inputs.js.map +1 -0
  77. package/lib/rsi-install.d.ts +54 -0
  78. package/lib/rsi-install.d.ts.map +1 -0
  79. package/lib/rsi-install.js +404 -0
  80. package/lib/rsi-install.js.map +1 -0
  81. package/lib/rsi-local-activation.d.ts +78 -0
  82. package/lib/rsi-local-activation.d.ts.map +1 -0
  83. package/lib/rsi-local-activation.js +485 -0
  84. package/lib/rsi-local-activation.js.map +1 -0
  85. package/lib/rsi-local-cohort.d.ts +70 -0
  86. package/lib/rsi-local-cohort.d.ts.map +1 -0
  87. package/lib/rsi-local-cohort.js +781 -0
  88. package/lib/rsi-local-cohort.js.map +1 -0
  89. package/lib/rsi-local-install.d.ts +68 -0
  90. package/lib/rsi-local-install.d.ts.map +1 -0
  91. package/lib/rsi-local-install.js +322 -0
  92. package/lib/rsi-local-install.js.map +1 -0
  93. package/lib/rsi-local-pair-install.d.ts +38 -0
  94. package/lib/rsi-local-pair-install.d.ts.map +1 -0
  95. package/lib/rsi-local-pair-install.js +200 -0
  96. package/lib/rsi-local-pair-install.js.map +1 -0
  97. package/lib/rsi-local-profile-update.d.ts +25 -0
  98. package/lib/rsi-local-profile-update.d.ts.map +1 -0
  99. package/lib/rsi-local-profile-update.js +226 -0
  100. package/lib/rsi-local-profile-update.js.map +1 -0
  101. package/lib/rsi-local-resources.d.ts +37 -0
  102. package/lib/rsi-local-resources.d.ts.map +1 -0
  103. package/lib/rsi-local-resources.js +184 -0
  104. package/lib/rsi-local-resources.js.map +1 -0
  105. package/lib/rsi-local-roots-extension.d.ts +11 -0
  106. package/lib/rsi-local-roots-extension.d.ts.map +1 -0
  107. package/lib/rsi-local-roots-extension.js +31 -0
  108. package/lib/rsi-local-roots-extension.js.map +1 -0
  109. package/lib/rsi-local-update-build.d.ts +18 -0
  110. package/lib/rsi-local-update-build.d.ts.map +1 -0
  111. package/lib/rsi-local-update-build.js +37 -0
  112. package/lib/rsi-local-update-build.js.map +1 -0
  113. package/lib/rsi-local-update.d.ts +39 -0
  114. package/lib/rsi-local-update.d.ts.map +1 -0
  115. package/lib/rsi-local-update.js +205 -0
  116. package/lib/rsi-local-update.js.map +1 -0
  117. package/lib/rsi-memory-learning.d.ts +30 -0
  118. package/lib/rsi-memory-learning.d.ts.map +1 -0
  119. package/lib/rsi-memory-learning.js +104 -0
  120. package/lib/rsi-memory-learning.js.map +1 -0
  121. package/lib/rsi-native-install.d.ts +38 -0
  122. package/lib/rsi-native-install.d.ts.map +1 -0
  123. package/lib/rsi-native-install.js +254 -0
  124. package/lib/rsi-native-install.js.map +1 -0
  125. package/lib/rsi-native-launchd.d.ts +7 -0
  126. package/lib/rsi-native-launchd.d.ts.map +1 -0
  127. package/lib/rsi-native-launchd.js +49 -0
  128. package/lib/rsi-native-launchd.js.map +1 -0
  129. package/lib/rsi-native-profile.d.ts +64 -0
  130. package/lib/rsi-native-profile.d.ts.map +1 -0
  131. package/lib/rsi-native-profile.js +283 -0
  132. package/lib/rsi-native-profile.js.map +1 -0
  133. package/lib/rsi-native-runtime-bootstrap.d.ts +35 -0
  134. package/lib/rsi-native-runtime-bootstrap.d.ts.map +1 -0
  135. package/lib/rsi-native-runtime-bootstrap.js +385 -0
  136. package/lib/rsi-native-runtime-bootstrap.js.map +1 -0
  137. package/lib/rsi-owner-profile.d.ts +37 -0
  138. package/lib/rsi-owner-profile.d.ts.map +1 -0
  139. package/lib/rsi-owner-profile.js +178 -0
  140. package/lib/rsi-owner-profile.js.map +1 -0
  141. package/lib/rsi-plugin-creation.d.ts +32 -0
  142. package/lib/rsi-plugin-creation.d.ts.map +1 -0
  143. package/lib/rsi-plugin-creation.js +189 -0
  144. package/lib/rsi-plugin-creation.js.map +1 -0
  145. package/lib/rsi-profile.d.ts +23 -0
  146. package/lib/rsi-profile.d.ts.map +1 -1
  147. package/lib/rsi-profile.js +154 -43
  148. package/lib/rsi-profile.js.map +1 -1
  149. package/lib/rsi-release-build.d.ts +41 -0
  150. package/lib/rsi-release-build.d.ts.map +1 -0
  151. package/lib/rsi-release-build.js +223 -0
  152. package/lib/rsi-release-build.js.map +1 -0
  153. package/lib/rsi-service-environment.d.ts +6 -0
  154. package/lib/rsi-service-environment.d.ts.map +1 -0
  155. package/lib/rsi-service-environment.js +113 -0
  156. package/lib/rsi-service-environment.js.map +1 -0
  157. package/lib/rsi-service-setup.d.ts +10 -0
  158. package/lib/rsi-service-setup.d.ts.map +1 -0
  159. package/lib/rsi-service-setup.js +34 -0
  160. package/lib/rsi-service-setup.js.map +1 -0
  161. package/lib/rsi-setup.d.ts +35 -2
  162. package/lib/rsi-setup.d.ts.map +1 -1
  163. package/lib/rsi-setup.js +475 -32
  164. package/lib/rsi-setup.js.map +1 -1
  165. package/lib/rsi-source-maintenance.d.ts +25 -0
  166. package/lib/rsi-source-maintenance.d.ts.map +1 -0
  167. package/lib/rsi-source-maintenance.js +348 -0
  168. package/lib/rsi-source-maintenance.js.map +1 -0
  169. package/lib/rsi-source-update.d.ts +26 -0
  170. package/lib/rsi-source-update.d.ts.map +1 -0
  171. package/lib/rsi-source-update.js +276 -0
  172. package/lib/rsi-source-update.js.map +1 -0
  173. package/lib/rsi-source.d.ts +34 -0
  174. package/lib/rsi-source.d.ts.map +1 -0
  175. package/lib/rsi-source.js +487 -0
  176. package/lib/rsi-source.js.map +1 -0
  177. package/lib/rsi-systemd-bootstrap.d.ts +46 -0
  178. package/lib/rsi-systemd-bootstrap.d.ts.map +1 -0
  179. package/lib/rsi-systemd-bootstrap.js +271 -0
  180. package/lib/rsi-systemd-bootstrap.js.map +1 -0
  181. package/lib/sdk.d.ts.map +1 -1
  182. package/lib/sdk.js +26 -1
  183. package/lib/sdk.js.map +1 -1
  184. package/lib/setup-business.d.ts +49 -0
  185. package/lib/setup-business.d.ts.map +1 -0
  186. package/lib/setup-business.js +335 -0
  187. package/lib/setup-business.js.map +1 -0
  188. package/lib/setup-profile.d.ts +1 -1
  189. package/lib/setup-profile.d.ts.map +1 -1
  190. package/lib/setup-profile.js +25 -2
  191. package/lib/setup-profile.js.map +1 -1
  192. package/lib/setup.d.ts +12 -1
  193. package/lib/setup.d.ts.map +1 -1
  194. package/lib/setup.js +265 -48
  195. package/lib/setup.js.map +1 -1
  196. package/lib/systemd.d.ts +10 -0
  197. package/lib/systemd.d.ts.map +1 -1
  198. package/lib/systemd.js +23 -6
  199. package/lib/systemd.js.map +1 -1
  200. package/lib/types.d.ts +7 -0
  201. package/lib/types.d.ts.map +1 -1
  202. package/lib/types.js.map +1 -1
  203. package/lib/version.d.ts +1 -1
  204. package/lib/version.js +1 -1
  205. package/package.json +33 -20
@@ -0,0 +1,478 @@
1
+ import { createHash } from 'node:crypto';
2
+ import { spawn } from 'node:child_process';
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';
19
+ const MAX_OUTPUT = 65_536;
20
+ export class RsiBuildUnavailableError extends Error {
21
+ code = 'rsi-build-unavailable';
22
+ constructor(message) { super(`rsi build unavailable: ${message}`); }
23
+ }
24
+ 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
+ function diagnosticTail(value) {
28
+ const redacted = value.replace(/https?:\/\/[^\s/@]+:[^\s/@]+@/giu, 'https://[redacted]@')
29
+ .replace(/authorization\s*:\s*[^\s]+/giu, 'authorization: [redacted]');
30
+ return Array.from(redacted).map(char => {
31
+ const code = char.codePointAt(0);
32
+ return code < 32 || code === 127 ? ' ' : char;
33
+ }).join('').slice(-2_048).trim();
34
+ }
35
+ async function directory(path, privateMode = true) {
36
+ const item = await lstat(path);
37
+ if (!item.isDirectory() || item.isSymbolicLink() || item.mode & (privateMode ? 0o077 : 0o022)
38
+ || process.getuid && item.uid !== process.getuid() || await realpath(path) !== path)
39
+ fail(`unsafe directory: ${path}`);
40
+ }
41
+ async function readStable(path, maximum, privateMode = false, allowRoot = false) {
42
+ const fd = await open(path, constants.O_RDONLY | constants.O_NOFOLLOW);
43
+ try {
44
+ const before = await fd.stat();
45
+ if (!before.isFile() || before.size > maximum || privateMode && before.mode & 0o077
46
+ || process.getuid && before.uid !== process.getuid() && !(allowRoot && before.uid === 0))
47
+ fail(`unsafe file: ${path}`);
48
+ const bytes = await fd.readFile(), after = await fd.stat(), name = await lstat(path);
49
+ if (bytes.length !== before.size || before.dev !== after.dev || before.ino !== after.ino
50
+ || before.size !== after.size || before.mtimeMs !== after.mtimeMs
51
+ || name.dev !== before.dev || name.ino !== before.ino || name.isSymbolicLink())
52
+ fail(`file changed during read: ${path}`);
53
+ return bytes;
54
+ }
55
+ finally {
56
+ await fd.close();
57
+ }
58
+ }
59
+ async function writeExclusive(path, bytes) {
60
+ const fd = await open(path, constants.O_WRONLY | constants.O_CREAT | constants.O_EXCL | constants.O_NOFOLLOW, 0o600);
61
+ try {
62
+ await fd.writeFile(bytes);
63
+ await fd.sync();
64
+ }
65
+ finally {
66
+ await fd.close();
67
+ }
68
+ }
69
+ async function syncDirectory(path) {
70
+ const fd = await open(path, constants.O_RDONLY | constants.O_DIRECTORY | constants.O_NOFOLLOW);
71
+ try {
72
+ await fd.sync();
73
+ }
74
+ finally {
75
+ await fd.close();
76
+ }
77
+ }
78
+ /** Drain a cancelled builder, giving its own finally block time to remove its context. */
79
+ async function command(executable, args, environment, signal, timeoutMs, outputLimit = MAX_OUTPUT) {
80
+ signal.throwIfAborted();
81
+ const deadline = AbortSignal.any([signal, AbortSignal.timeout(timeoutMs)]);
82
+ return new Promise((resolvePromise, reject) => {
83
+ let child;
84
+ try {
85
+ child = spawn(executable, [...args], { env: environment, stdio: ['ignore', 'pipe', 'pipe'],
86
+ detached: process.platform !== 'win32', windowsHide: true });
87
+ }
88
+ catch {
89
+ reject(new Error('rsi build: subprocess could not start'));
90
+ return;
91
+ }
92
+ let stdoutBytes = 0, overLimit = false, spawnError = false;
93
+ const stdout = [];
94
+ let stderrTail = '';
95
+ let killTimer;
96
+ const group = (signalName) => {
97
+ if (!child.pid)
98
+ return;
99
+ try {
100
+ if (process.platform === 'win32')
101
+ child.kill(signalName);
102
+ else
103
+ process.kill(-child.pid, signalName);
104
+ }
105
+ catch (error) {
106
+ if (error.code !== 'ESRCH')
107
+ child.kill(signalName);
108
+ }
109
+ };
110
+ const abort = () => {
111
+ group('SIGTERM');
112
+ killTimer ??= setTimeout(() => group('SIGKILL'), 5_000);
113
+ killTimer.unref?.();
114
+ };
115
+ deadline.addEventListener('abort', abort, { once: true });
116
+ if (deadline.aborted)
117
+ abort();
118
+ const collect = (data, keep) => {
119
+ if (keep) {
120
+ stdoutBytes += data.length;
121
+ if (stdoutBytes > outputLimit) {
122
+ overLimit = true;
123
+ group('SIGKILL');
124
+ return;
125
+ }
126
+ stdout.push(data);
127
+ }
128
+ else {
129
+ // Docker build progress can be large. Drain it without logging it or
130
+ // treating normal progress as a malformed JSON result.
131
+ stderrTail = (stderrTail + data.toString('utf8')).slice(-8_192);
132
+ }
133
+ };
134
+ child.stdout.on('data', data => collect(data, true));
135
+ child.stderr.on('data', data => collect(data, false));
136
+ child.once('error', () => { spawnError = true; group('SIGKILL'); });
137
+ child.once('close', (code, killed) => {
138
+ deadline.removeEventListener('abort', abort);
139
+ if (killTimer)
140
+ clearTimeout(killTimer);
141
+ if (spawnError || overLimit || deadline.aborted || code !== 0 || killed !== null) {
142
+ const stage = executable === process.execPath ? 'source-image-builder'
143
+ : args[0] === 'image' ? 'image-inspect' : args[0] ?? 'command';
144
+ const tail = diagnosticTail(stderrTail);
145
+ reject(new Error(`rsi build: subprocess failed, was cancelled, or exceeded its bound (stage=${stage}, exit=${code ?? 'signal'}${tail ? `, stderr=${tail}` : ''})`));
146
+ }
147
+ else
148
+ resolvePromise(Buffer.concat(stdout).toString('utf8').trim());
149
+ });
150
+ });
151
+ }
152
+ function isolatedEnvironment(home) {
153
+ return { PATH: '/usr/bin:/bin', LANG: 'C', LC_ALL: 'C', HOME: home, DOCKER_CONFIG: join(home, 'docker-config'),
154
+ DOCKER_BUILDKIT: '1' };
155
+ }
156
+ function hostPlatform() {
157
+ if (process.platform === 'linux' && process.arch === 'x64')
158
+ return 'linux/amd64';
159
+ if (process.platform === 'darwin' && process.arch === 'x64')
160
+ return 'darwin/amd64';
161
+ if (process.platform === 'darwin' && process.arch === 'arm64')
162
+ return 'darwin/arm64';
163
+ throw new RsiBuildUnavailableError('Linux x64 or native macOS x64/arm64 is required');
164
+ }
165
+ async function localSocket(path) {
166
+ const expected = join(homedir(), '.docker', 'run', 'docker.sock');
167
+ const socket = path ?? expected;
168
+ if (!exactPath(socket) || socket !== expected)
169
+ fail('Docker socket must be the owner local socket');
170
+ let canonical;
171
+ try {
172
+ canonical = await realpath(socket);
173
+ }
174
+ catch (error) {
175
+ if (error.code === 'ENOENT')
176
+ throw new RsiBuildUnavailableError('local Docker socket is unavailable');
177
+ throw error;
178
+ }
179
+ if (canonical !== socket)
180
+ fail('Docker socket must be the owner local socket');
181
+ let info, parent;
182
+ try {
183
+ [info, parent] = await Promise.all([lstat(socket), lstat(dirname(socket))]);
184
+ }
185
+ catch (error) {
186
+ if (error.code === 'ENOENT')
187
+ throw new RsiBuildUnavailableError('local Docker socket is unavailable');
188
+ throw error;
189
+ }
190
+ if (!info.isSocket() || info.uid !== process.getuid?.() || !parent.isDirectory()
191
+ || parent.uid !== process.getuid?.() || parent.mode & 0o022)
192
+ fail('Docker socket is not owner-safe');
193
+ return socket;
194
+ }
195
+ function dockerArgs(args, scratch, socket) {
196
+ return socket === undefined ? args : ['--config', join(scratch, 'docker-config'), '-H', `unix://${socket}`, ...args];
197
+ }
198
+ // Shared by the release-toolchain preparer; these helpers never change a profile.
199
+ export const rsiBuildResources = { directory, readStable, writeExclusive, syncDirectory, command, isolatedEnvironment,
200
+ hostPlatform, localSocket, dockerArgs };
201
+ async function dockerExecutable(requested) {
202
+ let path = requested;
203
+ if (path === undefined) {
204
+ for (const folder of (process.env.PATH ?? '').split(':')) {
205
+ if (!folder || !exactPath(folder))
206
+ continue;
207
+ const candidate = join(folder, 'docker');
208
+ try {
209
+ await lstat(candidate);
210
+ path = candidate;
211
+ break;
212
+ }
213
+ catch (error) {
214
+ if (error.code !== 'ENOENT')
215
+ throw error;
216
+ }
217
+ }
218
+ path ??= '/usr/bin/docker';
219
+ }
220
+ if (!exactPath(path))
221
+ fail('Docker path must be absolute');
222
+ let canonical;
223
+ try {
224
+ canonical = await realpath(path);
225
+ }
226
+ catch (error) {
227
+ if (error.code === 'ENOENT')
228
+ throw new RsiBuildUnavailableError('Docker executable was not found');
229
+ throw error;
230
+ }
231
+ const file = await lstat(canonical), parent = await lstat(dirname(canonical)), uid = process.getuid?.();
232
+ if (!file.isFile() || file.isSymbolicLink() || file.mode & 0o022 || !(file.mode & 0o111)
233
+ || !parent.isDirectory() || parent.isSymbolicLink() || parent.mode & 0o002
234
+ || uid !== undefined && file.uid !== uid && file.uid !== 0)
235
+ fail('Docker executable is not owner-safe');
236
+ return { path: canonical, sha256: digest(await readStable(canonical, 100_000_000, false, true)) };
237
+ }
238
+ async function runtime(dockerPath, scratch, signal, platform, socket) {
239
+ let output;
240
+ try {
241
+ output = await command(dockerPath, dockerArgs(['version', '--format', '{{.Server.Version}}/{{.Server.Os}}/{{.Server.Arch}}'], scratch, socket), isolatedEnvironment(scratch), signal, 10_000, 4096);
242
+ }
243
+ catch {
244
+ if (signal.aborted)
245
+ signal.throwIfAborted();
246
+ throw new RsiBuildUnavailableError('local Docker daemon is unavailable');
247
+ }
248
+ const arch = platform.endsWith('/arm64') ? 'arm64' : 'amd64';
249
+ if (output !== `29.4.1/linux/${arch}`)
250
+ throw new RsiBuildUnavailableError(`Docker Server 29.4.1/linux/${arch} is required`);
251
+ if (socket === undefined)
252
+ return undefined;
253
+ const daemonId = await command(dockerPath, dockerArgs(['info', '--format', '{{.ID}}'], scratch, socket), isolatedEnvironment(scratch), signal, 10_000, 4096);
254
+ if (!/^[A-Za-z0-9][A-Za-z0-9:._-]{7,127}$/u.test(daemonId))
255
+ fail('Docker daemon identity is invalid');
256
+ return daemonId;
257
+ }
258
+ async function sourceInputs(source, expectedRepository) {
259
+ if (source.schemaVersion !== 1 || !COMMIT.test(source.sourceCommit) || source.repository !== expectedRepository
260
+ || !COMMIT.test(source.baseline.initialCommit)
261
+ || source.baseline.ref !== 'refs/dsh-source/repairs' || source.baseline.targetBranch !== 'repairs'
262
+ || source.baseline.remote !== join(dirname(expectedRepository), 'release.git'))
263
+ fail('source workspace binding is invalid');
264
+ if (source.baseline.initialCommit !== source.sourceCommit) {
265
+ // A newer checkout must be derived from retained, Host-signed maintenance
266
+ // history. A caller-supplied commit alone cannot replace the original root.
267
+ const current = await readRsiSourceWorkspace({ dshHome: dirname(dirname(dirname(expectedRepository))),
268
+ profile: basename(dirname(expectedRepository)),
269
+ ...(source.origin.kind === 'local-head' ? { sourceRepository: source.origin.locator } : {}) });
270
+ if (!isDeepStrictEqual(current, source))
271
+ fail('source workspace differs from signed maintenance history');
272
+ }
273
+ await directory(source.repository);
274
+ const files = new Map();
275
+ const contextFiles = ['scripts/isolation/source-builder.Dockerfile', 'package.json', 'pnpm-lock.yaml', 'pnpm-workspace.yaml'];
276
+ for (const folder of ['plugins', 'packages']) {
277
+ for (const entry of await readdir(join(source.repository, folder), { withFileTypes: true })) {
278
+ if (!entry.isDirectory() || entry.isSymbolicLink())
279
+ continue;
280
+ const name = `${folder}/${entry.name}/package.json`;
281
+ try {
282
+ await lstat(join(source.repository, name));
283
+ contextFiles.push(name);
284
+ }
285
+ catch (error) {
286
+ if (error.code !== 'ENOENT')
287
+ throw error;
288
+ }
289
+ }
290
+ }
291
+ contextFiles.sort();
292
+ if (contextFiles.length > 256)
293
+ fail('source context file count exceeds bound');
294
+ const inputs = [...contextFiles, 'scripts/isolation/build-source-image.mjs', 'scripts/isolation/source-builder-seccomp.json'];
295
+ for (const name of inputs)
296
+ files.set(name, await readStable(join(source.repository, name), 4_194_304));
297
+ const manifest = JSON.parse(files.get('package.json').toString('utf8'));
298
+ if (manifest.name !== 'dsh-enhanced' || manifest.version !== source.version || manifest.packageManager !== PACKAGE_MANAGER)
299
+ fail('source manifest differs from installed cohort');
300
+ const builderHash = digest(files.get('scripts/isolation/build-source-image.mjs'));
301
+ const dockerfileHash = digest(files.get('scripts/isolation/source-builder.Dockerfile'));
302
+ const current = builderHash === BUILDER_SHA && dockerfileHash === DOCKERFILE_SHA;
303
+ const legacy = builderHash === LEGACY_BUILDER_SHA && dockerfileHash === LEGACY_DOCKERFILE_SHA;
304
+ if (!current && !(hostPlatform() === 'linux/amd64' && legacy))
305
+ fail('source builder differs from installed trusted builder');
306
+ if (digest(files.get('scripts/isolation/source-builder-seccomp.json')) !== SECCOMP_SHA)
307
+ fail('repository seccomp differs from approved runtime profile');
308
+ const hashes = Object.fromEntries([...files].map(([name, bytes]) => [name, digest(bytes)]));
309
+ return { files, hashes, contextFiles, lockSha256: digest(files.get('pnpm-lock.yaml')) };
310
+ }
311
+ async function snapshot(root, files) {
312
+ for (const [name, bytes] of files) {
313
+ const path = join(root, name);
314
+ await mkdir(dirname(path), { recursive: true, mode: 0o700 });
315
+ await writeExclusive(path, bytes);
316
+ }
317
+ }
318
+ function parseBuildOutput(raw, expected) {
319
+ if (Buffer.byteLength(raw) > 16_384)
320
+ fail('builder output exceeds bound');
321
+ const value = JSON.parse(raw);
322
+ if (!value || typeof value !== 'object' || Array.isArray(value)
323
+ || Object.keys(value).sort().join('\0') !== ['image', 'tag', 'baseImage', 'packageManager', 'lockSha256', 'contextFiles'].sort().join('\0')
324
+ || typeof value.image !== 'string' || !IMAGE.test(value.image)
325
+ || value.baseImage !== BASE_IMAGE || value.packageManager !== PACKAGE_MANAGER
326
+ || value.lockSha256 !== expected.lockSha256
327
+ || JSON.stringify(value.contextFiles) !== JSON.stringify(expected.contextFiles))
328
+ fail('builder output does not match frozen source inputs');
329
+ return value.image;
330
+ }
331
+ function buildConfig(dockerPath, image, seccompPath, socket, daemonId) {
332
+ if (socket !== undefined && daemonId === undefined)
333
+ fail('portable Docker daemon identity is absent');
334
+ const common = { dockerPath, image, timeoutMs: 1_800_000, memoryMiB: 16_384, cpus: 8, pidsLimit: 1_024,
335
+ workspaceMiB: 4_096, temporaryMiB: 2_048, outputBytes: 65_536,
336
+ versioning: 'patch' };
337
+ return socket === undefined
338
+ ? { ...common, profile: 'repository', repositorySandbox: { seccompPath } }
339
+ : { ...common, temporaryMiB: 4_096, profile: 'portable-repository', repositorySandbox: { seccompPath }, socketPath: socket, daemonId: daemonId };
340
+ }
341
+ async function imageExists(dockerPath, image, scratch, signal, platform, socket) {
342
+ const arch = platform.endsWith('/arm64') ? 'arm64' : 'amd64';
343
+ const actual = await command(dockerPath, dockerArgs(['image', 'inspect', '--format', '{{.Id}}/{{.Os}}/{{.Architecture}}', image], scratch, socket), isolatedEnvironment(scratch), signal, 30_000, 4096);
344
+ if (actual !== `${image}/linux/${arch}`)
345
+ fail('Docker image ID or platform differs from builder receipt');
346
+ }
347
+ async function replay(final, expected, scratch, signal) {
348
+ await directory(final);
349
+ if (JSON.stringify((await readdir(final)).sort()) !== JSON.stringify(['bootstrap.json', 'seccomp.json']))
350
+ fail('build workspace incomplete or unexpected');
351
+ const value = JSON.parse((await readStable(join(final, 'bootstrap.json'), 65_536, true)).toString('utf8'));
352
+ const { receiptDigest, ...content } = value;
353
+ if (value.schemaVersion !== 1 || digest(JSON.stringify(content)) !== receiptDigest
354
+ || value.dshHome !== expected.dshHome || value.profile !== expected.profile
355
+ || value.repository !== expected.repository || value.sourceCommit !== expected.sourceCommit
356
+ || value.dockerSha256 !== expected.dockerSha256 || value.sourceBuild?.dockerPath !== expected.dockerPath
357
+ || value.hostPlatform !== (expected.socket === undefined ? undefined : expected.hostPlatform)
358
+ || value.imagePlatform !== (expected.socket === undefined ? undefined : `linux/${expected.hostPlatform.endsWith('/arm64') ? 'arm64' : 'amd64'}`)
359
+ || value.daemonId !== expected.daemonId
360
+ || !IMAGE.test(value.sourceBuild?.image ?? '')
361
+ || JSON.stringify(value.inputHashes) !== JSON.stringify(expected.inputHashes)
362
+ || JSON.stringify(value.contextFiles) !== JSON.stringify(expected.contextFiles)
363
+ || value.lockSha256 !== expected.lockSha256
364
+ || JSON.stringify(value.sourceBuild) !== JSON.stringify(buildConfig(expected.dockerPath, value.sourceBuild.image, join(final, 'seccomp.json'), expected.socket, expected.daemonId)))
365
+ fail('build receipt differs from frozen source or Docker client');
366
+ if (digest(await readStable(join(final, 'seccomp.json'), 65_536, true)) !== SECCOMP_SHA)
367
+ fail('private repository seccomp changed');
368
+ if (scratch !== undefined)
369
+ await imageExists(expected.dockerPath, value.sourceBuild.image, scratch, signal, expected.hostPlatform, expected.socket);
370
+ signal.throwIfAborted();
371
+ return { schemaVersion: 1, sourceCommit: value.sourceCommit, sourceBuild: value.sourceBuild };
372
+ }
373
+ /** Read recorded build inputs without creating resources or running Docker.
374
+ * Image availability is checked separately by preparation/execution. */
375
+ export async function readRsiBuildEnvironment(input) {
376
+ if (!exactPath(input.dshHome) || !PROFILE.test(input.profile))
377
+ fail('invalid DSH_HOME or profile');
378
+ await directory(input.dshHome, false);
379
+ const repository = join(input.dshHome, 'rsi-sources', input.profile, 'checkout');
380
+ const source = await sourceInputs(input.source, repository);
381
+ const parent = join(input.dshHome, 'rsi-builds'), final = join(parent, input.profile);
382
+ await directory(parent);
383
+ await directory(final);
384
+ const saved = JSON.parse((await readStable(join(final, 'bootstrap.json'), 65_536, true)).toString('utf8'));
385
+ if (typeof saved.sourceBuild?.dockerPath !== 'string')
386
+ fail('recorded Docker path is absent');
387
+ const docker = await dockerExecutable(saved.sourceBuild.dockerPath);
388
+ const platform = hostPlatform();
389
+ const socket = platform.startsWith('darwin/') ? await localSocket(saved.sourceBuild.socketPath) : undefined;
390
+ const signal = input.signal ?? new AbortController().signal;
391
+ return replay(final, { dshHome: input.dshHome, profile: input.profile, repository,
392
+ sourceCommit: input.source.sourceCommit, dockerPath: docker.path, dockerSha256: docker.sha256,
393
+ inputHashes: source.hashes, contextFiles: source.contextFiles, lockSha256: source.lockSha256,
394
+ hostPlatform: platform, socket, daemonId: saved.daemonId }, undefined, signal);
395
+ }
396
+ /** Caller holds the DSH_HOME lifecycle lock; no profile or service is changed here. */
397
+ export async function prepareRsiBuildEnvironment(input) {
398
+ if (!exactPath(input.dshHome) || !PROFILE.test(input.profile))
399
+ fail('invalid DSH_HOME or profile');
400
+ const platform = hostPlatform();
401
+ if (platform === 'linux/amd64' && input.socketPath !== undefined)
402
+ fail('Linux source build does not accept a portable socket');
403
+ await directory(input.dshHome, false);
404
+ const repository = join(input.dshHome, 'rsi-sources', input.profile, 'checkout');
405
+ const source = await sourceInputs(input.source, repository);
406
+ const docker = await dockerExecutable(input.dockerPath);
407
+ const socket = platform.startsWith('darwin/') ? await localSocket(input.socketPath) : undefined;
408
+ const parent = join(input.dshHome, 'rsi-builds');
409
+ try {
410
+ await mkdir(parent, { mode: 0o700 });
411
+ }
412
+ catch (error) {
413
+ if (error.code !== 'EEXIST')
414
+ throw error;
415
+ }
416
+ await directory(parent);
417
+ const final = join(parent, input.profile), signal = AbortSignal.any([input.signal ?? new AbortController().signal, AbortSignal.timeout(1_860_000)]);
418
+ const stage = await mkdtemp(join(parent, `.${input.profile}-stage-`));
419
+ await chmod(stage, 0o700);
420
+ let claimed;
421
+ try {
422
+ await mkdir(join(stage, 'docker-config'), { mode: 0o700 });
423
+ const daemonId = await runtime(docker.path, stage, signal, platform, socket);
424
+ const expected = { dshHome: input.dshHome, profile: input.profile, repository, sourceCommit: input.source.sourceCommit,
425
+ dockerPath: docker.path, dockerSha256: docker.sha256, inputHashes: source.hashes,
426
+ contextFiles: source.contextFiles, lockSha256: source.lockSha256, hostPlatform: platform, socket, daemonId };
427
+ const present = await lstat(final).then(() => true, error => {
428
+ if (error.code === 'ENOENT')
429
+ return false;
430
+ throw error;
431
+ });
432
+ if (present)
433
+ return await replay(final, expected, stage, signal);
434
+ const sourceSnapshot = join(stage, 'source');
435
+ await mkdir(sourceSnapshot, { mode: 0o700 });
436
+ await snapshot(sourceSnapshot, source.files);
437
+ const builder = join(sourceSnapshot, 'scripts', 'isolation', 'build-source-image.mjs');
438
+ const raw = await command(process.execPath, [builder, '--docker-path', docker.path, '--timeout-ms', '1800000',
439
+ ...(socket === undefined ? [] : ['--socket-path', socket, '--platform', platform.slice('darwin/'.length)])], isolatedEnvironment(stage), signal, 1_810_000);
440
+ const image = parseBuildOutput(raw, source);
441
+ await imageExists(docker.path, image, stage, signal, platform, socket);
442
+ if (await runtime(docker.path, stage, signal, platform, socket) !== daemonId)
443
+ fail('Docker daemon changed during source image build');
444
+ const fresh = await sourceInputs(input.source, repository);
445
+ if (JSON.stringify(fresh.hashes) !== JSON.stringify(source.hashes))
446
+ fail('source inputs changed during Docker build');
447
+ await mkdir(final, { mode: 0o700 });
448
+ const identity = await stat(final);
449
+ claimed = { dev: identity.dev, ino: identity.ino };
450
+ await writeExclusive(join(stage, 'seccomp.json'), source.files.get('scripts/isolation/source-builder-seccomp.json'));
451
+ await rename(join(stage, 'seccomp.json'), join(final, 'seccomp.json'));
452
+ const result = { schemaVersion: 1, sourceCommit: input.source.sourceCommit,
453
+ sourceBuild: buildConfig(docker.path, image, join(final, 'seccomp.json'), socket, daemonId) };
454
+ const content = { ...result, dshHome: input.dshHome, profile: input.profile, repository,
455
+ dockerSha256: docker.sha256, inputHashes: source.hashes, contextFiles: source.contextFiles, lockSha256: source.lockSha256,
456
+ ...(socket === undefined ? {} : { hostPlatform: platform, imagePlatform: `linux/${platform.endsWith('/arm64') ? 'arm64' : 'amd64'}`, daemonId }) };
457
+ await writeExclusive(join(final, 'bootstrap.json'), JSON.stringify({ ...content, receiptDigest: digest(JSON.stringify(content)) }));
458
+ await syncDirectory(final);
459
+ await syncDirectory(parent);
460
+ return result;
461
+ }
462
+ catch (error) {
463
+ if (claimed) {
464
+ const current = await lstat(final).catch(() => undefined);
465
+ if (current?.isDirectory() && current.dev === claimed.dev && current.ino === claimed.ino) {
466
+ const names = await readdir(final).catch(() => []);
467
+ if (names.every(name => ['seccomp.json', 'bootstrap.json'].includes(name)))
468
+ await rm(final, { recursive: true, force: true });
469
+ }
470
+ }
471
+ throw error;
472
+ }
473
+ finally {
474
+ await rm(stage, { recursive: true, force: true });
475
+ await syncDirectory(parent);
476
+ }
477
+ }
478
+ //# sourceMappingURL=rsi-build.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rsi-build.js","sourceRoot":"","sources":["../src/rsi-build.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ import { type RsiBuildEnvironment } from './rsi-build.js';
2
+ import type { RsiSourceWorkspace } from './rsi-source.js';
3
+ export interface RsiCreationBuildEnvironment {
4
+ schemaVersion: 1;
5
+ sourceCommit: string;
6
+ sourceImage: string;
7
+ image: string;
8
+ dockerPath: string;
9
+ socketPath?: string;
10
+ }
11
+ interface Input {
12
+ dshHome: string;
13
+ profile: string;
14
+ source: RsiSourceWorkspace;
15
+ build: RsiBuildEnvironment;
16
+ signal?: AbortSignal;
17
+ }
18
+ /** Verify frozen local inputs only. This reader never invokes Docker. */
19
+ export declare function readRsiCreationBuildEnvironment(input: Input): Promise<RsiCreationBuildEnvironment>;
20
+ export declare function readRsiCreationBuildInStage(input: {
21
+ logicalHome: string;
22
+ stagePhysicalHome: string;
23
+ profile: string;
24
+ stagedSource: RsiSourceWorkspace;
25
+ stagedBuild: RsiBuildEnvironment;
26
+ signal?: AbortSignal;
27
+ }): Promise<RsiCreationBuildEnvironment>;
28
+ /** Bind a freshly built candidate image to a stopped, copied Home. The old
29
+ * logical Home and the candidate receipt are never written by this operation. */
30
+ export declare function materializeRsiCreationBuildInStage(input: {
31
+ candidateHome: string;
32
+ stagePhysicalHome: string;
33
+ logicalHome: string;
34
+ profile: string;
35
+ candidateSource: RsiSourceWorkspace;
36
+ candidateBuild: RsiBuildEnvironment;
37
+ stagedSource: RsiSourceWorkspace;
38
+ stagedBuild: RsiBuildEnvironment;
39
+ signal?: AbortSignal;
40
+ }): Promise<{
41
+ creationBuild: RsiCreationBuildEnvironment;
42
+ candidateReceiptSha256: string;
43
+ receiptSha256: string;
44
+ }>;
45
+ /** Caller holds the DSH_HOME lifecycle lock. Build or replay an immutable image. */
46
+ export declare function prepareRsiCreationBuildEnvironment(input: Input): Promise<RsiCreationBuildEnvironment>;
47
+ export {};
48
+ //# sourceMappingURL=rsi-creation-build.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rsi-creation-build.d.ts","sourceRoot":"","sources":["../src/rsi-creation-build.ts"],"names":[],"mappings":"AAIA,OAAO,EAAoD,KAAK,mBAAmB,EAAE,MAAM,gBAAgB,CAAA;AAC3G,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAsBzD,MAAM,WAAW,2BAA2B;IAC1C,aAAa,EAAE,CAAC,CAAA;IAChB,YAAY,EAAE,MAAM,CAAA;IACpB,WAAW,EAAE,MAAM,CAAA;IACnB,KAAK,EAAE,MAAM,CAAA;IACb,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAgBD,UAAU,KAAK;IAAG,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,kBAAkB,CAAC;IAAC,KAAK,EAAE,mBAAmB,CAAC;IAAC,MAAM,CAAC,EAAE,WAAW,CAAA;CAAE;AA4IlI,yEAAyE;AACzE,wBAAsB,+BAA+B,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,2BAA2B,CAAC,CAOxG;AAED,wBAAsB,2BAA2B,CAAC,KAAK,EAAE;IACvD,WAAW,EAAE,MAAM,CAAC;IAAC,iBAAiB,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;IAC/D,YAAY,EAAE,kBAAkB,CAAC;IAAC,WAAW,EAAE,mBAAmB,CAAC;IAAC,MAAM,CAAC,EAAE,WAAW,CAAA;CACzF,GAAG,OAAO,CAAC,2BAA2B,CAAC,CAcvC;AAED;iFACiF;AACjF,wBAAsB,kCAAkC,CAAC,KAAK,EAAE;IAC9D,aAAa,EAAE,MAAM,CAAC;IAAC,iBAAiB,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;IACtF,eAAe,EAAE,kBAAkB,CAAC;IAAC,cAAc,EAAE,mBAAmB,CAAA;IACxE,YAAY,EAAE,kBAAkB,CAAC;IAAC,WAAW,EAAE,mBAAmB,CAAC;IAAC,MAAM,CAAC,EAAE,WAAW,CAAA;CACzF,GAAG,OAAO,CAAC;IAAE,aAAa,EAAE,2BAA2B,CAAC;IAAC,sBAAsB,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,CAAC,CAgFjH;AAED,oFAAoF;AACpF,wBAAsB,kCAAkC,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,2BAA2B,CAAC,CAuE3G"}