@finalai/final-agent-provider 0.8.0 → 0.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. package/HOSTING.md +3 -3
  2. package/README.md +7 -91
  3. package/dist/modules/channel-factories.d.mts +5 -6
  4. package/dist/modules/channel-factories.mjs +7 -11
  5. package/dist/modules/channel-factories.mjs.map +3 -3
  6. package/dist/modules/channels/inbound.mjs +2 -2
  7. package/dist/modules/channels/inbound.mjs.map +2 -2
  8. package/dist/modules/channels/index.d.mts +0 -7
  9. package/dist/modules/channels/index.mjs +0 -7
  10. package/dist/modules/channels/index.mjs.map +2 -2
  11. package/dist/modules/channels/prompt.d.mts +2 -2
  12. package/dist/modules/channels/prompt.mjs +3 -3
  13. package/dist/modules/channels/prompt.mjs.map +2 -2
  14. package/dist/modules/channels/routing.d.mts +1 -1
  15. package/dist/modules/channels/routing.mjs +1 -1
  16. package/dist/modules/channels/routing.mjs.map +1 -1
  17. package/package.json +4 -40
  18. package/dist/modules/channels/channel-utils.d.mts +0 -132
  19. package/dist/modules/channels/channel-utils.mjs +0 -445
  20. package/dist/modules/channels/channel-utils.mjs.map +0 -7
  21. package/dist/modules/channels/discord-dispatch.d.mts +0 -17
  22. package/dist/modules/channels/discord-dispatch.mjs +0 -139
  23. package/dist/modules/channels/discord-dispatch.mjs.map +0 -7
  24. package/dist/modules/channels/discord-gateway.d.mts +0 -19
  25. package/dist/modules/channels/discord-gateway.mjs +0 -233
  26. package/dist/modules/channels/discord-gateway.mjs.map +0 -7
  27. package/dist/modules/channels/discord.d.mts +0 -9
  28. package/dist/modules/channels/discord.mjs +0 -904
  29. package/dist/modules/channels/discord.mjs.map +0 -7
  30. package/dist/modules/channels/github.d.mts +0 -5
  31. package/dist/modules/channels/github.mjs +0 -720
  32. package/dist/modules/channels/github.mjs.map +0 -7
  33. package/dist/modules/channels/linear.d.mts +0 -4
  34. package/dist/modules/channels/linear.mjs +0 -621
  35. package/dist/modules/channels/linear.mjs.map +0 -7
  36. package/dist/modules/channels/phone.d.mts +0 -8
  37. package/dist/modules/channels/phone.mjs +0 -382
  38. package/dist/modules/channels/phone.mjs.map +0 -7
  39. package/dist/modules/channels/reply-receipts.d.mts +0 -31
  40. package/dist/modules/channels/reply-receipts.mjs +0 -63
  41. package/dist/modules/channels/reply-receipts.mjs.map +0 -7
  42. package/dist/modules/channels/slack.d.mts +0 -7
  43. package/dist/modules/channels/slack.mjs +0 -1134
  44. package/dist/modules/channels/slack.mjs.map +0 -7
  45. package/dist/modules/channels/voice-recording.d.mts +0 -7
  46. package/dist/modules/channels/voice-recording.mjs +0 -49
  47. package/dist/modules/channels/voice-recording.mjs.map +0 -7
  48. package/dist/modules/channels/voice.d.mts +0 -33
  49. package/dist/modules/channels/voice.mjs +0 -851
  50. package/dist/modules/channels/voice.mjs.map +0 -7
  51. package/dist/modules/channels/webhook.d.mts +0 -5
  52. package/dist/modules/channels/webhook.mjs +0 -76
  53. package/dist/modules/channels/webhook.mjs.map +0 -7
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../../../src/channels/github.ts"],
4
- "sourcesContent": ["import {\n defineChannel,\n packageRef,\n jsonValueSchema,\n type ChannelEventContextIface,\n type ChannelReceiveContextIface,\n type JsonObject,\n type JsonValue,\n type PlaceRef,\n type Refusal,\n} from '@finalai/agent-provider';\nimport * as z from 'zod';\nimport {\n deletedMirrorReceiptSchema,\n mirrorReceiptKey,\n settleMirrorReaction,\n shareReplyReceipt,\n type MirrorReactionResult,\n} from \"./reply-receipts.mjs\";\nimport {\n channelBaseUrl,\n providerPlaceKey,\n confirmOAuth,\n deliveryRetention,\n externalKey,\n inTenant,\n parseJson,\n personFor,\n receivePersonMessage,\n refString,\n responseJson,\n startOAuth,\n stateKey,\n takeOAuth,\n textOf,\n completionText,\n verifyHmac,\n} from \"./channel-utils.mjs\";\nconst configSchema = z.object({\n baseUrl: z.string().url().optional(),\n mention: z.string().default('final'),\n});\ntype Config = z.infer<typeof configSchema>;\nconst missingTarget = Symbol('missing GitHub target');\nconst api = async (\n ctx: Pick<ChannelReceiveContextIface<Config>, 'credentials'> &\n Partial<Pick<ChannelEventContextIface<Config>, 'origin'>>,\n path: string,\n body?: JsonObject,\n method?: string,\n) => {\n const app = await ctx.credentials.app({\n tenant: refString(ctx.origin?.ref, 'tenant') ?? ctx.origin?.place.tenant,\n });\n const response = await ctx.credentials.fetch(`https://api.github.com${path}`, {\n method: method ?? (body == null ? 'GET' : 'POST'),\n headers: {\n authorization: `Bearer ${app.accessToken}`,\n accept: 'application/vnd.github+json',\n 'x-github-api-version': '2022-11-28',\n 'content-type': 'application/json',\n },\n ...(body == null ? {} : { body: JSON.stringify(body) }),\n });\n if (response.status === 404 && path.includes('/collaborators/')) return { permission: 'none' };\n if (response.status === 404 && method === 'DELETE') {\n await response.text();\n return missingTarget;\n }\n if (response.status === 403) {\n const text = await response.text();\n throw new Error(`Channel request failed (403): ${text.slice(0, 500)}`, {\n cause: {\n status: 403,\n rateLimited:\n response.headers.get('x-ratelimit-remaining') === '0' ||\n response.headers.has('retry-after') ||\n /rate limit/i.test(text),\n },\n });\n }\n return responseJson(response);\n};\ninterface GitHubMirrorReactionArgsIface {\n ctx: ChannelEventContextIface<Config>;\n repo: string;\n target: number;\n cause: unknown;\n}\nconst classifyMirrorReaction = async (\n args: GitHubMirrorReactionArgsIface,\n): Promise<MirrorReactionResult> => {\n const failure = (cause: unknown) =>\n z\n .object({ status: z.number(), rateLimited: z.boolean().optional() })\n .safeParse(cause instanceof Error ? cause.cause : null);\n const error = failure(args.cause);\n if (!error.success) return 'retry';\n if (error.data.status === 403) return error.data.rateLimited === false ? 'unavailable' : 'retry';\n if (error.data.status !== 404) return 'retry';\n try {\n await api(args.ctx, `/repos/${args.repo}`);\n } catch (cause) {\n const denied = failure(cause);\n return denied.success &&\n (denied.data.status === 404 ||\n (denied.data.status === 403 && denied.data.rateLimited === false))\n ? 'unavailable'\n : 'retry';\n }\n try {\n await api(\n args.ctx,\n `/repos/${args.repo}/${args.ctx.origin.place.kind === 'review-thread' ? 'pulls' : 'issues'}/comments/${args.target}`,\n );\n return 'unavailable';\n } catch (cause) {\n const missing = failure(cause);\n return missing.success && missing.data.status === 404\n ? 'missing'\n : missing.success && missing.data.status === 403 && missing.data.rateLimited === false\n ? 'unavailable'\n : 'retry';\n }\n};\nconst commentText = (body: string): string =>\n body.length > 60_000 ? `${body.slice(0, 59_500)}\\n\\nContinue in Final \u2192` : body;\nconst commentSchema = z.object({\n action: z.string(),\n sender: z.object({ id: z.number(), login: z.string(), type: z.string().optional() }),\n repository: z.object({\n full_name: z.string(),\n owner: z.object({ login: z.string() }),\n name: z.string(),\n }),\n comment: z.object({\n id: z.number(),\n body: z.string(),\n html_url: z.string(),\n user: z.object({ id: z.number(), login: z.string() }),\n in_reply_to_id: z.number().optional(),\n }),\n issue: z\n .object({\n number: z.number(),\n title: z.string(),\n pull_request: z.object({ url: z.string() }).optional(),\n })\n .optional(),\n pull_request: z.object({ number: z.number(), title: z.string() }).optional(),\n});\nconst visibleMentionText = (text: string): string => {\n let fence: { marker: string; length: number } | null = null;\n const visible: string[] = [];\n for (const line of text.replace(/<!--[\\s\\S]*?(?:-->|$)/g, '').split('\\n')) {\n const marker = /^\\s{0,3}(`{3,}|~{3,})/.exec(line)?.[1];\n if (marker != null) {\n if (fence == null) fence = { marker: marker[0] ?? '`', length: marker.length };\n else if (marker[0] === fence.marker && marker.length >= fence.length) fence = null;\n continue;\n }\n if (fence != null || /^\\s*>|^(?: {4}|\\t)/.test(line)) continue;\n visible.push(line.replace(/(`+).*?\\1/g, ''));\n }\n return visible.join('\\n');\n};\nconst reactionReceiptSchema = z.object({\n id: z.number(),\n principals: z.array(z.string()),\n overflow: z.boolean(),\n owned: z.boolean().default(false),\n});\nconst replyKey = (\n ctx: ChannelEventContextIface<Config>,\n replyOf?: { externalKey: string; turnId: string },\n) =>\n stateKey(\n 'github-reply',\n replyOf?.externalKey ?? refString(ctx.origin.ref, 'externalKey') ?? ctx.origin.place.id,\n replyOf?.turnId ?? ctx.turn.id,\n );\nconst comment = async (\n ctx: ChannelEventContextIface<Config>,\n body: string,\n key = replyKey(ctx),\n) => {\n const resource =\n ctx.origin.place.kind === 'review-thread' ? ctx.origin.place.parent : ctx.origin.place;\n const repo = refString(ctx.origin.ref, 'repository') ?? resource?.id.split('#')[0];\n const issue = refString(ctx.origin.ref, 'number') ?? resource?.id.split('#')[1];\n if (repo == null || issue == null || body.length === 0) return;\n const receipt = await ctx.store.get(key);\n if (deletedMirrorReceiptSchema.safeParse(receipt).success) return;\n const saved = z.object({ id: z.number() }).safeParse(receipt);\n if (saved.success) return;\n const result = z.object({ id: z.number() }).parse(\n await api(\n ctx,\n ctx.origin.place.kind === 'review-thread'\n ? `/repos/${repo}/pulls/${issue}/comments/${refString(ctx.origin.ref, 'commentId') ?? ctx.origin.place.id.split(':').at(-1)}/replies`\n : `/repos/${repo}/issues/${issue}/comments`,\n {\n body: commentText(body),\n },\n ),\n );\n await ctx.store.set(key, { id: result.id }, deliveryRetention);\n};\nconst githubReaction = (emoji: string): string | null => {\n const reactions: Record<string, string> = {\n '\uD83D\uDC4D': '+1',\n '\uD83D\uDC4E': '-1',\n '\uD83D\uDE04': 'laugh',\n '\uD83C\uDF89': 'hooray',\n '\uD83D\uDE15': 'confused',\n '\u2764\uFE0F': 'heart',\n '\u2764': 'heart',\n '\uD83D\uDE80': 'rocket',\n '\uD83D\uDC40': 'eyes',\n };\n return (\n reactions[emoji] ??\n (['+1', '-1', 'laugh', 'hooray', 'confused', 'heart', 'rocket', 'eyes'].includes(emoji)\n ? emoji\n : null)\n );\n};\nconst reactionTarget = async (\n ctx: ChannelEventContextIface<Config>,\n data: { externalKey: string; replyOf?: { externalKey: string; turnId: string } },\n): Promise<number | null> => {\n if (data.replyOf != null) {\n const saved = z\n .object({ id: z.number() })\n .safeParse(await ctx.store.get(replyKey(ctx, data.replyOf)));\n return saved.success ? saved.data.id : null;\n }\n if (data.externalKey.startsWith('final:')) {\n const key = mirrorReceiptKey({\n provider: 'github',\n place: ctx.origin.place,\n externalKey: data.externalKey,\n });\n if (key == null) return null;\n const saved = z.object({ id: z.number() }).safeParse(await ctx.store.get(key));\n return saved.success ? saved.data.id : null;\n }\n const key = z\n .tuple([z.string().nullable(), z.string(), z.string()])\n .safeParse(parseJson(data.externalKey));\n if (!key.success || !/^\\d+$/.test(key.data[2])) return null;\n return Number(key.data[2]);\n};\nexport const githubChannel = (options: JsonObject = {}) => {\n const config = configSchema.parse(options);\n return defineChannel<Config, JsonValue, JsonValue>({\n name: 'github',\n config,\n installed: packageRef('@finalai/final-agent-provider/channels/github'),\n credentials: { app: 'github' },\n identity: {\n kind: 'redirect',\n start: async (args, ctx) => {\n const app = await ctx.credentials.appInfo();\n return startOAuth(\n {\n ...args,\n authorizeUrl: 'https://github.com/login/oauth/authorize',\n clientId: app.clientId,\n redirectUri: `${channelBaseUrl(config)}/b/${ctx.binding.id}/oauth/callback`,\n scope: 'read:user',\n },\n ctx,\n );\n },\n },\n places: { kinds: ['pr', 'issue', 'review-thread'] },\n routes: [\n {\n method: 'GET',\n path: '/oauth/callback',\n handler: async (ctx) => {\n const saved = await takeOAuth(ctx.request, ctx);\n if (saved == null)\n return new Response('Invalid or expired link request', { status: 400 });\n const app = await ctx.credentials.appInfo();\n const token = z.object({ access_token: z.string() }).parse(\n await responseJson(\n await ctx.credentials.fetch('https://github.com/login/oauth/access_token', {\n method: 'POST',\n headers: { accept: 'application/json' },\n body: new URLSearchParams({\n client_id: app.clientId,\n client_secret: app.clientSecret,\n code: saved.code,\n redirect_uri: saved.redirectUri,\n }),\n }),\n ),\n );\n const user = z.object({ id: z.number(), login: z.string() }).parse(\n await responseJson(\n await ctx.credentials.fetch('https://api.github.com/user', {\n headers: {\n authorization: `Bearer ${token.access_token}`,\n accept: 'application/vnd.github+json',\n },\n }),\n ),\n );\n return confirmOAuth(\n {\n ticket: saved.ticket,\n expected: saved.principal,\n actual: {\n id: String(user.id),\n displayName: user.login,\n ...(saved.principal.tenant == null ? {} : { tenant: saved.principal.tenant }),\n },\n },\n ctx,\n );\n },\n },\n {\n method: 'POST',\n path: '/webhook',\n handler: async (ctx) => {\n const body = await ctx.request.text();\n const app = await ctx.credentials.appInfo();\n const signature = ctx.request.headers.get('x-hub-signature-256');\n if (\n app.signingSecret == null ||\n signature == null ||\n !signature.startsWith('sha256=') ||\n !(await verifyHmac({ secret: app.signingSecret, body, signature: signature.slice(7) }))\n )\n return new Response(null, { status: 401 });\n const event = ctx.request.headers.get('x-github-event');\n if (\n event !== 'issue_comment' &&\n event !== 'pull_request_review_comment' &&\n event !== 'pull_request' &&\n event !== 'pull_request_review' &&\n event !== 'pull_request_review_thread' &&\n event !== 'issues' &&\n event !== 'installation'\n )\n return new Response(null, { status: 204 });\n const result = await ctx.receive({\n event,\n body: jsonValueSchema.parse(parseJson(body)),\n delivery: ctx.request.headers.get('x-github-delivery'),\n });\n return Response.json(result, { status: 202 });\n },\n },\n ],\n receive: async (input, baseContext) => {\n const installation = z\n .object({ body: z.object({ installation: z.object({ id: z.number() }).optional() }) })\n .safeParse(input);\n const ctx =\n installation.success && installation.data.body.installation != null\n ? inTenant(baseContext, String(installation.data.body.installation.id))\n : baseContext;\n const wrapped = z.object({ event: z.string(), body: jsonValueSchema }).safeParse(input);\n if (!wrapped.success) return { ignored: true, reason: 'invalid-event' };\n const lifecycle = z.object({ action: z.string() }).safeParse(wrapped.data.body);\n const tenant =\n installation.success && installation.data.body.installation != null\n ? String(installation.data.body.installation.id)\n : null;\n if (\n wrapped.data.event === 'installation' &&\n lifecycle.success &&\n ['deleted', 'suspend', 'unsuspend'].includes(lifecycle.data.action)\n ) {\n if (tenant == null) return { ignored: true, reason: 'missing-tenant' };\n const key = stateKey('github-suspended', tenant);\n if (lifecycle.data.action === 'deleted') {\n await ctx.people.revoke({ tenant, reason: 'uninstalled' });\n await ctx.store.set(key, null);\n } else await ctx.store.set(key, lifecycle.data.action === 'suspend' ? true : null);\n return { accepted: true };\n }\n if (tenant != null && (await ctx.store.get(stateKey('github-suspended', tenant))) === true)\n return { ignored: true, reason: 'installation-suspended' };\n if (\n wrapped.data.event !== 'issue_comment' &&\n wrapped.data.event !== 'pull_request_review_comment'\n ) {\n const resource = z\n .object({\n action: z.string(),\n review: z\n .object({\n state: z.string(),\n body: z.string().nullish(),\n html_url: z.string().optional(),\n user: z.object({ login: z.string() }).optional(),\n })\n .optional(),\n sender: z.object({ login: z.string() }).optional(),\n repository: z.object({ full_name: z.string() }),\n pull_request: z\n .object({\n number: z.number(),\n title: z.string(),\n state: z.string().optional(),\n html_url: z.string().optional(),\n })\n .optional(),\n issue: z\n .object({\n number: z.number(),\n title: z.string(),\n state: z.string().optional(),\n html_url: z.string().optional(),\n })\n .optional(),\n })\n .safeParse(wrapped.data.body);\n if (!resource.success) return { ignored: true, reason: 'unsupported-resource-event' };\n const item = resource.data.pull_request ?? resource.data.issue;\n if (item == null) return { ignored: true, reason: 'no-resource' };\n const place: PlaceRef = {\n kind: resource.data.pull_request == null ? 'issue' : 'pr',\n id: `${resource.data.repository.full_name.toLowerCase()}#${item.number}`,\n ...(installation.success && installation.data.body.installation != null\n ? { tenant: String(installation.data.body.installation.id) }\n : {}),\n title: item.title,\n };\n const observers = await ctx.places.observers(place);\n const delivery = z\n .object({ delivery: z.string().nullable().optional() })\n .parse(input).delivery;\n if (delivery == null) return { ignored: true, reason: 'missing-delivery-id' };\n let accepted = false;\n let refused: Refusal | null = null;\n for (const conversation of observers) {\n const result = await ctx.conversation(conversation).input({\n label: `GitHub ${place.kind} ${resource.data.action}`,\n content: [\n {\n type: 'text',\n text:\n resource.data.review == null\n ? `${item.title}: ${resource.data.action}${item.state == null ? '' : ` (${item.state})`}${item.html_url == null ? '' : ` ${item.html_url}`}`\n : `${item.title}: review ${resource.data.action} (${resource.data.review.state})${(resource.data.review.user?.login ?? resource.data.sender?.login) == null ? '' : ` by ${resource.data.review.user?.login ?? resource.data.sender?.login}`}${resource.data.review.html_url == null ? '' : ` ${resource.data.review.html_url}`}${resource.data.review.body == null ? '' : `\\n${resource.data.review.body}`}`,\n },\n ],\n origin: { place },\n idempotencyKey: delivery,\n });\n if ('refused' in result) {\n refused ??= result;\n ctx.log('GitHub observer input refused.', { reason: result.refused });\n } else accepted = true;\n }\n if (!accepted && refused != null) return { accepted: false, refusal: refused };\n return observers.length === 0\n ? { ignored: true, reason: 'no-observers' }\n : { accepted: true };\n }\n const parsed = commentSchema.safeParse(wrapped.data.body);\n if (!parsed.success) return { ignored: true, reason: 'not-a-comment' };\n const event = parsed.data;\n if (event.sender.type === 'Bot') return { ignored: true, reason: 'bot' };\n const target = event.issue ?? event.pull_request;\n if (target == null) return { ignored: true, reason: 'no-issue' };\n const isPr = event.pull_request != null || event.issue?.pull_request != null;\n const parent: PlaceRef = {\n kind: isPr ? 'pr' : 'issue',\n id: `${event.repository.full_name.toLowerCase()}#${target.number}`,\n ...(installation.success && installation.data.body.installation != null\n ? { tenant: String(installation.data.body.installation.id) }\n : {}),\n title: target.title,\n };\n const place: PlaceRef =\n wrapped.data.event === 'pull_request_review_comment'\n ? {\n kind: 'review-thread',\n id: `${event.repository.full_name.toLowerCase()}:${event.comment.in_reply_to_id ?? event.comment.id}`,\n ...(parent.tenant == null ? {} : { tenant: parent.tenant }),\n parent,\n title: target.title,\n }\n : parent;\n const principal = {\n id: String(event.sender.id),\n displayName: event.sender.login,\n ...(parent.tenant == null ? {} : { tenant: parent.tenant }),\n };\n const key = externalKey(parent, String(event.comment.id));\n if (\n event.action !== 'edited' &&\n event.action !== 'deleted' &&\n (event.action !== 'created' ||\n !new RegExp(\n `(?:^|[^A-Za-z0-9_@/-])@${config.mention.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&')}(?=$|[^A-Za-z0-9_/-])`,\n 'i',\n ).test(visibleMentionText(event.comment.body)))\n )\n return { ignored: true, reason: 'not-mentioned' };\n if (\n (event.action === 'edited' || event.action === 'deleted') &&\n (await ctx.store.get(stateKey('github-origin', key))) == null\n )\n return { ignored: true, reason: 'unknown-origin' };\n const permission = z\n .object({\n permission: z.string(),\n user: z\n .object({\n permissions: z\n .object({\n push: z.boolean().optional(),\n maintain: z.boolean().optional(),\n admin: z.boolean().optional(),\n })\n .optional(),\n })\n .optional(),\n })\n .safeParse(\n await api(\n ctx,\n `/repos/${event.repository.full_name.toLowerCase()}/collaborators/${encodeURIComponent(event.sender.login)}/permission`,\n ),\n );\n if (\n !permission.success ||\n !['write', 'maintain', 'admin'].includes(permission.data.permission)\n )\n return { ignored: true, reason: 'not-a-collaborator' };\n if (event.action === 'edited' || event.action === 'deleted') {\n const by = await personFor(ctx, principal);\n if (typeof by !== 'string') return { accepted: false, refusal: by };\n const route = await ctx.places.resolve(place);\n if (route.kind !== 'connected') return { ignored: true, reason: 'unconnected' };\n const result =\n event.action === 'edited'\n ? await ctx.conversation(route.conversation).edit({\n externalKey: key,\n by,\n content: [{ type: 'text', text: event.comment.body }],\n })\n : await ctx.conversation(route.conversation).remove({ externalKey: key, by });\n return 'refused' in result ? { accepted: false, refusal: result } : { accepted: true };\n }\n await api(\n ctx,\n `/repos/${event.repository.full_name.toLowerCase()}/${wrapped.data.event === 'pull_request_review_comment' ? 'pulls' : 'issues'}/comments/${event.comment.id}/reactions`,\n { content: 'eyes' },\n ).catch(() => ctx.log('GitHub acknowledgement unavailable.'));\n const result = await receivePersonMessage({\n ctx,\n principal,\n place,\n text: event.comment.body,\n externalKey: key,\n ref: {\n externalKey: key,\n repository: event.repository.full_name.toLowerCase(),\n number: String(target.number),\n commentId: String(event.comment.in_reply_to_id ?? event.comment.id),\n requester: event.sender.login,\n tenant:\n installation.success && installation.data.body.installation != null\n ? String(installation.data.body.installation.id)\n : null,\n url: event.comment.html_url,\n },\n });\n if ('accepted' in result && !result.accepted) {\n const noticeKey = stateKey('github-refusal', key);\n if ((await ctx.store.get(noticeKey)) == null) {\n const posted = z.object({ id: z.number() }).parse(\n await api(\n ctx,\n `/repos/${event.repository.full_name.toLowerCase()}/issues/${target.number}/comments`,\n {\n body: `@${event.sender.login} ${result.refusal.message} ${result.refusal.linkUrl ?? result.refusal.connectUrl ?? ''}`,\n },\n ),\n );\n await ctx.store.set(noticeKey, posted.id, deliveryRetention);\n }\n }\n if ('accepted' in result && result.accepted)\n await ctx.store.set(stateKey('github-origin', key), true, deliveryRetention);\n return result;\n },\n events: {\n 'message.posted': async (data, ctx) => {\n await comment(\n ctx,\n `From ${data.author.displayName} in Final\\n\\n${textOf(data.message.content)}`,\n stateKey('github-mirror', providerPlaceKey(ctx.origin.place), data.message.id),\n );\n },\n 'turn.completed': async (data, ctx) => {\n const resource =\n ctx.origin.place.kind === 'review-thread' ? ctx.origin.place.parent : ctx.origin.place;\n const repo = refString(ctx.origin.ref, 'repository') ?? resource?.id.split('#')[0];\n const issue = refString(ctx.origin.ref, 'number') ?? resource?.id.split('#')[1];\n const thread =\n ctx.origin.place.kind === 'review-thread'\n ? (refString(ctx.origin.ref, 'commentId') ?? ctx.origin.place.id.split(':').at(-1))\n : null;\n await shareReplyReceipt({\n bindingId: ctx.binding.id,\n store: ctx.store,\n destination: stateKey(\n 'github',\n ctx.origin.place.tenant ?? null,\n repo?.toLowerCase() ?? null,\n issue ?? null,\n thread ?? null,\n ),\n messageIds: data.messages?.map((message) => message.id) ?? [],\n originKey: replyKey(ctx),\n send: (key) => comment(ctx, completionText(data), key),\n });\n },\n 'decision.created': async (data, ctx) => {\n await comment(\n ctx,\n `Waiting on @${refString(ctx.origin.ref, 'requester') ?? 'the requester'} in Final.`,\n stateKey('github-decision', providerPlaceKey(ctx.origin.place), data.decisionId),\n );\n },\n 'decision.resolved': async (data, ctx) => {\n const repo = refString(ctx.origin.ref, 'repository');\n const saved = z\n .object({ id: z.number() })\n .safeParse(\n await ctx.store.get(\n stateKey('github-decision', providerPlaceKey(ctx.origin.place), data.decisionId),\n ),\n );\n if (repo != null && saved.success)\n await api(\n ctx,\n `/repos/${repo}/${ctx.origin.place.kind === 'review-thread' ? 'pulls' : 'issues'}/comments/${saved.data.id}`,\n { body: 'Decision answered in Final.' },\n 'PATCH',\n );\n },\n 'message.edited': async (data, ctx) => {\n if (data.replyOf == null && data.externalKey.startsWith('final:')) {\n const key = mirrorReceiptKey({\n provider: 'github',\n place: ctx.origin.place,\n externalKey: data.externalKey,\n messageId: data.message.id,\n });\n if (key == null) return;\n const saved = z.object({ id: z.number() }).safeParse(await ctx.store.get(key));\n const resource =\n ctx.origin.place.kind === 'review-thread' ? ctx.origin.place.parent : ctx.origin.place;\n const repo = refString(ctx.origin.ref, 'repository') ?? resource?.id.split('#')[0];\n if (!saved.success || repo == null) return;\n try {\n await api(\n ctx,\n `/repos/${repo}/${ctx.origin.place.kind === 'review-thread' ? 'pulls' : 'issues'}/comments/${saved.data.id}`,\n {\n body: commentText(\n `From ${data.author.displayName} in Final\\n\\n${textOf(data.message.content)}`,\n ),\n },\n 'PATCH',\n );\n } catch (cause) {\n if (\n !(cause instanceof Error) ||\n !z.object({ status: z.literal(404) }).safeParse(cause.cause).success\n )\n throw cause;\n await api(ctx, `/repos/${repo}`);\n await ctx.store.set(key, { deleted: true }, deliveryRetention);\n }\n return;\n }\n if (data.replyOf == null) return;\n const repo = refString(ctx.origin.ref, 'repository');\n const saved = z\n .object({ id: z.number() })\n .safeParse(await ctx.store.get(replyKey(ctx, data.replyOf)));\n if (repo != null && saved.success)\n await api(\n ctx,\n `/repos/${repo}/${ctx.origin.place.kind === 'review-thread' ? 'pulls' : 'issues'}/comments/${saved.data.id}`,\n { body: textOf(data.message.content).slice(0, 60000) },\n 'PATCH',\n );\n },\n 'message.removed': async (data, ctx) => {\n if (data.replyOf == null && data.externalKey.startsWith('final:')) {\n const key = mirrorReceiptKey({\n provider: 'github',\n place: ctx.origin.place,\n externalKey: data.externalKey,\n messageId: data.message.id,\n });\n if (key == null) return;\n const saved = z.object({ id: z.number() }).safeParse(await ctx.store.get(key));\n const resource =\n ctx.origin.place.kind === 'review-thread' ? ctx.origin.place.parent : ctx.origin.place;\n const repo = refString(ctx.origin.ref, 'repository') ?? resource?.id.split('#')[0];\n if (!saved.success || repo == null) return;\n const result = await api(\n ctx,\n `/repos/${repo}/${ctx.origin.place.kind === 'review-thread' ? 'pulls' : 'issues'}/comments/${saved.data.id}`,\n undefined,\n 'DELETE',\n );\n if (result === missingTarget) await api(ctx, `/repos/${repo}`);\n await ctx.store.set(key, { deleted: true }, deliveryRetention);\n return;\n }\n if (data.replyOf == null) return;\n const repo = refString(ctx.origin.ref, 'repository');\n const saved = z\n .object({ id: z.number() })\n .safeParse(await ctx.store.get(replyKey(ctx, data.replyOf)));\n if (repo != null && saved.success)\n await api(\n ctx,\n `/repos/${repo}/${ctx.origin.place.kind === 'review-thread' ? 'pulls' : 'issues'}/comments/${saved.data.id}`,\n undefined,\n 'DELETE',\n );\n },\n 'reaction.added': async (data, ctx) => {\n const resource =\n ctx.origin.place.kind === 'review-thread' ? ctx.origin.place.parent : ctx.origin.place;\n const repo =\n refString(ctx.origin.ref, 'repository') ??\n (data.replyOf == null && data.externalKey.startsWith('final:')\n ? resource?.id.split('#')[0]\n : null);\n const target = await reactionTarget(ctx, data);\n const content = githubReaction(data.emoji);\n if (repo == null || target == null || content == null) return;\n const mirrorKey =\n data.replyOf == null\n ? mirrorReceiptKey({\n provider: 'github',\n place: ctx.origin.place,\n externalKey: data.externalKey,\n })\n : null;\n await settleMirrorReaction({\n ctx,\n key: mirrorKey,\n classify: (cause) => classifyMirrorReaction({ ctx, repo, target, cause }),\n work: async () => {\n const key = stateKey(\n 'github-reaction',\n repo,\n ctx.origin.place.kind === 'review-thread' ? 'review-comment' : 'issue-comment',\n String(target),\n content,\n );\n const principal = JSON.stringify([data.principal.tenant ?? null, data.principal.id]);\n const saved = reactionReceiptSchema.safeParse(await ctx.store.get(key));\n if (saved.success) {\n if (saved.data.principals.includes(principal) || saved.data.overflow) return;\n await ctx.store.set(\n key,\n saved.data.principals.length >= 256\n ? { ...saved.data, overflow: true }\n : { ...saved.data, principals: [...saved.data.principals, principal] },\n deliveryRetention,\n );\n return;\n }\n let owned = false;\n const reactionContext: ChannelEventContextIface<Config> = {\n ...ctx,\n credentials: {\n ...ctx.credentials,\n fetch: async (request, init) => {\n const response = await ctx.credentials.fetch(request, init);\n owned = response.status === 201;\n return response;\n },\n },\n };\n const result = z\n .object({ id: z.number() })\n .parse(\n await api(\n reactionContext,\n `/repos/${repo}/${ctx.origin.place.kind === 'review-thread' ? 'pulls' : 'issues'}/comments/${target}/reactions`,\n { content },\n ),\n );\n await ctx.store.set(\n key,\n { id: result.id, principals: [principal], overflow: false, owned },\n deliveryRetention,\n );\n },\n });\n },\n 'reaction.removed': async (data, ctx) => {\n const resource =\n ctx.origin.place.kind === 'review-thread' ? ctx.origin.place.parent : ctx.origin.place;\n const repo =\n refString(ctx.origin.ref, 'repository') ??\n (data.replyOf == null && data.externalKey.startsWith('final:')\n ? resource?.id.split('#')[0]\n : null);\n const target = await reactionTarget(ctx, data);\n const content = githubReaction(data.emoji);\n if (repo == null || target == null || content == null) return;\n const mirrorKey =\n data.replyOf == null\n ? mirrorReceiptKey({\n provider: 'github',\n place: ctx.origin.place,\n externalKey: data.externalKey,\n })\n : null;\n await settleMirrorReaction({\n ctx,\n key: mirrorKey,\n classify: (cause) => classifyMirrorReaction({ ctx, repo, target, cause }),\n work: async () => {\n const key = stateKey(\n 'github-reaction',\n repo,\n ctx.origin.place.kind === 'review-thread' ? 'review-comment' : 'issue-comment',\n String(target),\n content,\n );\n const saved = reactionReceiptSchema.safeParse(await ctx.store.get(key));\n if (!saved.success || saved.data.overflow) return;\n const principal = JSON.stringify([data.principal.tenant ?? null, data.principal.id]);\n if (!saved.data.principals.includes(principal)) return;\n const remaining = saved.data.principals.filter((value) => value !== principal);\n if (remaining.length > 0) {\n await ctx.store.set(key, { ...saved.data, principals: remaining }, deliveryRetention);\n return;\n }\n if (saved.data.owned) {\n const result = await api(\n ctx,\n `/repos/${repo}/${ctx.origin.place.kind === 'review-thread' ? 'pulls' : 'issues'}/comments/${target}/reactions/${saved.data.id}`,\n undefined,\n 'DELETE',\n );\n if (mirrorKey != null && result === missingTarget) {\n await api(ctx, `/repos/${repo}`);\n try {\n await api(\n ctx,\n `/repos/${repo}/${ctx.origin.place.kind === 'review-thread' ? 'pulls' : 'issues'}/comments/${target}`,\n );\n } catch (cause) {\n if (\n !(cause instanceof Error) ||\n !z.object({ status: z.literal(404) }).safeParse(cause.cause).success\n )\n throw cause;\n await ctx.store.set(mirrorKey, { deleted: true }, deliveryRetention);\n }\n }\n }\n await ctx.store.set(key, null);\n },\n });\n },\n },\n });\n};\n"],
5
- "mappings": "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",
6
- "names": ["key", "place", "result", "saved", "repo"]
7
- }
@@ -1,4 +0,0 @@
1
- import { type JsonObject, type JsonValue } from '@finalai/agent-provider';
2
- export declare const linearChannel: (options?: JsonObject) => import("@finalai/agent-provider").ChannelDefinitionIface<{
3
- baseUrl?: string | undefined;
4
- }, JsonValue, JsonValue>;