@dsh-enhanced/lark-channel 0.1.47 → 0.1.49
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.
- package/README.md +19 -8
- package/docs/rsi-setup.md +123 -11
- package/docs/setup.md +27 -14
- package/docs/supervised-growth.md +2 -0
- package/lib/adapter.d.ts +6 -0
- package/lib/adapter.d.ts.map +1 -1
- package/lib/adapter.js +79 -8
- package/lib/adapter.js.map +1 -1
- package/lib/business-cli-install.d.ts +9 -0
- package/lib/business-cli-install.d.ts.map +1 -0
- package/lib/business-cli-install.js +367 -0
- package/lib/business-cli-install.js.map +1 -0
- package/lib/business-environment.d.ts +2 -0
- package/lib/business-environment.d.ts.map +1 -0
- package/lib/business-environment.js +16 -0
- package/lib/business-environment.js.map +1 -0
- package/lib/business-skill.d.ts +32 -0
- package/lib/business-skill.d.ts.map +1 -0
- package/lib/business-skill.js +202 -0
- package/lib/business-skill.js.map +1 -0
- package/lib/rsi-authority-config.d.ts +29 -0
- package/lib/rsi-authority-config.d.ts.map +1 -0
- package/lib/rsi-authority-config.js +233 -0
- package/lib/rsi-authority-config.js.map +1 -0
- package/lib/rsi-authority-resources.d.ts +36 -0
- package/lib/rsi-authority-resources.d.ts.map +1 -0
- package/lib/rsi-authority-resources.js +139 -0
- package/lib/rsi-authority-resources.js.map +1 -0
- package/lib/rsi-authority-runtime.d.ts +50 -0
- package/lib/rsi-authority-runtime.d.ts.map +1 -0
- package/lib/rsi-authority-runtime.js +393 -0
- package/lib/rsi-authority-runtime.js.map +1 -0
- package/lib/rsi-bootstrap-manifest.d.ts +39 -0
- package/lib/rsi-bootstrap-manifest.d.ts.map +1 -0
- package/lib/rsi-bootstrap-manifest.js +366 -0
- package/lib/rsi-bootstrap-manifest.js.map +1 -0
- package/lib/rsi-bootstrap.d.ts +30 -0
- package/lib/rsi-bootstrap.d.ts.map +1 -0
- package/lib/rsi-bootstrap.js +363 -0
- package/lib/rsi-bootstrap.js.map +1 -0
- package/lib/rsi-build.d.ts +45 -0
- package/lib/rsi-build.d.ts.map +1 -0
- package/lib/rsi-build.js +404 -0
- package/lib/rsi-build.js.map +1 -0
- package/lib/rsi-creation-build.d.ts +47 -0
- package/lib/rsi-creation-build.d.ts.map +1 -0
- package/lib/rsi-creation-build.js +333 -0
- package/lib/rsi-creation-build.js.map +1 -0
- package/lib/rsi-host-authorities.d.ts +18 -0
- package/lib/rsi-host-authorities.d.ts.map +1 -0
- package/lib/rsi-host-authorities.js +129 -0
- package/lib/rsi-host-authorities.js.map +1 -0
- package/lib/rsi-host-update.d.ts +113 -0
- package/lib/rsi-host-update.d.ts.map +1 -0
- package/lib/rsi-host-update.js +316 -0
- package/lib/rsi-host-update.js.map +1 -0
- package/lib/rsi-install-inputs.d.ts +43 -0
- package/lib/rsi-install-inputs.d.ts.map +1 -0
- package/lib/rsi-install-inputs.js +342 -0
- package/lib/rsi-install-inputs.js.map +1 -0
- package/lib/rsi-install.d.ts +54 -0
- package/lib/rsi-install.d.ts.map +1 -0
- package/lib/rsi-install.js +404 -0
- package/lib/rsi-install.js.map +1 -0
- package/lib/rsi-local-activation.d.ts +78 -0
- package/lib/rsi-local-activation.d.ts.map +1 -0
- package/lib/rsi-local-activation.js +485 -0
- package/lib/rsi-local-activation.js.map +1 -0
- package/lib/rsi-local-cohort.d.ts +70 -0
- package/lib/rsi-local-cohort.d.ts.map +1 -0
- package/lib/rsi-local-cohort.js +781 -0
- package/lib/rsi-local-cohort.js.map +1 -0
- package/lib/rsi-local-install.d.ts +40 -0
- package/lib/rsi-local-install.d.ts.map +1 -0
- package/lib/rsi-local-install.js +221 -0
- package/lib/rsi-local-install.js.map +1 -0
- package/lib/rsi-local-pair-install.d.ts +38 -0
- package/lib/rsi-local-pair-install.d.ts.map +1 -0
- package/lib/rsi-local-pair-install.js +200 -0
- package/lib/rsi-local-pair-install.js.map +1 -0
- package/lib/rsi-local-profile-update.d.ts +25 -0
- package/lib/rsi-local-profile-update.d.ts.map +1 -0
- package/lib/rsi-local-profile-update.js +226 -0
- package/lib/rsi-local-profile-update.js.map +1 -0
- package/lib/rsi-local-resources.d.ts +37 -0
- package/lib/rsi-local-resources.d.ts.map +1 -0
- package/lib/rsi-local-resources.js +184 -0
- package/lib/rsi-local-resources.js.map +1 -0
- package/lib/rsi-local-roots-extension.d.ts +11 -0
- package/lib/rsi-local-roots-extension.d.ts.map +1 -0
- package/lib/rsi-local-roots-extension.js +31 -0
- package/lib/rsi-local-roots-extension.js.map +1 -0
- package/lib/rsi-local-update-build.d.ts +18 -0
- package/lib/rsi-local-update-build.d.ts.map +1 -0
- package/lib/rsi-local-update-build.js +37 -0
- package/lib/rsi-local-update-build.js.map +1 -0
- package/lib/rsi-local-update.d.ts +39 -0
- package/lib/rsi-local-update.d.ts.map +1 -0
- package/lib/rsi-local-update.js +205 -0
- package/lib/rsi-local-update.js.map +1 -0
- package/lib/rsi-memory-learning.d.ts +22 -0
- package/lib/rsi-memory-learning.d.ts.map +1 -0
- package/lib/rsi-memory-learning.js +76 -0
- package/lib/rsi-memory-learning.js.map +1 -0
- package/lib/rsi-owner-profile.d.ts +37 -0
- package/lib/rsi-owner-profile.d.ts.map +1 -0
- package/lib/rsi-owner-profile.js +178 -0
- package/lib/rsi-owner-profile.js.map +1 -0
- package/lib/rsi-plugin-creation.d.ts +31 -0
- package/lib/rsi-plugin-creation.d.ts.map +1 -0
- package/lib/rsi-plugin-creation.js +179 -0
- package/lib/rsi-plugin-creation.js.map +1 -0
- package/lib/rsi-profile.d.ts +23 -0
- package/lib/rsi-profile.d.ts.map +1 -1
- package/lib/rsi-profile.js +154 -43
- package/lib/rsi-profile.js.map +1 -1
- package/lib/rsi-release-build.d.ts +41 -0
- package/lib/rsi-release-build.d.ts.map +1 -0
- package/lib/rsi-release-build.js +223 -0
- package/lib/rsi-release-build.js.map +1 -0
- package/lib/rsi-service-environment.d.ts +6 -0
- package/lib/rsi-service-environment.d.ts.map +1 -0
- package/lib/rsi-service-environment.js +113 -0
- package/lib/rsi-service-environment.js.map +1 -0
- package/lib/rsi-service-setup.d.ts +10 -0
- package/lib/rsi-service-setup.d.ts.map +1 -0
- package/lib/rsi-service-setup.js +34 -0
- package/lib/rsi-service-setup.js.map +1 -0
- package/lib/rsi-setup.d.ts +35 -2
- package/lib/rsi-setup.d.ts.map +1 -1
- package/lib/rsi-setup.js +459 -32
- package/lib/rsi-setup.js.map +1 -1
- package/lib/rsi-source-maintenance.d.ts +25 -0
- package/lib/rsi-source-maintenance.d.ts.map +1 -0
- package/lib/rsi-source-maintenance.js +348 -0
- package/lib/rsi-source-maintenance.js.map +1 -0
- package/lib/rsi-source-update.d.ts +26 -0
- package/lib/rsi-source-update.d.ts.map +1 -0
- package/lib/rsi-source-update.js +276 -0
- package/lib/rsi-source-update.js.map +1 -0
- package/lib/rsi-source.d.ts +34 -0
- package/lib/rsi-source.d.ts.map +1 -0
- package/lib/rsi-source.js +375 -0
- package/lib/rsi-source.js.map +1 -0
- package/lib/rsi-systemd-bootstrap.d.ts +46 -0
- package/lib/rsi-systemd-bootstrap.d.ts.map +1 -0
- package/lib/rsi-systemd-bootstrap.js +271 -0
- package/lib/rsi-systemd-bootstrap.js.map +1 -0
- package/lib/sdk.d.ts.map +1 -1
- package/lib/sdk.js +26 -1
- package/lib/sdk.js.map +1 -1
- package/lib/setup-business.d.ts +49 -0
- package/lib/setup-business.d.ts.map +1 -0
- package/lib/setup-business.js +335 -0
- package/lib/setup-business.js.map +1 -0
- package/lib/setup-profile.d.ts +1 -1
- package/lib/setup-profile.d.ts.map +1 -1
- package/lib/setup-profile.js +25 -2
- package/lib/setup-profile.js.map +1 -1
- package/lib/setup.d.ts +12 -1
- package/lib/setup.d.ts.map +1 -1
- package/lib/setup.js +138 -34
- package/lib/setup.js.map +1 -1
- package/lib/systemd.d.ts +10 -0
- package/lib/systemd.d.ts.map +1 -1
- package/lib/systemd.js +23 -6
- package/lib/systemd.js.map +1 -1
- package/lib/types.d.ts +7 -0
- package/lib/types.d.ts.map +1 -1
- package/lib/types.js.map +1 -1
- package/lib/version.d.ts +1 -1
- package/lib/version.js +1 -1
- package/package.json +32 -20
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
import { createHash, randomUUID } from 'node:crypto';
|
|
2
|
+
import { lstat, realpath, rename, unlink } from 'node:fs/promises';
|
|
3
|
+
import { join } from 'node:path';
|
|
4
|
+
import { isDeepStrictEqual } from 'node:util';
|
|
5
|
+
import { rsiBuildResources as io } from './rsi-build.js';
|
|
6
|
+
import { rsiCoordinatorProfile } from './rsi-install.js';
|
|
7
|
+
import { readRsiLocalCohort, verifyRsiLocalInstalledPackages, verifyRsiLocalInstalledPackagesFresh, rsiLocalPeerOverrides } from './rsi-local-cohort.js';
|
|
8
|
+
import { installRsiLocalProfile } from './rsi-local-install.js';
|
|
9
|
+
import { assertRsiLocalProfileRoots, rebaseRsiLocalProfileWorkspace } from './rsi-local-profile-update.js';
|
|
10
|
+
import { rsiLocalUpdateBundles, rsiMemoryLearningInitialRow } from './rsi-local-roots-extension.js';
|
|
11
|
+
import { isMap, isScalar, isSeq, parseDocument } from 'yaml';
|
|
12
|
+
const coordinatorBundles = ['assistant-policy', 'assistant-automations', 'plugin-control-plane'];
|
|
13
|
+
const hash = (source) => createHash('sha256').update(source).digest('hex');
|
|
14
|
+
function fail(message) { throw new Error(`rsi local pair install: ${message}`); }
|
|
15
|
+
const ports = { install: installRsiLocalProfile, verify: verifyRsiLocalInstalledPackagesFresh };
|
|
16
|
+
async function replace(path, before, after) {
|
|
17
|
+
const temporary = `${path}.rsi-update-${randomUUID()}`;
|
|
18
|
+
try {
|
|
19
|
+
await io.writeExclusive(temporary, after);
|
|
20
|
+
if (!(await io.readStable(path, 2_097_152)).equals(before))
|
|
21
|
+
fail(`file changed before replacement: ${path}`);
|
|
22
|
+
await rename(temporary, path);
|
|
23
|
+
}
|
|
24
|
+
finally {
|
|
25
|
+
await unlink(temporary).catch(error => { if (error.code !== 'ENOENT')
|
|
26
|
+
throw error; });
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
export async function stageRsiLocalPairPackages(input, dependencies = ports) {
|
|
30
|
+
return { ...await stageRsiLocalPackages(input, dependencies, true), coordinatorProfile: rsiCoordinatorProfile(input.profile) };
|
|
31
|
+
}
|
|
32
|
+
/** Package-only step for an explicitly verified pre-owner installation. The
|
|
33
|
+
* outer transaction must also prove the absence of owner authority, stage signed
|
|
34
|
+
* source maintenance and own stop/copy/switch/recovery. Never splits an existing
|
|
35
|
+
* coordinator pair, even if its receipt or profile has been partly removed. */
|
|
36
|
+
export async function stageRsiLocalSinglePackages(input, dependencies = ports) {
|
|
37
|
+
return stageRsiLocalPackages(input, dependencies, false);
|
|
38
|
+
}
|
|
39
|
+
async function absent(path) {
|
|
40
|
+
try {
|
|
41
|
+
await lstat(path);
|
|
42
|
+
return false;
|
|
43
|
+
}
|
|
44
|
+
catch (error) {
|
|
45
|
+
if (error.code === 'ENOENT')
|
|
46
|
+
return true;
|
|
47
|
+
throw error;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
function assertNoLearnerPatchReference(source) {
|
|
51
|
+
const document = parseDocument(source, { uniqueKeys: true,
|
|
52
|
+
customTags: [{ tag: 'tag:yaml.org,2002:js', resolve: (value) => value }] });
|
|
53
|
+
if (document.errors.length || document.warnings.length || !isSeq(document.contents))
|
|
54
|
+
fail('profile patch is invalid');
|
|
55
|
+
const inspect = (node) => {
|
|
56
|
+
if (isScalar(node) && typeof node.value === 'string'
|
|
57
|
+
&& (node.value.includes(rsiMemoryLearningInitialRow.id) || node.value.includes(rsiMemoryLearningInitialRow.name))) {
|
|
58
|
+
fail('profile patch already references the memory learner');
|
|
59
|
+
}
|
|
60
|
+
if (isMap(node))
|
|
61
|
+
for (const pair of node.items) {
|
|
62
|
+
inspect(pair.key);
|
|
63
|
+
inspect(pair.value);
|
|
64
|
+
}
|
|
65
|
+
if (isSeq(node))
|
|
66
|
+
for (const item of node.items)
|
|
67
|
+
inspect(item);
|
|
68
|
+
};
|
|
69
|
+
inspect(document.contents);
|
|
70
|
+
}
|
|
71
|
+
function assertExpectedLearnerManifest(before, after, candidate) {
|
|
72
|
+
const expected = JSON.parse(before.toString('utf8'));
|
|
73
|
+
const actual = JSON.parse(after.toString('utf8'));
|
|
74
|
+
const name = rsiMemoryLearningInitialRow.name;
|
|
75
|
+
const learner = candidate.packages.find(item => item.name === name && item.bundle);
|
|
76
|
+
if (!learner)
|
|
77
|
+
fail('candidate memory learner bundle is absent');
|
|
78
|
+
const dependencies = actual.dependencies;
|
|
79
|
+
const locator = dependencies && typeof dependencies === 'object' && !Array.isArray(dependencies)
|
|
80
|
+
? dependencies[name] : undefined;
|
|
81
|
+
if (typeof locator !== 'string' || !locator.startsWith('file:'))
|
|
82
|
+
fail('memory learner manifest dependency is missing');
|
|
83
|
+
const mounted = actual.dsh && typeof actual.dsh === 'object' && !Array.isArray(actual.dsh)
|
|
84
|
+
? actual.dsh.profile : undefined;
|
|
85
|
+
const bundles = mounted && typeof mounted === 'object' && !Array.isArray(mounted)
|
|
86
|
+
? mounted.bundles : undefined;
|
|
87
|
+
const oldDsh = expected.dsh;
|
|
88
|
+
const oldProfile = oldDsh.profile;
|
|
89
|
+
if (!Array.isArray(bundles) || !Array.isArray(oldProfile.bundles)
|
|
90
|
+
|| !isDeepStrictEqual(bundles, [...oldProfile.bundles, name]))
|
|
91
|
+
fail('memory learner mounted bundle changed unexpectedly');
|
|
92
|
+
delete dependencies[name];
|
|
93
|
+
bundles.pop();
|
|
94
|
+
if (!isDeepStrictEqual(actual, expected))
|
|
95
|
+
fail('owner manifest changed beyond the memory learner root');
|
|
96
|
+
}
|
|
97
|
+
async function stageRsiLocalPackages(input, dependencies, paired) {
|
|
98
|
+
const { dshHome, profile, originalCohort, signal } = input;
|
|
99
|
+
signal.throwIfAborted();
|
|
100
|
+
if (paired && input.rootExtension)
|
|
101
|
+
fail('paired installation cannot extend bundle roots');
|
|
102
|
+
if (await realpath(dshHome) !== dshHome)
|
|
103
|
+
fail('Home is not canonical');
|
|
104
|
+
const coordinatorProfile = rsiCoordinatorProfile(profile);
|
|
105
|
+
const candidate = await readRsiLocalCohort({ dshHome, profile });
|
|
106
|
+
const targetBundles = rsiLocalUpdateBundles(originalCohort.bundles, input.rootExtension);
|
|
107
|
+
if (!isDeepStrictEqual(candidate.bundles, targetBundles))
|
|
108
|
+
fail('candidate cohort bundle roots differ');
|
|
109
|
+
const receiptPath = join(dshHome, `.rsi-coordinator-${hash(profile).slice(0, 16)}.json`);
|
|
110
|
+
const assertSingle = async () => {
|
|
111
|
+
if (!await absent(receiptPath) || !await absent(join(dshHome, 'profiles', coordinatorProfile))) {
|
|
112
|
+
fail('single-profile update cannot split an existing or incomplete coordinator pair');
|
|
113
|
+
}
|
|
114
|
+
};
|
|
115
|
+
if (!paired)
|
|
116
|
+
await assertSingle();
|
|
117
|
+
const receiptSource = paired ? await io.readStable(receiptPath, 65_536, true) : undefined;
|
|
118
|
+
const receipt = { schemaVersion: 1, targetProfile: profile, coordinatorProfile,
|
|
119
|
+
version: originalCohort.version, sourceRepository: originalCohort.sourceRepository };
|
|
120
|
+
if (receiptSource && !isDeepStrictEqual(JSON.parse(receiptSource.toString('utf8')), receipt))
|
|
121
|
+
fail('coordinator receipt differs');
|
|
122
|
+
const nextReceipt = JSON.stringify({ ...receipt, version: candidate.version });
|
|
123
|
+
const snapshots = [];
|
|
124
|
+
const profiles = paired
|
|
125
|
+
? [[profile, originalCohort.bundles], [coordinatorProfile, coordinatorBundles]]
|
|
126
|
+
: [[profile, originalCohort.bundles]];
|
|
127
|
+
for (const [name, bundles] of profiles) {
|
|
128
|
+
signal.throwIfAborted();
|
|
129
|
+
const root = join(dshHome, 'profiles', name);
|
|
130
|
+
await io.directory(root, false);
|
|
131
|
+
const read = async (name) => {
|
|
132
|
+
const path = join(root, name);
|
|
133
|
+
if (await realpath(path) !== path)
|
|
134
|
+
fail(`profile metadata is not physical: ${path}`);
|
|
135
|
+
return io.readStable(path, 2_097_152);
|
|
136
|
+
};
|
|
137
|
+
const manifest = await read('package.json'), patch = await read('cordis.patch.yml');
|
|
138
|
+
const workspace = await read('pnpm-workspace.yaml');
|
|
139
|
+
assertRsiLocalProfileRoots({ source: manifest.toString('utf8'), cohort: originalCohort, bundles });
|
|
140
|
+
if (input.rootExtension)
|
|
141
|
+
assertNoLearnerPatchReference(patch.toString('utf8'));
|
|
142
|
+
const nextBundles = input.rootExtension ? targetBundles : [...bundles];
|
|
143
|
+
const nextWorkspace = rebaseRsiLocalProfileWorkspace({ source: workspace.toString('utf8'), original: originalCohort, candidate, bundles,
|
|
144
|
+
...(input.rootExtension ? { rootExtension: input.rootExtension } : {}),
|
|
145
|
+
originalPeers: await rsiLocalPeerOverrides({ cohort: originalCohort, bundles, profilePath: root }),
|
|
146
|
+
candidatePeers: await rsiLocalPeerOverrides({ cohort: candidate, bundles: nextBundles }) });
|
|
147
|
+
await dependencies.verify({ cohort: originalCohort, profilePath: root, bundles: [...bundles] }, signal);
|
|
148
|
+
snapshots.push({ name, root, bundles: nextBundles, manifest, patch, workspace, nextWorkspace });
|
|
149
|
+
}
|
|
150
|
+
// All old package inventories and both configurations must pass before the
|
|
151
|
+
// first write or package-manager invocation.
|
|
152
|
+
if (receiptSource && !(await io.readStable(receiptPath, 65_536, true)).equals(receiptSource))
|
|
153
|
+
fail('coordinator receipt changed');
|
|
154
|
+
if (!paired)
|
|
155
|
+
await assertSingle();
|
|
156
|
+
for (const snapshot of snapshots)
|
|
157
|
+
for (const [name, expected] of [
|
|
158
|
+
['package.json', snapshot.manifest], ['cordis.patch.yml', snapshot.patch], ['pnpm-workspace.yaml', snapshot.workspace],
|
|
159
|
+
])
|
|
160
|
+
if (!(await io.readStable(join(snapshot.root, name), 2_097_152)).equals(expected))
|
|
161
|
+
fail(`profile changed before installation: ${snapshot.name}`);
|
|
162
|
+
for (const snapshot of snapshots) {
|
|
163
|
+
signal.throwIfAborted();
|
|
164
|
+
await replace(join(snapshot.root, 'pnpm-workspace.yaml'), snapshot.workspace, snapshot.nextWorkspace);
|
|
165
|
+
await io.syncDirectory(snapshot.root);
|
|
166
|
+
await dependencies.install({ dshHome, profile: snapshot.name, cohort: candidate,
|
|
167
|
+
bundles: snapshot.bundles, dsh: input.dsh, signal });
|
|
168
|
+
}
|
|
169
|
+
const files = {};
|
|
170
|
+
for (const snapshot of snapshots) {
|
|
171
|
+
signal.throwIfAborted();
|
|
172
|
+
await dependencies.verify({ cohort: candidate, profilePath: snapshot.root, bundles: [...snapshot.bundles] }, signal);
|
|
173
|
+
const manifest = await io.readStable(join(snapshot.root, 'package.json'), 2_097_152);
|
|
174
|
+
// Native plugin add may introduce only the one explicit pre-owner root.
|
|
175
|
+
if (input.rootExtension)
|
|
176
|
+
assertExpectedLearnerManifest(snapshot.manifest, manifest, candidate);
|
|
177
|
+
else if (!isDeepStrictEqual(JSON.parse(manifest.toString('utf8')), JSON.parse(snapshot.manifest.toString('utf8'))))
|
|
178
|
+
fail(`owner manifest changed: ${snapshot.name}`);
|
|
179
|
+
assertRsiLocalProfileRoots({ source: manifest.toString('utf8'), cohort: candidate, bundles: snapshot.bundles });
|
|
180
|
+
const patch = await io.readStable(join(snapshot.root, 'cordis.patch.yml'), 2_097_152);
|
|
181
|
+
const workspace = await io.readStable(join(snapshot.root, 'pnpm-workspace.yaml'), 2_097_152);
|
|
182
|
+
if (!patch.equals(snapshot.patch) || workspace.toString('utf8') !== snapshot.nextWorkspace)
|
|
183
|
+
fail(`owner patch or workspace changed: ${snapshot.name}`);
|
|
184
|
+
for (const [name, source] of [['package.json', manifest], ['cordis.patch.yml', patch], ['pnpm-workspace.yaml', workspace]])
|
|
185
|
+
files[join(snapshot.root, name)] = hash(source);
|
|
186
|
+
files[join(snapshot.root, 'pnpm-lock.yaml')] = hash(await io.readStable(join(snapshot.root, 'pnpm-lock.yaml'), 16_777_216));
|
|
187
|
+
}
|
|
188
|
+
if (!isDeepStrictEqual(await readRsiLocalCohort({ dshHome, profile }), candidate))
|
|
189
|
+
fail('candidate cohort changed');
|
|
190
|
+
signal.throwIfAborted();
|
|
191
|
+
if (receiptSource) {
|
|
192
|
+
await replace(receiptPath, receiptSource, nextReceipt);
|
|
193
|
+
await io.syncDirectory(dshHome);
|
|
194
|
+
files[receiptPath] = hash(nextReceipt);
|
|
195
|
+
}
|
|
196
|
+
else
|
|
197
|
+
await assertSingle();
|
|
198
|
+
return { schemaVersion: 1, profile, cohortDigest: candidate.receiptDigest, files };
|
|
199
|
+
}
|
|
200
|
+
//# sourceMappingURL=rsi-local-pair-install.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rsi-local-pair-install.js","sourceRoot":"","sources":["../src/rsi-local-pair-install.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { RsiLocalCohort } from './rsi-local-cohort.js';
|
|
2
|
+
import { type RsiLocalRootExtension } from './rsi-local-roots-extension.js';
|
|
3
|
+
/** Replace only the old cohort's exact runtime edges in a stopped profile's
|
|
4
|
+
* workspace. Extra owner settings and YAML comments remain in the document;
|
|
5
|
+
* the candidate cannot grant new build-script authority. No files are read or
|
|
6
|
+
* written and no installation/Host action is performed. */
|
|
7
|
+
export declare function rebaseRsiLocalProfileWorkspace(input: {
|
|
8
|
+
source: string;
|
|
9
|
+
original: RsiLocalCohort;
|
|
10
|
+
candidate: RsiLocalCohort;
|
|
11
|
+
bundles?: readonly string[];
|
|
12
|
+
originalPeers?: Record<string, string>;
|
|
13
|
+
candidatePeers?: Record<string, string>;
|
|
14
|
+
rootExtension?: RsiLocalRootExtension;
|
|
15
|
+
}): string;
|
|
16
|
+
/** Assert the manifest's internal root dependencies are exactly this profile's
|
|
17
|
+
* selected frozen bundles. pnpm may save a tarball as an absolute file: path or
|
|
18
|
+
* relative to Home/profiles/<name>; every profile has that same directory depth.
|
|
19
|
+
* Other dependency/configuration fields are inspected without rewriting bytes. */
|
|
20
|
+
export declare function assertRsiLocalProfileRoots(input: {
|
|
21
|
+
source: string;
|
|
22
|
+
cohort: RsiLocalCohort;
|
|
23
|
+
bundles: readonly string[];
|
|
24
|
+
}): void;
|
|
25
|
+
//# sourceMappingURL=rsi-local-profile-update.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rsi-local-profile-update.d.ts","sourceRoot":"","sources":["../src/rsi-local-profile-update.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAE3D,OAAO,EAAyB,KAAK,qBAAqB,EAAE,MAAM,gCAAgC,CAAA;AAuDlG;;;2DAG2D;AAC3D,wBAAgB,8BAA8B,CAAC,KAAK,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,cAAc,CAAC;IAAC,SAAS,EAAE,cAAc,CAAC;IAAC,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACvJ,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAAC,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAAC,aAAa,CAAC,EAAE,qBAAqB,CAAA;CAAE,GAAG,MAAM,CAiFlI;AAED;;;kFAGkF;AAClF,wBAAgB,0BAA0B,CAAC,KAAK,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,cAAc,CAAC;IAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,GAAG,IAAI,CA8B9H"}
|
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
import { dirname, isAbsolute, join, resolve } from 'node:path';
|
|
2
|
+
import { isDeepStrictEqual } from 'node:util';
|
|
3
|
+
import { isMap, isScalar, parseDocument } from 'yaml';
|
|
4
|
+
import { mergeRsiLocalOverrides, rsiLocalDependencyOverrides } from './rsi-local-install.js';
|
|
5
|
+
import { rsiLocalUpdateBundles } from './rsi-local-roots-extension.js';
|
|
6
|
+
const INTERNAL = '@dsh-enhanced/';
|
|
7
|
+
const SLUG = /^[a-z0-9]+(?:-[a-z0-9]+)*$/u;
|
|
8
|
+
const PROFILE = /^[A-Za-z0-9][A-Za-z0-9._-]{0,63}$/u;
|
|
9
|
+
const VERSION = /^(\d+)\.(\d+)\.(\d+)(?:-([0-9A-Za-z]+(?:[.-][0-9A-Za-z]+)*))?$/u;
|
|
10
|
+
function fail(message) { throw new Error(`rsi local profile update: ${message}`); }
|
|
11
|
+
function canonical(path) { return typeof path === 'string' && isAbsolute(path) && resolve(path) === path && !path.includes('\0'); }
|
|
12
|
+
function object(value) {
|
|
13
|
+
return value !== null && typeof value === 'object' && !Array.isArray(value);
|
|
14
|
+
}
|
|
15
|
+
/** Only configuration identities are checked here. The caller independently
|
|
16
|
+
* reads/verifies both frozen receipts and their tarball inventories. */
|
|
17
|
+
function assertCohort(cohort) {
|
|
18
|
+
if (!canonical(cohort.root) || !PROFILE.test(cohort.root.split('/').at(-1))
|
|
19
|
+
|| dirname(cohort.root).split('/').at(-1) !== 'rsi-local-cohorts'
|
|
20
|
+
|| !VERSION.test(cohort.version) || !object(cohort.allowBuilds)
|
|
21
|
+
|| !Array.isArray(cohort.bundles) || !cohort.bundles.length || new Set(cohort.bundles).size !== cohort.bundles.length
|
|
22
|
+
|| cohort.bundles.some(slug => !SLUG.test(slug))
|
|
23
|
+
|| !Array.isArray(cohort.packages) || !cohort.packages.length || cohort.packages.length > 128
|
|
24
|
+
|| new Set(cohort.packages.map(item => item.name)).size !== cohort.packages.length
|
|
25
|
+
|| Object.entries(cohort.allowBuilds).some(([name, allowed]) => !name || typeof allowed !== 'boolean'))
|
|
26
|
+
fail('invalid frozen cohort configuration');
|
|
27
|
+
for (const item of cohort.packages) {
|
|
28
|
+
const slug = item.name.slice(INTERNAL.length);
|
|
29
|
+
if (!item.name.startsWith(INTERNAL) || !SLUG.test(slug)
|
|
30
|
+
|| item.path !== `${item.bundle ? 'plugins' : 'packages'}/${slug}`
|
|
31
|
+
|| item.tarball !== join(cohort.root, 'artifacts', `${slug}.tgz`)
|
|
32
|
+
|| !Array.isArray(item.runtimeDependencies) || new Set(item.runtimeDependencies).size !== item.runtimeDependencies.length
|
|
33
|
+
|| item.runtimeDependencies.some(name => !cohort.packages.some(child => child.name === name)))
|
|
34
|
+
fail(`invalid frozen package configuration: ${item.name}`);
|
|
35
|
+
}
|
|
36
|
+
if (cohort.bundles.some(slug => !cohort.packages.some(item => item.name === `${INTERNAL}${slug}` && item.bundle)))
|
|
37
|
+
fail('selected bundle is absent from cohort');
|
|
38
|
+
}
|
|
39
|
+
function compareVersions(left, right) {
|
|
40
|
+
const a = VERSION.exec(left), b = VERSION.exec(right);
|
|
41
|
+
for (let index = 1; index <= 3; index++) {
|
|
42
|
+
const first = BigInt(a[index]), second = BigInt(b[index]);
|
|
43
|
+
if (first !== second)
|
|
44
|
+
return first < second ? -1 : 1;
|
|
45
|
+
}
|
|
46
|
+
if (a[4] === b[4])
|
|
47
|
+
return 0;
|
|
48
|
+
if (a[4] === undefined || b[4] === undefined)
|
|
49
|
+
return a[4] === undefined ? 1 : -1;
|
|
50
|
+
const first = a[4].split('.'), second = b[4].split('.');
|
|
51
|
+
for (let index = 0; index < Math.max(first.length, second.length); index++) {
|
|
52
|
+
const x = first[index], y = second[index];
|
|
53
|
+
if (x === y)
|
|
54
|
+
continue;
|
|
55
|
+
if (x === undefined || y === undefined)
|
|
56
|
+
return x === undefined ? -1 : 1;
|
|
57
|
+
const nx = /^\d+$/u.test(x), ny = /^\d+$/u.test(y);
|
|
58
|
+
if (nx && ny) {
|
|
59
|
+
if (BigInt(x) !== BigInt(y))
|
|
60
|
+
return BigInt(x) < BigInt(y) ? -1 : 1;
|
|
61
|
+
}
|
|
62
|
+
else if (nx !== ny)
|
|
63
|
+
return nx ? -1 : 1;
|
|
64
|
+
else
|
|
65
|
+
return x < y ? -1 : 1;
|
|
66
|
+
}
|
|
67
|
+
return 0;
|
|
68
|
+
}
|
|
69
|
+
/** Replace only the old cohort's exact runtime edges in a stopped profile's
|
|
70
|
+
* workspace. Extra owner settings and YAML comments remain in the document;
|
|
71
|
+
* the candidate cannot grant new build-script authority. No files are read or
|
|
72
|
+
* written and no installation/Host action is performed. */
|
|
73
|
+
export function rebaseRsiLocalProfileWorkspace(input) {
|
|
74
|
+
const { source, original, candidate } = input;
|
|
75
|
+
assertCohort(original);
|
|
76
|
+
assertCohort(candidate);
|
|
77
|
+
const expectedBundles = rsiLocalUpdateBundles(original.bundles, input.rootExtension);
|
|
78
|
+
if (original.root !== candidate.root || original.sourceRepository !== candidate.sourceRepository
|
|
79
|
+
|| !isDeepStrictEqual(candidate.bundles, expectedBundles))
|
|
80
|
+
fail('candidate cohort installation identity changed');
|
|
81
|
+
if (input.rootExtension && input.bundles !== undefined && !isDeepStrictEqual([...input.bundles].sort(), [...original.bundles].sort())) {
|
|
82
|
+
fail('root extension is only supported for the target profile');
|
|
83
|
+
}
|
|
84
|
+
if (compareVersions(candidate.version, original.version) < 0)
|
|
85
|
+
fail('candidate cohort version moved backwards');
|
|
86
|
+
for (const item of original.packages) {
|
|
87
|
+
const next = candidate.packages.find(value => value.name === item.name);
|
|
88
|
+
if (next && (next.path !== item.path || next.bundle !== item.bundle || next.tarball !== item.tarball))
|
|
89
|
+
fail(`candidate package path changed: ${item.name}`);
|
|
90
|
+
}
|
|
91
|
+
for (const [name, allowed] of Object.entries(original.allowBuilds)) {
|
|
92
|
+
if (candidate.allowBuilds[name] !== allowed)
|
|
93
|
+
fail(`candidate changed existing build authorization: ${name}`);
|
|
94
|
+
}
|
|
95
|
+
for (const [name, allowed] of Object.entries(candidate.allowBuilds)) {
|
|
96
|
+
if (!Object.hasOwn(original.allowBuilds, name) && allowed)
|
|
97
|
+
fail(`candidate added build authorization: ${name}`);
|
|
98
|
+
}
|
|
99
|
+
const document = parseDocument(source, { uniqueKeys: true });
|
|
100
|
+
if (document.errors.length || document.warnings.length || !isMap(document.contents))
|
|
101
|
+
fail('profile workspace configuration is invalid');
|
|
102
|
+
if (document.get('nodeLinker') !== 'isolated')
|
|
103
|
+
fail('profile nodeLinker drifted from frozen local installation');
|
|
104
|
+
const oldRuntime = rsiLocalDependencyOverrides(original);
|
|
105
|
+
const oldRequired = rsiLocalDependencyOverrides(original, input.bundles);
|
|
106
|
+
const oldOverrides = { ...oldRuntime, ...input.originalPeers };
|
|
107
|
+
const nextOverrides = { ...rsiLocalDependencyOverrides(candidate, input.rootExtension ? candidate.bundles : input.bundles), ...input.candidatePeers };
|
|
108
|
+
const overrides = document.get('overrides', true);
|
|
109
|
+
if (overrides !== undefined && !isMap(overrides))
|
|
110
|
+
fail('profile overrides must be a mapping');
|
|
111
|
+
if (isMap(overrides))
|
|
112
|
+
for (const item of overrides.items) {
|
|
113
|
+
if (!isScalar(item.key) || typeof item.key.value !== 'string')
|
|
114
|
+
fail('profile override selector is invalid');
|
|
115
|
+
const selector = item.key.value;
|
|
116
|
+
if (selector.includes(INTERNAL) && !Object.hasOwn(oldOverrides, selector))
|
|
117
|
+
fail(`unknown or stale internal override: ${selector}`);
|
|
118
|
+
}
|
|
119
|
+
for (const [selector, value] of Object.entries(oldRequired)) {
|
|
120
|
+
if (document.getIn(['overrides', selector]) !== value)
|
|
121
|
+
fail(`old runtime override is missing or changed: ${selector}`);
|
|
122
|
+
}
|
|
123
|
+
for (const [selector, value] of Object.entries(oldOverrides)) {
|
|
124
|
+
const present = document.getIn(['overrides', selector]);
|
|
125
|
+
if (present !== undefined && present !== value)
|
|
126
|
+
fail(`old peer or runtime override changed: ${selector}`);
|
|
127
|
+
}
|
|
128
|
+
const builds = document.get('allowBuilds', true);
|
|
129
|
+
if (builds !== undefined && !isMap(builds))
|
|
130
|
+
fail('profile allowBuilds must be a mapping');
|
|
131
|
+
if (isMap(builds))
|
|
132
|
+
for (const item of builds.items) {
|
|
133
|
+
if (!isScalar(item.key) || typeof item.key.value !== 'string'
|
|
134
|
+
|| !isScalar(item.value) || typeof item.value.value !== 'boolean')
|
|
135
|
+
fail('profile build policy must contain booleans');
|
|
136
|
+
}
|
|
137
|
+
for (const [name, allowed] of Object.entries(original.allowBuilds)) {
|
|
138
|
+
if (document.getIn(['allowBuilds', name]) !== allowed)
|
|
139
|
+
fail(`old build authorization is missing or changed: ${name}`);
|
|
140
|
+
}
|
|
141
|
+
// Rename retained edges in place, including version advances, so owner
|
|
142
|
+
// comments survive. Comments on removed edges remain on the overrides map.
|
|
143
|
+
for (const selector of Object.keys(oldOverrides)) {
|
|
144
|
+
if (document.getIn(['overrides', selector]) === undefined)
|
|
145
|
+
continue;
|
|
146
|
+
const nextSelector = selector.replace(`@${original.version}>`, `@${candidate.version}>`);
|
|
147
|
+
if (Object.hasOwn(nextOverrides, nextSelector) && isMap(overrides)) {
|
|
148
|
+
const pair = overrides.items.find(item => isScalar(item.key) && item.key.value === selector);
|
|
149
|
+
if (isScalar(pair.key))
|
|
150
|
+
pair.key.value = nextSelector;
|
|
151
|
+
}
|
|
152
|
+
else {
|
|
153
|
+
if (isMap(overrides)) {
|
|
154
|
+
const pair = overrides.items.find(item => isScalar(item.key) && item.key.value === selector);
|
|
155
|
+
const comments = [overrides.comment, isScalar(pair.key) && pair.key.commentBefore,
|
|
156
|
+
isScalar(pair.key) && pair.key.comment, isScalar(pair.value) && pair.value.commentBefore,
|
|
157
|
+
isScalar(pair.value) && pair.value.comment].filter(value => typeof value === 'string');
|
|
158
|
+
overrides.comment = comments.join('\n') || null;
|
|
159
|
+
}
|
|
160
|
+
document.deleteIn(['overrides', selector]);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
let result = mergeRsiLocalOverrides(document.toString(), nextOverrides, candidate.allowBuilds);
|
|
164
|
+
if (input.rootExtension) {
|
|
165
|
+
// The native installer runs this same merge once more. Long new peer
|
|
166
|
+
// selectors may be wrapped on that parse/serialize pass.
|
|
167
|
+
for (let attempt = 0; attempt < 4; attempt++) {
|
|
168
|
+
const next = mergeRsiLocalOverrides(result, nextOverrides, candidate.allowBuilds);
|
|
169
|
+
if (next === result)
|
|
170
|
+
return result;
|
|
171
|
+
result = next;
|
|
172
|
+
}
|
|
173
|
+
fail('extended workspace serialization did not stabilize');
|
|
174
|
+
}
|
|
175
|
+
return result;
|
|
176
|
+
}
|
|
177
|
+
/** Assert the manifest's internal root dependencies are exactly this profile's
|
|
178
|
+
* selected frozen bundles. pnpm may save a tarball as an absolute file: path or
|
|
179
|
+
* relative to Home/profiles/<name>; every profile has that same directory depth.
|
|
180
|
+
* Other dependency/configuration fields are inspected without rewriting bytes. */
|
|
181
|
+
export function assertRsiLocalProfileRoots(input) {
|
|
182
|
+
assertCohort(input.cohort);
|
|
183
|
+
let manifest;
|
|
184
|
+
try {
|
|
185
|
+
manifest = JSON.parse(input.source);
|
|
186
|
+
}
|
|
187
|
+
catch {
|
|
188
|
+
fail('profile manifest is invalid JSON');
|
|
189
|
+
}
|
|
190
|
+
if (!object(manifest) || !input.bundles.length || new Set(input.bundles).size !== input.bundles.length)
|
|
191
|
+
fail('profile manifest or bundle roots are invalid');
|
|
192
|
+
const roots = new Map(input.bundles.map(slug => {
|
|
193
|
+
const item = input.cohort.packages.find(value => value.name === `${INTERNAL}${slug}` && value.bundle);
|
|
194
|
+
if (!item)
|
|
195
|
+
fail(`profile bundle is absent from cohort: ${slug}`);
|
|
196
|
+
return [item.name, item.tarball];
|
|
197
|
+
}));
|
|
198
|
+
const dsh = manifest.dsh, profile = object(dsh) ? dsh.profile : undefined;
|
|
199
|
+
const mounted = object(profile) ? profile.bundles : undefined;
|
|
200
|
+
if (!Array.isArray(mounted) || mounted.some(name => typeof name !== 'string' || !name || name.includes('\0'))
|
|
201
|
+
|| new Set(mounted).size !== mounted.length)
|
|
202
|
+
fail('profile mounted bundles are invalid');
|
|
203
|
+
const internalMounted = mounted.filter((name) => name.includes(INTERNAL));
|
|
204
|
+
if (internalMounted.length !== roots.size || internalMounted.some((name) => !roots.has(name)))
|
|
205
|
+
fail('profile mounted internal bundle roots changed');
|
|
206
|
+
const profileDirectory = join(dirname(dirname(input.cohort.root)), 'profiles', '_profile_');
|
|
207
|
+
const seen = new Set();
|
|
208
|
+
for (const field of ['dependencies', 'devDependencies', 'optionalDependencies', 'peerDependencies']) {
|
|
209
|
+
const mapping = manifest[field];
|
|
210
|
+
if (mapping === undefined)
|
|
211
|
+
continue;
|
|
212
|
+
if (!object(mapping))
|
|
213
|
+
fail(`profile ${field} must be a mapping`);
|
|
214
|
+
for (const [name, value] of Object.entries(mapping)) {
|
|
215
|
+
if (!name.startsWith(INTERNAL))
|
|
216
|
+
continue;
|
|
217
|
+
if (field !== 'dependencies' || !roots.has(name) || typeof value !== 'string' || !value.startsWith('file:')
|
|
218
|
+
|| value.includes('\0') || resolve(profileDirectory, value.slice(5)) !== roots.get(name))
|
|
219
|
+
fail(`profile internal bundle root is missing or changed: ${name}`);
|
|
220
|
+
seen.add(name);
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
if (seen.size !== roots.size)
|
|
224
|
+
fail('profile selected bundle root is missing');
|
|
225
|
+
}
|
|
226
|
+
//# sourceMappingURL=rsi-local-profile-update.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rsi-local-profile-update.js","sourceRoot":"","sources":["../src/rsi-local-profile-update.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { type RsiBuildEnvironment } from './rsi-build.js';
|
|
2
|
+
import type { RsiReleaseBuildEnvironment } from './rsi-release-build.js';
|
|
3
|
+
import type { RsiLocalCohort } from './rsi-local-cohort.js';
|
|
4
|
+
declare const kinds: readonly ["rsi-local-cohorts", "rsi-builds", "rsi-release-builds"];
|
|
5
|
+
type Kind = typeof kinds[number];
|
|
6
|
+
export interface RsiLocalResourceProof {
|
|
7
|
+
schemaVersion: 1;
|
|
8
|
+
dshHome: string;
|
|
9
|
+
profile: string;
|
|
10
|
+
preparationDigest: string;
|
|
11
|
+
original: Record<Kind, string>;
|
|
12
|
+
candidate: Record<Kind, string>;
|
|
13
|
+
}
|
|
14
|
+
/** Caller owns the Home lifecycle lock and has stopped all Home writers. Only
|
|
15
|
+
* these three trees in the disposable stage are changed; source, profiles,
|
|
16
|
+
* owner authority and ledger still require the enclosing activation transaction.
|
|
17
|
+
* A crash requires discarding/recovering that stage, never reusing it as live. */
|
|
18
|
+
export declare function stageRsiLocalUpdateResources(input: {
|
|
19
|
+
logicalHome: string;
|
|
20
|
+
stagePhysicalHome: string;
|
|
21
|
+
profile: string;
|
|
22
|
+
preparationRoot: string;
|
|
23
|
+
signal?: AbortSignal;
|
|
24
|
+
}): Promise<{
|
|
25
|
+
cohort: RsiLocalCohort;
|
|
26
|
+
sourceBuild: RsiBuildEnvironment;
|
|
27
|
+
releaseBuild: RsiReleaseBuildEnvironment;
|
|
28
|
+
proof: RsiLocalResourceProof;
|
|
29
|
+
}>;
|
|
30
|
+
export declare function verifyRsiLocalUpdateResources(input: {
|
|
31
|
+
physicalHome: string;
|
|
32
|
+
proof: RsiLocalResourceProof;
|
|
33
|
+
original?: boolean;
|
|
34
|
+
signal?: AbortSignal;
|
|
35
|
+
}): Promise<void>;
|
|
36
|
+
export {};
|
|
37
|
+
//# sourceMappingURL=rsi-local-resources.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rsi-local-resources.d.ts","sourceRoot":"","sources":["../src/rsi-local-resources.ts"],"names":[],"mappings":"AAIA,OAAO,EAA2B,KAAK,mBAAmB,EAAE,MAAM,gBAAgB,CAAA;AAClF,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAA;AACxE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAG3D,QAAA,MAAM,KAAK,oEAAqE,CAAA;AAChF,KAAK,IAAI,GAAG,OAAO,KAAK,CAAC,MAAM,CAAC,CAAA;AAMhC,MAAM,WAAW,qBAAqB;IACpC,aAAa,EAAE,CAAC,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,iBAAiB,EAAE,MAAM,CAAA;IACzB,QAAQ,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;IAC9B,SAAS,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;CAChC;AAoCD;;;kFAGkF;AAClF,wBAAsB,4BAA4B,CAAC,KAAK,EAAE;IACxD,WAAW,EAAE,MAAM,CAAC;IAAC,iBAAiB,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,eAAe,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,WAAW,CAAA;CAC/G,GAAG,OAAO,CAAC;IAAE,MAAM,EAAE,cAAc,CAAC;IAAC,WAAW,EAAE,mBAAmB,CAAC;IACrE,YAAY,EAAE,0BAA0B,CAAC;IAAC,KAAK,EAAE,qBAAqB,CAAA;CAAE,CAAC,CAiG1E;AAED,wBAAsB,6BAA6B,CAAC,KAAK,EAAE;IACzD,YAAY,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,qBAAqB,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,WAAW,CAAA;CAC7F,GAAG,OAAO,CAAC,IAAI,CAAC,CAWhB"}
|