@dsh-enhanced/lark-channel 0.1.48 → 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.
Files changed (173) hide show
  1. package/README.md +19 -8
  2. package/docs/rsi-setup.md +123 -11
  3. package/docs/setup.md +27 -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/rsi-authority-config.d.ts +29 -0
  22. package/lib/rsi-authority-config.d.ts.map +1 -0
  23. package/lib/rsi-authority-config.js +233 -0
  24. package/lib/rsi-authority-config.js.map +1 -0
  25. package/lib/rsi-authority-resources.d.ts +36 -0
  26. package/lib/rsi-authority-resources.d.ts.map +1 -0
  27. package/lib/rsi-authority-resources.js +139 -0
  28. package/lib/rsi-authority-resources.js.map +1 -0
  29. package/lib/rsi-authority-runtime.d.ts +50 -0
  30. package/lib/rsi-authority-runtime.d.ts.map +1 -0
  31. package/lib/rsi-authority-runtime.js +393 -0
  32. package/lib/rsi-authority-runtime.js.map +1 -0
  33. package/lib/rsi-bootstrap-manifest.d.ts +39 -0
  34. package/lib/rsi-bootstrap-manifest.d.ts.map +1 -0
  35. package/lib/rsi-bootstrap-manifest.js +366 -0
  36. package/lib/rsi-bootstrap-manifest.js.map +1 -0
  37. package/lib/rsi-bootstrap.d.ts +30 -0
  38. package/lib/rsi-bootstrap.d.ts.map +1 -0
  39. package/lib/rsi-bootstrap.js +363 -0
  40. package/lib/rsi-bootstrap.js.map +1 -0
  41. package/lib/rsi-build.d.ts +45 -0
  42. package/lib/rsi-build.d.ts.map +1 -0
  43. package/lib/rsi-build.js +404 -0
  44. package/lib/rsi-build.js.map +1 -0
  45. package/lib/rsi-creation-build.d.ts +47 -0
  46. package/lib/rsi-creation-build.d.ts.map +1 -0
  47. package/lib/rsi-creation-build.js +333 -0
  48. package/lib/rsi-creation-build.js.map +1 -0
  49. package/lib/rsi-host-authorities.d.ts +18 -0
  50. package/lib/rsi-host-authorities.d.ts.map +1 -0
  51. package/lib/rsi-host-authorities.js +129 -0
  52. package/lib/rsi-host-authorities.js.map +1 -0
  53. package/lib/rsi-host-update.d.ts +113 -0
  54. package/lib/rsi-host-update.d.ts.map +1 -0
  55. package/lib/rsi-host-update.js +316 -0
  56. package/lib/rsi-host-update.js.map +1 -0
  57. package/lib/rsi-install-inputs.d.ts +43 -0
  58. package/lib/rsi-install-inputs.d.ts.map +1 -0
  59. package/lib/rsi-install-inputs.js +342 -0
  60. package/lib/rsi-install-inputs.js.map +1 -0
  61. package/lib/rsi-install.d.ts +54 -0
  62. package/lib/rsi-install.d.ts.map +1 -0
  63. package/lib/rsi-install.js +404 -0
  64. package/lib/rsi-install.js.map +1 -0
  65. package/lib/rsi-local-activation.d.ts +78 -0
  66. package/lib/rsi-local-activation.d.ts.map +1 -0
  67. package/lib/rsi-local-activation.js +485 -0
  68. package/lib/rsi-local-activation.js.map +1 -0
  69. package/lib/rsi-local-cohort.d.ts +70 -0
  70. package/lib/rsi-local-cohort.d.ts.map +1 -0
  71. package/lib/rsi-local-cohort.js +781 -0
  72. package/lib/rsi-local-cohort.js.map +1 -0
  73. package/lib/rsi-local-install.d.ts +40 -0
  74. package/lib/rsi-local-install.d.ts.map +1 -0
  75. package/lib/rsi-local-install.js +221 -0
  76. package/lib/rsi-local-install.js.map +1 -0
  77. package/lib/rsi-local-pair-install.d.ts +38 -0
  78. package/lib/rsi-local-pair-install.d.ts.map +1 -0
  79. package/lib/rsi-local-pair-install.js +200 -0
  80. package/lib/rsi-local-pair-install.js.map +1 -0
  81. package/lib/rsi-local-profile-update.d.ts +25 -0
  82. package/lib/rsi-local-profile-update.d.ts.map +1 -0
  83. package/lib/rsi-local-profile-update.js +226 -0
  84. package/lib/rsi-local-profile-update.js.map +1 -0
  85. package/lib/rsi-local-resources.d.ts +37 -0
  86. package/lib/rsi-local-resources.d.ts.map +1 -0
  87. package/lib/rsi-local-resources.js +184 -0
  88. package/lib/rsi-local-resources.js.map +1 -0
  89. package/lib/rsi-local-roots-extension.d.ts +11 -0
  90. package/lib/rsi-local-roots-extension.d.ts.map +1 -0
  91. package/lib/rsi-local-roots-extension.js +31 -0
  92. package/lib/rsi-local-roots-extension.js.map +1 -0
  93. package/lib/rsi-local-update-build.d.ts +18 -0
  94. package/lib/rsi-local-update-build.d.ts.map +1 -0
  95. package/lib/rsi-local-update-build.js +37 -0
  96. package/lib/rsi-local-update-build.js.map +1 -0
  97. package/lib/rsi-local-update.d.ts +39 -0
  98. package/lib/rsi-local-update.d.ts.map +1 -0
  99. package/lib/rsi-local-update.js +205 -0
  100. package/lib/rsi-local-update.js.map +1 -0
  101. package/lib/rsi-memory-learning.d.ts +22 -0
  102. package/lib/rsi-memory-learning.d.ts.map +1 -0
  103. package/lib/rsi-memory-learning.js +76 -0
  104. package/lib/rsi-memory-learning.js.map +1 -0
  105. package/lib/rsi-owner-profile.d.ts +37 -0
  106. package/lib/rsi-owner-profile.d.ts.map +1 -0
  107. package/lib/rsi-owner-profile.js +178 -0
  108. package/lib/rsi-owner-profile.js.map +1 -0
  109. package/lib/rsi-plugin-creation.d.ts +31 -0
  110. package/lib/rsi-plugin-creation.d.ts.map +1 -0
  111. package/lib/rsi-plugin-creation.js +179 -0
  112. package/lib/rsi-plugin-creation.js.map +1 -0
  113. package/lib/rsi-profile.d.ts +23 -0
  114. package/lib/rsi-profile.d.ts.map +1 -1
  115. package/lib/rsi-profile.js +154 -43
  116. package/lib/rsi-profile.js.map +1 -1
  117. package/lib/rsi-release-build.d.ts +41 -0
  118. package/lib/rsi-release-build.d.ts.map +1 -0
  119. package/lib/rsi-release-build.js +223 -0
  120. package/lib/rsi-release-build.js.map +1 -0
  121. package/lib/rsi-service-environment.d.ts +6 -0
  122. package/lib/rsi-service-environment.d.ts.map +1 -0
  123. package/lib/rsi-service-environment.js +113 -0
  124. package/lib/rsi-service-environment.js.map +1 -0
  125. package/lib/rsi-service-setup.d.ts +10 -0
  126. package/lib/rsi-service-setup.d.ts.map +1 -0
  127. package/lib/rsi-service-setup.js +34 -0
  128. package/lib/rsi-service-setup.js.map +1 -0
  129. package/lib/rsi-setup.d.ts +35 -2
  130. package/lib/rsi-setup.d.ts.map +1 -1
  131. package/lib/rsi-setup.js +459 -32
  132. package/lib/rsi-setup.js.map +1 -1
  133. package/lib/rsi-source-maintenance.d.ts +25 -0
  134. package/lib/rsi-source-maintenance.d.ts.map +1 -0
  135. package/lib/rsi-source-maintenance.js +348 -0
  136. package/lib/rsi-source-maintenance.js.map +1 -0
  137. package/lib/rsi-source-update.d.ts +26 -0
  138. package/lib/rsi-source-update.d.ts.map +1 -0
  139. package/lib/rsi-source-update.js +276 -0
  140. package/lib/rsi-source-update.js.map +1 -0
  141. package/lib/rsi-source.d.ts +34 -0
  142. package/lib/rsi-source.d.ts.map +1 -0
  143. package/lib/rsi-source.js +375 -0
  144. package/lib/rsi-source.js.map +1 -0
  145. package/lib/rsi-systemd-bootstrap.d.ts +46 -0
  146. package/lib/rsi-systemd-bootstrap.d.ts.map +1 -0
  147. package/lib/rsi-systemd-bootstrap.js +271 -0
  148. package/lib/rsi-systemd-bootstrap.js.map +1 -0
  149. package/lib/sdk.d.ts.map +1 -1
  150. package/lib/sdk.js +26 -1
  151. package/lib/sdk.js.map +1 -1
  152. package/lib/setup-business.d.ts +49 -0
  153. package/lib/setup-business.d.ts.map +1 -0
  154. package/lib/setup-business.js +335 -0
  155. package/lib/setup-business.js.map +1 -0
  156. package/lib/setup-profile.d.ts +1 -1
  157. package/lib/setup-profile.d.ts.map +1 -1
  158. package/lib/setup-profile.js +25 -2
  159. package/lib/setup-profile.js.map +1 -1
  160. package/lib/setup.d.ts +12 -1
  161. package/lib/setup.d.ts.map +1 -1
  162. package/lib/setup.js +138 -34
  163. package/lib/setup.js.map +1 -1
  164. package/lib/systemd.d.ts +10 -0
  165. package/lib/systemd.d.ts.map +1 -1
  166. package/lib/systemd.js +23 -6
  167. package/lib/systemd.js.map +1 -1
  168. package/lib/types.d.ts +7 -0
  169. package/lib/types.d.ts.map +1 -1
  170. package/lib/types.js.map +1 -1
  171. package/lib/version.d.ts +1 -1
  172. package/lib/version.js +1 -1
  173. package/package.json +32 -20
