@relaycast/engine 1.1.7
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/database.d.ts +25 -0
- package/dist/adapters/node/database.d.ts.map +1 -0
- package/dist/adapters/node/database.js +71 -0
- package/dist/adapters/node/database.js.map +1 -0
- package/dist/adapters/node/event-queue.d.ts +15 -0
- package/dist/adapters/node/event-queue.d.ts.map +1 -0
- package/dist/adapters/node/event-queue.js +27 -0
- package/dist/adapters/node/event-queue.js.map +1 -0
- package/dist/adapters/node/files.d.ts +47 -0
- package/dist/adapters/node/files.d.ts.map +1 -0
- package/dist/adapters/node/files.js +128 -0
- package/dist/adapters/node/files.js.map +1 -0
- package/dist/adapters/node/index.d.ts +60 -0
- package/dist/adapters/node/index.d.ts.map +1 -0
- package/dist/adapters/node/index.js +79 -0
- package/dist/adapters/node/index.js.map +1 -0
- package/dist/adapters/node/kv.d.ts +27 -0
- package/dist/adapters/node/kv.d.ts.map +1 -0
- package/dist/adapters/node/kv.js +67 -0
- package/dist/adapters/node/kv.js.map +1 -0
- package/dist/adapters/node/mcp.d.ts +18 -0
- package/dist/adapters/node/mcp.d.ts.map +1 -0
- package/dist/adapters/node/mcp.js +53 -0
- package/dist/adapters/node/mcp.js.map +1 -0
- package/dist/adapters/node/presence.d.ts +33 -0
- package/dist/adapters/node/presence.d.ts.map +1 -0
- package/dist/adapters/node/presence.js +113 -0
- package/dist/adapters/node/presence.js.map +1 -0
- package/dist/adapters/node/rate-limit.d.ts +17 -0
- package/dist/adapters/node/rate-limit.d.ts.map +1 -0
- package/dist/adapters/node/rate-limit.js +36 -0
- package/dist/adapters/node/rate-limit.js.map +1 -0
- package/dist/adapters/node/realtime.d.ts +72 -0
- package/dist/adapters/node/realtime.d.ts.map +1 -0
- package/dist/adapters/node/realtime.js +274 -0
- package/dist/adapters/node/realtime.js.map +1 -0
- package/dist/auth/index.d.ts +21 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/index.js +50 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/bin/serve.d.ts +3 -0
- package/dist/bin/serve.d.ts.map +1 -0
- package/dist/bin/serve.js +74 -0
- package/dist/bin/serve.js.map +1 -0
- package/dist/db/index.d.ts +16 -0
- package/dist/db/index.d.ts.map +1 -0
- package/dist/db/index.js +24 -0
- package/dist/db/index.js.map +1 -0
- package/dist/db/migrate.d.ts +14 -0
- package/dist/db/migrate.d.ts.map +1 -0
- package/dist/db/migrate.js +16 -0
- package/dist/db/migrate.js.map +1 -0
- package/dist/db/migrations/0000_broad_dagger.sql +227 -0
- package/dist/db/migrations/0001_fts5_search.sql +23 -0
- package/dist/db/migrations/0002_add_metadata_columns.sql +16 -0
- package/dist/db/migrations/0003_add_channel_mute.sql +5 -0
- package/dist/db/migrations/0004_a2a_agents.sql +21 -0
- package/dist/db/migrations/0005_certifications.sql +24 -0
- package/dist/db/migrations/0006_message_logs.sql +30 -0
- package/dist/db/migrations/0007_directory.sql +125 -0
- package/dist/db/migrations/0008_smart_routing.sql +30 -0
- package/dist/db/migrations/0009_drop_workspace_name_unique.sql +4 -0
- package/dist/db/migrations/0010_actions_and_harness.sql +108 -0
- package/dist/db/migrations/0011_stable_handle.sql +5 -0
- package/dist/db/migrations/0012_delivery_and_sequence_constraints.sql +26 -0
- package/dist/db/migrations/0013_status_active.sql +9 -0
- package/dist/db/migrations/meta/0000_snapshot.json +1694 -0
- package/dist/db/migrations/meta/_journal.json +13 -0
- package/dist/db/schema.d.ts +4742 -0
- package/dist/db/schema.d.ts.map +1 -0
- package/dist/db/schema.js +572 -0
- package/dist/db/schema.js.map +1 -0
- package/dist/engine/a2a-health.d.ts +11 -0
- package/dist/engine/a2a-health.d.ts.map +1 -0
- package/dist/engine/a2a-health.js +65 -0
- package/dist/engine/a2a-health.js.map +1 -0
- package/dist/engine/a2a.d.ts +73 -0
- package/dist/engine/a2a.d.ts.map +1 -0
- package/dist/engine/a2a.js +549 -0
- package/dist/engine/a2a.js.map +1 -0
- package/dist/engine/action.d.ts +85 -0
- package/dist/engine/action.d.ts.map +1 -0
- package/dist/engine/action.js +220 -0
- package/dist/engine/action.js.map +1 -0
- package/dist/engine/activity.d.ts +21 -0
- package/dist/engine/activity.d.ts.map +1 -0
- package/dist/engine/activity.js +46 -0
- package/dist/engine/activity.js.map +1 -0
- package/dist/engine/agent.d.ts +155 -0
- package/dist/engine/agent.d.ts.map +1 -0
- package/dist/engine/agent.js +408 -0
- package/dist/engine/agent.js.map +1 -0
- package/dist/engine/cache.d.ts +19 -0
- package/dist/engine/cache.d.ts.map +1 -0
- package/dist/engine/cache.js +40 -0
- package/dist/engine/cache.js.map +1 -0
- package/dist/engine/certify.d.ts +84 -0
- package/dist/engine/certify.d.ts.map +1 -0
- package/dist/engine/certify.js +452 -0
- package/dist/engine/certify.js.map +1 -0
- package/dist/engine/channel.d.ts +67 -0
- package/dist/engine/channel.d.ts.map +1 -0
- package/dist/engine/channel.js +375 -0
- package/dist/engine/channel.js.map +1 -0
- package/dist/engine/console.d.ts +83 -0
- package/dist/engine/console.d.ts.map +1 -0
- package/dist/engine/console.js +189 -0
- package/dist/engine/console.js.map +1 -0
- package/dist/engine/directory.d.ts +241 -0
- package/dist/engine/directory.d.ts.map +1 -0
- package/dist/engine/directory.js +528 -0
- package/dist/engine/directory.js.map +1 -0
- package/dist/engine/dm.d.ts +63 -0
- package/dist/engine/dm.d.ts.map +1 -0
- package/dist/engine/dm.js +397 -0
- package/dist/engine/dm.js.map +1 -0
- package/dist/engine/dmAll.d.ts +11 -0
- package/dist/engine/dmAll.d.ts.map +1 -0
- package/dist/engine/dmAll.js +117 -0
- package/dist/engine/dmAll.js.map +1 -0
- package/dist/engine/event-id.d.ts +2 -0
- package/dist/engine/event-id.d.ts.map +1 -0
- package/dist/engine/event-id.js +0 -0
- package/dist/engine/event-id.js.map +1 -0
- package/dist/engine/eventDelivery.d.ts +12 -0
- package/dist/engine/eventDelivery.d.ts.map +1 -0
- package/dist/engine/eventDelivery.js +103 -0
- package/dist/engine/eventDelivery.js.map +1 -0
- package/dist/engine/eventQueue.d.ts +6 -0
- package/dist/engine/eventQueue.d.ts.map +1 -0
- package/dist/engine/eventQueue.js +23 -0
- package/dist/engine/eventQueue.js.map +1 -0
- package/dist/engine/eventSubscription.d.ts +59 -0
- package/dist/engine/eventSubscription.d.ts.map +1 -0
- package/dist/engine/eventSubscription.js +74 -0
- package/dist/engine/eventSubscription.js.map +1 -0
- package/dist/engine/file.d.ts +43 -0
- package/dist/engine/file.d.ts.map +1 -0
- package/dist/engine/file.js +115 -0
- package/dist/engine/file.js.map +1 -0
- package/dist/engine/groupDm.d.ts +54 -0
- package/dist/engine/groupDm.d.ts.map +1 -0
- package/dist/engine/groupDm.js +262 -0
- package/dist/engine/groupDm.js.map +1 -0
- package/dist/engine/inboundWebhook.d.ts +45 -0
- package/dist/engine/inboundWebhook.d.ts.map +1 -0
- package/dist/engine/inboundWebhook.js +170 -0
- package/dist/engine/inboundWebhook.js.map +1 -0
- package/dist/engine/inbox.d.ts +34 -0
- package/dist/engine/inbox.d.ts.map +1 -0
- package/dist/engine/inbox.js +141 -0
- package/dist/engine/inbox.js.map +1 -0
- package/dist/engine/index.d.ts +10 -0
- package/dist/engine/index.d.ts.map +1 -0
- package/dist/engine/index.js +10 -0
- package/dist/engine/index.js.map +1 -0
- package/dist/engine/message.d.ts +81 -0
- package/dist/engine/message.d.ts.map +1 -0
- package/dist/engine/message.js +293 -0
- package/dist/engine/message.js.map +1 -0
- package/dist/engine/presence.d.ts +12 -0
- package/dist/engine/presence.d.ts.map +1 -0
- package/dist/engine/presence.js +24 -0
- package/dist/engine/presence.js.map +1 -0
- package/dist/engine/reaction.d.ts +19 -0
- package/dist/engine/reaction.d.ts.map +1 -0
- package/dist/engine/reaction.js +97 -0
- package/dist/engine/reaction.js.map +1 -0
- package/dist/engine/receipt.d.ts +19 -0
- package/dist/engine/receipt.d.ts.map +1 -0
- package/dist/engine/receipt.js +96 -0
- package/dist/engine/receipt.js.map +1 -0
- package/dist/engine/resyncQuery.d.ts +15 -0
- package/dist/engine/resyncQuery.d.ts.map +1 -0
- package/dist/engine/resyncQuery.js +124 -0
- package/dist/engine/resyncQuery.js.map +1 -0
- package/dist/engine/routing.d.ts +45 -0
- package/dist/engine/routing.d.ts.map +1 -0
- package/dist/engine/routing.js +390 -0
- package/dist/engine/routing.js.map +1 -0
- package/dist/engine/search.d.ts +19 -0
- package/dist/engine/search.d.ts.map +1 -0
- package/dist/engine/search.js +60 -0
- package/dist/engine/search.js.map +1 -0
- package/dist/engine/searchQuery.d.ts +8 -0
- package/dist/engine/searchQuery.d.ts.map +1 -0
- package/dist/engine/searchQuery.js +19 -0
- package/dist/engine/searchQuery.js.map +1 -0
- package/dist/engine/sessionEvent.d.ts +29 -0
- package/dist/engine/sessionEvent.d.ts.map +1 -0
- package/dist/engine/sessionEvent.js +76 -0
- package/dist/engine/sessionEvent.js.map +1 -0
- package/dist/engine/snowflake.d.ts +14 -0
- package/dist/engine/snowflake.d.ts.map +1 -0
- package/dist/engine/snowflake.js +88 -0
- package/dist/engine/snowflake.js.map +1 -0
- package/dist/engine/systemPrompt.d.ts +13 -0
- package/dist/engine/systemPrompt.d.ts.map +1 -0
- package/dist/engine/systemPrompt.js +31 -0
- package/dist/engine/systemPrompt.js.map +1 -0
- package/dist/engine/thread.d.ts +56 -0
- package/dist/engine/thread.d.ts.map +1 -0
- package/dist/engine/thread.js +158 -0
- package/dist/engine/thread.js.map +1 -0
- package/dist/engine/tokenRotate.d.ts +8 -0
- package/dist/engine/tokenRotate.d.ts.map +1 -0
- package/dist/engine/tokenRotate.js +25 -0
- package/dist/engine/tokenRotate.js.map +1 -0
- package/dist/engine/usage.d.ts +16 -0
- package/dist/engine/usage.d.ts.map +1 -0
- package/dist/engine/usage.js +24 -0
- package/dist/engine/usage.js.map +1 -0
- package/dist/engine/workspace.d.ts +44 -0
- package/dist/engine/workspace.d.ts.map +1 -0
- package/dist/engine/workspace.js +127 -0
- package/dist/engine/workspace.js.map +1 -0
- package/dist/engine/wsTransform.d.ts +14 -0
- package/dist/engine/wsTransform.d.ts.map +1 -0
- package/dist/engine/wsTransform.js +196 -0
- package/dist/engine/wsTransform.js.map +1 -0
- package/dist/engine.d.ts +18 -0
- package/dist/engine.d.ts.map +1 -0
- package/dist/engine.js +275 -0
- package/dist/engine.js.map +1 -0
- package/dist/entrypoints/node.d.ts +35 -0
- package/dist/entrypoints/node.d.ts.map +1 -0
- package/dist/entrypoints/node.js +114 -0
- package/dist/entrypoints/node.js.map +1 -0
- package/dist/env.d.ts +38 -0
- package/dist/env.d.ts.map +1 -0
- package/dist/env.js +2 -0
- package/dist/env.js.map +1 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +16 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/logger.d.ts +47 -0
- package/dist/lib/logger.d.ts.map +1 -0
- package/dist/lib/logger.js +214 -0
- package/dist/lib/logger.js.map +1 -0
- package/dist/lib/origin.d.ts +25 -0
- package/dist/lib/origin.d.ts.map +1 -0
- package/dist/lib/origin.js +80 -0
- package/dist/lib/origin.js.map +1 -0
- package/dist/lib/serverTelemetry.d.ts +12 -0
- package/dist/lib/serverTelemetry.d.ts.map +1 -0
- package/dist/lib/serverTelemetry.js +46 -0
- package/dist/lib/serverTelemetry.js.map +1 -0
- package/dist/lib/ssrf.d.ts +23 -0
- package/dist/lib/ssrf.d.ts.map +1 -0
- package/dist/lib/ssrf.js +57 -0
- package/dist/lib/ssrf.js.map +1 -0
- package/dist/lib/workspaceStream.d.ts +9 -0
- package/dist/lib/workspaceStream.d.ts.map +1 -0
- package/dist/lib/workspaceStream.js +53 -0
- package/dist/lib/workspaceStream.js.map +1 -0
- package/dist/middleware/auth.d.ts +9 -0
- package/dist/middleware/auth.d.ts.map +1 -0
- package/dist/middleware/auth.js +40 -0
- package/dist/middleware/auth.js.map +1 -0
- package/dist/middleware/engine-context.d.ts +9 -0
- package/dist/middleware/engine-context.d.ts.map +1 -0
- package/dist/middleware/engine-context.js +15 -0
- package/dist/middleware/engine-context.js.map +1 -0
- package/dist/middleware/idempotency.d.ts +24 -0
- package/dist/middleware/idempotency.d.ts.map +1 -0
- package/dist/middleware/idempotency.js +148 -0
- package/dist/middleware/idempotency.js.map +1 -0
- package/dist/middleware/logger.d.ts +4 -0
- package/dist/middleware/logger.d.ts.map +1 -0
- package/dist/middleware/logger.js +163 -0
- package/dist/middleware/logger.js.map +1 -0
- package/dist/middleware/planLimits.d.ts +5 -0
- package/dist/middleware/planLimits.d.ts.map +1 -0
- package/dist/middleware/planLimits.js +35 -0
- package/dist/middleware/planLimits.js.map +1 -0
- package/dist/middleware/presenceRefresh.d.ts +3 -0
- package/dist/middleware/presenceRefresh.d.ts.map +1 -0
- package/dist/middleware/presenceRefresh.js +18 -0
- package/dist/middleware/presenceRefresh.js.map +1 -0
- package/dist/middleware/rateLimit.d.ts +3 -0
- package/dist/middleware/rateLimit.d.ts.map +1 -0
- package/dist/middleware/rateLimit.js +69 -0
- package/dist/middleware/rateLimit.js.map +1 -0
- package/dist/middleware/usageTracker.d.ts +3 -0
- package/dist/middleware/usageTracker.d.ts.map +1 -0
- package/dist/middleware/usageTracker.js +10 -0
- package/dist/middleware/usageTracker.js.map +1 -0
- package/dist/ports/auth.d.ts +45 -0
- package/dist/ports/auth.d.ts.map +1 -0
- package/dist/ports/auth.js +2 -0
- package/dist/ports/auth.js.map +1 -0
- package/dist/ports/database.d.ts +20 -0
- package/dist/ports/database.d.ts.map +1 -0
- package/dist/ports/database.js +2 -0
- package/dist/ports/database.js.map +1 -0
- package/dist/ports/entitlements.d.ts +25 -0
- package/dist/ports/entitlements.d.ts.map +1 -0
- package/dist/ports/entitlements.js +2 -0
- package/dist/ports/entitlements.js.map +1 -0
- package/dist/ports/event-queue.d.ts +19 -0
- package/dist/ports/event-queue.d.ts.map +1 -0
- package/dist/ports/event-queue.js +2 -0
- package/dist/ports/event-queue.js.map +1 -0
- package/dist/ports/files.d.ts +28 -0
- package/dist/ports/files.d.ts.map +1 -0
- package/dist/ports/files.js +2 -0
- package/dist/ports/files.js.map +1 -0
- package/dist/ports/index.d.ts +84 -0
- package/dist/ports/index.d.ts.map +1 -0
- package/dist/ports/index.js +2 -0
- package/dist/ports/index.js.map +1 -0
- package/dist/ports/kv.d.ts +25 -0
- package/dist/ports/kv.d.ts.map +1 -0
- package/dist/ports/kv.js +2 -0
- package/dist/ports/kv.js.map +1 -0
- package/dist/ports/mcp.d.ts +18 -0
- package/dist/ports/mcp.d.ts.map +1 -0
- package/dist/ports/mcp.js +2 -0
- package/dist/ports/mcp.js.map +1 -0
- package/dist/ports/presence.d.ts +18 -0
- package/dist/ports/presence.d.ts.map +1 -0
- package/dist/ports/presence.js +2 -0
- package/dist/ports/presence.js.map +1 -0
- package/dist/ports/rate-limit.d.ts +20 -0
- package/dist/ports/rate-limit.d.ts.map +1 -0
- package/dist/ports/rate-limit.js +2 -0
- package/dist/ports/rate-limit.js.map +1 -0
- package/dist/ports/realtime.d.ts +104 -0
- package/dist/ports/realtime.d.ts.map +1 -0
- package/dist/ports/realtime.js +19 -0
- package/dist/ports/realtime.js.map +1 -0
- package/dist/ports/telemetry.d.ts +20 -0
- package/dist/ports/telemetry.d.ts.map +1 -0
- package/dist/ports/telemetry.js +2 -0
- package/dist/ports/telemetry.js.map +1 -0
- package/dist/providers/noop-telemetry.d.ts +13 -0
- package/dist/providers/noop-telemetry.d.ts.map +1 -0
- package/dist/providers/noop-telemetry.js +16 -0
- package/dist/providers/noop-telemetry.js.map +1 -0
- package/dist/providers/static-entitlements.d.ts +23 -0
- package/dist/providers/static-entitlements.d.ts.map +1 -0
- package/dist/providers/static-entitlements.js +42 -0
- package/dist/providers/static-entitlements.js.map +1 -0
- package/dist/routes/a2a.d.ts +4 -0
- package/dist/routes/a2a.d.ts.map +1 -0
- package/dist/routes/a2a.js +375 -0
- package/dist/routes/a2a.js.map +1 -0
- package/dist/routes/action.d.ts +4 -0
- package/dist/routes/action.d.ts.map +1 -0
- package/dist/routes/action.js +213 -0
- package/dist/routes/action.js.map +1 -0
- package/dist/routes/agent.d.ts +4 -0
- package/dist/routes/agent.d.ts.map +1 -0
- package/dist/routes/agent.js +431 -0
- package/dist/routes/agent.js.map +1 -0
- package/dist/routes/background.d.ts +13 -0
- package/dist/routes/background.d.ts.map +1 -0
- package/dist/routes/background.js +33 -0
- package/dist/routes/background.js.map +1 -0
- package/dist/routes/certify.d.ts +4 -0
- package/dist/routes/certify.d.ts.map +1 -0
- package/dist/routes/certify.js +119 -0
- package/dist/routes/certify.js.map +1 -0
- package/dist/routes/channel.d.ts +4 -0
- package/dist/routes/channel.d.ts.map +1 -0
- package/dist/routes/channel.js +492 -0
- package/dist/routes/channel.js.map +1 -0
- package/dist/routes/console.d.ts +4 -0
- package/dist/routes/console.d.ts.map +1 -0
- package/dist/routes/console.js +117 -0
- package/dist/routes/console.js.map +1 -0
- package/dist/routes/directory.d.ts +4 -0
- package/dist/routes/directory.d.ts.map +1 -0
- package/dist/routes/directory.js +236 -0
- package/dist/routes/directory.js.map +1 -0
- package/dist/routes/dm.d.ts +4 -0
- package/dist/routes/dm.d.ts.map +1 -0
- package/dist/routes/dm.js +157 -0
- package/dist/routes/dm.js.map +1 -0
- package/dist/routes/eventSubscription.d.ts +4 -0
- package/dist/routes/eventSubscription.d.ts.map +1 -0
- package/dist/routes/eventSubscription.js +115 -0
- package/dist/routes/eventSubscription.js.map +1 -0
- package/dist/routes/fanout.d.ts +17 -0
- package/dist/routes/fanout.d.ts.map +1 -0
- package/dist/routes/fanout.js +150 -0
- package/dist/routes/fanout.js.map +1 -0
- package/dist/routes/file.d.ts +4 -0
- package/dist/routes/file.d.ts.map +1 -0
- package/dist/routes/file.js +166 -0
- package/dist/routes/file.js.map +1 -0
- package/dist/routes/groupDm.d.ts +4 -0
- package/dist/routes/groupDm.d.ts.map +1 -0
- package/dist/routes/groupDm.js +204 -0
- package/dist/routes/groupDm.js.map +1 -0
- package/dist/routes/health.d.ts +4 -0
- package/dist/routes/health.d.ts.map +1 -0
- package/dist/routes/health.js +10 -0
- package/dist/routes/health.js.map +1 -0
- package/dist/routes/inboundWebhook.d.ts +4 -0
- package/dist/routes/inboundWebhook.d.ts.map +1 -0
- package/dist/routes/inboundWebhook.js +149 -0
- package/dist/routes/inboundWebhook.js.map +1 -0
- package/dist/routes/inbox.d.ts +4 -0
- package/dist/routes/inbox.d.ts.map +1 -0
- package/dist/routes/inbox.js +23 -0
- package/dist/routes/inbox.js.map +1 -0
- package/dist/routes/message.d.ts +4 -0
- package/dist/routes/message.d.ts.map +1 -0
- package/dist/routes/message.js +164 -0
- package/dist/routes/message.js.map +1 -0
- package/dist/routes/presence.d.ts +4 -0
- package/dist/routes/presence.d.ts.map +1 -0
- package/dist/routes/presence.js +70 -0
- package/dist/routes/presence.js.map +1 -0
- package/dist/routes/reaction.d.ts +4 -0
- package/dist/routes/reaction.d.ts.map +1 -0
- package/dist/routes/reaction.js +152 -0
- package/dist/routes/reaction.js.map +1 -0
- package/dist/routes/receipt.d.ts +4 -0
- package/dist/routes/receipt.d.ts.map +1 -0
- package/dist/routes/receipt.js +100 -0
- package/dist/routes/receipt.js.map +1 -0
- package/dist/routes/routing.d.ts +4 -0
- package/dist/routes/routing.d.ts.map +1 -0
- package/dist/routes/routing.js +186 -0
- package/dist/routes/routing.js.map +1 -0
- package/dist/routes/search.d.ts +4 -0
- package/dist/routes/search.d.ts.map +1 -0
- package/dist/routes/search.js +48 -0
- package/dist/routes/search.js.map +1 -0
- package/dist/routes/systemPrompt.d.ts +4 -0
- package/dist/routes/systemPrompt.d.ts.map +1 -0
- package/dist/routes/systemPrompt.js +66 -0
- package/dist/routes/systemPrompt.js.map +1 -0
- package/dist/routes/thread.d.ts +4 -0
- package/dist/routes/thread.d.ts.map +1 -0
- package/dist/routes/thread.js +126 -0
- package/dist/routes/thread.js.map +1 -0
- package/dist/routes/workspace.d.ts +4 -0
- package/dist/routes/workspace.d.ts.map +1 -0
- package/dist/routes/workspace.js +355 -0
- package/dist/routes/workspace.js.map +1 -0
- package/package.json +71 -0
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The complete dependency contract for the Relaycast engine.
|
|
3
|
+
*
|
|
4
|
+
* Everything platform-specific is expressed here as an interface. An adapter
|
|
5
|
+
* (Node in-process for self-host; Cloudflare DO for the hosted product) provides
|
|
6
|
+
* concrete implementations, and `createEngine(deps)` wires them into the Hono app.
|
|
7
|
+
*
|
|
8
|
+
* Two groups:
|
|
9
|
+
* - **Ports** — infrastructure the engine needs (db, realtime, presence, rate
|
|
10
|
+
* limiting, MCP sessions, file blobs, key/value).
|
|
11
|
+
* - **Providers** — the open-core "hosting" seam the cloud layer overrides
|
|
12
|
+
* (auth, entitlements/billing, telemetry). Each ships an OSS default.
|
|
13
|
+
*/
|
|
14
|
+
export type { EngineDb } from './database.js';
|
|
15
|
+
export type { EngineEvent, RealtimeBus, ConnectionRegistry, BroadcastToChannelArgs, UpgradeArgs, } from './realtime.js';
|
|
16
|
+
export type { PresenceTracker } from './presence.js';
|
|
17
|
+
export type { RateLimiter, RateLimitResult } from './rate-limit.js';
|
|
18
|
+
export type { McpSessionHost } from './mcp.js';
|
|
19
|
+
export type { FileStorage } from './files.js';
|
|
20
|
+
export type { KeyValueStore } from './kv.js';
|
|
21
|
+
export type { EventQueue, QueuedEvent } from './event-queue.js';
|
|
22
|
+
export type { AuthProvider, AuthResult, AuthRequire, Workspace, Agent, } from './auth.js';
|
|
23
|
+
export type { EntitlementsProvider, PlanLimits, UsageMetric, } from './entitlements.js';
|
|
24
|
+
export type { TelemetrySink, TelemetryEvent } from './telemetry.js';
|
|
25
|
+
import type { EngineDb } from './database.js';
|
|
26
|
+
import type { RealtimeBus, ConnectionRegistry } from './realtime.js';
|
|
27
|
+
import type { PresenceTracker } from './presence.js';
|
|
28
|
+
import type { RateLimiter } from './rate-limit.js';
|
|
29
|
+
import type { McpSessionHost } from './mcp.js';
|
|
30
|
+
import type { FileStorage } from './files.js';
|
|
31
|
+
import type { KeyValueStore } from './kv.js';
|
|
32
|
+
import type { EventQueue } from './event-queue.js';
|
|
33
|
+
import type { AuthProvider } from './auth.js';
|
|
34
|
+
import type { EntitlementsProvider } from './entitlements.js';
|
|
35
|
+
import type { TelemetrySink } from './telemetry.js';
|
|
36
|
+
/** Infrastructure ports the engine reads off the request context. */
|
|
37
|
+
export interface EnginePorts {
|
|
38
|
+
db: EngineDb;
|
|
39
|
+
realtime: RealtimeBus;
|
|
40
|
+
connections: ConnectionRegistry;
|
|
41
|
+
presence: PresenceTracker;
|
|
42
|
+
rateLimiter: RateLimiter;
|
|
43
|
+
mcp: McpSessionHost;
|
|
44
|
+
files: FileStorage;
|
|
45
|
+
kv: KeyValueStore;
|
|
46
|
+
webhookQueue: EventQueue;
|
|
47
|
+
}
|
|
48
|
+
/** The open-core hosting seam — each has an OSS default in `../auth`, etc. */
|
|
49
|
+
export interface EngineProviders {
|
|
50
|
+
auth: AuthProvider;
|
|
51
|
+
entitlements: EntitlementsProvider;
|
|
52
|
+
telemetry: TelemetrySink;
|
|
53
|
+
}
|
|
54
|
+
/** Everything `createEngine` needs. */
|
|
55
|
+
export interface EngineDeps extends EnginePorts, EngineProviders {
|
|
56
|
+
/**
|
|
57
|
+
* Optional runtime config (file storage bucket hints, environment label,
|
|
58
|
+
* feature flags). Adapters pass what they need; the engine treats it as opaque
|
|
59
|
+
* read-only metadata.
|
|
60
|
+
*/
|
|
61
|
+
config?: EngineConfig;
|
|
62
|
+
}
|
|
63
|
+
export interface EngineConfig {
|
|
64
|
+
environment?: string;
|
|
65
|
+
appVersion?: string;
|
|
66
|
+
appSemver?: string;
|
|
67
|
+
sdkSemver?: string;
|
|
68
|
+
/**
|
|
69
|
+
* When set, the structured logger exports prod logs to a PostHog OTLP endpoint
|
|
70
|
+
* via plain fetch (no posthog-node dependency). Self-host leaves this unset and
|
|
71
|
+
* logs to the console only; cloud wires it from its secrets.
|
|
72
|
+
*/
|
|
73
|
+
logExport?: {
|
|
74
|
+
posthogApiKey?: string;
|
|
75
|
+
posthogHost?: string;
|
|
76
|
+
};
|
|
77
|
+
/**
|
|
78
|
+
* Default for the workspace event stream (`rk_live_` WS). When false (the
|
|
79
|
+
* self-host default), the workspace-wide stream is disabled unless explicitly
|
|
80
|
+
* enabled per workspace via the KV override.
|
|
81
|
+
*/
|
|
82
|
+
workspaceStreamEnabled?: boolean;
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ports/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,YAAY,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC9C,YAAY,EACV,WAAW,EACX,WAAW,EACX,kBAAkB,EAClB,sBAAsB,EACtB,WAAW,GACZ,MAAM,eAAe,CAAC;AACvB,YAAY,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACrD,YAAY,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACpE,YAAY,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC/C,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,oBAAoB,EACpB,UAAU,EACV,WAAW,GACZ,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEpE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,KAAK,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACrE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC/C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEpD,qEAAqE;AACrE,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,QAAQ,CAAC;IACb,QAAQ,EAAE,WAAW,CAAC;IACtB,WAAW,EAAE,kBAAkB,CAAC;IAChC,QAAQ,EAAE,eAAe,CAAC;IAC1B,WAAW,EAAE,WAAW,CAAC;IACzB,GAAG,EAAE,cAAc,CAAC;IACpB,KAAK,EAAE,WAAW,CAAC;IACnB,EAAE,EAAE,aAAa,CAAC;IAClB,YAAY,EAAE,UAAU,CAAC;CAC1B;AAED,8EAA8E;AAC9E,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,YAAY,CAAC;IACnB,YAAY,EAAE,oBAAoB,CAAC;IACnC,SAAS,EAAE,aAAa,CAAC;CAC1B;AAED,uCAAuC;AACvC,MAAM,WAAW,UAAW,SAAQ,WAAW,EAAE,eAAe;IAC9D;;;;OAIG;IACH,MAAM,CAAC,EAAE,YAAY,CAAC;CACvB;AAED,MAAM,WAAW,YAAY;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,SAAS,CAAC,EAAE;QACV,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;IACF;;;;OAIG;IACH,sBAAsB,CAAC,EAAE,OAAO,CAAC;CAClC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ports/index.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Key/value store port — replaces the Cloudflare KV namespace.
|
|
3
|
+
*
|
|
4
|
+
* Used for idempotency records/locks (`middleware/idempotency.ts`) and plan-usage
|
|
5
|
+
* counters (`middleware/planLimits.ts`, `middleware/usageTracker.ts`). The surface
|
|
6
|
+
* is intentionally the small subset of `KVNamespace` the engine actually calls, so
|
|
7
|
+
* a Cloudflare `KVNamespace` is structurally assignable to it. The Node adapter
|
|
8
|
+
* implements it with an in-memory map (TTL via timestamps) or a SQLite table.
|
|
9
|
+
*/
|
|
10
|
+
export interface KeyValueStore {
|
|
11
|
+
get(key: string): Promise<string | null>;
|
|
12
|
+
put(key: string, value: string, options?: {
|
|
13
|
+
expirationTtl?: number;
|
|
14
|
+
}): Promise<void>;
|
|
15
|
+
delete(key: string): Promise<void>;
|
|
16
|
+
/**
|
|
17
|
+
* Atomically add `delta` to the integer value at `key` (treating a missing or
|
|
18
|
+
* non-numeric value as 0) and return the new total. Exists because usage
|
|
19
|
+
* counters were previously a racy get→parse→put read-modify-write that lost
|
|
20
|
+
* concurrent increments. Adapters must implement this without a lost-update
|
|
21
|
+
* window (the Cloudflare adapter routes it through a Durable Object).
|
|
22
|
+
*/
|
|
23
|
+
increment(key: string, delta: number): Promise<number>;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=kv.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kv.d.ts","sourceRoot":"","sources":["../../src/ports/kv.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,MAAM,WAAW,aAAa;IAC5B,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACzC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrF,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC;;;;;;OAMG;IACH,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACxD"}
|
package/dist/ports/kv.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kv.js","sourceRoot":"","sources":["../../src/ports/kv.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP (Model Context Protocol) stateful-session host — replaces McpSessionDO.
|
|
3
|
+
*
|
|
4
|
+
* The session-id strategy is owned entirely by the adapter. Cloudflare derives
|
|
5
|
+
* it from `state.id.toString()` (hex) and routes back via `idFromString`; Node
|
|
6
|
+
* generates a `crypto.randomUUID()` and holds the transport in a `Map`. An
|
|
7
|
+
* unknown/evicted session id returns the same 404 on both, so the engine route
|
|
8
|
+
* only ever forwards the `mcp-session-id` header and never assumes its shape.
|
|
9
|
+
*/
|
|
10
|
+
export interface McpSessionHost {
|
|
11
|
+
/**
|
|
12
|
+
* Route an MCP Streamable-HTTP request to its stateful session, creating one
|
|
13
|
+
* when `sessionId` is undefined (the `initialize` call). Returns the full
|
|
14
|
+
* `Response` (including the assigned `mcp-session-id` header on creation).
|
|
15
|
+
*/
|
|
16
|
+
handle(request: Request, sessionId: string | undefined): Promise<Response>;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=mcp.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../src/ports/mcp.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,MAAM,WAAW,cAAc;IAC7B;;;;OAIG;IACH,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;CAC5E"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/ports/mcp.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Presence tracking port — replaces PresenceDO.
|
|
3
|
+
*
|
|
4
|
+
* The 60s stale-sweep that emits `agent.offline` is *behavior*, not interface:
|
|
5
|
+
* it lives inside the adapter (Cloudflare uses DO alarms; Node uses
|
|
6
|
+
* `setInterval`) and emits via {@link RealtimeBus.deliverToAgents} +
|
|
7
|
+
* `publishToWorkspaceStream`. The adapter is constructed with a reference to the
|
|
8
|
+
* realtime bus so the sweep can fan out.
|
|
9
|
+
*/
|
|
10
|
+
export interface PresenceTracker {
|
|
11
|
+
/** Record a heartbeat; emits `agent.online` if the agent was previously offline. */
|
|
12
|
+
heartbeat(workspaceId: string, agentId: string, agentName?: string): Promise<void>;
|
|
13
|
+
/** Mark an agent offline now; emits `agent.offline`. */
|
|
14
|
+
disconnect(workspaceId: string, agentId: string, agentName?: string): Promise<void>;
|
|
15
|
+
/** Return the agent IDs currently considered online for a workspace. */
|
|
16
|
+
getOnline(workspaceId: string): Promise<string[]>;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=presence.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"presence.d.ts","sourceRoot":"","sources":["../../src/ports/presence.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,MAAM,WAAW,eAAe;IAC9B,oFAAoF;IACpF,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEnF,wDAAwD;IACxD,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;CACnD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"presence.js","sourceRoot":"","sources":["../../src/ports/presence.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Rate limiter port — replaces RateLimitDO `/check`.
|
|
3
|
+
*
|
|
4
|
+
* The per-route multiplier logic stays in the rate-limit middleware; only the
|
|
5
|
+
* bucket check is the port. Node uses an in-memory sliding window (today's
|
|
6
|
+
* middleware fallback, lifted out); Cloudflare routes to RateLimitDO.
|
|
7
|
+
*/
|
|
8
|
+
export interface RateLimitResult {
|
|
9
|
+
allowed: boolean;
|
|
10
|
+
count: number;
|
|
11
|
+
remaining: number;
|
|
12
|
+
}
|
|
13
|
+
export interface RateLimiter {
|
|
14
|
+
check(args: {
|
|
15
|
+
bucketKey: string;
|
|
16
|
+
limit: number;
|
|
17
|
+
windowMs: number;
|
|
18
|
+
}): Promise<RateLimitResult>;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=rate-limit.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rate-limit.d.ts","sourceRoot":"","sources":["../../src/ports/rate-limit.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,IAAI,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;CAC/F"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rate-limit.js","sourceRoot":"","sources":["../../src/ports/rate-limit.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Realtime coordination ports.
|
|
3
|
+
*
|
|
4
|
+
* These replace the Cloudflare Durable Objects that today sequence and fan out
|
|
5
|
+
* events (ChannelDO, AgentDO, WorkspaceStreamDO). The engine expresses *intent*
|
|
6
|
+
* ("broadcast this event to a channel"); an adapter decides how that happens:
|
|
7
|
+
*
|
|
8
|
+
* - Node in-process adapter (OSS self-host): in-memory per-key counters +
|
|
9
|
+
* socket sets + a 500-event resync ring, all in one process.
|
|
10
|
+
* - Cloudflare DO adapter (cloud, lives in the cloud repo): translates each
|
|
11
|
+
* call back into `env.X_DO.idFromName(...).fetch(...)`.
|
|
12
|
+
*
|
|
13
|
+
* `RealtimeBus` and `ConnectionRegistry` are intentionally separate interfaces
|
|
14
|
+
* with different callers (routes drive the bus; the WS upgrade route drives the
|
|
15
|
+
* registry) even though a single in-process adapter implements both over shared
|
|
16
|
+
* state (an agent's seq counter and its socket set must live together).
|
|
17
|
+
*/
|
|
18
|
+
/** A client-facing event payload, already passed through `transformForClient`. */
|
|
19
|
+
export type EngineEvent = Record<string, unknown>;
|
|
20
|
+
export interface BroadcastToChannelArgs {
|
|
21
|
+
workspaceId: string;
|
|
22
|
+
channelId: string;
|
|
23
|
+
event: EngineEvent;
|
|
24
|
+
/** Member agent IDs — used by the adapter to (re)initialize its member cache. */
|
|
25
|
+
members?: string[];
|
|
26
|
+
/** Muted member agent IDs — message-type events are suppressed for these. */
|
|
27
|
+
mutedMembers?: string[];
|
|
28
|
+
}
|
|
29
|
+
export interface RealtimeBus {
|
|
30
|
+
/**
|
|
31
|
+
* Sequence and fan out an event to a channel's members.
|
|
32
|
+
* Replaces ChannelDO `/broadcast` and its per-member AgentDO `/deliver` loop.
|
|
33
|
+
*
|
|
34
|
+
* MUST assign `channelSeq` strictly increasing per `(workspaceId, channelId)`,
|
|
35
|
+
* even under concurrent callers.
|
|
36
|
+
*/
|
|
37
|
+
broadcastToChannel(args: BroadcastToChannelArgs): Promise<{
|
|
38
|
+
channelSeq: number;
|
|
39
|
+
}>;
|
|
40
|
+
/**
|
|
41
|
+
* Deliver an event directly to specific agents (DMs, presence changes, action
|
|
42
|
+
* push). Replaces `fanoutToAgents` + AgentDO `/deliver`. Each agent gets its
|
|
43
|
+
* own monotonic `agentSeq` stamped (see {@link ConnectionRegistry.pushToAgent}).
|
|
44
|
+
*/
|
|
45
|
+
deliverToAgents(args: {
|
|
46
|
+
workspaceId: string;
|
|
47
|
+
agentIds: string[];
|
|
48
|
+
event: EngineEvent;
|
|
49
|
+
}): Promise<void>;
|
|
50
|
+
/**
|
|
51
|
+
* Publish to the workspace-level stream consumed by workspace-key (`rk_live_`)
|
|
52
|
+
* subscribers. Replaces `publishToWorkspaceStream` + WorkspaceStreamDO `/deliver`.
|
|
53
|
+
*/
|
|
54
|
+
publishToWorkspaceStream(args: {
|
|
55
|
+
workspaceId: string;
|
|
56
|
+
event: EngineEvent;
|
|
57
|
+
}): Promise<void>;
|
|
58
|
+
/** Update the cached member list for a channel. Replaces ChannelDO `/update-members`. */
|
|
59
|
+
setChannelMembers(workspaceId: string, channelId: string, members: string[]): Promise<void>;
|
|
60
|
+
/** Update the cached muted list for a channel. Replaces ChannelDO `/update-muted`. */
|
|
61
|
+
setChannelMuted(workspaceId: string, channelId: string, muted: string[]): Promise<void>;
|
|
62
|
+
}
|
|
63
|
+
export interface UpgradeArgs {
|
|
64
|
+
request: Request;
|
|
65
|
+
scope: 'agent' | 'workspace';
|
|
66
|
+
workspaceId: string;
|
|
67
|
+
/** Required when `scope === 'agent'`. */
|
|
68
|
+
agentId?: string;
|
|
69
|
+
/** Display name, used for presence events. */
|
|
70
|
+
agentName?: string;
|
|
71
|
+
origin: {
|
|
72
|
+
surface: string;
|
|
73
|
+
client: string;
|
|
74
|
+
version: string;
|
|
75
|
+
};
|
|
76
|
+
/** Cloud-only harness identifier; defaults to `'unknown'`. */
|
|
77
|
+
harness?: string;
|
|
78
|
+
}
|
|
79
|
+
export interface ConnectionRegistry {
|
|
80
|
+
/**
|
|
81
|
+
* Upgrade an incoming request to a WebSocket bound to an agent or a workspace
|
|
82
|
+
* stream. Returns the `Response` (status 101 + the socket). The adapter owns
|
|
83
|
+
* the transport: Cloudflare uses `WebSocketPair` + hibernation; Node uses the
|
|
84
|
+
* `ws` library and never evicts (single-process model).
|
|
85
|
+
*
|
|
86
|
+
* The resync protocol (`resync` / `resync_ack`, the 500-event ring, and the
|
|
87
|
+
* DB-fallback replay via {@link replayMissedEvents}) is a wire-level detail the
|
|
88
|
+
* client speaks to whichever side holds the socket, so it lives in the adapter.
|
|
89
|
+
*/
|
|
90
|
+
upgrade(args: UpgradeArgs): Promise<Response>;
|
|
91
|
+
/**
|
|
92
|
+
* Push an event to one agent's live sockets, stamping a monotonic `agentSeq`
|
|
93
|
+
* and buffering it for resync. Called by {@link RealtimeBus.deliverToAgents}
|
|
94
|
+
* internally — the in-process adapter implements both ports over shared state.
|
|
95
|
+
*
|
|
96
|
+
* MUST assign `agentSeq` strictly increasing per `(workspaceId, agentId)`.
|
|
97
|
+
*/
|
|
98
|
+
pushToAgent(workspaceId: string, agentId: string, event: EngineEvent): Promise<{
|
|
99
|
+
agentSeq: number;
|
|
100
|
+
}>;
|
|
101
|
+
/** Force-close all of an agent's sockets (e.g. on token rotation). Replaces AgentDO `/force-disconnect`. */
|
|
102
|
+
disconnectAgent(workspaceId: string, agentId: string): Promise<void>;
|
|
103
|
+
}
|
|
104
|
+
//# sourceMappingURL=realtime.d.ts.map
|
|
@@ -0,0 +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,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7D,8DAA8D;IAC9D,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,kBAAkB;IACjC;;;;;;;;;OASG;IACH,OAAO,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAE9C;;;;;;OAMG;IACH,WAAW,CACT,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,WAAW,GACjB,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAEjC,4GAA4G;IAC5G,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACtE"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Realtime coordination ports.
|
|
3
|
+
*
|
|
4
|
+
* These replace the Cloudflare Durable Objects that today sequence and fan out
|
|
5
|
+
* events (ChannelDO, AgentDO, WorkspaceStreamDO). The engine expresses *intent*
|
|
6
|
+
* ("broadcast this event to a channel"); an adapter decides how that happens:
|
|
7
|
+
*
|
|
8
|
+
* - Node in-process adapter (OSS self-host): in-memory per-key counters +
|
|
9
|
+
* socket sets + a 500-event resync ring, all in one process.
|
|
10
|
+
* - Cloudflare DO adapter (cloud, lives in the cloud repo): translates each
|
|
11
|
+
* call back into `env.X_DO.idFromName(...).fetch(...)`.
|
|
12
|
+
*
|
|
13
|
+
* `RealtimeBus` and `ConnectionRegistry` are intentionally separate interfaces
|
|
14
|
+
* with different callers (routes drive the bus; the WS upgrade route drives the
|
|
15
|
+
* registry) even though a single in-process adapter implements both over shared
|
|
16
|
+
* state (an agent's seq counter and its socket set must live together).
|
|
17
|
+
*/
|
|
18
|
+
export {};
|
|
19
|
+
//# sourceMappingURL=realtime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"realtime.js","sourceRoot":"","sources":["../../src/ports/realtime.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pluggable telemetry sink — the observability seam.
|
|
3
|
+
*
|
|
4
|
+
* Self-host uses `NoopTelemetrySink` (honors `DO_NOT_TRACK` / explicit disable).
|
|
5
|
+
* The cloud product injects a PostHog-backed sink. All methods are
|
|
6
|
+
* fire-and-forget from the engine's perspective; the sink decides batching and
|
|
7
|
+
* background flushing.
|
|
8
|
+
*/
|
|
9
|
+
export interface TelemetryEvent {
|
|
10
|
+
/** Event name, e.g. `relaycast_server_message_posted`. */
|
|
11
|
+
name: string;
|
|
12
|
+
/** Stable per-workspace (or per-actor) id for aggregation. */
|
|
13
|
+
distinctId: string;
|
|
14
|
+
properties: Record<string, unknown>;
|
|
15
|
+
}
|
|
16
|
+
export interface TelemetrySink {
|
|
17
|
+
capture(event: TelemetryEvent): void;
|
|
18
|
+
captureException(err: unknown, context?: Record<string, unknown>): void;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=telemetry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"telemetry.d.ts","sourceRoot":"","sources":["../../src/ports/telemetry.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,WAAW,cAAc;IAC7B,0DAA0D;IAC1D,IAAI,EAAE,MAAM,CAAC;IACb,8DAA8D;IAC9D,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACrC;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI,CAAC;IACrC,gBAAgB,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CACzE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"telemetry.js","sourceRoot":"","sources":["../../src/ports/telemetry.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { TelemetrySink, TelemetryEvent } from '../ports/telemetry.js';
|
|
2
|
+
/**
|
|
3
|
+
* No-op telemetry — the self-host default. Captures nothing; honors the intent
|
|
4
|
+
* of `DO_NOT_TRACK`. The cloud product injects a PostHog-backed sink.
|
|
5
|
+
*
|
|
6
|
+
* `captureException` still logs to the console so self-host operators see server
|
|
7
|
+
* errors without any external service.
|
|
8
|
+
*/
|
|
9
|
+
export declare class NoopTelemetrySink implements TelemetrySink {
|
|
10
|
+
capture(_event: TelemetryEvent): void;
|
|
11
|
+
captureException(err: unknown, context?: Record<string, unknown>): void;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=noop-telemetry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"noop-telemetry.d.ts","sourceRoot":"","sources":["../../src/providers/noop-telemetry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE3E;;;;;;GAMG;AACH,qBAAa,iBAAkB,YAAW,aAAa;IACrD,OAAO,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI;IAIrC,gBAAgB,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;CAGxE"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* No-op telemetry — the self-host default. Captures nothing; honors the intent
|
|
3
|
+
* of `DO_NOT_TRACK`. The cloud product injects a PostHog-backed sink.
|
|
4
|
+
*
|
|
5
|
+
* `captureException` still logs to the console so self-host operators see server
|
|
6
|
+
* errors without any external service.
|
|
7
|
+
*/
|
|
8
|
+
export class NoopTelemetrySink {
|
|
9
|
+
capture(_event) {
|
|
10
|
+
// intentionally empty
|
|
11
|
+
}
|
|
12
|
+
captureException(err, context) {
|
|
13
|
+
console.error('[telemetry] captureException', err, context ?? {});
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=noop-telemetry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"noop-telemetry.js","sourceRoot":"","sources":["../../src/providers/noop-telemetry.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,MAAM,OAAO,iBAAiB;IAC5B,OAAO,CAAC,MAAsB;QAC5B,sBAAsB;IACxB,CAAC;IAED,gBAAgB,CAAC,GAAY,EAAE,OAAiC;QAC9D,OAAO,CAAC,KAAK,CAAC,8BAA8B,EAAE,GAAG,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC;IACpE,CAAC;CACF"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { EntitlementsProvider, PlanLimits, UsageMetric, Workspace } from '../ports/index.js';
|
|
2
|
+
import type { KeyValueStore } from '../ports/kv.js';
|
|
3
|
+
/**
|
|
4
|
+
* The default plan limits, lifted from the original `middleware/planLimits.ts`.
|
|
5
|
+
* Self-host deployments typically run the `selfhost` tier (everything
|
|
6
|
+
* unlimited); the free/pro/enterprise tiers are kept so the same code serves a
|
|
7
|
+
* tiered deployment if a workspace's `plan` column is set.
|
|
8
|
+
*/
|
|
9
|
+
export declare const PLAN_LIMITS: Record<string, PlanLimits>;
|
|
10
|
+
/**
|
|
11
|
+
* Static, table-driven entitlements — the self-host default. Resolves limits
|
|
12
|
+
* from {@link PLAN_LIMITS} keyed by `workspace.plan`, and reads usage counters
|
|
13
|
+
* from the key/value store (the same `usage:<wid>:<metric>` keys the usage
|
|
14
|
+
* tracker increments). The cloud product injects a billing-backed provider.
|
|
15
|
+
*/
|
|
16
|
+
export declare class StaticEntitlementsProvider implements EntitlementsProvider {
|
|
17
|
+
private readonly kv?;
|
|
18
|
+
private readonly defaultPlan;
|
|
19
|
+
constructor(kv?: KeyValueStore | undefined, defaultPlan?: string);
|
|
20
|
+
getLimits(workspace: Workspace): Promise<PlanLimits>;
|
|
21
|
+
getUsage(workspaceId: string, metric: UsageMetric): Promise<number>;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=static-entitlements.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"static-entitlements.d.ts","sourceRoot":"","sources":["../../src/providers/static-entitlements.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAClG,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEpD;;;;;GAKG;AACH,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAKlD,CAAC;AAEF;;;;;GAKG;AACH,qBAAa,0BAA2B,YAAW,oBAAoB;IAEnE,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;IACpB,OAAO,CAAC,QAAQ,CAAC,WAAW;gBADX,EAAE,CAAC,EAAE,aAAa,YAAA,EAClB,WAAW,GAAE,MAAmB;IAG7C,SAAS,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC;IAKpD,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC;CAS1E"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The default plan limits, lifted from the original `middleware/planLimits.ts`.
|
|
3
|
+
* Self-host deployments typically run the `selfhost` tier (everything
|
|
4
|
+
* unlimited); the free/pro/enterprise tiers are kept so the same code serves a
|
|
5
|
+
* tiered deployment if a workspace's `plan` column is set.
|
|
6
|
+
*/
|
|
7
|
+
export const PLAN_LIMITS = {
|
|
8
|
+
free: { messages: 10_000, agents: 5, file_bytes: 100 * 1024 * 1024, rate_per_min: 300 },
|
|
9
|
+
pro: { messages: 1_000_000, agents: 100, file_bytes: 50 * 1024 * 1024 * 1024, rate_per_min: 6000 },
|
|
10
|
+
enterprise: { messages: Infinity, agents: Infinity, file_bytes: 500 * 1024 * 1024 * 1024, rate_per_min: 30000 },
|
|
11
|
+
selfhost: { messages: Infinity, agents: Infinity, file_bytes: Infinity, rate_per_min: 30000 },
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* Static, table-driven entitlements — the self-host default. Resolves limits
|
|
15
|
+
* from {@link PLAN_LIMITS} keyed by `workspace.plan`, and reads usage counters
|
|
16
|
+
* from the key/value store (the same `usage:<wid>:<metric>` keys the usage
|
|
17
|
+
* tracker increments). The cloud product injects a billing-backed provider.
|
|
18
|
+
*/
|
|
19
|
+
export class StaticEntitlementsProvider {
|
|
20
|
+
kv;
|
|
21
|
+
defaultPlan;
|
|
22
|
+
constructor(kv, defaultPlan = 'selfhost') {
|
|
23
|
+
this.kv = kv;
|
|
24
|
+
this.defaultPlan = defaultPlan;
|
|
25
|
+
}
|
|
26
|
+
async getLimits(workspace) {
|
|
27
|
+
const plan = workspace.plan || this.defaultPlan;
|
|
28
|
+
return PLAN_LIMITS[plan] ?? PLAN_LIMITS[this.defaultPlan];
|
|
29
|
+
}
|
|
30
|
+
async getUsage(workspaceId, metric) {
|
|
31
|
+
if (!this.kv)
|
|
32
|
+
return 0;
|
|
33
|
+
try {
|
|
34
|
+
const raw = await this.kv.get(`usage:${workspaceId}:${metric}`);
|
|
35
|
+
return parseInt(raw || '0', 10) || 0;
|
|
36
|
+
}
|
|
37
|
+
catch {
|
|
38
|
+
return 0;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=static-entitlements.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"static-entitlements.js","sourceRoot":"","sources":["../../src/providers/static-entitlements.ts"],"names":[],"mappings":"AAGA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,WAAW,GAA+B;IACrD,IAAI,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,UAAU,EAAE,GAAG,GAAG,IAAI,GAAG,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE;IACvF,GAAG,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE;IAClG,UAAU,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE;IAC/G,QAAQ,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,EAAE,KAAK,EAAE;CAC9F,CAAC;AAEF;;;;;GAKG;AACH,MAAM,OAAO,0BAA0B;IAElB;IACA;IAFnB,YACmB,EAAkB,EAClB,cAAsB,UAAU;QADhC,OAAE,GAAF,EAAE,CAAgB;QAClB,gBAAW,GAAX,WAAW,CAAqB;IAChD,CAAC;IAEJ,KAAK,CAAC,SAAS,CAAC,SAAoB;QAClC,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC;QAChD,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC5D,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,WAAmB,EAAE,MAAmB;QACrD,IAAI,CAAC,IAAI,CAAC,EAAE;YAAE,OAAO,CAAC,CAAC;QACvB,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,WAAW,IAAI,MAAM,EAAE,CAAC,CAAC;YAChE,OAAO,QAAQ,CAAC,GAAG,IAAI,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;QACvC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,CAAC;QACX,CAAC;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"a2a.d.ts","sourceRoot":"","sources":["../../src/routes/a2a.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAI5B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAOxC,eAAO,MAAM,SAAS,qDAAqB,CAAC"}
|