@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,385 @@
1
+ import { createHash } from 'node:crypto';
2
+ import { spawn, spawnSync } from 'node:child_process';
3
+ import { constants } from 'node:fs';
4
+ import { chmod, lstat, mkdir, mkdtemp, open, readFile, readdir, realpath, rename, rm, stat, symlink, writeFile } from 'node:fs/promises';
5
+ import { request } from 'node:https';
6
+ import { dirname, isAbsolute, join, relative, resolve, sep } from 'node:path';
7
+ import { isDeepStrictEqual } from 'node:util';
8
+ import { hashNativeMacRuntimeTree, verifyNativeMacRuntime } from '@dsh-enhanced/assistant-isolation';
9
+ import { parse as parseYaml } from 'yaml';
10
+ import { readRsiSourceWorkspace } from './rsi-source.js';
11
+ const NODE_VERSION = 'v24.22.0';
12
+ const PNPM_VERSION = '11.7.0';
13
+ const NODE_ARCHIVES = {
14
+ arm64: '6a9724d9b50a5f22b4816cded441b5a8d9ddae546191a5e5b7efa5a5e2ee26d5',
15
+ x64: '495e3f273c645f3c4677d438304cdfc701729ea5dec5728f5c8e76a2dece4b91',
16
+ };
17
+ const ARM64_NODE_SHA = 'b468fb9c67427c9d3aec07ee1105e63020923a631a9a2a00beb71a7ba3768bfd';
18
+ const PNPM_ARCHIVE_SHA = 'deafa7ec98a1218b6a047289b92fbe2395c1e22d3495bb711653013218ee15ee';
19
+ const PROFILE = /^[A-Za-z0-9][A-Za-z0-9._-]{0,63}$/u;
20
+ const MAX_NODE_ARCHIVE = 100_000_000;
21
+ const MAX_PNPM_ARCHIVE = 10_000_000;
22
+ const MAX_GIT_OUTPUT = 4_194_304;
23
+ const MAX_MANIFESTS = 256;
24
+ const MAX_MANIFEST_BYTES = 8_388_608;
25
+ export function nativeRsiCreationBuild(build) {
26
+ return { schemaVersion: 2, backend: 'macos-seatbelt', sourceCommit: build.sourceCommit, runtime: build.runtime };
27
+ }
28
+ function fail(message) { throw new Error(`rsi native bootstrap: ${message}`); }
29
+ const sha = (bytes) => createHash('sha256').update(bytes).digest('hex');
30
+ const canonical = (path) => typeof path === 'string' && isAbsolute(path) && resolve(path) === path
31
+ && !path.includes('\0') && !/[\r\n]/u.test(path);
32
+ async function privateDirectory(path) {
33
+ if (!canonical(path) || await realpath(path) !== path)
34
+ fail('noncanonical private directory');
35
+ const item = await lstat(path);
36
+ if (!item.isDirectory() || item.isSymbolicLink() || (item.mode & 0o077) !== 0
37
+ || typeof process.getuid === 'function' && item.uid !== process.getuid())
38
+ fail('unsafe private directory');
39
+ }
40
+ async function syncDirectory(path) {
41
+ const fd = await open(path, constants.O_RDONLY | constants.O_DIRECTORY | constants.O_NOFOLLOW);
42
+ try {
43
+ await fd.sync();
44
+ }
45
+ finally {
46
+ await fd.close();
47
+ }
48
+ }
49
+ function git(repository, args) {
50
+ const result = spawnSync('/usr/bin/git', ['-c', 'core.hooksPath=/dev/null', '-c', 'core.fsmonitor=false', ...args], {
51
+ cwd: repository, env: { PATH: '/usr/bin:/bin', HOME: '/nonexistent', LANG: 'C', LC_ALL: 'C',
52
+ GIT_CONFIG_NOSYSTEM: '1', GIT_CONFIG_GLOBAL: '/dev/null', GIT_CONFIG_SYSTEM: '/dev/null',
53
+ GIT_TERMINAL_PROMPT: '0', GIT_NO_LAZY_FETCH: '1', GIT_NO_REPLACE_OBJECTS: '1', GIT_ALLOW_PROTOCOL: 'file' },
54
+ maxBuffer: MAX_GIT_OUTPUT, timeout: 30_000,
55
+ });
56
+ if (result.status !== 0 || result.error)
57
+ fail('frozen Git object is unavailable');
58
+ return result.stdout;
59
+ }
60
+ async function frozenManifests(source) {
61
+ const listed = git(source.repository, ['ls-tree', '-r', '--name-only', '-z', source.sourceCommit]).toString('utf8').split('\0');
62
+ const names = listed.filter(name => ['package.json', 'pnpm-lock.yaml', 'pnpm-workspace.yaml'].includes(name)
63
+ || /^(?:plugins|packages)\/[a-z0-9-]+\/package\.json$/u.test(name)).sort();
64
+ if (names.length < 3 || names.length > MAX_MANIFESTS
65
+ || !['package.json', 'pnpm-lock.yaml', 'pnpm-workspace.yaml'].every(name => names.includes(name)))
66
+ fail('frozen manifest inventory is incomplete');
67
+ const files = new Map();
68
+ let total = 0;
69
+ for (const name of names) {
70
+ const bytes = git(source.repository, ['show', `${source.sourceCommit}:${name}`]);
71
+ if ((total += bytes.length) > MAX_MANIFEST_BYTES || bytes.length > MAX_GIT_OUTPUT)
72
+ fail('frozen manifests exceed bound');
73
+ files.set(name, bytes);
74
+ }
75
+ let manifest;
76
+ try {
77
+ manifest = JSON.parse(files.get('package.json').toString('utf8'));
78
+ }
79
+ catch {
80
+ return fail('frozen root manifest is invalid');
81
+ }
82
+ if (manifest.name !== 'dsh-enhanced' || manifest.version !== source.version
83
+ || manifest.packageManager !== `pnpm@${PNPM_VERSION}`)
84
+ fail('frozen root manifest identity differs');
85
+ const lock = files.get('pnpm-lock.yaml').toString('utf8');
86
+ if (!lock.startsWith("lockfileVersion: '9.0'\n")
87
+ || /(?:https?:\/\/(?!registry\.npmjs\.org\/)|git\+|\b(?:git|tarball):|(?:^|[\s'"])(?:file:))/imu.test(lock)) {
88
+ fail('frozen lockfile contains an unsupported resolution');
89
+ }
90
+ let parsed;
91
+ try {
92
+ parsed = parseYaml(lock);
93
+ }
94
+ catch {
95
+ return fail('frozen lockfile is invalid');
96
+ }
97
+ if (!parsed.importers || typeof parsed.importers !== 'object')
98
+ fail('frozen lockfile has no importers');
99
+ const workspaces = new Set(names.filter(name => name.endsWith('/package.json')).map(name => dirname(name)));
100
+ for (const [importer, groups] of Object.entries(parsed.importers)) {
101
+ if (importer !== '.' && !workspaces.has(importer))
102
+ fail('frozen lockfile importer is outside manifests');
103
+ for (const group of ['dependencies', 'devDependencies', 'optionalDependencies']) {
104
+ for (const value of Object.values(groups[group] ?? {})) {
105
+ if (typeof value?.specifier !== 'string' || typeof value.version !== 'string')
106
+ fail('frozen dependency is invalid');
107
+ if (/^(?:file:|git\+|github:|https?:)/iu.test(value.specifier))
108
+ fail('frozen dependency uses an unsupported source');
109
+ if (value.version.startsWith('link:')) {
110
+ const target = resolve('/frozen', importer === '.' ? '' : importer, value.version.slice(5));
111
+ if (!target.startsWith('/frozen/') || !workspaces.has(target.slice('/frozen/'.length))) {
112
+ fail('frozen workspace link escapes manifests');
113
+ }
114
+ }
115
+ }
116
+ }
117
+ }
118
+ return files;
119
+ }
120
+ async function download(url, maximum, signal) {
121
+ signal.throwIfAborted();
122
+ return new Promise((resolveBytes, reject) => {
123
+ const chunks = [];
124
+ let size = 0;
125
+ let settled = false;
126
+ const finish = (error, bytes) => {
127
+ if (settled)
128
+ return;
129
+ settled = true;
130
+ signal.removeEventListener('abort', abort);
131
+ if (error)
132
+ reject(error);
133
+ else
134
+ resolveBytes(bytes);
135
+ };
136
+ const req = request(url, { method: 'GET', timeout: 120_000, headers: { 'User-Agent': 'dsh-native-bootstrap/1' } }, res => {
137
+ if (res.statusCode !== 200 || res.headers.location || Number(res.headers['content-length'] ?? 0) > maximum) {
138
+ const error = new Error('official bootstrap download refused');
139
+ req.destroy(error);
140
+ finish(error);
141
+ return;
142
+ }
143
+ res.on('data', (chunk) => {
144
+ size += chunk.length;
145
+ if (size > maximum) {
146
+ const error = new Error('official bootstrap archive exceeds bound');
147
+ req.destroy(error);
148
+ finish(error);
149
+ }
150
+ else
151
+ chunks.push(chunk);
152
+ });
153
+ res.once('end', () => finish(undefined, Buffer.concat(chunks)));
154
+ res.once('error', error => finish(error));
155
+ });
156
+ const abort = () => req.destroy(signal.reason);
157
+ req.once('error', error => finish(error));
158
+ req.once('timeout', () => req.destroy(new Error('official bootstrap download timed out')));
159
+ signal.addEventListener('abort', abort, { once: true });
160
+ req.end();
161
+ });
162
+ }
163
+ async function officialArchive(path, url, expected, maximum, signal) {
164
+ let bytes;
165
+ if (path === undefined)
166
+ bytes = await download(url, maximum, signal);
167
+ else {
168
+ if (!canonical(path) || await realpath(path) !== path)
169
+ fail('bootstrap archive path is not canonical');
170
+ const item = await lstat(path);
171
+ if (!item.isFile() || item.isSymbolicLink() || item.nlink !== 1 || item.size > maximum)
172
+ fail('bootstrap archive is unsafe');
173
+ bytes = await readFile(path);
174
+ }
175
+ if (bytes.length < 1 || bytes.length > maximum || sha(bytes) !== expected)
176
+ fail('official bootstrap archive digest differs');
177
+ return bytes;
178
+ }
179
+ async function run(file, args, cwd, environment, signal, timeoutMs, maximumOutput = 4_194_304) {
180
+ signal.throwIfAborted();
181
+ return new Promise((resolveOutput, reject) => {
182
+ const child = spawn(file, args, { cwd, env: environment, stdio: ['ignore', 'pipe', 'pipe'], detached: true });
183
+ const chunks = [];
184
+ let size = 0;
185
+ let stderr = '';
186
+ let settled = false;
187
+ const stop = () => { if (child.pid)
188
+ try {
189
+ process.kill(-child.pid, 'SIGKILL');
190
+ }
191
+ catch {
192
+ child.kill('SIGKILL');
193
+ } };
194
+ const timer = setTimeout(stop, timeoutMs);
195
+ const abort = () => stop();
196
+ signal.addEventListener('abort', abort, { once: true });
197
+ child.stdout.on('data', (chunk) => { size += chunk.length; if (size > maximumOutput)
198
+ stop();
199
+ else
200
+ chunks.push(chunk); });
201
+ child.stderr.on('data', (chunk) => { stderr = (stderr + chunk.toString()).slice(-2048); });
202
+ child.once('error', error => { settled = true; clearTimeout(timer); signal.removeEventListener('abort', abort); reject(error); });
203
+ child.once('close', code => {
204
+ if (settled)
205
+ return;
206
+ clearTimeout(timer);
207
+ signal.removeEventListener('abort', abort);
208
+ if (signal.aborted || code !== 0 || size > maximumOutput)
209
+ reject(new Error(`native bootstrap command failed: ${stderr.slice(-200)}`));
210
+ else
211
+ resolveOutput(Buffer.concat(chunks));
212
+ });
213
+ });
214
+ }
215
+ async function extractExact(archive, member, cwd, signal) {
216
+ return run('/usr/bin/tar', ['-xOzf', archive, member], cwd, { PATH: '/usr/bin:/bin', LANG: 'C', LC_ALL: 'C', COPYFILE_DISABLE: '1' }, signal, 120_000, 150_000_000);
217
+ }
218
+ async function sourceIdentity(input) {
219
+ const current = await readRsiSourceWorkspace({ dshHome: input.dshHome, profile: input.profile,
220
+ version: input.source.version, ...(input.source.origin.kind === 'local-head' ? { sourceRepository: input.source.origin.locator } : {}),
221
+ ...(input.signal ? { signal: input.signal } : {}) });
222
+ if (!isDeepStrictEqual(current, input.source))
223
+ fail('frozen source receipt changed');
224
+ }
225
+ function asEnvironment(receipt) {
226
+ return { schemaVersion: 2, sourceCommit: receipt.sourceCommit, lockSha256: receipt.lockSha256,
227
+ runtime: receipt.runtime, sourceBuild: receipt.sourceBuild };
228
+ }
229
+ async function readExisting(final, input, manifests) {
230
+ await privateDirectory(final);
231
+ if (JSON.stringify((await readdir(final)).sort()) !== JSON.stringify(['bootstrap.json', 'runtime']))
232
+ fail('native runtime is incomplete');
233
+ const receiptPath = join(final, 'bootstrap.json'), receiptInfo = await lstat(receiptPath);
234
+ if (!receiptInfo.isFile() || receiptInfo.isSymbolicLink() || receiptInfo.nlink !== 1 || receiptInfo.size > 4_194_304
235
+ || (receiptInfo.mode & 0o077) !== 0 || typeof process.getuid === 'function' && receiptInfo.uid !== process.getuid()
236
+ || await realpath(receiptPath) !== receiptPath)
237
+ fail('native bootstrap receipt is unsafe');
238
+ const descriptor = await open(receiptPath, constants.O_RDONLY | constants.O_NOFOLLOW);
239
+ let receipt;
240
+ try {
241
+ const checked = await descriptor.stat();
242
+ if (checked.dev !== receiptInfo.dev || checked.ino !== receiptInfo.ino || checked.size !== receiptInfo.size)
243
+ fail('native bootstrap receipt changed');
244
+ receipt = JSON.parse(await descriptor.readFile({ encoding: 'utf8' }));
245
+ }
246
+ finally {
247
+ await descriptor.close();
248
+ }
249
+ const { receiptDigest, ...content } = receipt;
250
+ const hashes = Object.fromEntries([...manifests].map(([name, bytes]) => [name, sha(bytes)]));
251
+ if (receiptDigest !== sha(JSON.stringify(content)) || receipt.schemaVersion !== 2
252
+ || receipt.dshHome !== input.dshHome || receipt.profile !== input.profile
253
+ || receipt.sourceCommit !== input.source.sourceCommit || receipt.lockSha256 !== hashes['pnpm-lock.yaml']
254
+ || !isDeepStrictEqual(receipt.manifestHashes, hashes)
255
+ || receipt.nodeArchiveSha256 !== NODE_ARCHIVES[process.arch]
256
+ || receipt.pnpmArchiveSha256 !== PNPM_ARCHIVE_SHA
257
+ || receipt.runtime.nodePath !== join(final, 'runtime', 'bin', 'node')
258
+ || receipt.runtime.modulesPath !== join(final, 'runtime', 'node_modules')
259
+ || receipt.runtime.roots.length !== 1 || receipt.runtime.roots[0]?.path !== join(final, 'runtime')
260
+ || !isDeepStrictEqual(receipt.sourceBuild, { backend: 'macos-seatbelt', runtime: receipt.runtime,
261
+ timeoutMs: 60_000, outputBytes: 1_048_576, versioning: 'patch' }))
262
+ fail('native bootstrap receipt differs');
263
+ await verifyNativeMacRuntime(receipt.runtime);
264
+ return asEnvironment(receipt);
265
+ }
266
+ /** Install only committed manifests and their frozen dependencies into a private native runtime. */
267
+ export async function prepareNativeRsiRuntime(input) {
268
+ if (process.platform !== 'darwin' || !['arm64', 'x64'].includes(process.arch))
269
+ fail('native runtime requires macOS');
270
+ if (!canonical(input.dshHome) || !PROFILE.test(input.profile) || input.source.schemaVersion !== 1)
271
+ fail('invalid bootstrap identity');
272
+ await privateDirectory(input.dshHome);
273
+ await sourceIdentity(input);
274
+ const manifests = await frozenManifests(input.source);
275
+ const parent = join(input.dshHome, 'rsi-native-runtimes');
276
+ await mkdir(parent, { mode: 0o700 }).catch(error => { if (error.code !== 'EEXIST')
277
+ throw error; });
278
+ await privateDirectory(parent);
279
+ const final = join(parent, input.profile);
280
+ if (await lstat(final).then(() => true, error => { if (error.code === 'ENOENT')
281
+ return false; throw error; })) {
282
+ return readExisting(final, input, manifests);
283
+ }
284
+ const signal = AbortSignal.any([input.signal ?? new AbortController().signal, AbortSignal.timeout(1_200_000)]);
285
+ const stage = await mkdtemp(join(parent, `.${input.profile}-stage-`));
286
+ await chmod(stage, 0o700);
287
+ try {
288
+ const root = join(stage, 'runtime'), tool = join(stage, 'tool'), cache = join(stage, 'cache');
289
+ for (const directory of [root, tool, cache])
290
+ await mkdir(directory, { mode: 0o700 });
291
+ const nodeArchive = await officialArchive(input.nodeArchivePath, `https://nodejs.org/dist/${NODE_VERSION}/node-${NODE_VERSION}-darwin-${process.arch}.tar.gz`, NODE_ARCHIVES[process.arch], MAX_NODE_ARCHIVE, signal);
292
+ const pnpmArchive = await officialArchive(input.pnpmArchivePath, `https://registry.npmjs.org/pnpm/-/pnpm-${PNPM_VERSION}.tgz`, PNPM_ARCHIVE_SHA, MAX_PNPM_ARCHIVE, signal);
293
+ const nodeArchiveFile = join(stage, 'node.tgz'), pnpmArchiveFile = join(stage, 'pnpm.tgz');
294
+ await writeFile(nodeArchiveFile, nodeArchive, { mode: 0o600 });
295
+ await writeFile(pnpmArchiveFile, pnpmArchive, { mode: 0o600 });
296
+ const bin = join(root, 'bin');
297
+ await mkdir(bin, { mode: 0o700 });
298
+ const nodePath = join(bin, 'node');
299
+ const node = await extractExact(nodeArchiveFile, `node-${NODE_VERSION}-darwin-${process.arch}/bin/node`, stage, signal);
300
+ if (process.arch === 'arm64' && sha(node) !== ARM64_NODE_SHA)
301
+ fail('official Node binary digest differs');
302
+ await writeFile(nodePath, node, { mode: 0o500 });
303
+ await chmod(nodePath, 0o500);
304
+ await run('/usr/bin/tar', ['-xzf', pnpmArchiveFile, '-C', tool], stage, { PATH: '/usr/bin:/bin', LANG: 'C', LC_ALL: 'C', COPYFILE_DISABLE: '1' }, signal, 120_000);
305
+ for (const [name, bytes] of manifests) {
306
+ const path = join(root, name);
307
+ await mkdir(dirname(path), { recursive: true, mode: 0o700 });
308
+ await writeFile(path, bytes, { mode: 0o600 });
309
+ }
310
+ const env = { PATH: `${bin}:/usr/bin:/bin`, HOME: cache, LANG: 'C', LC_ALL: 'C', CI: 'true',
311
+ npm_config_userconfig: '/dev/null', npm_config_globalconfig: '/dev/null',
312
+ npm_config_registry: 'https://registry.npmjs.org/', npm_config_store_dir: join(stage, 'store'),
313
+ COREPACK_ENABLE_PROJECT_SPEC: '0' };
314
+ await run(nodePath, [join(tool, 'package', 'bin', 'pnpm.mjs'), 'install', '--frozen-lockfile',
315
+ '--ignore-scripts', '--config.package-import-method=copy', '--reporter=append-only'], root, env, signal, 900_000);
316
+ await sourceIdentity(input);
317
+ const fresh = await frozenManifests(input.source);
318
+ if (!isDeepStrictEqual([...fresh], [...manifests]))
319
+ fail('frozen manifest changed during install');
320
+ const modulesPath = join(root, 'node_modules');
321
+ // pnpm links dependencies into the workspace that declares them. Expose the
322
+ // fixed compiler closure at one runtime-local module root for the runner.
323
+ for (const name of ['@deepseek-ai/dsh-tools', '@deepseek-ai/dsh-system-prompt']) {
324
+ const link = join(modulesPath, name);
325
+ if (await lstat(link).then(() => true, error => { if (error.code === 'ENOENT')
326
+ return false; throw error; }))
327
+ continue;
328
+ const candidates = ['plugins/assistant-verifier', 'plugins/assistant-isolation',
329
+ 'plugins/plugin-control-plane', 'plugins/lark-channel'].map(workspace => join(root, workspace, 'node_modules', name));
330
+ let target;
331
+ for (const candidate of candidates) {
332
+ const actual = await realpath(candidate).catch(error => { if (error.code === 'ENOENT')
333
+ return undefined; throw error; });
334
+ if (actual && actual.startsWith(`${root}${sep}`)) {
335
+ target = actual;
336
+ break;
337
+ }
338
+ }
339
+ if (!target)
340
+ fail(`native runtime package missing: ${name}`);
341
+ await mkdir(dirname(link), { recursive: true, mode: 0o700 });
342
+ await symlink(relative(dirname(link), target), link);
343
+ }
344
+ const versions = { node: NODE_VERSION, typescript: '', cordis: '', tools: '', systemPrompt: '' };
345
+ for (const [key, name] of [['typescript', 'typescript'], ['cordis', '@deepseek-ai/cordis'],
346
+ ['tools', '@deepseek-ai/dsh-tools'], ['systemPrompt', '@deepseek-ai/dsh-system-prompt']]) {
347
+ const manifest = JSON.parse(await readFile(join(modulesPath, name, 'package.json'), 'utf8'));
348
+ if (!manifest.version)
349
+ fail(`native runtime package missing: ${name}`);
350
+ versions[key] = manifest.version;
351
+ }
352
+ const treeSha = await hashNativeMacRuntimeTree(root);
353
+ const identity = await stat(root);
354
+ const runtime = { schemaVersion: 1, platform: `darwin-${process.arch}`,
355
+ nodePath: join(final, 'runtime', 'bin', 'node'), nodeSha256: sha(node),
356
+ roots: [{ path: join(final, 'runtime'), dev: identity.dev, ino: identity.ino, sha256: treeSha }],
357
+ modulesPath: join(final, 'runtime', 'node_modules'), versions };
358
+ const manifestHashes = Object.fromEntries([...manifests].map(([name, bytes]) => [name, sha(bytes)]));
359
+ const content = { schemaVersion: 2, sourceCommit: input.source.sourceCommit,
360
+ lockSha256: manifestHashes['pnpm-lock.yaml'], runtime,
361
+ sourceBuild: { backend: 'macos-seatbelt', runtime, timeoutMs: 60_000,
362
+ outputBytes: 1_048_576, versioning: 'patch' },
363
+ dshHome: input.dshHome, profile: input.profile, manifestHashes,
364
+ nodeArchiveSha256: NODE_ARCHIVES[process.arch], pnpmArchiveSha256: PNPM_ARCHIVE_SHA };
365
+ await writeFile(join(stage, 'bootstrap.json'), JSON.stringify({ ...content, receiptDigest: sha(JSON.stringify(content)) }), { mode: 0o600 });
366
+ for (const name of ['tool', 'cache', 'store', 'node.tgz', 'pnpm.tgz'])
367
+ await rm(join(stage, name), { recursive: true, force: true });
368
+ await syncDirectory(root);
369
+ await syncDirectory(stage);
370
+ await rename(stage, final);
371
+ await syncDirectory(parent);
372
+ return readExisting(final, input, manifests);
373
+ }
374
+ finally {
375
+ await rm(stage, { recursive: true, force: true });
376
+ }
377
+ }
378
+ export async function readNativeRsiRuntime(input) {
379
+ if (process.platform !== 'darwin' || !['arm64', 'x64'].includes(process.arch))
380
+ fail('native runtime requires macOS');
381
+ await privateDirectory(input.dshHome);
382
+ await sourceIdentity(input);
383
+ return readExisting(join(input.dshHome, 'rsi-native-runtimes', input.profile), input, await frozenManifests(input.source));
384
+ }
385
+ //# sourceMappingURL=rsi-native-runtime-bootstrap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rsi-native-runtime-bootstrap.js","sourceRoot":"","sources":["../src/rsi-native-runtime-bootstrap.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ import { type ActiveLarkOwnerBinding } from '@dsh-enhanced/assistant-delivery';
2
+ import { listAutomationsLocally } from '@dsh-enhanced/assistant-automations';
3
+ /** Pure authority resolution. The caller adds a missing route only within its journaled compiler output. */
4
+ export declare function resolveRsiOwnerRoute(delivery: Record<string, any>, owner: ActiveLarkOwnerBinding, home: string, expectedId?: string): {
5
+ workspace: string;
6
+ preset: string;
7
+ principal: string;
8
+ authority: Record<string, any>;
9
+ created: boolean;
10
+ route: {
11
+ id: string;
12
+ authorityHash: string;
13
+ };
14
+ };
15
+ /** Resolve owner lookup independently of Recovery/Health/Heartbeat deployment. */
16
+ export declare function rsiOwnerBindingQuery(effective: string, home: string): {
17
+ account: string;
18
+ tenant: string;
19
+ workspace: string;
20
+ agentPreset: string;
21
+ };
22
+ export declare function rsiDatabasePaths(effective: string, home: string): {
23
+ deliveryDatabasePath: string;
24
+ automationsDatabasePath: string;
25
+ };
26
+ export interface RsiAutomationInventory {
27
+ databasePath: string;
28
+ schedulerEnabled: boolean;
29
+ records: ReturnType<typeof listAutomationsLocally>;
30
+ }
31
+ export declare function rsiAutomationInventory(effective: string, home: string): RsiAutomationInventory;
32
+ export declare function rsiCoordinatorAutomationDatabasePath(home: string, profile: string): string;
33
+ export type RsiAutomationInventories = [RsiAutomationInventory, RsiAutomationInventory, RsiAutomationInventory, RsiAutomationInventory];
34
+ /** Capture both source ledgers and both destination ledgers. A coordinator switches to a private database. */
35
+ export declare function captureRsiAutomationInventories(inspect: (effective: string, home: string) => Promise<RsiAutomationInventory>, target: string, coordinator: string, home: string, profile: string): Promise<RsiAutomationInventories>;
36
+ export declare function assertRsiSchedulerActivation(inventories: RsiAutomationInventories, acknowledged: boolean): void;
37
+ //# sourceMappingURL=rsi-owner-profile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rsi-owner-profile.d.ts","sourceRoot":"","sources":["../src/rsi-owner-profile.ts"],"names":[],"mappings":"AAIA,OAAO,EAAgD,KAAK,sBAAsB,EAAE,MAAM,kCAAkC,CAAA;AAC5H,OAAO,EAAE,sBAAsB,EAAE,MAAM,qCAAqC,CAAA;AAkC5E,4GAA4G;AAC5G,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,sBAAsB,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM;;;;;;;YAqCnG,MAAM;;;EACtC;AAED,kFAAkF;AAClF,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;;;;;EAKnE;AAYD,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;;;EAG/D;AACD,MAAM,WAAW,sBAAsB;IACrC,YAAY,EAAE,MAAM,CAAA;IACpB,gBAAgB,EAAE,OAAO,CAAA;IACzB,OAAO,EAAE,UAAU,CAAC,OAAO,sBAAsB,CAAC,CAAA;CACnD;AAqBD,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,sBAAsB,CAM9F;AACD,wBAAgB,oCAAoC,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAE1F;AACD,MAAM,MAAM,wBAAwB,GAAG,CAAC,sBAAsB,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,sBAAsB,CAAC,CAAA;AACvI,8GAA8G;AAC9G,wBAAsB,+BAA+B,CAAC,OAAO,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,sBAAsB,CAAC,EACjI,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAOvG;AACD,wBAAgB,4BAA4B,CAAC,WAAW,EAAE,wBAAwB,EAAE,YAAY,EAAE,OAAO,GAAG,IAAI,CAQ/G"}