evolcore 0.0.35 → 0.0.36
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/CHANGELOG.md +31 -0
- package/README.md +6 -0
- package/bin/install-codex-managed-hooks.mjs +20 -3
- package/dist/agents/baseagent-availability.js +1 -1
- package/dist/agents/baseagent.js +88 -0
- package/dist/agents/claude-runner.js +59 -12
- package/dist/agents/codex/app-server-client.js +18 -1
- package/dist/agents/codex-runner.js +262 -21
- package/dist/agents/ecagent-runner.js +47 -11
- package/dist/agents/gemini-runner.js +36 -12
- package/dist/aun/aid/client.js +4 -3
- package/dist/aun/aid/control-aid.js +270 -8
- package/dist/aun/aid/identity.js +6 -3
- package/dist/aun/aid/ownership-operation.js +58 -0
- package/dist/aun/aid/store.js +1 -0
- package/dist/aun/group/fs-download.js +67 -2
- package/dist/aun/group/history.js +20 -5
- package/dist/aun/group/operations.js +8 -2
- package/dist/aun/menu/client.js +39 -2
- package/dist/aun/menu/transport.js +1 -1
- package/dist/aun/msg/history.js +43 -4
- package/dist/aun/msg/managed-operation.js +30 -53
- package/dist/aun/msg/p2p.js +51 -15
- package/dist/aun/outbox.js +4 -0
- package/dist/channels/aun.js +260 -73
- package/dist/channels/daemon.js +6 -4
- package/dist/channels/feishu.js +3 -0
- package/dist/cli/agent-command.js +161 -223
- package/dist/cli/agent-create.js +190 -223
- package/dist/cli/agent.js +3 -1
- package/dist/cli/aid-bind-command.js +53 -0
- package/dist/cli/aun-commands.js +384 -91
- package/dist/cli/bench.js +1 -1
- package/dist/cli/cli-argv.js +74 -0
- package/dist/cli/daemon-commands.js +105 -74
- package/dist/cli/diag.js +1 -1
- package/dist/cli/fs-command.js +18 -19
- package/dist/cli/getmeta-command.js +159 -6
- package/dist/cli/index.js +6 -12
- package/dist/cli/init-channel.js +8 -55
- package/dist/cli/init.js +125 -218
- package/dist/cli/queue-command.js +11 -8
- package/dist/cli/restart-monitor.js +134 -48
- package/dist/cli/session-command.js +1 -1
- package/dist/cli/stats.js +7 -5
- package/dist/cli/thread-command.js +103 -30
- package/dist/cli/trigger-command.js +1 -1
- package/dist/cli/watch-msg-diag.js +1 -0
- package/dist/config/access-policy.js +2 -2
- package/dist/config/boot-log.js +14 -11
- package/dist/config/config-field-policy.js +9 -1
- package/dist/config/config-manager.js +176 -90
- package/dist/config/config-operation-service.js +7 -14
- package/dist/config/contact-book-store.js +142 -26
- package/dist/config/contact-book.js +4 -2
- package/dist/config/lifecycle.js +1 -1
- package/dist/config/owner-config.js +96 -0
- package/dist/config/peer-role-resolver.js +12 -18
- package/dist/config/providers-config.js +382 -0
- package/dist/config/providers-import.js +74 -0
- package/dist/config/providers-management.js +328 -0
- package/dist/config/providers.js +22 -0
- package/dist/config/resolved-config-op.js +17 -14
- package/dist/config/snapshot.js +28 -16
- package/dist/config-store.js +18 -14
- package/dist/core/agent-ipc-registration.js +21 -63
- package/dist/core/agent-runtime.js +16 -5
- package/dist/core/auth/agent-delegation.js +199 -25
- package/dist/core/auth/auth-gateway.js +44 -2
- package/dist/core/auth/authorization-denial.js +1 -1
- package/dist/core/auth/debug-context.js +2 -1
- package/dist/core/auth/delegation-authorization.js +2 -2
- package/dist/core/auth/delegation-diagnostics.js +4 -1
- package/dist/core/auth/operation-authorizer.js +10 -1
- package/dist/core/auth/operation-catalog.js +19 -1
- package/dist/core/bootstrap-service.js +43 -20
- package/dist/core/channel-loader.js +0 -1
- package/dist/core/channel-runtime.js +30 -4
- package/dist/core/command/agent-control.js +196 -37
- package/dist/core/command/cli-intent-parser.js +60 -4
- package/dist/core/command/command-handler.js +212 -60
- package/dist/core/command/connect-menu.js +1 -0
- package/dist/core/command/diag-service.js +5 -4
- package/dist/core/command/file-search.js +368 -0
- package/dist/core/command/menu-catalog.js +2 -1
- package/dist/core/command/menu-handler.js +292 -107
- package/dist/core/command/menu-protocol.js +23 -0
- package/dist/core/command/role-menu.js +7 -19
- package/dist/core/command/skill-slash.js +130 -25
- package/dist/core/command/slash-handler.js +101 -53
- package/dist/core/command/topic-slash.js +16 -5
- package/dist/core/daemon-bootstrap.js +7 -1
- package/dist/core/daemon-control.js +19 -1
- package/dist/core/daemon-lifecycle.js +2 -1
- package/dist/core/event-catalog.js +2 -0
- package/dist/core/evolagent-registry.js +13 -2
- package/dist/core/evolagent.js +3 -6
- package/dist/core/handoff/ipc-registration.js +2 -2
- package/dist/core/handoff/runtime.js +40 -6
- package/dist/core/handoff/store.js +1 -0
- package/dist/core/inference/text-inference.js +95 -6
- package/dist/core/ipc-registration.js +43 -24
- package/dist/core/memory/consolidation-context.js +4 -1
- package/dist/core/memory/consolidation.js +25 -14
- package/dist/core/message/aun-ipc-sender.js +296 -88
- package/dist/core/message/aun-request-registry.js +226 -0
- package/dist/core/message/create-status.js +33 -4
- package/dist/core/message/message-bridge.js +62 -13
- package/dist/core/message/message-log.js +0 -1
- package/dist/core/message/message-queue.js +4 -1
- package/dist/core/message/message-utils.js +8 -1
- package/dist/core/message/peer-mode.js +17 -9
- package/dist/core/message/response-engine.js +266 -124
- package/dist/core/message/retry-scheduler.js +11 -8
- package/dist/core/model/catalog-service.js +60 -18
- package/dist/core/model/model-catalog.js +112 -9
- package/dist/core/model/model-fallback.js +94 -26
- package/dist/core/ownership/owner-resolver.js +687 -0
- package/dist/core/permission/approval-gateway.js +196 -62
- package/dist/core/permission/ec-command-parser.js +138 -25
- package/dist/core/permission/filesystem-approval-scope.js +141 -0
- package/dist/core/permission/protected-paths.js +14 -1
- package/dist/core/permission/sandbox-runtime.js +171 -18
- package/dist/core/permission/tool-policy.js +13 -2
- package/dist/core/role/runtime-policy.js +3 -4
- package/dist/core/session/session-idle-monitor.js +10 -8
- package/dist/core/session/session-manager.js +72 -45
- package/dist/core/session/session-mapper.js +18 -7
- package/dist/core/session/session-renew.js +5 -4
- package/dist/core/session/session-title.js +2 -1
- package/dist/core/session/session-turn-coordinator.js +4 -2
- package/dist/core/skill/index-generator.js +2 -16
- package/dist/core/task/task-recovery-service.js +15 -2
- package/dist/core/thread/command-parser.js +28 -13
- package/dist/core/thread/index.js +1 -0
- package/dist/core/thread/ipc-operation.js +11 -8
- package/dist/core/thread/thread-operation.js +79 -44
- package/dist/core/thread/thread-route.js +54 -6
- package/dist/core/thread/thread-service.js +236 -45
- package/dist/core/thread/topic-id.js +248 -0
- package/dist/eck/kit-renderer.js +1 -1
- package/dist/eck/message-renderer.js +12 -2
- package/dist/index.js +50 -27
- package/dist/ipc.js +59 -6
- package/dist/paths.js +1 -0
- package/dist/product.js +1 -0
- package/dist/response-system/engines/v1/proactive-flow.js +10 -3
- package/dist/stats/db.js +8 -0
- package/dist/stats/writer.js +26 -4
- package/dist/trigger/authorization.js +48 -3
- package/dist/trigger/feedback.js +28 -10
- package/dist/trigger/ipc-service.js +86 -10
- package/dist/trigger/local-files.js +55 -23
- package/dist/trigger/scheduler.js +57 -11
- package/dist/trigger/system-definitions.js +1 -0
- package/dist/trigger/validation.js +44 -15
- package/dist/utils/aid-bind.js +17 -297
- package/dist/utils/avatar-upload.js +16 -4
- package/dist/utils/cross-platform.js +109 -34
- package/dist/utils/ecweb-supervisor.js +1 -1
- package/dist/utils/ecweb-utils.js +8 -1
- package/dist/utils/error-utils.js +44 -6
- package/dist/utils/instance-registry.js +12 -2
- package/dist/utils/npm-ops.js +102 -27
- package/dist/utils/package-version-info.js +72 -27
- package/dist/utils/restart-safety.js +50 -0
- package/dist/utils/upgrade-jobs.js +304 -0
- package/dist/utils/windows-autostart.js +17 -10
- package/kits/docs/INDEX.md +5 -0
- package/kits/docs/aun/ABILITY_CALLING.md +239 -0
- package/kits/docs/evolcore/INDEX.md +14 -3
- package/kits/docs/evolcore/agent-create.md +55 -141
- package/kits/docs/evolcore/agent.md +38 -16
- package/kits/docs/evolcore/aid.md +34 -0
- package/kits/docs/evolcore/config.md +20 -1
- package/kits/docs/evolcore/event.md +2 -2
- package/kits/docs/evolcore/fs.md +18 -2
- package/kits/docs/evolcore/group-collaboration.md +13 -246
- package/kits/docs/evolcore/group.md +2 -1
- package/kits/docs/evolcore/memory-consolidation-batches.md +1 -1
- package/kits/docs/evolcore/menu-protocol.md +65 -1
- package/kits/docs/evolcore/msg.md +64 -2
- package/kits/docs/evolcore/skill.md +86 -0
- package/kits/docs/evolcore/stats.md +6 -0
- package/kits/docs/evolcore/task.md +2 -0
- package/kits/docs/evolcore/thread-chain.md +145 -51
- package/kits/docs/evolcore/trigger.md +48 -3
- package/kits/eck_manifest.json +21 -0
- package/kits/eck_message_manifest.json +4 -4
- package/kits/migrations/migrate-role-config-v5.mjs +20 -7
- package/kits/rules/01-overview.md +2 -1
- package/kits/rules/03-identity.md +3 -1
- package/kits/rules/04-relation.md +1 -1
- package/kits/rules/07-memory-and-thread.md +1 -1
- package/kits/schemas/_meta.json +16 -1
- package/kits/schemas/agent-config.schema.13.json +44 -2
- package/kits/schemas/contact-book.schema.3.json +5 -0
- package/kits/schemas/daemon.schema.6.json +3 -1
- package/kits/schemas/daemon.schema.8.json +329 -0
- package/kits/schemas/defaults.schema.5.json +39 -3
- package/kits/schemas/providers.schema.1.json +76 -0
- package/kits/schemas/relation-config.schema.9.json +5 -1
- package/kits/skills/.switches.json +28 -0
- package/kits/skills/aid-ability/SKILL.md +214 -0
- package/kits/skills/ec-agent-create/SKILL.md +162 -0
- package/kits/skills/ec-group/SKILL.md +2 -1
- package/kits/skills/ec-group-collaboration/SKILL.md +228 -0
- package/kits/skills/ec-identity/SKILL.md +143 -0
- package/kits/skills/ec-skill/scripts/cli.mjs +36 -3
- package/kits/skills/ec-skill/scripts/skill.mjs +202 -15
- package/kits/skills/ec-trigger/SKILL.md +167 -0
- package/kits/skills/ec-trigger/references/examples.md +153 -0
- package/kits/skills/thread-ops/SKILL.md +108 -420
- package/kits/templates/message-fragments/thread-context.md +1 -2
- package/kits/templates/message-fragments/trigger-thread-check.md +1 -1
- package/kits/templates/roles/member.json +1 -1
- package/kits/templates/roles/visitor.json +1 -0
- package/kits/templates/system-fragments/bootstrap.md +1 -0
- package/kits/templates/system-fragments/channel.md +2 -1
- package/kits/templates/system-fragments/commands.md +5 -4
- package/kits/templates/system-fragments/identity.md +2 -0
- package/kits/templates/system-fragments/session.md +1 -1
- package/kits/templates/system-fragments/venue.md +1 -1
- package/package.json +4 -3
package/dist/aun/msg/p2p.js
CHANGED
|
@@ -11,6 +11,7 @@ import { ipcQuery } from '../../ipc.js';
|
|
|
11
11
|
import { readDelegationCredential } from '../../core/auth/agent-delegation.js';
|
|
12
12
|
import { loadDaemonConfig } from '../../config-store.js';
|
|
13
13
|
import { normalizeAunMentionEntries, withAunAttention } from './mention-schema.js';
|
|
14
|
+
import { isTopicThreadId } from '../../core/thread/topic-id.js';
|
|
14
15
|
const DAEMON_SEND_TIMEOUT_GRACE_MS = 10_000;
|
|
15
16
|
const DEFAULT_IDLE_TIMEOUT_MS = 120_000;
|
|
16
17
|
const MAX_TIMER_MS = 2_147_483_647;
|
|
@@ -27,7 +28,7 @@ function readDaemonConfigForSend() {
|
|
|
27
28
|
return {};
|
|
28
29
|
}
|
|
29
30
|
}
|
|
30
|
-
export function daemonTaskSendIpcTimeoutMs(file = false) {
|
|
31
|
+
export function daemonTaskSendIpcTimeoutMs(file = false, requestTimeoutMs) {
|
|
31
32
|
let idleTimeoutMs = DEFAULT_IDLE_TIMEOUT_MS;
|
|
32
33
|
// Use the ConfigStore read path so managed tasks never open daemon.json
|
|
33
34
|
// directly. The daemon-owned config reader handles missing, invalid, and
|
|
@@ -36,7 +37,7 @@ export function daemonTaskSendIpcTimeoutMs(file = false) {
|
|
|
36
37
|
if (typeof seconds === 'number' && Number.isFinite(seconds) && seconds > 0) {
|
|
37
38
|
idleTimeoutMs = seconds * 1000;
|
|
38
39
|
}
|
|
39
|
-
return Math.min(MAX_TIMER_MS, Math.max(file ? 120_000 : 5_000, idleTimeoutMs + DAEMON_SEND_TIMEOUT_GRACE_MS));
|
|
40
|
+
return Math.min(MAX_TIMER_MS, Math.max(file ? 120_000 : 5_000, idleTimeoutMs + DAEMON_SEND_TIMEOUT_GRACE_MS, (requestTimeoutMs ?? 0) + DAEMON_SEND_TIMEOUT_GRACE_MS));
|
|
40
41
|
}
|
|
41
42
|
export function resolveAunMessageEncrypt(explicit) {
|
|
42
43
|
if (typeof explicit === 'boolean')
|
|
@@ -59,6 +60,9 @@ function buildSimplePayload(body) {
|
|
|
59
60
|
}
|
|
60
61
|
}
|
|
61
62
|
}
|
|
63
|
+
function isRawPayloadBody(body) {
|
|
64
|
+
return body.mode === 'payload';
|
|
65
|
+
}
|
|
62
66
|
function messageLogContent(body) {
|
|
63
67
|
return body.mode === 'text' ? body.text
|
|
64
68
|
: body.mode === 'link' ? `[link] ${body.url}`
|
|
@@ -67,8 +71,13 @@ function messageLogContent(body) {
|
|
|
67
71
|
}
|
|
68
72
|
function applyRoutingPayloadFields(payload, args, runtimeContext, includeRuntimeRef = true) {
|
|
69
73
|
const threadId = msgSendThreadId(args, payload, runtimeContext);
|
|
70
|
-
|
|
74
|
+
// 主话题的规范 id(`main:<a>:<b>`)是本端身份,不进线上报文:主话题的线上
|
|
75
|
+
// 形态就是"不带 thread_id",对端按无话题落到同一条关系的主话题。
|
|
76
|
+
// `args.thread` 可能是历史写法(裸对端 AID / `<peer>/<id>`),同样只放行话题。
|
|
77
|
+
if (isTopicThreadId(threadId))
|
|
71
78
|
payload.thread_id = threadId;
|
|
79
|
+
else if (payload.thread_id !== undefined)
|
|
80
|
+
delete payload.thread_id;
|
|
72
81
|
if (!includeRuntimeRef)
|
|
73
82
|
return;
|
|
74
83
|
const refMessageId = runtimeRefMessageIdForMsgSend({ from: args.from, runtime: runtimeContext });
|
|
@@ -125,21 +134,24 @@ async function tryDaemonMsgSend(args, payload, runtimeContext, file) {
|
|
|
125
134
|
if (args.slotId || args.aunPath) {
|
|
126
135
|
return { ok: false, code: 'INVALID_DELEGATION', error: 'Task sends cannot override the daemon AUN connection' };
|
|
127
136
|
}
|
|
128
|
-
const thread = msgSendThreadId(args, payload, runtimeContext);
|
|
137
|
+
const thread = args.body.mode === 'payload' ? undefined : msgSendThreadId(args, payload, runtimeContext);
|
|
129
138
|
const response = await ipcQuery(resolvePaths().socket, {
|
|
130
139
|
type: 'aun-msg-send',
|
|
131
140
|
aid: args.from,
|
|
132
141
|
to: args.to,
|
|
133
142
|
scope: 'msg',
|
|
134
143
|
...(payload ? { payload } : { file }),
|
|
144
|
+
rawPayload: args.body.mode === 'payload',
|
|
135
145
|
encrypt: args.encrypt,
|
|
146
|
+
returnPolicy: args.returnPolicy,
|
|
147
|
+
timeoutMs: args.timeoutMs,
|
|
136
148
|
thread,
|
|
137
149
|
handoffContext: args.handoffContext,
|
|
138
150
|
originSessionId: runtimeContext.sessionId,
|
|
139
151
|
originMessageId: runtimeContext.messageId,
|
|
140
152
|
delegationToken: readDelegationCredential(),
|
|
141
153
|
log: msgSendLogMetadata(args, payload, runtimeContext),
|
|
142
|
-
}, daemonTaskSendIpcTimeoutMs(!!file), { throwOnError: true });
|
|
154
|
+
}, daemonTaskSendIpcTimeoutMs(!!file, args.returnPolicy === 'required' ? (args.timeoutMs ?? 60_000) : undefined), { throwOnError: true });
|
|
143
155
|
return response ?? {
|
|
144
156
|
ok: false,
|
|
145
157
|
code: 'AUN_DAEMON_UNAVAILABLE',
|
|
@@ -154,9 +166,14 @@ async function daemonMsgSendResult(args, payload, runtimeContext, daemonResult)
|
|
|
154
166
|
code: daemonResult.code,
|
|
155
167
|
handoff_id: daemonResult.handoff_id,
|
|
156
168
|
target_session_id: daemonResult.target_session_id,
|
|
169
|
+
request_id: daemonResult.request_id,
|
|
170
|
+
request_state: daemonResult.request_state,
|
|
157
171
|
};
|
|
158
172
|
}
|
|
159
|
-
|
|
173
|
+
const completedRequest = args.returnPolicy === 'required' && !!daemonResult.request_id
|
|
174
|
+
&& daemonResult.request_state === 'completed' && !!daemonResult.response
|
|
175
|
+
&& typeof daemonResult.response === 'object' && !Array.isArray(daemonResult.response);
|
|
176
|
+
if (!daemonResult.message_id && !daemonResult.handoff_id && !completedRequest) {
|
|
160
177
|
return { ok: false, error: 'daemon AUN message send returned no message_id' };
|
|
161
178
|
}
|
|
162
179
|
const sent = {
|
|
@@ -168,8 +185,12 @@ async function daemonMsgSendResult(args, payload, runtimeContext, daemonResult)
|
|
|
168
185
|
timestamp: daemonResult.timestamp,
|
|
169
186
|
status: daemonResult.status,
|
|
170
187
|
delivery_mode: daemonResult.delivery_mode,
|
|
188
|
+
request_id: daemonResult.request_id,
|
|
189
|
+
request_state: daemonResult.request_state,
|
|
190
|
+
response: daemonResult.response,
|
|
191
|
+
transport_error: daemonResult.transport_error,
|
|
171
192
|
};
|
|
172
|
-
if (!daemonResult.handoff_id && !daemonResult.log_written) {
|
|
193
|
+
if (sent.message_id && !daemonResult.handoff_id && !daemonResult.log_written) {
|
|
173
194
|
await appendMsgSendOutboundLog(args, sent, {
|
|
174
195
|
payload,
|
|
175
196
|
runtimeContext,
|
|
@@ -227,11 +248,14 @@ export async function msgSend(args) {
|
|
|
227
248
|
try {
|
|
228
249
|
let payload;
|
|
229
250
|
if (args.body.mode !== 'file') {
|
|
230
|
-
payload =
|
|
231
|
-
|
|
251
|
+
payload = args.body.mode === 'payload'
|
|
252
|
+
? buildSimplePayload(args.body)
|
|
253
|
+
: withAunAttention(buildSimplePayload(args.body));
|
|
254
|
+
if (args.body.mode !== 'payload' && Object.prototype.hasOwnProperty.call(payload, 'mentions')) {
|
|
232
255
|
payload.mentions = normalizeAunMentionEntries(payload.mentions);
|
|
233
256
|
}
|
|
234
|
-
|
|
257
|
+
if (!isRawPayloadBody(args.body))
|
|
258
|
+
applyRoutingPayloadFields(payload, args, runtimeContext, false);
|
|
235
259
|
const daemonResult = await tryDaemonMsgSend(args, payload, runtimeContext);
|
|
236
260
|
if (daemonResult)
|
|
237
261
|
return daemonMsgSendResult(args, payload, runtimeContext, daemonResult);
|
|
@@ -248,6 +272,13 @@ export async function msgSend(args) {
|
|
|
248
272
|
return daemonMsgSendResult(args, { type: args.body.as || 'file' }, runtimeContext, daemonResult);
|
|
249
273
|
}
|
|
250
274
|
}
|
|
275
|
+
if (args.returnPolicy === 'required') {
|
|
276
|
+
return {
|
|
277
|
+
ok: false,
|
|
278
|
+
code: 'REQUEST_WAIT_REQUIRES_DAEMON',
|
|
279
|
+
error: 'request/reply waiting requires a managed EvolCore daemon session',
|
|
280
|
+
};
|
|
281
|
+
}
|
|
251
282
|
conn = await createShortConnection(args.from, { aunPath: args.aunPath, slotId: args.slotId });
|
|
252
283
|
if (args.body.mode === 'file') {
|
|
253
284
|
const built = await uploadFileAndBuildPayload(conn, args.from, args.body.filePath, {
|
|
@@ -302,15 +333,20 @@ export async function msgSend(args) {
|
|
|
302
333
|
payload = buildSimplePayload(args.body);
|
|
303
334
|
}
|
|
304
335
|
// 4. 写入 payload.chatmode
|
|
305
|
-
|
|
336
|
+
if (args.body.mode !== 'payload')
|
|
337
|
+
payload.chatmode = chatmode;
|
|
306
338
|
// 5. 写入 payload.thread_id/ref_message_id(如果指定)
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
339
|
+
if (args.body.mode !== 'payload') {
|
|
340
|
+
if (!isRawPayloadBody(args.body))
|
|
341
|
+
applyRoutingPayloadFields(payload, args, runtimeContext, false);
|
|
342
|
+
applyRoutingPayloadFields(payload, args, runtimeContext);
|
|
343
|
+
}
|
|
344
|
+
if (args.body.mode !== 'payload' && Object.prototype.hasOwnProperty.call(payload, 'mentions')) {
|
|
310
345
|
payload.mentions = normalizeAunMentionEntries(payload.mentions);
|
|
311
346
|
}
|
|
312
347
|
const encrypt = resolveAunMessageEncrypt(args.encrypt);
|
|
313
|
-
|
|
348
|
+
if (args.body.mode !== 'payload')
|
|
349
|
+
payload = withAunAttention(payload);
|
|
314
350
|
const sendParams = { to: args.to, payload, encrypt };
|
|
315
351
|
const result = await conn.call('message.send', sendParams);
|
|
316
352
|
const messageId = typeof result?.message_id === 'string' && result.message_id.trim()
|
package/dist/aun/outbox.js
CHANGED
|
@@ -229,6 +229,10 @@ export function removeInteractionCards(aid, requestId, queue = 'default') {
|
|
|
229
229
|
export function load(aid, queue = 'default') {
|
|
230
230
|
return readEntries(aid, queue).filter(e => !e.terminal && !e.deliveryResult && !isExpired(e));
|
|
231
231
|
}
|
|
232
|
+
export function findInteractionCards(aid, requestId) {
|
|
233
|
+
return readEntries(aid).filter(entry => entry.postSend?.type === 'register_interaction_card'
|
|
234
|
+
&& entry.postSend.requestId === requestId);
|
|
235
|
+
}
|
|
232
236
|
export function findByDedupeKey(aid, dedupeKey, opts = {}, queue = 'default') {
|
|
233
237
|
const entries = opts.includeTerminal
|
|
234
238
|
? readEntries(aid, queue).filter(entry => !isExpired(entry))
|