@relaycast/engine 4.2.0 → 5.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/adapters/node/index.d.ts.map +1 -1
- package/dist/adapters/node/index.js +23 -1
- package/dist/adapters/node/index.js.map +1 -1
- package/dist/adapters/node/presence.d.ts +7 -3
- package/dist/adapters/node/presence.d.ts.map +1 -1
- package/dist/adapters/node/presence.js +10 -8
- package/dist/adapters/node/presence.js.map +1 -1
- package/dist/adapters/node/realtime.d.ts +9 -1
- package/dist/adapters/node/realtime.d.ts.map +1 -1
- package/dist/adapters/node/realtime.js +72 -10
- package/dist/adapters/node/realtime.js.map +1 -1
- package/dist/auth/index.d.ts.map +1 -1
- package/dist/auth/index.js +31 -9
- package/dist/auth/index.js.map +1 -1
- package/dist/auth/tokenKind.d.ts +40 -0
- package/dist/auth/tokenKind.d.ts.map +1 -0
- package/dist/auth/tokenKind.js +89 -0
- package/dist/auth/tokenKind.js.map +1 -0
- package/dist/bin/serve.js +2 -4
- package/dist/bin/serve.js.map +1 -1
- package/dist/db/migrations/0021_node_delivery_contracts.sql +70 -0
- package/dist/db/migrations/0022_http_push_redrive.sql +13 -0
- package/dist/db/migrations/0023_direct_ws_nodes.sql +124 -0
- package/dist/db/migrations/0024_binding_workspace_constraints.sql +109 -0
- package/dist/db/migrations/0025_node_kind_role_adapter.sql +45 -0
- package/dist/db/migrations/0026_observer_tokens.sql +32 -0
- package/dist/db/schema.d.ts +727 -59
- package/dist/db/schema.d.ts.map +1 -1
- package/dist/db/schema.js +78 -2
- package/dist/db/schema.js.map +1 -1
- package/dist/engine/action.d.ts +2 -9
- package/dist/engine/action.d.ts.map +1 -1
- package/dist/engine/action.js +182 -14
- package/dist/engine/action.js.map +1 -1
- package/dist/engine/activity.d.ts +6 -0
- package/dist/engine/activity.d.ts.map +1 -1
- package/dist/engine/activity.js +9 -2
- package/dist/engine/activity.js.map +1 -1
- package/dist/engine/agent.d.ts +0 -33
- package/dist/engine/agent.d.ts.map +1 -1
- package/dist/engine/agent.js +4 -153
- package/dist/engine/agent.js.map +1 -1
- package/dist/engine/attachments.d.ts +6 -0
- package/dist/engine/attachments.d.ts.map +1 -1
- package/dist/engine/attachments.js +37 -0
- package/dist/engine/attachments.js.map +1 -1
- package/dist/engine/console.d.ts +78 -1
- package/dist/engine/console.d.ts.map +1 -1
- package/dist/engine/console.js +175 -19
- package/dist/engine/console.js.map +1 -1
- package/dist/engine/delivery.d.ts +26 -0
- package/dist/engine/delivery.d.ts.map +1 -1
- package/dist/engine/delivery.js +194 -74
- package/dist/engine/delivery.js.map +1 -1
- package/dist/engine/deliveryWire.d.ts +4 -0
- package/dist/engine/deliveryWire.d.ts.map +1 -1
- package/dist/engine/deliveryWire.js +2 -0
- package/dist/engine/deliveryWire.js.map +1 -1
- package/dist/engine/deliveryWrites.d.ts +6 -0
- package/dist/engine/deliveryWrites.d.ts.map +1 -1
- package/dist/engine/deliveryWrites.js +58 -13
- package/dist/engine/deliveryWrites.js.map +1 -1
- package/dist/engine/dm.d.ts.map +1 -1
- package/dist/engine/dm.js +11 -33
- package/dist/engine/dm.js.map +1 -1
- package/dist/engine/dmAll.d.ts.map +1 -1
- package/dist/engine/dmAll.js +2 -0
- package/dist/engine/dmAll.js.map +1 -1
- package/dist/engine/groupDm.d.ts +2 -3
- package/dist/engine/groupDm.d.ts.map +1 -1
- package/dist/engine/groupDm.js +8 -26
- package/dist/engine/groupDm.js.map +1 -1
- package/dist/engine/invocationCompletion.d.ts +1 -1
- package/dist/engine/invocationCompletion.d.ts.map +1 -1
- package/dist/engine/invocationCompletion.js +10 -18
- package/dist/engine/invocationCompletion.js.map +1 -1
- package/dist/engine/message.d.ts.map +1 -1
- package/dist/engine/message.js +16 -44
- package/dist/engine/message.js.map +1 -1
- package/dist/engine/node.d.ts +97 -0
- package/dist/engine/node.d.ts.map +1 -1
- package/dist/engine/node.js +555 -27
- package/dist/engine/node.js.map +1 -1
- package/dist/engine/nodeContext.d.ts +22 -0
- package/dist/engine/nodeContext.d.ts.map +1 -0
- package/dist/engine/nodeContext.js +80 -0
- package/dist/engine/nodeContext.js.map +1 -0
- package/dist/engine/nodeDeliver.d.ts +23 -0
- package/dist/engine/nodeDeliver.d.ts.map +1 -0
- package/dist/engine/nodeDeliver.js +81 -0
- package/dist/engine/nodeDeliver.js.map +1 -0
- package/dist/engine/observerToken.d.ts +110 -0
- package/dist/engine/observerToken.d.ts.map +1 -0
- package/dist/engine/observerToken.js +528 -0
- package/dist/engine/observerToken.js.map +1 -0
- package/dist/engine/search.d.ts +4 -0
- package/dist/engine/search.d.ts.map +1 -1
- package/dist/engine/search.js +6 -1
- package/dist/engine/search.js.map +1 -1
- package/dist/engine/thread.d.ts +4 -3
- package/dist/engine/thread.d.ts.map +1 -1
- package/dist/engine/thread.js +45 -17
- package/dist/engine/thread.js.map +1 -1
- package/dist/engine/wsAuth.d.ts +32 -0
- package/dist/engine/wsAuth.d.ts.map +1 -0
- package/dist/engine/wsAuth.js +65 -0
- package/dist/engine/wsAuth.js.map +1 -0
- package/dist/engine/wsTransform.d.ts.map +1 -1
- package/dist/engine/wsTransform.js +52 -36
- package/dist/engine/wsTransform.js.map +1 -1
- package/dist/engine.d.ts.map +1 -1
- package/dist/engine.js +37 -86
- package/dist/engine.js.map +1 -1
- package/dist/entrypoints/node.d.ts.map +1 -1
- package/dist/entrypoints/node.js +20 -57
- package/dist/entrypoints/node.js.map +1 -1
- package/dist/env.d.ts +3 -1
- package/dist/env.d.ts.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -1
- package/dist/lib/httpError.d.ts +5 -1
- package/dist/lib/httpError.d.ts.map +1 -1
- package/dist/lib/httpError.js +5 -2
- package/dist/lib/httpError.js.map +1 -1
- package/dist/lib/httpQuery.d.ts +28 -0
- package/dist/lib/httpQuery.d.ts.map +1 -0
- package/dist/lib/httpQuery.js +32 -0
- package/dist/lib/httpQuery.js.map +1 -0
- package/dist/lib/httpResponse.d.ts +15 -2
- package/dist/lib/httpResponse.d.ts.map +1 -1
- package/dist/lib/httpResponse.js +35 -7
- package/dist/lib/httpResponse.js.map +1 -1
- package/dist/middleware/auth.d.ts +8 -0
- package/dist/middleware/auth.d.ts.map +1 -1
- package/dist/middleware/auth.js +65 -2
- package/dist/middleware/auth.js.map +1 -1
- package/dist/middleware/idempotency.d.ts +30 -0
- package/dist/middleware/idempotency.d.ts.map +1 -1
- package/dist/middleware/idempotency.js +14 -0
- package/dist/middleware/idempotency.js.map +1 -1
- package/dist/middleware/logger.d.ts.map +1 -1
- package/dist/middleware/logger.js +4 -4
- package/dist/middleware/logger.js.map +1 -1
- package/dist/middleware/planLimits.d.ts.map +1 -1
- package/dist/middleware/planLimits.js +11 -9
- package/dist/middleware/planLimits.js.map +1 -1
- package/dist/middleware/rateLimit.d.ts.map +1 -1
- package/dist/middleware/rateLimit.js +15 -8
- package/dist/middleware/rateLimit.js.map +1 -1
- package/dist/middleware/usageTracker.d.ts.map +1 -1
- package/dist/middleware/usageTracker.js +2 -1
- package/dist/middleware/usageTracker.js.map +1 -1
- package/dist/ports/auth.d.ts +6 -2
- package/dist/ports/auth.d.ts.map +1 -1
- package/dist/ports/entitlements.d.ts +3 -1
- package/dist/ports/entitlements.d.ts.map +1 -1
- package/dist/ports/index.d.ts +0 -14
- package/dist/ports/index.d.ts.map +1 -1
- package/dist/ports/realtime.d.ts +4 -1
- package/dist/ports/realtime.d.ts.map +1 -1
- package/dist/providers/static-entitlements.js +4 -4
- package/dist/providers/static-entitlements.js.map +1 -1
- package/dist/routes/a2a.d.ts.map +1 -1
- package/dist/routes/a2a.js +41 -83
- package/dist/routes/a2a.js.map +1 -1
- package/dist/routes/action.d.ts.map +1 -1
- package/dist/routes/action.js +45 -42
- package/dist/routes/action.js.map +1 -1
- package/dist/routes/agent.d.ts.map +1 -1
- package/dist/routes/agent.js +172 -120
- package/dist/routes/agent.js.map +1 -1
- package/dist/routes/certify.d.ts.map +1 -1
- package/dist/routes/certify.js +21 -35
- package/dist/routes/certify.js.map +1 -1
- package/dist/routes/channel.d.ts.map +1 -1
- package/dist/routes/channel.js +69 -81
- package/dist/routes/channel.js.map +1 -1
- package/dist/routes/console.d.ts.map +1 -1
- package/dist/routes/console.js +60 -40
- package/dist/routes/console.js.map +1 -1
- package/dist/routes/delivery.d.ts.map +1 -1
- package/dist/routes/delivery.js +22 -54
- package/dist/routes/delivery.js.map +1 -1
- package/dist/routes/deliveryRouting.d.ts +6 -0
- package/dist/routes/deliveryRouting.d.ts.map +1 -1
- package/dist/routes/deliveryRouting.js +297 -34
- package/dist/routes/deliveryRouting.js.map +1 -1
- package/dist/routes/directory.d.ts.map +1 -1
- package/dist/routes/directory.js +47 -63
- package/dist/routes/directory.js.map +1 -1
- package/dist/routes/dm.d.ts.map +1 -1
- package/dist/routes/dm.js +21 -42
- package/dist/routes/dm.js.map +1 -1
- package/dist/routes/fanout.d.ts +2 -1
- package/dist/routes/fanout.d.ts.map +1 -1
- package/dist/routes/fanout.js +38 -20
- package/dist/routes/fanout.js.map +1 -1
- package/dist/routes/file.d.ts.map +1 -1
- package/dist/routes/file.js +48 -44
- package/dist/routes/file.js.map +1 -1
- package/dist/routes/groupDm.d.ts.map +1 -1
- package/dist/routes/groupDm.js +23 -48
- package/dist/routes/groupDm.js.map +1 -1
- package/dist/routes/inboundWebhook.d.ts.map +1 -1
- package/dist/routes/inboundWebhook.js +17 -35
- package/dist/routes/inboundWebhook.js.map +1 -1
- package/dist/routes/inbox.d.ts.map +1 -1
- package/dist/routes/inbox.js +2 -1
- package/dist/routes/inbox.js.map +1 -1
- package/dist/routes/message.d.ts.map +1 -1
- package/dist/routes/message.js +60 -53
- package/dist/routes/message.js.map +1 -1
- package/dist/routes/node.d.ts.map +1 -1
- package/dist/routes/node.js +173 -10
- package/dist/routes/node.js.map +1 -1
- package/dist/routes/observerToken.d.ts +4 -0
- package/dist/routes/observerToken.d.ts.map +1 -0
- package/dist/routes/observerToken.js +105 -0
- package/dist/routes/observerToken.js.map +1 -0
- package/dist/routes/presence.d.ts.map +1 -1
- package/dist/routes/presence.js +10 -6
- package/dist/routes/presence.js.map +1 -1
- package/dist/routes/reaction.d.ts.map +1 -1
- package/dist/routes/reaction.js +69 -28
- package/dist/routes/reaction.js.map +1 -1
- package/dist/routes/receipt.d.ts.map +1 -1
- package/dist/routes/receipt.js +20 -3
- package/dist/routes/receipt.js.map +1 -1
- package/dist/routes/routing.d.ts.map +1 -1
- package/dist/routes/routing.js +38 -51
- package/dist/routes/routing.js.map +1 -1
- package/dist/routes/search.d.ts.map +1 -1
- package/dist/routes/search.js +21 -15
- package/dist/routes/search.js.map +1 -1
- package/dist/routes/thread.d.ts.map +1 -1
- package/dist/routes/thread.js +36 -37
- package/dist/routes/thread.js.map +1 -1
- package/dist/routes/workspace.d.ts.map +1 -1
- package/dist/routes/workspace.js +57 -225
- package/dist/routes/workspace.js.map +1 -1
- package/package.json +3 -3
- package/dist/lib/fleetNodes.d.ts +0 -9
- package/dist/lib/fleetNodes.d.ts.map +0 -1
- package/dist/lib/fleetNodes.js +0 -66
- package/dist/lib/fleetNodes.js.map +0 -1
- package/dist/lib/workspaceStream.d.ts +0 -9
- package/dist/lib/workspaceStream.d.ts.map +0 -1
- package/dist/lib/workspaceStream.js +0 -53
- package/dist/lib/workspaceStream.js.map +0 -1
- package/dist/middleware/fleetNodes.d.ts +0 -10
- package/dist/middleware/fleetNodes.d.ts.map +0 -1
- package/dist/middleware/fleetNodes.js +0 -18
- package/dist/middleware/fleetNodes.js.map +0 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@relaycast/engine",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "5.0.1",
|
|
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": {
|
|
@@ -43,8 +43,8 @@
|
|
|
43
43
|
},
|
|
44
44
|
"dependencies": {
|
|
45
45
|
"@hono/node-server": "^1.13.7",
|
|
46
|
-
"@relaycast/a2a": "
|
|
47
|
-
"@relaycast/types": "
|
|
46
|
+
"@relaycast/a2a": "5.0.1",
|
|
47
|
+
"@relaycast/types": "5.0.1",
|
|
48
48
|
"better-sqlite3": "^11.10.0",
|
|
49
49
|
"drizzle-orm": "^0.45.1",
|
|
50
50
|
"hono": "^4.11.9",
|
package/dist/lib/fleetNodes.d.ts
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
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"}
|
package/dist/lib/fleetNodes.js
DELETED
|
@@ -1,66 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
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"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import type { KeyValueStore } from '../ports/kv.js';
|
|
2
|
-
export declare function getWorkspaceStreamConfig(kv: KeyValueStore, workspaceId: string, defaultEnabled?: boolean): Promise<{
|
|
3
|
-
enabled: boolean;
|
|
4
|
-
defaultEnabled: boolean;
|
|
5
|
-
override: boolean | null;
|
|
6
|
-
}>;
|
|
7
|
-
export declare function isWorkspaceStreamEnabled(kv: KeyValueStore, workspaceId: string, defaultEnabled?: boolean): Promise<boolean>;
|
|
8
|
-
export declare function setWorkspaceStreamOverride(kv: KeyValueStore, workspaceId: string, override: boolean | null): Promise<void>;
|
|
9
|
-
//# sourceMappingURL=workspaceStream.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"workspaceStream.d.ts","sourceRoot":"","sources":["../../src/lib/workspaceStream.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AA2BpD,wBAAsB,wBAAwB,CAC5C,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,wBAAwB,CAC5C,EAAE,EAAE,aAAa,EACjB,WAAW,EAAE,MAAM,EACnB,cAAc,GAAE,OAAyB,GACxC,OAAO,CAAC,OAAO,CAAC,CAGlB;AAED,wBAAsB,0BAA0B,CAC9C,EAAE,EAAE,aAAa,EACjB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,OAAO,GAAG,IAAI,GACvB,OAAO,CAAC,IAAI,CAAC,CAQf"}
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
const KEY_PREFIX = 'workspace-stream:';
|
|
2
|
-
const CACHE_TTL_MS = 10_000;
|
|
3
|
-
const DEFAULT_ENABLED = false;
|
|
4
|
-
const cache = new Map();
|
|
5
|
-
function parseBool(value) {
|
|
6
|
-
if (value == null)
|
|
7
|
-
return null;
|
|
8
|
-
const normalized = value.trim().toLowerCase();
|
|
9
|
-
if (['1', 'true', 'yes', 'on'].includes(normalized))
|
|
10
|
-
return true;
|
|
11
|
-
if (['0', 'false', 'no', 'off'].includes(normalized))
|
|
12
|
-
return false;
|
|
13
|
-
return null;
|
|
14
|
-
}
|
|
15
|
-
function getKey(workspaceId) {
|
|
16
|
-
return `${KEY_PREFIX}${workspaceId}`;
|
|
17
|
-
}
|
|
18
|
-
export async function getWorkspaceStreamConfig(kv, workspaceId, defaultEnabled = DEFAULT_ENABLED) {
|
|
19
|
-
const now = Date.now();
|
|
20
|
-
const cached = cache.get(workspaceId);
|
|
21
|
-
if (cached && cached.expiresAt > now) {
|
|
22
|
-
return {
|
|
23
|
-
enabled: cached.enabled,
|
|
24
|
-
defaultEnabled: cached.defaultEnabled,
|
|
25
|
-
override: cached.override,
|
|
26
|
-
};
|
|
27
|
-
}
|
|
28
|
-
const raw = await kv.get(getKey(workspaceId));
|
|
29
|
-
const override = parseBool(raw);
|
|
30
|
-
const enabled = override ?? defaultEnabled;
|
|
31
|
-
cache.set(workspaceId, {
|
|
32
|
-
enabled,
|
|
33
|
-
defaultEnabled,
|
|
34
|
-
override,
|
|
35
|
-
expiresAt: now + CACHE_TTL_MS,
|
|
36
|
-
});
|
|
37
|
-
return { enabled, defaultEnabled, override };
|
|
38
|
-
}
|
|
39
|
-
export async function isWorkspaceStreamEnabled(kv, workspaceId, defaultEnabled = DEFAULT_ENABLED) {
|
|
40
|
-
const cfg = await getWorkspaceStreamConfig(kv, workspaceId, defaultEnabled);
|
|
41
|
-
return cfg.enabled;
|
|
42
|
-
}
|
|
43
|
-
export async function setWorkspaceStreamOverride(kv, workspaceId, override) {
|
|
44
|
-
const key = getKey(workspaceId);
|
|
45
|
-
if (override === null) {
|
|
46
|
-
await kv.delete(key);
|
|
47
|
-
}
|
|
48
|
-
else {
|
|
49
|
-
await kv.put(key, override ? 'true' : 'false');
|
|
50
|
-
}
|
|
51
|
-
cache.delete(workspaceId);
|
|
52
|
-
}
|
|
53
|
-
//# sourceMappingURL=workspaceStream.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"workspaceStream.js","sourceRoot":"","sources":["../../src/lib/workspaceStream.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,GAAG,mBAAmB,CAAC;AACvC,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,wBAAwB,CAC5C,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,EAAE,CAAC;QACrC,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,wBAAwB,CAC5C,EAAiB,EACjB,WAAmB,EACnB,iBAA0B,eAAe;IAEzC,MAAM,GAAG,GAAG,MAAM,wBAAwB,CAAC,EAAE,EAAE,WAAW,EAAE,cAAc,CAAC,CAAC;IAC5E,OAAO,GAAG,CAAC,OAAO,CAAC;AACrB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC9C,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"}
|
|
@@ -1,10 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
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"}
|
|
@@ -1,18 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
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"}
|