@relaycast/engine 8.10.1 → 8.11.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/dist/adapters/node/kv.d.ts +1 -1
- package/dist/adapters/node/kv.d.ts.map +1 -1
- package/dist/adapters/node/kv.js +9 -4
- package/dist/adapters/node/kv.js.map +1 -1
- package/dist/adapters/node/rate-limit.d.ts.map +1 -1
- package/dist/adapters/node/rate-limit.js +10 -5
- package/dist/adapters/node/rate-limit.js.map +1 -1
- package/dist/db/migrations/0060_durable_task_invocations.sql +7 -0
- package/dist/db/migrations/0061_messages_workspace_length_id_index.sql +7 -0
- package/dist/db/schema.d.ts +51 -1
- package/dist/db/schema.d.ts.map +1 -1
- package/dist/db/schema.js +3 -0
- package/dist/db/schema.js.map +1 -1
- package/dist/engine/action.d.ts +30 -0
- package/dist/engine/action.d.ts.map +1 -1
- package/dist/engine/action.js +16 -1
- package/dist/engine/action.js.map +1 -1
- package/dist/engine/inbox.d.ts.map +1 -1
- package/dist/engine/inbox.js +73 -27
- package/dist/engine/inbox.js.map +1 -1
- package/dist/engine/node.d.ts +10 -0
- package/dist/engine/node.d.ts.map +1 -1
- package/dist/engine/node.js +20 -0
- package/dist/engine/node.js.map +1 -1
- package/dist/engine/nodeProvider.d.ts.map +1 -1
- package/dist/engine/nodeProvider.js +5 -1
- package/dist/engine/nodeProvider.js.map +1 -1
- package/dist/engine/taskInvocation.d.ts +110 -0
- package/dist/engine/taskInvocation.d.ts.map +1 -0
- package/dist/engine/taskInvocation.js +141 -0
- package/dist/engine/taskInvocation.js.map +1 -0
- package/dist/engine/usage.d.ts +17 -8
- package/dist/engine/usage.d.ts.map +1 -1
- package/dist/engine/usage.js +35 -18
- package/dist/engine/usage.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/lib/throttle.d.ts +20 -0
- package/dist/lib/throttle.d.ts.map +1 -0
- package/dist/lib/throttle.js +28 -0
- package/dist/lib/throttle.js.map +1 -0
- package/dist/middleware/planLimits.d.ts.map +1 -1
- package/dist/middleware/planLimits.js +22 -1
- package/dist/middleware/planLimits.js.map +1 -1
- package/dist/middleware/rateLimit.d.ts.map +1 -1
- package/dist/middleware/rateLimit.js +17 -3
- package/dist/middleware/rateLimit.js.map +1 -1
- package/dist/ports/entitlements.d.ts +8 -0
- package/dist/ports/entitlements.d.ts.map +1 -1
- package/dist/ports/kv.d.ts +7 -1
- package/dist/ports/kv.d.ts.map +1 -1
- package/dist/ports/rate-limit.d.ts +5 -0
- package/dist/ports/rate-limit.d.ts.map +1 -1
- package/dist/providers/static-entitlements.d.ts +4 -2
- package/dist/providers/static-entitlements.d.ts.map +1 -1
- package/dist/providers/static-entitlements.js +8 -4
- package/dist/providers/static-entitlements.js.map +1 -1
- package/dist/routes/workspace.d.ts.map +1 -1
- package/dist/routes/workspace.js +25 -22
- package/dist/routes/workspace.js.map +1 -1
- package/package.json +3 -3
package/dist/engine/inbox.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { eq, and, sql, isNull, ne, inArray } from 'drizzle-orm';
|
|
2
|
-
import { messages, channels, agents, dmParticipants, } from '../db/schema.js';
|
|
1
|
+
import { eq, and, or, sql, isNull, ne, inArray } from 'drizzle-orm';
|
|
2
|
+
import { messages, channels, channelMembers, dmConversations, agents, dmParticipants, } from '../db/schema.js';
|
|
3
3
|
import { queryInChunks } from '../lib/queryChunks.js';
|
|
4
|
+
import { parseMessageMentions } from './mentions.js';
|
|
4
5
|
export async function getInbox(db, workspaceId, agentId) {
|
|
5
6
|
const unreadChannels = await db.all(sql `
|
|
6
7
|
SELECT ch.name AS channel_name, count(*) AS unread_count
|
|
@@ -10,6 +11,7 @@ export async function getInbox(db, workspaceId, agentId) {
|
|
|
10
11
|
WHERE cm.agent_id = ${agentId}
|
|
11
12
|
AND ch.workspace_id = ${workspaceId}
|
|
12
13
|
AND ch.channel_type = 0
|
|
14
|
+
AND ch.is_archived = false
|
|
13
15
|
AND m.thread_id IS NULL
|
|
14
16
|
AND m.agent_id != ${agentId}
|
|
15
17
|
AND (cm.last_read_id IS NULL OR m.id > cm.last_read_id)
|
|
@@ -22,31 +24,75 @@ export async function getInbox(db, workspaceId, agentId) {
|
|
|
22
24
|
.from(agents)
|
|
23
25
|
.where(eq(agents.id, agentId));
|
|
24
26
|
const agentName = agent?.name ?? '';
|
|
25
|
-
//
|
|
26
|
-
//
|
|
27
|
-
//
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
.
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
27
|
+
// Mentions must match the canonical engine semantics: an EXACT `@handle`
|
|
28
|
+
// token (escaped `\@x`, `user@x`, and prefix/superstring names are NOT
|
|
29
|
+
// mentions), delivered only where the agent has live access — a member of a
|
|
30
|
+
// live channel (channel_type 0) or a participant of a live DM (channel_type
|
|
31
|
+
// != 0). SQL narrows candidates with the ESCAPED LITERAL name; a keyset scan
|
|
32
|
+
// then walks history in bounded batches until 20 canonical matches or source
|
|
33
|
+
// exhaustion, so a valid older mention behind a batch of false candidates is
|
|
34
|
+
// never silently dropped. Memory is bounded per batch.
|
|
35
|
+
const MAX_MENTIONS = 20;
|
|
36
|
+
const MENTION_BATCH = 200;
|
|
37
|
+
const mentionsEnriched = [];
|
|
38
|
+
if (agentName) {
|
|
39
|
+
const escapedName = agentName.replace(/[\\%_]/g, (ch) => `\\${ch}`);
|
|
40
|
+
let cursor;
|
|
41
|
+
for (;;) {
|
|
42
|
+
const batch = await db
|
|
43
|
+
.select({
|
|
44
|
+
id: messages.id,
|
|
45
|
+
channelName: channels.name,
|
|
46
|
+
agentName: agents.name,
|
|
47
|
+
body: messages.body,
|
|
48
|
+
createdAt: messages.createdAt,
|
|
49
|
+
})
|
|
50
|
+
.from(messages)
|
|
51
|
+
.innerJoin(channels, eq(messages.channelId, channels.id))
|
|
52
|
+
.innerJoin(agents, eq(messages.agentId, agents.id))
|
|
53
|
+
.leftJoin(channelMembers, and(eq(channelMembers.channelId, messages.channelId), eq(channelMembers.agentId, agentId)))
|
|
54
|
+
.leftJoin(dmConversations, eq(dmConversations.channelId, messages.channelId))
|
|
55
|
+
.leftJoin(dmParticipants, and(eq(dmParticipants.conversationId, dmConversations.id), eq(dmParticipants.agentId, agentId), isNull(dmParticipants.leftAt)))
|
|
56
|
+
.where(and(eq(messages.workspaceId, workspaceId), eq(channels.isArchived, false), ne(messages.agentId, agentId), // exclude self-mentions
|
|
57
|
+
sql `${messages.body} LIKE ${'%@' + escapedName + '%'} ESCAPE '\\'`, or(and(eq(channels.channelType, 0), eq(channelMembers.agentId, agentId)), and(ne(channels.channelType, 0), eq(dmParticipants.agentId, agentId))),
|
|
58
|
+
// Length-then-lexical keyset: snowflake ids are decimal strings, so
|
|
59
|
+
// ordering by (length(id), id) is chronological across MIXED decimal
|
|
60
|
+
// lengths with no numeric precision loss (a bare text compare is not).
|
|
61
|
+
// The cursor predicate matches the ORDER BY exactly. Tradeoff: the
|
|
62
|
+
// scan is bounded per batch but deliberately NOT by a total cap — a
|
|
63
|
+
// total cap would silently drop valid older mentions.
|
|
64
|
+
// idx_messages_workspace_length_id covers (workspace_id, length(id), id)
|
|
65
|
+
// so each batch can stop at MENTION_BATCH without a cross-workspace scan.
|
|
66
|
+
...(cursor
|
|
67
|
+
? [
|
|
68
|
+
sql `(length(${messages.id}) < length(${cursor})
|
|
69
|
+
OR (length(${messages.id}) = length(${cursor}) AND ${messages.id} < ${cursor}))`,
|
|
70
|
+
]
|
|
71
|
+
: [])))
|
|
72
|
+
.orderBy(sql `length(${messages.id}) DESC, ${messages.id} DESC`)
|
|
73
|
+
.limit(MENTION_BATCH);
|
|
74
|
+
if (batch.length === 0)
|
|
75
|
+
break;
|
|
76
|
+
for (const row of batch) {
|
|
77
|
+
if (mentionsEnriched.length >= MAX_MENTIONS)
|
|
78
|
+
break;
|
|
79
|
+
if (parseMessageMentions(row.body).includes(agentName)) {
|
|
80
|
+
mentionsEnriched.push({
|
|
81
|
+
id: row.id,
|
|
82
|
+
channel_name: row.channelName ?? 'unknown',
|
|
83
|
+
agent_name: row.agentName ?? 'unknown',
|
|
84
|
+
text: row.body,
|
|
85
|
+
created_at: row.createdAt.toISOString(),
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
if (mentionsEnriched.length >= MAX_MENTIONS)
|
|
90
|
+
break;
|
|
91
|
+
cursor = batch[batch.length - 1].id;
|
|
92
|
+
if (batch.length < MENTION_BATCH)
|
|
93
|
+
break;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
50
96
|
// 3. Unread DMs (1:1 + group)
|
|
51
97
|
const unreadDmRows = await db.all(sql `
|
|
52
98
|
SELECT dc.id AS conversation_id, dc.channel_id, count(m.id) AS unread_count
|
package/dist/engine/inbox.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inbox.js","sourceRoot":"","sources":["../../src/engine/inbox.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"inbox.js","sourceRoot":"","sources":["../../src/engine/inbox.ts"],"names":[],"mappings":"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"}
|
package/dist/engine/node.d.ts
CHANGED
|
@@ -43,6 +43,7 @@ declare function publicNode(row: NodeRow, now?: number): {
|
|
|
43
43
|
kind?: string | undefined;
|
|
44
44
|
global?: boolean | undefined;
|
|
45
45
|
queue?: boolean | undefined;
|
|
46
|
+
execution_mode?: "task" | "short" | undefined;
|
|
46
47
|
metadata?: Record<string, import("@relaycast/types").FleetWireJsonValue> | undefined;
|
|
47
48
|
}[];
|
|
48
49
|
tags: string[];
|
|
@@ -83,6 +84,7 @@ export declare function createNodeToken(db: Db, workspaceId: string, data: {
|
|
|
83
84
|
kind?: string | undefined;
|
|
84
85
|
global?: boolean | undefined;
|
|
85
86
|
queue?: boolean | undefined;
|
|
87
|
+
execution_mode?: "task" | "short" | undefined;
|
|
86
88
|
metadata?: Record<string, import("@relaycast/types").FleetWireJsonValue> | undefined;
|
|
87
89
|
}[];
|
|
88
90
|
tags: string[];
|
|
@@ -112,6 +114,7 @@ export declare function getNodeByTokenHash(db: Db, tokenHash: string): Promise<{
|
|
|
112
114
|
kind?: string | undefined;
|
|
113
115
|
global?: boolean | undefined;
|
|
114
116
|
queue?: boolean | undefined;
|
|
117
|
+
execution_mode?: "task" | "short" | undefined;
|
|
115
118
|
metadata?: Record<string, import("@relaycast/types").FleetWireJsonValue> | undefined;
|
|
116
119
|
}[];
|
|
117
120
|
maxAgents: number;
|
|
@@ -142,6 +145,7 @@ export declare function getNodeByName(db: Db, workspaceId: string, name: string)
|
|
|
142
145
|
kind?: string | undefined;
|
|
143
146
|
global?: boolean | undefined;
|
|
144
147
|
queue?: boolean | undefined;
|
|
148
|
+
execution_mode?: "task" | "short" | undefined;
|
|
145
149
|
metadata?: Record<string, import("@relaycast/types").FleetWireJsonValue> | undefined;
|
|
146
150
|
}[];
|
|
147
151
|
maxAgents: number;
|
|
@@ -172,6 +176,7 @@ export declare function getNodeById(db: Db, workspaceId: string, nodeId: string)
|
|
|
172
176
|
kind?: string | undefined;
|
|
173
177
|
global?: boolean | undefined;
|
|
174
178
|
queue?: boolean | undefined;
|
|
179
|
+
execution_mode?: "task" | "short" | undefined;
|
|
175
180
|
metadata?: Record<string, import("@relaycast/types").FleetWireJsonValue> | undefined;
|
|
176
181
|
}[];
|
|
177
182
|
maxAgents: number;
|
|
@@ -224,6 +229,7 @@ export declare function getBrokerNodeByMachineId(db: Db, workspaceId: string, ma
|
|
|
224
229
|
kind?: string | undefined;
|
|
225
230
|
global?: boolean | undefined;
|
|
226
231
|
queue?: boolean | undefined;
|
|
232
|
+
execution_mode?: "task" | "short" | undefined;
|
|
227
233
|
metadata?: Record<string, import("@relaycast/types").FleetWireJsonValue> | undefined;
|
|
228
234
|
}[];
|
|
229
235
|
maxAgents: number;
|
|
@@ -295,6 +301,7 @@ export declare function resolveNodeForEnroll(db: Db, workspaceId: string, data:
|
|
|
295
301
|
kind?: string | undefined;
|
|
296
302
|
global?: boolean | undefined;
|
|
297
303
|
queue?: boolean | undefined;
|
|
304
|
+
execution_mode?: "task" | "short" | undefined;
|
|
298
305
|
metadata?: Record<string, import("@relaycast/types").FleetWireJsonValue> | undefined;
|
|
299
306
|
}[];
|
|
300
307
|
maxAgents: number;
|
|
@@ -329,6 +336,7 @@ export declare function heartbeatNode(db: Db, workspaceId: string, nodeId: strin
|
|
|
329
336
|
kind?: string | undefined;
|
|
330
337
|
global?: boolean | undefined;
|
|
331
338
|
queue?: boolean | undefined;
|
|
339
|
+
execution_mode?: "task" | "short" | undefined;
|
|
332
340
|
metadata?: Record<string, import("@relaycast/types").FleetWireJsonValue> | undefined;
|
|
333
341
|
}[];
|
|
334
342
|
tags: string[];
|
|
@@ -377,6 +385,7 @@ export declare function ensureDirectNodeForAgent(db: Db, workspaceId: string, ag
|
|
|
377
385
|
kind?: string | undefined;
|
|
378
386
|
global?: boolean | undefined;
|
|
379
387
|
queue?: boolean | undefined;
|
|
388
|
+
execution_mode?: "task" | "short" | undefined;
|
|
380
389
|
metadata?: Record<string, import("@relaycast/types").FleetWireJsonValue> | undefined;
|
|
381
390
|
}[];
|
|
382
391
|
tags: string[];
|
|
@@ -533,6 +542,7 @@ export declare function getPublicNode(db: Db, workspaceId: string, name: string)
|
|
|
533
542
|
kind?: string | undefined;
|
|
534
543
|
global?: boolean | undefined;
|
|
535
544
|
queue?: boolean | undefined;
|
|
545
|
+
execution_mode?: "task" | "short" | undefined;
|
|
536
546
|
metadata?: Record<string, import("@relaycast/types").FleetWireJsonValue> | undefined;
|
|
537
547
|
}[];
|
|
538
548
|
tags: string[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../src/engine/node.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,wBAAwB,EACxB,yBAAyB,EAEzB,yBAAyB,EACzB,mBAAmB,EACnB,yBAAyB,EACzB,wBAAwB,EACxB,qBAAqB,EACrB,eAAe,EACf,sBAAsB,EACvB,MAAM,kBAAkB,CAAC;AAM1B,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAqB,MAAM,EAA8D,KAAK,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../src/engine/node.ts"],"names":[],"mappings":"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"}
|
package/dist/engine/node.js
CHANGED
|
@@ -5,6 +5,7 @@ import { FLEET_DELIVERY_CURSOR_CAPABILITY, NODE_REGISTRATION_CONTRACT_V1, parseF
|
|
|
5
5
|
import { actionInvocations, agents, agentNodeBindings, channelMembers, channels, nodeProviders, nodes } from '../db/schema.js';
|
|
6
6
|
import { randomHex, sha256Hex } from '../lib/crypto.js';
|
|
7
7
|
import { codedError } from '../lib/httpError.js';
|
|
8
|
+
import { acceptTaskInvocation, completeTaskInvocation } from './taskInvocation.js';
|
|
8
9
|
import { runAtomic } from '../ports/database.js';
|
|
9
10
|
import { isProviderAgentDeliveryReady } from '../ports/realtime.js';
|
|
10
11
|
import { generateId } from './snowflake.js';
|
|
@@ -1969,7 +1970,26 @@ export async function handleNodeControlMessage(args) {
|
|
|
1969
1970
|
await deliverPendingToNode(args.db, args.registry, args.workspaceId, args.nodeId, { providerName: frameProviderName, agentIds: replayAgentIds });
|
|
1970
1971
|
return;
|
|
1971
1972
|
}
|
|
1973
|
+
case 'action.accept': {
|
|
1974
|
+
const accepted = await acceptTaskInvocation(args.db, args.workspaceId, args.nodeId, frameProviderName, message);
|
|
1975
|
+
sendControl(args.socket, { v: 1, id: message.id, type: 'reply', ok: true, data: accepted });
|
|
1976
|
+
return;
|
|
1977
|
+
}
|
|
1972
1978
|
case 'action.result': {
|
|
1979
|
+
const task = await completeTaskInvocation(args.db, args.workspaceId, args.nodeId, frameProviderName, message);
|
|
1980
|
+
if (task) {
|
|
1981
|
+
// The state CAS has committed before this reply. A lost reply is
|
|
1982
|
+
// reconciled by replaying the same fenced result or acceptance.
|
|
1983
|
+
sendControl(args.socket, { v: 1, id: message.id, type: 'reply', ok: true, data: task.receipt });
|
|
1984
|
+
if (task.completed && args.completionDeps) {
|
|
1985
|
+
const row = task.completed;
|
|
1986
|
+
await emitInvocationCompletionEffects(args.completionDeps, args.workspaceId, {
|
|
1987
|
+
invocation_id: row.id, action_name: row.actionName, caller_id: row.callerId,
|
|
1988
|
+
status: row.status, output: row.output, error: row.error,
|
|
1989
|
+
});
|
|
1990
|
+
}
|
|
1991
|
+
return;
|
|
1992
|
+
}
|
|
1973
1993
|
const completed = await completeNodeInvocation(args.db, args.registry, args.workspaceId, args.nodeId, frameProviderName, message.invocation_id, {
|
|
1974
1994
|
...(Object.prototype.hasOwnProperty.call(message, 'output') ? { output: message.output } : {}),
|
|
1975
1995
|
...(message.error ? { error: message.error } : {}),
|