@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,233 @@
1
+ /** Host-only fixed-scope client for Guest Integration management. */
2
+ import { AwikiExternalHttpAuthError, } from "./external-http-auth.js";
3
+ const MAX_REQUEST_BYTES = 64 * 1024;
4
+ const MAX_RESPONSE_BYTES = 1024 * 1024;
5
+ const REQUEST_TIMEOUT_MS = 10_000;
6
+ const INTEGRATION_STATUSES = ['active', 'closed'];
7
+ const TARGET_AVAILABILITIES = [
8
+ 'eligible',
9
+ 'group_not_found',
10
+ 'owner_not_active',
11
+ 'owner_mismatch',
12
+ 'not_open_join',
13
+ 'unsupported_security_profile',
14
+ 'member_send_disabled',
15
+ 'attachments_disabled',
16
+ 'group_full',
17
+ 'validation_unavailable',
18
+ ];
19
+ const OPERATIONS = {
20
+ read: { method: 'GET', path: '/guest/api/v1/management/integration' },
21
+ create: { method: 'POST', path: '/guest/api/v1/management/integration' },
22
+ update: { method: 'PATCH', path: '/guest/api/v1/management/integration' },
23
+ rotate: { method: 'POST', path: '/guest/api/v1/management/integration/rotate-id' },
24
+ close: { method: 'POST', path: '/guest/api/v1/management/integration/close' },
25
+ reopen: { method: 'POST', path: '/guest/api/v1/management/integration/reopen' },
26
+ };
27
+ /** Browser-safe management input translated to the Gateway's snake-case contract. */
28
+ function fields(request) {
29
+ return {
30
+ product_name: request.productName,
31
+ description: request.description,
32
+ contact_enabled: request.contactEnabled,
33
+ contact_description: request.contactDescription,
34
+ group_targets: request.groupTargets.map(target => ({
35
+ ...target.id === undefined ? {} : { id: target.id },
36
+ group_did: target.groupDid,
37
+ description: target.description,
38
+ })),
39
+ };
40
+ }
41
+ function view(raw) {
42
+ if (typeof raw !== 'object' || raw === null)
43
+ throw new TypeError('invalid Integration response');
44
+ const value = raw;
45
+ const owner = value.owner;
46
+ const groups = value.group_targets;
47
+ if (typeof owner !== 'object' || owner === null || !Array.isArray(groups)) {
48
+ throw new TypeError('invalid Integration response');
49
+ }
50
+ return {
51
+ id: requiredString(value.id),
52
+ publicId: nullableString(value.public_id),
53
+ integrationUrl: nullableString(value.integration_url),
54
+ owner: {
55
+ tenantId: requiredString(owner.tenant_id),
56
+ handle: requiredString(owner.handle),
57
+ currentDid: requiredString(owner.current_did),
58
+ displayName: requiredString(owner.display_name),
59
+ },
60
+ productName: requiredString(value.product_name),
61
+ description: requiredString(value.description),
62
+ contactEnabled: requiredBoolean(value.contact_enabled),
63
+ contactDescription: requiredString(value.contact_description),
64
+ groupTargets: groups.map(group => {
65
+ if (typeof group !== 'object' || group === null)
66
+ throw new TypeError('invalid Integration group');
67
+ const target = group;
68
+ return {
69
+ id: requiredString(target.id),
70
+ groupDid: requiredString(target.group_did),
71
+ displayName: requiredString(target.display_name),
72
+ avatarUrl: nullableString(target.avatar_url),
73
+ description: requiredString(target.description),
74
+ availability: requiredEnum(target.availability, TARGET_AVAILABILITIES),
75
+ };
76
+ }),
77
+ status: requiredEnum(value.status, INTEGRATION_STATUSES),
78
+ revision: requiredInteger(value.revision),
79
+ };
80
+ }
81
+ function requiredString(value) {
82
+ if (typeof value !== 'string')
83
+ throw new TypeError('invalid Integration response');
84
+ return value;
85
+ }
86
+ function nullableString(value) {
87
+ if (value === null)
88
+ return null;
89
+ return requiredString(value);
90
+ }
91
+ function requiredBoolean(value) {
92
+ if (typeof value !== 'boolean')
93
+ throw new TypeError('invalid Integration response');
94
+ return value;
95
+ }
96
+ function requiredInteger(value) {
97
+ if (!Number.isSafeInteger(value))
98
+ throw new TypeError('invalid Integration response');
99
+ return value;
100
+ }
101
+ function requiredEnum(value, allowed) {
102
+ if (typeof value !== 'string' || !allowed.includes(value)) {
103
+ throw new TypeError('invalid Integration response');
104
+ }
105
+ return value;
106
+ }
107
+ function failure(status, raw) {
108
+ const body = typeof raw === 'object' && raw !== null ? raw : {};
109
+ const nested = typeof body.error === 'object' && body.error !== null
110
+ ? body.error
111
+ : body;
112
+ const candidate = typeof nested.code === 'string' ? nested.code : '';
113
+ const code = status === 404 ? 'not-found'
114
+ : status === 409 ? 'conflict'
115
+ : status === 400 ? 'invalid-request'
116
+ : status === 401 ? 'unauthorized'
117
+ : status === 403 ? 'forbidden'
118
+ : status === 429 ? 'rate-limited'
119
+ : status >= 500 ? 'unavailable'
120
+ : ['not-found', 'conflict', 'invalid-request', 'forbidden', 'unauthorized', 'rate-limited', 'unavailable'].includes(candidate)
121
+ ? candidate
122
+ : 'remote';
123
+ return { code, message: integrationFailureMessage(code) };
124
+ }
125
+ function integrationFailureMessage(code) {
126
+ switch (code) {
127
+ case 'not-found': return '尚未创建 Integration。';
128
+ case 'conflict': return 'Integration 已在其他位置更新,请重新加载后再试。';
129
+ case 'invalid-request': return 'Integration 信息不完整或格式不正确。';
130
+ case 'forbidden': return '当前 AWiki 身份无权管理这个 Integration。';
131
+ case 'unauthorized': return '请先在 AWiki 正式版中登录。';
132
+ case 'rate-limited': return '操作过于频繁,请稍后重试。';
133
+ case 'unavailable': return '临时消息服务暂时不可用。';
134
+ case 'network': return '无法连接临时消息服务。';
135
+ default: return '临时消息服务返回了无法识别的结果。';
136
+ }
137
+ }
138
+ async function readBounded(response) {
139
+ const reader = response.body?.getReader();
140
+ if (reader === undefined)
141
+ return null;
142
+ const chunks = [];
143
+ let size = 0;
144
+ try {
145
+ while (true) {
146
+ const result = await reader.read();
147
+ if (result.done)
148
+ break;
149
+ size += result.value.byteLength;
150
+ if (size > MAX_RESPONSE_BYTES)
151
+ throw new TypeError('Integration response too large');
152
+ chunks.push(result.value);
153
+ }
154
+ }
155
+ finally {
156
+ reader.releaseLock();
157
+ }
158
+ const bytes = new Uint8Array(size);
159
+ let offset = 0;
160
+ for (const chunk of chunks) {
161
+ bytes.set(chunk, offset);
162
+ offset += chunk.byteLength;
163
+ }
164
+ if (bytes.length === 0)
165
+ return null;
166
+ return JSON.parse(new TextDecoder().decode(bytes));
167
+ }
168
+ /** Fixed-origin client; callers cannot control path, method, headers, or transport. */
169
+ export class AwikiIntegrationClient {
170
+ origin;
171
+ auth;
172
+ constructor(origin, auth) {
173
+ this.origin = origin;
174
+ this.auth = auth;
175
+ }
176
+ read() {
177
+ return this.execute('read');
178
+ }
179
+ create(request) {
180
+ return this.execute('create', fields(request), request.idempotencyKey);
181
+ }
182
+ update(request) {
183
+ return this.execute('update', { expected_revision: request.expectedRevision, ...fields(request) }, request.idempotencyKey);
184
+ }
185
+ rotate(request) {
186
+ return this.execute('rotate', { expected_revision: request.expectedRevision }, request.idempotencyKey);
187
+ }
188
+ close(request) {
189
+ return this.execute('close', { expected_revision: request.expectedRevision }, request.idempotencyKey);
190
+ }
191
+ reopen(request) {
192
+ return this.execute('reopen', { expected_revision: request.expectedRevision, ...fields(request) }, request.idempotencyKey);
193
+ }
194
+ async execute(operation, body, idempotencyKey) {
195
+ const spec = OPERATIONS[operation];
196
+ const encoded = body === undefined ? undefined : JSON.stringify(body);
197
+ if (encoded !== undefined && Buffer.byteLength(encoded, 'utf8') > MAX_REQUEST_BYTES) {
198
+ return { ok: false, error: { code: 'invalid-request', message: integrationFailureMessage('invalid-request') } };
199
+ }
200
+ const headers = new Headers({ accept: 'application/json' });
201
+ if (encoded !== undefined)
202
+ headers.set('content-type', 'application/json');
203
+ if (idempotencyKey !== undefined)
204
+ headers.set('idempotency-key', idempotencyKey);
205
+ const abort = new AbortController();
206
+ const timeout = setTimeout(() => { abort.abort(); }, REQUEST_TIMEOUT_MS);
207
+ try {
208
+ const request = new Request(new URL(spec.path, this.origin), {
209
+ method: spec.method,
210
+ headers,
211
+ ...encoded === undefined ? {} : { body: encoded },
212
+ redirect: 'error',
213
+ signal: abort.signal,
214
+ });
215
+ const response = await this.auth.dispatch(request, signed => fetch(signed));
216
+ const raw = await readBounded(response);
217
+ if (!response.ok)
218
+ return { ok: false, error: failure(response.status, raw) };
219
+ return { ok: true, value: view(raw) };
220
+ }
221
+ catch (error) {
222
+ if (error instanceof AwikiExternalHttpAuthError
223
+ && (error.code === 'not-registered' || error.code === 'signed-out')) {
224
+ return { ok: false, error: { code: 'unauthorized', message: integrationFailureMessage('unauthorized') } };
225
+ }
226
+ return { ok: false, error: { code: 'network', message: integrationFailureMessage('network') } };
227
+ }
228
+ finally {
229
+ clearTimeout(timeout);
230
+ }
231
+ }
232
+ }
233
+ //# sourceMappingURL=integration-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"integration-client.js","sourceRoot":"","sources":["../../src/integration-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ /** Exact cleanup for the removed Host-local sent-mail authority. */
2
+ /** Clear only the legacy cache directory during the existing destructive local-data flow. */
3
+ export declare function clearLegacySentMailCache(stateRoot: string): Promise<void>;
4
+ //# sourceMappingURL=legacy-sent-mail-cache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"legacy-sent-mail-cache.d.ts","sourceRoot":"","sources":["../../src/legacy-sent-mail-cache.ts"],"names":[],"mappings":"AAAA,oEAAoE;AASpE,6FAA6F;AAC7F,wBAAsB,wBAAwB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAiB/E"}
@@ -0,0 +1,29 @@
1
+ /** Exact cleanup for the removed Host-local sent-mail authority. */
2
+ import { lstat, rm, unlink } from 'node:fs/promises';
3
+ import { join } from 'node:path';
4
+ function isMissing(error) {
5
+ return typeof error === 'object' && error !== null && error.code === 'ENOENT';
6
+ }
7
+ /** Clear only the legacy cache directory during the existing destructive local-data flow. */
8
+ export async function clearLegacySentMailCache(stateRoot) {
9
+ const hostDirectory = join(stateRoot, '.host');
10
+ const directory = join(hostDirectory, 'sent-mail-v1');
11
+ try {
12
+ const host = await lstat(hostDirectory);
13
+ if (!host.isDirectory() || host.isSymbolicLink()) {
14
+ throw new TypeError('awiki: legacy sent-mail cache parent is invalid');
15
+ }
16
+ const target = await lstat(directory);
17
+ if (target.isDirectory() && !target.isSymbolicLink()) {
18
+ await rm(directory, { recursive: true, force: true });
19
+ }
20
+ else {
21
+ await unlink(directory);
22
+ }
23
+ }
24
+ catch (error) {
25
+ if (!isMissing(error))
26
+ throw error;
27
+ }
28
+ }
29
+ //# sourceMappingURL=legacy-sent-mail-cache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"legacy-sent-mail-cache.js","sourceRoot":"","sources":["../../src/legacy-sent-mail-cache.ts"],"names":[],"mappings":"AAAA,oEAAoE;AAEpE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAEhC,SAAS,SAAS,CAAC,KAAc;IAC/B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAK,KAAqC,CAAC,IAAI,KAAK,QAAQ,CAAA;AAChH,CAAC;AAED,6FAA6F;AAC7F,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAAC,SAAiB;IAC9D,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;IAC9C,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,EAAE,cAAc,CAAC,CAAA;IACrD,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,aAAa,CAAC,CAAA;QACvC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC;YACjD,MAAM,IAAI,SAAS,CAAC,iDAAiD,CAAC,CAAA;QACxE,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,SAAS,CAAC,CAAA;QACrC,IAAI,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,EAAE,CAAC;YACrD,MAAM,EAAE,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;QACvD,CAAC;aAAM,CAAC;YACN,MAAM,MAAM,CAAC,SAAS,CAAC,CAAA;QACzB,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;YAAE,MAAM,KAAK,CAAA;IACpC,CAAC;AACH,CAAC"}
@@ -6,15 +6,17 @@ export interface AwikiListenerConversationState {
6
6
  }
