@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,113 @@
1
+ import type { RsiSetupManifest } from './rsi-profile.js';
2
+ import type { RsiAuthorityResources } from './rsi-authority-resources.js';
3
+ export interface RsiHostPinReplacement {
4
+ path: string;
5
+ sha256: string;
6
+ }
7
+ export interface RsiHostRebase {
8
+ oldHostRoot: string;
9
+ oldHostVersion: string;
10
+ candidateHostVersion: string;
11
+ pins: Readonly<Record<string, RsiHostPinReplacement>>;
12
+ }
13
+ export interface RsiHostUpdateOverlay {
14
+ schemaVersion: 1;
15
+ kind: 'rsi-host-update-overlay';
16
+ transactionId: string;
17
+ dshHome: string;
18
+ targetProfile: string;
19
+ installationId: string;
20
+ currentPlanId: string;
21
+ activationId: string;
22
+ sequence: number;
23
+ previousDigest: string | null;
24
+ bootstrapDigest: string;
25
+ files: Record<string, string>;
26
+ patches: Record<string, string>;
27
+ runtimeReceiptDigest: string;
28
+ planDigest: string;
29
+ result: {
30
+ schemaVersion: 1;
31
+ manifestPath: string;
32
+ manifestDigest: string;
33
+ targetProfile: string;
34
+ coordinatorProfile: string;
35
+ };
36
+ issuedAt: number;
37
+ authority: string;
38
+ keyId: string;
39
+ signature: string;
40
+ }
41
+ export interface RsiOwnerRepairOverlay {
42
+ schemaVersion: 1;
43
+ kind: 'rsi-owner-repair-overlay';
44
+ transactionId: string;
45
+ dshHome: string;
46
+ targetProfile: string;
47
+ installationId: string;
48
+ sequence: number;
49
+ previousDigest: string | null;
50
+ bootstrapDigest: string;
51
+ files: Record<string, string>;
52
+ patches: Record<string, string>;
53
+ runtimeReceiptDigest: string;
54
+ planDigest: string;
55
+ result: RsiHostUpdateOverlay['result'];
56
+ repair: {
57
+ sourceMaintenanceDigest: string;
58
+ before: {
59
+ files: Record<string, string>;
60
+ patches: Record<string, string>;
61
+ runtimeReceiptDigest: string;
62
+ creationReceiptDigest: string;
63
+ journalDigest: string;
64
+ };
65
+ after: {
66
+ creationReceiptDigest: string;
67
+ journalDigest: string;
68
+ };
69
+ permissionPreset: 'workspace-write' | 'danger-full-access';
70
+ };
71
+ issuedAt: number;
72
+ authority: string;
73
+ keyId: string;
74
+ signature: string;
75
+ }
76
+ export type RsiOwnerOverlay = RsiHostUpdateOverlay | RsiOwnerRepairOverlay;
77
+ export declare function rsiHostUpdateOverlayDigest(value: RsiOwnerOverlay): string;
78
+ export declare function readRsiHostUpdateOverlayChain(input: {
79
+ source: string | undefined;
80
+ resources: RsiAuthorityResources;
81
+ dshHome: string;
82
+ profile: string;
83
+ bootstrapSource: string;
84
+ }): {
85
+ records: RsiOwnerOverlay[];
86
+ latest?: RsiOwnerOverlay;
87
+ };
88
+ export declare function signRsiHostUpdateOverlay(input: Omit<RsiHostUpdateOverlay, 'signature'>, privateKeyPem: string, resources: RsiAuthorityResources, bootstrapSource: string, previous: readonly RsiOwnerOverlay[]): RsiHostUpdateOverlay;
89
+ export declare function signRsiOwnerRepairOverlay(input: Omit<RsiOwnerRepairOverlay, 'signature'>, privateKeyPem: string, resources: RsiAuthorityResources, bootstrapSource: string, previous: readonly RsiOwnerOverlay[]): RsiOwnerRepairOverlay;
90
+ /** Replace only exact pinned assets and the installed DSH baseline version.
91
+ * Arbitrary old-Host path strings are rejected instead of guessed. */
92
+ export declare function rebaseRsiHostValue<T>(value: T, rebase: RsiHostRebase): T;
93
+ /** Preserve unrelated patch rows and original observer identities. */
94
+ export declare function rebaseRsiHostProfiles(input: {
95
+ manifest: RsiSetupManifest;
96
+ targetPatch: string;
97
+ coordinatorPatch: string;
98
+ rebase: RsiHostRebase;
99
+ }): {
100
+ manifest: RsiSetupManifest;
101
+ targetPatch: string;
102
+ coordinatorPatch: string;
103
+ };
104
+ /** Rebase the deployed patch itself. An adoption may have replaced the original
105
+ * bootstrap rows, so the historical manifest cannot be used as their source. */
106
+ export declare function rebaseRsiHostActivePatch(input: {
107
+ patch: string;
108
+ rebase: RsiHostRebase;
109
+ }): string;
110
+ /** The owner manifest is historical bootstrap authority; rebase only its
111
+ * verified baseline pins and observer digests, independently of live adoption. */
112
+ export declare function rebaseRsiHostManifest(manifest: RsiSetupManifest, rebase: RsiHostRebase): RsiSetupManifest;
113
+ //# sourceMappingURL=rsi-host-update.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rsi-host-update.d.ts","sourceRoot":"","sources":["../src/rsi-host-update.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,316 @@
1
+ import { isDeepStrictEqual } from 'node:util';
2
+ import { createHash, createPublicKey, sign, verify } from 'node:crypto';
3
+ import { isAbsolute, resolve } from 'node:path';
4
+ import { isMap, isSeq, parseDocument } from 'yaml';
5
+ import { runtimeConfigDigest } from '@dsh-enhanced/plugin-control-plane';
6
+ function fail(message) { throw new Error(`rsi host update: ${message}`); }
7
+ const sha256 = (source) => createHash('sha256').update(source).digest('hex');
8
+ const hex = /^[a-f0-9]{64}$/u;
9
+ const profileName = /^[A-Za-z0-9][A-Za-z0-9._-]{0,63}$/u;
10
+ const backupName = /^\.([A-Za-z0-9][A-Za-z0-9._-]{0,63})\.plugin-backup-([A-Za-z0-9-]{1,36})$/u;
11
+ function canonical(value) {
12
+ if (Array.isArray(value))
13
+ return `[${value.map(canonical).join(',')}]`;
14
+ if (record(value))
15
+ return `{${Object.entries(value).filter(([, item]) => item !== undefined)
16
+ .sort(([a], [b]) => a.localeCompare(b)).map(([key, item]) => `${JSON.stringify(key)}:${canonical(item)}`).join(',')}}`;
17
+ return JSON.stringify(value);
18
+ }
19
+ export function rsiHostUpdateOverlayDigest(value) { return sha256(canonical(value)); }
20
+ function overlayShape(value, resources, home, profile, bootstrapDigest, sequence, previousDigest) {
21
+ if (!record(value) || !isDeepStrictEqual(Object.keys(value).sort(), ['schemaVersion', 'kind', 'transactionId', 'dshHome',
22
+ 'targetProfile', 'installationId', 'currentPlanId', 'activationId', 'sequence', 'previousDigest', 'bootstrapDigest', 'files', 'patches',
23
+ 'runtimeReceiptDigest', 'planDigest', 'result', 'issuedAt', 'authority', 'keyId', 'signature'].sort())
24
+ || value.schemaVersion !== 1 || value.kind !== 'rsi-host-update-overlay'
25
+ || value.dshHome !== home || value.targetProfile !== profile || value.installationId !== resources.installationId
26
+ || typeof value.currentPlanId !== 'string' || !value.currentPlanId || typeof value.activationId !== 'string' || !value.activationId
27
+ || value.sequence !== sequence || value.previousDigest !== previousDigest || value.bootstrapDigest !== bootstrapDigest
28
+ || value.authority !== resources.identities.host.authority || value.keyId !== resources.identities.host.keyId
29
+ || typeof value.transactionId !== 'string' || !value.transactionId || !Number.isSafeInteger(value.issuedAt)
30
+ || !hex.test(String(value.runtimeReceiptDigest)) || !hex.test(String(value.planDigest))
31
+ || !record(value.files) || !record(value.patches) || Object.keys(value.files).length > 64
32
+ || Object.keys(value.patches).length < 2 || Object.keys(value.patches).length > 8
33
+ || Object.entries(value.files).some(([path, digest]) => !isAbsolute(path) || resolve(path) !== path
34
+ || !path.startsWith(`${resources.configRoot}/`) || !hex.test(String(digest)))
35
+ || !hex.test(String(value.patches[profile]))
36
+ || !profileName.test(String(record(value.result) ? value.result.coordinatorProfile : undefined))
37
+ || !hex.test(String(value.patches[String(record(value.result) ? value.result.coordinatorProfile : undefined)]))
38
+ || Object.entries(value.patches).some(([name, digest]) => !(profileName.test(name)
39
+ || backupName.exec(name)?.[1] === profile) || !hex.test(String(digest)))
40
+ || !record(value.result) || value.result.targetProfile !== profile || value.result.coordinatorProfile === profile
41
+ || value.result.manifestPath !== `${resources.configRoot}/manifest.json`
42
+ || value.result.manifestDigest !== value.files[value.result.manifestPath]
43
+ || typeof value.signature !== 'string' || value.signature.length > 256)
44
+ fail('overlay shape or scope differs');
45
+ const { signature, ...unsigned } = value;
46
+ const key = createPublicKey(resources.identities.host.publicKeyPem);
47
+ if (key.asymmetricKeyType !== 'ed25519'
48
+ || !verify(null, Buffer.from(canonical(unsigned)), key, Buffer.from(signature, 'base64')))
49
+ fail('overlay signature differs');
50
+ }
51
+ function repairOverlayShape(value, resources, home, profile, bootstrapDigest, sequence, previousDigest) {
52
+ if (!record(value) || !isDeepStrictEqual(Object.keys(value).sort(), ['schemaVersion', 'kind', 'transactionId', 'dshHome',
53
+ 'targetProfile', 'installationId', 'sequence', 'previousDigest', 'bootstrapDigest', 'files', 'patches',
54
+ 'runtimeReceiptDigest', 'planDigest', 'result', 'repair', 'issuedAt', 'authority', 'keyId', 'signature'].sort())
55
+ || value.schemaVersion !== 1 || value.kind !== 'rsi-owner-repair-overlay'
56
+ || value.dshHome !== home || value.targetProfile !== profile || value.installationId !== resources.installationId
57
+ || value.sequence !== sequence || value.previousDigest !== previousDigest || value.bootstrapDigest !== bootstrapDigest
58
+ || value.authority !== resources.identities.host.authority || value.keyId !== resources.identities.host.keyId
59
+ || typeof value.transactionId !== 'string' || !value.transactionId || !Number.isSafeInteger(value.issuedAt)
60
+ || !hex.test(String(value.runtimeReceiptDigest)) || !hex.test(String(value.planDigest))
61
+ || !record(value.files) || !record(value.patches) || Object.keys(value.files).length > 64
62
+ || Object.entries(value.files).some(([path, digest]) => !isAbsolute(path) || resolve(path) !== path
63
+ || !path.startsWith(`${resources.configRoot}/`) || !hex.test(String(digest)))
64
+ || !record(value.result) || !isDeepStrictEqual(Object.keys(value.result).sort(), ['schemaVersion', 'manifestPath', 'manifestDigest', 'targetProfile', 'coordinatorProfile'].sort())
65
+ || value.result.schemaVersion !== 1 || value.result.targetProfile !== profile
66
+ || !profileName.test(String(value.result.coordinatorProfile)) || value.result.coordinatorProfile === profile
67
+ || value.result.manifestPath !== `${resources.configRoot}/manifest.json`
68
+ || value.result.manifestDigest !== value.files[value.result.manifestPath]
69
+ || !isDeepStrictEqual(Object.keys(value.patches).sort(), [profile, value.result.coordinatorProfile].sort())
70
+ || Object.values(value.patches).some(digest => !hex.test(String(digest)))
71
+ || !record(value.repair) || !isDeepStrictEqual(Object.keys(value.repair).sort(), ['sourceMaintenanceDigest', 'before', 'after', 'permissionPreset'].sort())
72
+ || !hex.test(String(value.repair.sourceMaintenanceDigest))
73
+ || !['workspace-write', 'danger-full-access'].includes(String(value.repair.permissionPreset))
74
+ || !record(value.repair.before) || !isDeepStrictEqual(Object.keys(value.repair.before).sort(), ['files', 'patches', 'runtimeReceiptDigest', 'creationReceiptDigest', 'journalDigest'].sort())
75
+ || !record(value.repair.before.files) || !record(value.repair.before.patches)
76
+ || !isDeepStrictEqual(Object.keys(value.repair.before.files).sort(), Object.keys(value.files).sort())
77
+ || !isDeepStrictEqual(Object.keys(value.repair.before.patches).sort(), Object.keys(value.patches).sort())
78
+ || Object.values(value.repair.before.files).some(digest => !hex.test(String(digest)))
79
+ || Object.values(value.repair.before.patches).some(digest => !hex.test(String(digest)))
80
+ || !hex.test(String(value.repair.before.runtimeReceiptDigest))
81
+ || !hex.test(String(value.repair.before.creationReceiptDigest))
82
+ || !hex.test(String(value.repair.before.journalDigest))
83
+ || !record(value.repair.after) || !isDeepStrictEqual(Object.keys(value.repair.after).sort(), ['creationReceiptDigest', 'journalDigest'].sort())
84
+ || !hex.test(String(value.repair.after.creationReceiptDigest)) || !hex.test(String(value.repair.after.journalDigest))
85
+ || typeof value.signature !== 'string' || value.signature.length > 256)
86
+ fail('repair overlay shape or scope differs');
87
+ const { signature, ...unsigned } = value;
88
+ const key = createPublicKey(resources.identities.host.publicKeyPem);
89
+ if (key.asymmetricKeyType !== 'ed25519'
90
+ || !verify(null, Buffer.from(canonical(unsigned)), key, Buffer.from(signature, 'base64')))
91
+ fail('repair overlay signature differs');
92
+ }
93
+ export function readRsiHostUpdateOverlayChain(input) {
94
+ if (input.source === undefined)
95
+ return { records: [] };
96
+ let parsed;
97
+ try {
98
+ parsed = JSON.parse(input.source);
99
+ }
100
+ catch {
101
+ fail('overlay JSON is invalid');
102
+ }
103
+ if (!record(parsed) || parsed.schemaVersion !== 1 || parsed.kind !== 'rsi-host-update-overlays'
104
+ || !Array.isArray(parsed.records) || parsed.records.length < 1 || parsed.records.length > 64)
105
+ fail('overlay chain is invalid');
106
+ const records = [];
107
+ const bootstrapDigest = sha256(input.bootstrapSource);
108
+ for (const value of parsed.records) {
109
+ const sequence = records.length + 1;
110
+ const previousDigest = records.length ? rsiHostUpdateOverlayDigest(records.at(-1)) : null;
111
+ if (record(value) && value.kind === 'rsi-owner-repair-overlay') {
112
+ repairOverlayShape(value, input.resources, input.dshHome, input.profile, bootstrapDigest, sequence, previousDigest);
113
+ }
114
+ else {
115
+ overlayShape(value, input.resources, input.dshHome, input.profile, bootstrapDigest, sequence, previousDigest);
116
+ }
117
+ if (records.length && value.issuedAt < records.at(-1).issuedAt)
118
+ fail('overlay time moved backwards');
119
+ records.push(value);
120
+ }
121
+ return { records, latest: records.at(-1) };
122
+ }
123
+ export function signRsiHostUpdateOverlay(input, privateKeyPem, resources, bootstrapSource, previous) {
124
+ const record = { ...input, signature: sign(null, Buffer.from(canonical(input)), privateKeyPem).toString('base64') };
125
+ overlayShape(record, resources, input.dshHome, input.targetProfile, sha256(bootstrapSource), previous.length + 1, previous.length ? rsiHostUpdateOverlayDigest(previous.at(-1)) : null);
126
+ return record;
127
+ }
128
+ export function signRsiOwnerRepairOverlay(input, privateKeyPem, resources, bootstrapSource, previous) {
129
+ const record = { ...input, signature: sign(null, Buffer.from(canonical(input)), privateKeyPem).toString('base64') };
130
+ repairOverlayShape(record, resources, input.dshHome, input.targetProfile, sha256(bootstrapSource), previous.length + 1, previous.length ? rsiHostUpdateOverlayDigest(previous.at(-1)) : null);
131
+ return record;
132
+ }
133
+ function record(value) {
134
+ return value !== null && typeof value === 'object' && !Array.isArray(value);
135
+ }
136
+ /** Replace only exact pinned assets and the installed DSH baseline version.
137
+ * Arbitrary old-Host path strings are rejected instead of guessed. */
138
+ export function rebaseRsiHostValue(value, rebase) {
139
+ const visit = (item) => {
140
+ if (typeof item === 'string') {
141
+ if (item === rebase.oldHostRoot || item.startsWith(`${rebase.oldHostRoot}/`))
142
+ fail(`unmapped Host path: ${item}`);
143
+ return item;
144
+ }
145
+ if (Array.isArray(item))
146
+ return item.map(visit);
147
+ if (!record(item))
148
+ return item;
149
+ const oldPath = typeof item.path === 'string' ? item.path : undefined;
150
+ const pin = oldPath === undefined ? undefined : rebase.pins[oldPath];
151
+ if (pin !== undefined && oldPath !== undefined) {
152
+ if (typeof item.sha256 !== 'string' || !/^[a-f0-9]{64}$/u.test(item.sha256))
153
+ fail('pinned asset is malformed');
154
+ return Object.fromEntries(Object.entries(item).map(([key, child]) => [key,
155
+ key === 'path' ? pin.path : key === 'sha256' ? pin.sha256
156
+ : key === 'version' && child === rebase.oldHostVersion && oldPath.startsWith(`${rebase.oldHostRoot}/`)
157
+ ? rebase.candidateHostVersion : visit(child)]));
158
+ }
159
+ return Object.fromEntries(Object.entries(item).map(([key, child]) => [key,
160
+ key === 'dshBaseline' && child === rebase.oldHostVersion ? rebase.candidateHostVersion : visit(child)]));
161
+ };
162
+ return visit(value);
163
+ }
164
+ function document(source, label) {
165
+ const value = parseDocument(source, { uniqueKeys: true, strict: true });
166
+ if (value.errors.length || value.warnings.length || !isSeq(value.contents))
167
+ fail(`${label} is not a bounded patch`);
168
+ return value;
169
+ }
170
+ function row(document, id) {
171
+ let found;
172
+ const operations = document.contents;
173
+ if (!isSeq(operations))
174
+ fail('patch operations are invalid');
175
+ for (const operation of operations.items) {
176
+ if (!isMap(operation))
177
+ fail('patch operation is not a map');
178
+ if (operation.get('id') === id) {
179
+ if (found)
180
+ fail(`duplicate patch row: ${id}`);
181
+ found = operation;
182
+ }
183
+ for (const kind of ['insert', 'update']) {
184
+ const entries = operation.get(kind, true);
185
+ if (entries === undefined)
186
+ continue;
187
+ if (!isSeq(entries))
188
+ fail('patch rows are not a sequence');
189
+ for (const candidate of entries.items) {
190
+ if (!isMap(candidate))
191
+ fail('patch row is not a map');
192
+ if (candidate.get('id') === id) {
193
+ if (found)
194
+ fail(`duplicate patch row: ${id}`);
195
+ found = candidate;
196
+ }
197
+ }
198
+ }
199
+ }
200
+ if (!found)
201
+ fail(`patch row is missing: ${id}`);
202
+ return found;
203
+ }
204
+ function config(value) {
205
+ const node = value.get('config', true);
206
+ if (!isMap(node))
207
+ fail('patch row config is not a map');
208
+ const result = node.toJSON();
209
+ if (!record(result))
210
+ fail('patch row config is invalid');
211
+ return result;
212
+ }
213
+ function targetDigest(manifest, id, patch) {
214
+ const source = config(row(patch, id));
215
+ return runtimeConfigDigest(id === 'dsh-enhanced-assistant-verifier'
216
+ ? { ...source, sourceReviews: manifest.sourceReviews } : source);
217
+ }
218
+ /** Preserve unrelated patch rows and original observer identities. */
219
+ export function rebaseRsiHostProfiles(input) {
220
+ const oldTarget = document(input.targetPatch, 'target patch');
221
+ const coordinator = document(input.coordinatorPatch, 'coordinator patch');
222
+ const changed = rebaseRsiHostValue(input.manifest, input.rebase);
223
+ const target = document(input.targetPatch, 'target patch');
224
+ const replacements = new Map([
225
+ ['dsh-enhanced-plugin-control-plane', changed.controlPlane],
226
+ ['dsh-enhanced-assistant-growth-driver', changed.growthDriver],
227
+ ]);
228
+ for (const [id, value] of replacements) {
229
+ const current = config(row(oldTarget, id));
230
+ const original = id === 'dsh-enhanced-plugin-control-plane' ? input.manifest.controlPlane : input.manifest.growthDriver;
231
+ if (!isDeepStrictEqual(current, original))
232
+ fail(`${id} patch differs from the owner manifest`);
233
+ row(target, id).set('config', target.createNode(value));
234
+ }
235
+ const verifier = row(target, 'dsh-enhanced-assistant-verifier');
236
+ const verifierConfig = config(verifier);
237
+ if (!isDeepStrictEqual(verifierConfig.sourceReviews, input.manifest.sourceReviews))
238
+ fail('verifier patch differs from the owner manifest');
239
+ verifier.set('config', target.createNode({ ...verifierConfig, sourceReviews: changed.sourceReviews }));
240
+ const targets = changed.controlPlane.runtimeObserver?.targets;
241
+ if (!targets)
242
+ fail('runtime observer targets are missing');
243
+ for (const targetEntry of targets) {
244
+ if (!replacements.has(targetEntry.entryId) && targetEntry.entryId !== 'dsh-enhanced-assistant-verifier')
245
+ continue;
246
+ const oldDigest = targetDigest(input.manifest, targetEntry.entryId, oldTarget);
247
+ if (targetEntry.configDigest !== oldDigest)
248
+ fail(`observer digest differs: ${targetEntry.entryId}`);
249
+ targetEntry.configDigest = targetDigest(changed, targetEntry.entryId, target);
250
+ }
251
+ // A coordinator patch may contain only its declared standalone scope. It
252
+ // must not carry any old Host path that this rebase cannot account for.
253
+ if (input.coordinatorPatch.includes(input.rebase.oldHostRoot))
254
+ fail('coordinator patch has an unmapped Host path');
255
+ return { manifest: changed, targetPatch: target.toString({ lineWidth: 0 }), coordinatorPatch: coordinator.toString({ lineWidth: 0 }) };
256
+ }
257
+ /** Rebase the deployed patch itself. An adoption may have replaced the original
258
+ * bootstrap rows, so the historical manifest cannot be used as their source. */
259
+ export function rebaseRsiHostActivePatch(input) {
260
+ const documentBefore = document(input.patch, 'active patch');
261
+ const documentAfter = document(input.patch, 'active patch');
262
+ const ids = ['dsh-enhanced-plugin-control-plane', 'dsh-enhanced-assistant-growth-driver',
263
+ 'dsh-enhanced-assistant-verifier'];
264
+ for (const id of ids) {
265
+ const current = config(row(documentBefore, id));
266
+ row(documentAfter, id).set('config', documentAfter.createNode(rebaseRsiHostValue(current, input.rebase)));
267
+ }
268
+ const cp = config(row(documentAfter, ids[0]));
269
+ const observer = cp.runtimeObserver;
270
+ if (!record(observer) || !Array.isArray(observer.targets))
271
+ fail('active runtime observer is missing');
272
+ for (const entry of observer.targets) {
273
+ if (!record(entry) || typeof entry.entryId !== 'string' || typeof entry.configDigest !== 'string')
274
+ fail('active observer entry differs');
275
+ if (!ids.includes(entry.entryId))
276
+ continue;
277
+ const oldConfig = config(row(documentBefore, entry.entryId));
278
+ const newConfig = config(row(documentAfter, entry.entryId));
279
+ const oldDigest = runtimeConfigDigest(oldConfig);
280
+ if (entry.configDigest !== oldDigest)
281
+ fail(`active observer digest differs: ${entry.entryId}`);
282
+ entry.configDigest = runtimeConfigDigest(newConfig);
283
+ }
284
+ row(documentAfter, ids[0]).set('config', documentAfter.createNode(cp));
285
+ if (JSON.stringify(documentAfter.toJSON()).includes(input.rebase.oldHostRoot))
286
+ fail('active patch retains an unmapped Host path');
287
+ return documentAfter.toString({ lineWidth: 0 });
288
+ }
289
+ /** The owner manifest is historical bootstrap authority; rebase only its
290
+ * verified baseline pins and observer digests, independently of live adoption. */
291
+ export function rebaseRsiHostManifest(manifest, rebase) {
292
+ const changed = rebaseRsiHostValue(manifest, rebase);
293
+ const oldTargets = manifest.controlPlane.runtimeObserver?.targets;
294
+ const newTargets = changed.controlPlane.runtimeObserver?.targets;
295
+ if (!oldTargets || !newTargets || oldTargets.length !== newTargets.length)
296
+ fail('owner observer targets differ');
297
+ const configFor = (source, id) => id === 'dsh-enhanced-plugin-control-plane'
298
+ ? source.controlPlane : id === 'dsh-enhanced-assistant-growth-driver' ? source.growthDriver
299
+ : id === 'dsh-enhanced-assistant-verifier' ? { sourceReviews: source.sourceReviews } : undefined;
300
+ for (let index = 0; index < oldTargets.length; index++) {
301
+ const oldTarget = oldTargets[index], nextTarget = newTargets[index];
302
+ if (oldTarget.entryId !== nextTarget.entryId)
303
+ fail('owner observer entry changed');
304
+ const before = configFor(manifest, oldTarget.entryId);
305
+ const after = configFor(changed, nextTarget.entryId);
306
+ if (before === undefined || after === undefined)
307
+ continue;
308
+ if (oldTarget.entryId === 'dsh-enhanced-assistant-verifier')
309
+ continue; // Its full patch config is not stored in the manifest.
310
+ if (oldTarget.configDigest !== runtimeConfigDigest(before))
311
+ fail('owner observer digest differs');
312
+ nextTarget.configDigest = runtimeConfigDigest(after);
313
+ }
314
+ return changed;
315
+ }
316
+ //# sourceMappingURL=rsi-host-update.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rsi-host-update.js","sourceRoot":"","sources":["../src/rsi-host-update.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ import { type PluginControlTrustConfig, type RuntimeObserverTarget, type SourceReleaseAuthorityConfig } from '@dsh-enhanced/plugin-control-plane';
2
+ import type { RsiAuthorityResources } from './rsi-authority-resources.js';
3
+ import type { Pin } from './rsi-authority-runtime.js';
4
+ import type { RsiSourceWorkspace } from './rsi-source.js';
5
+ export declare class RsiInstalledInputsUnavailableError extends Error {
6
+ constructor(message: string);
7
+ }
8
+ export interface InstalledRsiDsh {
9
+ root: string;
10
+ path: string;
11
+ version: string;
12
+ pin: Pin;
13
+ }
14
+ /** Inspect only the installed CLI package and its exact bin target. */
15
+ export declare function resolveInstalledRsiDsh(environment?: NodeJS.ProcessEnv, installedDshRoot?: string): Promise<InstalledRsiDsh>;
16
+ export interface RsiInstalledInputsRequest {
17
+ dshHome: string;
18
+ targetProfile: string;
19
+ /** Exact bytes returned by the installed DSH --dump-config command. */
20
+ targetEffective: string;
21
+ /** Optional when the PATH dsh points into the same installed package. */
22
+ installedDshRoot?: string;
23
+ resources: RsiAuthorityResources;
24
+ source: RsiSourceWorkspace;
25
+ environment?: NodeJS.ProcessEnv;
26
+ }
27
+ export interface RsiInstalledInputs {
28
+ dsh: InstalledRsiDsh;
29
+ plugins: string[];
30
+ hostDeploymentInputs: string[];
31
+ observerTargets: RuntimeObserverTarget[];
32
+ executor: PluginControlTrustConfig['executor'];
33
+ git: Pin;
34
+ systemctl: Pin & {
35
+ interpreter: Pin | null;
36
+ };
37
+ policies: SourceReleaseAuthorityConfig['grant']['policies'];
38
+ }
39
+ /** Caller holds the installation lifecycle lock and supplies one pre-mutation
40
+ * dump. These are declared Host disk inputs, not a claim of complete transitive
41
+ * JavaScript module coverage. */
42
+ export declare function collectRsiInstalledInputs(input: RsiInstalledInputsRequest): Promise<RsiInstalledInputs>;
43
+ //# sourceMappingURL=rsi-install-inputs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rsi-install-inputs.d.ts","sourceRoot":"","sources":["../src/rsi-install-inputs.ts"],"names":[],"mappings":"AAKA,OAAO,EACyB,KAAK,wBAAwB,EAAE,KAAK,qBAAqB,EACvF,KAAK,4BAA4B,EAAE,MAAM,oCAAoC,CAAA;AAI/E,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAA;AACzE,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,4BAA4B,CAAA;AACrD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAYzD,qBAAa,kCAAmC,SAAQ,KAAK;gBAC/C,OAAO,EAAE,MAAM;CAC5B;AA2ED,MAAM,WAAW,eAAe;IAAG,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,GAAG,CAAA;CAAE;AAE1F,uEAAuE;AACvE,wBAAsB,sBAAsB,CAAC,WAAW,GAAE,MAAM,CAAC,UAAwB,EACvF,gBAAgB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CA0BrD;AAED,MAAM,WAAW,yBAAyB;IACxC,OAAO,EAAE,MAAM,CAAA;IACf,aAAa,EAAE,MAAM,CAAA;IACrB,uEAAuE;IACvE,eAAe,EAAE,MAAM,CAAA;IACvB,yEAAyE;IACzE,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,SAAS,EAAE,qBAAqB,CAAA;IAChC,MAAM,EAAE,kBAAkB,CAAA;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC,UAAU,CAAA;CAChC;AACD,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,eAAe,CAAA;IACpB,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,oBAAoB,EAAE,MAAM,EAAE,CAAA;IAC9B,eAAe,EAAE,qBAAqB,EAAE,CAAA;IACxC,QAAQ,EAAE,wBAAwB,CAAC,UAAU,CAAC,CAAA;IAC9C,GAAG,EAAE,GAAG,CAAA;IACR,SAAS,EAAE,GAAG,GAAG;QAAE,WAAW,EAAE,GAAG,GAAG,IAAI,CAAA;KAAE,CAAA;IAC5C,QAAQ,EAAE,4BAA4B,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,CAAA;CAC5D;AAED;;iCAEiC;AACjC,wBAAsB,yBAAyB,CAAC,KAAK,EAAE,yBAAyB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAiK7G"}