@awiki/dsh-plugin 0.3.7 → 0.3.11-rc.1

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 (227) hide show
  1. package/README.md +112 -73
  2. package/README.zh.md +91 -62
  3. package/THIRD_PARTY_NOTICES.md +1 -1
  4. package/cordis.patch.yml +6 -5
  5. package/lib/builtin-tenants.json +22 -0
  6. package/lib/builtin-tenants.sha256 +1 -0
  7. package/lib/client.js +9281 -2379
  8. package/lib/client.js.map +1 -1
  9. package/lib/index.js +3553 -1138
  10. package/lib/model-proxy-contract.js +19 -11
  11. package/lib/provider.js +73 -17
  12. package/lib/{sdk-adapter--trNlr-T.mjs → sdk-adapter-CYcJH7sM.mjs} +374 -101
  13. package/lib/typert.host.js +1595 -168
  14. package/lib/typert.remote-client.d.ts +43 -7
  15. package/lib/typert.remote-client.d.ts.map +1 -1
  16. package/lib/typert.remote-client.js +1595 -168
  17. package/lib/types/builtin-tenant-config.d.ts +19 -0
  18. package/lib/types/builtin-tenant-config.d.ts.map +1 -0
  19. package/lib/types/builtin-tenant-config.js +57 -0
  20. package/lib/types/builtin-tenant-config.js.map +1 -0
  21. package/lib/types/client/AwikiDeviceJoinReminder.d.ts +15 -0
  22. package/lib/types/client/AwikiDeviceJoinReminder.d.ts.map +1 -0
  23. package/lib/types/client/AwikiDeviceJoinReminder.js +74 -0
  24. package/lib/types/client/AwikiDeviceJoinReminder.js.map +1 -0
  25. package/lib/types/client/AwikiDevices.d.ts +33 -0
  26. package/lib/types/client/AwikiDevices.d.ts.map +1 -0
  27. package/lib/types/client/AwikiDevices.js +141 -0
  28. package/lib/types/client/AwikiDevices.js.map +1 -0
  29. package/lib/types/client/AwikiGroupDetails.d.ts.map +1 -1
  30. package/lib/types/client/AwikiGroupDetails.js +16 -13
  31. package/lib/types/client/AwikiGroupDetails.js.map +1 -1
  32. package/lib/types/client/AwikiIdentityAccess.d.ts +17 -8
  33. package/lib/types/client/AwikiIdentityAccess.d.ts.map +1 -1
  34. package/lib/types/client/AwikiIdentityAccess.js +269 -37
  35. package/lib/types/client/AwikiIdentityAccess.js.map +1 -1
  36. package/lib/types/client/AwikiIntegrationSettings.d.ts +21 -0
  37. package/lib/types/client/AwikiIntegrationSettings.d.ts.map +1 -0
  38. package/lib/types/client/AwikiIntegrationSettings.js +105 -0
  39. package/lib/types/client/AwikiIntegrationSettings.js.map +1 -0
  40. package/lib/types/client/AwikiMail.d.ts +1 -1
  41. package/lib/types/client/AwikiMail.d.ts.map +1 -1
  42. package/lib/types/client/AwikiMail.js +17 -137
  43. package/lib/types/client/AwikiMail.js.map +1 -1
  44. package/lib/types/client/AwikiOverlay.d.ts +0 -1
  45. package/lib/types/client/AwikiOverlay.d.ts.map +1 -1
  46. package/lib/types/client/AwikiOverlay.js +26 -28
  47. package/lib/types/client/AwikiOverlay.js.map +1 -1
  48. package/lib/types/client/AwikiProfileCard.d.ts.map +1 -1
  49. package/lib/types/client/AwikiProfileCard.js +17 -18
  50. package/lib/types/client/AwikiProfileCard.js.map +1 -1
  51. package/lib/types/client/AwikiRecoveryForm.d.ts +6 -1
  52. package/lib/types/client/AwikiRecoveryForm.d.ts.map +1 -1
  53. package/lib/types/client/AwikiRecoveryForm.js +74 -30
  54. package/lib/types/client/AwikiRecoveryForm.js.map +1 -1
  55. package/lib/types/client/AwikiSettingsSection.d.ts +28 -13
  56. package/lib/types/client/AwikiSettingsSection.d.ts.map +1 -1
  57. package/lib/types/client/AwikiSettingsSection.js +93 -61
  58. package/lib/types/client/AwikiSettingsSection.js.map +1 -1
  59. package/lib/types/client/AwikiUpdates.d.ts +10 -0
  60. package/lib/types/client/AwikiUpdates.d.ts.map +1 -0
  61. package/lib/types/client/AwikiUpdates.js +57 -0
  62. package/lib/types/client/AwikiUpdates.js.map +1 -0
  63. package/lib/types/client/awiki-client-bridge.d.ts +2 -2
  64. package/lib/types/client/awiki-client-bridge.d.ts.map +1 -1
  65. package/lib/types/client/awiki-client-bridge.js +4 -1
  66. package/lib/types/client/awiki-client-bridge.js.map +1 -1
  67. package/lib/types/client/controller.d.ts +92 -44
  68. package/lib/types/client/controller.d.ts.map +1 -1
  69. package/lib/types/client/controller.js +761 -334
  70. package/lib/types/client/controller.js.map +1 -1
  71. package/lib/types/client/drafts.d.ts +31 -0
  72. package/lib/types/client/drafts.d.ts.map +1 -0
  73. package/lib/types/client/drafts.js +94 -0
  74. package/lib/types/client/drafts.js.map +1 -0
  75. package/lib/types/client/image-cache.d.ts +2 -2
  76. package/lib/types/client/image-cache.d.ts.map +1 -1
  77. package/lib/types/client/image-cache.js +15 -2
  78. package/lib/types/client/image-cache.js.map +1 -1
  79. package/lib/types/client/index.d.ts +1 -1
  80. package/lib/types/client/index.d.ts.map +1 -1
  81. package/lib/types/client/index.js +64 -19
  82. package/lib/types/client/index.js.map +1 -1
  83. package/lib/types/client/integration-operation.d.ts +9 -0
  84. package/lib/types/client/integration-operation.d.ts.map +1 -0
  85. package/lib/types/client/integration-operation.js +54 -0
  86. package/lib/types/client/integration-operation.js.map +1 -0
  87. package/lib/types/client/mail-list-cache.d.ts +2 -0
  88. package/lib/types/client/mail-list-cache.d.ts.map +1 -1
  89. package/lib/types/client/mail-list-cache.js +18 -0
  90. package/lib/types/client/mail-list-cache.js.map +1 -1
  91. package/lib/types/client/otp-cooldown.d.ts +7 -0
  92. package/lib/types/client/otp-cooldown.d.ts.map +1 -0
  93. package/lib/types/client/otp-cooldown.js +29 -0
  94. package/lib/types/client/otp-cooldown.js.map +1 -0
  95. package/lib/types/client/settings-controller.d.ts +38 -2
  96. package/lib/types/client/settings-controller.d.ts.map +1 -1
  97. package/lib/types/client/settings-controller.js +206 -10
  98. package/lib/types/client/settings-controller.js.map +1 -1
  99. package/lib/types/client/settings-locales.d.ts +1 -1
  100. package/lib/types/client/settings-locales.d.ts.map +1 -1
  101. package/lib/types/client/settings-locales.js +192 -14
  102. package/lib/types/client/settings-locales.js.map +1 -1
  103. package/lib/types/client/slots.d.ts +21 -10
  104. package/lib/types/client/slots.d.ts.map +1 -1
  105. package/lib/types/client/slots.js +0 -1
  106. package/lib/types/client/slots.js.map +1 -1
  107. package/lib/types/client/store.d.ts +1 -1
  108. package/lib/types/client/store.d.ts.map +1 -1
  109. package/lib/types/client/store.js +1 -1
  110. package/lib/types/client/store.js.map +1 -1
  111. package/lib/types/conversation-preferences.d.ts.map +1 -1
  112. package/lib/types/conversation-preferences.js +0 -17
  113. package/lib/types/conversation-preferences.js.map +1 -1
  114. package/lib/types/desktop-distribution.d.ts +25 -0
  115. package/lib/types/desktop-distribution.d.ts.map +1 -0
  116. package/lib/types/desktop-distribution.js +57 -0
  117. package/lib/types/desktop-distribution.js.map +1 -0
  118. package/lib/types/domain.d.ts +1 -1
  119. package/lib/types/domain.d.ts.map +1 -1
  120. package/lib/types/domain.js +2 -1
  121. package/lib/types/domain.js.map +1 -1
  122. package/lib/types/index.d.ts +165 -41
  123. package/lib/types/index.d.ts.map +1 -1
  124. package/lib/types/index.js +1594 -535
  125. package/lib/types/index.js.map +1 -1
  126. package/lib/types/integration-client.d.ts +17 -0
  127. package/lib/types/integration-client.d.ts.map +1 -0
  128. package/lib/types/integration-client.js +233 -0
  129. package/lib/types/integration-client.js.map +1 -0
  130. package/lib/types/legacy-sent-mail-cache.d.ts +4 -0
  131. package/lib/types/legacy-sent-mail-cache.d.ts.map +1 -0
  132. package/lib/types/legacy-sent-mail-cache.js +29 -0
  133. package/lib/types/legacy-sent-mail-cache.js.map +1 -0
  134. package/lib/types/listener-state.d.ts +5 -3
  135. package/lib/types/listener-state.d.ts.map +1 -1
  136. package/lib/types/listener-state.js +28 -13
  137. package/lib/types/listener-state.js.map +1 -1
  138. package/lib/types/listener.d.ts +9 -32
  139. package/lib/types/listener.d.ts.map +1 -1
  140. package/lib/types/listener.js +13 -128
  141. package/lib/types/listener.js.map +1 -1
  142. package/lib/types/mail-list-client.d.ts +12 -0
  143. package/lib/types/mail-list-client.d.ts.map +1 -0
  144. package/lib/types/mail-list-client.js +254 -0
  145. package/lib/types/mail-list-client.js.map +1 -0
  146. package/lib/types/mail-recovery-observability.d.ts +8 -0
  147. package/lib/types/mail-recovery-observability.d.ts.map +1 -0
  148. package/lib/types/mail-recovery-observability.js +119 -0
  149. package/lib/types/mail-recovery-observability.js.map +1 -0
  150. package/lib/types/mail.d.ts +2 -28
  151. package/lib/types/mail.d.ts.map +1 -1
  152. package/lib/types/mail.js +2 -79
  153. package/lib/types/mail.js.map +1 -1
  154. package/lib/types/model-proxy-contract.d.ts +8 -8
  155. package/lib/types/model-proxy-contract.d.ts.map +1 -1
  156. package/lib/types/model-proxy-contract.js +15 -8
  157. package/lib/types/model-proxy-contract.js.map +1 -1
  158. package/lib/types/package-version.generated.d.ts +4 -0
  159. package/lib/types/package-version.generated.d.ts.map +1 -0
  160. package/lib/types/package-version.generated.js +4 -0
  161. package/lib/types/package-version.generated.js.map +1 -0
  162. package/lib/types/profile-state.d.ts +2 -13
  163. package/lib/types/profile-state.d.ts.map +1 -1
  164. package/lib/types/profile-state.js +3 -20
  165. package/lib/types/profile-state.js.map +1 -1
  166. package/lib/types/provider-api.d.ts +134 -43
  167. package/lib/types/provider-api.d.ts.map +1 -1
  168. package/lib/types/provider.d.ts +8 -2
  169. package/lib/types/provider.d.ts.map +1 -1
  170. package/lib/types/provider.js +76 -16
  171. package/lib/types/provider.js.map +1 -1
  172. package/lib/types/realtime-supervisor.d.ts +60 -0
  173. package/lib/types/realtime-supervisor.d.ts.map +1 -0
  174. package/lib/types/realtime-supervisor.js +255 -0
  175. package/lib/types/realtime-supervisor.js.map +1 -0
  176. package/lib/types/registration-policy.d.ts +7 -0
  177. package/lib/types/registration-policy.d.ts.map +1 -0
  178. package/lib/types/registration-policy.js +21 -0
  179. package/lib/types/registration-policy.js.map +1 -0
  180. package/lib/types/sdk-adapter.d.ts +62 -11
  181. package/lib/types/sdk-adapter.d.ts.map +1 -1
  182. package/lib/types/sdk-adapter.js +285 -123
  183. package/lib/types/sdk-adapter.js.map +1 -1
  184. package/lib/types/settings-rpc-contract.d.ts +63 -5
  185. package/lib/types/settings-rpc-contract.d.ts.map +1 -1
  186. package/lib/types/settings-rpc-contract.js +108 -5
  187. package/lib/types/settings-rpc-contract.js.map +1 -1
  188. package/lib/types/settings-rpc.d.ts +14 -1
  189. package/lib/types/settings-rpc.d.ts.map +1 -1
  190. package/lib/types/settings-rpc.js +132 -3
  191. package/lib/types/settings-rpc.js.map +1 -1
  192. package/lib/types/settings-transport.d.ts +7 -0
  193. package/lib/types/settings-transport.d.ts.map +1 -0
  194. package/lib/types/settings-transport.js +52 -0
  195. package/lib/types/settings-transport.js.map +1 -0
  196. package/lib/types/tenant-registry.d.ts +74 -0
  197. package/lib/types/tenant-registry.d.ts.map +1 -0
  198. package/lib/types/tenant-registry.js +440 -0
  199. package/lib/types/tenant-registry.js.map +1 -0
  200. package/lib/types/tools.d.ts +1 -1
  201. package/lib/types/tools.d.ts.map +1 -1
  202. package/lib/types/tools.js +4 -20
  203. package/lib/types/tools.js.map +1 -1
  204. package/lib/types/types.d.ts +249 -66
  205. package/lib/types/types.d.ts.map +1 -1
  206. package/lib/types/types.js.map +1 -1
  207. package/lib/types/update-policy.d.ts +51 -0
  208. package/lib/types/update-policy.d.ts.map +1 -0
  209. package/lib/types/update-policy.js +379 -0
  210. package/lib/types/update-policy.js.map +1 -0
  211. package/lib/types/version.d.ts +4 -0
  212. package/lib/types/version.d.ts.map +1 -0
  213. package/lib/types/version.js +44 -0
  214. package/lib/types/version.js.map +1 -0
  215. package/package.json +88 -61
  216. package/lib/types/base64.d.ts +0 -4
  217. package/lib/types/base64.d.ts.map +0 -1
  218. package/lib/types/base64.js +0 -28
  219. package/lib/types/base64.js.map +0 -1
  220. package/lib/types/client/mail-attachment.d.ts +0 -40
  221. package/lib/types/client/mail-attachment.d.ts.map +0 -1
  222. package/lib/types/client/mail-attachment.js +0 -187
  223. package/lib/types/client/mail-attachment.js.map +0 -1
  224. package/lib/types/sent-mail-store.d.ts +0 -27
  225. package/lib/types/sent-mail-store.d.ts.map +0 -1
  226. package/lib/types/sent-mail-store.js +0 -348
  227. package/lib/types/sent-mail-store.js.map +0 -1