7
7
  /** Host-private listener state. Message content and Agent output are never stored here. */
8
8
  export interface AwikiListenerState {
9
- readonly version: 1;
9
+ readonly version: 2;
10
+ readonly identityScopeHash: string;
10
11
  readonly conversations: Record<string, AwikiListenerConversationState>;
11
12
  }
12
13
  /** Atomic, owner-only persistence for conversation-to-DSH-session routes. */
13
14
  export declare class AwikiListenerStateStore {
14
15
  private readonly hostDirectory;
15
16
  private readonly statePath;
16
- constructor(stateRoot: string);
17
- /** Load the current state or return an empty v1 document on first use. */
17
+ readonly identityScopeHash: string;
18
+ constructor(stateRoot: string, identityScope: string);
19
+ /** Load the current identity scope or reset unscoped v1 state on first use. */
18
20
  load(): Promise<AwikiListenerState>;
19
21
  /** Replace the state atomically without ever writing message or Agent text. */
20
22
  save(state: AwikiListenerState): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"listener-state.d.ts","sourceRoot":"","sources":["../../src/listener-state.ts"],"names":[],"mappings":"AAQA,0EAA0E;AAC1E,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,sBAAsB,CAAC,EAAE,MAAM,CAAA;CACzC;AAED,2FAA2F;AAC3F,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAA;IACnB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,8BAA8B,CAAC,CAAA;CACvE;AAoDD,6EAA6E;AAC7E,qBAAa,uBAAuB;IAClC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAQ;IACtC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAQ;gBAEf,SAAS,EAAE,MAAM;IAKpC,0EAA0E;IAC7D,IAAI,IAAI,OAAO,CAAC,kBAAkB,CAAC;IAmBhD,+EAA+E;IAClE,IAAI,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;YAsB7C,uBAAuB;CAYtC"}
