@relaycast/engine 12.1.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.
Files changed (59) hide show
  1. package/dist/engine/action.d.ts.map +1 -1
  2. package/dist/engine/action.js +7 -6
  3. package/dist/engine/action.js.map +1 -1
  4. package/dist/engine/agent.d.ts.map +1 -1
  5. package/dist/engine/agent.js +37 -9
  6. package/dist/engine/agent.js.map +1 -1
  7. package/dist/engine/delivery.d.ts.map +1 -1
  8. package/dist/engine/delivery.js +5 -0
  9. package/dist/engine/delivery.js.map +1 -1
  10. package/dist/engine/deliveryWrites.d.ts +23 -0
  11. package/dist/engine/deliveryWrites.d.ts.map +1 -1
  12. package/dist/engine/deliveryWrites.js +50 -8
  13. package/dist/engine/deliveryWrites.js.map +1 -1
  14. package/dist/engine/groupDm.d.ts.map +1 -1
  15. package/dist/engine/groupDm.js +4 -0
  16. package/dist/engine/groupDm.js.map +1 -1
  17. package/dist/engine/inboundWebhook.d.ts.map +1 -1
  18. package/dist/engine/inboundWebhook.js +8 -1
  19. package/dist/engine/inboundWebhook.js.map +1 -1
  20. package/dist/engine/message.d.ts.map +1 -1
  21. package/dist/engine/message.js +4 -0
  22. package/dist/engine/message.js.map +1 -1
  23. package/dist/engine/node.d.ts +47 -42
  24. package/dist/engine/node.d.ts.map +1 -1
  25. package/dist/engine/node.js +96 -22
  26. package/dist/engine/node.js.map +1 -1
  27. package/dist/engine/nodeLiveness.d.ts +34 -0
  28. package/dist/engine/nodeLiveness.d.ts.map +1 -0
  29. package/dist/engine/nodeLiveness.js +52 -0
  30. package/dist/engine/nodeLiveness.js.map +1 -0
  31. package/dist/engine/placement.d.ts.map +1 -1
  32. package/dist/engine/placement.js +15 -18
  33. package/dist/engine/placement.js.map +1 -1
  34. package/dist/engine/presence.d.ts.map +1 -1
  35. package/dist/engine/presence.js +33 -6
  36. package/dist/engine/presence.js.map +1 -1
  37. package/dist/engine/thread.d.ts.map +1 -1
  38. package/dist/engine/thread.js +8 -0
  39. package/dist/engine/thread.js.map +1 -1
  40. package/dist/engine.d.ts.map +1 -1
  41. package/dist/engine.js +3 -0
  42. package/dist/engine.js.map +1 -1
  43. package/dist/index.d.ts +2 -0
  44. package/dist/index.d.ts.map +1 -1
  45. package/dist/index.js +1 -0
  46. package/dist/index.js.map +1 -1
  47. package/dist/ports/database.d.ts.map +1 -1
  48. package/dist/ports/database.js +6 -1
  49. package/dist/ports/database.js.map +1 -1
  50. package/dist/ports/index.d.ts +4 -0
  51. package/dist/ports/index.d.ts.map +1 -1
  52. package/dist/ports/index.js.map +1 -1
  53. package/dist/ports/nodeLiveness.d.ts +23 -0
  54. package/dist/ports/nodeLiveness.d.ts.map +1 -0
  55. package/dist/ports/nodeLiveness.js +12 -0
  56. package/dist/ports/nodeLiveness.js.map +1 -0
  57. package/dist/ports/presence.d.ts +7 -0
  58. package/dist/ports/presence.d.ts.map +1 -1
  59. package/package.json +3 -3
@@ -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"}
@@ -12,6 +12,13 @@ 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[]>;
15
22
  /**
16
23
  * Agents that called disconnect and have not heartbeated since.
17
24
  * Node-derived presence must not put these ids back online. A host that
@@ -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;IAElD;;;;;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"}
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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@relaycast/engine",
3
- "version": "12.1.0",
3
+ "version": "12.2.0",
4
4
  "type": "module",
5
5
  "description": "Portable, platform-agnostic engine for Relaycast — channels, threads, DMs, presence, real-time events. Runs on Node + SQLite (self-host) or behind a Cloudflare Durable Object adapter (hosted).",
6
6
  "bin": {
@@ -62,8 +62,8 @@
62
62
  },
63
63
  "dependencies": {
64
64
  "@hono/node-server": "^1.13.7",
65
- "@relaycast/a2a": "12.1.0",
66
- "@relaycast/types": "12.1.0",
65
+ "@relaycast/a2a": "12.2.0",
66
+ "@relaycast/types": "12.2.0",
67
67
  "better-sqlite3": "^11.10.0",
68
68
  "drizzle-orm": "^0.45.1",
69
69
  "hono": "^4.11.9",