@relaycast/engine 12.0.0 → 12.2.0
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 +1 -0
- package/dist/adapters/node/index.js.map +1 -1
- package/dist/adapters/node/presence.d.ts +18 -0
- package/dist/adapters/node/presence.d.ts.map +1 -1
- package/dist/adapters/node/presence.js +82 -0
- package/dist/adapters/node/presence.js.map +1 -1
- package/dist/adapters/node/realtime.d.ts +4 -0
- package/dist/adapters/node/realtime.d.ts.map +1 -1
- package/dist/adapters/node/realtime.js +32 -5
- package/dist/adapters/node/realtime.js.map +1 -1
- package/dist/db/schema.d.ts +2 -2
- package/dist/engine/a2a.d.ts +3 -0
- package/dist/engine/a2a.d.ts.map +1 -1
- package/dist/engine/a2a.js +1 -0
- package/dist/engine/a2a.js.map +1 -1
- package/dist/engine/action.d.ts +14 -9
- package/dist/engine/action.d.ts.map +1 -1
- package/dist/engine/action.js +342 -80
- package/dist/engine/action.js.map +1 -1
- package/dist/engine/agent.d.ts +9 -3
- package/dist/engine/agent.d.ts.map +1 -1
- package/dist/engine/agent.js +58 -12
- package/dist/engine/agent.js.map +1 -1
- package/dist/engine/delivery.d.ts.map +1 -1
- package/dist/engine/delivery.js +9 -0
- package/dist/engine/delivery.js.map +1 -1
- package/dist/engine/deliveryWrites.d.ts +23 -0
- package/dist/engine/deliveryWrites.d.ts.map +1 -1
- package/dist/engine/deliveryWrites.js +50 -8
- package/dist/engine/deliveryWrites.js.map +1 -1
- package/dist/engine/eventDelivery.d.ts +1 -1
- package/dist/engine/groupDm.d.ts.map +1 -1
- package/dist/engine/groupDm.js +4 -0
- package/dist/engine/groupDm.js.map +1 -1
- package/dist/engine/inboundWebhook.d.ts.map +1 -1
- package/dist/engine/inboundWebhook.js +20 -4
- package/dist/engine/inboundWebhook.js.map +1 -1
- package/dist/engine/inbox.d.ts.map +1 -1
- package/dist/engine/inbox.js +17 -0
- package/dist/engine/inbox.js.map +1 -1
- package/dist/engine/invocationClaim.d.ts +32 -0
- package/dist/engine/invocationClaim.d.ts.map +1 -0
- package/dist/engine/invocationClaim.js +42 -0
- package/dist/engine/invocationClaim.js.map +1 -0
- package/dist/engine/message.d.ts.map +1 -1
- package/dist/engine/message.js +4 -0
- package/dist/engine/message.js.map +1 -1
- package/dist/engine/messageMetadata.d.ts +2 -0
- package/dist/engine/messageMetadata.d.ts.map +1 -1
- package/dist/engine/messageMetadata.js +3 -2
- package/dist/engine/messageMetadata.js.map +1 -1
- package/dist/engine/node.d.ts +59 -44
- package/dist/engine/node.d.ts.map +1 -1
- package/dist/engine/node.js +179 -26
- package/dist/engine/node.js.map +1 -1
- package/dist/engine/nodeLiveness.d.ts +34 -0
- package/dist/engine/nodeLiveness.d.ts.map +1 -0
- package/dist/engine/nodeLiveness.js +52 -0
- package/dist/engine/nodeLiveness.js.map +1 -0
- package/dist/engine/placement.d.ts.map +1 -1
- package/dist/engine/placement.js +15 -18
- package/dist/engine/placement.js.map +1 -1
- package/dist/engine/presence.d.ts +173 -1
- package/dist/engine/presence.d.ts.map +1 -1
- package/dist/engine/presence.js +112 -8
- package/dist/engine/presence.js.map +1 -1
- package/dist/engine/registrationAdmission.d.ts +40 -0
- package/dist/engine/registrationAdmission.d.ts.map +1 -0
- package/dist/engine/registrationAdmission.js +78 -0
- package/dist/engine/registrationAdmission.js.map +1 -0
- package/dist/engine/taskInvocation.d.ts +1 -1
- package/dist/engine/thread.d.ts.map +1 -1
- package/dist/engine/thread.js +8 -0
- package/dist/engine/thread.js.map +1 -1
- package/dist/engine/workspace.d.ts +26 -1
- package/dist/engine/workspace.d.ts.map +1 -1
- package/dist/engine/workspace.js +108 -7
- package/dist/engine/workspace.js.map +1 -1
- package/dist/engine/workspaceDrain.d.ts +38 -0
- package/dist/engine/workspaceDrain.d.ts.map +1 -0
- package/dist/engine/workspaceDrain.js +202 -0
- package/dist/engine/workspaceDrain.js.map +1 -0
- package/dist/engine.d.ts.map +1 -1
- package/dist/engine.js +31 -0
- package/dist/engine.js.map +1 -1
- package/dist/index.d.ts +6 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/engineDiagnostics.d.ts +26 -0
- package/dist/lib/engineDiagnostics.d.ts.map +1 -0
- package/dist/lib/engineDiagnostics.js +100 -0
- package/dist/lib/engineDiagnostics.js.map +1 -0
- package/dist/lib/httpError.d.ts.map +1 -1
- package/dist/lib/httpError.js +5 -1
- package/dist/lib/httpError.js.map +1 -1
- package/dist/middleware/admission.d.ts +7 -0
- package/dist/middleware/admission.d.ts.map +1 -1
- package/dist/middleware/admission.js +19 -1
- package/dist/middleware/admission.js.map +1 -1
- package/dist/middleware/rateLimit.d.ts.map +1 -1
- package/dist/middleware/rateLimit.js +8 -1
- package/dist/middleware/rateLimit.js.map +1 -1
- package/dist/ports/admission.d.ts +24 -3
- package/dist/ports/admission.d.ts.map +1 -1
- package/dist/ports/database.d.ts.map +1 -1
- package/dist/ports/database.js +6 -1
- package/dist/ports/database.js.map +1 -1
- package/dist/ports/diagnostics.d.ts +42 -0
- package/dist/ports/diagnostics.d.ts.map +1 -0
- package/dist/ports/diagnostics.js +13 -0
- package/dist/ports/diagnostics.js.map +1 -0
- package/dist/ports/index.d.ts +13 -1
- package/dist/ports/index.d.ts.map +1 -1
- package/dist/ports/index.js.map +1 -1
- package/dist/ports/nodeLiveness.d.ts +23 -0
- package/dist/ports/nodeLiveness.d.ts.map +1 -0
- package/dist/ports/nodeLiveness.js +12 -0
- package/dist/ports/nodeLiveness.js.map +1 -0
- package/dist/ports/presence.d.ts +21 -0
- package/dist/ports/presence.d.ts.map +1 -1
- package/dist/ports/realtime.d.ts +18 -0
- package/dist/ports/realtime.d.ts.map +1 -1
- package/dist/ports/realtime.js.map +1 -1
- package/dist/routes/a2a.d.ts.map +1 -1
- package/dist/routes/a2a.js +2 -0
- package/dist/routes/a2a.js.map +1 -1
- package/dist/routes/action.js +3 -0
- package/dist/routes/action.js.map +1 -1
- package/dist/routes/agent.d.ts.map +1 -1
- package/dist/routes/agent.js +5 -1
- package/dist/routes/agent.js.map +1 -1
- package/dist/routes/node.d.ts.map +1 -1
- package/dist/routes/node.js +2 -1
- package/dist/routes/node.js.map +1 -1
- package/dist/routes/workspace.js +10 -2
- package/dist/routes/workspace.js.map +1 -1
- package/package.json +3 -3
|
@@ -2,6 +2,7 @@ import type { Context } from 'hono';
|
|
|
2
2
|
import type { AppEnv } from '../env.js';
|
|
3
3
|
import type { AdmissionAction, AdmissionDenial } from '../ports/admission.js';
|
|
4
4
|
import type { Workspace } from '../ports/auth.js';
|
|
5
|
+
import { type RegistrationAdmission } from '../engine/registrationAdmission.js';
|
|
5
6
|
/**
|
|
6
7
|
* Ask the host whether `action` may proceed. No hook, or a hook that throws,
|
|
7
8
|
* admits it: a host's metering outage must not take messaging down.
|
|
@@ -39,4 +40,10 @@ export declare const admitMessage: import("hono").MiddlewareHandler<AppEnv, stri
|
|
|
39
40
|
* never for a replay of a stored receipt.
|
|
40
41
|
*/
|
|
41
42
|
export declare function assertMessageAdmitted(c: Context<AppEnv>): void;
|
|
43
|
+
/**
|
|
44
|
+
* The registration admission for the authenticated workspace, or `undefined`
|
|
45
|
+
* when the host has no `admit` hook. Pass it to the node and agent
|
|
46
|
+
* registration paths, which consult it only for a NEW registration.
|
|
47
|
+
*/
|
|
48
|
+
export declare function registrationAdmission(c: Context<AppEnv>): RegistrationAdmission | undefined;
|
|
42
49
|
//# sourceMappingURL=admission.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admission.d.ts","sourceRoot":"","sources":["../../src/middleware/admission.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAGpC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC9E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"admission.d.ts","sourceRoot":"","sources":["../../src/middleware/admission.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAGpC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC9E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAA+B,KAAK,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAM7G;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,EAClB,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,eAAe,GACtB,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAYjC;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,eAAe;;;;;;iXAW1E;AAED,yFAAyF;AACzF,wBAAgB,eAAe,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,eAAe,GAAG,IAAI,CAUvG;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,YAAY,gEAavB,CAAC;AAEH;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,IAAI,CAG9D;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,qBAAqB,GAAG,SAAS,CAM3F"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { createMiddleware } from 'hono/factory';
|
|
2
|
+
import { createRegistrationAdmission } from '../engine/registrationAdmission.js';
|
|
2
3
|
import { AdmissionDeniedError } from '../lib/admissionError.js';
|
|
4
|
+
import { getRequestLogger, toErrorDetails } from '../lib/logger.js';
|
|
3
5
|
import { setRetryContract } from '../lib/throttle.js';
|
|
4
6
|
import { runInBackground } from '../routes/background.js';
|
|
5
7
|
/**
|
|
@@ -13,7 +15,11 @@ export async function resolveAdmission(c, workspace, action) {
|
|
|
13
15
|
try {
|
|
14
16
|
return (await admission.admit({ workspace, action })) ?? null;
|
|
15
17
|
}
|
|
16
|
-
catch {
|
|
18
|
+
catch (error) {
|
|
19
|
+
getRequestLogger(c, 'admission').warn('admission hook failed; admitting request', {
|
|
20
|
+
action,
|
|
21
|
+
...toErrorDetails(error),
|
|
22
|
+
});
|
|
17
23
|
return null;
|
|
18
24
|
}
|
|
19
25
|
}
|
|
@@ -79,4 +85,16 @@ export function assertMessageAdmitted(c) {
|
|
|
79
85
|
if (denial)
|
|
80
86
|
throw new AdmissionDeniedError(denial);
|
|
81
87
|
}
|
|
88
|
+
/**
|
|
89
|
+
* The registration admission for the authenticated workspace, or `undefined`
|
|
90
|
+
* when the host has no `admit` hook. Pass it to the node and agent
|
|
91
|
+
* registration paths, which consult it only for a NEW registration.
|
|
92
|
+
*/
|
|
93
|
+
export function registrationAdmission(c) {
|
|
94
|
+
return createRegistrationAdmission({
|
|
95
|
+
db: c.get('db'),
|
|
96
|
+
admission: c.get('engine').admission,
|
|
97
|
+
workspace: c.get('workspace'),
|
|
98
|
+
});
|
|
99
|
+
}
|
|
82
100
|
//# sourceMappingURL=admission.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admission.js","sourceRoot":"","sources":["../../src/middleware/admission.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAIhD,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE1D;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,CAAkB,EAClB,SAAoB,EACpB,MAAuB;IAEvB,MAAM,SAAS,GAAG,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC;IAC5C,IAAI,CAAC,SAAS,EAAE,KAAK;QAAE,OAAO,IAAI,CAAC;IACnC,IAAI,CAAC;QACH,OAAO,CAAC,MAAM,SAAS,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC;IAChE,CAAC;IAAC,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"admission.js","sourceRoot":"","sources":["../../src/middleware/admission.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rateLimit.d.ts","sourceRoot":"","sources":["../../src/middleware/rateLimit.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"rateLimit.d.ts","sourceRoot":"","sources":["../../src/middleware/rateLimit.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAOxC,+EAA+E;AAC/E,eAAO,MAAM,6BAA6B,QAAS,CAAC;AAQpD,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAmCpD,CAAC;AAEF,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CA8BvE;AAED,eAAO,MAAM,SAAS,gEAyDpB,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { createMiddleware } from 'hono/factory';
|
|
2
2
|
import { jsonError } from '../lib/httpResponse.js';
|
|
3
|
+
import { getRequestLogger, toErrorDetails } from '../lib/logger.js';
|
|
3
4
|
import { RATE_LIMIT_WINDOW_MS, rateLimitWindow, rateLimitWindowResetAt, setRetryContract } from '../lib/throttle.js';
|
|
4
5
|
import { admissionDeniedResponse, reportCommitted, resolveAdmission } from './admission.js';
|
|
5
6
|
import { presenceRefresh } from './presenceRefresh.js';
|
|
@@ -97,7 +98,13 @@ export const rateLimit = createMiddleware(async (c, next) => {
|
|
|
97
98
|
try {
|
|
98
99
|
globalLimit = validRatePerMinute(await admission.rateLimitPerMinute(workspace)) ?? globalLimit;
|
|
99
100
|
}
|
|
100
|
-
catch {
|
|
101
|
+
catch (error) {
|
|
102
|
+
// A failing ceiling hook keeps the configured limit. Log it: the same
|
|
103
|
+
// outage is why admit() fails open, and a silent fallback hides it.
|
|
104
|
+
getRequestLogger(c, 'admission').warn('admission rate limit hook failed; keeping configured ceiling', {
|
|
105
|
+
...toErrorDetails(error),
|
|
106
|
+
});
|
|
107
|
+
}
|
|
101
108
|
}
|
|
102
109
|
const limit = routeKey ? Math.ceil(globalLimit * ROUTE_MULTIPLIERS[routeKey]) : globalLimit;
|
|
103
110
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rateLimit.js","sourceRoot":"","sources":["../../src/middleware/rateLimit.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"rateLimit.js","sourceRoot":"","sources":["../../src/middleware/rateLimit.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +1,34 @@
|
|
|
1
1
|
import type { Workspace } from './auth.js';
|
|
2
|
+
/**
|
|
3
|
+
* A new registration a host can cap.
|
|
4
|
+
*
|
|
5
|
+
* - `register_device`: a host-enrolled node (`POST /v1/nodes`, any role or
|
|
6
|
+
* transport). An agent's implicit direct node is its own WebSocket, not a
|
|
7
|
+
* device, and is never admitted as one.
|
|
8
|
+
* - `register_agent`: a new non-human identity (`POST /v1/agents`, a new A2A
|
|
9
|
+
* proxy, or a node's `agent.register` frame).
|
|
10
|
+
* - `register_human`: a new `type: human` identity.
|
|
11
|
+
*
|
|
12
|
+
* Re-enrolling an established node or re-registering an established name is
|
|
13
|
+
* not a new registration and is never admitted as one.
|
|
14
|
+
*/
|
|
15
|
+
export type RegistrationAdmissionAction = 'register_device' | 'register_agent' | 'register_human';
|
|
2
16
|
/**
|
|
3
17
|
* What an admitted request is about to do.
|
|
4
18
|
*
|
|
5
19
|
* - `request`: any authenticated, rate-limited request.
|
|
6
20
|
* - `message`: a message send (channel post, DM, group DM, thread reply).
|
|
21
|
+
* - a {@link RegistrationAdmissionAction}: a new device or identity.
|
|
7
22
|
*/
|
|
8
|
-
export type AdmissionAction = 'request' | 'message';
|
|
23
|
+
export type AdmissionAction = 'request' | 'message' | RegistrationAdmissionAction;
|
|
9
24
|
export interface AdmissionContext {
|
|
10
25
|
workspace: Workspace;
|
|
11
26
|
action: AdmissionAction;
|
|
27
|
+
/**
|
|
28
|
+
* Set for a registration action: how many of that kind the workspace has
|
|
29
|
+
* registered now, before this one. Released identities hold no slot.
|
|
30
|
+
*/
|
|
31
|
+
registered?: number;
|
|
12
32
|
}
|
|
13
33
|
/**
|
|
14
34
|
* A host refusal, rendered as `{ ok: false, error: { code, message, ...details } }`
|
|
@@ -46,8 +66,9 @@ export interface AdmissionHooks {
|
|
|
46
66
|
*/
|
|
47
67
|
admit?(ctx: AdmissionContext): Promise<AdmissionDenial | null | undefined>;
|
|
48
68
|
/**
|
|
49
|
-
* Called after an admitted
|
|
50
|
-
* The response does not wait on it.
|
|
69
|
+
* Called after an admitted `request` or `message` succeeds (2xx, not an
|
|
70
|
+
* idempotent replay). The response does not wait on it. Registrations are
|
|
71
|
+
* not reported: `registered` is a live count.
|
|
51
72
|
*/
|
|
52
73
|
committed?(ctx: AdmissionContext): Promise<void>;
|
|
53
74
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admission.d.ts","sourceRoot":"","sources":["../../src/ports/admission.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAE3C
|
|
1
|
+
{"version":3,"file":"admission.d.ts","sourceRoot":"","sources":["../../src/ports/admission.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAE3C;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,2BAA2B,GAAG,iBAAiB,GAAG,gBAAgB,GAAG,gBAAgB,CAAC;AAElG;;;;;;GAMG;AACH,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,SAAS,GAAG,2BAA2B,CAAC;AAElF,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,SAAS,CAAC;IACrB,MAAM,EAAE,eAAe,CAAC;IACxB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,wBAAwB;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,mEAAmE;IACnE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,cAAc;IAC7B;;;;;;;OAOG;IACH,KAAK,CAAC,CAAC,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC;IAE3E;;;;OAIG;IACH,SAAS,CAAC,CAAC,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjD;;;OAGG;IACH,kBAAkB,CAAC,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CAC5D"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../src/ports/database.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../src/ports/database.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,KAAK,KAAK,MAAM,MAAM,iBAAiB,CAAC;AAE/C;;;;;;;;;;;;;;;;;;;;GAoBG;AAkBH,MAAM,MAAM,QAAQ,CAAC,UAAU,GAAG,OAAO,IAAI,kBAAkB,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,MAAM,CAAC,CAAC;AAEpG;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,qBAAqB;IACpC,eAAe,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;CAClE;AAED;;;;;GAKG;AACH,MAAM,MAAM,WAAW,GAAG,SAAS,CAAC,QAAQ,CAAC,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;AAErE;;;;;;;;GAQG;AACH,MAAM,MAAM,kBAAkB,GAAG,CAAC,EAAE,EAAE,QAAQ,KAAK,SAAS,WAAW,EAAE,CAAC;AAC1E,MAAM,MAAM,gBAAgB,GAAG,SAAS,WAAW,EAAE,GAAG,kBAAkB,CAAC;AAE3E,MAAM,WAAW,sBAAsB;IACrC,mFAAmF;IACnF,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,UAAU,EAAE,SAAS,CAAC,WAAW,EAAE,GAAG,WAAW,EAAE,CAAC,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;CACjF;AAcD;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAMvF;AAqDD,+EAA+E;AAC/E,wBAAsB,eAAe,CACnC,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,gBAAgB,EAAE,OAAO,GAAE,sBAA2B,GAC1E,OAAO,CAAC,OAAO,EAAE,CAAC,CAQpB;AAED;;GAEG;AACH,MAAM,MAAM,sBAAsB,GAAG,kBAAkB,GAAG,6BAA6B,GAAG,0BAA0B,GAAG,iBAAiB,GAAG,eAAe,CAAC;AAE3J,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,sBAAsB,GAAG,SAAS,CAyBzF"}
|
package/dist/ports/database.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { configureNodeLiveness, nodeLivenessAuthority } from './nodeLiveness.js';
|
|
1
2
|
import { WorkspaceDeliveryCapacityError } from '../engine/workspaceDeliveryPolicy.js';
|
|
2
3
|
function buildStatements(input, db) {
|
|
3
4
|
return typeof input === 'function' ? input(db) : input;
|
|
@@ -16,7 +17,10 @@ async function runSequentially(statements) {
|
|
|
16
17
|
*/
|
|
17
18
|
export function runAtomic(db, fn) {
|
|
18
19
|
const { withTransaction } = db;
|
|
19
|
-
return withTransaction ? withTransaction(
|
|
20
|
+
return withTransaction ? withTransaction(tx => {
|
|
21
|
+
configureNodeLiveness(tx, nodeLivenessAuthority(db));
|
|
22
|
+
return fn(tx);
|
|
23
|
+
}) : fn(db);
|
|
20
24
|
}
|
|
21
25
|
/**
|
|
22
26
|
* Execute write statements atomically when the handle supports it.
|
|
@@ -45,6 +49,7 @@ async function executeAtomicWrites(db, input, options = {}) {
|
|
|
45
49
|
}
|
|
46
50
|
if (handle.withTransaction) {
|
|
47
51
|
return handle.withTransaction(async (tx) => {
|
|
52
|
+
configureNodeLiveness(tx, nodeLivenessAuthority(db));
|
|
48
53
|
const statements = buildStatements(input, tx);
|
|
49
54
|
return statements.length === 0 ? [] : runSequentially(statements);
|
|
50
55
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"database.js","sourceRoot":"","sources":["../../src/ports/database.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,8BAA8B,EAAE,MAAM,sCAAsC,CAAC;AAqGtF,SAAS,eAAe,CAAC,KAAuB,EAAE,EAAY;IAC5D,OAAO,OAAO,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AACzD,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,UAAkC;IAC/D,MAAM,OAAO,GAAc,EAAE,CAAC;IAC9B,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,OAAO,CAAC,IAAI,CAAC,MAAM,SAAS,CAAC,CAAC;IAChC,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,SAAS,CAAI,EAAY,EAAE,EAAgC;IACzE,MAAM,EAAE,eAAe,EAAE,GAAG,EAA+C,CAAC;IAC5E,OAAO,eAAe,CAAC,CAAC,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"database.js","sourceRoot":"","sources":["../../src/ports/database.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Operational diagnostics: how long the engine's expensive database operations
|
|
3
|
+
* take, and how far long-running cleanups have progressed. Distinct from
|
|
4
|
+
* `TelemetrySink`, which carries domain observations. Hosts decide whether and
|
|
5
|
+
* where to export these; the default is to drop them.
|
|
6
|
+
*
|
|
7
|
+
* The engine cannot see per-statement database cost (rows read/written) through
|
|
8
|
+
* its query builder, so it only reports operation-level timing. A host that can
|
|
9
|
+
* (for example a D1 binding wrapper) attributes each statement to the operation
|
|
10
|
+
* in flight with `currentEngineOperation()`.
|
|
11
|
+
*/
|
|
12
|
+
/** Stable, low-cardinality names for the engine operations worth timing. */
|
|
13
|
+
export type EngineOperationLabel = 'inbox.get' | 'deliveries.list' | 'workspace.delete' | 'invocations.sweep' | 'backfill.mention_fts';
|
|
14
|
+
export interface EngineOperationScope {
|
|
15
|
+
label: EngineOperationLabel;
|
|
16
|
+
workspaceId?: string;
|
|
17
|
+
}
|
|
18
|
+
export interface EngineOperationSample extends EngineOperationScope {
|
|
19
|
+
durationMs: number;
|
|
20
|
+
outcome: 'ok' | 'error';
|
|
21
|
+
/** `error.name` only — never the message, which may carry tenant data. */
|
|
22
|
+
errorName?: string;
|
|
23
|
+
}
|
|
24
|
+
export type EngineProgressOperation = 'workspace.delete' | 'backfill.mention_fts';
|
|
25
|
+
export interface EngineProgressSample {
|
|
26
|
+
operation: EngineProgressOperation;
|
|
27
|
+
workspaceId?: string;
|
|
28
|
+
phase: 'started' | 'batch' | 'completed' | 'failed';
|
|
29
|
+
/** For a workspace delete: the table this batch drained. */
|
|
30
|
+
table?: string;
|
|
31
|
+
/** Rows processed by this batch. */
|
|
32
|
+
rows?: number;
|
|
33
|
+
/** Rows still to process, when cheaply known; otherwise null. */
|
|
34
|
+
remaining?: number | null;
|
|
35
|
+
durationMs?: number;
|
|
36
|
+
}
|
|
37
|
+
/** Callbacks may be async; a throw or rejection is contained and never affects the engine. */
|
|
38
|
+
export interface EngineDiagnostics {
|
|
39
|
+
operation?(sample: EngineOperationSample): void | Promise<void>;
|
|
40
|
+
progress?(sample: EngineProgressSample): void | Promise<void>;
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=diagnostics.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diagnostics.d.ts","sourceRoot":"","sources":["../../src/ports/diagnostics.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,4EAA4E;AAC5E,MAAM,MAAM,oBAAoB,GAC5B,WAAW,GACX,iBAAiB,GACjB,kBAAkB,GAClB,mBAAmB,GACnB,sBAAsB,CAAC;AAE3B,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,oBAAoB,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,qBAAsB,SAAQ,oBAAoB;IACjE,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,IAAI,GAAG,OAAO,CAAC;IACxB,0EAA0E;IAC1E,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,MAAM,uBAAuB,GAAG,kBAAkB,GAAG,sBAAsB,CAAC;AAElF,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,uBAAuB,CAAC;IACnC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,SAAS,GAAG,OAAO,GAAG,WAAW,GAAG,QAAQ,CAAC;IACpD,4DAA4D;IAC5D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oCAAoC;IACpC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,iEAAiE;IACjE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,8FAA8F;AAC9F,MAAM,WAAW,iBAAiB;IAChC,SAAS,CAAC,CAAC,MAAM,EAAE,qBAAqB,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChE,QAAQ,CAAC,CAAC,MAAM,EAAE,oBAAoB,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/D"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Operational diagnostics: how long the engine's expensive database operations
|
|
3
|
+
* take, and how far long-running cleanups have progressed. Distinct from
|
|
4
|
+
* `TelemetrySink`, which carries domain observations. Hosts decide whether and
|
|
5
|
+
* where to export these; the default is to drop them.
|
|
6
|
+
*
|
|
7
|
+
* The engine cannot see per-statement database cost (rows read/written) through
|
|
8
|
+
* its query builder, so it only reports operation-level timing. A host that can
|
|
9
|
+
* (for example a D1 binding wrapper) attributes each statement to the operation
|
|
10
|
+
* in flight with `currentEngineOperation()`.
|
|
11
|
+
*/
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=diagnostics.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diagnostics.js","sourceRoot":"","sources":["../../src/ports/diagnostics.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG"}
|
package/dist/ports/index.d.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
export type { NodeLivenessAuthority, NodeLivenessSnapshot } from './nodeLiveness.js';
|
|
2
|
+
import type { NodeLivenessAuthority } from './nodeLiveness.js';
|
|
1
3
|
/**
|
|
2
4
|
* The complete dependency contract for the Relaycast engine.
|
|
3
5
|
*
|
|
@@ -21,10 +23,11 @@ export type { FileStorage } from './files.js';
|
|
|
21
23
|
export type { KeyValueStore } from './kv.js';
|
|
22
24
|
export type { EventQueue, QueuedEvent } from './event-queue.js';
|
|
23
25
|
export type { AuthProvider, AuthResult, AuthRequire, Workspace, Agent, } from './auth.js';
|
|
24
|
-
export type { AdmissionAction, AdmissionContext, AdmissionDenial, AdmissionHooks, } from './admission.js';
|
|
26
|
+
export type { AdmissionAction, AdmissionContext, AdmissionDenial, AdmissionHooks, RegistrationAdmissionAction, } from './admission.js';
|
|
25
27
|
export { ENGINE_OBSERVATION_FACTS } from './telemetry.js';
|
|
26
28
|
export type { TelemetrySink, TelemetryEvent, EngineObservation, EngineObservationKind, EngineObservationFacts } from './telemetry.js';
|
|
27
29
|
export type { EngineLogRecord, EngineLogExport } from './logging.js';
|
|
30
|
+
export type { EngineDiagnostics, EngineOperationLabel, EngineOperationSample, EngineOperationScope, EngineProgressOperation, EngineProgressSample, } from './diagnostics.js';
|
|
28
31
|
import type { EngineDb } from './database.js';
|
|
29
32
|
import type { RealtimeBus, ConnectionRegistry, NodeConnectionRegistry } from './realtime.js';
|
|
30
33
|
import type { PresenceTracker } from './presence.js';
|
|
@@ -35,6 +38,7 @@ import type { EventQueue } from './event-queue.js';
|
|
|
35
38
|
import type { AuthProvider } from './auth.js';
|
|
36
39
|
import type { AdmissionHooks } from './admission.js';
|
|
37
40
|
import type { TelemetrySink } from './telemetry.js';
|
|
41
|
+
import type { EngineDiagnostics } from './diagnostics.js';
|
|
38
42
|
import type { EngineLogExport } from './logging.js';
|
|
39
43
|
/** Infrastructure ports the engine reads off the request context. */
|
|
40
44
|
export interface EnginePorts {
|
|
@@ -50,10 +54,18 @@ export interface EnginePorts {
|
|
|
50
54
|
}
|
|
51
55
|
/** The open-core hosting seam — each has an OSS default in `../auth`, etc. */
|
|
52
56
|
export interface EngineProviders {
|
|
57
|
+
/** Optional host-owned receipt lease; omitted preserves D1 TTL behavior. */
|
|
58
|
+
nodeLiveness?: NodeLivenessAuthority;
|
|
53
59
|
auth: AuthProvider;
|
|
54
60
|
/** Host admission and metering hooks. Omitted: every request is admitted. */
|
|
55
61
|
admission?: AdmissionHooks;
|
|
56
62
|
telemetry?: TelemetrySink;
|
|
63
|
+
/**
|
|
64
|
+
* Operation timing and cleanup progress (see `ports/diagnostics.ts`).
|
|
65
|
+
* Optional. When absent, samples go to the host fallback set with
|
|
66
|
+
* `configureEngineDiagnostics()`, and are dropped only if neither is set.
|
|
67
|
+
*/
|
|
68
|
+
diagnostics?: EngineDiagnostics;
|
|
57
69
|
}
|
|
58
70
|
/** Everything `createEngine` needs. */
|
|
59
71
|
export interface EngineDeps extends EnginePorts, EngineProviders {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ports/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,YAAY,EACV,QAAQ,EACR,qBAAqB,EACrB,eAAe,EACf,WAAW,EACX,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAC3D,YAAY,EACV,WAAW,EACX,WAAW,EACX,kBAAkB,EAClB,sBAAsB,EACtB,WAAW,EACX,eAAe,GAChB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,4BAA4B,EAAE,MAAM,eAAe,CAAC;AAC7D,YAAY,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACrD,YAAY,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACpE,YAAY,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9C,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7C,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAChE,YAAY,EACV,YAAY,EACZ,UAAU,EACV,WAAW,EACX,SAAS,EACT,KAAK,GACN,MAAM,WAAW,CAAC;AACnB,YAAY,EACV,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ports/index.ts"],"names":[],"mappings":"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"}
|
package/dist/ports/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ports/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ports/index.ts"],"names":[],"mappings":"AAuBA,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAS3D,OAAO,EAAE,4BAA4B,EAAE,MAAM,eAAe,CAAC;AAoB7D,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { EngineDb } from './database.js';
|
|
2
|
+
/** A host-owned receipt lease. All timestamps are server epoch milliseconds. */
|
|
3
|
+
export interface NodeLivenessSnapshot {
|
|
4
|
+
status: 'online' | 'offline' | 'unknown';
|
|
5
|
+
providers: Array<{
|
|
6
|
+
name: string;
|
|
7
|
+
connection_id?: string;
|
|
8
|
+
instance_id?: string;
|
|
9
|
+
last_received_at: number;
|
|
10
|
+
expires_at: number;
|
|
11
|
+
live: boolean;
|
|
12
|
+
handlers_live: boolean;
|
|
13
|
+
}>;
|
|
14
|
+
}
|
|
15
|
+
/** Hosts bound RPC deadlines; unavailable authority returns unknown. The socket
|
|
16
|
+
* owner independently rechecks its generation and receipt lease at final send. */
|
|
17
|
+
export interface NodeLivenessAuthority {
|
|
18
|
+
inspect(workspaceId: string, nodeId: string): Promise<NodeLivenessSnapshot>;
|
|
19
|
+
}
|
|
20
|
+
/** Bind all HTTP, maintenance and socket-owner database wrappers. */
|
|
21
|
+
export declare function configureNodeLiveness(db: EngineDb, authority?: NodeLivenessAuthority): void;
|
|
22
|
+
export declare function nodeLivenessAuthority(db: EngineDb): NodeLivenessAuthority | undefined;
|
|
23
|
+
//# sourceMappingURL=nodeLiveness.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nodeLiveness.d.ts","sourceRoot":"","sources":["../../src/ports/nodeLiveness.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC9C,gFAAgF;AAChF,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC;IACzC,SAAS,EAAE,KAAK,CAAC;QACf,IAAI,EAAE,MAAM,CAAC;QACb,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,gBAAgB,EAAE,MAAM,CAAC;QACzB,UAAU,EAAE,MAAM,CAAC;QACnB,IAAI,EAAE,OAAO,CAAC;QACd,aAAa,EAAE,OAAO,CAAC;KACxB,CAAC,CAAC;CACJ;AACD;kFACkF;AAClF,MAAM,WAAW,qBAAqB;IACpC,OAAO,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;CAC7E;AAGD,qEAAqE;AACrE,wBAAgB,qBAAqB,CAAC,EAAE,EAAE,QAAQ,EAAE,SAAS,CAAC,EAAE,qBAAqB,GAAG,IAAI,CAG3F;AACD,wBAAgB,qBAAqB,CAAC,EAAE,EAAE,QAAQ,GAAG,qBAAqB,GAAG,SAAS,CAErF"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
const authorities = new WeakMap();
|
|
2
|
+
/** Bind all HTTP, maintenance and socket-owner database wrappers. */
|
|
3
|
+
export function configureNodeLiveness(db, authority) {
|
|
4
|
+
if (authority)
|
|
5
|
+
authorities.set(db, authority);
|
|
6
|
+
else
|
|
7
|
+
authorities.delete(db);
|
|
8
|
+
}
|
|
9
|
+
export function nodeLivenessAuthority(db) {
|
|
10
|
+
return authorities.get(db);
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=nodeLiveness.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nodeLiveness.js","sourceRoot":"","sources":["../../src/ports/nodeLiveness.ts"],"names":[],"mappings":"AAoBA,MAAM,WAAW,GAAG,IAAI,OAAO,EAAiC,CAAC;AACjE,qEAAqE;AACrE,MAAM,UAAU,qBAAqB,CAAC,EAAY,EAAE,SAAiC;IACnF,IAAI,SAAS;QAAE,WAAW,CAAC,GAAG,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;;QACzC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAC9B,CAAC;AACD,MAAM,UAAU,qBAAqB,CAAC,EAAY;IAChD,OAAO,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC7B,CAAC"}
|
package/dist/ports/presence.d.ts
CHANGED
|
@@ -12,5 +12,26 @@ export interface PresenceTracker {
|
|
|
12
12
|
disconnect(workspaceId: string, agentId: string, agentName?: string): Promise<void>;
|
|
13
13
|
/** Return the agent IDs currently considered online for a workspace. */
|
|
14
14
|
getOnline(workspaceId: string): Promise<string[]>;
|
|
15
|
+
/**
|
|
16
|
+
* Independent REST/tracker heartbeats only, without node-owner probes.
|
|
17
|
+
* Authority-enabled engines use this optional narrow read to avoid probing
|
|
18
|
+
* every node twice; omission falls back to getOnline for existing adapters.
|
|
19
|
+
* A node-derived-only adapter returns an empty list here.
|
|
20
|
+
*/
|
|
21
|
+
getTrackedOnline?(workspaceId: string): Promise<string[]>;
|
|
22
|
+
/**
|
|
23
|
+
* Agents that called disconnect and have not heartbeated since.
|
|
24
|
+
* Node-derived presence must not put these ids back online. A host that
|
|
25
|
+
* omits this treats disconnect as tracker-only, which cannot override
|
|
26
|
+
* node liveness.
|
|
27
|
+
*/
|
|
28
|
+
explicitlyDisconnected?(workspaceId: string): Promise<readonly string[]>;
|
|
29
|
+
/**
|
|
30
|
+
* Forget an explicit disconnect so node liveness can count the agent again.
|
|
31
|
+
* {@link heartbeat} does this itself. Called when a node newly routes an
|
|
32
|
+
* agent that had left, and when `agent.recover` restores one, including a
|
|
33
|
+
* presence-only disconnect whose binding was still active.
|
|
34
|
+
*/
|
|
35
|
+
clearExplicitDisconnect?(workspaceId: string, agentId: string): Promise<void>;
|
|
15
36
|
}
|
|
16
37
|
//# sourceMappingURL=presence.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"presence.d.ts","sourceRoot":"","sources":["../../src/ports/presence.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,WAAW,eAAe;IAC9B,2FAA2F;IAC3F,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEnF,+DAA+D;IAC/D,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEpF,wEAAwE;IACxE,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"presence.d.ts","sourceRoot":"","sources":["../../src/ports/presence.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,WAAW,eAAe;IAC9B,2FAA2F;IAC3F,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEnF,+DAA+D;IAC/D,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEpF,wEAAwE;IACxE,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAElD;;;;;OAKG;IACH,gBAAgB,CAAC,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAE1D;;;;;OAKG;IACH,sBAAsB,CAAC,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,MAAM,EAAE,CAAC,CAAC;IAEzE;;;;;OAKG;IACH,uBAAuB,CAAC,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/E"}
|
package/dist/ports/realtime.d.ts
CHANGED
|
@@ -73,6 +73,24 @@ export interface AgentActionProviderAuthorization {
|
|
|
73
73
|
handlerAgentId: string;
|
|
74
74
|
/** False when a queued attempt was already counted before this delivery. */
|
|
75
75
|
recordAttempt: boolean;
|
|
76
|
+
/** Queue the claim as pending. Absent means a live dispatched attempt. */
|
|
77
|
+
pending?: boolean;
|
|
78
|
+
/**
|
|
79
|
+
* Deadline to store. An unset deadline stays unset when this claim changes
|
|
80
|
+
* the attempt count or the status, so a queued row stays due for drain.
|
|
81
|
+
*/
|
|
82
|
+
retryAfterAt?: Date | null;
|
|
83
|
+
/**
|
|
84
|
+
* Status the caller observed. A timeout or `handler_unavailable` retry passes
|
|
85
|
+
* `dispatched` or `invoked`. Absent means a fresh `pending` row.
|
|
86
|
+
*/
|
|
87
|
+
claimStatus?: 'pending' | 'dispatched' | 'invoked';
|
|
88
|
+
/** `retry_after_at` the caller observed. Absent means it was unset. */
|
|
89
|
+
observedRetryAfterAt?: Date | null;
|
|
90
|
+
/** `dispatch_attempts` the caller observed. Absent means zero. */
|
|
91
|
+
observedDispatchAttempts?: number;
|
|
92
|
+
/** Stamp `spawn_reserved_at` when this caller holds a capacity reservation. */
|
|
93
|
+
reservationHeld?: boolean;
|
|
76
94
|
/** Optional lost-node retry generation; the socket owner must CAS it. */
|
|
77
95
|
expectedNodeLivenessRevision?: number;
|
|
78
96
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"realtime.d.ts","sourceRoot":"","sources":["../../src/ports/realtime.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"realtime.d.ts","sourceRoot":"","sources":["../../src/ports/realtime.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"realtime.js","sourceRoot":"","sources":["../../src/ports/realtime.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;
|
|
1
|
+
{"version":3,"file":"realtime.js","sourceRoot":"","sources":["../../src/ports/realtime.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAkTH,oFAAoF;AACpF,MAAM,UAAU,4BAA4B,CAC1C,QAAgC,EAChC,WAAmB,EACnB,MAAc,EACd,YAAoB,EACpB,OAAe;IAEf,OAAO,QAAQ,CAAC,4BAA4B,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC;AACrG,CAAC"}
|
package/dist/routes/a2a.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"a2a.d.ts","sourceRoot":"","sources":["../../src/routes/a2a.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAI5B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"a2a.d.ts","sourceRoot":"","sources":["../../src/routes/a2a.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAI5B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AA+BxC,eAAO,MAAM,SAAS,qDAAqB,CAAC"}
|
package/dist/routes/a2a.js
CHANGED
|
@@ -8,6 +8,7 @@ import { authenticateUnexpired, isWorkspaceExpired, WORKSPACE_EXPIRED_CODE, WORK
|
|
|
8
8
|
import { getWorkspaceExpiry } from '../engine/workspace.js';
|
|
9
9
|
import { asCodedError, codedError, errorResponse } from '../lib/httpError.js';
|
|
10
10
|
import { rateLimit } from '../middleware/rateLimit.js';
|
|
11
|
+
import { registrationAdmission } from '../middleware/admission.js';
|
|
11
12
|
import { buildIdempotencyStorageKey, runIdempotent } from '../middleware/idempotency.js';
|
|
12
13
|
import { sha256Hex } from '../lib/crypto.js';
|
|
13
14
|
import { runInBackground } from './background.js';
|
|
@@ -237,6 +238,7 @@ a2aRoutes.post('/v1/a2a/register', requireAuth, rateLimit, async (c) => {
|
|
|
237
238
|
authScheme: parsed.data.auth_scheme,
|
|
238
239
|
authCredential: parsed.data.auth_credential,
|
|
239
240
|
targetAgent: parsed.data.target_agent,
|
|
241
|
+
admitRegistration: registrationAdmission(c),
|
|
240
242
|
});
|
|
241
243
|
return jsonCreated(c, {
|
|
242
244
|
relay_name: result.relayName,
|