@@ -0,0 +1,404 @@
1
+ import { createHash } from 'node:crypto';
2
+ import { lstat, mkdir, readFile, realpath } from 'node:fs/promises';
3
+ import { join } from 'node:path';
4
+ import { setTimeout as delay } from 'node:timers/promises';
5
+ import { listActiveAutomationsLocally } from '@dsh-enhanced/assistant-automations';
6
+ import { growthObjectDigest } from '@dsh-enhanced/assistant-growth-contract';
7
+ import { isDeepStrictEqual } from 'node:util';
8
+ import { controlPlaneDigest, queryRuntimeObserver, runtimeConfigDigest } from '@dsh-enhanced/plugin-control-plane';
9
+ import { withDshHomeLifecycleLock } from './setup.js';
10
+ import { prepareRsiSourceWorkspace } from './rsi-source.js';
11
+ import { prepareRsiBuildEnvironment, RsiBuildUnavailableError, rsiBuildResources as io } from './rsi-build.js';
12
+ import { prepareRsiReleaseBuildEnvironment, RsiReleaseBuildUnavailableError } from './rsi-release-build.js';
13
+ import { prepareRsiAuthorityRuntime } from './rsi-authority-runtime.js';
14
+ import { prepareRsiAuthorityResources } from './rsi-authority-resources.js';
15
+ import { createRsiBootstrapManifest } from './rsi-bootstrap-manifest.js';
16
+ import { prepareRsiCreationBuildEnvironment } from './rsi-creation-build.js';
17
+ import { validateRsiPluginCreationSetup } from './rsi-plugin-creation.js';
18
+ import { inspectRsiOwnerConfiguration, prepareRsiOwnerConfiguration } from './rsi-bootstrap.js';
19
+ import { collectRsiInstalledInputs, RsiInstalledInputsUnavailableError } from './rsi-install-inputs.js';
20
+ import { captureRsiSystemdUnitProperties, readRsiSystemdUnitProperties } from './rsi-systemd-bootstrap.js';
21
+ import { configureRsiSetupLocked, rsiSetupPorts } from './rsi-setup.js';
22
+ import { systemdServicePaths } from './systemd.js';
23
+ import { readRsiServiceEnvironment } from './rsi-service-environment.js';
24
+ import { version } from './version.js';
25
+ import { readRsiLocalCohort, verifyRsiLocalInstalledPackages } from './rsi-local-cohort.js';
26
+ import { installRsiLocalProfile, isRsiLocalPackageRepairable } from './rsi-local-install.js';
27
+ import { assertRsiSchedulerActivation, captureRsiAutomationInventories, rsiDatabasePaths } from './rsi-owner-profile.js';
28
+ const profilePattern = /^[A-Za-z0-9][A-Za-z0-9._-]{0,63}$/u;
29
+ const coordinatorBundles = ['assistant-policy', 'assistant-automations', 'plugin-control-plane'];
30
+ const hash = (value) => createHash('sha256').update(value).digest('hex');
31
+ function fail(message) { throw new Error(`rsi install: ${message}`); }
32
+ async function exists(path) {
33
+ try {
34
+ await lstat(path);
35
+ return true;
36
+ }
37
+ catch (error) {
38
+ if (error.code !== 'ENOENT')
39
+ throw error;
40
+ return false;
41
+ }
42
+ }
43
+ /** Stable per-target name, including for a maximum-length target profile. */
44
+ export function rsiCoordinatorProfile(profile) {
45
+ if (!profilePattern.test(profile))
46
+ fail('invalid target profile');
47
+ return `rsi-${profile.slice(0, 43)}-${hash(profile).slice(0, 12)}`;
48
+ }
49
+ async function prepareResources(input, signal) {
50
+ const source = await prepareRsiSourceWorkspace({ ...input, version, signal });
51
+ const runtime = await prepareRsiAuthorityRuntime({ ...input, signal });
52
+ const resources = await prepareRsiAuthorityResources({ ...input, signal });
53
+ const build = await prepareRsiBuildEnvironment({ ...input, source, signal });
54
+ const release = await prepareRsiReleaseBuildEnvironment({ ...input, build, signal });
55
+ const storedManifest = join(resources.configRoot, 'manifest.json');
56
+ const previous = await exists(storedManifest)
57
+ ? JSON.parse((await io.readStable(storedManifest, 2_097_152, true)).toString('utf8'))
58
+ : undefined;
59
+ if (previous?.pluginCreation !== undefined)
60
+ validateRsiPluginCreationSetup(previous.pluginCreation, previous.sourceReviews.owner);
61
+ const creationBuild = previous && previous.pluginCreation === undefined
62
+ ? undefined : await prepareRsiCreationBuildEnvironment({ ...input, source, build, signal });
63
+ if (creationBuild) {
64
+ for (const name of ['creation-review-runner', 'creation-adoption-runner']) {
65
+ const path = join(resources.stateRoot, name);
66
+ if (!await exists(path))
67
+ await mkdir(path, { mode: 0o700 });
68
+ await io.directory(path);
69
+ }
70
+ }
71
+ return { source, runtime, resources, build, release, ...(creationBuild ? { creationBuild } : {}) };
72
+ }
73
+ async function ensureCoordinator(input, coordinator, executor, signal, systemctlPin) {
74
+ const root = join(input.dshHome, 'profiles', coordinator);
75
+ const receiptPath = join(input.dshHome, `.rsi-coordinator-${hash(input.profile).slice(0, 16)}.json`);
76
+ const receipt = JSON.stringify({ schemaVersion: 1, targetProfile: input.profile, coordinatorProfile: coordinator,
77
+ version, sourceRepository: input.sourceRepository ?? null });
78
+ let owned = await exists(receiptPath);
79
+ if (owned && (await io.readStable(receiptPath, 65_536, true)).toString('utf8') !== receipt)
80
+ fail('coordinator preparation belongs to another installation');
81
+ if (await exists(root) && !owned)
82
+ fail('unregistered coordinator profile cannot be overwritten');
83
+ if (!await exists(root) && !owned) {
84
+ await io.writeExclusive(receiptPath, receipt);
85
+ await io.syncDirectory(input.dshHome);
86
+ owned = true;
87
+ }
88
+ const matches = async (name) => {
89
+ const path = join(root, 'node_modules', '@dsh-enhanced', name, 'package.json');
90
+ if (!await exists(path))
91
+ return false;
92
+ const manifest = JSON.parse((await io.readStable(await realpath(path), 65_536)).toString('utf8'));
93
+ if (manifest.name !== `@dsh-enhanced/${name}` || manifest.version !== version)
94
+ fail('coordinator must use the same installed plugin release');
95
+ return true;
96
+ };
97
+ let complete = (await Promise.all(coordinatorBundles.map(matches))).every(Boolean);
98
+ const local = input.sourceRepository ? await readRsiLocalCohort({ dshHome: input.dshHome, profile: input.profile }) : undefined;
99
+ if (local && (local.sourceRepository !== input.sourceRepository || local.version !== version))
100
+ fail('local coordinator cohort differs from the source installation');
101
+ if (local && complete) {
102
+ try {
103
+ await verifyRsiLocalInstalledPackages({ cohort: local, profilePath: root, bundles: [...coordinatorBundles] });
104
+ }
105
+ catch (error) {
106
+ if (!isRsiLocalPackageRepairable(error))
107
+ throw error;
108
+ complete = false;
109
+ }
110
+ }
111
+ if (!complete) {
112
+ if (!owned)
113
+ fail('unregistered coordinator profile cannot be overwritten');
114
+ const state = await status(systemctlPin, coordinator, signal);
115
+ if (!['inactive', 'failed'].includes(state.ActiveState) || state.MainPID !== '0')
116
+ fail('partial coordinator must be stopped before package repair');
117
+ if (local)
118
+ await installRsiLocalProfile({ dshHome: input.dshHome, profile: coordinator, cohort: local,
119
+ bundles: coordinatorBundles, dsh: { path: executor.path, pin: { path: executor.path, sha256: executor.sha256 } }, signal });
120
+ else
121
+ await io.command(executor.path, ['plugin', '--profile', coordinator, 'add', ...coordinatorBundles.map(name => `@dsh-enhanced/${name}@${version}`)], { ...process.env, DSH_HOME: input.dshHome, npm_config_loglevel: 'error' }, signal, 300_000, 2_097_152);
122
+ if (!(await Promise.all(coordinatorBundles.map(matches))).every(Boolean))
123
+ fail('coordinator package installation is incomplete');
124
+ }
125
+ if (local)
126
+ await verifyRsiLocalInstalledPackages({ cohort: local, profilePath: root, bundles: [...coordinatorBundles] });
127
+ await io.directory(root, false);
128
+ }
129
+ async function systemctl(pin, args, signal) {
130
+ if (pin.interpreter !== null)
131
+ fail('automatic installation requires native systemctl');
132
+ if (createHash('sha256').update(await io.readStable(pin.path, 268_435_456, false, true)).digest('hex') !== pin.sha256)
133
+ fail('systemctl changed');
134
+ return io.command(pin.path, ['--user', ...args], process.env, signal, 40_000, 262_144);
135
+ }
136
+ async function status(pin, profile, signal) {
137
+ const text = await systemctl(pin, ['show', `dsh-profile-${profile}.service`,
138
+ '--property=LoadState,ActiveState,MainPID,InvocationID,NRestarts,FragmentPath,DropInPaths,WorkingDirectory'], signal);
139
+ return Object.fromEntries(text.split('\n').filter(Boolean).map(line => {
140
+ const index = line.indexOf('=');
141
+ if (index < 1)
142
+ fail('invalid systemctl status');
143
+ return [line.slice(0, index), line.slice(index + 1)];
144
+ }));
145
+ }
146
+ async function stopManaged(input, profile, pin, signal) {
147
+ const state = await status(pin, profile, signal);
148
+ if (state.LoadState === 'not-found' && state.MainPID === '0' && state.ActiveState === 'inactive')
149
+ return false;
150
+ const paths = systemdServicePaths({ dshHome: input.dshHome, profile });
151
+ if (state.LoadState !== 'loaded' || state.FragmentPath !== paths.unitPath || state.DropInPaths !== ''
152
+ || state.WorkingDirectory !== join(input.dshHome, 'profiles', profile))
153
+ fail(`service ${profile} is not the target installation's managed unit`);
154
+ const active = state.ActiveState === 'active';
155
+ await systemctl(pin, ['stop', paths.unitName], signal);
156
+ const stopped = await status(pin, profile, signal);
157
+ if (!['inactive', 'failed'].includes(stopped.ActiveState) || stopped.MainPID !== '0')
158
+ fail(`service ${profile} did not stop`);
159
+ if (stopped.ActiveState === 'failed')
160
+ await systemctl(pin, ['reset-failed', paths.unitName], signal);
161
+ return active;
162
+ }
163
+ async function observerReady(observer, state, signal) {
164
+ const value = await queryRuntimeObserver({ ...observer, signal });
165
+ if (value.processId !== Number(state.MainPID) || value.invocationId !== state.InvocationID
166
+ || value.profilePath !== observer.profilePath || value.observerConfigDigest !== runtimeConfigDigest(observer)
167
+ || Math.abs(Date.now() - value.observedAt) > 5_000 || value.entries.length !== observer.targets.length)
168
+ fail('runtime observation differs from installed Host');
169
+ for (const target of observer.targets) {
170
+ const entry = value.entries.find(item => item.entryId === target.entryId);
171
+ if (!entry?.active || entry.module !== target.module || entry.configDigest !== target.configDigest
172
+ || target.services.some(name => !entry.services.some(service => service.name === name && service.instance !== null)))
173
+ fail('installed Loader entries are not ready');
174
+ }
175
+ }
176
+ export function assertRsiMemoryScanActivation(manifest, records) {
177
+ const learning = manifest.memoryLearning?.learning;
178
+ if (!learning)
179
+ return;
180
+ const owner = learning.owner, digest = growthObjectDigest(learning);
181
+ const id = `memory-scan-${growthObjectDigest([learning.authorityId, owner])}`;
182
+ const registration = records.find(item => item.id === id);
183
+ const definition = registration?.definition, execution = definition?.execution;
184
+ if (!registration || registration.owner !== 'assistant-memory-learning'
185
+ || definition?.principal !== owner.principalId || definition.workspace !== owner.workspace
186
+ || definition.agentPreset !== owner.agentPreset || definition.budgetId !== learning.scanBudgetId
187
+ || definition.budgetAmount !== learning.scanBudgetAmount || definition.retrySafety !== 'never'
188
+ || definition.maxRetries !== 0 || execution?.kind !== 'host'
189
+ || execution.executorId !== 'assistant-memory-learning-v1' || execution.executorContractVersion !== 1
190
+ || execution.runbookId !== 'scan' || execution.runbookVersion !== 1
191
+ || execution.catalogDigest !== growthObjectDigest({ executor: 'assistant-memory-learning-v1', contract: 1 })
192
+ || execution.ownerRouteId !== owner.authorityId || execution.activationNonce !== digest
193
+ || !isDeepStrictEqual(execution.targetScope, { workspace: owner.workspace, preset: owner.agentPreset })
194
+ || execution.scopeDigest !== growthObjectDigest([owner.workspace, owner.agentPreset])) {
195
+ fail('target has no matching owner-bound native memory scan activation');
196
+ }
197
+ }
198
+ async function ready(manifest, pin, signal, startedAt) {
199
+ const home = manifest.controlPlane.runtimeObserver.profilePath.split('/profiles/').slice(0, -1).join('/profiles/');
200
+ const memoryDatabasePath = manifest.memoryLearning === undefined ? undefined
201
+ : rsiDatabasePaths(rsiSetupPorts.dump(manifest.targetProfile, home), home).automationsDatabasePath;
202
+ if (manifest.memoryLearning) {
203
+ for (const [id, service] of [['dsh-enhanced-personal-assistant', 'personalMemory'],
204
+ ['dsh-enhanced-assistant-verifier', 'assistantVerifier'],
205
+ ['dsh-enhanced-assistant-memory-learning', 'assistantMemoryLearning']]) {
206
+ if (!manifest.controlPlane.runtimeObserver?.targets.some(target => target.entryId === id
207
+ && target.services.includes(service)))
208
+ fail(`target memory observer is missing ${id}`);
209
+ }
210
+ }
211
+ const deadline = Date.now() + 60_000;
212
+ let stableSince = 0, last = '', failure;
213
+ while (Date.now() < deadline) {
214
+ signal.throwIfAborted();
215
+ try {
216
+ const states = await Promise.all([manifest.targetProfile, manifest.coordinatorProfile].map(profile => status(pin, profile, signal)));
217
+ if (states.some(state => state.ActiveState !== 'active' || !/^\d+$/u.test(state.MainPID ?? '') || Number(state.MainPID) < 1
218
+ || !/^[a-f0-9]{32}$/u.test(state.InvocationID ?? '')))
219
+ fail('Host services are not running');
220
+ await observerReady(manifest.controlPlane.runtimeObserver, states[0], signal);
221
+ if (memoryDatabasePath)
222
+ assertRsiMemoryScanActivation(manifest, listActiveAutomationsLocally(memoryDatabasePath));
223
+ const scope = manifest.controlPlane.taskObservations.scope;
224
+ const coordinatorId = manifest.controlPlane.sourceAdoptions.handoff.coordinatorId;
225
+ const id = `adoption-coordinator-${controlPlaneDigest({ coordinatorId, scope }).slice(0, 40)}`;
226
+ const registration = listActiveAutomationsLocally(join(home, 'rsi-coordinators', manifest.coordinatorProfile, 'automations.sqlite')).find(item => item.id === id);
227
+ if (!registration || registration.owner !== 'plugin-control-plane-adoption-coordinator'
228
+ || registration.updatedAt < startedAt || registration.definition.execution?.kind !== 'host'
229
+ || registration.definition.execution.executorId !== 'plugin-control-plane-adoption-coordinator-v1'
230
+ || registration.definition.execution.ownerRouteId !== scope.ownerRouteId
231
+ || registration.definition.principal !== scope.principalId || registration.definition.workspace !== scope.workspace
232
+ || registration.definition.agentPreset !== scope.preset)
233
+ fail('coordinator has no fresh owner-bound native activation');
234
+ const current = JSON.stringify(states.map(state => [state.MainPID, state.InvocationID, state.NRestarts]));
235
+ if (last !== current) {
236
+ stableSince = Date.now();
237
+ last = current;
238
+ }
239
+ if (Date.now() - stableSince >= 12_000)
240
+ return;
241
+ }
242
+ catch (error) {
243
+ failure = error;
244
+ stableSince = 0;
245
+ last = '';
246
+ }
247
+ await delay(250, undefined, { signal });
248
+ }
249
+ throw new Error('rsi install: dual Host readiness failed; applied configuration retained for retry', { cause: failure });
250
+ }
251
+ export const rsiInstallPorts = {
252
+ prepare: prepareResources, collect: collectRsiInstalledInputs, coordinator: ensureCoordinator, setup: rsiSetupPorts,
253
+ capture: captureRsiSystemdUnitProperties, readUnit: readRsiSystemdUnitProperties, stop: stopManaged, ready, configure: configureRsiSetupLocked, prepareOwner: prepareRsiOwnerConfiguration,
254
+ };
255
+ /** Installer-owned process, never invoked from the Host being restarted. */
256
+ export async function installRsiOwnerDeployment(input, ports = rsiInstallPorts) {
257
+ if (!profilePattern.test(input.profile) || await realpath(input.dshHome) !== input.dshHome)
258
+ fail('invalid installation identity');
259
+ const signal = AbortSignal.any([input.signal ?? new AbortController().signal, AbortSignal.timeout(2_400_000)]);
260
+ signal.throwIfAborted();
261
+ return withDshHomeLifecycleLock(input.dshHome, async () => {
262
+ let prepared;
263
+ try {
264
+ prepared = await ports.prepare(input, signal);
265
+ }
266
+ catch (error) {
267
+ signal.throwIfAborted();
268
+ if (error instanceof RsiBuildUnavailableError || error instanceof RsiReleaseBuildUnavailableError)
269
+ return { mode: 'not-ready', reason: error.message };
270
+ throw error;
271
+ }
272
+ const { resources, runtime, source, build, release } = prepared;
273
+ let targetEffective = ports.setup.dump(input.profile, input.dshHome);
274
+ let installed;
275
+ try {
276
+ installed = await ports.collect({ dshHome: input.dshHome, targetProfile: input.profile, targetEffective, resources, source });
277
+ }
278
+ catch (error) {
279
+ signal.throwIfAborted();
280
+ if (error instanceof RsiInstalledInputsUnavailableError)
281
+ return { mode: 'not-ready', reason: error.message };
282
+ throw error;
283
+ }
284
+ const coordinatorProfile = rsiCoordinatorProfile(input.profile);
285
+ await ports.coordinator(input, coordinatorProfile, installed.executor, signal, installed.systemctl);
286
+ const pair = [input.profile, coordinatorProfile];
287
+ const setupJournal = join(input.dshHome, '.rsi-setup-journal.json');
288
+ if (await exists(setupJournal)) {
289
+ const interrupted = JSON.parse((await io.readStable(setupJournal, 2_097_152, true)).toString('utf8'));
290
+ if (interrupted.stage === 'prepared') {
291
+ if (!Array.isArray(interrupted.entries) || interrupted.entries.length !== 2
292
+ || interrupted.entries.some((entry, index) => entry.profile !== pair[index]))
293
+ fail('interrupted setup belongs to another profile pair');
294
+ const recoveryRunning = [];
295
+ for (const profile of [...pair].reverse())
296
+ if (await ports.stop(input, profile, installed.systemctl, signal))
297
+ recoveryRunning.push(profile);
298
+ await ports.configure({ dshHome: input.dshHome, manifestPath: join(resources.configRoot, 'manifest.json'),
299
+ apply: false, rollback: true, start: false, confirmStopped: true, help: false }, ports.setup);
300
+ // A successful rollback restores a known deployment. Restore prior
301
+ // availability before any new owner or source preflight can fail.
302
+ for (const profile of recoveryRunning)
303
+ await ports.setup.start(profile, input.dshHome);
304
+ targetEffective = ports.setup.dump(input.profile, input.dshHome);
305
+ installed = await ports.collect({ dshHome: input.dshHome, targetProfile: input.profile, targetEffective, resources, source });
306
+ }
307
+ }
308
+ const profiles = { targetPatch: (await io.readStable(join(input.dshHome, 'profiles', pair[0], 'cordis.patch.yml'), 2_097_152)).toString('utf8'),
309
+ targetEffective, coordinatorPatch: (await io.readStable(join(input.dshHome, 'profiles', pair[1], 'cordis.patch.yml'), 2_097_152)).toString('utf8'),
310
+ coordinatorEffective: ports.setup.dump(pair[1], input.dshHome), coordinatorBase: await ports.setup.base(pair[1], input.dshHome) };
311
+ const snapshot = await ports.setup.snapshot(targetEffective, input.dshHome);
312
+ if (snapshot.bindings.length !== 1)
313
+ fail('exactly one active owner DM is required');
314
+ const binding = snapshot.bindings[0];
315
+ const storedManifest = join(resources.configRoot, 'manifest.json');
316
+ let now = Date.now(), expiresAt = now + 365 * 86_400_000;
317
+ let enableCreation = true;
318
+ let previousManifest;
319
+ if (await exists(storedManifest)) {
320
+ // A retry reuses the original installation's finite terms, never renews them.
321
+ const previous = JSON.parse((await io.readStable(storedManifest, 2_097_152, true)).toString('utf8'));
322
+ previousManifest = previous;
323
+ const host = JSON.parse((await io.readStable(join(resources.configRoot, 'host-authority.json'), 2_097_152, true)).toString('utf8'));
324
+ now = host.grant.notBefore;
325
+ expiresAt = previous.sourceReviews.expiresAt;
326
+ // Replaying a legacy installation must not silently add a new authority.
327
+ enableCreation = previous.pluginCreation !== undefined;
328
+ }
329
+ const manifest = createRsiBootstrapManifest({ dshHome: input.dshHome, targetProfile: pair[0], coordinatorProfile: pair[1],
330
+ targetEffective, owner: binding, resources, runtime, source, sourceBuild: build.sourceBuild,
331
+ ...(enableCreation && prepared.creationBuild ? { creationBuild: prepared.creationBuild } : {}),
332
+ git: installed.git, now, expiresAt, plugins: installed.plugins,
333
+ observerTargets: installed.observerTargets, hostDeploymentInputs: installed.hostDeploymentInputs });
334
+ if (previousManifest && !isDeepStrictEqual(previousManifest, manifest))
335
+ fail('existing manifest differs before stopping Hosts');
336
+ if (previousManifest) {
337
+ const compiledPatches = await ports.setup.compile({ manifest, dshHome: input.dshHome,
338
+ ...profiles, owner: binding });
339
+ await inspectRsiOwnerConfiguration({ manifest, resources, patches: compiledPatches, signal });
340
+ }
341
+ const inventories = await captureRsiAutomationInventories(ports.setup.automationInventory, targetEffective, profiles.coordinatorEffective, input.dshHome, coordinatorProfile);
342
+ assertRsiSchedulerActivation(inventories, input.ackExistingAutomations === true);
343
+ const previousJournal = await exists(setupJournal) ? (await io.readStable(setupJournal, 2_097_152, true)).toString('utf8') : null;
344
+ const running = new Set();
345
+ let applied = false;
346
+ try {
347
+ for (const profile of [...pair].reverse())
348
+ if (await ports.stop(input, profile, installed.systemctl, signal))
349
+ running.add(profile);
350
+ signal.throwIfAborted();
351
+ if (!isDeepStrictEqual(snapshot.bindings, (await ports.setup.snapshot(targetEffective, input.dshHome)).bindings)
352
+ || ports.setup.dump(pair[0], input.dshHome) !== targetEffective
353
+ || ports.setup.dump(pair[1], input.dshHome) !== profiles.coordinatorEffective)
354
+ fail('owner or profile changed while stopping Hosts');
355
+ if (!isDeepStrictEqual(inventories, await captureRsiAutomationInventories(ports.setup.automationInventory, targetEffective, profiles.coordinatorEffective, input.dshHome, coordinatorProfile)))
356
+ fail('Automation inventory changed while stopping Hosts');
357
+ const unitProperties = await ports.capture({ dshHome: input.dshHome, profile: pair[0] }, { systemctl: { ...installed.systemctl, interpreter: null }, environment: manifest.serviceEnvironment.target, signal });
358
+ const configuration = await ports.prepareOwner({ manifest, resources, runtime, source, releaseBuild: release.releaseBuild,
359
+ executor: installed.executor, systemctl: installed.systemctl, unitProperties, policies: installed.policies, now }, { binding, profiles, signal });
360
+ const args = { dshHome: input.dshHome, manifestPath: configuration.manifestPath, apply: true, rollback: false,
361
+ start: false, confirmStopped: true, help: false, ackExistingAutomations: input.ackExistingAutomations === true,
362
+ expectedAutomationInventories: inventories };
363
+ const deploymentPorts = { ...ports.setup, async validateServiceUnits(value, environment) {
364
+ await ports.setup.validateServiceUnits(value, environment);
365
+ const current = await ports.readUnit({ dshHome: input.dshHome, profile: pair[0] }, { systemctl: { ...installed.systemctl, interpreter: null }, signal });
366
+ if (!isDeepStrictEqual(current, unitProperties))
367
+ fail('final loaded systemd unit differs from the installation grant');
368
+ } };
369
+ await ports.configure(args, deploymentPorts);
370
+ applied = true;
371
+ signal.throwIfAborted();
372
+ // The setup journal remains the source of recovery truth after application.
373
+ const startedAt = Date.now();
374
+ await ports.setup.start(pair[1], input.dshHome);
375
+ await ports.setup.start(pair[0], input.dshHome);
376
+ await ports.ready(manifest, installed.systemctl, signal, startedAt);
377
+ await deploymentPorts.validateServiceUnits(manifest, manifest.serviceEnvironment.target);
378
+ return { mode: 'ready', profiles: pair, manifestPath: configuration.manifestPath };
379
+ }
380
+ catch (error) {
381
+ if (!applied) {
382
+ // Restore availability only when all profile bytes and the unit are still
383
+ // the original deployment. Unknown outcomes retain stopped services.
384
+ const unchanged = await Promise.all(pair.map(async (profile, index) => {
385
+ const bytes = (await io.readStable(join(input.dshHome, 'profiles', profile, 'cordis.patch.yml'), 2_097_152)).toString('utf8');
386
+ return bytes === (index === 0 ? profiles.targetPatch : profiles.coordinatorPatch);
387
+ })).catch(() => [false]);
388
+ const recoveredJournal = await exists(setupJournal) ? (await io.readStable(setupJournal, 2_097_152, true)).toString('utf8') : null;
389
+ if (unchanged.every(Boolean) && recoveredJournal === previousJournal) {
390
+ for (const profile of [...pair].reverse())
391
+ if (running.has(profile)) {
392
+ const environment = await readRsiServiceEnvironment(input.dshHome, profile);
393
+ const rendered = await ports.setup.renderServiceUnit(profile, input.dshHome, environment ?? {});
394
+ const actual = await readFile(ports.setup.serviceUnitPath(profile, input.dshHome), 'utf8').catch(() => '');
395
+ if (actual === rendered)
396
+ await ports.setup.start(profile, input.dshHome);
397
+ }
398
+ }
399
+ }
400
+ throw error;
401
+ }
402
+ });
403
+ }
404
+ //# sourceMappingURL=rsi-install.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rsi-install.js","sourceRoot":"","sources":["../src/rsi-install.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,78 @@
1
+ import { type SourceMaintenanceAnchor, type SourceMaintenanceRecord } from '@dsh-enhanced/plugin-control-plane';
2
+ import type { RsiLocalCohort } from './rsi-local-cohort.js';
3
+ import type { RsiLocalUpdatePreparation } from './rsi-local-update.js';
4
+ import { readRsiSourceMaintenance } from './rsi-source-maintenance.js';
5
+ export type LiveRsiSourceMaintenance = Awaited<ReturnType<typeof readRsiSourceMaintenance>>;
6
+ export interface ProduceRsiLocalMaintenanceInput {
7
+ /** Logical Home path; every receipt and ledger field retains this path. */
8
+ logicalHome: string;
9
+ profile: string;
10
+ /** Locked, TOCTOU-verified preparation produced outside the Home tree. */
11
+ preparation: RsiLocalUpdatePreparation;
12
+ /** Physical path of the copied, already stopped Home stage with the next cohort materialized. */
13
+ stagePhysicalHome: string;
14
+ /** Signed maintenance state read from the live Home before the stage was copied. */
15
+ live: LiveRsiSourceMaintenance;
16
+ /** The next cohort receipt after its paths were rewritten to the logical Home. */
17
+ nextCohort: Pick<RsiLocalCohort, 'sourceCommit' | 'version' | 'receiptDigest'>;
18
+ /** An absent ledger never selects pre-owner implicitly. */
19
+ maintenanceMode?: 'owner-ledger' | 'pre-owner';
20
+ preparedCoordinator?: true;
21
+ now?: () => number;
22
+ signal?: AbortSignal;
23
+ }
24
+ export interface AssertRsiPreOwnerInstallationInput {
25
+ logicalHome: string;
26
+ physicalHome: string;
27
+ profile: string;
28
+ /** Optional frozen expectations. Both are revalidated against real files. */
29
+ anchor?: SourceMaintenanceAnchor;
30
+ /** Expected sidecar in physicalHome; defaults to the current live sidecar.
31
+ * A caller checking a newly maintained stage supplies its full next chain. */
32
+ records?: readonly SourceMaintenanceRecord[];
33
+ /** CLI --patch overlays are outside this copied Home proof and unsupported. */
34
+ extraPatchFiles?: readonly string[];
35
+ preparedCoordinator?: true;
36
+ signal?: AbortSignal;
37
+ }
38
+ export interface RsiPreOwnerInstallationProof {
39
+ mode: 'pre-owner';
40
+ anchor: SourceMaintenanceAnchor;
41
+ records: readonly SourceMaintenanceRecord[];
42
+ workspace: LiveRsiSourceMaintenance['workspace'];
43
+ sourceChainTip: string;
44
+ originalBootstrapDigest: string;
45
+ authorityBootstrapDigest: string;
46
+ preparedCoordinator?: {
47
+ profile: string;
48
+ receiptDigest: string;
49
+ cohortDigest: string;
50
+ };
51
+ }
52
+ /** Read-only absence proof for an installation whose authority bootstrap exists
53
+ * but owner grants and control ledger have never been installed. The explicit
54
+ * preparedCoordinator path accepts only the inert, receipt-bound original pair.
55
+ * It neither creates a ledger nor interprets arbitrary partial setup as fresh.
56
+ * Only Home/profile cordis.yml and cordis.patch.yml layers are supported.
57
+ * Alternate formats, dynamic owner rows/config, includes and explicit CLI
58
+ * overlays are rejected. The outer transaction must verify the effective
59
+ * graph and launch arguments, and owns package/Git materialization checks. */
60
+ export declare function assertRsiPreOwnerInstallation(input: AssertRsiPreOwnerInstallationInput): Promise<RsiPreOwnerInstallationProof>;
61
+ /**
62
+ * Derive the next Host-signed source maintenance record for a frozen local
63
+ * update, without mutating anything. The caller applies it to the stopped stage
64
+ * and appends it to the staged ledger as one owned transaction.
65
+ *
66
+ * Explicit pre-owner mode uses a read-only absence proof and an empty release
67
+ * history; it signs host:null without creating either ledger. In owner mode,
68
+ * both the live ledger and the copied stage ledger are opened strictly
69
+ * read-only and must already exist at the current schema. Their release history,
70
+ * maintenance rows, and activation classification must agree byte-for-byte.
71
+ * When the stage anchors a watched runtime epoch, the record binds that plan and
72
+ * its original applied readiness receipt; with no watch the record carries
73
+ * `host: null`. Any other activation state, or any failure to read a watched
74
+ * deployment, aborts production — it is never silently downgraded, because the
75
+ * ledger append rejects a mismatched anchor anyway.
76
+ */
77
+ export declare function produceRsiLocalSourceMaintenance(input: ProduceRsiLocalMaintenanceInput): Promise<SourceMaintenanceRecord>;
78
+ //# sourceMappingURL=rsi-local-activation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rsi-local-activation.d.ts","sourceRoot":"","sources":["../src/rsi-local-activation.ts"],"names":[],"mappings":"AAIA,OAAO,EAEL,KAAK,uBAAuB,EAAE,KAAK,uBAAuB,EAAE,MAAM,oCAAoC,CAAA;AAMxG,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAC3D,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAA;AACtE,OAAO,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAA;AActE,MAAM,MAAM,wBAAwB,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,wBAAwB,CAAC,CAAC,CAAA;AAE3F,MAAM,WAAW,+BAA+B;IAC9C,2EAA2E;IAC3E,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,MAAM,CAAA;IACf,0EAA0E;IAC1E,WAAW,EAAE,yBAAyB,CAAA;IACtC,iGAAiG;IACjG,iBAAiB,EAAE,MAAM,CAAA;IACzB,oFAAoF;IACpF,IAAI,EAAE,wBAAwB,CAAA;IAC9B,kFAAkF;IAClF,UAAU,EAAE,IAAI,CAAC,cAAc,EAAE,cAAc,GAAG,SAAS,GAAG,eAAe,CAAC,CAAA;IAC9E,2DAA2D;IAC3D,eAAe,CAAC,EAAE,cAAc,GAAG,WAAW,CAAA;IAC9C,mBAAmB,CAAC,EAAE,IAAI,CAAA;IAC1B,GAAG,CAAC,EAAE,MAAM,MAAM,CAAA;IAClB,MAAM,CAAC,EAAE,WAAW,CAAA;CACrB;AAED,MAAM,WAAW,kCAAkC;IACjD,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,MAAM,CAAA;IACpB,OAAO,EAAE,MAAM,CAAA;IACf,6EAA6E;IAC7E,MAAM,CAAC,EAAE,uBAAuB,CAAA;IAChC;kFAC8E;IAC9E,OAAO,CAAC,EAAE,SAAS,uBAAuB,EAAE,CAAA;IAC5C,+EAA+E;IAC/E,eAAe,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACnC,mBAAmB,CAAC,EAAE,IAAI,CAAA;IAC1B,MAAM,CAAC,EAAE,WAAW,CAAA;CACrB;AACD,MAAM,WAAW,4BAA4B;IAC3C,IAAI,EAAE,WAAW,CAAA;IACjB,MAAM,EAAE,uBAAuB,CAAA;IAC/B,OAAO,EAAE,SAAS,uBAAuB,EAAE,CAAA;IAC3C,SAAS,EAAE,wBAAwB,CAAC,WAAW,CAAC,CAAA;IAChD,cAAc,EAAE,MAAM,CAAA;IACtB,uBAAuB,EAAE,MAAM,CAAA;IAC/B,wBAAwB,EAAE,MAAM,CAAA;IAChC,mBAAmB,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,CAAA;CACvF;AAsFD;;;;;;;8EAO8E;AAC9E,wBAAsB,6BAA6B,CAAC,KAAK,EAAE,kCAAkC,GAAG,OAAO,CAAC,4BAA4B,CAAC,CAmHpI;AAkCD;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,gCAAgC,CAAC,KAAK,EAAE,+BAA+B,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAkI/H"}