@@ -0,0 +1,379 @@
1
+ import { assertVersion, compareVersions } from "./version.js";
2
+ export { compareVersions } from "./version.js";
3
+ /** Tenant-scoped DSH AWiki plugin update policy and verified cache. */
4
+ import { createHash } from 'node:crypto';
5
+ import { mkdirSync, readFileSync, renameSync, rmSync, writeFileSync } from 'node:fs';
6
+ import { dirname, join } from 'node:path';
7
+ import { satisfies } from 'semver';
8
+ import { DSH_AWIKI_MODEL_PROXY_PACKAGE_VERSION, DSH_AWIKI_PACKAGE_VERSION, } from "./package-version.generated.js";
9
+ export const DSH_AWIKI_VERSION = DSH_AWIKI_PACKAGE_VERSION;
10
+ export const DSH_AWIKI_MODEL_PROXY_VERSION = DSH_AWIKI_MODEL_PROXY_PACKAGE_VERSION;
11
+ const PRODUCT = 'dsh-awiki';
12
+ const CHANNEL = 'stable';
13
+ const MAX_POLICY_BYTES = 1024 * 1024;
14
+ /** Load only this tenant's verified cache before its business runtime starts. */
15
+ export function readAwikiUpdatePolicyStatus(options) {
16
+ const origin = new URL(options.tenant.backendBaseUrl).origin;
17
+ const base = {
18
+ tenantId: options.tenant.tenantId, policyOrigin: origin, tenantGeneration: options.generation,
19
+ currentPluginVersion: options.currentPluginVersion ?? DSH_AWIKI_VERSION,
20
+ ...options.currentModelProxyVersion === undefined ? {} : { currentModelProxyVersion: options.currentModelProxyVersion },
21
+ };
22
+ const cached = readCache(policyCachePath(options.stateRoot, options.tenant.tenantId, origin), origin);
23
+ return cached === undefined
24
+ ? { ...base, checkState: 'unchecked', offline: false, usedCache: false, policyUnavailable: true, restricted: false, modelProxyRestricted: false }
25
+ : statusFromPolicy(base, cached.policy, cached.checkedAt, false, true);
26
+ }
27
+ export async function checkAwikiUpdatePolicy(options) {
28
+ const origin = new URL(options.tenant.backendBaseUrl).origin;
29
+ assertPolicyOrigin(origin, options.allowInsecureLoopback === true);
30
+ const cachePath = policyCachePath(options.stateRoot, options.tenant.tenantId, origin);
31
+ const cached = readCache(cachePath, origin);
32
+ const currentPluginVersion = options.currentPluginVersion ?? DSH_AWIKI_VERSION;
33
+ const base = {
34
+ tenantId: options.tenant.tenantId,
35
+ policyOrigin: origin,
36
+ tenantGeneration: options.generation,
37
+ currentPluginVersion,
38
+ ...options.currentModelProxyVersion === undefined
39
+ ? {}
40
+ : { currentModelProxyVersion: options.currentModelProxyVersion },
41
+ };
42
+ const timeout = AbortSignal.timeout(options.timeoutMs ?? 15_000);
43
+ const signal = options.signal === undefined ? timeout : AbortSignal.any([options.signal, timeout]);
44
+ const bounded = async (operation) => {
45
+ signal.throwIfAborted();
46
+ let abort;
47
+ const cancelled = new Promise((_, reject) => {
48
+ abort = () => { reject(signal.reason); };
49
+ signal.addEventListener('abort', abort, { once: true });
50
+ });
51
+ try {
52
+ return await Promise.race([operation, cancelled]);
53
+ }
54
+ finally {
55
+ signal.removeEventListener('abort', abort);
56
+ }
57
+ };
58
+ try {
59
+ signal.throwIfAborted();
60
+ const endpoint = new URL('/user-service/v1/server-info', origin);
61
+ endpoint.searchParams.set('client_platform', 'dsh');
62
+ const response = await bounded((options.fetcher ?? fetch)(endpoint, {
63
+ method: 'GET',
64
+ headers: { accept: 'application/json', 'cache-control': 'no-store' },
65
+ cache: 'no-store',
66
+ redirect: 'error',
67
+ signal,
68
+ }));
69
+ signal.throwIfAborted();
70
+ if (response.status === 404 && options.tenant.kind === 'custom') {
71
+ rmSync(cachePath, { force: true });
72
+ return {
73
+ ...base,
74
+ offline: false,
75
+ usedCache: false,
76
+ policyUnavailable: true,
77
+ checkState: 'unavailable',
78
+ restricted: false,
79
+ modelProxyRestricted: false,
80
+ };
81
+ }
82
+ if (response.redirected
83
+ || (response.url !== '' && new URL(response.url).origin !== origin)) {
84
+ throw new Error('update policy response crossed its tenant origin');
85
+ }
86
+ if (!response.ok)
87
+ throw new Error(`policy status ${response.status}`);
88
+ const bytes = await bounded(readPolicyBody(response));
89
+ signal.throwIfAborted();
90
+ if (bytes.byteLength > MAX_POLICY_BYTES)
91
+ throw new Error('policy response exceeds 1 MiB');
92
+ const policy = decodeServerInfoPolicy(JSON.parse(Buffer.from(bytes).toString('utf8')), origin, cached?.policy.policy_revision);
93
+ if (policy === undefined) {
94
+ rmSync(cachePath, { force: true });
95
+ return {
96
+ ...base,
97
+ offline: false,
98
+ usedCache: false,
99
+ policyUnavailable: true,
100
+ checkState: 'unavailable',
101
+ restricted: false,
102
+ modelProxyRestricted: false,
103
+ checkedAt: new Date().toISOString(),
104
+ };
105
+ }
106
+ if (cached !== undefined && policy.policy_revision < cached.policy.policy_revision) {
107
+ throw new Error('policy revision moved backwards');
108
+ }
109
+ const checkedAt = new Date().toISOString();
110
+ try {
111
+ writeCache(cachePath, { checkedAt, policy });
112
+ }
113
+ catch { /* A cache write failure must not discard verified live requirements. */ }
114
+ return statusFromPolicy(base, policy, checkedAt, false, false);
115
+ }
116
+ catch (error) {
117
+ if (options.signal?.aborted === true)
118
+ throw error;
119
+ if (cached !== undefined) {
120
+ return { ...statusFromPolicy(base, cached.policy, cached.checkedAt, true, true), checkState: 'failed' };
121
+ }
122
+ return {
123
+ ...base,
124
+ offline: true,
125
+ usedCache: false,
126
+ policyUnavailable: true,
127
+ checkState: 'failed',
128
+ restricted: false,
129
+ modelProxyRestricted: false,
130
+ };
131
+ }
132
+ }
133
+ async function readPolicyBody(response) {
134
+ const declaredLength = Number(response.headers.get('content-length'));
135
+ if (Number.isFinite(declaredLength) && declaredLength > MAX_POLICY_BYTES)
136
+ throw new Error('policy response exceeds 1 MiB');
137
+ if (response.body === null)
138
+ throw new Error('empty policy response');
139
+ const reader = response.body.getReader();
140
+ const chunks = [];
141
+ let length = 0;
142
+ try {
143
+ while (true) {
144
+ const { value, done } = await reader.read();
145
+ if (done)
146
+ break;
147
+ length += value.byteLength;
148
+ if (length > MAX_POLICY_BYTES) {
149
+ await reader.cancel();
150
+ throw new Error('policy response exceeds 1 MiB');
151
+ }
152
+ chunks.push(value);
153
+ }
154
+ }
155
+ finally {
156
+ reader.releaseLock();
157
+ }
158
+ return Buffer.concat(chunks, length);
159
+ }
160
+ function statusFromPolicy(base, policy, checkedAt, offline, usedCache) {
161
+ const plugin = policy.packages.plugin;
162
+ const modelProxy = policy.packages.model_proxy;
163
+ const updateAvailable = compareVersions(base.currentPluginVersion, plugin.recommended_version) < 0
164
+ || (modelProxy !== undefined && base.currentModelProxyVersion !== undefined
165
+ && compareVersions(base.currentModelProxyVersion, modelProxy.recommended_version) < 0);
166
+ const command = upgradeCommand(base, plugin, modelProxy);
167
+ return {
168
+ ...base,
169
+ checkState: 'ready',
170
+ updateAvailable,
171
+ ...command === undefined ? {} : { upgradeCommand: command },
172
+ policyRevision: policy.policy_revision,
173
+ recommendedPluginVersion: plugin.recommended_version,
174
+ minimumPluginVersion: plugin.min_supported_version,
175
+ ...modelProxy === undefined ? {} : {
176
+ recommendedModelProxyVersion: modelProxy.recommended_version,
177
+ minimumModelProxyVersion: modelProxy.min_supported_version,
178
+ },
179
+ releaseNotesUrl: policy.release_notes_url,
180
+ ...plugin.installable === false ? {} : { pluginTarget: publicTarget(plugin) },
181
+ ...modelProxy === undefined || modelProxy.installable === false ? {} : { modelProxyTarget: publicTarget(modelProxy) },
182
+ offline,
183
+ usedCache,
184
+ policyUnavailable: false,
185
+ restricted: compareVersions(base.currentPluginVersion, plugin.min_supported_version) < 0,
186
+ modelProxyRestricted: modelProxy !== undefined && base.currentModelProxyVersion !== undefined
187
+ && compareVersions(base.currentModelProxyVersion, modelProxy.min_supported_version) < 0,
188
+ checkedAt,
189
+ };
190
+ }
191
+ /** Exact published targets only; never downgrade a newer installed component. */
192
+ function upgradeCommand(current, plugin, proxy) {
193
+ const pluginUpgrade = compareVersions(current.currentPluginVersion, plugin.recommended_version) < 0;
194
+ const proxyUpgrade = proxy !== undefined && current.currentModelProxyVersion !== undefined
195
+ && compareVersions(current.currentModelProxyVersion, proxy.recommended_version) < 0;
196
+ if ((!pluginUpgrade && !proxyUpgrade) || plugin.installable === false
197
+ || (current.currentModelProxyVersion !== undefined && proxy?.installable === false))
198
+ return undefined;
199
+ // A newer installed proxy's dependency range is unknown to this policy; offer
200
+ // the install guide instead of inventing a potentially incompatible pair.
201
+ if (current.currentModelProxyVersion !== undefined && (proxy === undefined
202
+ || compareVersions(current.currentModelProxyVersion, proxy.recommended_version) > 0))
203
+ return undefined;
204
+ const pluginVersion = pluginUpgrade ? plugin.recommended_version : current.currentPluginVersion;
205
+ if (current.currentModelProxyVersion !== undefined && proxy?.requires_plugin !== undefined && !satisfies(pluginVersion, proxy.requires_plugin, { includePrerelease: true }))
206
+ return undefined;
207
+ const targets = [pluginUpgrade ? `@awiki/dsh-plugin@${pluginVersion}` : undefined,
208
+ proxyUpgrade ? `@awiki/dsh-model-proxy@${proxy.recommended_version}` : undefined].filter(Boolean);
209
+ return `dsh plugin add ${targets.join(' ')}`;
210
+ }
211
+ function publicTarget(value) {
212
+ return {
213
+ name: value.name,
214
+ recommendedVersion: value.recommended_version,
215
+ minimumVersion: value.min_supported_version,
216
+ integrity: value.integrity,
217
+ ...value.repository === undefined ? {} : { repository: value.repository },
218
+ ...value.requires_plugin === undefined ? {} : { requiresPlugin: value.requires_plugin },
219
+ };
220
+ }
221
+ function decodePolicy(value, origin) {
222
+ if (!isRecord(value)
223
+ || value.product !== PRODUCT
224
+ || value.channel !== CHANNEL
225
+ || value.policy_origin !== origin
226
+ || !Number.isSafeInteger(value.policy_revision) || value.policy_revision < 1
227
+ || typeof value.published_at !== 'string' || Number.isNaN(Date.parse(value.published_at))
228
+ || typeof value.release_notes_url !== 'string'
229
+ || !isRecord(value.packages))
230
+ throw new Error('invalid update policy');
231
+ const releaseNotes = value.release_notes_url === '' ? undefined : new URL(value.release_notes_url);
232
+ if (releaseNotes !== undefined)
233
+ assertPolicyOrigin(releaseNotes.origin, origin.startsWith('http://'));
234
+ const plugin = decodePackage(value.packages.plugin, '@awiki/dsh-plugin');
235
+ const modelProxy = value.packages.model_proxy === undefined
236
+ ? undefined
237
+ : decodePackage(value.packages.model_proxy, '@awiki/dsh-model-proxy');
238
+ if (compareVersions(plugin.min_supported_version, plugin.recommended_version) > 0
239
+ || (modelProxy !== undefined
240
+ && compareVersions(modelProxy.min_supported_version, modelProxy.recommended_version) > 0)) {
241
+ throw new Error('minimum version exceeds recommended version');
242
+ }
243
+ return {
244
+ product: PRODUCT,
245
+ channel: CHANNEL,
246
+ policy_origin: origin,
247
+ policy_revision: value.policy_revision,
248
+ published_at: value.published_at,
249
+ release_notes_url: releaseNotes?.toString() ?? '',
250
+ packages: { plugin, ...modelProxy === undefined ? {} : { model_proxy: modelProxy } },
251
+ };
252
+ }
253
+ function decodeServerInfoPolicy(value, origin, minimumRevision = 0) {
254
+ if (!isRecord(value) || value.schema_version !== 1)
255
+ throw new Error('invalid server-info');
256
+ const releases = value.client_versions;
257
+ // Absence of a versioned policy cannot authorize removing a cached minimum.
258
+ // Explicit disabled products are validated below; custom 404 is handled by
259
+ // the transport boundary.
260
+ if (!isRecord(releases)
261
+ || releases.schema_version !== 1
262
+ || releases.channel !== CHANNEL
263
+ || releases.policy_origin !== origin
264
+ || !Number.isSafeInteger(releases.policy_revision) || releases.policy_revision < 1
265
+ || typeof releases.published_at !== 'string' || Number.isNaN(Date.parse(releases.published_at))
266
+ || !isRecord(releases.products)
267
+ || !isRecord(releases.products.dsh))
268
+ throw new Error('invalid client version policy');
269
+ // A stale disabled product must not erase a newer cached compatibility gate.
270
+ if (releases.policy_revision < minimumRevision)
271
+ throw new Error('policy revision moved backwards');
272
+ const product = releases.products.dsh;
273
+ if (product.enabled === false) {
274
+ if (product.compatibility === undefined || product.compatibility === null)
275
+ return undefined;
276
+ if (!isRecord(product.compatibility))
277
+ throw new Error('invalid DSH compatibility');
278
+ const component = (value, name) => {
279
+ if (!isRecord(value))
280
+ throw new Error('invalid DSH component compatibility');
281
+ return { name, recommended_version: value.recommended_version,
282
+ min_supported_version: value.minimum_supported_version, installable: false };
283
+ };
284
+ return decodePolicy({ product: PRODUCT, channel: CHANNEL, policy_origin: origin,
285
+ policy_revision: releases.policy_revision, published_at: releases.published_at,
286
+ release_notes_url: product.release_notes_url ?? '', packages: {
287
+ plugin: component(product.compatibility.plugin, '@awiki/dsh-plugin'),
288
+ ...product.compatibility.model_proxy == null ? {} : {
289
+ model_proxy: component(product.compatibility.model_proxy, '@awiki/dsh-model-proxy'),
290
+ },
291
+ } }, origin);
292
+ }
293
+ if (product.enabled !== true
294
+ || typeof product.release_notes_url !== 'string'
295
+ || !isRecord(product.plugin))
296
+ throw new Error('invalid DSH client version policy');
297
+ const plugin = decodeServerPackage(product.plugin, '@awiki/dsh-plugin');
298
+ const modelProxy = isRecord(product.model_proxy) && product.model_proxy.enabled === true
299
+ ? decodeServerPackage(product.model_proxy, '@awiki/dsh-model-proxy')
300
+ : undefined;
301
+ return decodePolicy({
302
+ product: PRODUCT,
303
+ channel: CHANNEL,
304
+ policy_origin: releases.policy_origin,
305
+ policy_revision: releases.policy_revision,
306
+ published_at: releases.published_at,
307
+ release_notes_url: product.release_notes_url,
308
+ packages: {
309
+ plugin,
310
+ ...modelProxy === undefined ? {} : { model_proxy: modelProxy },
311
+ },
312
+ }, origin);
313
+ }
314
+ function decodeServerPackage(value, expectedName) {
315
+ return decodePackage({
316
+ name: value.package_name,
317
+ recommended_version: value.recommended_version,
318
+ min_supported_version: value.minimum_supported_version,
319
+ integrity: value.integrity,
320
+ repository: value.repository === null ? undefined : value.repository,
321
+ requires_plugin: value.requires_plugin === null ? undefined : value.requires_plugin,
322
+ }, expectedName);
323
+ }
324
+ function decodePackage(value, expectedName) {
325
+ if (!isRecord(value)
326
+ || value.name !== expectedName
327
+ || typeof value.recommended_version !== 'string'
328
+ || typeof value.min_supported_version !== 'string'
329
+ || (value.installable !== false && (typeof value.integrity !== 'string' || !/^sha512-[A-Za-z0-9+/]+={0,2}$/u.test(value.integrity)))
330
+ || (value.repository !== undefined && typeof value.repository !== 'string')
331
+ || (value.requires_plugin !== undefined && typeof value.requires_plugin !== 'string')) {
332
+ throw new Error('invalid update package target');
333
+ }
334
+ assertVersion(value.recommended_version);
335
+ assertVersion(value.min_supported_version);
336
+ return {
337
+ name: value.name,
338
+ recommended_version: value.recommended_version,
339
+ min_supported_version: value.min_supported_version,
340
+ ...value.installable === false ? { installable: false } : { integrity: value.integrity },
341
+ ...value.repository === undefined ? {} : { repository: value.repository },
342
+ ...value.requires_plugin === undefined ? {} : { requires_plugin: value.requires_plugin },
343
+ };
344
+ }
345
+ function policyCachePath(stateRoot, tenantId, origin) {
346
+ const key = createHash('sha256')
347
+ .update(`${tenantId}\n${origin}\n${PRODUCT}\n${CHANNEL}`, 'utf8')
348
+ .digest('hex');
349
+ return join(stateRoot, 'update-policy', `${key}.json`);
350
+ }
351
+ function readCache(path, origin) {
352
+ try {
353
+ const value = JSON.parse(readFileSync(path, 'utf8'));
354
+ if (!isRecord(value) || typeof value.checkedAt !== 'string')
355
+ return undefined;
356
+ return { checkedAt: value.checkedAt, policy: decodePolicy(value.policy, origin) };
357
+ }
358
+ catch {
359
+ return undefined;
360
+ }
361
+ }
362
+ function writeCache(path, value) {
363
+ mkdirSync(dirname(path), { recursive: true, mode: 0o700 });
364
+ const temporary = `${path}.tmp-${process.pid}`;
365
+ writeFileSync(temporary, `${JSON.stringify(value, undefined, 2)}\n`, { mode: 0o600 });
366
+ renameSync(temporary, path);
367
+ }
368
+ function assertPolicyOrigin(origin, allowLoopback) {
369
+ const url = new URL(origin);
370
+ if (url.protocol === 'https:')
371
+ return;
372
+ if (allowLoopback && url.protocol === 'http:' && ['localhost', '127.0.0.1', '[::1]'].includes(url.hostname))
373
+ return;
374
+ throw new Error('update policy origin must use HTTPS');
375
+ }
376
+ function isRecord(value) {
377
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
378
+ }
379
+ //# sourceMappingURL=update-policy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-policy.js","sourceRoot":"","sources":["../../src/update-policy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ /** Shared strict version comparison for update presentation and Host gates. */
2
+ export declare function assertVersion(value: string): void;
3
+ export declare function compareVersions(left: string, right: string): number;
4
+ //# sourceMappingURL=version.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAIjD;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAgCnE"}
@@ -0,0 +1,44 @@
1
+ /** Shared strict version comparison for update presentation and Host gates. */
2
+ export function assertVersion(value) {
3
+ if (value.length > 256 || !/^(?:0|[1-9]\d*)\.(?:0|[1-9]\d*)\.(?:0|[1-9]\d*)(?:-(?:0|[1-9]\d*|\d*[A-Za-z-][0-9A-Za-z-]*)(?:\.(?:0|[1-9]\d*|\d*[A-Za-z-][0-9A-Za-z-]*))*)?(?:\+[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?$/u.test(value)) {
4
+ throw new Error('invalid semantic version');
5
+ }
6
+ }
7
+ export function compareVersions(left, right) {
8
+ assertVersion(left);
9
+ assertVersion(right);
10
+ const parse = (value) => {
11
+ const withoutBuild = value.split('+', 1)[0];
12
+ const separator = withoutBuild.indexOf('-');
13
+ const core = (separator < 0 ? withoutBuild : withoutBuild.slice(0, separator)).split('.').map(BigInt);
14
+ return separator < 0 ? { core } : { core, prerelease: withoutBuild.slice(separator + 1).split('.') };
15
+ };
16
+ const a = parse(left);
17
+ const b = parse(right);
18
+ for (let index = 0; index < 3; index += 1) {
19
+ const difference = a.core[index] - b.core[index];
20
+ if (difference !== 0n)
21
+ return difference < 0n ? -1 : 1;
22
+ }
23
+ if (a.prerelease === undefined || b.prerelease === undefined) {
24
+ return a.prerelease === b.prerelease ? 0 : a.prerelease === undefined ? 1 : -1;
25
+ }
26
+ for (let index = 0; index < Math.min(a.prerelease.length, b.prerelease.length); index += 1) {
27
+ const leftPart = a.prerelease[index];
28
+ const rightPart = b.prerelease[index];
29
+ if (leftPart === rightPart)
30
+ continue;
31
+ const leftNumeric = /^\d+$/u.test(leftPart);
32
+ const rightNumeric = /^\d+$/u.test(rightPart);
33
+ if (leftNumeric !== rightNumeric)
34
+ return leftNumeric ? -1 : 1;
35
+ if (leftNumeric)
36
+ return BigInt(leftPart) < BigInt(rightPart) ? -1 : 1;
37
+ return leftPart < rightPart ? -1 : 1;
38
+ }
39
+ if (a.prerelease.length !== b.prerelease.length) {
40
+ return a.prerelease.length < b.prerelease.length ? -1 : 1;
41
+ }
42
+ return 0;
43
+ }
44
+ //# sourceMappingURL=version.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"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"}