1
+ {"version":3,"file":"listener-state.d.ts","sourceRoot":"","sources":["../../src/listener-state.ts"],"names":[],"mappings":"AAQA,0EAA0E;AAC1E,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,sBAAsB,CAAC,EAAE,MAAM,CAAA;CACzC;AAED,2FAA2F;AAC3F,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAA;IACnB,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAA;IAClC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,8BAA8B,CAAC,CAAA;CACvE;AA4DD,6EAA6E;AAC7E,qBAAa,uBAAuB;IAClC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAQ;IACtC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAQ;IAClC,SAAgB,iBAAiB,EAAE,MAAM,CAAA;gBAEtB,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM;IAS3D,+EAA+E;IAClE,IAAI,IAAI,OAAO,CAAC,kBAAkB,CAAC;IAmBhD,+EAA+E;IAClE,IAAI,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;YAsB7C,uBAAuB;CAYtC"}
@@ -1,11 +1,11 @@
1
1
  import { chmod, lstat, mkdir, readFile, rename, unlink, writeFile } from 'node:fs/promises';
2
- import { randomUUID } from 'node:crypto';
2
+ import { createHash, randomUUID } from 'node:crypto';
3
3
  import { join } from 'node:path';
4
- const STATE_VERSION = 1;
4
+ const STATE_VERSION = 2;
5
5
  const MAX_STATE_BYTES = 1024 * 1024;
