@relaycast/engine 3.1.1 → 4.0.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/event-queue.d.ts +10 -0
- package/dist/adapters/node/event-queue.d.ts.map +1 -1
- package/dist/adapters/node/event-queue.js +17 -0
- package/dist/adapters/node/event-queue.js.map +1 -1
- package/dist/adapters/node/index.d.ts.map +1 -1
- package/dist/adapters/node/index.js +10 -0
- package/dist/adapters/node/index.js.map +1 -1
- package/dist/adapters/node/realtime.d.ts +24 -2
- package/dist/adapters/node/realtime.d.ts.map +1 -1
- package/dist/adapters/node/realtime.js +178 -1
- package/dist/adapters/node/realtime.js.map +1 -1
- package/dist/bin/serve.js +18 -1
- package/dist/bin/serve.js.map +1 -1
- package/dist/db/migrations/0016_fleet_nodes.sql +189 -0
- package/dist/db/migrations/0017_spawn_reservation_and_retry_state.sql +5 -0
- package/dist/db/migrations/0018_spawn_reserved_at.sql +2 -0
- package/dist/db/migrations/0019_fleet_mailbox.sql +71 -0
- package/dist/db/migrations/0020_workspace_retention.sql +3 -0
- package/dist/db/schema.d.ts +1771 -911
- package/dist/db/schema.d.ts.map +1 -1
- package/dist/db/schema.js +77 -7
- package/dist/db/schema.js.map +1 -1
- package/dist/engine/action.d.ts +84 -10
- package/dist/engine/action.d.ts.map +1 -1
- package/dist/engine/action.js +523 -85
- package/dist/engine/action.js.map +1 -1
- package/dist/engine/agent.js +2 -2
- package/dist/engine/agent.js.map +1 -1
- package/dist/engine/delivery.d.ts +41 -6
- package/dist/engine/delivery.d.ts.map +1 -1
- package/dist/engine/delivery.js +316 -25
- package/dist/engine/delivery.js.map +1 -1
- package/dist/engine/deliveryWire.d.ts +34 -0
- package/dist/engine/deliveryWire.d.ts.map +1 -0
- package/dist/engine/deliveryWire.js +70 -0
- package/dist/engine/deliveryWire.js.map +1 -0
- package/dist/engine/deliveryWrites.d.ts +47 -0
- package/dist/engine/deliveryWrites.d.ts.map +1 -1
- package/dist/engine/deliveryWrites.js +155 -5
- package/dist/engine/deliveryWrites.js.map +1 -1
- package/dist/engine/dm.d.ts +4 -4
- package/dist/engine/dm.d.ts.map +1 -1
- package/dist/engine/dm.js +17 -7
- package/dist/engine/dm.js.map +1 -1
- package/dist/engine/eventQueue.d.ts.map +1 -1
- package/dist/engine/eventQueue.js +5 -0
- package/dist/engine/eventQueue.js.map +1 -1
- package/dist/engine/eventSubscription.d.ts +6 -0
- package/dist/engine/eventSubscription.d.ts.map +1 -1
- package/dist/engine/eventSubscription.js +13 -0
- package/dist/engine/eventSubscription.js.map +1 -1
- package/dist/engine/groupDm.d.ts +4 -0
- package/dist/engine/groupDm.d.ts.map +1 -1
- package/dist/engine/groupDm.js +16 -4
- package/dist/engine/groupDm.js.map +1 -1
- package/dist/engine/invocationCompletion.d.ts +13 -0
- package/dist/engine/invocationCompletion.d.ts.map +1 -0
- package/dist/engine/invocationCompletion.js +65 -0
- package/dist/engine/invocationCompletion.js.map +1 -0
- package/dist/engine/mailboxConfig.d.ts +9 -0
- package/dist/engine/mailboxConfig.d.ts.map +1 -0
- package/dist/engine/mailboxConfig.js +16 -0
- package/dist/engine/mailboxConfig.js.map +1 -0
- package/dist/engine/message.d.ts +4 -0
- package/dist/engine/message.d.ts.map +1 -1
- package/dist/engine/message.js +16 -4
- package/dist/engine/message.js.map +1 -1
- package/dist/engine/node.d.ts +201 -0
- package/dist/engine/node.d.ts.map +1 -0
- package/dist/engine/node.js +533 -0
- package/dist/engine/node.js.map +1 -0
- package/dist/engine/placement.d.ts +26 -0
- package/dist/engine/placement.d.ts.map +1 -0
- package/dist/engine/placement.js +242 -0
- package/dist/engine/placement.js.map +1 -0
- package/dist/engine/receipt.d.ts.map +1 -1
- package/dist/engine/receipt.js +5 -6
- package/dist/engine/receipt.js.map +1 -1
- package/dist/engine/retention.d.ts +65 -0
- package/dist/engine/retention.d.ts.map +1 -0
- package/dist/engine/retention.js +173 -0
- package/dist/engine/retention.js.map +1 -0
- package/dist/engine/snowflake.d.ts +11 -0
- package/dist/engine/snowflake.d.ts.map +1 -1
- package/dist/engine/snowflake.js +14 -0
- package/dist/engine/snowflake.js.map +1 -1
- package/dist/engine/thread.d.ts +4 -0
- package/dist/engine/thread.d.ts.map +1 -1
- package/dist/engine/thread.js +16 -4
- package/dist/engine/thread.js.map +1 -1
- package/dist/engine/trigger.d.ts +79 -0
- package/dist/engine/trigger.d.ts.map +1 -0
- package/dist/engine/trigger.js +151 -0
- package/dist/engine/trigger.js.map +1 -0
- package/dist/engine.d.ts.map +1 -1
- package/dist/engine.js +61 -2
- package/dist/engine.js.map +1 -1
- package/dist/entrypoints/node.d.ts.map +1 -1
- package/dist/entrypoints/node.js +36 -2
- package/dist/entrypoints/node.js.map +1 -1
- package/dist/env.d.ts +6 -0
- package/dist/env.d.ts.map +1 -1
- package/dist/index.d.ts +4 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/fleetNodes.d.ts +9 -0
- package/dist/lib/fleetNodes.d.ts.map +1 -0
- package/dist/lib/fleetNodes.js +66 -0
- package/dist/lib/fleetNodes.js.map +1 -0
- package/dist/lib/origin.d.ts.map +1 -1
- package/dist/lib/origin.js +0 -5
- package/dist/lib/origin.js.map +1 -1
- package/dist/lib/serverTelemetry.d.ts.map +1 -1
- package/dist/lib/serverTelemetry.js +0 -1
- package/dist/lib/serverTelemetry.js.map +1 -1
- package/dist/middleware/fleetNodes.d.ts +10 -0
- package/dist/middleware/fleetNodes.d.ts.map +1 -0
- package/dist/middleware/fleetNodes.js +18 -0
- package/dist/middleware/fleetNodes.js.map +1 -0
- package/dist/ports/index.d.ts +24 -2
- package/dist/ports/index.d.ts.map +1 -1
- package/dist/ports/realtime.d.ts +34 -2
- package/dist/ports/realtime.d.ts.map +1 -1
- package/dist/ports/realtime.js +1 -1
- package/dist/routes/action.d.ts.map +1 -1
- package/dist/routes/action.js +21 -21
- package/dist/routes/action.js.map +1 -1
- package/dist/routes/delivery.d.ts.map +1 -1
- package/dist/routes/delivery.js +7 -2
- package/dist/routes/delivery.js.map +1 -1
- package/dist/routes/deliveryRouting.d.ts +10 -0
- package/dist/routes/deliveryRouting.d.ts.map +1 -0
- package/dist/routes/deliveryRouting.js +91 -0
- package/dist/routes/deliveryRouting.js.map +1 -0
- package/dist/routes/dm.d.ts.map +1 -1
- package/dist/routes/dm.js +14 -13
- package/dist/routes/dm.js.map +1 -1
- package/dist/routes/groupDm.d.ts.map +1 -1
- package/dist/routes/groupDm.js +14 -15
- package/dist/routes/groupDm.js.map +1 -1
- package/dist/routes/inbox.d.ts.map +1 -1
- package/dist/routes/inbox.js +7 -0
- package/dist/routes/inbox.js.map +1 -1
- package/dist/routes/message.d.ts.map +1 -1
- package/dist/routes/message.js +45 -23
- package/dist/routes/message.js.map +1 -1
- package/dist/routes/node.d.ts +4 -0
- package/dist/routes/node.d.ts.map +1 -0
- package/dist/routes/node.js +57 -0
- package/dist/routes/node.js.map +1 -0
- package/dist/routes/thread.d.ts.map +1 -1
- package/dist/routes/thread.js +15 -16
- package/dist/routes/thread.js.map +1 -1
- package/dist/routes/trigger.d.ts +4 -0
- package/dist/routes/trigger.d.ts.map +1 -0
- package/dist/routes/trigger.js +83 -0
- package/dist/routes/trigger.js.map +1 -0
- package/dist/routes/webhookOutbox.d.ts +13 -6
- package/dist/routes/webhookOutbox.d.ts.map +1 -1
- package/dist/routes/webhookOutbox.js +29 -6
- package/dist/routes/webhookOutbox.js.map +1 -1
- package/dist/routes/workspace.d.ts.map +1 -1
- package/dist/routes/workspace.js +90 -0
- package/dist/routes/workspace.js.map +1 -1
- package/package.json +3 -3
package/dist/index.d.ts
CHANGED
|
@@ -12,5 +12,8 @@ export { deliverEvent } from './engine/eventDelivery.js';
|
|
|
12
12
|
export { runA2aHealthChecks } from './engine/a2a-health.js';
|
|
13
13
|
export { enqueueEvent, claimDueEvents, completeEvent, failEvent, rescheduleEvent, sweepPendingEvents, cleanupOldEvents, } from './engine/eventQueue.js';
|
|
14
14
|
export type { ClaimedEvent, SweptEvent } from './engine/eventQueue.js';
|
|
15
|
-
export {
|
|
15
|
+
export { pruneExpired, DEFAULT_DELIVERY_TTL_DAYS, DEFAULT_MESSAGE_LOG_TTL_DAYS, } from './engine/retention.js';
|
|
16
|
+
export type { PruneOptions, PruneResult, RetentionDefaults } from './engine/retention.js';
|
|
17
|
+
export type { WorkspaceRetentionSettings } from './db/schema.js';
|
|
18
|
+
export { generateId, getSnowflakeGenerator, snowflakeIdLowerBound, SnowflakeGenerator, } from './engine/snowflake.js';
|
|
16
19
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,cAAc,EAAG,OAAgB,CAAC;AAG/C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAGpE,YAAY,EACV,UAAU,EACV,WAAW,EACX,eAAe,EACf,YAAY,EACZ,QAAQ,EACR,WAAW,EACX,WAAW,EACX,kBAAkB,EAClB,sBAAsB,EACtB,WAAW,EACX,eAAe,EACf,WAAW,EACX,eAAe,EACf,WAAW,EACX,aAAa,EACb,UAAU,EACV,WAAW,EACX,YAAY,EACZ,UAAU,EACV,WAAW,EACX,SAAS,EACT,KAAK,EACL,oBAAoB,EACpB,UAAU,EACV,WAAW,EACX,aAAa,EACb,cAAc,GACf,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,wBAAwB,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACtE,OAAO,EAAE,0BAA0B,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAC;AAC7F,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAGlE,OAAO,EAAE,KAAK,EAAE,WAAW,IAAI,aAAa,EAAE,MAAM,eAAe,CAAC;AACpE,YAAY,EAAE,EAAE,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,MAAM,MAAM,gBAAgB,CAAC;AAGzC,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAM5D,OAAO,EACL,YAAY,EACZ,cAAc,EACd,aAAa,EACb,SAAS,EACT,eAAe,EACf,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,wBAAwB,CAAC;AAChC,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,cAAc,EAAG,OAAgB,CAAC;AAG/C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAGpE,YAAY,EACV,UAAU,EACV,WAAW,EACX,eAAe,EACf,YAAY,EACZ,QAAQ,EACR,WAAW,EACX,WAAW,EACX,kBAAkB,EAClB,sBAAsB,EACtB,WAAW,EACX,eAAe,EACf,WAAW,EACX,eAAe,EACf,WAAW,EACX,aAAa,EACb,UAAU,EACV,WAAW,EACX,YAAY,EACZ,UAAU,EACV,WAAW,EACX,SAAS,EACT,KAAK,EACL,oBAAoB,EACpB,UAAU,EACV,WAAW,EACX,aAAa,EACb,cAAc,GACf,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,wBAAwB,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACtE,OAAO,EAAE,0BAA0B,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAC;AAC7F,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAGlE,OAAO,EAAE,KAAK,EAAE,WAAW,IAAI,aAAa,EAAE,MAAM,eAAe,CAAC;AACpE,YAAY,EAAE,EAAE,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,MAAM,MAAM,gBAAgB,CAAC;AAGzC,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAM5D,OAAO,EACL,YAAY,EACZ,cAAc,EACd,aAAa,EACb,SAAS,EACT,eAAe,EACf,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,wBAAwB,CAAC;AAChC,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAMvE,OAAO,EACL,YAAY,EACZ,yBAAyB,EACzB,4BAA4B,GAC7B,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1F,YAAY,EAAE,0BAA0B,EAAE,MAAM,gBAAgB,CAAC;AAGjE,OAAO,EACL,UAAU,EACV,qBAAqB,EACrB,qBAAqB,EACrB,kBAAkB,GACnB,MAAM,uBAAuB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -16,6 +16,11 @@ export { runA2aHealthChecks } from './engine/a2a-health.js';
|
|
|
16
16
|
// and a scheduled sweep re-enqueues lost ones (`sweepPendingEvents`) and
|
|
17
17
|
// prunes settled ones (`cleanupOldEvents`).
|
|
18
18
|
export { enqueueEvent, claimDueEvents, completeEvent, failEvent, rescheduleEvent, sweepPendingEvents, cleanupOldEvents, } from './engine/eventQueue.js';
|
|
19
|
+
// Retention pruning: bounded-batch deletion of expired messages, settled
|
|
20
|
+
// deliveries, message logs, and orphaned read receipts. The Node adapter runs
|
|
21
|
+
// it on the outbox cleanup cadence; queue-backed deployments call it from a
|
|
22
|
+
// scheduled handler.
|
|
23
|
+
export { pruneExpired, DEFAULT_DELIVERY_TTL_DAYS, DEFAULT_MESSAGE_LOG_TTL_DAYS, } from './engine/retention.js';
|
|
19
24
|
// ID generation.
|
|
20
|
-
export { generateId, getSnowflakeGenerator, SnowflakeGenerator } from './engine/snowflake.js';
|
|
25
|
+
export { generateId, getSnowflakeGenerator, snowflakeIdLowerBound, SnowflakeGenerator, } from './engine/snowflake.js';
|
|
21
26
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,cAAc,GAAG,OAAgB,CAAC;AAE/C,2DAA2D;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAkC3C,4DAA4D;AAC5D,OAAO,EAAE,wBAAwB,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACtE,OAAO,EAAE,0BAA0B,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAC;AAC7F,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAElE,yDAAyD;AACzD,OAAO,EAAE,KAAK,EAAE,WAAW,IAAI,aAAa,EAAE,MAAM,eAAe,CAAC;AAEpE,OAAO,KAAK,MAAM,MAAM,gBAAgB,CAAC;AAEzC,+EAA+E;AAC/E,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAE5D,6EAA6E;AAC7E,4EAA4E;AAC5E,yEAAyE;AACzE,4CAA4C;AAC5C,OAAO,EACL,YAAY,EACZ,cAAc,EACd,aAAa,EACb,SAAS,EACT,eAAe,EACf,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,wBAAwB,CAAC;AAGhC,iBAAiB;AACjB,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,cAAc,GAAG,OAAgB,CAAC;AAE/C,2DAA2D;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAkC3C,4DAA4D;AAC5D,OAAO,EAAE,wBAAwB,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACtE,OAAO,EAAE,0BAA0B,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAC;AAC7F,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAElE,yDAAyD;AACzD,OAAO,EAAE,KAAK,EAAE,WAAW,IAAI,aAAa,EAAE,MAAM,eAAe,CAAC;AAEpE,OAAO,KAAK,MAAM,MAAM,gBAAgB,CAAC;AAEzC,+EAA+E;AAC/E,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAE5D,6EAA6E;AAC7E,4EAA4E;AAC5E,yEAAyE;AACzE,4CAA4C;AAC5C,OAAO,EACL,YAAY,EACZ,cAAc,EACd,aAAa,EACb,SAAS,EACT,eAAe,EACf,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,wBAAwB,CAAC;AAGhC,yEAAyE;AACzE,8EAA8E;AAC9E,4EAA4E;AAC5E,qBAAqB;AACrB,OAAO,EACL,YAAY,EACZ,yBAAyB,EACzB,4BAA4B,GAC7B,MAAM,uBAAuB,CAAC;AAI/B,iBAAiB;AACjB,OAAO,EACL,UAAU,EACV,qBAAqB,EACrB,qBAAqB,EACrB,kBAAkB,GACnB,MAAM,uBAAuB,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { KeyValueStore } from '../ports/kv.js';
|
|
2
|
+
export declare function getFleetNodesConfig(kv: KeyValueStore, workspaceId: string, defaultEnabled?: boolean): Promise<{
|
|
3
|
+
enabled: boolean;
|
|
4
|
+
defaultEnabled: boolean;
|
|
5
|
+
override: boolean | null;
|
|
6
|
+
}>;
|
|
7
|
+
export declare function isFleetNodesEnabled(kv: KeyValueStore, workspaceId: string, defaultEnabled?: boolean): Promise<boolean>;
|
|
8
|
+
export declare function setFleetNodesOverride(kv: KeyValueStore, workspaceId: string, override: boolean | null): Promise<void>;
|
|
9
|
+
//# sourceMappingURL=fleetNodes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fleetNodes.d.ts","sourceRoot":"","sources":["../../src/lib/fleetNodes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAyCpD,wBAAsB,mBAAmB,CACvC,EAAE,EAAE,aAAa,EACjB,WAAW,EAAE,MAAM,EACnB,cAAc,GAAE,OAAyB,GACxC,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,cAAc,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,OAAO,GAAG,IAAI,CAAA;CAAE,CAAC,CAuBlF;AAED,wBAAsB,mBAAmB,CACvC,EAAE,EAAE,aAAa,EACjB,WAAW,EAAE,MAAM,EACnB,cAAc,GAAE,OAAyB,GACxC,OAAO,CAAC,OAAO,CAAC,CAGlB;AAED,wBAAsB,qBAAqB,CACzC,EAAE,EAAE,aAAa,EACjB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,OAAO,GAAG,IAAI,GACvB,OAAO,CAAC,IAAI,CAAC,CAQf"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Per-workspace rollout flag for the fleet node control surface (Phase 6).
|
|
3
|
+
*
|
|
4
|
+
* The node registry, node control WS, declarative triggers, and spawn/node-action
|
|
5
|
+
* placement are all gated behind this flag so the feature can be dark-launched and
|
|
6
|
+
* enabled workspace-by-workspace during migration. The default is OFF: a workspace
|
|
7
|
+
* with no explicit override inherits the engine-wide default
|
|
8
|
+
* (`EngineConfig.fleetNodesEnabled`, also false unless the deployment opts in).
|
|
9
|
+
*
|
|
10
|
+
* Mirrors {@link ./workspaceStream.ts} — a KV override with a short in-memory cache,
|
|
11
|
+
* so the hot paths (every message post, every node frame) pay at most one KV read
|
|
12
|
+
* per workspace per {@link CACHE_TTL_MS} window.
|
|
13
|
+
*/
|
|
14
|
+
const KEY_PREFIX = 'fleet-nodes-enabled:';
|
|
15
|
+
const CACHE_TTL_MS = 10_000;
|
|
16
|
+
const DEFAULT_ENABLED = false;
|
|
17
|
+
const cache = new Map();
|
|
18
|
+
function parseBool(value) {
|
|
19
|
+
if (value == null)
|
|
20
|
+
return null;
|
|
21
|
+
const normalized = value.trim().toLowerCase();
|
|
22
|
+
if (['1', 'true', 'yes', 'on'].includes(normalized))
|
|
23
|
+
return true;
|
|
24
|
+
if (['0', 'false', 'no', 'off'].includes(normalized))
|
|
25
|
+
return false;
|
|
26
|
+
return null;
|
|
27
|
+
}
|
|
28
|
+
function getKey(workspaceId) {
|
|
29
|
+
return `${KEY_PREFIX}${workspaceId}`;
|
|
30
|
+
}
|
|
31
|
+
export async function getFleetNodesConfig(kv, workspaceId, defaultEnabled = DEFAULT_ENABLED) {
|
|
32
|
+
const now = Date.now();
|
|
33
|
+
const cached = cache.get(workspaceId);
|
|
34
|
+
if (cached && cached.expiresAt > now && cached.defaultEnabled === defaultEnabled) {
|
|
35
|
+
return {
|
|
36
|
+
enabled: cached.enabled,
|
|
37
|
+
defaultEnabled: cached.defaultEnabled,
|
|
38
|
+
override: cached.override,
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
const raw = await kv.get(getKey(workspaceId));
|
|
42
|
+
const override = parseBool(raw);
|
|
43
|
+
const enabled = override ?? defaultEnabled;
|
|
44
|
+
cache.set(workspaceId, {
|
|
45
|
+
enabled,
|
|
46
|
+
defaultEnabled,
|
|
47
|
+
override,
|
|
48
|
+
expiresAt: now + CACHE_TTL_MS,
|
|
49
|
+
});
|
|
50
|
+
return { enabled, defaultEnabled, override };
|
|
51
|
+
}
|
|
52
|
+
export async function isFleetNodesEnabled(kv, workspaceId, defaultEnabled = DEFAULT_ENABLED) {
|
|
53
|
+
const cfg = await getFleetNodesConfig(kv, workspaceId, defaultEnabled);
|
|
54
|
+
return cfg.enabled;
|
|
55
|
+
}
|
|
56
|
+
export async function setFleetNodesOverride(kv, workspaceId, override) {
|
|
57
|
+
const key = getKey(workspaceId);
|
|
58
|
+
if (override === null) {
|
|
59
|
+
await kv.delete(key);
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
await kv.put(key, override ? 'true' : 'false');
|
|
63
|
+
}
|
|
64
|
+
cache.delete(workspaceId);
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=fleetNodes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fleetNodes.js","sourceRoot":"","sources":["../../src/lib/fleetNodes.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;GAYG;AAEH,MAAM,UAAU,GAAG,sBAAsB,CAAC;AAC1C,MAAM,YAAY,GAAG,MAAM,CAAC;AAC5B,MAAM,eAAe,GAAG,KAAK,CAAC;AAS9B,MAAM,KAAK,GAAG,IAAI,GAAG,EAAsB,CAAC;AAE5C,SAAS,SAAS,CAAC,KAAgC;IACjD,IAAI,KAAK,IAAI,IAAI;QAAE,OAAO,IAAI,CAAC;IAC/B,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC9C,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC;QAAE,OAAO,IAAI,CAAC;IACjE,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC;QAAE,OAAO,KAAK,CAAC;IACnE,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,MAAM,CAAC,WAAmB;IACjC,OAAO,GAAG,UAAU,GAAG,WAAW,EAAE,CAAC;AACvC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,EAAiB,EACjB,WAAmB,EACnB,iBAA0B,eAAe;IAEzC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACtC,IAAI,MAAM,IAAI,MAAM,CAAC,SAAS,GAAG,GAAG,IAAI,MAAM,CAAC,cAAc,KAAK,cAAc,EAAE,CAAC;QACjF,OAAO;YACL,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,cAAc,EAAE,MAAM,CAAC,cAAc;YACrC,QAAQ,EAAE,MAAM,CAAC,QAAQ;SAC1B,CAAC;IACJ,CAAC;IAED,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;IAC9C,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;IAChC,MAAM,OAAO,GAAG,QAAQ,IAAI,cAAc,CAAC;IAE3C,KAAK,CAAC,GAAG,CAAC,WAAW,EAAE;QACrB,OAAO;QACP,cAAc;QACd,QAAQ;QACR,SAAS,EAAE,GAAG,GAAG,YAAY;KAC9B,CAAC,CAAC;IAEH,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,CAAC;AAC/C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,EAAiB,EACjB,WAAmB,EACnB,iBAA0B,eAAe;IAEzC,MAAM,GAAG,GAAG,MAAM,mBAAmB,CAAC,EAAE,EAAE,WAAW,EAAE,cAAc,CAAC,CAAC;IACvE,OAAO,GAAG,CAAC,OAAO,CAAC;AACrB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,EAAiB,EACjB,WAAmB,EACnB,QAAwB;IAExB,MAAM,GAAG,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;IAChC,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QACtB,MAAM,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACvB,CAAC;SAAM,CAAC;QACN,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IACjD,CAAC;IACD,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;AAC5B,CAAC"}
|
package/dist/lib/origin.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"origin.d.ts","sourceRoot":"","sources":["../../src/lib/origin.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,eAAe,EACrB,MAAM,kBAAkB,CAAC;AAE1B,MAAM,MAAM,UAAU,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;AAElD;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,6BAA6B,CAAC;AAC9D,eAAO,MAAM,kBAAkB,iBAAiB,CAAC;AACjD,eAAO,MAAM,8BAA8B,8BAA8B,CAAC;AAC1E,eAAO,MAAM,6BAA6B,4BAA4B,CAAC;AAEvE,kEAAkE;AAClE,eAAO,MAAM,oBAAoB,YAAY,CAAC;AAe9C;;;;;;;;;;;;;GAaG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAW3D;AAED,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,OAAO,GACf,MAAM,GAAG,SAAS,CAWpB;AAYD,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CASrE;AAED,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,OAAO,EAChB,kBAAkB,CAAC,EAAE,MAAM,GAC1B,UAAU,
|
|
1
|
+
{"version":3,"file":"origin.d.ts","sourceRoot":"","sources":["../../src/lib/origin.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,eAAe,EACrB,MAAM,kBAAkB,CAAC;AAE1B,MAAM,MAAM,UAAU,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;AAElD;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,6BAA6B,CAAC;AAC9D,eAAO,MAAM,kBAAkB,iBAAiB,CAAC;AACjD,eAAO,MAAM,8BAA8B,8BAA8B,CAAC;AAC1E,eAAO,MAAM,6BAA6B,4BAA4B,CAAC;AAEvE,kEAAkE;AAClE,eAAO,MAAM,oBAAoB,YAAY,CAAC;AAe9C;;;;;;;;;;;;;GAaG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAW3D;AAED,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,OAAO,GACf,MAAM,GAAG,SAAS,CAWpB;AAYD,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CASrE;AAED,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,OAAO,EAChB,kBAAkB,CAAC,EAAE,MAAM,GAC1B,UAAU,CA0BZ;AAED,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,OAAO,EAChB,kBAAkB,CAAC,EAAE,MAAM,GAC1B,eAAe,CAIjB"}
|
package/dist/lib/origin.js
CHANGED
|
@@ -81,12 +81,8 @@ export function deriveClientName(headers) {
|
|
|
81
81
|
export function extractOriginInfo(request, fallbackClientName) {
|
|
82
82
|
const headers = request.headers;
|
|
83
83
|
const url = new URL(request.url);
|
|
84
|
-
const querySurface = url.searchParams.get("origin_surface");
|
|
85
84
|
const queryClient = url.searchParams.get("origin_client");
|
|
86
85
|
const queryVersion = url.searchParams.get("origin_version");
|
|
87
|
-
const originSurface = sanitizeOriginPart(headers.get("x-relaycast-origin-surface") ??
|
|
88
|
-
headers.get("x-origin-surface") ??
|
|
89
|
-
querySurface, 32);
|
|
90
86
|
const originClient = sanitizeOriginPart(headers.get("x-relaycast-origin-client") ??
|
|
91
87
|
headers.get("x-origin-client") ??
|
|
92
88
|
queryClient ??
|
|
@@ -96,7 +92,6 @@ export function extractOriginInfo(request, fallbackClientName) {
|
|
|
96
92
|
queryVersion ??
|
|
97
93
|
headers.get("x-sdk-version"), 48);
|
|
98
94
|
return {
|
|
99
|
-
...(originSurface ? { origin_surface: originSurface } : {}),
|
|
100
95
|
...(originClient ? { origin_client: originClient } : {}),
|
|
101
96
|
...(originVersion ? { origin_version: originVersion } : {}),
|
|
102
97
|
};
|
package/dist/lib/origin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"origin.js","sourceRoot":"","sources":["../../src/lib/origin.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,wBAAwB,GAEzB,MAAM,kBAAkB,CAAC;AAI1B;;;;;GAKG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,0BAA0B,CAAC;AAC9D,MAAM,CAAC,MAAM,kBAAkB,GAAG,cAAc,CAAC;AACjD,MAAM,CAAC,MAAM,8BAA8B,GAAG,2BAA2B,CAAC;AAC1E,MAAM,CAAC,MAAM,6BAA6B,GAAG,yBAAyB,CAAC;AAEvE,kEAAkE;AAClE,MAAM,CAAC,MAAM,oBAAoB,GAAG,SAAS,CAAC;AAE9C,mFAAmF;AACnF,MAAM,uBAAuB,GAAG,GAAG,CAAC;AAEpC;;;;;;GAMG;AACH,MAAM,oBAAoB,GAAG,4BAA4B,CAAC;AAC1D,MAAM,+BAA+B,GAAG,kBAAkB,CAAC;AAE3D;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,kBAAkB,CAAC,OAAgB;IACjD,MAAM,GAAG,GACP,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;QACxC,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;IAC5D,IAAI,CAAC,GAAG;QAAE,OAAO,oBAAoB,CAAC;IAEtC,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IAC3B,IAAI,CAAC,OAAO;QAAE,OAAO,oBAAoB,CAAC;IAC1C,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC;QAAE,OAAO,oBAAoB,CAAC;IAErE,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,uBAAuB,CAAC,CAAC,WAAW,EAAE,CAAC;AACjE,CAAC;AAED,MAAM,UAAU,2BAA2B,CACzC,OAAgB;IAEhB,MAAM,GAAG,GACP,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC;QACnD,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;IACvE,IAAI,CAAC,GAAG;QAAE,OAAO,SAAS,CAAC;IAE3B,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IAC3B,IAAI,CAAC,OAAO;QAAE,OAAO,SAAS,CAAC;IAC/B,IAAI,CAAC,+BAA+B,CAAC,IAAI,CAAC,OAAO,CAAC;QAAE,OAAO,SAAS,CAAC;IAErE,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AAC/B,CAAC;AAED,SAAS,kBAAkB,CACzB,KAAgC,EAChC,MAAc;IAEd,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAC7B,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAChC,IAAI,CAAC,UAAU;QAAE,OAAO,SAAS,CAAC;IAClC,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,OAAgB;IAC/C,MAAM,QAAQ,GACZ,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;IACpE,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAElD,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IACrC,IAAI,CAAC,EAAE;QAAE,OAAO,SAAS,CAAC;IAC1B,MAAM,MAAM,GAAG,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;IACtC,OAAO,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,OAAgB,EAChB,kBAA2B;IAE3B,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAChC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAEjC,MAAM,
|
|
1
|
+
{"version":3,"file":"origin.js","sourceRoot":"","sources":["../../src/lib/origin.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serverTelemetry.d.ts","sourceRoot":"","sources":["../../src/lib/serverTelemetry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACpC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAQxC,KAAK,WAAW,GAAG,oBAAoB,MAAM,EAAE,CAAC;AAEhD,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAoBpE;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,EAClB,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,WAAW,EAClB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAClC,IAAI,
|
|
1
|
+
{"version":3,"file":"serverTelemetry.d.ts","sourceRoot":"","sources":["../../src/lib/serverTelemetry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACpC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAQxC,KAAK,WAAW,GAAG,oBAAoB,MAAM,EAAE,CAAC;AAEhD,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAoBpE;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,EAClB,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,WAAW,EAClB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAClC,IAAI,CA6BN"}
|
|
@@ -41,7 +41,6 @@ export function emitServerEvent(c, workspaceId, event, properties) {
|
|
|
41
41
|
workspace_id: workspaceId,
|
|
42
42
|
...(clientDistinctId ? { client_distinct_id: clientDistinctId } : {}),
|
|
43
43
|
origin_actor: originActor,
|
|
44
|
-
origin_surface: origin.origin_surface,
|
|
45
44
|
origin_client: origin.origin_client,
|
|
46
45
|
origin_version: origin.origin_version,
|
|
47
46
|
...normalizedProperties,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serverTelemetry.js","sourceRoot":"","sources":["../../src/lib/serverTelemetry.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,2BAA2B,EAC3B,kBAAkB,EAClB,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,aAAa,CAAC;AAIrB,MAAM,UAAU,8BAA8B,CAAC,KAAa;IAC1D,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC;IACrD,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IACzD,MAAM,gBAAgB,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,OAAO,EAAE,CAAC;IAC3E,MAAM,QAAQ,GAAG,gBAAgB;SAC9B,KAAK,CAAC,GAAG,CAAC;SACV,MAAM,CAAC,OAAO,CAAC;SACf,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;QACf,IAAI,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC;YAAE,OAAO,KAAK,CAAC;QAC3C,IACE,4EAA4E,CAAC,IAAI,CAC/E,OAAO,CACR;YAED,OAAO,KAAK,CAAC;QACf,IAAI,0CAA0C,CAAC,IAAI,CAAC,OAAO,CAAC;YAC1D,OAAO,KAAK,CAAC;QACf,OAAO,OAAO,CAAC;IACjB,CAAC,CAAC,CAAC;IACL,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;AAClC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAC7B,CAAkB,EAClB,WAAmB,EACnB,KAAkB,EAClB,UAAmC;IAEnC,MAAM,oBAAoB,GAAG,EAAE,GAAG,UAAU,EAAE,CAAC;IAC/C,IAAI,OAAO,oBAAoB,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;QACxD,oBAAoB,CAAC,UAAU,GAAG,8BAA8B,CAC9D,oBAAoB,CAAC,UAAU,CAChC,CAAC;IACJ,CAAC;IAED,8EAA8E;IAC9E,6EAA6E;IAC7E,MAAM,WAAW,GACf,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,kBAAkB,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,oBAAoB,CAAC;IAEhF,MAAM,MAAM,GAAG,kBAAkB,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC7C,MAAM,gBAAgB,GAAG,2BAA2B,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAChE,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC;QAChC,IAAI,EAAE,KAAK;QACX,UAAU,EAAE,gBAAgB,IAAI,WAAW;QAC3C,UAAU,EAAE;YACV,GAAG,EAAE,kBAAkB;YACvB,OAAO,EAAE,OAAO;YAChB,YAAY,EAAE,WAAW;YACzB,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACrE,YAAY,EAAE,WAAW;YACzB,
|
|
1
|
+
{"version":3,"file":"serverTelemetry.js","sourceRoot":"","sources":["../../src/lib/serverTelemetry.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,2BAA2B,EAC3B,kBAAkB,EAClB,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,aAAa,CAAC;AAIrB,MAAM,UAAU,8BAA8B,CAAC,KAAa;IAC1D,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC;IACrD,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IACzD,MAAM,gBAAgB,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,OAAO,EAAE,CAAC;IAC3E,MAAM,QAAQ,GAAG,gBAAgB;SAC9B,KAAK,CAAC,GAAG,CAAC;SACV,MAAM,CAAC,OAAO,CAAC;SACf,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;QACf,IAAI,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC;YAAE,OAAO,KAAK,CAAC;QAC3C,IACE,4EAA4E,CAAC,IAAI,CAC/E,OAAO,CACR;YAED,OAAO,KAAK,CAAC;QACf,IAAI,0CAA0C,CAAC,IAAI,CAAC,OAAO,CAAC;YAC1D,OAAO,KAAK,CAAC;QACf,OAAO,OAAO,CAAC;IACjB,CAAC,CAAC,CAAC;IACL,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;AAClC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAC7B,CAAkB,EAClB,WAAmB,EACnB,KAAkB,EAClB,UAAmC;IAEnC,MAAM,oBAAoB,GAAG,EAAE,GAAG,UAAU,EAAE,CAAC;IAC/C,IAAI,OAAO,oBAAoB,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;QACxD,oBAAoB,CAAC,UAAU,GAAG,8BAA8B,CAC9D,oBAAoB,CAAC,UAAU,CAChC,CAAC;IACJ,CAAC;IAED,8EAA8E;IAC9E,6EAA6E;IAC7E,MAAM,WAAW,GACf,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,kBAAkB,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,oBAAoB,CAAC;IAEhF,MAAM,MAAM,GAAG,kBAAkB,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC7C,MAAM,gBAAgB,GAAG,2BAA2B,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAChE,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC;QAChC,IAAI,EAAE,KAAK;QACX,UAAU,EAAE,gBAAgB,IAAI,WAAW;QAC3C,UAAU,EAAE;YACV,GAAG,EAAE,kBAAkB;YACvB,OAAO,EAAE,OAAO;YAChB,YAAY,EAAE,WAAW;YACzB,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACrE,YAAY,EAAE,WAAW;YACzB,aAAa,EAAE,MAAM,CAAC,aAAa;YACnC,cAAc,EAAE,MAAM,CAAC,cAAc;YACrC,GAAG,oBAAoB;SACxB;KACF,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { AppEnv } from '../env.js';
|
|
2
|
+
/**
|
|
3
|
+
* Gate the fleet node control surface behind the per-workspace rollout flag
|
|
4
|
+
* (Phase 6). When the flag is off, the node roster routes behave as if the
|
|
5
|
+
* surface does not exist — a flat 404 — so legacy clients and old brokers see
|
|
6
|
+
* no behavioural change. Must run after auth middleware so `c.get('workspace')`
|
|
7
|
+
* is populated.
|
|
8
|
+
*/
|
|
9
|
+
export declare const requireFleetNodes: import("hono").MiddlewareHandler<AppEnv, string, {}, Response>;
|
|
10
|
+
//# sourceMappingURL=fleetNodes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fleetNodes.d.ts","sourceRoot":"","sources":["../../src/middleware/fleetNodes.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAGxC;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,gEAU5B,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { createMiddleware } from 'hono/factory';
|
|
2
|
+
import { isFleetNodesEnabled } from '../lib/fleetNodes.js';
|
|
3
|
+
/**
|
|
4
|
+
* Gate the fleet node control surface behind the per-workspace rollout flag
|
|
5
|
+
* (Phase 6). When the flag is off, the node roster routes behave as if the
|
|
6
|
+
* surface does not exist — a flat 404 — so legacy clients and old brokers see
|
|
7
|
+
* no behavioural change. Must run after auth middleware so `c.get('workspace')`
|
|
8
|
+
* is populated.
|
|
9
|
+
*/
|
|
10
|
+
export const requireFleetNodes = createMiddleware(async (c, next) => {
|
|
11
|
+
const workspace = c.get('workspace');
|
|
12
|
+
const { kv, config } = c.get('engine');
|
|
13
|
+
if (!workspace || !(await isFleetNodesEnabled(kv, workspace.id, config.fleetNodesEnabled ?? false))) {
|
|
14
|
+
return c.json({ ok: false, error: { code: 'fleet_nodes_disabled', message: 'Fleet nodes are disabled for this workspace' } }, 404);
|
|
15
|
+
}
|
|
16
|
+
await next();
|
|
17
|
+
});
|
|
18
|
+
//# sourceMappingURL=fleetNodes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fleetNodes.js","sourceRoot":"","sources":["../../src/middleware/fleetNodes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEhD,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAE3D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,gBAAgB,CAAS,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE;IAC1E,MAAM,SAAS,GAAG,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACrC,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACvC,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC,MAAM,mBAAmB,CAAC,EAAE,EAAE,SAAS,CAAC,EAAE,EAAE,MAAM,CAAC,iBAAiB,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC;QACpG,OAAO,CAAC,CAAC,IAAI,CACX,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,sBAAsB,EAAE,OAAO,EAAE,6CAA6C,EAAE,EAAE,EAC9G,GAAG,CACJ,CAAC;IACJ,CAAC;IACD,MAAM,IAAI,EAAE,CAAC;AACf,CAAC,CAAC,CAAC"}
|
package/dist/ports/index.d.ts
CHANGED
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
*/
|
|
14
14
|
export type { EngineDb, TransactionCapability, BatchCapability, AtomicWrite, AtomicWriteBuilder, AtomicWriteInput, } from './database.js';
|
|
15
15
|
export { runAtomic, runAtomicWrites } from './database.js';
|
|
16
|
-
export type { EngineEvent, RealtimeBus, ConnectionRegistry, BroadcastToChannelArgs, UpgradeArgs, } from './realtime.js';
|
|
16
|
+
export type { EngineEvent, RealtimeBus, ConnectionRegistry, NodeConnectionRegistry, BroadcastToChannelArgs, UpgradeArgs, NodeUpgradeArgs, } from './realtime.js';
|
|
17
17
|
export type { PresenceTracker } from './presence.js';
|
|
18
18
|
export type { RateLimiter, RateLimitResult } from './rate-limit.js';
|
|
19
19
|
export type { FileStorage } from './files.js';
|
|
@@ -23,7 +23,7 @@ export type { AuthProvider, AuthResult, AuthRequire, Workspace, Agent, } from '.
|
|
|
23
23
|
export type { EntitlementsProvider, PlanLimits, UsageMetric, } from './entitlements.js';
|
|
24
24
|
export type { TelemetrySink, TelemetryEvent } from './telemetry.js';
|
|
25
25
|
import type { EngineDb } from './database.js';
|
|
26
|
-
import type { RealtimeBus, ConnectionRegistry } from './realtime.js';
|
|
26
|
+
import type { RealtimeBus, ConnectionRegistry, NodeConnectionRegistry } from './realtime.js';
|
|
27
27
|
import type { PresenceTracker } from './presence.js';
|
|
28
28
|
import type { RateLimiter } from './rate-limit.js';
|
|
29
29
|
import type { FileStorage } from './files.js';
|
|
@@ -37,6 +37,7 @@ export interface EnginePorts {
|
|
|
37
37
|
db: EngineDb;
|
|
38
38
|
realtime: RealtimeBus;
|
|
39
39
|
connections: ConnectionRegistry;
|
|
40
|
+
nodeConnections: NodeConnectionRegistry;
|
|
40
41
|
presence: PresenceTracker;
|
|
41
42
|
rateLimiter: RateLimiter;
|
|
42
43
|
files: FileStorage;
|
|
@@ -78,5 +79,26 @@ export interface EngineConfig {
|
|
|
78
79
|
* enabled per workspace via the KV override.
|
|
79
80
|
*/
|
|
80
81
|
workspaceStreamEnabled?: boolean;
|
|
82
|
+
/**
|
|
83
|
+
* Engine-wide default for the fleet node control surface (Phase 6 rollout flag).
|
|
84
|
+
* When false (the default), the node registry, node control WS, declarative
|
|
85
|
+
* triggers, and spawn/node-action placement are inert unless a workspace opts in
|
|
86
|
+
* via the per-workspace KV override. Lets fleet ship dark and roll out per
|
|
87
|
+
* workspace; legacy per-agent WS delivery is unaffected either way.
|
|
88
|
+
*/
|
|
89
|
+
fleetNodesEnabled?: boolean;
|
|
90
|
+
/**
|
|
91
|
+
* Bounded durable mailbox tuning. Hosted adapters may provide workspace
|
|
92
|
+
* overrides; self-host defaults to one hour TTL and 1000 in-flight deliveries
|
|
93
|
+
* per agent.
|
|
94
|
+
*/
|
|
95
|
+
mailbox?: {
|
|
96
|
+
deliveryTtlMs?: number;
|
|
97
|
+
depthCap?: number;
|
|
98
|
+
workspaces?: Record<string, {
|
|
99
|
+
deliveryTtlMs?: number;
|
|
100
|
+
depthCap?: number;
|
|
101
|
+
}>;
|
|
102
|
+
};
|
|
81
103
|
}
|
|
82
104
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -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,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ports/index.ts"],"names":[],"mappings":"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"}
|
package/dist/ports/realtime.d.ts
CHANGED
|
@@ -10,11 +10,12 @@
|
|
|
10
10
|
* - Cloudflare DO adapter (cloud, lives in the cloud repo): translates each
|
|
11
11
|
* call back into `env.X_DO.idFromName(...).fetch(...)`.
|
|
12
12
|
*
|
|
13
|
-
* `RealtimeBus` and `
|
|
13
|
+
* `RealtimeBus`, `ConnectionRegistry`, and `NodeConnectionRegistry` are intentionally separate interfaces
|
|
14
14
|
* with different callers (routes drive the bus; the WS upgrade route drives the
|
|
15
15
|
* registry) even though a single in-process adapter implements both over shared
|
|
16
16
|
* state (an agent's seq counter and its socket set must live together).
|
|
17
17
|
*/
|
|
18
|
+
import type { FleetRelaycastToBrokerMessage } from '@relaycast/types';
|
|
18
19
|
/** A client-facing event payload, already passed through `transformForClient`. */
|
|
19
20
|
export type EngineEvent = Record<string, unknown>;
|
|
20
21
|
export interface BroadcastToChannelArgs {
|
|
@@ -69,7 +70,6 @@ export interface UpgradeArgs {
|
|
|
69
70
|
/** Display name, used for presence events. */
|
|
70
71
|
agentName?: string;
|
|
71
72
|
origin: {
|
|
72
|
-
surface: string;
|
|
73
73
|
client: string;
|
|
74
74
|
version: string;
|
|
75
75
|
};
|
|
@@ -101,4 +101,36 @@ export interface ConnectionRegistry {
|
|
|
101
101
|
/** Force-close all of an agent's sockets (e.g. on token rotation). Replaces AgentDO `/force-disconnect`. */
|
|
102
102
|
disconnectAgent(workspaceId: string, agentId: string): Promise<void>;
|
|
103
103
|
}
|
|
104
|
+
export interface NodeUpgradeArgs {
|
|
105
|
+
request: Request;
|
|
106
|
+
workspaceId: string;
|
|
107
|
+
nodeId: string;
|
|
108
|
+
nodeName: string;
|
|
109
|
+
origin: {
|
|
110
|
+
client: string;
|
|
111
|
+
version: string;
|
|
112
|
+
};
|
|
113
|
+
originActor?: string;
|
|
114
|
+
}
|
|
115
|
+
export interface NodeConnectionRegistry {
|
|
116
|
+
/**
|
|
117
|
+
* Upgrade an incoming node-control request. Cloudflare adapters own the 101
|
|
118
|
+
* response; the Node adapter handles upgrades in the HTTP server and exposes
|
|
119
|
+
* attachNodeSocket instead.
|
|
120
|
+
*/
|
|
121
|
+
upgradeNode(args: NodeUpgradeArgs): Promise<Response>;
|
|
122
|
+
/** Push a typed fleet control message to the node's live broker connection. */
|
|
123
|
+
sendToNode(workspaceId: string, nodeId: string, message: FleetRelaycastToBrokerMessage): Promise<boolean>;
|
|
124
|
+
/** True when the node currently has a live control connection. */
|
|
125
|
+
isNodeConnected(workspaceId: string, nodeId: string): boolean;
|
|
126
|
+
/** Force-close all sockets for a node. */
|
|
127
|
+
disconnectNode(workspaceId: string, nodeId: string): Promise<void>;
|
|
128
|
+
/**
|
|
129
|
+
* Flush any queued `action.invoke` frames to the node's live connection.
|
|
130
|
+
* Must be invoked once the node is marked online (post node.register /
|
|
131
|
+
* node.heartbeat) so capacity reservation for queued spawns can succeed.
|
|
132
|
+
* Implementations serialize concurrent drains per node.
|
|
133
|
+
*/
|
|
134
|
+
drainNode(workspaceId: string, nodeId: string): Promise<void>;
|
|
135
|
+
}
|
|
104
136
|
//# sourceMappingURL=realtime.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"realtime.d.ts","sourceRoot":"","sources":["../../src/ports/realtime.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,kFAAkF;AAClF,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAElD,MAAM,WAAW,sBAAsB;IACrC,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,WAAW,CAAC;IACnB,iFAAiF;IACjF,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,6EAA6E;IAC7E,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,WAAW;IAC1B;;;;;;OAMG;IACH,kBAAkB,CAAC,IAAI,EAAE,sBAAsB,GAAG,OAAO,CAAC;QAAE,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAElF;;;;OAIG;IACH,eAAe,CAAC,IAAI,EAAE;QACpB,WAAW,EAAE,MAAM,CAAC;QACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;QACnB,KAAK,EAAE,WAAW,CAAC;KACpB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAElB;;;OAGG;IACH,wBAAwB,CAAC,IAAI,EAAE;QAC7B,WAAW,EAAE,MAAM,CAAC;QACpB,KAAK,EAAE,WAAW,CAAC;KACpB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAElB,yFAAyF;IACzF,iBAAiB,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE5F,sFAAsF;IACtF,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACzF;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,OAAO,GAAG,WAAW,CAAC;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,yCAAyC;IACzC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,8CAA8C;IAC9C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE;QAAE,
|
|
1
|
+
{"version":3,"file":"realtime.d.ts","sourceRoot":"","sources":["../../src/ports/realtime.ts"],"names":[],"mappings":"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"}
|
package/dist/ports/realtime.js
CHANGED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
* - Cloudflare DO adapter (cloud, lives in the cloud repo): translates each
|
|
11
11
|
* call back into `env.X_DO.idFromName(...).fetch(...)`.
|
|
12
12
|
*
|
|
13
|
-
* `RealtimeBus` and `
|
|
13
|
+
* `RealtimeBus`, `ConnectionRegistry`, and `NodeConnectionRegistry` are intentionally separate interfaces
|
|
14
14
|
* with different callers (routes drive the bus; the WS upgrade route drives the
|
|
15
15
|
* registry) even though a single in-process adapter implements both over shared
|
|
16
16
|
* state (an agent's seq counter and its socket set must live together).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"action.d.ts","sourceRoot":"","sources":["../../src/routes/action.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"action.d.ts","sourceRoot":"","sources":["../../src/routes/action.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAG5B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAaxC,eAAO,MAAM,YAAY,qDAAqB,CAAC"}
|
package/dist/routes/action.js
CHANGED
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
import { Hono } from 'hono';
|
|
2
2
|
import { z } from 'zod';
|
|
3
|
+
import { FleetWireJsonValueSchema } from '@relaycast/types';
|
|
3
4
|
import { errorResponse } from '../lib/httpError.js';
|
|
4
5
|
import { requireAuth } from '../middleware/auth.js';
|
|
5
6
|
import { rateLimit } from '../middleware/rateLimit.js';
|
|
6
7
|
import * as actionEngine from '../engine/action.js';
|
|
8
|
+
import { emitInvocationCompletionEffects } from '../engine/invocationCompletion.js';
|
|
9
|
+
import { isFleetNodesEnabled } from '../lib/fleetNodes.js';
|
|
7
10
|
import { fanoutToWorkspace, fanoutToAgents } from './fanout.js';
|
|
8
11
|
import { runInBackground } from './background.js';
|
|
9
12
|
import { sendWebhookEvent } from './webhookOutbox.js';
|
|
@@ -13,7 +16,8 @@ export const actionRoutes = new Hono();
|
|
|
13
16
|
const registerActionSchema = z.object({
|
|
14
17
|
name: z.string().min(1),
|
|
15
18
|
description: z.string().min(1),
|
|
16
|
-
handler_agent: z.string().min(1),
|
|
19
|
+
handler_agent: z.string().min(1).optional(),
|
|
20
|
+
handler_node: z.string().min(1).optional(),
|
|
17
21
|
input_schema: z.record(z.string(), z.unknown()).optional(),
|
|
18
22
|
output_schema: z.record(z.string(), z.unknown()).optional(),
|
|
19
23
|
available_to: z.array(z.string().min(1)).optional(),
|
|
@@ -22,7 +26,7 @@ const invokeActionSchema = z.object({
|
|
|
22
26
|
input: z.record(z.string(), z.unknown()).optional(),
|
|
23
27
|
});
|
|
24
28
|
const completeInvocationSchema = z.object({
|
|
25
|
-
output:
|
|
29
|
+
output: FleetWireJsonValueSchema.optional(),
|
|
26
30
|
error: z.string().optional(),
|
|
27
31
|
duration_ms: z.number().int().nonnegative().optional(),
|
|
28
32
|
});
|
|
@@ -35,13 +39,13 @@ actionRoutes.post('/actions', requireAuth, rateLimit, async (c) => {
|
|
|
35
39
|
if (!parsed.success) {
|
|
36
40
|
const hasNameIssue = parsed.error.issues.some((i) => i.path[0] === 'name');
|
|
37
41
|
const hasDescIssue = parsed.error.issues.some((i) => i.path[0] === 'description');
|
|
38
|
-
const hasHandlerIssue = parsed.error.issues.some((i) => i.path[0] === 'handler_agent');
|
|
42
|
+
const hasHandlerIssue = parsed.error.issues.some((i) => i.path[0] === 'handler_agent' || i.path[0] === 'handler_node');
|
|
39
43
|
const message = hasNameIssue
|
|
40
44
|
? 'name is required'
|
|
41
45
|
: hasDescIssue
|
|
42
46
|
? 'description is required'
|
|
43
47
|
: hasHandlerIssue
|
|
44
|
-
? 'handler_agent is required'
|
|
48
|
+
? 'handler_agent or handler_node is required'
|
|
45
49
|
: 'invalid action registration body';
|
|
46
50
|
return c.json({ ok: false, error: { code: 'invalid_request', message } }, 400);
|
|
47
51
|
}
|
|
@@ -53,7 +57,8 @@ actionRoutes.post('/actions', requireAuth, rateLimit, async (c) => {
|
|
|
53
57
|
const result = await actionEngine.registerAction(db, workspace.id, parsed.data);
|
|
54
58
|
emitServerEvent(c, workspace.id, 'relaycast_server_action_registered', {
|
|
55
59
|
action_name: result.name,
|
|
56
|
-
handler_agent_name: parsed.data.handler_agent,
|
|
60
|
+
handler_agent_name: parsed.data.handler_agent ?? null,
|
|
61
|
+
handler_node_name: parsed.data.handler_node ?? null,
|
|
57
62
|
});
|
|
58
63
|
runInBackground(c, fanoutToWorkspace(c, 'action.registered', { action_name: result.name }), 'fanout action.registered');
|
|
59
64
|
return c.json({ ok: true, data: result }, 201);
|
|
@@ -128,18 +133,27 @@ actionRoutes.post('/actions/:name/invoke', requireAuth, rateLimit, async (c) =>
|
|
|
128
133
|
if (!parsed.success) {
|
|
129
134
|
return c.json({ ok: false, error: { code: 'invalid_request', message: 'invalid invocation body' } }, 400);
|
|
130
135
|
}
|
|
136
|
+
const { nodeConnections, kv, config } = c.get('engine');
|
|
131
137
|
const result = await actionEngine.invokeAction(db, workspace.id, c.req.param('name'), {
|
|
132
138
|
input: parsed.data.input,
|
|
133
139
|
caller_id: agent.id,
|
|
134
140
|
caller_name: agent.name,
|
|
141
|
+
}, {
|
|
142
|
+
nodeConnections,
|
|
143
|
+
// Phase 6 rollout flag: spawn placement and node-handler dispatch refuse
|
|
144
|
+
// when fleet is off for the workspace. Agent-handler actions are unaffected.
|
|
145
|
+
fleetNodesEnabled: await isFleetNodesEnabled(kv, workspace.id, config.fleetNodesEnabled ?? false),
|
|
135
146
|
});
|
|
136
147
|
const eventData = {
|
|
137
148
|
invocation_id: result.invocation_id,
|
|
138
149
|
action_name: result.action_name,
|
|
139
150
|
caller_name: agent.name,
|
|
140
151
|
handler_agent_id: result.handler_agent_id,
|
|
152
|
+
handler_node_id: result.handler_node_id,
|
|
141
153
|
};
|
|
142
|
-
|
|
154
|
+
if (result.handler_agent_id) {
|
|
155
|
+
runInBackground(c, fanoutToAgents(c, [result.handler_agent_id], 'action.invoked', eventData), 'fanout action.invoked');
|
|
156
|
+
}
|
|
143
157
|
await sendWebhookEvent(c, {
|
|
144
158
|
type: 'action.invoked',
|
|
145
159
|
workspaceId: workspace.id,
|
|
@@ -186,21 +200,7 @@ actionRoutes.post('/actions/:name/invocations/:id/complete', requireAuth, rateLi
|
|
|
186
200
|
if (!result) {
|
|
187
201
|
return c.json({ ok: false, error: { code: 'invocation_not_found', message: 'Invocation not found' } }, 404);
|
|
188
202
|
}
|
|
189
|
-
|
|
190
|
-
const eventPayload = {
|
|
191
|
-
invocation_id: result.invocation_id,
|
|
192
|
-
action_name: result.action_name,
|
|
193
|
-
status: result.status,
|
|
194
|
-
output: result.output,
|
|
195
|
-
error: result.error,
|
|
196
|
-
};
|
|
197
|
-
// Push directly to the invoking agent's AgentDO (targeted delivery)
|
|
198
|
-
if (result.caller_id) {
|
|
199
|
-
runInBackground(c, fanoutToAgents(c, [result.caller_id], eventType, eventPayload), `fanout ${eventType} to caller`);
|
|
200
|
-
}
|
|
201
|
-
// Also broadcast on workspace stream for dashboard/workspace-key subscribers
|
|
202
|
-
runInBackground(c, fanoutToWorkspace(c, eventType, eventPayload), `fanout ${eventType} workspace`);
|
|
203
|
-
await sendWebhookEvent(c, { type: eventType, workspaceId: workspace.id, data: result });
|
|
203
|
+
await emitInvocationCompletionEffects(c.get('engine'), workspace.id, result);
|
|
204
204
|
// Strip caller_id from client response (internal routing detail)
|
|
205
205
|
const { caller_id: _drop, ...publicResult } = result;
|
|
206
206
|
return c.json({ ok: true, data: publicResult });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"action.js","sourceRoot":"","sources":["../../src/routes/action.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"action.js","sourceRoot":"","sources":["../../src/routes/action.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;AAUxC,eAAO,MAAM,cAAc,qDAAqB,CAAC"}
|
package/dist/routes/delivery.js
CHANGED
|
@@ -3,12 +3,13 @@ import { requireAgentToken } from '../middleware/auth.js';
|
|
|
3
3
|
import { rateLimit } from '../middleware/rateLimit.js';
|
|
4
4
|
import * as deliveryEngine from '../engine/delivery.js';
|
|
5
5
|
import { fanoutToAgents } from './fanout.js';
|
|
6
|
+
import { notifyDeliveryFailures } from './deliveryRouting.js';
|
|
6
7
|
import { runInBackground } from './background.js';
|
|
7
8
|
import { errorResponse } from '../lib/httpError.js';
|
|
8
9
|
import { ListDeliveriesQuerySchema, FailDeliveryRequestSchema, DeferDeliveryRequestSchema } from '@relaycast/types';
|
|
9
10
|
export const deliveryRoutes = new Hono();
|
|
10
11
|
// GET /v1/deliveries - durable delivery queue for the calling agent.
|
|
11
|
-
// Defaults to non-terminal items (
|
|
12
|
+
// Defaults to non-terminal items (queued + delivered) so offline consumers
|
|
12
13
|
// can replay what they missed after reconnect.
|
|
13
14
|
deliveryRoutes.get('/deliveries', requireAgentToken, rateLimit, async (c) => {
|
|
14
15
|
try {
|
|
@@ -25,6 +26,10 @@ deliveryRoutes.get('/deliveries', requireAgentToken, rateLimit, async (c) => {
|
|
|
25
26
|
const db = c.get('db');
|
|
26
27
|
const workspace = c.get('workspace');
|
|
27
28
|
const agent = c.get('agent');
|
|
29
|
+
const expired = await deliveryEngine.expireDueDeliveries(db, workspace.id);
|
|
30
|
+
if (expired.length > 0) {
|
|
31
|
+
runInBackground(c, notifyDeliveryFailures(c, expired), 'fanout delivery expired');
|
|
32
|
+
}
|
|
28
33
|
const result = await deliveryEngine.listDeliveries(db, workspace.id, agent.id, parsed.data);
|
|
29
34
|
return c.json({ ok: true, data: result });
|
|
30
35
|
}
|
|
@@ -32,7 +37,7 @@ deliveryRoutes.get('/deliveries', requireAgentToken, rateLimit, async (c) => {
|
|
|
32
37
|
return errorResponse(c, err);
|
|
33
38
|
}
|
|
34
39
|
});
|
|
35
|
-
// POST /v1/deliveries/:id/ack - idempotently mark a delivery
|
|
40
|
+
// POST /v1/deliveries/:id/ack - idempotently mark a delivery acked.
|
|
36
41
|
deliveryRoutes.post('/deliveries/:id/ack', requireAgentToken, rateLimit, async (c) => {
|
|
37
42
|
try {
|
|
38
43
|
const db = c.get('db');
|