@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.
- package/README.md +112 -73
- package/README.zh.md +91 -62
- package/THIRD_PARTY_NOTICES.md +1 -1
- package/cordis.patch.yml +6 -5
- package/lib/builtin-tenants.json +22 -0
- package/lib/builtin-tenants.sha256 +1 -0
- package/lib/client.js +9281 -2379
- package/lib/client.js.map +1 -1
- package/lib/index.js +3553 -1138
- package/lib/model-proxy-contract.js +19 -11
- package/lib/provider.js +73 -17
- package/lib/{sdk-adapter--trNlr-T.mjs → sdk-adapter-CYcJH7sM.mjs} +374 -101
- package/lib/typert.host.js +1595 -168
- package/lib/typert.remote-client.d.ts +43 -7
- package/lib/typert.remote-client.d.ts.map +1 -1
- package/lib/typert.remote-client.js +1595 -168
- package/lib/types/builtin-tenant-config.d.ts +19 -0
- package/lib/types/builtin-tenant-config.d.ts.map +1 -0
- package/lib/types/builtin-tenant-config.js +57 -0
- package/lib/types/builtin-tenant-config.js.map +1 -0
- package/lib/types/client/AwikiDeviceJoinReminder.d.ts +15 -0
- package/lib/types/client/AwikiDeviceJoinReminder.d.ts.map +1 -0
- package/lib/types/client/AwikiDeviceJoinReminder.js +74 -0
- package/lib/types/client/AwikiDeviceJoinReminder.js.map +1 -0
- package/lib/types/client/AwikiDevices.d.ts +33 -0
- package/lib/types/client/AwikiDevices.d.ts.map +1 -0
- package/lib/types/client/AwikiDevices.js +141 -0
- package/lib/types/client/AwikiDevices.js.map +1 -0
- package/lib/types/client/AwikiGroupDetails.d.ts.map +1 -1
- package/lib/types/client/AwikiGroupDetails.js +16 -13
- package/lib/types/client/AwikiGroupDetails.js.map +1 -1
- package/lib/types/client/AwikiIdentityAccess.d.ts +17 -8
- package/lib/types/client/AwikiIdentityAccess.d.ts.map +1 -1
- package/lib/types/client/AwikiIdentityAccess.js +269 -37
- package/lib/types/client/AwikiIdentityAccess.js.map +1 -1
- package/lib/types/client/AwikiIntegrationSettings.d.ts +21 -0
- package/lib/types/client/AwikiIntegrationSettings.d.ts.map +1 -0
- package/lib/types/client/AwikiIntegrationSettings.js +105 -0
- package/lib/types/client/AwikiIntegrationSettings.js.map +1 -0
- package/lib/types/client/AwikiMail.d.ts +1 -1
- package/lib/types/client/AwikiMail.d.ts.map +1 -1
- package/lib/types/client/AwikiMail.js +17 -137
- package/lib/types/client/AwikiMail.js.map +1 -1
- package/lib/types/client/AwikiOverlay.d.ts +0 -1
- package/lib/types/client/AwikiOverlay.d.ts.map +1 -1
- package/lib/types/client/AwikiOverlay.js +26 -28
- package/lib/types/client/AwikiOverlay.js.map +1 -1
- package/lib/types/client/AwikiProfileCard.d.ts.map +1 -1
- package/lib/types/client/AwikiProfileCard.js +17 -18
- package/lib/types/client/AwikiProfileCard.js.map +1 -1
- package/lib/types/client/AwikiRecoveryForm.d.ts +6 -1
- package/lib/types/client/AwikiRecoveryForm.d.ts.map +1 -1
- package/lib/types/client/AwikiRecoveryForm.js +74 -30
- package/lib/types/client/AwikiRecoveryForm.js.map +1 -1
- package/lib/types/client/AwikiSettingsSection.d.ts +28 -13
- package/lib/types/client/AwikiSettingsSection.d.ts.map +1 -1
- package/lib/types/client/AwikiSettingsSection.js +93 -61
- package/lib/types/client/AwikiSettingsSection.js.map +1 -1
- package/lib/types/client/AwikiUpdates.d.ts +10 -0
- package/lib/types/client/AwikiUpdates.d.ts.map +1 -0
- package/lib/types/client/AwikiUpdates.js +57 -0
- package/lib/types/client/AwikiUpdates.js.map +1 -0
- package/lib/types/client/awiki-client-bridge.d.ts +2 -2
- package/lib/types/client/awiki-client-bridge.d.ts.map +1 -1
- package/lib/types/client/awiki-client-bridge.js +4 -1
- package/lib/types/client/awiki-client-bridge.js.map +1 -1
- package/lib/types/client/controller.d.ts +92 -44
- package/lib/types/client/controller.d.ts.map +1 -1
- package/lib/types/client/controller.js +761 -334
- package/lib/types/client/controller.js.map +1 -1
- package/lib/types/client/drafts.d.ts +31 -0
- package/lib/types/client/drafts.d.ts.map +1 -0
- package/lib/types/client/drafts.js +94 -0
- package/lib/types/client/drafts.js.map +1 -0
- package/lib/types/client/image-cache.d.ts +2 -2
- package/lib/types/client/image-cache.d.ts.map +1 -1
- package/lib/types/client/image-cache.js +15 -2
- package/lib/types/client/image-cache.js.map +1 -1
- package/lib/types/client/index.d.ts +1 -1
- package/lib/types/client/index.d.ts.map +1 -1
- package/lib/types/client/index.js +64 -19
- package/lib/types/client/index.js.map +1 -1
- package/lib/types/client/integration-operation.d.ts +9 -0
- package/lib/types/client/integration-operation.d.ts.map +1 -0
- package/lib/types/client/integration-operation.js +54 -0
- package/lib/types/client/integration-operation.js.map +1 -0
- package/lib/types/client/mail-list-cache.d.ts +2 -0
- package/lib/types/client/mail-list-cache.d.ts.map +1 -1
- package/lib/types/client/mail-list-cache.js +18 -0
- package/lib/types/client/mail-list-cache.js.map +1 -1
- package/lib/types/client/otp-cooldown.d.ts +7 -0
- package/lib/types/client/otp-cooldown.d.ts.map +1 -0
- package/lib/types/client/otp-cooldown.js +29 -0
- package/lib/types/client/otp-cooldown.js.map +1 -0
- package/lib/types/client/settings-controller.d.ts +38 -2
- package/lib/types/client/settings-controller.d.ts.map +1 -1
- package/lib/types/client/settings-controller.js +206 -10
- package/lib/types/client/settings-controller.js.map +1 -1
- package/lib/types/client/settings-locales.d.ts +1 -1
- package/lib/types/client/settings-locales.d.ts.map +1 -1
- package/lib/types/client/settings-locales.js +192 -14
- package/lib/types/client/settings-locales.js.map +1 -1
- package/lib/types/client/slots.d.ts +21 -10
- package/lib/types/client/slots.d.ts.map +1 -1
- package/lib/types/client/slots.js +0 -1
- package/lib/types/client/slots.js.map +1 -1
- package/lib/types/client/store.d.ts +1 -1
- package/lib/types/client/store.d.ts.map +1 -1
- package/lib/types/client/store.js +1 -1
- package/lib/types/client/store.js.map +1 -1
- package/lib/types/conversation-preferences.d.ts.map +1 -1
- package/lib/types/conversation-preferences.js +0 -17
- package/lib/types/conversation-preferences.js.map +1 -1
- package/lib/types/desktop-distribution.d.ts +25 -0
- package/lib/types/desktop-distribution.d.ts.map +1 -0
- package/lib/types/desktop-distribution.js +57 -0
- package/lib/types/desktop-distribution.js.map +1 -0
- package/lib/types/domain.d.ts +1 -1
- package/lib/types/domain.d.ts.map +1 -1
- package/lib/types/domain.js +2 -1
- package/lib/types/domain.js.map +1 -1
- package/lib/types/index.d.ts +165 -41
- package/lib/types/index.d.ts.map +1 -1
- package/lib/types/index.js +1594 -535
- package/lib/types/index.js.map +1 -1
- package/lib/types/integration-client.d.ts +17 -0
- package/lib/types/integration-client.d.ts.map +1 -0
- package/lib/types/integration-client.js +233 -0
- package/lib/types/integration-client.js.map +1 -0
- package/lib/types/legacy-sent-mail-cache.d.ts +4 -0
- package/lib/types/legacy-sent-mail-cache.d.ts.map +1 -0
- package/lib/types/legacy-sent-mail-cache.js +29 -0
- package/lib/types/legacy-sent-mail-cache.js.map +1 -0
- package/lib/types/listener-state.d.ts +5 -3
- package/lib/types/listener-state.d.ts.map +1 -1
- package/lib/types/listener-state.js +28 -13
- package/lib/types/listener-state.js.map +1 -1
- package/lib/types/listener.d.ts +9 -32
- package/lib/types/listener.d.ts.map +1 -1
- package/lib/types/listener.js +13 -128
- package/lib/types/listener.js.map +1 -1
- package/lib/types/mail-list-client.d.ts +12 -0
- package/lib/types/mail-list-client.d.ts.map +1 -0
- package/lib/types/mail-list-client.js +254 -0
- package/lib/types/mail-list-client.js.map +1 -0
- package/lib/types/mail-recovery-observability.d.ts +8 -0
- package/lib/types/mail-recovery-observability.d.ts.map +1 -0
- package/lib/types/mail-recovery-observability.js +119 -0
- package/lib/types/mail-recovery-observability.js.map +1 -0
- package/lib/types/mail.d.ts +2 -28
- package/lib/types/mail.d.ts.map +1 -1
- package/lib/types/mail.js +2 -79
- package/lib/types/mail.js.map +1 -1
- package/lib/types/model-proxy-contract.d.ts +8 -8
- package/lib/types/model-proxy-contract.d.ts.map +1 -1
- package/lib/types/model-proxy-contract.js +15 -8
- package/lib/types/model-proxy-contract.js.map +1 -1
- package/lib/types/package-version.generated.d.ts +4 -0
- package/lib/types/package-version.generated.d.ts.map +1 -0
- package/lib/types/package-version.generated.js +4 -0
- package/lib/types/package-version.generated.js.map +1 -0
- package/lib/types/profile-state.d.ts +2 -13
- package/lib/types/profile-state.d.ts.map +1 -1
- package/lib/types/profile-state.js +3 -20
- package/lib/types/profile-state.js.map +1 -1
- package/lib/types/provider-api.d.ts +134 -43
- package/lib/types/provider-api.d.ts.map +1 -1
- package/lib/types/provider.d.ts +8 -2
- package/lib/types/provider.d.ts.map +1 -1
- package/lib/types/provider.js +76 -16
- package/lib/types/provider.js.map +1 -1
- package/lib/types/realtime-supervisor.d.ts +60 -0
- package/lib/types/realtime-supervisor.d.ts.map +1 -0
- package/lib/types/realtime-supervisor.js +255 -0
- package/lib/types/realtime-supervisor.js.map +1 -0
- package/lib/types/registration-policy.d.ts +7 -0
- package/lib/types/registration-policy.d.ts.map +1 -0
- package/lib/types/registration-policy.js +21 -0
- package/lib/types/registration-policy.js.map +1 -0
- package/lib/types/sdk-adapter.d.ts +62 -11
- package/lib/types/sdk-adapter.d.ts.map +1 -1
- package/lib/types/sdk-adapter.js +285 -123
- package/lib/types/sdk-adapter.js.map +1 -1
- package/lib/types/settings-rpc-contract.d.ts +63 -5
- package/lib/types/settings-rpc-contract.d.ts.map +1 -1
- package/lib/types/settings-rpc-contract.js +108 -5
- package/lib/types/settings-rpc-contract.js.map +1 -1
- package/lib/types/settings-rpc.d.ts +14 -1
- package/lib/types/settings-rpc.d.ts.map +1 -1
- package/lib/types/settings-rpc.js +132 -3
- package/lib/types/settings-rpc.js.map +1 -1
- package/lib/types/settings-transport.d.ts +7 -0
- package/lib/types/settings-transport.d.ts.map +1 -0
- package/lib/types/settings-transport.js +52 -0
- package/lib/types/settings-transport.js.map +1 -0
- package/lib/types/tenant-registry.d.ts +74 -0
- package/lib/types/tenant-registry.d.ts.map +1 -0
- package/lib/types/tenant-registry.js +440 -0
- package/lib/types/tenant-registry.js.map +1 -0
- package/lib/types/tools.d.ts +1 -1
- package/lib/types/tools.d.ts.map +1 -1
- package/lib/types/tools.js +4 -20
- package/lib/types/tools.js.map +1 -1
- package/lib/types/types.d.ts +249 -66
- package/lib/types/types.d.ts.map +1 -1
- package/lib/types/types.js.map +1 -1
- package/lib/types/update-policy.d.ts +51 -0
- package/lib/types/update-policy.d.ts.map +1 -0
- package/lib/types/update-policy.js +379 -0
- package/lib/types/update-policy.js.map +1 -0
- package/lib/types/version.d.ts +4 -0
- package/lib/types/version.d.ts.map +1 -0
- package/lib/types/version.js +44 -0
- package/lib/types/version.js.map +1 -0
- package/package.json +88 -61
- package/lib/types/base64.d.ts +0 -4
- package/lib/types/base64.d.ts.map +0 -1
- package/lib/types/base64.js +0 -28
- package/lib/types/base64.js.map +0 -1
- package/lib/types/client/mail-attachment.d.ts +0 -40
- package/lib/types/client/mail-attachment.d.ts.map +0 -1
- package/lib/types/client/mail-attachment.js +0 -187
- package/lib/types/client/mail-attachment.js.map +0 -1
- package/lib/types/sent-mail-store.d.ts +0 -27
- package/lib/types/sent-mail-store.d.ts.map +0 -1
- package/lib/types/sent-mail-store.js +0 -348
- 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:
|
|
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
|
-
|
|
17
|
-
|
|
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;
|
|
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 =
|
|
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 (
|
|
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
|
-
|
|
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
|
|
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":"AAAA,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAC3F,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"listener-state.js","sourceRoot":"","sources":["../../src/listener-state.ts"],"names":[],"mappings":"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"}
|
package/lib/types/listener.d.ts
CHANGED
|
@@ -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 {
|
|
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
|
-
|
|
23
|
-
|
|
24
|
-
|
|
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
|
-
/**
|
|
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
|
-
|
|
68
|
-
|
|
69
|
-
|
|
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
|
-
/**
|
|
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":"
|
|
1
|
+
{"version":3,"file":"listener.d.ts","sourceRoot":"","sources":["../../src/listener.ts"],"names":[],"mappings":"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"}
|