@creatornader/agent-bridge 0.5.2 → 0.6.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/CHANGELOG.md +41 -1
- package/README.md +34 -31
- package/ROADMAP.md +56 -15
- package/SECURITY.md +6 -5
- package/dist/archive.d.ts +2 -2
- package/dist/{bridge-service-CNBKdYXh.d.ts → bridge-service-DjSYfjKt.d.ts} +4 -2
- package/dist/{bridge-store-ByJ6CaJk.d.ts → bridge-store-Bi_LCX8e.d.ts} +5 -1
- package/dist/bridge.d.ts +9 -37
- package/dist/bridge.js +6 -10
- package/dist/chunk-23UDQZMT.js +54 -0
- package/dist/chunk-23UDQZMT.js.map +1 -0
- package/dist/{chunk-AWE3DFZV.js → chunk-4V2PFJEF.js} +11 -4
- package/dist/chunk-4V2PFJEF.js.map +1 -0
- package/dist/{chunk-E4OWHGUE.js → chunk-62C63PIE.js} +8 -8
- package/dist/chunk-62C63PIE.js.map +1 -0
- package/dist/{chunk-HUHG7XTB.js → chunk-AIALYLGQ.js} +30 -193
- package/dist/chunk-AIALYLGQ.js.map +1 -0
- package/dist/{chunk-JUTJRAMA.js → chunk-FGERNG4X.js} +3 -3
- package/dist/{chunk-7VJI2MXI.js → chunk-IF5OKPBK.js} +32 -14
- package/dist/chunk-IF5OKPBK.js.map +1 -0
- package/dist/{chunk-QPC6JHA3.js → chunk-IMJ47WO4.js} +12 -16
- package/dist/chunk-IMJ47WO4.js.map +1 -0
- package/dist/{chunk-2EVLG3YA.js → chunk-UKFRCP6X.js} +10 -7
- package/dist/chunk-UKFRCP6X.js.map +1 -0
- package/dist/chunk-WQ4I5XGF.js +242 -0
- package/dist/chunk-WQ4I5XGF.js.map +1 -0
- package/dist/{chunk-SN7PIVDF.js → chunk-ZUZ7TCIH.js} +13 -1
- package/dist/{chunk-SN7PIVDF.js.map → chunk-ZUZ7TCIH.js.map} +1 -1
- package/dist/cli.js +41 -34
- package/dist/cli.js.map +1 -1
- package/dist/client-config.d.ts +1 -1
- package/dist/client-config.js +1 -1
- package/dist/client-runtime.d.ts +3 -3
- package/dist/client-runtime.js +5 -5
- package/dist/contracts/generate.js +2 -3
- package/dist/contracts/generate.js.map +1 -1
- package/dist/dr.d.ts +8 -0
- package/dist/dr.js +1 -1
- package/dist/{gateway-CW-61lvs.d.ts → gateway-BqmcKam8.d.ts} +2 -2
- package/dist/gateway-main.js +3 -3
- package/dist/gateway.d.ts +3 -3
- package/dist/gateway.js +3 -3
- package/dist/index.js +8 -7
- package/dist/index.js.map +1 -1
- package/dist/{postgres-bridge-store-C9KG9Z69.d.ts → postgres-bridge-store-ChoOuFEY.d.ts} +1 -1
- package/dist/server.d.ts +0 -2
- package/dist/server.js +8 -7
- package/dist/{sqlite-edge-store-CdMIOrho.d.ts → sqlite-edge-store-BAFUeysk.d.ts} +1 -1
- package/dist/sqlite.d.ts +7 -3
- package/dist/sqlite.js +1 -1
- package/docs/architecture-v2.md +22 -14
- package/docs/decisions/0001-protocol-layers-and-acknowledgment-semantics.md +2 -1
- package/docs/decisions/0002-canonical-operation-contract-registry.md +6 -1
- package/docs/decisions/0005-retire-direct-supabase-runtime.md +52 -0
- package/docs/deployment.md +17 -12
- package/docs/ecosystem.md +6 -4
- package/docs/troubleshooting.md +15 -0
- package/llms.txt +3 -3
- package/openapi/agent-bridge-v2.openapi.json +3 -6
- package/package.json +3 -3
- package/schemas/agent-bridge-v2.capabilities.json +4 -5
- package/schemas/agent-bridge-v2.mcp.json +6 -12
- package/schemas/agent-bridge-v2.schema.json +12 -24
- package/dist/chunk-2EVLG3YA.js.map +0 -1
- package/dist/chunk-7VJI2MXI.js.map +0 -1
- package/dist/chunk-AWE3DFZV.js.map +0 -1
- package/dist/chunk-E4OWHGUE.js.map +0 -1
- package/dist/chunk-HUHG7XTB.js.map +0 -1
- package/dist/chunk-QPC6JHA3.js.map +0 -1
- package/dist/chunk-Z6JP6MYD.js +0 -584
- package/dist/chunk-Z6JP6MYD.js.map +0 -1
- /package/dist/{chunk-JUTJRAMA.js.map → chunk-FGERNG4X.js.map} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/bridge-service.ts"],"sourcesContent":["import {\n BridgePrincipalMismatchError,\n BridgeValidationError,\n encodeCursor,\n validateMessageDraft,\n validatePrincipal,\n validateProject,\n validateUuid,\n type BridgeDelivery,\n type BridgeMessage,\n type BridgePrincipal,\n type MessageDraft,\n type AgentPresence,\n type DeliveryState,\n} from \"./bridge-domain.js\";\nimport type {\n BridgeStore,\n DeliveryQuery,\n InsertMessageResult,\n MessagePage,\n MessageQuery,\n} from \"./bridge-store.js\";\n\nfunction validateDeprecatedMaxAttempts(value: unknown): void {\n if (value === undefined) return;\n if (!Number.isSafeInteger(value) || Number(value) < 1 || Number(value) > 100) {\n throw new BridgeValidationError(\"maxAttempts must be between 1 and 100\");\n }\n}\n\nfunction validateDeprecatedRetryPolicy(value: unknown): void {\n if (value === undefined) return;\n if (value === null || typeof value !== \"object\" || Array.isArray(value)) {\n throw new BridgeValidationError(\"retryPolicy must be an object\");\n }\n const allowed = new Set([\"maxAttempts\", \"baseDelayMs\", \"maxDelayMs\", \"jitterRatio\"]);\n for (const key of Object.keys(value)) {\n if (!allowed.has(key)) throw new BridgeValidationError(`retryPolicy.${key} is not supported`);\n }\n const policy = value as Record<string, unknown>;\n validateDeprecatedMaxAttempts(policy.maxAttempts);\n for (const [key, maximum] of [[\"baseDelayMs\", 3_600_000], [\"maxDelayMs\", 86_400_000]] as const) {\n if (policy[key] !== undefined && (!Number.isSafeInteger(policy[key]) || Number(policy[key]) < 1 || Number(policy[key]) > maximum)) {\n throw new BridgeValidationError(`${key} is invalid`);\n }\n }\n if (policy.jitterRatio !== undefined && (!Number.isFinite(policy.jitterRatio) || Number(policy.jitterRatio) < 0 || Number(policy.jitterRatio) > 1)) {\n throw new BridgeValidationError(\"jitterRatio must be between 0 and 1\");\n }\n}\n\nfunction validateLeaseMs(value = 30_000): number {\n if (!Number.isSafeInteger(value) || value < 1_000 || value > 15 * 60_000) {\n throw new BridgeValidationError(\"leaseMs must be between 1000 and 900000\");\n }\n return value;\n}\n\nexport type PublicMessageQuery = MessageQuery & { unacknowledgedBy?: string };\n\nfunction validateQuery(query: PublicMessageQuery, principal: BridgePrincipal): MessageQuery {\n const limit = query.limit ?? 50;\n if (!Number.isSafeInteger(limit) || limit < 1 || limit > 200) {\n throw new BridgeValidationError(\"limit must be between 1 and 200\");\n }\n if (query.types !== undefined) {\n if (!Array.isArray(query.types) || query.types.length > 64) {\n throw new BridgeValidationError(\"types must contain at most 64 entries\");\n }\n for (const type of query.types) {\n if (typeof type !== \"string\" || !type.trim() || type.length > 128) {\n throw new BridgeValidationError(\"type filter is invalid\");\n }\n }\n }\n const source = query.source?.trim();\n if (source !== undefined && (!source || source.length > 128)) {\n throw new BridgeValidationError(\"source filter is invalid\");\n }\n const unacknowledgedBy = query.unacknowledgedBy?.trim();\n if (\n unacknowledgedBy !== undefined &&\n (!unacknowledgedBy || unacknowledgedBy.length > 128)\n ) {\n throw new BridgeValidationError(\"unacknowledgedBy filter is invalid\");\n }\n if (unacknowledgedBy !== undefined && unacknowledgedBy !== principal.agent) {\n throw new BridgePrincipalMismatchError(\"unacknowledgedBy must equal the configured principal\");\n }\n const mailbox = query.mailbox ?? \"inbox\";\n if (![\"inbox\", \"sent\", \"all\"].includes(mailbox)) throw new BridgeValidationError(\"mailbox is invalid\");\n const receiptState = query.receiptState ?? (unacknowledgedBy ? \"unread\" : \"any\");\n if (![\"any\", \"unread\", \"read\"].includes(receiptState)) throw new BridgeValidationError(\"receiptState is invalid\");\n if (mailbox !== \"inbox\" && receiptState !== \"any\") {\n throw new BridgeValidationError(\"receiptState is valid only for inbox\");\n }\n let since: string | undefined;\n if (query.since !== undefined) {\n const date = new Date(query.since);\n if (Number.isNaN(date.getTime())) throw new BridgeValidationError(\"since must be an ISO timestamp\");\n since = date.toISOString();\n }\n const threadId = query.threadId?.trim();\n if (threadId !== undefined && (!threadId || threadId.length > 128)) {\n throw new BridgeValidationError(\"threadId filter is invalid\");\n }\n if (query.latest && query.cursor) {\n throw new BridgeValidationError(\"latest cannot be combined with cursor\");\n }\n const { unacknowledgedBy: _compat, ...storeQuery } = query;\n return { ...storeQuery, mailbox, receiptState, project: validateProject(query.project), limit, source, since, threadId, latest: query.latest === true };\n}\n\nexport class BridgeService {\n constructor(private readonly store: BridgeStore) {}\n\n async publish(\n principalInput: BridgePrincipal,\n draftInput: MessageDraft,\n options: { queueOnly?: boolean } = {},\n ): Promise<InsertMessageResult> {\n const principal = validatePrincipal(principalInput);\n const draft = validateMessageDraft(draftInput);\n const message = {\n ...draft,\n workspace: principal.workspace,\n source: principal.agent,\n };\n if (options.queueOnly) {\n if (!this.store.enqueueMessage) {\n throw new BridgeValidationError(\"queue-only publication requires the gateway provider\");\n }\n return this.store.enqueueMessage(message);\n }\n return this.store.insertMessage(message);\n }\n\n async history(\n principalInput: BridgePrincipal,\n query: PublicMessageQuery = {},\n ): Promise<MessagePage> {\n const principal = validatePrincipal(principalInput);\n return this.store.listMessages(principal, validateQuery(query, principal));\n }\n\n async acknowledge(principalInput: BridgePrincipal, messageIds: string[]): Promise<number> {\n const principal = validatePrincipal(principalInput);\n if (!Array.isArray(messageIds) || !messageIds.length || messageIds.length > 200) {\n throw new BridgeValidationError(\"messageIds must contain between 1 and 200 entries\");\n }\n const ids = messageIds.map((id) => validateUuid(id, \"messageId\"));\n return this.store.recordReceipt(principal, ids);\n }\n\n async claim(\n principalInput: BridgePrincipal,\n options: { leaseMs?: number; messageId?: string; maxAttempts?: number } = {},\n ): Promise<{ delivery: BridgeDelivery; leaseToken: string } | null> {\n const principal = validatePrincipal(principalInput);\n validateDeprecatedMaxAttempts(options.maxAttempts);\n const delivery = await this.store.claimDelivery(principal, {\n leaseMs: validateLeaseMs(options.leaseMs),\n messageId: options.messageId === undefined ? undefined : validateUuid(options.messageId, \"messageId\"),\n });\n return delivery?.leaseToken ? { delivery, leaseToken: delivery.leaseToken } : null;\n }\n\n async extend(\n principalInput: BridgePrincipal,\n deliveryId: string,\n leaseToken: string,\n leaseMs = 30_000,\n ): Promise<BridgeDelivery | null> {\n const principal = validatePrincipal(principalInput);\n return this.store.renewDelivery(\n principal,\n validateUuid(deliveryId, \"deliveryId\"),\n validateUuid(leaseToken, \"leaseToken\"),\n validateLeaseMs(leaseMs),\n );\n }\n\n async ack(\n principalInput: BridgePrincipal,\n deliveryId: string,\n leaseToken: string,\n ): Promise<BridgeDelivery | null> {\n const principal = validatePrincipal(principalInput);\n return this.store.settleDelivery(\n principal,\n validateUuid(deliveryId, \"deliveryId\"),\n validateUuid(leaseToken, \"leaseToken\"),\n \"acked\",\n undefined,\n );\n }\n\n async nack(\n principalInput: BridgePrincipal,\n deliveryId: string,\n leaseToken: string,\n error: string,\n disposition: \"retry\" | \"dead\" | boolean = \"retry\",\n deprecatedRetryPolicy?: unknown,\n ): Promise<BridgeDelivery | null> {\n const principal = validatePrincipal(principalInput);\n if (![\"retry\", \"dead\", true, false].includes(disposition as never)) {\n throw new BridgeValidationError(\"disposition must be retry or dead\");\n }\n if (typeof error !== \"string\" || !error.trim()) {\n throw new BridgeValidationError(\"error is required\");\n }\n validateDeprecatedRetryPolicy(deprecatedRetryPolicy);\n return this.store.settleDelivery(\n principal,\n validateUuid(deliveryId, \"deliveryId\"),\n validateUuid(leaseToken, \"leaseToken\"),\n disposition === \"dead\" || disposition === true ? \"dead\" : \"retrying\",\n error.slice(0, 1_024),\n );\n }\n\n async deliveries(principalInput: BridgePrincipal, query: DeliveryQuery = {}) {\n const principal = validatePrincipal(principalInput);\n if (!this.store.listDeliveries) throw new BridgeValidationError(\"delivery listing is not supported by this provider\");\n const limit = query.limit ?? 50;\n if (!Number.isSafeInteger(limit) || limit < 1 || limit > 200) throw new BridgeValidationError(\"limit must be between 1 and 200\");\n const role = query.role ?? \"all\";\n if (![\"recipient\", \"publisher\", \"all\"].includes(role)) throw new BridgeValidationError(\"role is invalid\");\n const validStates: DeliveryState[] = [\"pending\", \"claimed\", \"acked\", \"retrying\", \"dead\", \"cancelled\"];\n if (query.states !== undefined && (!Array.isArray(query.states) || query.states.some((state) => !validStates.includes(state)))) {\n throw new BridgeValidationError(\"states contains an invalid delivery state\");\n }\n const recipient = query.recipient?.trim();\n if (recipient !== undefined && (!recipient || recipient.length > 128)) throw new BridgeValidationError(\"recipient is invalid\");\n return this.store.listDeliveries(principal, {\n ...query,\n role,\n limit,\n messageId: query.messageId ? validateUuid(query.messageId, \"messageId\") : undefined,\n recipient,\n states: query.states ? [...new Set(query.states)].sort() : undefined,\n });\n }\n\n async deliveryEvents(principalInput: BridgePrincipal, deliveryId: string, query: { cursor?: string; limit?: number } = {}) {\n const principal = validatePrincipal(principalInput);\n if (!this.store.listDeliveryEvents) throw new BridgeValidationError(\"delivery event listing is not supported by this provider\");\n const limit = query.limit ?? 50;\n if (!Number.isSafeInteger(limit) || limit < 1 || limit > 200) throw new BridgeValidationError(\"limit must be between 1 and 200\");\n return this.store.listDeliveryEvents(principal, validateUuid(deliveryId, \"deliveryId\"), { ...query, limit });\n }\n\n async cancel(principalInput: BridgePrincipal, deliveryId: string) {\n const principal = validatePrincipal(principalInput);\n if (!this.store.cancelDelivery) throw new BridgeValidationError(\"delivery cancellation is not supported by this provider\");\n return this.store.cancelDelivery(principal, validateUuid(deliveryId, \"deliveryId\"));\n }\n\n async requeue(principalInput: BridgePrincipal, deliveryId: string) {\n const principal = validatePrincipal(principalInput);\n if (!this.store.requeueDelivery) throw new BridgeValidationError(\"delivery requeue is not supported by this provider\");\n return this.store.requeueDelivery(principal, validateUuid(deliveryId, \"deliveryId\"));\n }\n\n async heartbeat(\n principalInput: BridgePrincipal,\n options: { leaseMs?: number; runtimeType?: string; capabilities?: string[] } = {},\n ): Promise<AgentPresence> {\n const principal = validatePrincipal(principalInput);\n if (!principal.instance) throw new BridgeValidationError(\"instance is required for presence\");\n if (!this.store.heartbeat) throw new BridgeValidationError(\"presence is not supported by this provider\");\n if (\n options.runtimeType !== undefined &&\n typeof options.runtimeType !== \"string\"\n ) {\n throw new BridgeValidationError(\"runtimeType must be a string\");\n }\n const runtimeType = options.runtimeType?.trim();\n if (runtimeType && runtimeType.length > 128) throw new BridgeValidationError(\"runtimeType exceeds 128 characters\");\n if (options.capabilities !== undefined && !Array.isArray(options.capabilities)) {\n throw new BridgeValidationError(\"capabilities must be an array\");\n }\n const capabilities = [...new Set(options.capabilities ?? [])].map((value) => {\n if (typeof value !== \"string\" || !value.trim() || value.length > 128) throw new BridgeValidationError(\"capability is invalid\");\n return value.trim();\n });\n if (capabilities.length > 64) throw new BridgeValidationError(\"capabilities exceeds 64 entries\");\n return this.store.heartbeat(principal, validateLeaseMs(options.leaseMs), runtimeType, capabilities);\n }\n\n async presence(principalInput: BridgePrincipal): Promise<AgentPresence[]> {\n const principal = validatePrincipal(principalInput);\n if (!this.store.listPresence) throw new BridgeValidationError(\"presence is not supported by this provider\");\n return this.store.listPresence(principal);\n }\n}\n\nexport { encodeCursor, type BridgeMessage };\n"],"mappings":";;;;;;;;;;;AAuBA,SAAS,8BAA8B,OAAsB;AAC3D,MAAI,UAAU,OAAW;AACzB,MAAI,CAAC,OAAO,cAAc,KAAK,KAAK,OAAO,KAAK,IAAI,KAAK,OAAO,KAAK,IAAI,KAAK;AAC5E,UAAM,IAAI,sBAAsB,uCAAuC;AAAA,EACzE;AACF;AAEA,SAAS,8BAA8B,OAAsB;AAC3D,MAAI,UAAU,OAAW;AACzB,MAAI,UAAU,QAAQ,OAAO,UAAU,YAAY,MAAM,QAAQ,KAAK,GAAG;AACvE,UAAM,IAAI,sBAAsB,+BAA+B;AAAA,EACjE;AACA,QAAM,UAAU,oBAAI,IAAI,CAAC,eAAe,eAAe,cAAc,aAAa,CAAC;AACnF,aAAW,OAAO,OAAO,KAAK,KAAK,GAAG;AACpC,QAAI,CAAC,QAAQ,IAAI,GAAG,EAAG,OAAM,IAAI,sBAAsB,eAAe,GAAG,mBAAmB;AAAA,EAC9F;AACA,QAAM,SAAS;AACf,gCAA8B,OAAO,WAAW;AAChD,aAAW,CAAC,KAAK,OAAO,KAAK,CAAC,CAAC,eAAe,IAAS,GAAG,CAAC,cAAc,KAAU,CAAC,GAAY;AAC9F,QAAI,OAAO,GAAG,MAAM,WAAc,CAAC,OAAO,cAAc,OAAO,GAAG,CAAC,KAAK,OAAO,OAAO,GAAG,CAAC,IAAI,KAAK,OAAO,OAAO,GAAG,CAAC,IAAI,UAAU;AACjI,YAAM,IAAI,sBAAsB,GAAG,GAAG,aAAa;AAAA,IACrD;AAAA,EACF;AACA,MAAI,OAAO,gBAAgB,WAAc,CAAC,OAAO,SAAS,OAAO,WAAW,KAAK,OAAO,OAAO,WAAW,IAAI,KAAK,OAAO,OAAO,WAAW,IAAI,IAAI;AAClJ,UAAM,IAAI,sBAAsB,qCAAqC;AAAA,EACvE;AACF;AAEA,SAAS,gBAAgB,QAAQ,KAAgB;AAC/C,MAAI,CAAC,OAAO,cAAc,KAAK,KAAK,QAAQ,OAAS,QAAQ,KAAK,KAAQ;AACxE,UAAM,IAAI,sBAAsB,yCAAyC;AAAA,EAC3E;AACA,SAAO;AACT;AAIA,SAAS,cAAc,OAA2B,WAA0C;AAC1F,QAAM,QAAQ,MAAM,SAAS;AAC7B,MAAI,CAAC,OAAO,cAAc,KAAK,KAAK,QAAQ,KAAK,QAAQ,KAAK;AAC5D,UAAM,IAAI,sBAAsB,iCAAiC;AAAA,EACnE;AACA,MAAI,MAAM,UAAU,QAAW;AAC7B,QAAI,CAAC,MAAM,QAAQ,MAAM,KAAK,KAAK,MAAM,MAAM,SAAS,IAAI;AAC1D,YAAM,IAAI,sBAAsB,uCAAuC;AAAA,IACzE;AACA,eAAW,QAAQ,MAAM,OAAO;AAC9B,UAAI,OAAO,SAAS,YAAY,CAAC,KAAK,KAAK,KAAK,KAAK,SAAS,KAAK;AACjE,cAAM,IAAI,sBAAsB,wBAAwB;AAAA,MAC1D;AAAA,IACF;AAAA,EACF;AACA,QAAM,SAAS,MAAM,QAAQ,KAAK;AAClC,MAAI,WAAW,WAAc,CAAC,UAAU,OAAO,SAAS,MAAM;AAC5D,UAAM,IAAI,sBAAsB,0BAA0B;AAAA,EAC5D;AACA,QAAM,mBAAmB,MAAM,kBAAkB,KAAK;AACtD,MACE,qBAAqB,WACpB,CAAC,oBAAoB,iBAAiB,SAAS,MAChD;AACA,UAAM,IAAI,sBAAsB,oCAAoC;AAAA,EACtE;AACA,MAAI,qBAAqB,UAAa,qBAAqB,UAAU,OAAO;AAC1E,UAAM,IAAI,6BAA6B,sDAAsD;AAAA,EAC/F;AACA,QAAM,UAAU,MAAM,WAAW;AACjC,MAAI,CAAC,CAAC,SAAS,QAAQ,KAAK,EAAE,SAAS,OAAO,EAAG,OAAM,IAAI,sBAAsB,oBAAoB;AACrG,QAAM,eAAe,MAAM,iBAAiB,mBAAmB,WAAW;AAC1E,MAAI,CAAC,CAAC,OAAO,UAAU,MAAM,EAAE,SAAS,YAAY,EAAG,OAAM,IAAI,sBAAsB,yBAAyB;AAChH,MAAI,YAAY,WAAW,iBAAiB,OAAO;AACjD,UAAM,IAAI,sBAAsB,sCAAsC;AAAA,EACxE;AACA,MAAI;AACJ,MAAI,MAAM,UAAU,QAAW;AAC7B,UAAM,OAAO,IAAI,KAAK,MAAM,KAAK;AACjC,QAAI,OAAO,MAAM,KAAK,QAAQ,CAAC,EAAG,OAAM,IAAI,sBAAsB,gCAAgC;AAClG,YAAQ,KAAK,YAAY;AAAA,EAC3B;AACA,QAAM,WAAW,MAAM,UAAU,KAAK;AACtC,MAAI,aAAa,WAAc,CAAC,YAAY,SAAS,SAAS,MAAM;AAClE,UAAM,IAAI,sBAAsB,4BAA4B;AAAA,EAC9D;AACA,MAAI,MAAM,UAAU,MAAM,QAAQ;AAChC,UAAM,IAAI,sBAAsB,uCAAuC;AAAA,EACzE;AACA,QAAM,EAAE,kBAAkB,SAAS,GAAG,WAAW,IAAI;AACrD,SAAO,EAAE,GAAG,YAAY,SAAS,cAAc,SAAS,gBAAgB,MAAM,OAAO,GAAG,OAAO,QAAQ,OAAO,UAAU,QAAQ,MAAM,WAAW,KAAK;AACxJ;AAEO,IAAM,gBAAN,MAAoB;AAAA,EACzB,YAA6B,OAAoB;AAApB;AAAA,EAAqB;AAAA,EAElD,MAAM,QACJ,gBACA,YACA,UAAmC,CAAC,GACN;AAC9B,UAAM,YAAY,kBAAkB,cAAc;AAClD,UAAM,QAAQ,qBAAqB,UAAU;AAC7C,UAAM,UAAU;AAAA,MACd,GAAG;AAAA,MACH,WAAW,UAAU;AAAA,MACrB,QAAQ,UAAU;AAAA,IACpB;AACA,QAAI,QAAQ,WAAW;AACrB,UAAI,CAAC,KAAK,MAAM,gBAAgB;AAC9B,cAAM,IAAI,sBAAsB,sDAAsD;AAAA,MACxF;AACA,aAAO,KAAK,MAAM,eAAe,OAAO;AAAA,IAC1C;AACA,WAAO,KAAK,MAAM,cAAc,OAAO;AAAA,EACzC;AAAA,EAEA,MAAM,QACJ,gBACA,QAA4B,CAAC,GACP;AACtB,UAAM,YAAY,kBAAkB,cAAc;AAClD,WAAO,KAAK,MAAM,aAAa,WAAW,cAAc,OAAO,SAAS,CAAC;AAAA,EAC3E;AAAA,EAEA,MAAM,YAAY,gBAAiC,YAAuC;AACxF,UAAM,YAAY,kBAAkB,cAAc;AAClD,QAAI,CAAC,MAAM,QAAQ,UAAU,KAAK,CAAC,WAAW,UAAU,WAAW,SAAS,KAAK;AAC/E,YAAM,IAAI,sBAAsB,mDAAmD;AAAA,IACrF;AACA,UAAM,MAAM,WAAW,IAAI,CAAC,OAAO,aAAa,IAAI,WAAW,CAAC;AAChE,WAAO,KAAK,MAAM,cAAc,WAAW,GAAG;AAAA,EAChD;AAAA,EAEA,MAAM,MACJ,gBACA,UAA0E,CAAC,GACT;AAClE,UAAM,YAAY,kBAAkB,cAAc;AAClD,kCAA8B,QAAQ,WAAW;AACjD,UAAM,WAAW,MAAM,KAAK,MAAM,cAAc,WAAW;AAAA,MACzD,SAAS,gBAAgB,QAAQ,OAAO;AAAA,MACxC,WAAW,QAAQ,cAAc,SAAY,SAAY,aAAa,QAAQ,WAAW,WAAW;AAAA,IACtG,CAAC;AACD,WAAO,UAAU,aAAa,EAAE,UAAU,YAAY,SAAS,WAAW,IAAI;AAAA,EAChF;AAAA,EAEA,MAAM,OACJ,gBACA,YACA,YACA,UAAU,KACsB;AAChC,UAAM,YAAY,kBAAkB,cAAc;AAClD,WAAO,KAAK,MAAM;AAAA,MAChB;AAAA,MACA,aAAa,YAAY,YAAY;AAAA,MACrC,aAAa,YAAY,YAAY;AAAA,MACrC,gBAAgB,OAAO;AAAA,IACzB;AAAA,EACF;AAAA,EAEA,MAAM,IACJ,gBACA,YACA,YACgC;AAChC,UAAM,YAAY,kBAAkB,cAAc;AAClD,WAAO,KAAK,MAAM;AAAA,MAChB;AAAA,MACA,aAAa,YAAY,YAAY;AAAA,MACrC,aAAa,YAAY,YAAY;AAAA,MACrC;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,KACJ,gBACA,YACA,YACA,OACA,cAA0C,SAC1C,uBACgC;AAChC,UAAM,YAAY,kBAAkB,cAAc;AAClD,QAAI,CAAC,CAAC,SAAS,QAAQ,MAAM,KAAK,EAAE,SAAS,WAAoB,GAAG;AAClE,YAAM,IAAI,sBAAsB,mCAAmC;AAAA,IACrE;AACA,QAAI,OAAO,UAAU,YAAY,CAAC,MAAM,KAAK,GAAG;AAC9C,YAAM,IAAI,sBAAsB,mBAAmB;AAAA,IACrD;AACA,kCAA8B,qBAAqB;AACnD,WAAO,KAAK,MAAM;AAAA,MAChB;AAAA,MACA,aAAa,YAAY,YAAY;AAAA,MACrC,aAAa,YAAY,YAAY;AAAA,MACrC,gBAAgB,UAAU,gBAAgB,OAAO,SAAS;AAAA,MAC1D,MAAM,MAAM,GAAG,IAAK;AAAA,IACtB;AAAA,EACF;AAAA,EAEA,MAAM,WAAW,gBAAiC,QAAuB,CAAC,GAAG;AAC3E,UAAM,YAAY,kBAAkB,cAAc;AAClD,QAAI,CAAC,KAAK,MAAM,eAAgB,OAAM,IAAI,sBAAsB,oDAAoD;AACpH,UAAM,QAAQ,MAAM,SAAS;AAC7B,QAAI,CAAC,OAAO,cAAc,KAAK,KAAK,QAAQ,KAAK,QAAQ,IAAK,OAAM,IAAI,sBAAsB,iCAAiC;AAC/H,UAAM,OAAO,MAAM,QAAQ;AAC3B,QAAI,CAAC,CAAC,aAAa,aAAa,KAAK,EAAE,SAAS,IAAI,EAAG,OAAM,IAAI,sBAAsB,iBAAiB;AACxG,UAAM,cAA+B,CAAC,WAAW,WAAW,SAAS,YAAY,QAAQ,WAAW;AACpG,QAAI,MAAM,WAAW,WAAc,CAAC,MAAM,QAAQ,MAAM,MAAM,KAAK,MAAM,OAAO,KAAK,CAAC,UAAU,CAAC,YAAY,SAAS,KAAK,CAAC,IAAI;AAC9H,YAAM,IAAI,sBAAsB,2CAA2C;AAAA,IAC7E;AACA,UAAM,YAAY,MAAM,WAAW,KAAK;AACxC,QAAI,cAAc,WAAc,CAAC,aAAa,UAAU,SAAS,KAAM,OAAM,IAAI,sBAAsB,sBAAsB;AAC7H,WAAO,KAAK,MAAM,eAAe,WAAW;AAAA,MAC1C,GAAG;AAAA,MACH;AAAA,MACA;AAAA,MACA,WAAW,MAAM,YAAY,aAAa,MAAM,WAAW,WAAW,IAAI;AAAA,MAC1E;AAAA,MACA,QAAQ,MAAM,SAAS,CAAC,GAAG,IAAI,IAAI,MAAM,MAAM,CAAC,EAAE,KAAK,IAAI;AAAA,IAC7D,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,eAAe,gBAAiC,YAAoB,QAA6C,CAAC,GAAG;AACzH,UAAM,YAAY,kBAAkB,cAAc;AAClD,QAAI,CAAC,KAAK,MAAM,mBAAoB,OAAM,IAAI,sBAAsB,0DAA0D;AAC9H,UAAM,QAAQ,MAAM,SAAS;AAC7B,QAAI,CAAC,OAAO,cAAc,KAAK,KAAK,QAAQ,KAAK,QAAQ,IAAK,OAAM,IAAI,sBAAsB,iCAAiC;AAC/H,WAAO,KAAK,MAAM,mBAAmB,WAAW,aAAa,YAAY,YAAY,GAAG,EAAE,GAAG,OAAO,MAAM,CAAC;AAAA,EAC7G;AAAA,EAEA,MAAM,OAAO,gBAAiC,YAAoB;AAChE,UAAM,YAAY,kBAAkB,cAAc;AAClD,QAAI,CAAC,KAAK,MAAM,eAAgB,OAAM,IAAI,sBAAsB,yDAAyD;AACzH,WAAO,KAAK,MAAM,eAAe,WAAW,aAAa,YAAY,YAAY,CAAC;AAAA,EACpF;AAAA,EAEA,MAAM,QAAQ,gBAAiC,YAAoB;AACjE,UAAM,YAAY,kBAAkB,cAAc;AAClD,QAAI,CAAC,KAAK,MAAM,gBAAiB,OAAM,IAAI,sBAAsB,oDAAoD;AACrH,WAAO,KAAK,MAAM,gBAAgB,WAAW,aAAa,YAAY,YAAY,CAAC;AAAA,EACrF;AAAA,EAEA,MAAM,UACJ,gBACA,UAA+E,CAAC,GACxD;AACxB,UAAM,YAAY,kBAAkB,cAAc;AAClD,QAAI,CAAC,UAAU,SAAU,OAAM,IAAI,sBAAsB,mCAAmC;AAC5F,QAAI,CAAC,KAAK,MAAM,UAAW,OAAM,IAAI,sBAAsB,4CAA4C;AACvG,QACE,QAAQ,gBAAgB,UACxB,OAAO,QAAQ,gBAAgB,UAC/B;AACA,YAAM,IAAI,sBAAsB,8BAA8B;AAAA,IAChE;AACA,UAAM,cAAc,QAAQ,aAAa,KAAK;AAC9C,QAAI,eAAe,YAAY,SAAS,IAAK,OAAM,IAAI,sBAAsB,oCAAoC;AACjH,QAAI,QAAQ,iBAAiB,UAAa,CAAC,MAAM,QAAQ,QAAQ,YAAY,GAAG;AAC9E,YAAM,IAAI,sBAAsB,+BAA+B;AAAA,IACjE;AACA,UAAM,eAAe,CAAC,GAAG,IAAI,IAAI,QAAQ,gBAAgB,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,UAAU;AAC3E,UAAI,OAAO,UAAU,YAAY,CAAC,MAAM,KAAK,KAAK,MAAM,SAAS,IAAK,OAAM,IAAI,sBAAsB,uBAAuB;AAC7H,aAAO,MAAM,KAAK;AAAA,IACpB,CAAC;AACD,QAAI,aAAa,SAAS,GAAI,OAAM,IAAI,sBAAsB,iCAAiC;AAC/F,WAAO,KAAK,MAAM,UAAU,WAAW,gBAAgB,QAAQ,OAAO,GAAG,aAAa,YAAY;AAAA,EACpG;AAAA,EAEA,MAAM,SAAS,gBAA2D;AACxE,UAAM,YAAY,kBAAkB,cAAc;AAClD,QAAI,CAAC,KAAK,MAAM,aAAc,OAAM,IAAI,sBAAsB,4CAA4C;AAC1G,WAAO,KAAK,MAAM,aAAa,SAAS;AAAA,EAC1C;AACF;","names":[]}
|
|
@@ -200,7 +200,7 @@ var PresenceSchema = Type.Object({
|
|
|
200
200
|
lastSeenAt: Type.String()
|
|
201
201
|
}, { additionalProperties: true });
|
|
202
202
|
var DeliveryDiagnosticsProperties = {
|
|
203
|
-
schemaVersion: Type.Enum(["local-v2", "postgres-v2"
|
|
203
|
+
schemaVersion: Type.Enum(["local-v2", "postgres-v2"]),
|
|
204
204
|
deliverySupported: Type.Boolean(),
|
|
205
205
|
pending: NullableNumber(),
|
|
206
206
|
claimed: NullableNumber(),
|
|
@@ -251,11 +251,11 @@ var ClientStatusSchema = Type.Object({
|
|
|
251
251
|
localHealthy: Type.Boolean(),
|
|
252
252
|
connected: Type.Boolean(),
|
|
253
253
|
remoteReachable: Type.Union([Type.Boolean(), Type.Null()]),
|
|
254
|
-
provider: Type.Enum(["local", "gateway"
|
|
254
|
+
provider: Type.Enum(["local", "gateway"]),
|
|
255
255
|
workspace: Type.String(),
|
|
256
256
|
agent: Type.String(),
|
|
257
257
|
instance: Type.Union([Type.String(), Type.Null()]),
|
|
258
|
-
schemaVersion: Type.Enum(["local-v2", "postgres-v2"
|
|
258
|
+
schemaVersion: Type.Enum(["local-v2", "postgres-v2"]),
|
|
259
259
|
endpoint: Type.Union([Type.String(), Type.Null()]),
|
|
260
260
|
database: Type.Union([Type.String(), Type.Null()]),
|
|
261
261
|
cursorPath: Type.String(),
|
|
@@ -339,7 +339,7 @@ var ClaimResponseSchema = Type.Object({
|
|
|
339
339
|
{ properties: { delivery: DeliverySchema, leaseToken: { type: "string" } }, required: ["delivery", "leaseToken"] }
|
|
340
340
|
]
|
|
341
341
|
});
|
|
342
|
-
var ALL_PROVIDERS = ["local", "gateway"
|
|
342
|
+
var ALL_PROVIDERS = ["local", "gateway"];
|
|
343
343
|
var DELIVERY_PROVIDERS = ["local", "gateway"];
|
|
344
344
|
var GATEWAY_PROVIDER = ["gateway"];
|
|
345
345
|
var operation = (entry) => entry;
|
|
@@ -359,13 +359,13 @@ var ReceiptCliResponseSchema = Type.Object({
|
|
|
359
359
|
agent: Type.String()
|
|
360
360
|
}, { additionalProperties: true });
|
|
361
361
|
var operations = [
|
|
362
|
-
operation({ id: "capabilities", summary: "Discover operations available on the current surface.", request: Empty, response: Type.Object({ protocolVersion: Type.String(), currentProtocolVersion: Type.String(), selectedProtocolVersion: Type.String(), supportedProtocolVersions: StringArray, scopeEnforcement: Type.Boolean(), requestAuthority: Type.Boolean(), rowIsolation: Type.Boolean(), authorizationModel: Type.Enum(["scoped-credential", "credential-wide", "process-identity"
|
|
362
|
+
operation({ id: "capabilities", summary: "Discover operations available on the current surface.", request: Empty, response: Type.Object({ protocolVersion: Type.String(), currentProtocolVersion: Type.String(), selectedProtocolVersion: Type.String(), supportedProtocolVersions: StringArray, scopeEnforcement: Type.Boolean(), requestAuthority: Type.Boolean(), rowIsolation: Type.Boolean(), authorizationModel: Type.Enum(["scoped-credential", "credential-wide", "process-identity"]), surface: Type.Enum(["mcp", "http", "cli"]), provider: Type.Enum(["local", "gateway"]), grantedScopes: Type.Optional(StringArray), operations: Type.Array(Type.Object({ id: Type.String(), summary: Type.String(), requiredScopes: StringArray, mcp: Type.Optional(Type.Any()), http: Type.Optional(Type.Any()), cli: Type.Optional(Type.Any()) }, { additionalProperties: true })) }, { additionalProperties: true }), scopes: [], providers: ALL_PROVIDERS, mcp: { name: "capabilities" }, http: { method: "GET", path: "/v2/capabilities" }, cli: { command: "capabilities", options: [] } }),
|
|
363
363
|
operation({ id: "status", summary: "Read gateway delivery diagnostics.", request: Empty, response: DiagnosticsSchema, scopes: ["status:read"], providers: ALL_PROVIDERS, http: { method: "GET", path: "/v2/status" } }),
|
|
364
364
|
operation({ id: "issue_endpoint_migration_challenge", summary: "Issue a short-lived endpoint migration challenge commitment.", request: Type.Object({ challenge: Type.String({ pattern: "^[0-9a-f]{64}$" }), expectedGatewayAuthorityId: Type.String({ pattern: UUID_PATTERN }), verifierCredentialId: Type.String({ pattern: UUID_PATTERN }) }, { additionalProperties: false }), response: Type.Object({ gatewayAuthorityId: Type.String(), issuerCredentialId: Type.String(), verifierCredentialId: Type.String(), expiresAt: Type.String() }, { additionalProperties: false }), scopes: [], providers: GATEWAY_PROVIDER, http: { method: "POST", path: "/v2/endpoint-migration-challenges" } }),
|
|
365
365
|
operation({ id: "consume_endpoint_migration_challenge", summary: "Consume a short-lived endpoint migration challenge commitment.", request: Type.Object({ challenge: Type.String({ pattern: "^[0-9a-f]{64}$" }), expectedGatewayAuthorityId: Type.String({ pattern: UUID_PATTERN }), issuerCredentialId: Type.String({ pattern: UUID_PATTERN }) }, { additionalProperties: false }), response: Type.Object({ gatewayAuthorityId: Type.String(), issuerCredentialId: Type.String(), verifierCredentialId: Type.String(), expiresAt: Type.Union([Type.String(), Type.Null()]), consumed: Type.Boolean() }, { additionalProperties: false }), scopes: [], providers: GATEWAY_PROVIDER, http: { method: "POST", path: "/v2/endpoint-migration-challenges/consume" } }),
|
|
366
366
|
operation({ id: "client_status", summary: "Read client connectivity and provider diagnostics.", request: Empty, response: ClientStatusSchema, scopes: ["status:read"], providers: ALL_PROVIDERS, cli: { command: "status", aliases: ["doctor"], options: [] } }),
|
|
367
367
|
operation({ id: "gateway_metrics", summary: "Read Prometheus gateway counters.", request: Empty, response: Type.String(), scopes: ["gateway:metrics"], providers: GATEWAY_PROVIDER, http: { method: "GET", path: "/metrics", responseContentType: "text/plain" } }),
|
|
368
|
-
operation({ id: "publish_message", summary: "Create an immutable Agent Bridge v2 message.", request: MessageDraftSchema, response: Type.Object({ created: Type.Boolean(), message: MessageSchema, disposition: Type.Optional(Type.Enum(["committed", "queued"])), authoritative: OptionalBoolean() }, { additionalProperties: true }), scopes: ["messages:write"], providers: ALL_PROVIDERS, mcp: { name: "send" }, http: { method: "POST", path: "/v2/messages", successStatus: 201 }, cli: { command: "send", aliases: ["post"], options: ["source", "project", "type", "kind", "category", "content", "content-type", "data", "payload", "payload-mime", "payload-ref", "payload-ciphertext", "target", "target-agent", "target-agents", "thread-id", "reply-to-id", "correlation-id", "causation-id", "priority", "expires-at", "idempotency-key", "atrib-receipt-id", "informed-by", "metadata", "delivery-mode", "delivery-policy", "delivery-max-attempts", "retry-base-ms", "retry-max-ms", "retry-jitter", "not-before", "message-id"] } }),
|
|
368
|
+
operation({ id: "publish_message", summary: "Create an immutable Agent Bridge v2 message.", request: MessageDraftSchema, response: Type.Object({ created: Type.Boolean(), message: MessageSchema, disposition: Type.Optional(Type.Enum(["committed", "queued"])), authoritative: OptionalBoolean() }, { additionalProperties: true }), scopes: ["messages:write"], providers: ALL_PROVIDERS, mcp: { name: "send" }, http: { method: "POST", path: "/v2/messages", successStatus: 201 }, cli: { command: "send", aliases: ["post"], options: ["source", "project", "type", "kind", "category", "content", "content-type", "data", "payload", "payload-mime", "payload-ref", "payload-ciphertext", "target", "target-agent", "target-agents", "thread-id", "reply-to-id", "correlation-id", "causation-id", "priority", "expires-at", "idempotency-key", "atrib-receipt-id", "informed-by", "metadata", "delivery-mode", "delivery-policy", "delivery-max-attempts", "retry-base-ms", "retry-max-ms", "retry-jitter", "not-before", "message-id", "queue-only"] } }),
|
|
369
369
|
operation({ id: "history", summary: "Read visible messages after an opaque cursor.", request: HistoryRequestSchema, response: MessagePageSchema, scopes: ["messages:read"], providers: ALL_PROVIDERS, mcp: { name: "history" }, http: { method: "GET", path: "/v2/history", queryAliases: { unacknowledgedBy: ["unacked_by"] } }, cli: { command: "history", aliases: ["inbox", "sent"], options: HistoryCliOptions, variants: [{ command: "get", condition: { kind: "always" }, routesTo: "history", options: HistoryCliOptions, response: Type.Array(LegacyGetRowSchema) }] } }),
|
|
370
370
|
operation({ id: "record_receipt", summary: "Record caller-bound inbox read receipts.", request: Type.Object({ messageIds: Type.Array(Type.String(), { minItems: 1, maxItems: 200 }) }, { additionalProperties: false }), response: Type.Object({ recorded: Type.Number() }, { additionalProperties: true }), scopes: ["receipts:write"], providers: ALL_PROVIDERS, http: { method: "POST", path: "/v2/receipts" }, cli: { command: "acknowledge", aliases: ["receipt"], options: ["ids"], response: ReceiptCliResponseSchema, variants: [{ command: "ack", condition: { kind: "option-present", option: "ids" }, routesTo: "record_receipt", options: ["ids"], response: ReceiptCliResponseSchema }] } }),
|
|
371
371
|
operation({ id: "claim_delivery", summary: "Atomically claim the next targeted delivery, or one eligible message when requested.", request: Type.Object({ leaseMs: OptionalNumber(), messageId: Type.Optional(Type.String({ pattern: UUID_PATTERN })), maxAttempts: OptionalNumber() }, { additionalProperties: false }), response: ClaimResponseSchema, scopes: ["deliveries:claim"], providers: DELIVERY_PROVIDERS, mcp: { name: "claim" }, http: { method: "POST", path: "/v2/deliveries/claim" }, cli: { command: "claim", options: ["lease-ms", "message-id", "max-attempts"], response: Type.Union([Type.Object({ delivery: DeliverySchema, leaseToken: Type.String() }, { additionalProperties: true }), Type.Null()]) } }),
|
|
@@ -474,7 +474,7 @@ function capabilityDocument(context = { surface: "http", provider: "gateway" })
|
|
|
474
474
|
scopeEnforcement: context.provider === "gateway" ? SCOPE_ENFORCEMENT : false,
|
|
475
475
|
requestAuthority: context.provider === "gateway" && context.requestAuthority === true,
|
|
476
476
|
rowIsolation: context.provider === "gateway" && context.requestAuthority === true && context.rowIsolation === true,
|
|
477
|
-
authorizationModel: context.provider === "gateway" ? "scoped-credential" :
|
|
477
|
+
authorizationModel: context.provider === "gateway" ? "scoped-credential" : "process-identity",
|
|
478
478
|
surface: context.surface,
|
|
479
479
|
provider: context.provider,
|
|
480
480
|
operations: availableOperations(context).map(({ request: _request, response, providers: _providers, scopes, cli, ...entry }) => ({
|
|
@@ -535,4 +535,4 @@ export {
|
|
|
535
535
|
capabilityDocument,
|
|
536
536
|
negotiateProtocolVersion
|
|
537
537
|
};
|
|
538
|
-
//# sourceMappingURL=chunk-
|
|
538
|
+
//# sourceMappingURL=chunk-62C63PIE.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/contracts/registry.ts"],"sourcesContent":["import Type, { type TSchema } from \"@sinclair/typebox\";\nimport { Check, Errors } from \"@sinclair/typebox/value\";\n\nexport const PROTOCOL_VERSION = \"2.1\";\nexport const LEGACY_PROTOCOL_VERSION = \"2.0\";\nexport const SUPPORTED_PROTOCOL_VERSIONS = [LEGACY_PROTOCOL_VERSION, PROTOCOL_VERSION] as const;\nexport const SUPPORTED_PROTOCOL_RANGE = SUPPORTED_PROTOCOL_VERSIONS.join(\",\");\nexport const PROTOCOL_HEADER = \"x-agent-bridge-protocol-version\";\nexport const SUPPORTED_PROTOCOL_HEADER = \"x-agent-bridge-supported-protocol-versions\";\nexport const SCOPE_ENFORCEMENT = true;\n\nconst StringArray = Type.Array(Type.String());\nconst Empty = Type.Object({}, { additionalProperties: false });\nconst OptionalString = () => Type.Optional(Type.String());\nconst OptionalNumber = (options: Record<string, unknown> = {}) => Type.Optional(Type.Number(options));\nconst OptionalBoolean = () => Type.Optional(Type.Boolean());\nconst NullableString = () => Type.Union([Type.String(), Type.Null()]);\nconst NullableNumber = () => Type.Union([Type.Number(), Type.Null()]);\nconst UUID_PATTERN = \"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$\";\nconst UUID_V7_PATTERN = \"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-7[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$\";\n\nexport const ErrorIssueSchema = Type.Object({\n path: Type.String(),\n message: Type.String(),\n}, { additionalProperties: true });\n\nexport const ErrorEnvelopeSchema = Type.Object({\n error: Type.Object({\n code: Type.String(),\n requestId: Type.String(),\n message: OptionalString(),\n operation: OptionalString(),\n issues: Type.Optional(Type.Array(ErrorIssueSchema)),\n details: Type.Optional(Type.Any()),\n supportedProtocolVersions: Type.Optional(StringArray),\n }, { additionalProperties: true }),\n}, { additionalProperties: true });\n\nconst DeliveryPolicySchema = Type.Union([\n Type.Object({ mode: Type.Literal(\"mailbox\") }, { additionalProperties: false }),\n Type.Object({\n mode: Type.Literal(\"leased\"),\n maxAttempts: Type.Number(),\n retryBaseDelayMs: Type.Number(),\n retryMaxDelayMs: Type.Number(),\n retryJitterRatio: Type.Number(),\n notBefore: OptionalString(),\n }, { additionalProperties: false }),\n]);\n\nconst DeliveryPolicyInputSchema = Type.Object({\n mode: Type.Optional(Type.Enum([\"mailbox\", \"leased\"])),\n maxAttempts: OptionalNumber(),\n retryBaseDelayMs: OptionalNumber(),\n retryMaxDelayMs: OptionalNumber(),\n retryJitterRatio: OptionalNumber(),\n notBefore: OptionalString(),\n}, { additionalProperties: false });\n\nconst MessageDraftSchema = Type.Object({\n id: Type.Optional(Type.String({ pattern: UUID_V7_PATTERN })),\n source: OptionalString(),\n project: OptionalString(),\n type: Type.String(),\n content: Type.String(),\n contentType: OptionalString(),\n data: Type.Optional(Type.Any()),\n targets: Type.Optional(StringArray),\n threadId: OptionalString(),\n replyToId: OptionalString(),\n correlationId: OptionalString(),\n causationId: OptionalString(),\n priority: Type.Optional(Type.Enum([\"info\", \"high\", \"urgent\"])),\n expiresAt: OptionalString(),\n idempotencyKey: OptionalString(),\n atribReceiptId: OptionalString(),\n informedBy: Type.Optional(StringArray),\n metadata: Type.Optional(Type.Any()),\n deliveryPolicy: Type.Optional(DeliveryPolicyInputSchema),\n}, { additionalProperties: false });\n\n// Exact field set released by package 0.2.0 at d8184fe. A headerless\n// gateway response selects this wire contract, not the current one.\nexport const LegacyMessageDraftSchema = Type.Object({\n id: OptionalString(), source: OptionalString(), type: Type.String(), content: Type.String(),\n contentType: OptionalString(), data: Type.Optional(Type.Any()), targets: Type.Optional(StringArray),\n threadId: OptionalString(), replyToId: OptionalString(), correlationId: OptionalString(),\n causationId: OptionalString(), priority: Type.Optional(Type.Enum([\"info\", \"high\", \"urgent\"])),\n expiresAt: OptionalString(), idempotencyKey: OptionalString(), atribReceiptId: OptionalString(),\n informedBy: Type.Optional(StringArray), metadata: Type.Optional(Type.Any()),\n}, { additionalProperties: false });\n\nconst MessageSchema = Type.Object({\n id: Type.String(),\n workspace: Type.String(),\n project: OptionalString(),\n source: Type.String(),\n type: Type.String(),\n content: Type.String(),\n contentType: Type.String(),\n sequence: Type.String(),\n createdAt: Type.String(),\n data: Type.Optional(Type.Any()),\n targets: StringArray,\n threadId: OptionalString(),\n replyToId: OptionalString(),\n correlationId: OptionalString(),\n causationId: OptionalString(),\n priority: Type.Enum([\"info\", \"high\", \"urgent\"]),\n expiresAt: OptionalString(),\n idempotencyKey: OptionalString(),\n atribReceiptId: OptionalString(),\n informedBy: Type.Optional(StringArray),\n metadata: Type.Optional(Type.Any()),\n deliveryPolicy: DeliveryPolicySchema,\n}, { additionalProperties: true });\n\nexport const LegacyMessageSchema = Type.Object({\n id: Type.String(), workspace: Type.String(), source: Type.String(), type: Type.String(),\n content: Type.String(), contentType: Type.String(), sequence: Type.String(), createdAt: Type.String(),\n data: Type.Optional(Type.Any()), targets: StringArray, threadId: OptionalString(), replyToId: OptionalString(),\n correlationId: OptionalString(), causationId: OptionalString(), priority: Type.Enum([\"info\", \"high\", \"urgent\"]),\n expiresAt: OptionalString(), idempotencyKey: OptionalString(), atribReceiptId: OptionalString(),\n informedBy: Type.Optional(StringArray), metadata: Type.Optional(Type.Any()),\n}, { additionalProperties: true });\n\nconst DeliveryStateSchema = Type.Enum([\"pending\", \"claimed\", \"acked\", \"retrying\", \"dead\", \"cancelled\"]);\nconst DeliveryActionSchema = Type.Enum([\"created\", \"claim\", \"ack\", \"nack_retry\", \"nack_dead\", \"lease_expired\", \"attempts_exhausted\", \"message_expired\", \"cancel\", \"requeue\"]);\nconst DeliverySchema = Type.Object({\n id: Type.String(),\n messageId: Type.String(),\n workspace: Type.String(),\n recipient: Type.String(),\n state: DeliveryStateSchema,\n attempt: Type.Number(),\n cycleAttempt: Type.Number(),\n requeueCount: Type.Number(),\n createdAt: Type.String(),\n priorityRank: Type.Number(),\n availableAt: Type.String(),\n leaseToken: OptionalString(),\n leaseOwner: OptionalString(),\n leaseExpiresAt: OptionalString(),\n lastError: OptionalString(),\n lastActor: OptionalString(),\n lastAction: DeliveryActionSchema,\n}, { additionalProperties: true });\n\nexport const LegacyDeliverySchema = Type.Object({\n id: Type.String(), messageId: Type.String(), workspace: Type.String(), recipient: Type.String(),\n state: Type.Enum([\"pending\", \"claimed\", \"acked\", \"retrying\", \"dead\"]), attempt: Type.Number(),\n availableAt: Type.String(), leaseToken: OptionalString(), leaseOwner: OptionalString(),\n leaseExpiresAt: OptionalString(), lastError: OptionalString(),\n}, { additionalProperties: true });\n\nconst DeliveryEventSchema = Type.Object({\n sequence: Type.String(),\n deliveryId: Type.String(),\n messageId: Type.String(),\n workspace: Type.String(),\n recipient: Type.String(),\n fromState: Type.Optional(DeliveryStateSchema),\n toState: DeliveryStateSchema,\n attempt: Type.Number(),\n cycleAttempt: Type.Number(),\n requeueCount: Type.Number(),\n leaseOwner: OptionalString(),\n error: OptionalString(),\n actor: Type.String(),\n action: DeliveryActionSchema,\n createdAt: Type.String(),\n}, { additionalProperties: true });\n\nconst PresenceSchema = Type.Object({\n workspace: Type.String(),\n agent: Type.String(),\n instance: Type.String(),\n runtimeType: OptionalString(),\n capabilities: StringArray,\n leaseExpiresAt: Type.String(),\n lastSeenAt: Type.String(),\n}, { additionalProperties: true });\n\nconst DeliveryDiagnosticsProperties = {\n schemaVersion: Type.Enum([\"local-v2\", \"postgres-v2\"]),\n deliverySupported: Type.Boolean(),\n pending: NullableNumber(),\n claimed: NullableNumber(),\n retrying: NullableNumber(),\n dead: NullableNumber(),\n cancelled: Type.Optional(NullableNumber()),\n oldestAvailableAt: OptionalString(),\n due: Type.Optional(NullableNumber()),\n scheduled: Type.Optional(NullableNumber()),\n expiredLeases: Type.Optional(NullableNumber()),\n oldestDueAt: OptionalString(),\n queueLagMs: Type.Optional(NullableNumber()),\n gatewayAuthorityId: OptionalString(),\n credentialId: OptionalString(),\n principal: Type.Optional(Type.Object({ workspace: Type.String(), agent: Type.String() }, { additionalProperties: true })),\n} as const;\n\nconst DiagnosticsSchema = Type.Object(DeliveryDiagnosticsProperties, { additionalProperties: true });\n\nconst ClientDiagnosticsSchema = Type.Object({\n ...DeliveryDiagnosticsProperties,\n remoteReachable: Type.Optional(Type.Union([Type.Boolean(), Type.Null()])),\n outboxPending: OptionalNumber(),\n outboxBlocked: OptionalNumber(),\n cachedMessages: OptionalNumber(),\n lastSyncAt: OptionalString(),\n lastSyncError: OptionalString(),\n outboxDue: OptionalNumber(),\n outboxScheduled: OptionalNumber(),\n outboxLeased: OptionalNumber(),\n outboxOldestDueAt: OptionalString(),\n outboxQueueLagMs: OptionalNumber(),\n outboxOldestBlockedAt: OptionalString(),\n outboxBlockedAgeMs: Type.Optional(NullableNumber()),\n outboxBlockedMaxAttempts: OptionalNumber(),\n outboxBlockedLastError: OptionalString(),\n outboxNextRetryAt: OptionalString(),\n lastOutboundSyncAt: OptionalString(),\n lastInboundSyncAt: OptionalString(),\n lastSyncAttemptAt: OptionalString(),\n syncLoopState: Type.Optional(Type.Enum([\"disabled\", \"idle\", \"running\", \"backoff\", \"paused\", \"stopped\", \"failed\"])),\n syncLoopError: OptionalString(),\n remoteError: OptionalString(),\n migrationState: Type.Optional(Type.Enum([\"active\", \"draining\", \"retired\"])),\n migrationOperationId: OptionalString(),\n migrationLeaseExpiresAt: OptionalString(),\n}, { additionalProperties: true });\n\nconst ClientStatusSchema = Type.Object({\n status: Type.Enum([\"ok\", \"unknown\", \"degraded\", \"failed\"]),\n localHealthy: Type.Boolean(),\n connected: Type.Boolean(),\n remoteReachable: Type.Union([Type.Boolean(), Type.Null()]),\n provider: Type.Enum([\"local\", \"gateway\"]),\n workspace: Type.String(),\n agent: Type.String(),\n instance: Type.Union([Type.String(), Type.Null()]),\n schemaVersion: Type.Enum([\"local-v2\", \"postgres-v2\"]),\n endpoint: Type.Union([Type.String(), Type.Null()]),\n database: Type.Union([Type.String(), Type.Null()]),\n cursorPath: Type.String(),\n lastCursor: Type.Union([Type.String(), Type.Null()]),\n queue: ClientDiagnosticsSchema,\n checks: Type.Array(Type.Object({\n name: Type.String(),\n status: Type.Enum([\"ok\", \"unknown\", \"degraded\", \"failed\"]),\n message: Type.String(),\n }, { additionalProperties: false })),\n}, { additionalProperties: true });\n\nconst HistoryRequestSchema = Type.Object({\n cursor: OptionalString(),\n limit: OptionalNumber({ minimum: 1, maximum: 200 }),\n types: Type.Optional(StringArray),\n mailbox: Type.Optional(Type.Enum([\"inbox\", \"sent\", \"all\"])),\n receiptState: Type.Optional(Type.Enum([\"any\", \"unread\", \"read\"])),\n includeExpired: OptionalBoolean(),\n source: OptionalString(),\n project: OptionalString(),\n since: OptionalString(),\n unacknowledgedBy: OptionalString(),\n threadId: OptionalString(),\n latest: OptionalBoolean(),\n}, { additionalProperties: false });\n\nconst MessagePageSchema = Type.Object({\n messages: Type.Array(MessageSchema),\n cursor: OptionalString(),\n source: Type.Optional(Type.Enum([\"remote\", \"cache\"])),\n stale: OptionalBoolean(),\n degraded: OptionalBoolean(),\n acknowledgements: Type.Optional(Type.Enum([\"authoritative\", \"unknown\"])),\n lastSyncedAt: OptionalString(),\n}, { additionalProperties: true });\n\nconst DeliveryPageSchema = Type.Object({ deliveries: Type.Array(DeliverySchema), cursor: OptionalString() }, { additionalProperties: true });\nconst DeliveryEventPageSchema = Type.Object({ events: Type.Array(DeliveryEventSchema), cursor: OptionalString() }, { additionalProperties: true });\nconst DeliveryIdSchema = Type.Object({ deliveryId: Type.String() }, { additionalProperties: false });\nconst LeaseSchema = Type.Object({ deliveryId: Type.String(), leaseToken: Type.String() }, { additionalProperties: false });\nconst RetryPolicySchema = Type.Object({\n maxAttempts: OptionalNumber(),\n baseDelayMs: OptionalNumber(),\n maxDelayMs: OptionalNumber(),\n jitterRatio: OptionalNumber(),\n}, { additionalProperties: false });\n\nconst NegativeAcknowledgeRequestSchema = Type.Object({\n deliveryId: Type.String(),\n leaseToken: Type.String(),\n error: Type.String(),\n disposition: Type.Optional(Type.Enum([\"retry\", \"dead\"])),\n dead: OptionalBoolean(),\n retryPolicy: Type.Optional(RetryPolicySchema),\n}, { additionalProperties: false });\n\nconst LegacyNegativeAcknowledgeRequestSchema = Type.Object({\n deliveryId: Type.String(),\n leaseToken: Type.String(),\n error: OptionalString(),\n disposition: Type.Optional(Type.Enum([\"retry\", \"dead\"])),\n dead: OptionalBoolean(),\n retryPolicy: Type.Optional(RetryPolicySchema),\n}, { additionalProperties: false });\n\nconst SyncResponseSchema = Type.Object({\n online: Type.Boolean(),\n pushed: Type.Number(),\n deduplicated: Type.Number(),\n pulled: Type.Number(),\n pending: Type.Number(),\n blocked: Type.Number(),\n cached: Type.Number(),\n cursor: Type.Optional(NullableString()),\n lastSyncedAt: Type.Optional(NullableString()),\n lastError: Type.Optional(NullableString()),\n failureRetryable: OptionalBoolean(),\n}, { additionalProperties: true });\n\nconst ClaimResponseSchema = Type.Object({\n delivery: Type.Union([DeliverySchema, Type.Null()]),\n leaseToken: OptionalString(),\n}, {\n additionalProperties: true,\n oneOf: [\n { properties: { delivery: { type: \"null\" }, leaseToken: false }, required: [\"delivery\"] },\n { properties: { delivery: DeliverySchema, leaseToken: { type: \"string\" } }, required: [\"delivery\", \"leaseToken\"] },\n ],\n});\n\nexport const AUTHORIZATION_SCOPES = [\n \"deliveries:claim\",\n \"deliveries:manage\",\n \"deliveries:read\",\n \"deliveries:settle\",\n \"gateway:metrics\",\n \"messages:read\",\n \"messages:write\",\n \"presence:read\",\n \"presence:write\",\n \"receipts:write\",\n \"status:read\",\n] as const;\n\nexport type AuthorizationScope = typeof AUTHORIZATION_SCOPES[number];\n\nexport type ContractProvider = \"local\" | \"gateway\";\nexport type ContractSurface = \"mcp\" | \"http\" | \"cli\";\nexport type OperationId =\n | \"capabilities\" | \"status\" | \"client_status\" | \"gateway_metrics\" | \"publish_message\" | \"history\"\n | \"issue_endpoint_migration_challenge\" | \"consume_endpoint_migration_challenge\"\n | \"record_receipt\" | \"claim_delivery\" | \"list_deliveries\" | \"list_delivery_events\"\n | \"cancel_delivery\" | \"requeue_delivery\" | \"extend_delivery\" | \"acknowledge_delivery\"\n | \"negative_acknowledge_delivery\" | \"heartbeat\" | \"presence\" | \"sync\";\n\nexport interface HttpContract {\n method: \"GET\" | \"POST\";\n path: string;\n successStatus?: 200 | 201;\n responseContentType?: \"application/json\" | \"text/plain\";\n queryAliases?: Readonly<Record<string, readonly string[]>>;\n}\n\nexport interface CliContract {\n command: string;\n aliases?: readonly string[];\n options: readonly string[];\n response?: TSchema;\n variants?: readonly CliCompatibilityVariant[];\n}\n\nexport interface CliCompatibilityVariant {\n command: string;\n condition: { kind: \"always\" } | { kind: \"option-present\"; option: string };\n routesTo: OperationId;\n options: readonly string[];\n response: TSchema;\n}\n\nexport interface OperationContract {\n id: OperationId;\n summary: string;\n request: TSchema;\n response: TSchema;\n scopes: readonly AuthorizationScope[];\n providers: readonly ContractProvider[];\n mcp?: { name: string };\n http?: HttpContract;\n cli?: CliContract;\n}\n\nconst ALL_PROVIDERS = [\"local\", \"gateway\"] as const;\nconst DELIVERY_PROVIDERS = [\"local\", \"gateway\"] as const;\nconst GATEWAY_PROVIDER = [\"gateway\"] as const;\nconst operation = (entry: OperationContract): OperationContract => entry;\nconst HistoryCliOptions = [\"cursor\", \"limit\", \"type\", \"category\", \"mailbox\", \"receipt-state\", \"source\", \"project\", \"since\", \"unacked-by\", \"thread-id\", \"latest\"] as const;\nconst LegacyGetRowSchema = Type.Object({\n id: Type.Union([Type.String(), Type.Number()]),\n source: Type.String(),\n category: Type.String(),\n content: Type.String(),\n priority: Type.Enum([\"info\", \"high\", \"urgent\"]),\n project: NullableString(),\n metadata: Type.Any(),\n created_at: Type.String(),\n}, { additionalProperties: false });\nconst ReceiptCliResponseSchema = Type.Object({\n acknowledged: Type.Number(),\n agent: Type.String(),\n}, { additionalProperties: true });\n\nexport const operations: readonly OperationContract[] = [\n operation({ id: \"capabilities\", summary: \"Discover operations available on the current surface.\", request: Empty, response: Type.Object({ protocolVersion: Type.String(), currentProtocolVersion: Type.String(), selectedProtocolVersion: Type.String(), supportedProtocolVersions: StringArray, scopeEnforcement: Type.Boolean(), requestAuthority: Type.Boolean(), rowIsolation: Type.Boolean(), authorizationModel: Type.Enum([\"scoped-credential\", \"credential-wide\", \"process-identity\"]), surface: Type.Enum([\"mcp\", \"http\", \"cli\"]), provider: Type.Enum([\"local\", \"gateway\"]), grantedScopes: Type.Optional(StringArray), operations: Type.Array(Type.Object({ id: Type.String(), summary: Type.String(), requiredScopes: StringArray, mcp: Type.Optional(Type.Any()), http: Type.Optional(Type.Any()), cli: Type.Optional(Type.Any()) }, { additionalProperties: true })) }, { additionalProperties: true }), scopes: [], providers: ALL_PROVIDERS, mcp: { name: \"capabilities\" }, http: { method: \"GET\", path: \"/v2/capabilities\" }, cli: { command: \"capabilities\", options: [] } }),\n operation({ id: \"status\", summary: \"Read gateway delivery diagnostics.\", request: Empty, response: DiagnosticsSchema, scopes: [\"status:read\"], providers: ALL_PROVIDERS, http: { method: \"GET\", path: \"/v2/status\" } }),\n operation({ id: \"issue_endpoint_migration_challenge\", summary: \"Issue a short-lived endpoint migration challenge commitment.\", request: Type.Object({ challenge: Type.String({ pattern: \"^[0-9a-f]{64}$\" }), expectedGatewayAuthorityId: Type.String({ pattern: UUID_PATTERN }), verifierCredentialId: Type.String({ pattern: UUID_PATTERN }) }, { additionalProperties: false }), response: Type.Object({ gatewayAuthorityId: Type.String(), issuerCredentialId: Type.String(), verifierCredentialId: Type.String(), expiresAt: Type.String() }, { additionalProperties: false }), scopes: [], providers: GATEWAY_PROVIDER, http: { method: \"POST\", path: \"/v2/endpoint-migration-challenges\" } }),\n operation({ id: \"consume_endpoint_migration_challenge\", summary: \"Consume a short-lived endpoint migration challenge commitment.\", request: Type.Object({ challenge: Type.String({ pattern: \"^[0-9a-f]{64}$\" }), expectedGatewayAuthorityId: Type.String({ pattern: UUID_PATTERN }), issuerCredentialId: Type.String({ pattern: UUID_PATTERN }) }, { additionalProperties: false }), response: Type.Object({ gatewayAuthorityId: Type.String(), issuerCredentialId: Type.String(), verifierCredentialId: Type.String(), expiresAt: Type.Union([Type.String(), Type.Null()]), consumed: Type.Boolean() }, { additionalProperties: false }), scopes: [], providers: GATEWAY_PROVIDER, http: { method: \"POST\", path: \"/v2/endpoint-migration-challenges/consume\" } }),\n operation({ id: \"client_status\", summary: \"Read client connectivity and provider diagnostics.\", request: Empty, response: ClientStatusSchema, scopes: [\"status:read\"], providers: ALL_PROVIDERS, cli: { command: \"status\", aliases: [\"doctor\"], options: [] } }),\n operation({ id: \"gateway_metrics\", summary: \"Read Prometheus gateway counters.\", request: Empty, response: Type.String(), scopes: [\"gateway:metrics\"], providers: GATEWAY_PROVIDER, http: { method: \"GET\", path: \"/metrics\", responseContentType: \"text/plain\" } }),\n operation({ id: \"publish_message\", summary: \"Create an immutable Agent Bridge v2 message.\", request: MessageDraftSchema, response: Type.Object({ created: Type.Boolean(), message: MessageSchema, disposition: Type.Optional(Type.Enum([\"committed\", \"queued\"])), authoritative: OptionalBoolean() }, { additionalProperties: true }), scopes: [\"messages:write\"], providers: ALL_PROVIDERS, mcp: { name: \"send\" }, http: { method: \"POST\", path: \"/v2/messages\", successStatus: 201 }, cli: { command: \"send\", aliases: [\"post\"], options: [\"source\", \"project\", \"type\", \"kind\", \"category\", \"content\", \"content-type\", \"data\", \"payload\", \"payload-mime\", \"payload-ref\", \"payload-ciphertext\", \"target\", \"target-agent\", \"target-agents\", \"thread-id\", \"reply-to-id\", \"correlation-id\", \"causation-id\", \"priority\", \"expires-at\", \"idempotency-key\", \"atrib-receipt-id\", \"informed-by\", \"metadata\", \"delivery-mode\", \"delivery-policy\", \"delivery-max-attempts\", \"retry-base-ms\", \"retry-max-ms\", \"retry-jitter\", \"not-before\", \"message-id\", \"queue-only\"] } }),\n operation({ id: \"history\", summary: \"Read visible messages after an opaque cursor.\", request: HistoryRequestSchema, response: MessagePageSchema, scopes: [\"messages:read\"], providers: ALL_PROVIDERS, mcp: { name: \"history\" }, http: { method: \"GET\", path: \"/v2/history\", queryAliases: { unacknowledgedBy: [\"unacked_by\"] } }, cli: { command: \"history\", aliases: [\"inbox\", \"sent\"], options: HistoryCliOptions, variants: [{ command: \"get\", condition: { kind: \"always\" }, routesTo: \"history\", options: HistoryCliOptions, response: Type.Array(LegacyGetRowSchema) }] } }),\n operation({ id: \"record_receipt\", summary: \"Record caller-bound inbox read receipts.\", request: Type.Object({ messageIds: Type.Array(Type.String(), { minItems: 1, maxItems: 200 }) }, { additionalProperties: false }), response: Type.Object({ recorded: Type.Number() }, { additionalProperties: true }), scopes: [\"receipts:write\"], providers: ALL_PROVIDERS, http: { method: \"POST\", path: \"/v2/receipts\" }, cli: { command: \"acknowledge\", aliases: [\"receipt\"], options: [\"ids\"], response: ReceiptCliResponseSchema, variants: [{ command: \"ack\", condition: { kind: \"option-present\", option: \"ids\" }, routesTo: \"record_receipt\", options: [\"ids\"], response: ReceiptCliResponseSchema }] } }),\n operation({ id: \"claim_delivery\", summary: \"Atomically claim the next targeted delivery, or one eligible message when requested.\", request: Type.Object({ leaseMs: OptionalNumber(), messageId: Type.Optional(Type.String({ pattern: UUID_PATTERN })), maxAttempts: OptionalNumber() }, { additionalProperties: false }), response: ClaimResponseSchema, scopes: [\"deliveries:claim\"], providers: DELIVERY_PROVIDERS, mcp: { name: \"claim\" }, http: { method: \"POST\", path: \"/v2/deliveries/claim\" }, cli: { command: \"claim\", options: [\"lease-ms\", \"message-id\", \"max-attempts\"], response: Type.Union([Type.Object({ delivery: DeliverySchema, leaseToken: Type.String() }, { additionalProperties: true }), Type.Null()]) } }),\n operation({ id: \"list_deliveries\", summary: \"List caller-visible deliveries.\", request: Type.Object({ cursor: OptionalString(), limit: OptionalNumber(), role: Type.Optional(Type.Enum([\"recipient\", \"publisher\", \"all\"])), messageId: OptionalString(), recipient: OptionalString(), states: Type.Optional(Type.Array(DeliveryStateSchema)) }, { additionalProperties: false }), response: DeliveryPageSchema, scopes: [\"deliveries:read\"], providers: DELIVERY_PROVIDERS, mcp: { name: \"list_deliveries\" }, http: { method: \"GET\", path: \"/v2/deliveries\" }, cli: { command: \"deliveries\", aliases: [\"dead-letters\"], options: [\"cursor\", \"limit\", \"role\", \"message-id\", \"recipient\", \"state\"] } }),\n operation({ id: \"list_delivery_events\", summary: \"List the append-only event history for a delivery.\", request: Type.Object({ deliveryId: Type.String(), cursor: OptionalString(), limit: OptionalNumber() }, { additionalProperties: false }), response: DeliveryEventPageSchema, scopes: [\"deliveries:read\"], providers: DELIVERY_PROVIDERS, mcp: { name: \"list_delivery_events\" }, http: { method: \"GET\", path: \"/v2/deliveries/{deliveryId}/events\" }, cli: { command: \"delivery-events\", options: [\"delivery-id\", \"cursor\", \"limit\"] } }),\n operation({ id: \"cancel_delivery\", summary: \"Cancel a delivery as its publisher.\", request: DeliveryIdSchema, response: Type.Object({ delivery: Type.Union([DeliverySchema, Type.Null()]) }, { additionalProperties: true }), scopes: [\"deliveries:manage\"], providers: DELIVERY_PROVIDERS, mcp: { name: \"cancel_delivery\" }, http: { method: \"POST\", path: \"/v2/deliveries/{deliveryId}/cancel\" }, cli: { command: \"cancel\", options: [\"delivery-id\"], response: Type.Union([DeliverySchema, Type.Null()]) } }),\n operation({ id: \"requeue_delivery\", summary: \"Requeue a delivery as its publisher.\", request: DeliveryIdSchema, response: Type.Object({ delivery: Type.Union([DeliverySchema, Type.Null()]) }, { additionalProperties: true }), scopes: [\"deliveries:manage\"], providers: DELIVERY_PROVIDERS, mcp: { name: \"requeue_delivery\" }, http: { method: \"POST\", path: \"/v2/deliveries/{deliveryId}/requeue\" }, cli: { command: \"requeue\", options: [\"delivery-id\"], response: Type.Union([DeliverySchema, Type.Null()]) } }),\n operation({ id: \"extend_delivery\", summary: \"Extend a claimed delivery lease.\", request: Type.Object({ deliveryId: Type.String(), leaseToken: Type.String(), leaseMs: Type.Number() }, { additionalProperties: false }), response: Type.Object({ delivery: Type.Union([DeliverySchema, Type.Null()]) }, { additionalProperties: true }), scopes: [\"deliveries:settle\"], providers: DELIVERY_PROVIDERS, mcp: { name: \"extend\" }, http: { method: \"POST\", path: \"/v2/deliveries/{deliveryId}/extend\" }, cli: { command: \"extend\", options: [\"delivery-id\", \"lease-token\", \"lease-ms\"], response: Type.Union([DeliverySchema, Type.Null()]) } }),\n operation({ id: \"acknowledge_delivery\", summary: \"Settle a claimed delivery successfully.\", request: LeaseSchema, response: Type.Object({ delivery: Type.Union([DeliverySchema, Type.Null()]) }, { additionalProperties: true }), scopes: [\"deliveries:settle\"], providers: DELIVERY_PROVIDERS, mcp: { name: \"acknowledge\" }, http: { method: \"POST\", path: \"/v2/deliveries/{deliveryId}/ack\" }, cli: { command: \"ack\", options: [\"delivery-id\", \"lease-token\"], response: Type.Union([DeliverySchema, Type.Null()]) } }),\n operation({ id: \"negative_acknowledge_delivery\", summary: \"Settle a claimed delivery for retry or dead letter.\", request: NegativeAcknowledgeRequestSchema, response: Type.Object({ delivery: Type.Union([DeliverySchema, Type.Null()]) }, { additionalProperties: true }), scopes: [\"deliveries:settle\"], providers: DELIVERY_PROVIDERS, mcp: { name: \"negative_acknowledge\" }, http: { method: \"POST\", path: \"/v2/deliveries/{deliveryId}/nack\" }, cli: { command: \"nack\", options: [\"delivery-id\", \"lease-token\", \"error\", \"disposition\", \"dead\"], response: Type.Union([DeliverySchema, Type.Null()]) } }),\n operation({ id: \"heartbeat\", summary: \"Publish a leased runtime presence record.\", request: Type.Object({ leaseMs: OptionalNumber({ minimum: 1000, maximum: 900000 }), runtimeType: OptionalString(), capabilities: Type.Optional(StringArray) }, { additionalProperties: false }), response: PresenceSchema, scopes: [\"presence:write\"], providers: DELIVERY_PROVIDERS, mcp: { name: \"heartbeat\" }, http: { method: \"POST\", path: \"/v2/presence/heartbeat\" }, cli: { command: \"join\", options: [\"lease-ms\", \"runtime\", \"capability\"] } }),\n operation({ id: \"presence\", summary: \"List active agent runtime instances.\", request: Empty, response: Type.Object({ agents: Type.Array(PresenceSchema) }, { additionalProperties: true }), scopes: [\"presence:read\"], providers: DELIVERY_PROVIDERS, mcp: { name: \"presence\" }, http: { method: \"GET\", path: \"/v2/presence\" }, cli: { command: \"presence\", options: [] } }),\n operation({ id: \"sync\", summary: \"Replay a gateway outbox and refresh its inbox cache.\", request: Type.Object({ maxPush: OptionalNumber(), maxPages: OptionalNumber() }, { additionalProperties: false }), response: SyncResponseSchema, scopes: [\"messages:write\", \"messages:read\"], providers: GATEWAY_PROVIDER, mcp: { name: \"sync\" }, cli: { command: \"sync\", options: [\"max-push\", \"max-pages\", \"limit\"] } }),\n];\n\nconst byId = new Map(operations.map((entry) => [entry.id, entry]));\n\nexport class ContractValidationError extends Error {\n readonly code = \"invalid_input\";\n readonly status = 400;\n constructor(readonly operation: string, readonly issues: readonly { path: string; message: string }[]) {\n super(`Request does not match the ${operation} schema`);\n }\n}\n\nexport class ContractResponseError extends Error {\n readonly code = \"protocol_mismatch\";\n readonly status = 502;\n constructor(readonly operation: string, readonly issues: readonly { path: string; message: string }[]) {\n super(`Response does not match the ${operation} schema`);\n }\n}\n\nfunction issues(schema: TSchema, value: unknown): readonly { path: string; message: string }[] {\n return [...Errors(schema, value)].map((entry) => ({ path: entry.instancePath || \"/\", message: entry.message }));\n}\n\nexport function operationContract(operationId: string): OperationContract {\n const contract = byId.get(operationId as OperationId);\n if (!contract) throw new Error(`Unknown operation contract: ${operationId}`);\n return contract;\n}\n\nexport function validateRequest(operationId: string, value: unknown): Record<string, unknown> {\n const contract = operationContract(operationId);\n if (!Check(contract.request, value)) throw new ContractValidationError(operationId, issues(contract.request, value));\n return value as Record<string, unknown>;\n}\n\nexport function validateRequestForProtocol(operationId: string, value: unknown, protocolVersion: string): Record<string, unknown> {\n if (protocolVersion === LEGACY_PROTOCOL_VERSION) {\n if (operationId === \"publish_message\") {\n if (!Check(LegacyMessageDraftSchema, value)) throw new ContractValidationError(operationId, issues(LegacyMessageDraftSchema, value));\n return value as Record<string, unknown>;\n }\n if ([\"list_deliveries\", \"list_delivery_events\", \"cancel_delivery\", \"requeue_delivery\", \"capabilities\"].includes(operationId)) {\n throw new ContractValidationError(operationId, [{ path: \"/\", message: `Operation is not supported by protocol ${LEGACY_PROTOCOL_VERSION}` }]);\n }\n if (operationId === \"history\" && value && typeof value === \"object\") {\n const unsupported = [\"mailbox\", \"receiptState\", \"project\"].find((field) => (value as Record<string, unknown>)[field] !== undefined);\n if (unsupported) throw new ContractValidationError(operationId, [{ path: `/${unsupported}`, message: `Field is not supported by protocol ${LEGACY_PROTOCOL_VERSION}` }]);\n }\n if (operationId === \"claim_delivery\" && value && typeof value === \"object\"\n && (value as Record<string, unknown>).messageId !== undefined) {\n throw new ContractValidationError(operationId, [{ path: \"/messageId\", message: `Field is not supported by protocol ${LEGACY_PROTOCOL_VERSION}` }]);\n }\n }\n if (operationId !== \"negative_acknowledge_delivery\" || protocolVersion !== LEGACY_PROTOCOL_VERSION) {\n return validateRequest(operationId, value);\n }\n if (!Check(LegacyNegativeAcknowledgeRequestSchema, value)) {\n throw new ContractValidationError(operationId, issues(LegacyNegativeAcknowledgeRequestSchema, value));\n }\n return value as Record<string, unknown>;\n}\n\nexport function parseResponse(operationId: string, value: unknown): unknown {\n const contract = operationContract(operationId);\n const serialized = JSON.stringify(value);\n const wireValue = serialized === undefined ? value : JSON.parse(serialized);\n if (!Check(contract.response, wireValue)) throw new ContractResponseError(operationId, issues(contract.response, wireValue));\n return wireValue;\n}\n\nexport function parseResponseForProtocol(operationId: string, value: unknown, protocolVersion: string): unknown {\n if (protocolVersion !== LEGACY_PROTOCOL_VERSION) return parseResponse(operationId, value);\n let schema: TSchema | undefined;\n let normalized = value;\n if (operationId === \"publish_message\") schema = Type.Object({ created: Type.Boolean(), message: LegacyMessageSchema }, { additionalProperties: true });\n else if (operationId === \"history\") schema = Type.Object({ messages: Type.Array(LegacyMessageSchema), cursor: OptionalString() }, { additionalProperties: true });\n else if (operationId === \"claim_delivery\") {\n schema = Type.Union([Type.Object({ delivery: LegacyDeliverySchema, leaseToken: Type.String() }, { additionalProperties: true }), Type.Null()]);\n normalized = value === null ? { delivery: null } : value;\n } else if ([\"extend_delivery\", \"acknowledge_delivery\", \"negative_acknowledge_delivery\"].includes(operationId)) {\n schema = LegacyDeliverySchema;\n normalized = { delivery: value };\n }\n if (!schema) return parseResponse(operationId, value);\n if (!Check(schema, value)) throw new ContractResponseError(operationId, issues(schema, value));\n return normalized;\n}\n\nexport function parseCliResponse(\n operationId: string,\n value: unknown,\n invocation?: { command: string; optionNames?: readonly string[] },\n): unknown {\n const contract = operationContract(operationId);\n const optionNames = new Set(invocation?.optionNames ?? []);\n const variant = contract.cli?.variants?.find((entry) =>\n entry.command === invocation?.command && cliVariantMatches(entry, optionNames));\n const schema = variant?.response ?? contract.cli?.response ?? contract.response;\n const serialized = JSON.stringify(value);\n const wireValue = serialized === undefined ? value : JSON.parse(serialized);\n if (!Check(schema, wireValue)) throw new ContractResponseError(operationId, issues(schema, wireValue));\n return wireValue;\n}\n\nexport function availableOperations(context: { surface: ContractSurface; provider: ContractProvider }): readonly OperationContract[] {\n return operations.filter((entry) => entry.providers.includes(context.provider) && Boolean(entry[context.surface]));\n}\n\nexport function operationForMcp(name: string, provider: ContractProvider): OperationContract | undefined {\n return availableOperations({ surface: \"mcp\", provider }).find((entry) => entry.mcp?.name === name);\n}\n\nexport function operationForHttp(method: string, path: string): OperationContract | undefined {\n return availableOperations({ surface: \"http\", provider: \"gateway\" }).find((entry) => entry.http?.method === method && entry.http.path === path);\n}\n\nfunction cliVariantMatches(\n variant: CliCompatibilityVariant,\n optionNames: ReadonlySet<string>,\n): boolean {\n return variant.condition.kind === \"always\" || optionNames.has(variant.condition.option);\n}\n\nexport function operationForCli(\n command: string,\n provider: ContractProvider,\n optionNames: readonly string[] = [],\n): OperationContract | undefined {\n const selectedOptions = new Set(optionNames);\n return availableOperations({ surface: \"cli\", provider }).find((entry) =>\n entry.cli?.command === command ||\n entry.cli?.aliases?.includes(command) ||\n entry.cli?.variants?.some((variant) =>\n variant.command === command && cliVariantMatches(variant, selectedOptions)));\n}\n\nexport function capabilityDocument(context: { surface: ContractSurface; provider: ContractProvider; selectedProtocolVersion?: string; requestAuthority?: boolean; rowIsolation?: boolean } = { surface: \"http\", provider: \"gateway\" }) {\n const selectedProtocolVersion = context.selectedProtocolVersion ?? PROTOCOL_VERSION;\n return {\n protocolVersion: selectedProtocolVersion,\n currentProtocolVersion: PROTOCOL_VERSION,\n selectedProtocolVersion,\n supportedProtocolVersions: [...SUPPORTED_PROTOCOL_VERSIONS],\n scopeEnforcement: context.provider === \"gateway\" ? SCOPE_ENFORCEMENT : false,\n requestAuthority: context.provider === \"gateway\" && context.requestAuthority === true,\n rowIsolation: context.provider === \"gateway\" && context.requestAuthority === true && context.rowIsolation === true,\n authorizationModel: context.provider === \"gateway\"\n ? \"scoped-credential\"\n : \"process-identity\",\n surface: context.surface,\n provider: context.provider,\n operations: availableOperations(context).map(({ request: _request, response, providers: _providers, scopes, cli, ...entry }) => ({\n ...entry,\n ...(cli ? {\n cli: {\n command: cli.command,\n ...(cli.aliases ? { aliases: cli.aliases } : {}),\n options: cli.options,\n outputSchema: cli.response ?? response,\n ...(cli.variants ? {\n variants: cli.variants.map((variant) => ({\n command: variant.command,\n condition: variant.condition,\n routesTo: variant.routesTo,\n options: variant.options,\n outputSchema: variant.response,\n })),\n } : {}),\n },\n } : {}),\n requiredScopes: [...scopes],\n })),\n };\n}\n\nexport function negotiateProtocolVersion(value: string | string[] | undefined): string {\n const requested = Array.isArray(value) ? value[0] : value;\n if (requested === undefined || requested.trim() === \"\") return LEGACY_PROTOCOL_VERSION;\n if ((SUPPORTED_PROTOCOL_VERSIONS as readonly string[]).includes(requested.trim())) return requested.trim();\n const error = new Error(\"Unsupported Agent Bridge protocol version\") as Error & { status: number; code: string; supported: string };\n error.status = 426;\n error.code = \"unsupported_protocol_version\";\n error.supported = SUPPORTED_PROTOCOL_RANGE;\n throw error;\n}\n"],"mappings":"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","names":["operation","issues"]}
|
|
@@ -1,25 +1,24 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
|
-
|
|
3
|
+
legacyContextMetadata,
|
|
4
|
+
legacyNumericMessageId
|
|
5
|
+
} from "./chunk-23UDQZMT.js";
|
|
6
|
+
import {
|
|
4
7
|
resolveClientConfig
|
|
5
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-UKFRCP6X.js";
|
|
6
9
|
import {
|
|
7
10
|
createStore
|
|
8
|
-
} from "./chunk-
|
|
9
|
-
import {
|
|
10
|
-
legacyContextMetadata,
|
|
11
|
-
legacyNumericMessageId
|
|
12
|
-
} from "./chunk-Z6JP6MYD.js";
|
|
11
|
+
} from "./chunk-IMJ47WO4.js";
|
|
13
12
|
import {
|
|
14
13
|
BridgeService
|
|
15
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-4V2PFJEF.js";
|
|
16
15
|
import {
|
|
17
16
|
ContractValidationError,
|
|
18
17
|
availableOperations,
|
|
19
18
|
capabilityDocument,
|
|
20
19
|
parseResponse,
|
|
21
20
|
validateRequest
|
|
22
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-62C63PIE.js";
|
|
23
22
|
import {
|
|
24
23
|
BridgePrincipalMismatchError,
|
|
25
24
|
BridgeValidationError,
|
|
@@ -38,8 +37,6 @@ import {
|
|
|
38
37
|
ListToolsRequestSchema,
|
|
39
38
|
McpError
|
|
40
39
|
} from "@modelcontextprotocol/sdk/types.js";
|
|
41
|
-
import { homedir } from "os";
|
|
42
|
-
import { join } from "path";
|
|
43
40
|
|
|
44
41
|
// src/message-envelope.ts
|
|
45
42
|
var MESSAGE_ENVELOPE_SCHEMA = "agent-bridge.message-envelope.v1";
|
|
@@ -123,38 +120,6 @@ function mergeEnvelopeMetadata(metadataInput, envelope) {
|
|
|
123
120
|
message_envelope: envelope
|
|
124
121
|
};
|
|
125
122
|
}
|
|
126
|
-
function getEnvelope(row) {
|
|
127
|
-
if (!isRecord(row)) return void 0;
|
|
128
|
-
const metadata = row.metadata;
|
|
129
|
-
if (!isRecord(metadata)) return void 0;
|
|
130
|
-
const envelope = metadata.message_envelope;
|
|
131
|
-
return isRecord(envelope) ? envelope : void 0;
|
|
132
|
-
}
|
|
133
|
-
function rowMatchesMessageFilters(row, filters) {
|
|
134
|
-
const targetAgent = normalizeString(filters?.target_agent);
|
|
135
|
-
const threadId = normalizeString(filters?.thread_id);
|
|
136
|
-
const kind = normalizeString(filters?.kind);
|
|
137
|
-
if (!targetAgent && !threadId && !kind) return true;
|
|
138
|
-
const envelope = getEnvelope(row);
|
|
139
|
-
if (!envelope) {
|
|
140
|
-
return !threadId && !kind;
|
|
141
|
-
}
|
|
142
|
-
if (targetAgent) {
|
|
143
|
-
const targets = normalizeStringList(envelope.target_agents);
|
|
144
|
-
if (targets && !targets.includes(targetAgent)) return false;
|
|
145
|
-
}
|
|
146
|
-
if (threadId && normalizeString(envelope.thread_id) !== threadId) {
|
|
147
|
-
return false;
|
|
148
|
-
}
|
|
149
|
-
if (kind && normalizeString(envelope.kind) !== kind) {
|
|
150
|
-
return false;
|
|
151
|
-
}
|
|
152
|
-
return true;
|
|
153
|
-
}
|
|
154
|
-
function filterContextRows(rows, filters, limit) {
|
|
155
|
-
if (!Array.isArray(rows)) return rows;
|
|
156
|
-
return rows.filter((row) => rowMatchesMessageFilters(row, filters)).slice(0, limit);
|
|
157
|
-
}
|
|
158
123
|
|
|
159
124
|
// src/source-identity.ts
|
|
160
125
|
function normalizeSource(value) {
|
|
@@ -178,92 +143,32 @@ function resolvePostSource(requestedSource, configuredAgent) {
|
|
|
178
143
|
|
|
179
144
|
// src/server.ts
|
|
180
145
|
var MCP_IMPLEMENTATION_VERSION = "2.0.0";
|
|
181
|
-
function normalizedConfigValue(value) {
|
|
182
|
-
const trimmed = value?.trim();
|
|
183
|
-
return trimmed || void 0;
|
|
184
|
-
}
|
|
185
|
-
function defaultConfigPath(env) {
|
|
186
|
-
return normalizedConfigValue(env.AGENT_BRIDGE_CONFIG) ?? join(normalizedConfigValue(env.HOME) ?? homedir(), ".agent-bridge", "config");
|
|
187
|
-
}
|
|
188
146
|
function configFromEnv(env = process.env) {
|
|
189
|
-
const
|
|
190
|
-
const value = (key) => normalizedConfigValue(env[key]) ?? normalizedConfigValue(sharedFile[key]);
|
|
191
|
-
const runtimeAgent = normalizedConfigValue(env.AGENT_BRIDGE_AGENT);
|
|
192
|
-
const rawProvider = normalizedConfigValue(env.AGENT_BRIDGE_PROVIDER) ?? normalizedConfigValue(sharedFile.AGENT_BRIDGE_PROVIDER);
|
|
193
|
-
const provider = rawProvider === "legacy" || rawProvider === "supabase" ? "legacy-supabase" : rawProvider ?? (value("AGENT_BRIDGE_TOKEN") ? "gateway" : "legacy-supabase");
|
|
194
|
-
if (!["local", "gateway", "legacy-supabase"].includes(provider)) {
|
|
195
|
-
throw new Error(`Unsupported AGENT_BRIDGE_PROVIDER: ${rawProvider}`);
|
|
196
|
-
}
|
|
197
|
-
if (provider === "local" || provider === "gateway") {
|
|
198
|
-
const client = resolveClientConfig(env);
|
|
199
|
-
return {
|
|
200
|
-
provider: client.provider,
|
|
201
|
-
agent: client.principal.agent,
|
|
202
|
-
workspace: client.principal.workspace,
|
|
203
|
-
instance: client.principal.instance,
|
|
204
|
-
databasePath: client.databasePath,
|
|
205
|
-
edgeDatabasePath: client.edgeDatabasePath,
|
|
206
|
-
cursorPath: client.cursorPath,
|
|
207
|
-
gatewayUrl: client.provider === "gateway" ? client.url : void 0,
|
|
208
|
-
gatewayToken: client.provider === "gateway" ? client.credential : void 0
|
|
209
|
-
};
|
|
210
|
-
}
|
|
211
|
-
const supabaseUrl = value("AGENT_BRIDGE_URL");
|
|
212
|
-
const supabaseKey = value("AGENT_BRIDGE_KEY");
|
|
213
|
-
if (!supabaseUrl || !supabaseKey) {
|
|
214
|
-
throw new Error(
|
|
215
|
-
"Missing AGENT_BRIDGE_URL or AGENT_BRIDGE_KEY environment variables or ~/.agent-bridge/config"
|
|
216
|
-
);
|
|
217
|
-
}
|
|
147
|
+
const client = resolveClientConfig(env);
|
|
218
148
|
return {
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
const parsed = new URL(config.supabaseUrl);
|
|
229
|
-
const loopback = parsed.hostname === "localhost" || parsed.hostname === "127.0.0.1" || parsed.hostname === "[::1]";
|
|
230
|
-
if (parsed.protocol !== "https:" && !(parsed.protocol === "http:" && loopback)) {
|
|
231
|
-
throw new Error("Agent Bridge requires HTTPS for non-loopback legacy providers");
|
|
232
|
-
}
|
|
233
|
-
const restUrl = `${config.supabaseUrl.replace(/\/$/, "")}/rest/v1`;
|
|
234
|
-
const headers = {
|
|
235
|
-
apikey: config.supabaseKey,
|
|
236
|
-
Authorization: `Bearer ${config.supabaseKey}`,
|
|
237
|
-
"Content-Type": "application/json",
|
|
238
|
-
Prefer: "return=representation"
|
|
239
|
-
};
|
|
240
|
-
return async function supabaseRequest(path, options = {}) {
|
|
241
|
-
const url = `${restUrl}${path}`;
|
|
242
|
-
const res = await fetch(url, {
|
|
243
|
-
...options,
|
|
244
|
-
signal: options.signal ?? AbortSignal.timeout(1e4),
|
|
245
|
-
headers: { ...headers, ...options.headers }
|
|
246
|
-
});
|
|
247
|
-
if (!res.ok) {
|
|
248
|
-
throw new Error(`Supabase request failed (${res.status})`);
|
|
249
|
-
}
|
|
250
|
-
const text = await res.text();
|
|
251
|
-
return text ? JSON.parse(text) : null;
|
|
149
|
+
provider: client.provider,
|
|
150
|
+
agent: client.principal.agent,
|
|
151
|
+
workspace: client.principal.workspace,
|
|
152
|
+
instance: client.principal.instance,
|
|
153
|
+
databasePath: client.databasePath,
|
|
154
|
+
edgeDatabasePath: client.edgeDatabasePath,
|
|
155
|
+
cursorPath: client.cursorPath,
|
|
156
|
+
gatewayUrl: client.provider === "gateway" ? client.url : void 0,
|
|
157
|
+
gatewayToken: client.provider === "gateway" ? client.credential : void 0
|
|
252
158
|
};
|
|
253
159
|
}
|
|
254
160
|
function createAgentBridgeServer(config) {
|
|
255
|
-
const
|
|
256
|
-
const provider = config.provider ?? (config.gatewayToken ? "gateway" : config.supabaseUrl ? "legacy-supabase" : "local");
|
|
161
|
+
const provider = config.provider ?? (config.gatewayToken ? "gateway" : "local");
|
|
257
162
|
const principal = config.agent ? {
|
|
258
|
-
workspace:
|
|
163
|
+
workspace: config.workspace ?? "default",
|
|
259
164
|
agent: config.agent,
|
|
260
165
|
instance: config.instance
|
|
261
166
|
} : void 0;
|
|
262
167
|
const clientConfig = principal ? {
|
|
263
168
|
provider,
|
|
264
169
|
principal,
|
|
265
|
-
url: config.gatewayUrl
|
|
266
|
-
credential: config.gatewayToken
|
|
170
|
+
url: config.gatewayUrl,
|
|
171
|
+
credential: config.gatewayToken,
|
|
267
172
|
databasePath: config.databasePath ?? ":memory:",
|
|
268
173
|
edgeDatabasePath: config.edgeDatabasePath ?? config.databasePath ?? ":memory:",
|
|
269
174
|
cursorPath: config.cursorPath ?? "",
|
|
@@ -506,34 +411,12 @@ function createAgentBridgeServer(config) {
|
|
|
506
411
|
informedBy: Array.isArray(args?.informed_by) ? args.informed_by.map(String) : [],
|
|
507
412
|
metadata: mergeEnvelopeMetadata(args?.metadata, envelope)
|
|
508
413
|
});
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
content: draft.content,
|
|
513
|
-
priority: draft.priority,
|
|
514
|
-
project: draft.project ?? null,
|
|
515
|
-
metadata: draft.metadata
|
|
516
|
-
};
|
|
517
|
-
if (receiptId) {
|
|
518
|
-
body.atrib_receipt_id = receiptId;
|
|
519
|
-
}
|
|
520
|
-
if (!supabaseRequest) {
|
|
521
|
-
if (!service || !principal) throw new McpError(ErrorCode.InternalError, "bridge provider is not configured");
|
|
522
|
-
const result = await service.publish(principal, draft);
|
|
523
|
-
return { content: [{ type: "text", text: JSON.stringify(result) }], structuredContent: result };
|
|
524
|
-
}
|
|
525
|
-
if (!supabaseRequest) throw new McpError(ErrorCode.InternalError, "bridge provider is not configured");
|
|
526
|
-
const data = await supabaseRequest("/shared_context", {
|
|
527
|
-
method: "POST",
|
|
528
|
-
body: JSON.stringify(body)
|
|
529
|
-
});
|
|
530
|
-
return {
|
|
531
|
-
content: [{ type: "text", text: JSON.stringify(data, null, 2) }]
|
|
532
|
-
};
|
|
414
|
+
if (!service || !principal) throw new McpError(ErrorCode.InternalError, "bridge provider is not configured");
|
|
415
|
+
const result = await service.publish(principal, draft);
|
|
416
|
+
return { content: [{ type: "text", text: JSON.stringify(result) }], structuredContent: result };
|
|
533
417
|
}
|
|
534
418
|
case "get_context": {
|
|
535
419
|
const project = validateProject(args?.project);
|
|
536
|
-
const contextArgs = { ...args ?? {}, project };
|
|
537
420
|
const rawLimit = args?.limit;
|
|
538
421
|
if (rawLimit !== void 0 && (typeof rawLimit !== "number" || !Number.isSafeInteger(rawLimit) || rawLimit < 1 || rawLimit > 200)) {
|
|
539
422
|
throw new McpError(ErrorCode.InvalidParams, "limit must be between 1 and 200");
|
|
@@ -558,7 +441,7 @@ function createAgentBridgeServer(config) {
|
|
|
558
441
|
latest: true
|
|
559
442
|
});
|
|
560
443
|
const entries = result.messages.slice(0, requestedLimit).map((message) => ({
|
|
561
|
-
id:
|
|
444
|
+
id: message.id,
|
|
562
445
|
source: message.source,
|
|
563
446
|
category: message.type,
|
|
564
447
|
content: message.content,
|
|
@@ -587,40 +470,7 @@ function createAgentBridgeServer(config) {
|
|
|
587
470
|
structuredContent: { entries, ...cacheMetadata }
|
|
588
471
|
};
|
|
589
472
|
}
|
|
590
|
-
|
|
591
|
-
args?.target_agent || args?.thread_id || args?.kind
|
|
592
|
-
);
|
|
593
|
-
const fetchLimit = hasEnvelopeFilter ? Math.min(Math.max(requestedLimit * 5, 50), 200) : requestedLimit;
|
|
594
|
-
const params = [
|
|
595
|
-
"order=created_at.desc",
|
|
596
|
-
`limit=${fetchLimit}`
|
|
597
|
-
];
|
|
598
|
-
if (args?.since)
|
|
599
|
-
params.push(
|
|
600
|
-
`created_at=gte.${encodeURIComponent(String(args.since))}`
|
|
601
|
-
);
|
|
602
|
-
if (args?.source)
|
|
603
|
-
params.push(`source=eq.${encodeURIComponent(String(args.source))}`);
|
|
604
|
-
if (args?.category)
|
|
605
|
-
params.push(
|
|
606
|
-
`category=eq.${encodeURIComponent(String(args.category))}`
|
|
607
|
-
);
|
|
608
|
-
if (project)
|
|
609
|
-
params.push(`project=eq.${encodeURIComponent(project)}`);
|
|
610
|
-
const unackedBy = args?.unacked_by ?? config.agent;
|
|
611
|
-
if (unackedBy)
|
|
612
|
-
params.push(
|
|
613
|
-
`acked_by=not.cs.%7B${encodeURIComponent(String(unackedBy))}%7D`
|
|
614
|
-
);
|
|
615
|
-
if (!supabaseRequest) throw new McpError(ErrorCode.InternalError, "bridge provider is not configured");
|
|
616
|
-
const data = await supabaseRequest(
|
|
617
|
-
`/shared_context?${params.join("&")}`
|
|
618
|
-
);
|
|
619
|
-
const filtered = filterContextRows(data, contextArgs, requestedLimit);
|
|
620
|
-
return {
|
|
621
|
-
content: [{ type: "text", text: JSON.stringify(filtered, null, 2) }],
|
|
622
|
-
structuredContent: { entries: filtered }
|
|
623
|
-
};
|
|
473
|
+
throw new McpError(ErrorCode.InternalError, "bridge provider is not configured");
|
|
624
474
|
}
|
|
625
475
|
case "ack_context": {
|
|
626
476
|
const ids = args?.ids;
|
|
@@ -641,26 +491,13 @@ function createAgentBridgeServer(config) {
|
|
|
641
491
|
}
|
|
642
492
|
if (service && principal) {
|
|
643
493
|
if (!service || !principal) throw new McpError(ErrorCode.InternalError, "bridge provider is not configured");
|
|
644
|
-
const
|
|
645
|
-
const acknowledged = clientConfig?.provider === "legacy-supabase" && store?.recordLegacyReceipt && rawIds.every((id) => /^\d+$/.test(id)) ? await store.recordLegacyReceipt(rawIds, principal.agent) : await service.acknowledge(
|
|
494
|
+
const acknowledged = await service.acknowledge(
|
|
646
495
|
principal,
|
|
647
496
|
ids.map((id) => legacyNumericMessageId(id))
|
|
648
497
|
);
|
|
649
498
|
return { content: [{ type: "text", text: JSON.stringify({ acknowledged, agent }) }], structuredContent: { acknowledged, agent } };
|
|
650
499
|
}
|
|
651
|
-
|
|
652
|
-
const data = await supabaseRequest("/rpc/ack_context", {
|
|
653
|
-
method: "POST",
|
|
654
|
-
body: JSON.stringify({ entry_ids: ids.map(String), agent_name: agent })
|
|
655
|
-
});
|
|
656
|
-
return {
|
|
657
|
-
content: [
|
|
658
|
-
{
|
|
659
|
-
type: "text",
|
|
660
|
-
text: JSON.stringify({ acknowledged: data, agent })
|
|
661
|
-
}
|
|
662
|
-
]
|
|
663
|
-
};
|
|
500
|
+
throw new McpError(ErrorCode.InternalError, "bridge provider is not configured");
|
|
664
501
|
}
|
|
665
502
|
case "send": {
|
|
666
503
|
if (!service || !principal) throw new McpError(ErrorCode.InvalidParams, "AGENT_BRIDGE_AGENT is required");
|
|
@@ -796,4 +633,4 @@ export {
|
|
|
796
633
|
createAgentBridgeServer,
|
|
797
634
|
startServer
|
|
798
635
|
};
|
|
799
|
-
//# sourceMappingURL=chunk-
|
|
636
|
+
//# sourceMappingURL=chunk-AIALYLGQ.js.map
|