6
6
  const MAX_CONVERSATIONS = 1_000;
7
- function emptyState() {
8
- return { version: STATE_VERSION, conversations: {} };
7
+ function emptyState(identityScopeHash) {
8
+ return { version: STATE_VERSION, identityScopeHash, conversations: {} };
9
9
  }
10
10
  function isRecord(value) {
11
11
  return typeof value === 'object' && value !== null && !Array.isArray(value);
@@ -17,8 +17,18 @@ function boundedString(value, field) {
17
17
  return value;
18
18
  }
19
19
  /** Validate and detach the complete state file before the listener trusts any route. */
20
- function parseState(value) {
21
- if (!isRecord(value) || value.version !== STATE_VERSION || !isRecord(value.conversations)) {
20
+ function parseState(value, identityScopeHash) {
21
+ if (isRecord(value) && value.version === 1)
22
+ return emptyState(identityScopeHash);
23
+ if (isRecord(value)
24
+ && value.version === STATE_VERSION
25
+ && typeof value.identityScopeHash === 'string'
26
+ && value.identityScopeHash !== identityScopeHash)
27
+ return emptyState(identityScopeHash);
28
+ if (!isRecord(value)
29
+ || value.version !== STATE_VERSION
30
+ || value.identityScopeHash !== identityScopeHash
31
+ || !isRecord(value.conversations)) {
22
32
  throw new TypeError('awiki: listener state is invalid');
23
33
  }
24
34
  const entries = Object.entries(value.conversations);
@@ -46,7 +56,7 @@ function parseState(value) {
46
56
  ...(lastProcessedMessageId === undefined ? {} : { lastProcessedMessageId }),
47
57
  };
48
58
  }
49
- return { version: STATE_VERSION, conversations };
59
+ return { version: STATE_VERSION, identityScopeHash, conversations };
50
60
  }
51
61
  function isMissing(error) {
52
62
  return typeof error === 'object' && error !== null && 'code' in error && error.code === 'ENOENT';
@@ -55,14 +65,19 @@ function isMissing(error) {
55
65
  export class AwikiListenerStateStore {
56
66
  hostDirectory;
57
67
  statePath;
58
- constructor(stateRoot) {
68
+ identityScopeHash;
69
+ constructor(stateRoot, identityScope) {
70
+ if (identityScope.length === 0 || identityScope.length > 2_048) {
71
+ throw new TypeError('awiki: listener identity scope is invalid');
72
+ }
73
+ this.identityScopeHash = createHash('sha256').update(identityScope).digest('hex');
59
74
  this.hostDirectory = join(stateRoot, '.host');
60
75
  this.statePath = join(this.hostDirectory, 'listener-state.json');
61
76
  }
62
- /** Load the current state or return an empty v1 document on first use. */
77
+ /** Load the current identity scope or reset unscoped v1 state on first use. */
63
78
  async load() {
64
79
  if (!(await this.hasPrivateHostDirectory()))
65
- return emptyState();
80
+ return emptyState(this.identityScopeHash);
66
81
  try {
67
82
  const metadata = await lstat(this.statePath);
68
83
  if (!metadata.isFile() || metadata.isSymbolicLink() || metadata.size > MAX_STATE_BYTES) {
@@ -72,11 +87,11 @@ export class AwikiListenerStateStore {
72
87
  if (Buffer.byteLength(text, 'utf8') > MAX_STATE_BYTES) {
73
88
  throw new TypeError('awiki: listener state file is invalid');
74
89
  }
75
- return parseState(JSON.parse(text));
90
+ return parseState(JSON.parse(text), this.identityScopeHash);
76
91
  }
77
92
  catch (error) {
78
93
  if (isMissing(error))
79
- return emptyState();
94
+ return emptyState(this.identityScopeHash);
80
95
  if (error instanceof SyntaxError)
81
96
  throw new TypeError('awiki: listener state file is invalid');
82
97
  throw error;
@@ -84,7 +99,7 @@ export class AwikiListenerStateStore {
84
99
  }
85
100
  /** Replace the state atomically without ever writing message or Agent text. */
86
101
  async save(state) {
87
- const snapshot = parseState(state);
102
+ const snapshot = parseState(state, this.identityScopeHash);
88
103
  const text = `${JSON.stringify(snapshot)}\n`;
89
104
  if (Buffer.byteLength(text, 'utf8') > MAX_STATE_BYTES) {
90
105
  throw new TypeError('awiki: listener state file is too large');
@@ -1 +1 @@
1
- {"version":3,"file":"listener-state.js","sourceRoot":"","sources":["../../src/listener-state.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"listener-state.js","sourceRoot":"","sources":["../../src/listener-state.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import type { Context, Logger } from '@deepseek-ai/cordis';
2
2
  import { type SessionEvent } from '@deepseek-ai/dsh-session';
3
- import type { AwikiSdkListenerClient, AwikiSdkListenerSyncReason } from './provider-api.ts';
3
+ import type { AwikiSdkAgentInboxClient } from './provider-api.ts';
4
4
  import { AwikiListenerStateStore } from './listener-state.ts';
5
5
  /** One opened DSH session returned by a replaceable runtime adapter. */
6
6
  export interface AwikiListenerAgentSession {
@@ -19,13 +19,9 @@ export interface AwikiListenerConfig {
19
19
  readonly workspacePath: string;
20
20
  readonly stateRoot: string;
21
21
  }
22
- /** One observable terminal result for the exact listener lifecycle. */
23
- export type AwikiListenerTermination = {
24
- readonly kind: 'stopped';
25
- } | {
26
- readonly kind: 'failed';
27
- readonly error: unknown;
28
- };
22
+ export interface AwikiAgentConsumerConfig extends AwikiListenerConfig {
23
+ readonly identityScope: string;
24
+ }
29
25
  /** Fold only the turn that claimed one exact submitted message. */
30
26
  export declare function finalAssistantText(events: readonly SessionEvent[], messageId: string): string | undefined;
31
27
  /** Production adapter around the registered Workspace and official Agent lifecycle. */
@@ -42,7 +38,7 @@ export declare class DshAwikiListenerAgentRuntime implements AwikiListenerAgentR
42
38
  private currentSelection;
43
39
  private prompt;
44
40
  }
45
- /** Reconcile authorized Direct text from Core history whenever realtime schedules synchronization. */
41
+ /** Consume authorized Direct text only after the identity supervisor commits synchronization. */
46
42
  export declare class AwikiAgentListener {
47
43
  private readonly awiki;
48
44
  private readonly agents;
@@ -56,33 +52,14 @@ export declare class AwikiAgentListener {
56
52
  private syncMutation;
57
53
  private readonly scheduledMessageIds;
58
54
  private readonly conversationQueues;
59
- private lifecycle;
60
- private started;
61
- private resolveStarted;
62
- private rejectStarted;
63
- private lifecycleGeneration;
64
- private streamGeneration;
65
- private activeRealtime;
66
55
  private stopped;
67
- private readonly termination;
68
- private resolveTermination;
69
- private terminationSettled;
70
- constructor(awiki: AwikiSdkListenerClient, agents: AwikiListenerAgentRuntime, config: AwikiListenerConfig, logger?: Logger, store?: AwikiListenerStateStore);
71
- /** Start canonical startup sync followed by the single Core-owned realtime stream. */
72
- start(): Promise<void>;
73
- /** Resolve once with either orderly shutdown or the exact terminal lifecycle failure. */
74
- whenTerminated(): Promise<AwikiListenerTermination>;
75
- /** Deterministic canonical sync plus committed-history reconciliation for tests and recovery. */
76
- synchronizeOnce(reason: AwikiSdkListenerSyncReason): Promise<void>;
56
+ constructor(awiki: AwikiSdkAgentInboxClient, agents: AwikiListenerAgentRuntime, config: AwikiAgentConsumerConfig, logger?: Logger, store?: AwikiListenerStateStore);
57
+ /** Reconcile only committed history; this consumer cannot start WSS or advance sync. */
58
+ reconcileOnce(): Promise<void>;
77
59
  /** Wait until every message currently queued for a test or orderly shutdown settles. */
78
60
  whenIdle(): Promise<void>;
79
- /** Stop realtime first, fence late events, drain messages, then release listener-owned Agents. */
61
+ /** Fence late work, drain committed messages, then release listener-owned Agents. */
80
62
  dispose(): Promise<void>;
81
- private finishTermination;
82
- private currentLifecycle;
83
- private run;
84
- private openRealtime;
85
- private synchronize;
86
63
  private enqueueSync;
87
64
  private reconcileCommittedHistory;
88
65
  private listConversations;
@@ -1 +1 @@
1
- {"version":3,"file":"listener.d.ts","sourceRoot":"","sources":["../../src/listener.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"listener.d.ts","sourceRoot":"","sources":["../../src/listener.ts"],"names":[],"mappings":"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"}