@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,345 @@
1
+ import { isAbsolute, join, resolve } from 'node:path';
2
+ import { isDeepStrictEqual } from 'node:util';
3
+ import {} from '@dsh-enhanced/assistant-delivery';
4
+ import { PROTECTED_PLUGIN_DENYLIST, runtimeConfigDigest, validateHostDeploymentInputs } from '@dsh-enhanced/plugin-control-plane';
5
+ import { isAlias, isMap, isScalar, isSeq, parseDocument } from 'yaml';
6
+ import { resolveRsiOwnerRoute } from './rsi-owner-profile.js';
7
+ import { createRsiMemoryLearningSetup } from './rsi-memory-learning.js';
8
+ import { compileRsiPersonalAssistantOptions } from './rsi-profile.js';
9
+ import { createRsiPluginCreationSetup } from './rsi-plugin-creation.js';
10
+ const profilePattern = /^[A-Za-z0-9][A-Za-z0-9._-]{0,63}$/u;
11
+ const pluginPattern = /^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/u;
12
+ const digestPattern = /^[a-f0-9]{64}$/u;
13
+ const phases = ['pr', 'review', 'merge', 'build', 'sign', 'publish', 'registry-verify', 'catalog-admission'];
14
+ const mutableRows = new Set(['dsh-enhanced-personal-assistant', 'dsh-enhanced-assistant-verifier',
15
+ 'dsh-enhanced-assistant-growth-driver', 'dsh-enhanced-assistant-memory-learning', 'dsh-enhanced-plugin-control-plane']);
16
+ const day = 86_400_000;
17
+ function fail(message) { throw new Error(`rsi bootstrap manifest: ${message}`); }
18
+ function canonical(path, label) {
19
+ if (typeof path !== 'string' || !isAbsolute(path) || resolve(path) !== path || path.includes('\0') || /[\r\n]/u.test(path))
20
+ fail(`${label} must be canonical absolute`);
21
+ }
22
+ function positive(value, label) {
23
+ if (!Number.isSafeInteger(value) || value < 1)
24
+ fail(`${label} must be a positive safe integer`);
25
+ return value;
26
+ }
27
+ function mapping(value, label) {
28
+ if (!isMap(value))
29
+ fail(`${label} must be a YAML mapping`);
30
+ return value;
31
+ }
32
+ function rowConfig(row, label) {
33
+ return mapping(row.get('config', true), `${label} config`);
34
+ }
35
+ function plain(value, label) {
36
+ const result = value.toJSON();
37
+ if (!result || typeof result !== 'object' || Array.isArray(result))
38
+ fail(`${label} must be an object`);
39
+ return result;
40
+ }
41
+ /** Include's entryListSchema keeps !!js as an inert raw `{__jsExpr}` value in
42
+ * Loader Entry.options. Runtime observation hashes that raw value before the
43
+ * Fiber interpolates it. Never evaluate the expression while preparing setup. */
44
+ export function rawLoaderConfig(node, label) {
45
+ if (node === undefined || node === null)
46
+ return null;
47
+ if (typeof node === 'string' || typeof node === 'number' || typeof node === 'boolean')
48
+ return node;
49
+ if (isAlias(node))
50
+ fail(`${label} contains a YAML alias`);
51
+ if (isScalar(node)) {
52
+ if (node.tag === 'tag:yaml.org,2002:js') {
53
+ if (typeof node.value !== 'string')
54
+ fail(`${label} has an invalid !!js scalar`);
55
+ return { __jsExpr: node.value };
56
+ }
57
+ if (node.tag)
58
+ fail(`${label} has an unsupported YAML tag`);
59
+ return node.value;
60
+ }
61
+ if (isSeq(node)) {
62
+ if (node.tag)
63
+ fail(`${label} has an unsupported YAML tag`);
64
+ return node.items.map(item => rawLoaderConfig(item, label));
65
+ }
66
+ if (isMap(node)) {
67
+ if (node.tag)
68
+ fail(`${label} has an unsupported YAML tag`);
69
+ const result = Object.create(null);
70
+ for (const pair of node.items) {
71
+ const key = typeof pair.key === 'string' ? pair.key
72
+ : isScalar(pair.key) && !pair.key.tag && typeof pair.key.value === 'string' ? pair.key.value : undefined;
73
+ if (key === undefined)
74
+ fail(`${label} has an invalid YAML key`);
75
+ if (Object.hasOwn(result, key))
76
+ fail(`${label} has a duplicate YAML key`);
77
+ result[key] = rawLoaderConfig(pair.value, label);
78
+ }
79
+ return result;
80
+ }
81
+ fail(`${label} contains an unsupported YAML node`);
82
+ }
83
+ /** This only creates a candidate deployment contract. It performs no I/O and issues no authority. */
84
+ export function createRsiBootstrapManifest(input) {
85
+ canonical(input.dshHome, 'dshHome');
86
+ if (!profilePattern.test(input.targetProfile) || !profilePattern.test(input.coordinatorProfile)
87
+ || input.targetProfile === input.coordinatorProfile)
88
+ fail('profiles must be distinct valid names');
89
+ positive(input.now, 'now');
90
+ positive(input.expiresAt, 'expiresAt');
91
+ if (input.expiresAt <= input.now || input.expiresAt - input.now > 365 * day)
92
+ fail('authority lifetime is invalid');
93
+ if (!input.owner || input.owner.status !== 'active' || input.owner.owner?.status !== 'active'
94
+ || input.owner.owner.role !== 'owner' || input.owner.conversation.channel !== 'lark'
95
+ || input.owner.conversation.kind !== 'dm' || input.owner.principal.channel !== 'lark'
96
+ || !isDeepStrictEqual(input.owner.owner.principal, input.owner.principal)
97
+ || !Number.isSafeInteger(input.owner.generation) || input.owner.generation < 1
98
+ || !Number.isSafeInteger(input.owner.version) || input.owner.version < 1
99
+ || !Number.isSafeInteger(input.owner.owner.version) || input.owner.owner.version < 1)
100
+ fail('active Lark owner receipt is invalid');
101
+ canonical(input.owner.workspace, 'owner workspace');
102
+ if (!input.resources || input.resources.schemaVersion !== 1 || !input.runtime || input.runtime.schemaVersion !== 1
103
+ || !input.source || input.source.schemaVersion !== 1 || !input.sourceBuild || input.sourceBuild.versioning !== 'patch')
104
+ fail('prepared RSI inputs are incomplete');
105
+ for (const [label, path] of [['resource root', input.resources.root], ['state root', input.resources.stateRoot],
106
+ ['config root', input.resources.configRoot], ['source checkout', input.source.repository], ['source release remote', input.source.baseline.remote],
107
+ ['runtime root', input.runtime.root], ['git', input.git?.path]])
108
+ canonical(path, label);
109
+ if (input.resources.root !== join(input.dshHome, 'rsi-authorities', input.targetProfile)
110
+ || input.runtime.root !== join(input.dshHome, 'rsi-authority-runtimes', input.targetProfile)
111
+ || input.resources.stateRoot !== join(input.resources.root, 'state')
112
+ || input.resources.configRoot !== join(input.resources.root, 'config')
113
+ || !digestPattern.test(input.git.sha256))
114
+ fail('prepared resources do not belong to target installation');
115
+ if (!Array.isArray(input.plugins) || input.plugins.length < 1 || input.plugins.length > 32
116
+ || new Set(input.plugins).size !== input.plugins.length
117
+ || input.plugins.some(name => !pluginPattern.test(name) || PROTECTED_PLUGIN_DENYLIST.has(name)))
118
+ fail('source repair plugin scope is invalid or protected');
119
+ validateHostDeploymentInputs(input.hostDeploymentInputs);
120
+ const hostInputs = [...input.hostDeploymentInputs];
121
+ for (const required of ['package.json', 'pnpm-lock.yaml', 'cordis.patch.yml']) {
122
+ if (!hostInputs.includes(required))
123
+ fail(`Host deployment input is missing ${required}`);
124
+ }
125
+ for (const name of input.plugins) {
126
+ const prefix = `node_modules/@dsh-enhanced/${name}/`;
127
+ if (!hostInputs.includes(`${prefix}package.json`) || !hostInputs.includes(`${prefix}cordis.patch.yml`)
128
+ || !hostInputs.some(path => path.startsWith(`${prefix}lib/`) && path.endsWith('.js'))) {
129
+ fail(`Host deployment input does not cover installed package ${name}`);
130
+ }
131
+ }
132
+ const memoryManifestPaths = hostInputs.filter(path => path.endsWith('/@dsh-enhanced/personal-memory/package.json'));
133
+ if (memoryManifestPaths.length !== 1)
134
+ fail('Host deployment inputs require one embedded Personal Memory package');
135
+ const memoryPrefix = memoryManifestPaths[0].slice(0, -'package.json'.length);
136
+ if (!hostInputs.includes(`${memoryPrefix}cordis.patch.yml`)
137
+ || !hostInputs.some(path => path.startsWith(`${memoryPrefix}lib/`) && path.endsWith('.js'))) {
138
+ fail('Host deployment inputs do not cover embedded Personal Memory');
139
+ }
140
+ const document = parseDocument(input.targetEffective, { uniqueKeys: true });
141
+ if (document.errors.length || !isSeq(document.contents))
142
+ fail('target effective YAML is invalid');
143
+ const rows = new Map();
144
+ for (const item of document.contents.items) {
145
+ const entry = mapping(item, 'target row');
146
+ const id = entry.get('id');
147
+ if (typeof id !== 'string' || rows.has(id))
148
+ fail('target effective rows have duplicate or invalid ids');
149
+ rows.set(id, entry);
150
+ }
151
+ const installedRepairable = [...rows.entries()].flatMap(([id, entry]) => {
152
+ if (entry.get('disabled') === true && id !== 'dsh-enhanced-assistant-memory-learning')
153
+ return [];
154
+ const name = entry.get('name');
155
+ if (typeof name !== 'string' || !name.startsWith('@dsh-enhanced/')) {
156
+ if (id.startsWith('dsh-enhanced-'))
157
+ fail(`installed plugin row ${id} has no package name`);
158
+ return [];
159
+ }
160
+ const plugin = name.slice('@dsh-enhanced/'.length);
161
+ if (!pluginPattern.test(plugin) || id !== `dsh-enhanced-${plugin}`)
162
+ fail(`installed plugin row ${id} has inconsistent package identity`);
163
+ return PROTECTED_PLUGIN_DENYLIST.has(plugin) ? [] : [plugin];
164
+ });
165
+ if (installedRepairable.length !== input.plugins.length
166
+ || new Set(installedRepairable).size !== installedRepairable.length
167
+ || installedRepairable.some(name => !input.plugins.includes(name)))
168
+ fail('plugin scope differs from all installed repairable bundles');
169
+ const delivery = rows.get('dsh-enhanced-assistant-delivery');
170
+ if (!delivery || delivery.get('disabled') === true)
171
+ fail('effective Delivery is unavailable');
172
+ const deliveryConfig = plain(rowConfig(delivery, 'Delivery'), 'Delivery config');
173
+ const resolvedOwner = resolveRsiOwnerRoute(deliveryConfig, input.owner, input.dshHome);
174
+ const routeId = resolvedOwner.route.id, principalId = resolvedOwner.principal;
175
+ const scope = { ownerRouteId: routeId, principalId, workspace: input.owner.workspace, preset: input.owner.agentPreset };
176
+ const reviewOwner = { authorityId: routeId, authorityHash: resolvedOwner.route.authorityHash, principalId,
177
+ principalRecordId: input.owner.owner.id, principalVersion: input.owner.owner.version,
178
+ workspace: input.owner.workspace, agentPreset: input.owner.agentPreset };
179
+ const personal = rows.get('dsh-enhanced-personal-assistant');
180
+ if (!personal || personal.get('disabled') === true || personal.get('name') !== '@dsh-enhanced/personal-assistant')
181
+ fail('effective personal assistant is missing');
182
+ const personalConfig = rowConfig(personal, 'personal assistant');
183
+ const memoryConfig = personalConfig.get('personalMemory', true);
184
+ if (!isMap(memoryConfig))
185
+ fail('effective embedded Personal Memory is missing');
186
+ const learner = rows.get('dsh-enhanced-assistant-memory-learning');
187
+ if (!learner || learner.get('name') !== '@dsh-enhanced/assistant-memory-learning'
188
+ || learner.get('disabled') === true && learner.has('config'))
189
+ fail('effective memory learner must be the installed unconfigured bundle');
190
+ const policy = plain(mapping(rowConfig(personal, 'personal assistant').get('assistantPolicy', true), 'assistantPolicy'), 'assistantPolicy');
191
+ let reviewLimit = 7;
192
+ const budgets = policy.budgets ?? [];
193
+ if (!Array.isArray(budgets))
194
+ fail('assistantPolicy budgets are invalid');
195
+ const globalReview = budgets.filter(value => value && typeof value === 'object' && !Array.isArray(value)
196
+ && value.metric === 'automation-runs'
197
+ && value.scope === 'global'
198
+ && value.periodMs === day);
199
+ if (globalReview.length) {
200
+ const limits = new Set(globalReview.map(value => value.limit));
201
+ if (limits.size !== 1 || !Number.isSafeInteger(globalReview[0].limit) || globalReview[0].limit < 1)
202
+ fail('existing global automation budget conflicts');
203
+ reviewLimit = globalReview[0].limit;
204
+ }
205
+ const growthRow = rows.get('dsh-enhanced-assistant-growth-driver');
206
+ if (!growthRow)
207
+ fail('effective growth driver is missing');
208
+ const effectiveGrowth = growthRow.has('config') ? plain(rowConfig(growthRow, 'growth driver'), 'growth driver') : {};
209
+ const selection = {};
210
+ if (effectiveGrowth.provider !== undefined || effectiveGrowth.model !== undefined) {
211
+ if (typeof effectiveGrowth.provider !== 'string' || !effectiveGrowth.provider
212
+ || typeof effectiveGrowth.model !== 'string' || !effectiveGrowth.model)
213
+ fail('growth model override needs provider and model');
214
+ selection.provider = effectiveGrowth.provider;
215
+ selection.model = effectiveGrowth.model;
216
+ if (effectiveGrowth.reasoningEffort !== undefined) {
217
+ if (typeof effectiveGrowth.reasoningEffort !== 'string' || !effectiveGrowth.reasoningEffort)
218
+ fail('invalid growth reasoning effort');
219
+ selection.reasoningEffort = effectiveGrowth.reasoningEffort;
220
+ }
221
+ }
222
+ else if (effectiveGrowth.reasoningEffort !== undefined)
223
+ fail('growth reasoning effort has no fixed model');
224
+ if (!Array.isArray(input.observerTargets) || input.observerTargets.length < 1 || input.observerTargets.length > 30
225
+ || new Set(input.observerTargets.map(target => target.entryId)).size !== input.observerTargets.length)
226
+ fail('observer targets are invalid');
227
+ for (const target of input.observerTargets) {
228
+ const effective = rows.get(target.entryId);
229
+ if (!effective || effective.get('disabled') === true || mutableRows.has(target.entryId)
230
+ || target.module !== effective.get('name'))
231
+ fail(`observer target ${target.entryId} is not a stable effective Loader entry`);
232
+ const node = effective.get('config', true);
233
+ // Loader observes an omitted configuration as null. Default-only bundles
234
+ // need no artificial YAML config mapping to be observed or bootstrapped.
235
+ if (runtimeConfigDigest(rawLoaderConfig(node, target.entryId)) !== target.configDigest)
236
+ fail(`observer target ${target.entryId} config digest differs from effective Loader entry`);
237
+ }
238
+ const config = input.resources.configRoot, state = input.resources.stateRoot;
239
+ const client = (name) => ({
240
+ executable: { ...input.runtime.executables[name] }, interpreter: { ...input.runtime.node },
241
+ configPath: join(config, `${name}.json`), timeoutMs: 10_000,
242
+ });
243
+ const releaseConfig = { reviewDecisionRoot: join(state, 'review-decisions'), timeoutMs: 1_800_000, independentReview: true };
244
+ const hostPath = join(config, 'host-wrapper.json');
245
+ const targetEnvironment = { DSH_SYSTEMD_HOST_ATTESTOR_CONFIG: hostPath };
246
+ for (const phase of phases)
247
+ targetEnvironment[`DSH_RELEASE_${phase.toUpperCase().replaceAll('-', '_')}_CONFIG`] = join(config, `release-${phase}.json`);
248
+ const profilePath = join(input.dshHome, 'profiles', input.targetProfile);
249
+ const installation = input.resources.installationId;
250
+ const memoryLearning = createRsiMemoryLearningSetup({ installationId: installation,
251
+ stateRoot: state, owner: reviewOwner, now: input.now, expiresAt: input.expiresAt });
252
+ if (learner.get('disabled') !== true) {
253
+ if (!learner.has('config') || !isDeepStrictEqual(plain(rowConfig(learner, 'memory learner'), 'memory learner'), memoryLearning.learning)) {
254
+ fail('existing memory learner config differs from frozen owner grant');
255
+ }
256
+ }
257
+ const manifest = {
258
+ schemaVersion: 1, targetProfile: input.targetProfile, coordinatorProfile: input.coordinatorProfile,
259
+ serviceEnvironment: { target: targetEnvironment, coordinator: { DSH_SYSTEMD_HOST_ATTESTOR_CONFIG: hostPath } },
260
+ controlPlane: {
261
+ catalogPath: input.resources.catalog.path, statePath: join(state, 'control-plane'), trustPath: join(config, 'trust.json'),
262
+ sourceBuild: { ...input.sourceBuild },
263
+ sourceJobs: { authorityId: `source-jobs-${installation}`, expiresAt: input.expiresAt, maxSubmissions: 1000,
264
+ repository: input.source.repository, baseline: { ...input.source.baseline }, ...scope,
265
+ budgetId: `rsi-source-${installation}`, budgetAmount: 1 },
266
+ sourceApprovals: client('approval'), sourceReleases: client('release'), sourceReleaseExecution: releaseConfig,
267
+ sourceAdoptions: { profile: input.targetProfile, planTtlMs: day, timeoutMs: 3_600_000, authority: client('adoption'),
268
+ handoff: { schemaVersion: 1, coordinatorId: `rsi-coordinator-${installation}`, maximumWindowMs: day, commit: 'target-host' },
269
+ liveQualification: { protocol: 'dsh-bounded-live/v1', maximumWindowMs: day, minimumTasks: 2,
270
+ authority: input.resources.identities.qualification.authority, keyId: input.resources.identities.qualification.keyId },
271
+ hostDeploymentInputs: hostInputs },
272
+ runtimeObserver: { socketPath: join(state, 'observer.sock'), keyPath: join(config, 'observer.key'),
273
+ profilePath, targets: input.observerTargets.map(target => ({ ...target, services: [...target.services] })) },
274
+ foregroundDeployments: { attestorJournalPath: join(state, 'host-attestor', 'reload.sqlite') },
275
+ taskObservations: { policy: { id: `rsi-observation-${installation}`, expiresAt: input.expiresAt,
276
+ maximumObservations: 1000, minimumChecks: 1, maximumChecks: 32, lookbackMs: 30 * day },
277
+ scope, profilePath, timeoutMs: 300_000, budgetId: `rsi-observations-${installation}`,
278
+ budgetAmount: 1, authority: client('observation') },
279
+ liveQualification: { scope, profilePath, timeoutMs: 300_000, budgetId: `rsi-qualification-${installation}`,
280
+ budgetAmount: 1, authority: client('qualification') },
281
+ },
282
+ growthDriver: { enabled: true, intervalMs: 0, maxReviewsPerWake: 1, minRepeatedSuccesses: 2,
283
+ budgetId: `rsi-reviews-${installation}`, budgetAmount: 1, ...selection,
284
+ scope: { workspace: scope.workspace, preset: scope.preset, principalId, ownerRouteId: routeId },
285
+ workflowOwnerAnchored: { enabled: true },
286
+ usageLearning: { enabled: true, databasePath: join(state, 'growth.sqlite'), scanBudgetId: `rsi-discovery-${installation}`,
287
+ scanBudgetAmount: 1 },
288
+ pluginSourceProposals: { enabled: true, preparationMode: 'durable', repository: input.source.repository,
289
+ maxPlansPerWake: 1, offline: true, planTtlMs: day } },
290
+ sourceReviews: { authorityId: `source-reviews-${installation}`, expiresAt: input.expiresAt, maxReviews: 1000,
291
+ repository: input.source.baseline.remote, git: { ...input.git }, decisionRoot: releaseConfig.reviewDecisionRoot,
292
+ plugins: [...input.plugins], owner: reviewOwner, reviewerPrincipal: `rsi-independent-reviewer-${installation}`,
293
+ policy: 'Review the exact owner-bound source repair and its acceptance evidence independently.',
294
+ maxChangedFiles: 256, maxInputBytes: 2_097_152, maxOutputTokens: 8192, timeoutMs: 300_000 },
295
+ memoryLearning,
296
+ coordinator: { budgetId: `rsi-coordinator-${installation}`, budgetAmount: 1, timeoutMs: 300_000 },
297
+ limits: { periodMs: day, reviews: reviewLimit, discovery: 1440, source: 7, observations: 1440,
298
+ coordinator: 1440, qualification: 1440 },
299
+ };
300
+ if (input.creationBuild) {
301
+ if (input.creationBuild.sourceCommit !== input.source.sourceCommit
302
+ || input.creationBuild.sourceImage !== input.sourceBuild.image
303
+ || input.creationBuild.dockerPath !== input.sourceBuild.dockerPath)
304
+ fail('creation image differs from approved source build');
305
+ const creation = createRsiPluginCreationSetup({ resources: input.resources, build: input.creationBuild,
306
+ owner: reviewOwner, now: input.now, expiresAt: input.expiresAt });
307
+ manifest.pluginCreation = creation;
308
+ manifest.controlPlane.sourceJobs.creation = creation.creation;
309
+ manifest.controlPlane.creationVerifications = creation.verifications;
310
+ manifest.controlPlane.creationCapabilities = creation.capabilities;
311
+ manifest.growthDriver.pluginSourceProposals.allowCreation = true;
312
+ }
313
+ // Delivery, Growth and Verifier final options are determined by compileRsiProfiles.
314
+ // Observe their final raw Loader options, not the pre-install dump. Neither
315
+ // embeds runtimeObserver, so there is no configuration-digest cycle.
316
+ const verifier = rows.get('dsh-enhanced-assistant-verifier');
317
+ if (!verifier || verifier.get('disabled') === true)
318
+ fail('effective verifier is missing');
319
+ const verifierRaw = rawLoaderConfig(rowConfig(verifier, 'verifier'), 'verifier');
320
+ if (!verifierRaw || typeof verifierRaw !== 'object' || Array.isArray(verifierRaw))
321
+ fail('invalid verifier config');
322
+ manifest.controlPlane.runtimeObserver.targets.push({ entryId: 'dsh-enhanced-assistant-growth-driver', module: '@dsh-enhanced/assistant-growth-driver',
323
+ configDigest: runtimeConfigDigest(manifest.growthDriver), services: ['assistantGrowthDriver'] }, { entryId: 'dsh-enhanced-assistant-verifier', module: '@dsh-enhanced/assistant-verifier',
324
+ configDigest: runtimeConfigDigest({ ...verifierRaw, sourceReviews: manifest.sourceReviews,
325
+ memoryReviews: memoryLearning.reviews,
326
+ ...(manifest.pluginCreation ? { creationReviews: manifest.pluginCreation.reviews } : {}) }), services: ['assistantVerifier'] }, { entryId: 'dsh-enhanced-personal-assistant', module: '@dsh-enhanced/personal-assistant',
327
+ configDigest: runtimeConfigDigest(compileRsiPersonalAssistantOptions({
328
+ effectiveConfig: rawLoaderConfig(personalConfig, 'personal assistant'),
329
+ manifest, scope: { workspace: scope.workspace, preset: scope.preset, principal: scope.principalId },
330
+ budgetIds: { reviews: manifest.growthDriver.budgetId, discovery: manifest.growthDriver.usageLearning.scanBudgetId,
331
+ source: manifest.controlPlane.sourceJobs.budgetId, observations: manifest.controlPlane.taskObservations.budgetId },
332
+ })), services: ['personalMemory', 'assistantPolicy', 'assistantAutomations'] }, { entryId: 'dsh-enhanced-assistant-memory-learning', module: '@dsh-enhanced/assistant-memory-learning',
333
+ configDigest: runtimeConfigDigest(memoryLearning.learning), services: ['assistantMemoryLearning'] });
334
+ const deliveryTarget = manifest.controlPlane.runtimeObserver.targets.find(target => target.entryId === 'dsh-enhanced-assistant-delivery');
335
+ if (deliveryTarget) {
336
+ // The input observer digest was validated above against the original dump.
337
+ // Only the journaled compiler output receives the new owner route.
338
+ const deliveryRaw = rawLoaderConfig(rowConfig(delivery, 'Delivery'), 'Delivery');
339
+ deliveryTarget.configDigest = runtimeConfigDigest(resolvedOwner.created
340
+ ? { ...deliveryRaw, ownerRoutes: [...deliveryRaw.ownerRoutes, resolvedOwner.authority] }
341
+ : deliveryRaw);
342
+ }
343
+ return manifest;
344
+ }
345
+ //# sourceMappingURL=rsi-bootstrap-manifest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rsi-bootstrap-manifest.js","sourceRoot":"","sources":["../src/rsi-bootstrap-manifest.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ import type { ActiveLarkOwnerBinding } from '@dsh-enhanced/assistant-delivery';
2
+ import { type RsiAuthorityConfigInput } from './rsi-authority-config.js';
3
+ import { compileRsiProfiles } from './rsi-profile.js';
4
+ type Profiles = Pick<Parameters<typeof compileRsiProfiles>[0], 'targetPatch' | 'targetEffective' | 'coordinatorPatch' | 'coordinatorEffective' | 'coordinatorBase'>;
5
+ export interface RsiOwnerConfigurationContext {
6
+ binding: ActiveLarkOwnerBinding;
7
+ profiles: Profiles;
8
+ signal?: AbortSignal;
9
+ }
10
+ export interface RsiOwnerConfiguration {
11
+ schemaVersion: 1;
12
+ manifestPath: string;
13
+ manifestDigest: string;
14
+ targetProfile: string;
15
+ coordinatorProfile: string;
16
+ }
17
+ /** Read-only retry admission before either Host is stopped. */
18
+ export declare function inspectRsiOwnerConfiguration(input: {
19
+ manifest: RsiAuthorityConfigInput['manifest'];
20
+ resources: RsiAuthorityConfigInput['resources'];
21
+ patches: Awaited<ReturnType<typeof compileRsiProfiles>>;
22
+ signal: AbortSignal;
23
+ }): Promise<void>;
24
+ /** Prepare runnable owner-bound configurations, without changing either Host.
25
+ * The installer must hold the DSH_HOME lifecycle lock and reread the current
26
+ * owner/profile sources before calling. Configurations and grants are immutable
27
+ * for this preparation; retry never renews a grant or resets a live ledger. */
28
+ export declare function prepareRsiOwnerConfiguration(input: RsiAuthorityConfigInput, context: RsiOwnerConfigurationContext): Promise<RsiOwnerConfiguration>;
29
+ export {};
30
+ //# sourceMappingURL=rsi-bootstrap.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rsi-bootstrap.d.ts","sourceRoot":"","sources":["../src/rsi-bootstrap.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAA;AAE9E,OAAO,EAA8B,KAAK,uBAAuB,EAAE,MAAM,2BAA2B,CAAA;AACpG,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AAQrD,KAAK,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC,CAAC,CAAC,EAAE,aAAa,GAAG,iBAAiB,GAC5F,kBAAkB,GAAG,sBAAsB,GAAG,iBAAiB,CAAC,CAAA;AACpE,MAAM,WAAW,4BAA4B;IAC3C,OAAO,EAAE,sBAAsB,CAAA;IAC/B,QAAQ,EAAE,QAAQ,CAAA;IAClB,MAAM,CAAC,EAAE,WAAW,CAAA;CACrB;AACD,MAAM,WAAW,qBAAqB;IACpC,aAAa,EAAE,CAAC,CAAA;IAChB,YAAY,EAAE,MAAM,CAAA;IACpB,cAAc,EAAE,MAAM,CAAA;IACtB,aAAa,EAAE,MAAM,CAAA;IACrB,kBAAkB,EAAE,MAAM,CAAA;CAC3B;AAqCD,+DAA+D;AAC/D,wBAAsB,4BAA4B,CAAC,KAAK,EAAE;IACxD,QAAQ,EAAE,uBAAuB,CAAC,UAAU,CAAC,CAAC;IAAC,SAAS,EAAE,uBAAuB,CAAC,WAAW,CAAC,CAAC;IAC/F,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC,CAAC;IAAC,MAAM,EAAE,WAAW,CAAA;CAC7E,GAAG,OAAO,CAAC,IAAI,CAAC,CA8ChB;AAED;;;+EAG+E;AAC/E,wBAAsB,4BAA4B,CAAC,KAAK,EAAE,uBAAuB,EAC/E,OAAO,EAAE,4BAA4B,GAAG,OAAO,CAAC,qBAAqB,CAAC,CA6LvE"}