@relaycast/engine 4.2.0 → 5.0.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/index.d.ts.map +1 -1
- package/dist/adapters/node/index.js +23 -1
- package/dist/adapters/node/index.js.map +1 -1
- package/dist/adapters/node/presence.d.ts +7 -3
- package/dist/adapters/node/presence.d.ts.map +1 -1
- package/dist/adapters/node/presence.js +10 -8
- package/dist/adapters/node/presence.js.map +1 -1
- package/dist/adapters/node/realtime.d.ts +9 -1
- package/dist/adapters/node/realtime.d.ts.map +1 -1
- package/dist/adapters/node/realtime.js +72 -10
- package/dist/adapters/node/realtime.js.map +1 -1
- package/dist/auth/index.d.ts.map +1 -1
- package/dist/auth/index.js +31 -9
- package/dist/auth/index.js.map +1 -1
- package/dist/auth/tokenKind.d.ts +40 -0
- package/dist/auth/tokenKind.d.ts.map +1 -0
- package/dist/auth/tokenKind.js +89 -0
- package/dist/auth/tokenKind.js.map +1 -0
- package/dist/bin/serve.js +2 -4
- package/dist/bin/serve.js.map +1 -1
- package/dist/db/migrations/0021_node_delivery_contracts.sql +70 -0
- package/dist/db/migrations/0022_http_push_redrive.sql +13 -0
- package/dist/db/migrations/0023_direct_ws_nodes.sql +124 -0
- package/dist/db/migrations/0024_binding_workspace_constraints.sql +109 -0
- package/dist/db/migrations/0025_node_kind_role_adapter.sql +45 -0
- package/dist/db/migrations/0026_observer_tokens.sql +32 -0
- package/dist/db/schema.d.ts +727 -59
- package/dist/db/schema.d.ts.map +1 -1
- package/dist/db/schema.js +78 -2
- package/dist/db/schema.js.map +1 -1
- package/dist/engine/action.d.ts +2 -9
- package/dist/engine/action.d.ts.map +1 -1
- package/dist/engine/action.js +182 -14
- package/dist/engine/action.js.map +1 -1
- package/dist/engine/activity.d.ts +6 -0
- package/dist/engine/activity.d.ts.map +1 -1
- package/dist/engine/activity.js +9 -2
- package/dist/engine/activity.js.map +1 -1
- package/dist/engine/agent.d.ts +0 -33
- package/dist/engine/agent.d.ts.map +1 -1
- package/dist/engine/agent.js +4 -153
- package/dist/engine/agent.js.map +1 -1
- package/dist/engine/attachments.d.ts +6 -0
- package/dist/engine/attachments.d.ts.map +1 -1
- package/dist/engine/attachments.js +37 -0
- package/dist/engine/attachments.js.map +1 -1
- package/dist/engine/console.d.ts +78 -1
- package/dist/engine/console.d.ts.map +1 -1
- package/dist/engine/console.js +175 -19
- package/dist/engine/console.js.map +1 -1
- package/dist/engine/delivery.d.ts +26 -0
- package/dist/engine/delivery.d.ts.map +1 -1
- package/dist/engine/delivery.js +194 -74
- package/dist/engine/delivery.js.map +1 -1
- package/dist/engine/deliveryWire.d.ts +4 -0
- package/dist/engine/deliveryWire.d.ts.map +1 -1
- package/dist/engine/deliveryWire.js +2 -0
- package/dist/engine/deliveryWire.js.map +1 -1
- package/dist/engine/deliveryWrites.d.ts +6 -0
- package/dist/engine/deliveryWrites.d.ts.map +1 -1
- package/dist/engine/deliveryWrites.js +58 -13
- package/dist/engine/deliveryWrites.js.map +1 -1
- package/dist/engine/dm.d.ts.map +1 -1
- package/dist/engine/dm.js +11 -33
- package/dist/engine/dm.js.map +1 -1
- package/dist/engine/dmAll.d.ts.map +1 -1
- package/dist/engine/dmAll.js +2 -0
- package/dist/engine/dmAll.js.map +1 -1
- package/dist/engine/groupDm.d.ts +2 -3
- package/dist/engine/groupDm.d.ts.map +1 -1
- package/dist/engine/groupDm.js +8 -26
- package/dist/engine/groupDm.js.map +1 -1
- package/dist/engine/invocationCompletion.d.ts +1 -1
- package/dist/engine/invocationCompletion.d.ts.map +1 -1
- package/dist/engine/invocationCompletion.js +10 -18
- package/dist/engine/invocationCompletion.js.map +1 -1
- package/dist/engine/message.d.ts.map +1 -1
- package/dist/engine/message.js +16 -44
- package/dist/engine/message.js.map +1 -1
- package/dist/engine/node.d.ts +97 -0
- package/dist/engine/node.d.ts.map +1 -1
- package/dist/engine/node.js +555 -27
- package/dist/engine/node.js.map +1 -1
- package/dist/engine/nodeContext.d.ts +22 -0
- package/dist/engine/nodeContext.d.ts.map +1 -0
- package/dist/engine/nodeContext.js +80 -0
- package/dist/engine/nodeContext.js.map +1 -0
- package/dist/engine/nodeDeliver.d.ts +23 -0
- package/dist/engine/nodeDeliver.d.ts.map +1 -0
- package/dist/engine/nodeDeliver.js +81 -0
- package/dist/engine/nodeDeliver.js.map +1 -0
- package/dist/engine/observerToken.d.ts +110 -0
- package/dist/engine/observerToken.d.ts.map +1 -0
- package/dist/engine/observerToken.js +528 -0
- package/dist/engine/observerToken.js.map +1 -0
- package/dist/engine/search.d.ts +4 -0
- package/dist/engine/search.d.ts.map +1 -1
- package/dist/engine/search.js +6 -1
- package/dist/engine/search.js.map +1 -1
- package/dist/engine/thread.d.ts +4 -3
- package/dist/engine/thread.d.ts.map +1 -1
- package/dist/engine/thread.js +45 -17
- package/dist/engine/thread.js.map +1 -1
- package/dist/engine/wsAuth.d.ts +32 -0
- package/dist/engine/wsAuth.d.ts.map +1 -0
- package/dist/engine/wsAuth.js +65 -0
- package/dist/engine/wsAuth.js.map +1 -0
- package/dist/engine/wsTransform.d.ts.map +1 -1
- package/dist/engine/wsTransform.js +52 -36
- package/dist/engine/wsTransform.js.map +1 -1
- package/dist/engine.d.ts.map +1 -1
- package/dist/engine.js +37 -86
- package/dist/engine.js.map +1 -1
- package/dist/entrypoints/node.d.ts.map +1 -1
- package/dist/entrypoints/node.js +20 -57
- package/dist/entrypoints/node.js.map +1 -1
- package/dist/env.d.ts +3 -1
- package/dist/env.d.ts.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -1
- package/dist/lib/httpError.d.ts +5 -1
- package/dist/lib/httpError.d.ts.map +1 -1
- package/dist/lib/httpError.js +5 -2
- package/dist/lib/httpError.js.map +1 -1
- package/dist/lib/httpQuery.d.ts +28 -0
- package/dist/lib/httpQuery.d.ts.map +1 -0
- package/dist/lib/httpQuery.js +32 -0
- package/dist/lib/httpQuery.js.map +1 -0
- package/dist/lib/httpResponse.d.ts +15 -2
- package/dist/lib/httpResponse.d.ts.map +1 -1
- package/dist/lib/httpResponse.js +35 -7
- package/dist/lib/httpResponse.js.map +1 -1
- package/dist/middleware/auth.d.ts +8 -0
- package/dist/middleware/auth.d.ts.map +1 -1
- package/dist/middleware/auth.js +65 -2
- package/dist/middleware/auth.js.map +1 -1
- package/dist/middleware/idempotency.d.ts +30 -0
- package/dist/middleware/idempotency.d.ts.map +1 -1
- package/dist/middleware/idempotency.js +14 -0
- package/dist/middleware/idempotency.js.map +1 -1
- package/dist/middleware/logger.d.ts.map +1 -1
- package/dist/middleware/logger.js +4 -4
- package/dist/middleware/logger.js.map +1 -1
- package/dist/middleware/planLimits.d.ts.map +1 -1
- package/dist/middleware/planLimits.js +11 -9
- package/dist/middleware/planLimits.js.map +1 -1
- package/dist/middleware/rateLimit.d.ts.map +1 -1
- package/dist/middleware/rateLimit.js +15 -8
- package/dist/middleware/rateLimit.js.map +1 -1
- package/dist/middleware/usageTracker.d.ts.map +1 -1
- package/dist/middleware/usageTracker.js +2 -1
- package/dist/middleware/usageTracker.js.map +1 -1
- package/dist/ports/auth.d.ts +6 -2
- package/dist/ports/auth.d.ts.map +1 -1
- package/dist/ports/entitlements.d.ts +3 -1
- package/dist/ports/entitlements.d.ts.map +1 -1
- package/dist/ports/index.d.ts +0 -14
- package/dist/ports/index.d.ts.map +1 -1
- package/dist/ports/realtime.d.ts +4 -1
- package/dist/ports/realtime.d.ts.map +1 -1
- package/dist/providers/static-entitlements.js +4 -4
- package/dist/providers/static-entitlements.js.map +1 -1
- package/dist/routes/a2a.d.ts.map +1 -1
- package/dist/routes/a2a.js +41 -83
- package/dist/routes/a2a.js.map +1 -1
- package/dist/routes/action.d.ts.map +1 -1
- package/dist/routes/action.js +45 -42
- package/dist/routes/action.js.map +1 -1
- package/dist/routes/agent.d.ts.map +1 -1
- package/dist/routes/agent.js +172 -120
- package/dist/routes/agent.js.map +1 -1
- package/dist/routes/certify.d.ts.map +1 -1
- package/dist/routes/certify.js +21 -35
- package/dist/routes/certify.js.map +1 -1
- package/dist/routes/channel.d.ts.map +1 -1
- package/dist/routes/channel.js +69 -81
- package/dist/routes/channel.js.map +1 -1
- package/dist/routes/console.d.ts.map +1 -1
- package/dist/routes/console.js +60 -40
- package/dist/routes/console.js.map +1 -1
- package/dist/routes/delivery.d.ts.map +1 -1
- package/dist/routes/delivery.js +22 -54
- package/dist/routes/delivery.js.map +1 -1
- package/dist/routes/deliveryRouting.d.ts +6 -0
- package/dist/routes/deliveryRouting.d.ts.map +1 -1
- package/dist/routes/deliveryRouting.js +297 -34
- package/dist/routes/deliveryRouting.js.map +1 -1
- package/dist/routes/directory.d.ts.map +1 -1
- package/dist/routes/directory.js +47 -63
- package/dist/routes/directory.js.map +1 -1
- package/dist/routes/dm.d.ts.map +1 -1
- package/dist/routes/dm.js +21 -42
- package/dist/routes/dm.js.map +1 -1
- package/dist/routes/fanout.d.ts +2 -1
- package/dist/routes/fanout.d.ts.map +1 -1
- package/dist/routes/fanout.js +38 -20
- package/dist/routes/fanout.js.map +1 -1
- package/dist/routes/file.d.ts.map +1 -1
- package/dist/routes/file.js +48 -44
- package/dist/routes/file.js.map +1 -1
- package/dist/routes/groupDm.d.ts.map +1 -1
- package/dist/routes/groupDm.js +23 -48
- package/dist/routes/groupDm.js.map +1 -1
- package/dist/routes/inboundWebhook.d.ts.map +1 -1
- package/dist/routes/inboundWebhook.js +17 -35
- package/dist/routes/inboundWebhook.js.map +1 -1
- package/dist/routes/inbox.d.ts.map +1 -1
- package/dist/routes/inbox.js +2 -1
- package/dist/routes/inbox.js.map +1 -1
- package/dist/routes/message.d.ts.map +1 -1
- package/dist/routes/message.js +60 -53
- package/dist/routes/message.js.map +1 -1
- package/dist/routes/node.d.ts.map +1 -1
- package/dist/routes/node.js +173 -10
- package/dist/routes/node.js.map +1 -1
- package/dist/routes/observerToken.d.ts +4 -0
- package/dist/routes/observerToken.d.ts.map +1 -0
- package/dist/routes/observerToken.js +105 -0
- package/dist/routes/observerToken.js.map +1 -0
- package/dist/routes/presence.d.ts.map +1 -1
- package/dist/routes/presence.js +10 -6
- package/dist/routes/presence.js.map +1 -1
- package/dist/routes/reaction.d.ts.map +1 -1
- package/dist/routes/reaction.js +69 -28
- package/dist/routes/reaction.js.map +1 -1
- package/dist/routes/receipt.d.ts.map +1 -1
- package/dist/routes/receipt.js +20 -3
- package/dist/routes/receipt.js.map +1 -1
- package/dist/routes/routing.d.ts.map +1 -1
- package/dist/routes/routing.js +38 -51
- package/dist/routes/routing.js.map +1 -1
- package/dist/routes/search.d.ts.map +1 -1
- package/dist/routes/search.js +21 -15
- package/dist/routes/search.js.map +1 -1
- package/dist/routes/thread.d.ts.map +1 -1
- package/dist/routes/thread.js +36 -37
- package/dist/routes/thread.js.map +1 -1
- package/dist/routes/workspace.d.ts.map +1 -1
- package/dist/routes/workspace.js +57 -225
- package/dist/routes/workspace.js.map +1 -1
- package/package.json +3 -3
- package/dist/lib/fleetNodes.d.ts +0 -9
- package/dist/lib/fleetNodes.d.ts.map +0 -1
- package/dist/lib/fleetNodes.js +0 -66
- package/dist/lib/fleetNodes.js.map +0 -1
- package/dist/lib/workspaceStream.d.ts +0 -9
- package/dist/lib/workspaceStream.d.ts.map +0 -1
- package/dist/lib/workspaceStream.js +0 -53
- package/dist/lib/workspaceStream.js.map +0 -1
- package/dist/middleware/fleetNodes.d.ts +0 -10
- package/dist/middleware/fleetNodes.d.ts.map +0 -1
- package/dist/middleware/fleetNodes.js +0 -18
- package/dist/middleware/fleetNodes.js.map +0 -1
package/dist/routes/console.js
CHANGED
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
import { Hono } from 'hono';
|
|
2
2
|
import { z } from 'zod';
|
|
3
|
-
import {
|
|
3
|
+
import { requireWorkspaceRead } from '../middleware/auth.js';
|
|
4
4
|
import { rateLimit } from '../middleware/rateLimit.js';
|
|
5
5
|
import * as consoleEngine from '../engine/console.js';
|
|
6
|
+
import { filterObserverSearchResults, getObserverTokenFromContext, } from '../engine/observerToken.js';
|
|
6
7
|
import { errorResponse } from '../lib/httpError.js';
|
|
8
|
+
import { jsonOk, parseQueryParams } from '../lib/httpResponse.js';
|
|
9
|
+
import { positiveIntQueryParam } from '../lib/httpQuery.js';
|
|
7
10
|
export const consoleRoutes = new Hono();
|
|
8
11
|
const listLogsQuerySchema = z.object({
|
|
9
|
-
limit:
|
|
12
|
+
limit: positiveIntQueryParam({ max: 100 }),
|
|
10
13
|
before: z.string().min(1).optional(),
|
|
11
14
|
agent_id: z.string().min(1).optional(),
|
|
12
15
|
channel_id: z.string().min(1).optional(),
|
|
@@ -14,22 +17,30 @@ const listLogsQuerySchema = z.object({
|
|
|
14
17
|
delivery_kind: z.enum(['channel', 'dm']).optional(),
|
|
15
18
|
});
|
|
16
19
|
const windowQuerySchema = z.object({
|
|
17
|
-
days:
|
|
20
|
+
days: positiveIntQueryParam({ defaultValue: 7, max: 30 }),
|
|
18
21
|
});
|
|
19
22
|
const agentStatsQuerySchema = z.object({
|
|
20
|
-
days:
|
|
21
|
-
limit:
|
|
23
|
+
days: positiveIntQueryParam({ defaultValue: 7, max: 30 }),
|
|
24
|
+
limit: positiveIntQueryParam({ defaultValue: 20, max: 100 }),
|
|
22
25
|
});
|
|
23
|
-
|
|
26
|
+
async function visibleMessageLogsForObserver(db, workspaceId, days, observer) {
|
|
27
|
+
const logs = await consoleEngine.listMessageLogsForWindow(db, workspaceId, days);
|
|
28
|
+
return filterObserverSearchResults(db, workspaceId, observer, logs, { eventTypes: consoleMessageLogEventTypes });
|
|
29
|
+
}
|
|
30
|
+
function consoleMessageLogEventTypes(log) {
|
|
31
|
+
if (!log.conversation_id)
|
|
32
|
+
return ['message.created'];
|
|
33
|
+
// channel_type 2 = group DM, 1 = 1:1 DM. Classify by the log's real type so an
|
|
34
|
+
// observer filtering on only one DM event type does not see the other.
|
|
35
|
+
return log.channel_type === 2 ? ['group_dm.received'] : ['dm.received'];
|
|
36
|
+
}
|
|
37
|
+
consoleRoutes.get('/console/messages', requireWorkspaceRead('messages:read'), rateLimit, async (c) => {
|
|
24
38
|
try {
|
|
25
39
|
const workspace = c.get('workspace');
|
|
26
40
|
const db = c.get('db');
|
|
27
|
-
const parsed =
|
|
28
|
-
if (!parsed.
|
|
29
|
-
return
|
|
30
|
-
ok: false,
|
|
31
|
-
error: { code: 'invalid_request', message: 'Invalid console message query' },
|
|
32
|
-
}, 400);
|
|
41
|
+
const parsed = parseQueryParams(c, listLogsQuerySchema, 'Invalid console message query');
|
|
42
|
+
if (!parsed.ok) {
|
|
43
|
+
return parsed.response;
|
|
33
44
|
}
|
|
34
45
|
const data = await consoleEngine.listMessageLogs(db, workspace.id, {
|
|
35
46
|
limit: parsed.data.limit,
|
|
@@ -39,61 +50,70 @@ consoleRoutes.get('/console/messages', requireAuth, rateLimit, async (c) => {
|
|
|
39
50
|
conversationId: parsed.data.conversation_id,
|
|
40
51
|
deliveryKind: parsed.data.delivery_kind,
|
|
41
52
|
});
|
|
42
|
-
|
|
53
|
+
const visible = await filterObserverSearchResults(db, workspace.id, getObserverTokenFromContext(c), data.map((item) => ({
|
|
54
|
+
...item,
|
|
55
|
+
channel_name: item.channel_name ?? undefined,
|
|
56
|
+
})), { eventTypes: consoleMessageLogEventTypes });
|
|
57
|
+
const response = visible.map(({ channel_type: _channelType, ...item }) => item);
|
|
58
|
+
return jsonOk(c, response);
|
|
43
59
|
}
|
|
44
60
|
catch (err) {
|
|
45
61
|
return errorResponse(c, err);
|
|
46
62
|
}
|
|
47
63
|
});
|
|
48
|
-
consoleRoutes.get('/console/stats',
|
|
64
|
+
consoleRoutes.get('/console/stats', requireWorkspaceRead('activity:read'), rateLimit, async (c) => {
|
|
49
65
|
try {
|
|
50
66
|
const workspace = c.get('workspace');
|
|
51
67
|
const db = c.get('db');
|
|
52
|
-
const parsed =
|
|
53
|
-
if (!parsed.
|
|
54
|
-
return
|
|
55
|
-
ok: false,
|
|
56
|
-
error: { code: 'invalid_request', message: 'Invalid console stats query' },
|
|
57
|
-
}, 400);
|
|
68
|
+
const parsed = parseQueryParams(c, windowQuerySchema, 'Invalid console stats query');
|
|
69
|
+
if (!parsed.ok) {
|
|
70
|
+
return parsed.response;
|
|
58
71
|
}
|
|
59
|
-
const
|
|
60
|
-
|
|
72
|
+
const days = parsed.data.days ?? 7;
|
|
73
|
+
const observer = getObserverTokenFromContext(c);
|
|
74
|
+
const data = observer
|
|
75
|
+
? consoleEngine.summarizeConsoleOverview(await visibleMessageLogsForObserver(db, workspace.id, days, observer), days)
|
|
76
|
+
: await consoleEngine.getConsoleOverview(db, workspace.id, days);
|
|
77
|
+
return jsonOk(c, data);
|
|
61
78
|
}
|
|
62
79
|
catch (err) {
|
|
63
80
|
return errorResponse(c, err);
|
|
64
81
|
}
|
|
65
82
|
});
|
|
66
|
-
consoleRoutes.get('/console/agents',
|
|
83
|
+
consoleRoutes.get('/console/agents', requireWorkspaceRead('agents:read'), rateLimit, async (c) => {
|
|
67
84
|
try {
|
|
68
85
|
const workspace = c.get('workspace');
|
|
69
86
|
const db = c.get('db');
|
|
70
|
-
const parsed =
|
|
71
|
-
if (!parsed.
|
|
72
|
-
return
|
|
73
|
-
ok: false,
|
|
74
|
-
error: { code: 'invalid_request', message: 'Invalid console agent query' },
|
|
75
|
-
}, 400);
|
|
87
|
+
const parsed = parseQueryParams(c, agentStatsQuerySchema, 'Invalid console agent query');
|
|
88
|
+
if (!parsed.ok) {
|
|
89
|
+
return parsed.response;
|
|
76
90
|
}
|
|
77
|
-
const
|
|
78
|
-
|
|
91
|
+
const days = parsed.data.days ?? 7;
|
|
92
|
+
const limit = parsed.data.limit ?? 20;
|
|
93
|
+
const observer = getObserverTokenFromContext(c);
|
|
94
|
+
const data = observer
|
|
95
|
+
? consoleEngine.summarizeAgentStats(await visibleMessageLogsForObserver(db, workspace.id, days, observer), limit)
|
|
96
|
+
: await consoleEngine.getAgentStats(db, workspace.id, days, limit);
|
|
97
|
+
return jsonOk(c, data);
|
|
79
98
|
}
|
|
80
99
|
catch (err) {
|
|
81
100
|
return errorResponse(c, err);
|
|
82
101
|
}
|
|
83
102
|
});
|
|
84
|
-
consoleRoutes.get('/console/costs',
|
|
103
|
+
consoleRoutes.get('/console/costs', requireWorkspaceRead('activity:read'), rateLimit, async (c) => {
|
|
85
104
|
try {
|
|
86
105
|
const workspace = c.get('workspace');
|
|
87
106
|
const db = c.get('db');
|
|
88
|
-
const parsed =
|
|
89
|
-
if (!parsed.
|
|
90
|
-
return
|
|
91
|
-
ok: false,
|
|
92
|
-
error: { code: 'invalid_request', message: 'Invalid console cost query' },
|
|
93
|
-
}, 400);
|
|
107
|
+
const parsed = parseQueryParams(c, windowQuerySchema, 'Invalid console cost query');
|
|
108
|
+
if (!parsed.ok) {
|
|
109
|
+
return parsed.response;
|
|
94
110
|
}
|
|
95
|
-
const
|
|
96
|
-
|
|
111
|
+
const days = parsed.data.days ?? 7;
|
|
112
|
+
const observer = getObserverTokenFromContext(c);
|
|
113
|
+
const data = observer
|
|
114
|
+
? consoleEngine.summarizeCostStats(await visibleMessageLogsForObserver(db, workspace.id, days, observer), days)
|
|
115
|
+
: await consoleEngine.getCostStats(db, workspace.id, days);
|
|
116
|
+
return jsonOk(c, data);
|
|
97
117
|
}
|
|
98
118
|
catch (err) {
|
|
99
119
|
return errorResponse(c, err);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"console.js","sourceRoot":"","sources":["../../src/routes/console.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"console.js","sourceRoot":"","sources":["../../src/routes/console.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delivery.d.ts","sourceRoot":"","sources":["../../src/routes/delivery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"delivery.d.ts","sourceRoot":"","sources":["../../src/routes/delivery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAiBxC,eAAO,MAAM,cAAc,qDAAqB,CAAC"}
|
package/dist/routes/delivery.js
CHANGED
|
@@ -6,6 +6,7 @@ import { fanoutToAgents } from './fanout.js';
|
|
|
6
6
|
import { notifyDeliveryFailures } from './deliveryRouting.js';
|
|
7
7
|
import { runInBackground } from './background.js';
|
|
8
8
|
import { errorResponse } from '../lib/httpError.js';
|
|
9
|
+
import { jsonNotFound, jsonOk, parseJsonBody, parseOptionalJsonBody, parseQueryParams, } from '../lib/httpResponse.js';
|
|
9
10
|
import { ListDeliveriesQuerySchema, FailDeliveryRequestSchema, DeferDeliveryRequestSchema } from '@relaycast/types';
|
|
10
11
|
export const deliveryRoutes = new Hono();
|
|
11
12
|
// GET /v1/deliveries - durable delivery queue for the calling agent.
|
|
@@ -13,15 +14,9 @@ export const deliveryRoutes = new Hono();
|
|
|
13
14
|
// can replay what they missed after reconnect.
|
|
14
15
|
deliveryRoutes.get('/deliveries', requireAgentToken, rateLimit, async (c) => {
|
|
15
16
|
try {
|
|
16
|
-
const parsed = ListDeliveriesQuerySchema
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
});
|
|
20
|
-
if (!parsed.success) {
|
|
21
|
-
return c.json({
|
|
22
|
-
ok: false,
|
|
23
|
-
error: { code: 'invalid_request', message: 'Invalid status or limit' },
|
|
24
|
-
}, 400);
|
|
17
|
+
const parsed = parseQueryParams(c, ListDeliveriesQuerySchema, 'Invalid status or limit');
|
|
18
|
+
if (!parsed.ok) {
|
|
19
|
+
return parsed.response;
|
|
25
20
|
}
|
|
26
21
|
const db = c.get('db');
|
|
27
22
|
const workspace = c.get('workspace');
|
|
@@ -31,7 +26,7 @@ deliveryRoutes.get('/deliveries', requireAgentToken, rateLimit, async (c) => {
|
|
|
31
26
|
runInBackground(c, notifyDeliveryFailures(c, expired), 'fanout delivery expired');
|
|
32
27
|
}
|
|
33
28
|
const result = await deliveryEngine.listDeliveries(db, workspace.id, agent.id, parsed.data);
|
|
34
|
-
return c
|
|
29
|
+
return jsonOk(c, result);
|
|
35
30
|
}
|
|
36
31
|
catch (err) {
|
|
37
32
|
return errorResponse(c, err);
|
|
@@ -46,10 +41,7 @@ deliveryRoutes.post('/deliveries/:id/ack', requireAgentToken, rateLimit, async (
|
|
|
46
41
|
const id = c.req.param('id');
|
|
47
42
|
const result = await deliveryEngine.ackDelivery(db, workspace.id, agent.id, id);
|
|
48
43
|
if (!result) {
|
|
49
|
-
return c
|
|
50
|
-
ok: false,
|
|
51
|
-
error: { code: 'delivery_not_found', message: 'Delivery not found' },
|
|
52
|
-
}, 404);
|
|
44
|
+
return jsonNotFound(c, 'delivery_not_found', 'Delivery not found');
|
|
53
45
|
}
|
|
54
46
|
// Only fan out when this call actually transitioned the delivery, so
|
|
55
47
|
// idempotent retries don't emit duplicate notifications.
|
|
@@ -59,7 +51,7 @@ deliveryRoutes.post('/deliveries/:id/ack', requireAgentToken, rateLimit, async (
|
|
|
59
51
|
message_id: result.delivery.message_id,
|
|
60
52
|
}), 'fanout delivery.delivered');
|
|
61
53
|
}
|
|
62
|
-
return c
|
|
54
|
+
return jsonOk(c, result.delivery);
|
|
63
55
|
}
|
|
64
56
|
catch (err) {
|
|
65
57
|
return errorResponse(c, err);
|
|
@@ -68,28 +60,9 @@ deliveryRoutes.post('/deliveries/:id/ack', requireAgentToken, rateLimit, async (
|
|
|
68
60
|
// POST /v1/deliveries/:id/fail - idempotently record a failed delivery.
|
|
69
61
|
deliveryRoutes.post('/deliveries/:id/fail', requireAgentToken, rateLimit, async (c) => {
|
|
70
62
|
try {
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
const bodyText = await c.req.text();
|
|
75
|
-
let raw = {};
|
|
76
|
-
if (bodyText.trim().length > 0) {
|
|
77
|
-
try {
|
|
78
|
-
raw = JSON.parse(bodyText);
|
|
79
|
-
}
|
|
80
|
-
catch {
|
|
81
|
-
return c.json({
|
|
82
|
-
ok: false,
|
|
83
|
-
error: { code: 'invalid_request', message: 'Invalid JSON body' },
|
|
84
|
-
}, 400);
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
const parsed = FailDeliveryRequestSchema.safeParse(raw);
|
|
88
|
-
if (!parsed.success) {
|
|
89
|
-
return c.json({
|
|
90
|
-
ok: false,
|
|
91
|
-
error: { code: 'invalid_request', message: 'Invalid fail payload' },
|
|
92
|
-
}, 400);
|
|
63
|
+
const parsed = await parseOptionalJsonBody(c, FailDeliveryRequestSchema, 'Invalid fail payload', { malformedBodyError: { code: 'invalid_request', message: 'Invalid JSON body' } });
|
|
64
|
+
if (!parsed.ok) {
|
|
65
|
+
return parsed.response;
|
|
93
66
|
}
|
|
94
67
|
const db = c.get('db');
|
|
95
68
|
const workspace = c.get('workspace');
|
|
@@ -97,10 +70,7 @@ deliveryRoutes.post('/deliveries/:id/fail', requireAgentToken, rateLimit, async
|
|
|
97
70
|
const id = c.req.param('id');
|
|
98
71
|
const result = await deliveryEngine.failDelivery(db, workspace.id, agent.id, id, parsed.data);
|
|
99
72
|
if (!result) {
|
|
100
|
-
return c
|
|
101
|
-
ok: false,
|
|
102
|
-
error: { code: 'delivery_not_found', message: 'Delivery not found' },
|
|
103
|
-
}, 404);
|
|
73
|
+
return jsonNotFound(c, 'delivery_not_found', 'Delivery not found');
|
|
104
74
|
}
|
|
105
75
|
if (result.changed) {
|
|
106
76
|
runInBackground(c, fanoutToAgents(c, [agent.id], 'delivery.failed', {
|
|
@@ -110,7 +80,7 @@ deliveryRoutes.post('/deliveries/:id/fail', requireAgentToken, rateLimit, async
|
|
|
110
80
|
retryable: result.delivery.retryable,
|
|
111
81
|
}), 'fanout delivery.failed');
|
|
112
82
|
}
|
|
113
|
-
return c
|
|
83
|
+
return jsonOk(c, result.delivery);
|
|
114
84
|
}
|
|
115
85
|
catch (err) {
|
|
116
86
|
return errorResponse(c, err);
|
|
@@ -119,13 +89,14 @@ deliveryRoutes.post('/deliveries/:id/fail', requireAgentToken, rateLimit, async
|
|
|
119
89
|
// POST /v1/deliveries/:id/defer - idempotently defer a delivery to available_at.
|
|
120
90
|
deliveryRoutes.post('/deliveries/:id/defer', requireAgentToken, rateLimit, async (c) => {
|
|
121
91
|
try {
|
|
122
|
-
const
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
92
|
+
const parsed = await parseJsonBody(c, DeferDeliveryRequestSchema, 'available_at must be an ISO-8601 timestamp', {
|
|
93
|
+
malformedBodyError: {
|
|
94
|
+
code: 'invalid_request',
|
|
95
|
+
message: 'available_at must be an ISO-8601 timestamp',
|
|
96
|
+
},
|
|
97
|
+
});
|
|
98
|
+
if (!parsed.ok) {
|
|
99
|
+
return parsed.response;
|
|
129
100
|
}
|
|
130
101
|
const db = c.get('db');
|
|
131
102
|
const workspace = c.get('workspace');
|
|
@@ -136,10 +107,7 @@ deliveryRoutes.post('/deliveries/:id/defer', requireAgentToken, rateLimit, async
|
|
|
136
107
|
reason: parsed.data.reason,
|
|
137
108
|
});
|
|
138
109
|
if (!result) {
|
|
139
|
-
return c
|
|
140
|
-
ok: false,
|
|
141
|
-
error: { code: 'delivery_not_found', message: 'Delivery not found' },
|
|
142
|
-
}, 404);
|
|
110
|
+
return jsonNotFound(c, 'delivery_not_found', 'Delivery not found');
|
|
143
111
|
}
|
|
144
112
|
if (result.changed) {
|
|
145
113
|
runInBackground(c, fanoutToAgents(c, [agent.id], 'delivery.deferred', {
|
|
@@ -149,7 +117,7 @@ deliveryRoutes.post('/deliveries/:id/defer', requireAgentToken, rateLimit, async
|
|
|
149
117
|
reason: result.delivery.reason,
|
|
150
118
|
}), 'fanout delivery.deferred');
|
|
151
119
|
}
|
|
152
|
-
return c
|
|
120
|
+
return jsonOk(c, result.delivery);
|
|
153
121
|
}
|
|
154
122
|
catch (err) {
|
|
155
123
|
return errorResponse(c, err);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delivery.js","sourceRoot":"","sources":["../../src/routes/delivery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,KAAK,cAAc,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,yBAAyB,EAAE,yBAAyB,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAC;AAEpH,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,IAAI,EAAU,CAAC;AAEjD,qEAAqE;AACrE,2EAA2E;AAC3E,+CAA+C;AAC/C,cAAc,CAAC,GAAG,CAChB,aAAa,EACb,iBAAiB,EACjB,SAAS,EACT,KAAK,EAAE,CAAC,EAAE,EAAE;IACV,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,
|
|
1
|
+
{"version":3,"file":"delivery.js","sourceRoot":"","sources":["../../src/routes/delivery.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,8 +2,14 @@ import type { Context } from 'hono';
|
|
|
2
2
|
import type { AppEnv } from '../env.js';
|
|
3
3
|
import * as deliveryEngine from '../engine/delivery.js';
|
|
4
4
|
import type { DeliveryFanoutRecord, DeliveryRejectionRecord } from '../engine/deliveryWrites.js';
|
|
5
|
+
import type { EngineDeps } from '../ports/index.js';
|
|
5
6
|
type HonoContext = Context<AppEnv>;
|
|
6
7
|
export declare function routeDeliveryOutcomes(c: HonoContext, deliveries: DeliveryFanoutRecord[], eventType: string, eventData: Record<string, unknown>): Promise<void>;
|
|
8
|
+
export declare function sweepDueHttpPushDeliveries(engine: EngineDeps, opts?: {
|
|
9
|
+
workspaceId?: string;
|
|
10
|
+
now?: Date;
|
|
11
|
+
limit?: number;
|
|
12
|
+
}): Promise<number>;
|
|
7
13
|
export declare function notifyDeliveryRejections(c: HonoContext, senderAgentId: string, rejections: DeliveryRejectionRecord[]): Promise<void>;
|
|
8
14
|
export declare function notifyDeliveryFailures(c: HonoContext, notices: deliveryEngine.DeliveryFailureNotice[]): Promise<void>;
|
|
9
15
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deliveryRouting.d.ts","sourceRoot":"","sources":["../../src/routes/deliveryRouting.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAEpC,OAAO,KAAK,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"deliveryRouting.d.ts","sourceRoot":"","sources":["../../src/routes/deliveryRouting.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAEpC,OAAO,KAAK,EAAE,MAAM,EAAiB,MAAM,WAAW,CAAC;AACvD,OAAO,KAAK,cAAc,MAAM,uBAAuB,CAAC;AAExD,OAAO,KAAK,EACV,oBAAoB,EACpB,uBAAuB,EACxB,MAAM,6BAA6B,CAAC;AAKrC,OAAO,KAAK,EAAY,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE9D,KAAK,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;AAyZnC,wBAAsB,qBAAqB,CACzC,CAAC,EAAE,WAAW,EACd,UAAU,EAAE,oBAAoB,EAAE,EAClC,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACjC,OAAO,CAAC,IAAI,CAAC,CAEf;AAED,wBAAsB,0BAA0B,CAC9C,MAAM,EAAE,UAAU,EAClB,IAAI,GAAE;IAAE,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,IAAI,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAO,GAC9D,OAAO,CAAC,MAAM,CAAC,CAWjB;AAED,wBAAsB,wBAAwB,CAC5C,CAAC,EAAE,WAAW,EACd,aAAa,EAAE,MAAM,EACrB,UAAU,EAAE,uBAAuB,EAAE,GACpC,OAAO,CAAC,IAAI,CAAC,CAaf;AAED,wBAAsB,sBAAsB,CAC1C,CAAC,EAAE,WAAW,EACd,OAAO,EAAE,cAAc,CAAC,qBAAqB,EAAE,GAC9C,OAAO,CAAC,IAAI,CAAC,CAcf"}
|