@plotday/twister 0.54.0 → 0.56.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 (85) hide show
  1. package/dist/connector.d.ts +34 -4
  2. package/dist/connector.d.ts.map +1 -1
  3. package/dist/connector.js +2 -1
  4. package/dist/connector.js.map +1 -1
  5. package/dist/docs/assets/hierarchy.js +1 -1
  6. package/dist/docs/assets/navigation.js +1 -1
  7. package/dist/docs/assets/search.js +1 -1
  8. package/dist/docs/classes/index.Connector.html +26 -25
  9. package/dist/docs/classes/index.FileNotFoundError.html +1 -1
  10. package/dist/docs/classes/index.Files.html +1 -1
  11. package/dist/docs/classes/index.Imap.html +1 -1
  12. package/dist/docs/classes/index.Options.html +1 -1
  13. package/dist/docs/classes/index.Smtp.html +1 -1
  14. package/dist/docs/classes/tools_ai.AI.html +1 -1
  15. package/dist/docs/classes/tools_callbacks.Callbacks.html +1 -1
  16. package/dist/docs/classes/tools_integrations.Integrations.html +16 -11
  17. package/dist/docs/classes/tools_network.Network.html +25 -16
  18. package/dist/docs/classes/tools_plot.Plot.html +1 -1
  19. package/dist/docs/classes/tools_store.Store.html +1 -1
  20. package/dist/docs/classes/tools_tasks.Tasks.html +1 -1
  21. package/dist/docs/classes/tools_twists.Twists.html +1 -1
  22. package/dist/docs/enums/plot.ActorType.html +4 -4
  23. package/dist/docs/enums/tools_integrations.AuthProvider.html +13 -13
  24. package/dist/docs/hierarchy.html +1 -1
  25. package/dist/docs/modules/index.html +1 -1
  26. package/dist/docs/modules/tools_integrations.html +1 -1
  27. package/dist/docs/types/index.CreateLinkDraft.html +10 -8
  28. package/dist/docs/types/index.OptionalScopeGroup.html +12 -0
  29. package/dist/docs/types/index.ScopeConfig.html +9 -0
  30. package/dist/docs/types/plot.Actor.html +5 -5
  31. package/dist/docs/types/plot.Contact.html +4 -4
  32. package/dist/docs/types/plot.ContentType.html +1 -1
  33. package/dist/docs/types/plot.Link.html +20 -16
  34. package/dist/docs/types/plot.LinkUpdate.html +1 -1
  35. package/dist/docs/types/plot.NewActor.html +1 -1
  36. package/dist/docs/types/plot.NewContact.html +1 -1
  37. package/dist/docs/types/plot.NewLink.html +18 -2
  38. package/dist/docs/types/plot.NewLinkWithNotes.html +13 -2
  39. package/dist/docs/types/plot.NewNote.html +7 -1
  40. package/dist/docs/types/plot.NoteUpdate.html +1 -1
  41. package/dist/docs/types/plot.PlanOperation.html +1 -1
  42. package/dist/docs/types/tools_integrations.ArchiveLinkFilter.html +5 -5
  43. package/dist/docs/types/tools_integrations.AuthToken.html +4 -4
  44. package/dist/docs/types/tools_integrations.Authorization.html +4 -4
  45. package/dist/docs/types/tools_integrations.Channel.html +23 -4
  46. package/dist/docs/types/tools_integrations.ComposeConfig.html +7 -5
  47. package/dist/docs/types/tools_integrations.ContactRoleConfig.html +5 -5
  48. package/dist/docs/types/tools_integrations.LinkTypeConfig.html +56 -14
  49. package/dist/docs/types/tools_integrations.NewCustomEmoji.html +18 -0
  50. package/dist/docs/types/tools_integrations.StatusIcon.html +4 -0
  51. package/dist/docs/types/tools_integrations.SyncContext.html +15 -3
  52. package/dist/llm-docs/connector.d.ts +1 -1
  53. package/dist/llm-docs/connector.d.ts.map +1 -1
  54. package/dist/llm-docs/connector.js +1 -1
  55. package/dist/llm-docs/connector.js.map +1 -1
  56. package/dist/llm-docs/plot.d.ts +1 -1
  57. package/dist/llm-docs/plot.d.ts.map +1 -1
  58. package/dist/llm-docs/plot.js +1 -1
  59. package/dist/llm-docs/plot.js.map +1 -1
  60. package/dist/llm-docs/tools/integrations.d.ts +1 -1
  61. package/dist/llm-docs/tools/integrations.d.ts.map +1 -1
  62. package/dist/llm-docs/tools/integrations.js +1 -1
  63. package/dist/llm-docs/tools/integrations.js.map +1 -1
  64. package/dist/llm-docs/tools/network.d.ts +1 -1
  65. package/dist/llm-docs/tools/network.d.ts.map +1 -1
  66. package/dist/llm-docs/tools/network.js +1 -1
  67. package/dist/llm-docs/tools/network.js.map +1 -1
  68. package/dist/plot.d.ts +58 -0
  69. package/dist/plot.d.ts.map +1 -1
  70. package/dist/plot.js.map +1 -1
  71. package/dist/tools/integrations.d.ts +134 -2
  72. package/dist/tools/integrations.d.ts.map +1 -1
  73. package/dist/tools/integrations.js.map +1 -1
  74. package/dist/tools/network.d.ts +27 -15
  75. package/dist/tools/network.d.ts.map +1 -1
  76. package/dist/tools/network.js.map +1 -1
  77. package/package.json +1 -1
  78. package/src/connector.ts +36 -4
  79. package/src/llm-docs/connector.ts +1 -1
  80. package/src/llm-docs/plot.ts +1 -1
  81. package/src/llm-docs/tools/integrations.ts +1 -1
  82. package/src/llm-docs/tools/network.ts +1 -1
  83. package/src/plot.ts +59 -0
  84. package/src/tools/integrations.ts +147 -2
  85. package/src/tools/network.ts +27 -15
@@ -4,5 +4,5 @@
4
4
  * This file is auto-generated during build. Do not edit manually.
5
5
  * Generated from: prebuild.ts
6
6
  */
7
- export default "import { ITool } from \"..\";\nimport { type JSONValue, Serializable } from \"../utils/types\";\nimport { type AuthProvider, type Authorization } from \"./integrations\";\n\n/**\n * Represents an incoming webhook request.\n *\n * This object is passed to webhook callback functions and contains all\n * the information about the HTTP request that triggered the webhook.\n *\n * @example\n * ```typescript\n * async onWebhookReceived(request: WebhookRequest, context: any) {\n * console.log(`${request.method} request received`);\n * console.log(\"Headers:\", request.headers);\n * console.log(\"Query params:\", request.params);\n * console.log(\"Body:\", request.body);\n * console.log(\"Context:\", context);\n * }\n * ```\n */\nexport type WebhookRequest = {\n /** HTTP method of the request (GET, POST, etc.) */\n method: string;\n /** HTTP headers from the request */\n headers: Record<string, string>;\n /** Query string parameters from the request URL */\n params: Record<string, string>;\n /** Request body (parsed as JSON if applicable) */\n body: JSONValue;\n /** Raw request body (for signature verification) */\n rawBody?: string;\n};\n\n/**\n * Built-in tool for requesting HTTP access permissions and managing webhooks.\n *\n * The Network tool serves two purposes:\n * 1. Declares which URLs a twist or tool is allowed to access via HTTP/HTTPS\n * 2. Provides webhook creation and management for receiving HTTP callbacks\n *\n * **IMPORTANT**: Must be requested in the Twist or Tool Init method to declare\n * HTTP access permissions. Without requesting this tool with the appropriate URLs,\n * all outbound HTTP requests (fetch, etc.) will be blocked.\n *\n * **Permission Patterns:**\n * - `*` - Allow access to all URLs\n * - `https://*.example.com` - Allow access to all subdomains\n * - `https://api.example.com/*` - Allow access to all paths on the domain\n * - `https://api.example.com/v1/*` - Allow access to specific path prefix\n *\n * **Webhook Characteristics:**\n * - Persistent across worker restarts\n * - Automatic callback routing to parent tool/twist\n * - Support for all HTTP methods\n * - Context preservation for callback execution\n *\n * @example\n * ```typescript\n * class MyTwist extends Twist<MyTwist> {\n * build(build: ToolBuilder) {\n * return {\n * // Request HTTP access to specific APIs\n * network: build(Network, {\n * urls: [\n * 'https://api.github.com/*',\n * 'https://api.openai.com/*'\n * ]\n * })\n * };\n * }\n * }\n * ```\n *\n * @example\n * ```typescript\n * class CalendarTool extends Tool<CalendarTool> {\n * build(build: ToolBuilder) {\n * return {\n * network: build(Network, {\n * urls: ['https://www.googleapis.com/calendar/*']\n * })\n * };\n * }\n *\n * async setupCalendarWebhook(calendarId: string) {\n * // Create webhook URL that will call onCalendarEvent\n * const webhookUrl = await this.tools.network.createWebhook(\n * {},\n * this.onCalendarEvent,\n * calendarId,\n * \"google\"\n * );\n *\n * // Register webhook with Google Calendar API\n * await this.registerWithGoogleCalendar(calendarId, webhookUrl);\n *\n * return webhookUrl;\n * }\n *\n * async onCalendarEvent(request: WebhookRequest, calendarId: string, provider: string) {\n * console.log(\"Calendar event received:\", {\n * method: request.method,\n * calendarId,\n * provider,\n * body: request.body\n * });\n *\n * // Process the calendar event change\n * await this.processCalendarChange(request.body);\n * }\n *\n * async cleanup(webhookUrl: string) {\n * await this.tools.network.deleteWebhook(webhookUrl);\n * }\n * }\n * ```\n */\nexport abstract class Network extends ITool {\n static readonly Options: {\n /**\n * All network access is blocked except the specified URLs.\n * Wildcards (*) are supported for domains and paths.\n */\n urls: string[];\n };\n\n /**\n * Creates a new webhook endpoint.\n *\n * Generates a unique HTTP endpoint that will invoke the callback function\n * when requests are received. The callback receives the WebhookRequest plus any extraArgs.\n *\n * **Provider-Specific Behavior:**\n * - **Slack**: Uses provider-specific routing via team_id. Requires `authorization` parameter.\n * - **Gmail** (Google with Gmail scopes): Returns a Google Pub/Sub topic name instead of a webhook URL.\n * The topic name (e.g., \"projects/plot-prod/topics/gmail-webhook-abc123\") should be passed\n * to the Gmail API's `users.watch` endpoint. Requires `authorization` parameter with Gmail scopes.\n * - **Pub/Sub** (`pubsub: true`): Returns a Google Pub/Sub topic name instead of a webhook URL.\n * Use this for services that deliver events via Pub/Sub (e.g., Google Workspace Events API).\n * A Pub/Sub topic and push subscription are created automatically; the returned topic name\n * can be passed to any Google API that accepts a Pub/Sub notification endpoint.\n * - **Default**: Returns a standard webhook URL for all other cases.\n *\n * @param options - Webhook creation options\n * @param options.provider - Optional provider for provider-specific webhook routing\n * @param options.authorization - Optional authorization for provider-specific webhooks (required for Slack and Gmail)\n * @param callback - Function receiving (request, ...extraArgs)\n * @param extraArgs - Additional arguments to pass to the callback (type-checked, no functions allowed)\n * @returns Promise resolving to the webhook URL, or for Gmail/Pub/Sub, a Pub/Sub topic name\n *\n * @example\n * ```typescript\n * // Pub/Sub webhook for Workspace Events API\n * const topicName = await this.tools.network.createWebhook(\n * { pubsub: true },\n * this.onEventReceived,\n * channelId\n * );\n * // topicName: \"projects/plot-prod/topics/ps-abc123\"\n *\n * // Pass topic name to Workspace Events API\n * await api.createSubscription(targetResource, topicName, eventTypes);\n * ```\n *\n * @example\n * ```typescript\n * // Gmail webhook - auto-detected from scopes, returns Pub/Sub topic name\n * const topicName = await this.tools.network.createWebhook(\n * {},\n * this.onGmailNotification,\n * \"inbox\"\n * );\n * ```\n */\n abstract createWebhook<\n TArgs extends Serializable[],\n TCallback extends (request: WebhookRequest, ...args: TArgs) => any\n >(\n options: {\n provider?: AuthProvider;\n authorization?: Authorization;\n /** When true, creates a Google Pub/Sub topic instead of a webhook URL. */\n pubsub?: boolean;\n /**\n * Controls whether the returned webhook URL runs callbacks synchronously\n * or asynchronously.\n *\n * **Async (default, `async: true`)** — Plot enqueues each incoming\n * request and immediately returns `200 { queued: true }`. A background\n * queue consumer runs the callback with bounded concurrency. The\n * sender never sees the callback's return value or any error thrown\n * by it, and delivery is at-least-once (the callback must be\n * idempotent). This is the right default for the vast majority of\n * webhooks — service event notifications, bulk-import fan-out, etc. —\n * because it removes ingress-path database pressure and prevents\n * sender-side retry storms when callbacks are slow.\n *\n * **Sync (`async: false`)** — Plot runs the callback inline and\n * responds with the callback's return value. Required when:\n * - The sender reads the response body (e.g. Microsoft Graph\n * subscription validation, which POSTs with a `validationToken` and\n * expects the token echoed as `text/plain`).\n * - The sender uses the HTTP status code to decide whether to retry\n * (e.g. to surface 4xx for permanent failures).\n * - The handler must observe throws before the sender times out.\n *\n * When `async: false`, a callback returning a `string` is sent back\n * with `Content-Type: text/plain`; any other value is serialized as\n * JSON. `undefined` / `void` yields a plain `200 OK` body.\n *\n * Defaults to `true`.\n */\n async?: boolean;\n },\n callback: TCallback,\n ...extraArgs: TArgs\n ): Promise<string>;\n\n /**\n * Deletes an existing webhook endpoint.\n *\n * Removes the webhook endpoint and stops processing requests.\n * Works with all webhook types (standard, Slack, and Gmail).\n *\n * **For Gmail webhooks:** Also deletes the associated Google Pub/Sub topic and subscription.\n *\n * **For Slack webhooks:** Removes the callback registration for the specific team.\n *\n * **For standard webhooks:** Removes the webhook endpoint. Any subsequent requests\n * to the deleted webhook will return 404.\n *\n * @param url - The webhook identifier returned from `createWebhook()`.\n * This can be a URL (standard webhooks), a Pub/Sub topic name (Gmail),\n * or an opaque identifier (Slack). Always pass the exact value returned\n * from `createWebhook()`.\n * @returns Promise that resolves when the webhook is deleted\n */\n abstract deleteWebhook(url: string): Promise<void>;\n}\n";
7
+ export default "import { ITool } from \"..\";\nimport { type JSONValue, Serializable } from \"../utils/types\";\nimport { type AuthProvider, type Authorization } from \"./integrations\";\n\n/**\n * Represents an incoming webhook request.\n *\n * This object is passed to webhook callback functions and contains all\n * the information about the HTTP request that triggered the webhook.\n *\n * @example\n * ```typescript\n * async onWebhookReceived(request: WebhookRequest, context: any) {\n * console.log(`${request.method} request received`);\n * console.log(\"Headers:\", request.headers);\n * console.log(\"Query params:\", request.params);\n * console.log(\"Body:\", request.body);\n * console.log(\"Context:\", context);\n * }\n * ```\n */\nexport type WebhookRequest = {\n /** HTTP method of the request (GET, POST, etc.) */\n method: string;\n /** HTTP headers from the request */\n headers: Record<string, string>;\n /** Query string parameters from the request URL */\n params: Record<string, string>;\n /** Request body (parsed as JSON if applicable) */\n body: JSONValue;\n /** Raw request body (for signature verification) */\n rawBody?: string;\n};\n\n/**\n * Built-in tool for requesting HTTP access permissions and managing webhooks.\n *\n * The Network tool serves two purposes:\n * 1. Declares which URLs a twist or tool is allowed to access via HTTP/HTTPS\n * 2. Provides webhook creation and management for receiving HTTP callbacks\n *\n * **IMPORTANT**: Must be requested in the Twist or Tool Init method to declare\n * HTTP access permissions. Without requesting this tool with the appropriate URLs,\n * all outbound HTTP requests (fetch, etc.) will be blocked.\n *\n * **Permission Patterns:**\n * - `*` - Allow access to all URLs\n * - `https://*.example.com` - Allow access to all subdomains\n * - `https://api.example.com/*` - Allow access to all paths on the domain\n * - `https://api.example.com/v1/*` - Allow access to specific path prefix\n *\n * **Webhook Characteristics:**\n * - Persistent across worker restarts\n * - Automatic callback routing to parent tool/twist\n * - Support for all HTTP methods\n * - Context preservation for callback execution\n *\n * @example\n * ```typescript\n * class MyTwist extends Twist<MyTwist> {\n * build(build: ToolBuilder) {\n * return {\n * // Request HTTP access to specific APIs\n * network: build(Network, {\n * urls: [\n * 'https://api.github.com/*',\n * 'https://api.openai.com/*'\n * ]\n * })\n * };\n * }\n * }\n * ```\n *\n * @example\n * ```typescript\n * class CalendarTool extends Tool<CalendarTool> {\n * build(build: ToolBuilder) {\n * return {\n * network: build(Network, {\n * urls: ['https://www.googleapis.com/calendar/*']\n * })\n * };\n * }\n *\n * async setupCalendarWebhook(calendarId: string) {\n * // Create webhook URL that will call onCalendarEvent\n * const webhookUrl = await this.tools.network.createWebhook(\n * {},\n * this.onCalendarEvent,\n * calendarId,\n * \"google\"\n * );\n *\n * // Register webhook with Google Calendar API\n * await this.registerWithGoogleCalendar(calendarId, webhookUrl);\n *\n * return webhookUrl;\n * }\n *\n * async onCalendarEvent(request: WebhookRequest, calendarId: string, provider: string) {\n * console.log(\"Calendar event received:\", {\n * method: request.method,\n * calendarId,\n * provider,\n * body: request.body\n * });\n *\n * // Process the calendar event change\n * await this.processCalendarChange(request.body);\n * }\n *\n * async cleanup(webhookUrl: string) {\n * await this.tools.network.deleteWebhook(webhookUrl);\n * }\n * }\n * ```\n */\nexport abstract class Network extends ITool {\n static readonly Options: {\n /**\n * All network access is blocked except the specified URLs.\n * Wildcards (*) are supported for domains and paths.\n */\n urls: string[];\n };\n\n /**\n * Creates a new webhook endpoint.\n *\n * Generates a unique HTTP endpoint that will invoke the callback function\n * when requests are received. The callback receives the WebhookRequest plus any extraArgs.\n *\n * **Provider-Specific Behavior:**\n * - **Slack**: Uses provider-specific routing via team_id. Requires `authorization` parameter.\n * - **Pub/Sub** (`pubsub: \"gmail\" | \"workspace\"`): Returns a Google Pub/Sub topic name instead\n * of a webhook URL. `\"gmail\"` targets Gmail `users.watch` (set this only on the Gmail\n * connector); `\"workspace\"` targets Google Workspace Events (Chat, etc.). A Pub/Sub topic and\n * push subscription are created automatically; the returned topic name (e.g.\n * \"projects/plot-prod/topics/gmail-abc123\") is passed to the relevant Google API. Other Google\n * connectors (Calendar, Drive) omit `pubsub` and use the default HTTPS webhook.\n * - **Default**: Returns a standard webhook URL for all other cases.\n *\n * @param options - Webhook creation options\n * @param options.provider - Optional provider for provider-specific webhook routing\n * @param options.authorization - Optional authorization for provider-specific webhooks (required for Slack)\n * @param options.pubsub - Optional Google Pub/Sub push product (\"gmail\" | \"workspace\")\n * @param callback - Function receiving (request, ...extraArgs)\n * @param extraArgs - Additional arguments to pass to the callback (type-checked, no functions allowed)\n * @returns Promise resolving to the webhook URL, or for Pub/Sub, a Pub/Sub topic name\n *\n * @example\n * ```typescript\n * // Pub/Sub webhook for Workspace Events API (Chat, etc.)\n * const topicName = await this.tools.network.createWebhook(\n * { pubsub: \"workspace\" },\n * this.onEventReceived,\n * channelId\n * );\n * // topicName: \"projects/plot-prod/topics/ps-abc123\"\n *\n * // Pass topic name to Workspace Events API\n * await api.createSubscription(targetResource, topicName, eventTypes);\n * ```\n *\n * @example\n * ```typescript\n * // Gmail webhook - returns a Gmail Pub/Sub topic name for users.watch\n * const topicName = await this.tools.network.createWebhook(\n * { pubsub: \"gmail\" },\n * this.onGmailNotification,\n * \"inbox\"\n * );\n * ```\n */\n abstract createWebhook<\n TArgs extends Serializable[],\n TCallback extends (request: WebhookRequest, ...args: TArgs) => any\n >(\n options: {\n provider?: AuthProvider;\n authorization?: Authorization;\n /**\n * Create a Google Pub/Sub topic instead of a webhook URL, and return\n * the topic name. Selects the push product:\n *\n * - `\"gmail\"` — Gmail `users.watch` (topic published to by\n * `gmail-api-push`). Set this only on the Gmail connector.\n * - `\"workspace\"` — Google Workspace Events (Chat, etc.).\n *\n * This opt-in must be explicit. Other Google connectors (Calendar,\n * Drive) omit it and receive a standard HTTPS webhook URL — they must\n * never be routed to a Pub/Sub topic, which `events.watch` /\n * `files.watch` reject as non-HTTPS.\n */\n pubsub?: \"gmail\" | \"workspace\";\n /**\n * Controls whether the returned webhook URL runs callbacks synchronously\n * or asynchronously.\n *\n * **Async (default, `async: true`)** — Plot enqueues each incoming\n * request and immediately returns `200 { queued: true }`. A background\n * queue consumer runs the callback with bounded concurrency. The\n * sender never sees the callback's return value or any error thrown\n * by it, and delivery is at-least-once (the callback must be\n * idempotent). This is the right default for the vast majority of\n * webhooks — service event notifications, bulk-import fan-out, etc. —\n * because it removes ingress-path database pressure and prevents\n * sender-side retry storms when callbacks are slow.\n *\n * **Sync (`async: false`)** — Plot runs the callback inline and\n * responds with the callback's return value. Required when:\n * - The sender reads the response body (e.g. Microsoft Graph\n * subscription validation, which POSTs with a `validationToken` and\n * expects the token echoed as `text/plain`).\n * - The sender uses the HTTP status code to decide whether to retry\n * (e.g. to surface 4xx for permanent failures).\n * - The handler must observe throws before the sender times out.\n *\n * When `async: false`, a callback returning a `string` is sent back\n * with `Content-Type: text/plain`; any other value is serialized as\n * JSON. `undefined` / `void` yields a plain `200 OK` body.\n *\n * Defaults to `true`.\n */\n async?: boolean;\n },\n callback: TCallback,\n ...extraArgs: TArgs\n ): Promise<string>;\n\n /**\n * Deletes an existing webhook endpoint.\n *\n * Removes the webhook endpoint and stops processing requests.\n * Works with all webhook types (standard, Slack, and Gmail).\n *\n * **For Gmail webhooks:** Also deletes the associated Google Pub/Sub topic and subscription.\n *\n * **For Slack webhooks:** Removes the callback registration for the specific team.\n *\n * **For standard webhooks:** Removes the webhook endpoint. Any subsequent requests\n * to the deleted webhook will return 404.\n *\n * @param url - The webhook identifier returned from `createWebhook()`.\n * This can be a URL (standard webhooks), a Pub/Sub topic name (Gmail),\n * or an opaque identifier (Slack). Always pass the exact value returned\n * from `createWebhook()`.\n * @returns Promise that resolves when the webhook is deleted\n */\n abstract deleteWebhook(url: string): Promise<void>;\n}\n";
8
8
  //# sourceMappingURL=network.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"network.js","sourceRoot":"","sources":["../../../src/llm-docs/tools/network.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,eAAe,4uSAA4uS,CAAC"}
1
+ {"version":3,"file":"network.js","sourceRoot":"","sources":["../../../src/llm-docs/tools/network.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,eAAe,0yTAA0yT,CAAC"}
package/dist/plot.d.ts CHANGED
@@ -714,6 +714,15 @@ export type NewNote = Partial<Omit<Note, "author" | "thread" | "tags" | "reactio
714
714
  } | {
715
715
  key: string;
716
716
  } | null;
717
+ /**
718
+ * A link carried by this note (note-attached, NOT a thread-level canonical
719
+ * link). Use for augmenter content (e.g. Granola meeting notes) that should
720
+ * attach to an existing canonical thread without becoming its primary link.
721
+ * The runtime creates the link note-scoped, binds `note.link_id` to it, and
722
+ * — when `thread: { source }` resolves to no existing thread — find-or-creates
723
+ * the thread by that source so a later canonical sync can fill the primary.
724
+ */
725
+ link?: NewLink;
717
726
  };
718
727
  /**
719
728
  * Type for updating existing notes.
@@ -945,6 +954,12 @@ export type Link = {
945
954
  * meeting-notes connector can bundle by setting the same alias.
946
955
  */
947
956
  sources: string[];
957
+ /**
958
+ * Connector-supplied ranking used by clients to choose the single displayed
959
+ * (primary) canonical link when a thread has more than one. Higher wins;
960
+ * ties break on earliest creation. Default 0.
961
+ */
962
+ priority: number;
948
963
  };
949
964
  /**
950
965
  * Type for creating new links.
@@ -999,12 +1014,36 @@ export type NewLink = Partial<Omit<Link, "author" | "assignee" | "threadId">> &
999
1014
  * - undefined (default): Preserve current archive state
1000
1015
  */
1001
1016
  archived?: boolean;
1017
+ /**
1018
+ * Mark the thread as the connection owner's to-do at create time.
1019
+ * - true: the thread is added to the owner's to-do (active) bucket and
1020
+ * their per-user archive is lifted, atomically with the save — no
1021
+ * separate `integrations.setThreadToDo()` round-trip needed.
1022
+ * - false: the owner's thread_state is marked read (cleared from to-do).
1023
+ * - undefined (omitted, default): leave to-do state untouched.
1024
+ *
1025
+ * Use for messaging-style "saved for later" flags (e.g. a starred Slack
1026
+ * thread). This is the first-class replacement for overloading a
1027
+ * `statuses[]` entry with `active: true`.
1028
+ */
1029
+ todo?: boolean;
1030
+ /**
1031
+ * The to-do date used when `todo` is true. Defaults to the "Now"
1032
+ * sentinel (today's bucket) when omitted. Ignored when `todo` is not true.
1033
+ */
1034
+ todoDate?: Date | string;
1002
1035
  /**
1003
1036
  * Explicit focus (disables automatic focus matching).
1004
1037
  * Only used when the link creates a new thread. When omitted, the
1005
1038
  * server classifies the thread using the user's focus rules.
1006
1039
  */
1007
1040
  focus?: Pick<Focus, "id">;
1041
+ /**
1042
+ * Primary-link ranking for this canonical link (default 0). Set higher on
1043
+ * the connection that "owns" the external item (e.g. the calendar that owns
1044
+ * an event vs a subscribed copy) so clients display it as the primary.
1045
+ */
1046
+ priority?: number;
1008
1047
  };
1009
1048
  /**
1010
1049
  * A new link with notes to save via integrations.saveLink().
@@ -1025,6 +1064,25 @@ export type NewLinkWithNotes = NewLink & {
1025
1064
  schedules?: Array<Omit<NewSchedule, "threadId">>;
1026
1065
  /** Schedule occurrence overrides */
1027
1066
  scheduleOccurrences?: NewScheduleOccurrence[];
1067
+ /**
1068
+ * For `onCreateLink` only: binds the thread's opening note (the message the
1069
+ * user composed in Plot, which this hook just posted to the external system)
1070
+ * to its external counterpart. Mirrors the `NoteWriteBackResult` a reply
1071
+ * returns from `onNoteCreated` — `key` is the external message id and
1072
+ * `externalContent` is the post-write content baseline. Without this the
1073
+ * opening note stays keyless, so reactions and edits on it can't be routed
1074
+ * back to the external system. Ignored outside `onCreateLink`.
1075
+ */
1076
+ originatingNote?: {
1077
+ /** External message id; set as the opening note's `key`. */
1078
+ key?: string;
1079
+ /**
1080
+ * Content as the external system stored it post-write, for the sync
1081
+ * baseline. Must equal what your sync-in path emits as this note's
1082
+ * `content` on re-ingest (same contract as `NoteWriteBackResult.externalContent`).
1083
+ */
1084
+ externalContent?: string;
1085
+ };
1028
1086
  };
1029
1087
  /**
1030
1088
  * Type for updating existing links.
@@ -1 +1 @@
1
- {"version":3,"file":"plot.d.ts","sourceRoot":"","sources":["../src/plot.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plot.d.ts","sourceRoot":"","sources":["../src/plot.ts"],"names":[],"mappings":"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"}
package/dist/plot.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"plot.js","sourceRoot":"","sources":["../src/plot.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAC5B,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAsEpC;;GAEG;AACH,MAAM,CAAN,IAAY,UAiBX;AAjBD,WAAY,UAAU;IACpB,uBAAuB;IACvB,mDAAY,CAAA;IACZ,+BAA+B;IAC/B,iEAAmB,CAAA;IACnB,6BAA6B;IAC7B,2DAAgB,CAAA;IAChB,6BAA6B;IAC7B,mDAAY,CAAA;IACZ,2BAA2B;IAC3B,2DAAgB,CAAA;IAChB,4BAA4B;IAC5B,2DAAgB,CAAA;IAChB,qBAAqB;IACrB,+CAAU,CAAA;IACV,6BAA6B;IAC7B,uDAAc,CAAA;AAChB,CAAC,EAjBW,UAAU,KAAV,UAAU,QAiBrB;AAiED;;;;;GAKG;AACH,MAAM,CAAN,IAAY,UAiBX;AAjBD,WAAY,UAAU;IACpB,8CAA8C;IAC9C,mCAAqB,CAAA;IACrB,mDAAmD;IACnD,2BAAa,CAAA;IACb,+DAA+D;IAC/D,mCAAqB,CAAA;IACrB,+DAA+D;IAC/D,2CAA6B,CAAA;IAC7B,yCAAyC;IACzC,2BAAa,CAAA;IACb,uEAAuE;IACvE,iCAAmB,CAAA;IACnB,+DAA+D;IAC/D,+BAAiB,CAAA;IACjB,sDAAsD;IACtD,2BAAa,CAAA;AACf,CAAC,EAjBW,UAAU,KAAV,UAAU,QAiBrB;AAED;;;;;GAKG;AACH,MAAM,CAAN,IAAY,oBAWX;AAXD,WAAY,oBAAoB;IAC9B,kBAAkB;IAClB,iDAAyB,CAAA;IACzB,WAAW;IACX,qCAAa,CAAA;IACb,sBAAsB;IACtB,yDAAiC,CAAA;IACjC,kBAAkB;IAClB,uCAAe,CAAA;IACf,6CAA6C;IAC7C,uCAAe,CAAA;AACjB,CAAC,EAXW,oBAAoB,KAApB,oBAAoB,QAW/B;AAkrBD;;;;;GAKG;AACH,MAAM,CAAN,IAAY,SAOX;AAPD,WAAY,SAAS;IACnB,qCAAqC;IACrC,yCAAI,CAAA;IACJ,2CAA2C;IAC3C,+CAAO,CAAA;IACP,0CAA0C;IAC1C,2CAAK,CAAA;AACP,CAAC,EAPW,SAAS,KAAT,SAAS,QAOpB"}
1
+ {"version":3,"file":"plot.js","sourceRoot":"","sources":["../src/plot.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAC5B,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAsEpC;;GAEG;AACH,MAAM,CAAN,IAAY,UAiBX;AAjBD,WAAY,UAAU;IACpB,uBAAuB;IACvB,mDAAY,CAAA;IACZ,+BAA+B;IAC/B,iEAAmB,CAAA;IACnB,6BAA6B;IAC7B,2DAAgB,CAAA;IAChB,6BAA6B;IAC7B,mDAAY,CAAA;IACZ,2BAA2B;IAC3B,2DAAgB,CAAA;IAChB,4BAA4B;IAC5B,2DAAgB,CAAA;IAChB,qBAAqB;IACrB,+CAAU,CAAA;IACV,6BAA6B;IAC7B,uDAAc,CAAA;AAChB,CAAC,EAjBW,UAAU,KAAV,UAAU,QAiBrB;AAiED;;;;;GAKG;AACH,MAAM,CAAN,IAAY,UAiBX;AAjBD,WAAY,UAAU;IACpB,8CAA8C;IAC9C,mCAAqB,CAAA;IACrB,mDAAmD;IACnD,2BAAa,CAAA;IACb,+DAA+D;IAC/D,mCAAqB,CAAA;IACrB,+DAA+D;IAC/D,2CAA6B,CAAA;IAC7B,yCAAyC;IACzC,2BAAa,CAAA;IACb,uEAAuE;IACvE,iCAAmB,CAAA;IACnB,+DAA+D;IAC/D,+BAAiB,CAAA;IACjB,sDAAsD;IACtD,2BAAa,CAAA;AACf,CAAC,EAjBW,UAAU,KAAV,UAAU,QAiBrB;AAED;;;;;GAKG;AACH,MAAM,CAAN,IAAY,oBAWX;AAXD,WAAY,oBAAoB;IAC9B,kBAAkB;IAClB,iDAAyB,CAAA;IACzB,WAAW;IACX,qCAAa,CAAA;IACb,sBAAsB;IACtB,yDAAiC,CAAA;IACjC,kBAAkB;IAClB,uCAAe,CAAA;IACf,6CAA6C;IAC7C,uCAAe,CAAA;AACjB,CAAC,EAXW,oBAAoB,KAApB,oBAAoB,QAW/B;AA4rBD;;;;;GAKG;AACH,MAAM,CAAN,IAAY,SAOX;AAPD,WAAY,SAAS;IACnB,qCAAqC;IACrC,yCAAI,CAAA;IACJ,2CAA2C;IAC3C,+CAAO,CAAA;IACP,0CAA0C;IAC1C,2CAAK,CAAA;AACP,CAAC,EAPW,SAAS,KAAT,SAAS,QAOpB"}
@@ -10,11 +10,37 @@ export type Channel = {
10
10
  id: string;
11
11
  /** Display name shown in the UI */
12
12
  title: string;
13
+ /**
14
+ * Whether this channel should be selected by default when the user first
15
+ * adds the connection. Tri-state:
16
+ * - `true` — pre-select it (e.g. the user's own/primary calendar).
17
+ * - `false` — exclude it from the default selection (low-value or
18
+ * irrelevant resources that would crowd the user's view, or containers
19
+ * whose contents are too broad to sync wholesale — e.g. a holiday or
20
+ * someone-else's shared calendar, a GitHub org that cascades to every
21
+ * repo, a Microsoft Teams team container). The user can still enable it
22
+ * manually.
23
+ * - `undefined` — no opinion; the client decides. The client defaults to
24
+ * enabling the channel unless its title looks low-value (holidays,
25
+ * birthdays, spam/sent/draft, …).
26
+ *
27
+ * The guiding principle is "sync everything the user would reasonably want
28
+ * by default" — for most connectors that's all channels, so only set this
29
+ * where the connector can distinguish the user's own/relevant channels from
30
+ * low-value ones (e.g. Google Calendar via `accessRole === "owner"`).
31
+ */
32
+ enabledByDefault?: boolean;
13
33
  /** Optional nested channel resources (e.g., subfolders) */
14
34
  children?: Channel[];
15
35
  /** Per-channel link type configs. Overrides twist-level linkTypes when present. */
16
36
  linkTypes?: LinkTypeConfig[];
17
37
  };
38
+ /**
39
+ * Curated status-icon vocabulary. Connectors map each declared status to the
40
+ * closest icon; clients render a single glyph per value. Required on every
41
+ * status so the UI always has something to show.
42
+ */
43
+ export type StatusIcon = "backlog" | "todo" | "inProgress" | "blocked" | "done" | "cancelled" | "confirmed" | "tentative";
18
44
  /**
19
45
  * Describes a link type that a connector creates.
20
46
  * Used for display in the UI (icons, labels).
@@ -31,6 +57,28 @@ export type LinkTypeConfig = {
31
57
  * when omitted. Use the singular noun in title case (e.g. "Comment").
32
58
  */
33
59
  noteLabel?: string;
60
+ /**
61
+ * Placeholder shown in the editor when this link type is the target of a
62
+ * new thread (NewThreadPage). Example: "Send a Gmail email".
63
+ * If unset, Plot derives "Create a new {connector} {label.toLowerCase()}".
64
+ */
65
+ composePlaceholder?: string;
66
+ /**
67
+ * Label for the Send button on NewThreadPage when this link type is the
68
+ * target. Example: "Send". If unset, defaults to "Create".
69
+ */
70
+ composeVerb?: string;
71
+ /**
72
+ * Placeholder shown in the in-thread editor for the default reply mode.
73
+ * Example: "Reply" (Gmail), "Add a comment" (Linear). If unset, Plot derives
74
+ * "Add a {noteLabel.toLowerCase()}" or "Add a note".
75
+ */
76
+ replyPlaceholder?: string;
77
+ /**
78
+ * Label for the Send button in the in-thread editor. Example: "Send"
79
+ * (Gmail), "Comment" (Linear). If unset, defaults to "Send".
80
+ */
81
+ replyVerb?: string;
34
82
  /** URL to an icon for this link type (light mode). Prefer Iconify `logos/*` URLs. */
35
83
  logo?: string;
36
84
  /** URL to an icon for dark mode. Use when the default logo is invisible on dark backgrounds (e.g., Iconify `simple-icons/*` with `?color=`). */
@@ -43,6 +91,14 @@ export type LinkTypeConfig = {
43
91
  status: string;
44
92
  /** Human-readable label (e.g., "Open", "Done") */
45
93
  label: string;
94
+ /** Curated icon for this status (required so the UI always has a glyph). */
95
+ icon: StatusIcon;
96
+ /**
97
+ * Suppress this status's icon on the feed row (ThreadWidget) while still
98
+ * showing it in the ThreadPage header. Use for a "resting" default state
99
+ * that would otherwise clutter the feed (e.g. calendar "Confirmed").
100
+ */
101
+ hiddenDefault?: boolean;
46
102
  /** Whether this status represents completion (done, closed, merged, cancelled, etc.) */
47
103
  done?: boolean;
48
104
  /**
@@ -64,6 +120,16 @@ export type LinkTypeConfig = {
64
120
  }>;
65
121
  /** Whether this link type supports displaying and changing the assignee */
66
122
  supportsAssignee?: boolean;
123
+ /**
124
+ * Whether this link type produces time-anchored schedule/agenda items
125
+ * (i.e. calendar events). The Plot app shows the agenda (the bottom-nav
126
+ * tab on mobile and the left-sidebar agenda on desktop) only when the
127
+ * user has at least one active connection whose link types include one
128
+ * with `includesSchedules: true`. Calendar connectors (Google / Apple /
129
+ * Outlook Calendar) set this on their `event` link type. Defaults to
130
+ * false — non-calendar link types (messages, issues, tasks, docs) omit it.
131
+ */
132
+ includesSchedules?: boolean;
67
133
  /** Default thread creation mode for this link type: 'all' | 'actionable' | 'manual' */
68
134
  defaultCreateThreads?: string;
69
135
  /**
@@ -95,6 +161,22 @@ export type LinkTypeConfig = {
95
161
  * false when omitted.
96
162
  */
97
163
  supportsContactChanges?: boolean;
164
+ /**
165
+ * Whether a note/reply on this link type can carry a link (a pasted URL or
166
+ * connector-created item) that Plot forwards to the source. When false (the
167
+ * default), the "Add link" button is hidden for threads of this link type.
168
+ * Only set true if the connector's reply path actually forwards the link
169
+ * action to the source. Private Plot notes (no link type) always allow links.
170
+ */
171
+ supportsLinks?: boolean;
172
+ /**
173
+ * Whether a note/reply on this link type can carry an uploaded file that Plot
174
+ * forwards to the source as an attachment. When false (the default), the
175
+ * "Attach file" button is hidden for threads of this link type. Only set true
176
+ * if the connector's reply path actually uploads file actions to the source.
177
+ * Private Plot notes (no link type) always allow attachments.
178
+ */
179
+ supportsFileAttachments?: boolean;
98
180
  /**
99
181
  * Declares how sharing on threads of this link type is scoped:
100
182
  *
@@ -106,12 +188,16 @@ export type LinkTypeConfig = {
106
188
  * - `"message"`: each note carries its own recipient set via
107
189
  * `note.access_contacts`; the thread roster is the union across
108
190
  * all messages. Email.
191
+ * - `"none"`: the link type has no recipient roster at all. No
192
+ * contacts/sharing UI is shown for these threads. Use for purely
193
+ * personal destinations with no sharing concept (e.g. Google
194
+ * Tasks). The per-thread `contacts` array is ignored for sharing UI.
109
195
  *
110
196
  * Omit to default to `"thread"`. When set to `"message"`, every
111
197
  * note this connector ingests must populate `access_contacts`
112
198
  * explicitly (never NULL).
113
199
  */
114
- sharingModel?: "thread" | "channel" | "message";
200
+ sharingModel?: "thread" | "channel" | "message" | "none";
115
201
  };
116
202
  /**
117
203
  * Declares how a link type is composable from Plot via
@@ -146,8 +232,11 @@ export type ComposeConfig = {
146
232
  * `onCreateLink` resolves itself (e.g. Linear's `"unstarted"` category is
147
233
  * resolved per-team to a state UUID inside the connector — see
148
234
  * `connectors/linear/src/linear.ts`).
235
+ *
236
+ * Omit for status-less link types (e.g. messaging connectors that don't
237
+ * model a status): composed links are created with no status.
149
238
  */
150
- status: string;
239
+ status?: string;
151
240
  /**
152
241
  * Optional override for the picker chip / "Create new …" copy. Defaults
153
242
  * to the parent linkType's `label`. Use to disambiguate compose entries
@@ -213,6 +302,21 @@ export type SyncContext = {
213
302
  * overwrites stored state rather than appending to it.
214
303
  */
215
304
  recovering?: boolean;
305
+ /**
306
+ * True when the channel is being observed because the user composed a Plot
307
+ * thread INTO it (via `onCreateLink`), not because they explicitly enabled
308
+ * it. The connector should register webhooks / mark the channel observed so
309
+ * inbound events (replies, reactions) on the composed thread sync back —
310
+ * but must NOT backfill history. Only go-forward events matter; pulling the
311
+ * channel's existing content would be surprising for a channel the user
312
+ * only posted one thread into.
313
+ *
314
+ * Connectors whose `onChannelEnabled` already skips historical backfill can
315
+ * ignore this flag. Connectors that initial-sync on enable MUST short-
316
+ * circuit that backfill when `observeOnly` is true (still set up webhooks
317
+ * and any go-forward state).
318
+ */
319
+ observeOnly?: boolean;
216
320
  };
217
321
  /**
218
322
  * Built-in tool for managing OAuth authentication and channel resources.
@@ -392,6 +496,13 @@ export declare abstract class Integrations extends ITool {
392
496
  * @param channelId - The channel resource ID whose token is bad
393
497
  */
394
498
  abstract markNeedsReauth(channelId: string): Promise<void>;
499
+ /**
500
+ * Upsert workspace custom emoji into Plot's shared cache so reactions using
501
+ * `provider:workspace/name` refs render as images and round-trip. Idempotent;
502
+ * keyed on `id`. Pass `archived: true` to mark an emoji removed. Workspace-
503
+ * scoped (shared across all users of that workspace).
504
+ */
505
+ abstract saveCustomEmoji(emoji: NewCustomEmoji[]): Promise<void>;
395
506
  }
396
507
  /**
397
508
  * Filter criteria for archiving links.
@@ -407,6 +518,27 @@ export type ArchiveLinkFilter = {
407
518
  /** Filter by metadata fields (uses containment matching) */
408
519
  meta?: Record<string, JSONValue>;
409
520
  };
521
+ /**
522
+ * A workspace custom emoji to cache so Plot can render and round-trip it as a
523
+ * reaction. `id` is the provider-scoped ref stored on reactions, of the form
524
+ * `<provider>:<workspace>/<name>` (e.g. `slack:T0123ABC/party_parrot`).
525
+ */
526
+ export type NewCustomEmoji = {
527
+ /** Provider-scoped ref: `<provider>:<workspace>/<name>`. The reaction value. */
528
+ id: string;
529
+ /** e.g. "slack". */
530
+ provider: string;
531
+ /** Provider workspace/team id (e.g. Slack team id `T0123ABC`). */
532
+ workspace: string;
533
+ /** Bare emoji name without colons (e.g. "party_parrot"). */
534
+ name: string;
535
+ /** Image URL to render, or null for an alias (see `aliasOf`). */
536
+ imageUrl: string | null;
537
+ /** When this emoji aliases another, the target ref (`id` of the canonical emoji); else null. */
538
+ aliasOf: string | null;
539
+ /** True to mark the emoji removed (archive it) rather than upsert it. */
540
+ archived: boolean;
541
+ };
410
542
  /**
411
543
  * Enumeration of supported OAuth providers.
412
544
  *
@@ -1 +1 @@
1
- {"version":3,"file":"integrations.d.ts","sourceRoot":"","sources":["../../src/tools/integrations.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"integrations.d.ts","sourceRoot":"","sources":["../../src/tools/integrations.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,KAAK,EACV,KAAK,OAAO,EACZ,KAAK,UAAU,EACf,KAAK,gBAAgB,EACrB,KAAK,EACN,MAAM,IAAI,CAAC;AACZ,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAE1C;;;GAGG;AACH,MAAM,MAAM,OAAO,GAAG;IACpB,iEAAiE;IACjE,EAAE,EAAE,MAAM,CAAC;IACX,mCAAmC;IACnC,KAAK,EAAE,MAAM,CAAC;IACd;;;;;;;;;;;;;;;;;;OAkBG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,2DAA2D;IAC3D,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;IACrB,mFAAmF;IACnF,SAAS,CAAC,EAAE,cAAc,EAAE,CAAC;CAC9B,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,UAAU,GAClB,SAAS,GACT,MAAM,GACN,YAAY,GACZ,SAAS,GACT,MAAM,GACN,WAAW,GACX,WAAW,GACX,WAAW,CAAC;AAEhB;;;GAGG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,uEAAuE;IACvE,IAAI,EAAE,MAAM,CAAC;IACb,2DAA2D;IAC3D,KAAK,EAAE,MAAM,CAAC;IACd;;;;;OAKG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qFAAqF;IACrF,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gJAAgJ;IAChJ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,sHAAsH;IACtH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,2CAA2C;IAC3C,QAAQ,CAAC,EAAE,KAAK,CAAC;QACf,qDAAqD;QACrD,MAAM,EAAE,MAAM,CAAC;QACf,kDAAkD;QAClD,KAAK,EAAE,MAAM,CAAC;QACd,4EAA4E;QAC5E,IAAI,EAAE,UAAU,CAAC;QACjB;;;;WAIG;QACH,aAAa,CAAC,EAAE,OAAO,CAAC;QACxB,wFAAwF;QACxF,IAAI,CAAC,EAAE,OAAO,CAAC;QACf;;;;;;WAMG;QACH,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB;;;;;;WAMG;QACH,IAAI,CAAC,EAAE,OAAO,CAAC;KAChB,CAAC,CAAC;IACH,2EAA2E;IAC3E,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;;;;;;;;OAQG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,uFAAuF;IACvF,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B;;;;;;;;;OASG;IACH,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB;;;;;;;;;OASG;IACH,YAAY,CAAC,EAAE,iBAAiB,EAAE,CAAC;IACnC;;;;;OAKG;IACH,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;;;;OAMG;IACH,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC;;;;;;;;;;;;;;;;;;;OAmBG;IACH,YAAY,CAAC,EAAE,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,MAAM,CAAC;CAC1D,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,OAAO,CAAC,EAAE,UAAU,GAAG,UAAU,GAAG,WAAW,CAAC;IAChD;;;;;;;;;OASG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;;OAKG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,6EAA6E;IAC7E,EAAE,EAAE,MAAM,CAAC;IACX,+EAA+E;IAC/E,KAAK,EAAE,MAAM,CAAC;IACd,8DAA8D;IAC9D,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,WAAW,GAAG;IACxB;;;;;;;;;OASG;IACH,cAAc,CAAC,EAAE,IAAI,CAAC;IAEtB;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;;;;;;;;;;;OAaG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,8BAAsB,YAAa,SAAQ,KAAK;IAC9C;;;;;OAKG;IACH,MAAM,CAAC,WAAW,CAAC,GAAG,WAAW,EAAE,MAAM,EAAE,EAAE,GAAG,MAAM,EAAE;IAIxD;;;;;;;;OAQG;IACH,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;IAC1D;;;;;;;OAOG;IAEH,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;IAElF;;;;;;;;;;;OAWG;IAEH,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;IAE/D;;;;;;;;;;;;;;;;;;;;OAoBG;IAEH,QAAQ,CAAC,SAAS,CAAC,KAAK,EAAE,gBAAgB,EAAE,GAAG,OAAO,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC;IAEvE;;;;;;;;;;OAUG;IAEH,QAAQ,CAAC,YAAY,CAAC,QAAQ,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IAE/D;;;;;;;;OAQG;IAEH,QAAQ,CAAC,YAAY,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAE/D;;;;;;;;OAQG;IAEH,QAAQ,CAAC,aAAa,CACpB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,OAAO,EACb,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,IAAI,GAAG,MAAM,CAAA;KAAE,GACjC,OAAO,CAAC,IAAI,CAAC;IAEhB;;;;;;;;;;;;;;;;;;;;;OAqBG;IAEH,QAAQ,CAAC,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAE/D;;;;;;;;;;;;;;;;;OAiBG;IAEH,QAAQ,CAAC,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAE1D;;;;;OAKG;IAEH,QAAQ,CAAC,eAAe,CAAC,KAAK,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;CAEjE;AAED;;;GAGG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,2BAA2B;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0DAA0D;IAC1D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,qDAAqD;IACrD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,4DAA4D;IAC5D,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;CAClC,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,gFAAgF;IAChF,EAAE,EAAE,MAAM,CAAC;IACX,oBAAoB;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,kEAAkE;IAClE,SAAS,EAAE,MAAM,CAAC;IAClB,4DAA4D;IAC5D,IAAI,EAAE,MAAM,CAAC;IACb,iEAAiE;IACjE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,gGAAgG;IAChG,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,yEAAyE;IACzE,QAAQ,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF;;;;;GAKG;AACH,oBAAY,YAAY;IACtB,0DAA0D;IAC1D,MAAM,WAAW;IACjB,0DAA0D;IAC1D,SAAS,cAAc;IACvB,kDAAkD;IAClD,MAAM,WAAW;IACjB,gDAAgD;IAChD,KAAK,UAAU;IACf,uDAAuD;IACvD,SAAS,cAAc;IACvB,kDAAkD;IAClD,MAAM,WAAW;IACjB,gCAAgC;IAChC,MAAM,WAAW;IACjB,sEAAsE;IACtE,MAAM,WAAW;IACjB,gDAAgD;IAChD,KAAK,UAAU;IACf,6CAA6C;IAC7C,OAAO,YAAY;IACnB,yDAAyD;IACzD,OAAO,YAAY;IACnB,iDAAiD;IACjD,QAAQ,aAAa;CACtB;AAED;;;;;GAKG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B,mDAAmD;IACnD,QAAQ,EAAE,YAAY,CAAC;IACvB,sDAAsD;IACtD,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,0EAA0E;IAC1E,KAAK,EAAE,KAAK,CAAC;CACd,CAAC;AAEF;;;;;GAKG;AACH,MAAM,MAAM,SAAS,GAAG;IACtB,6BAA6B;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,oCAAoC;IACpC,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB;;;;;;;OAOG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACnC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"integrations.js","sourceRoot":"","sources":["../../src/tools/integrations.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,GACN,MAAM,IAAI,CAAC;AA+NZ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,MAAM,OAAgB,YAAa,SAAQ,KAAK;IAC9C;;;;;OAKG;IACH,MAAM,CAAC,WAAW,CAAC,GAAG,WAAuB;QAC3C,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IACjD,CAAC;CAuJF;AAiBD;;;;;GAKG;AACH,MAAM,CAAN,IAAY,YAyBX;AAzBD,WAAY,YAAY;IACtB,0DAA0D;IAC1D,iCAAiB,CAAA;IACjB,0DAA0D;IAC1D,uCAAuB,CAAA;IACvB,kDAAkD;IAClD,iCAAiB,CAAA;IACjB,gDAAgD;IAChD,+BAAe,CAAA;IACf,uDAAuD;IACvD,uCAAuB,CAAA;IACvB,kDAAkD;IAClD,iCAAiB,CAAA;IACjB,gCAAgC;IAChC,iCAAiB,CAAA;IACjB,sEAAsE;IACtE,iCAAiB,CAAA;IACjB,gDAAgD;IAChD,+BAAe,CAAA;IACf,6CAA6C;IAC7C,mCAAmB,CAAA;IACnB,yDAAyD;IACzD,mCAAmB,CAAA;IACnB,iDAAiD;IACjD,qCAAqB,CAAA;AACvB,CAAC,EAzBW,YAAY,KAAZ,YAAY,QAyBvB"}
1
+ {"version":3,"file":"integrations.js","sourceRoot":"","sources":["../../src/tools/integrations.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,GACN,MAAM,IAAI,CAAC;AAiVZ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,MAAM,OAAgB,YAAa,SAAQ,KAAK;IAC9C;;;;;OAKG;IACH,MAAM,CAAC,WAAW,CAAC,GAAG,WAAuB;QAC3C,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IACjD,CAAC;CAgKF;AAuCD;;;;;GAKG;AACH,MAAM,CAAN,IAAY,YAyBX;AAzBD,WAAY,YAAY;IACtB,0DAA0D;IAC1D,iCAAiB,CAAA;IACjB,0DAA0D;IAC1D,uCAAuB,CAAA;IACvB,kDAAkD;IAClD,iCAAiB,CAAA;IACjB,gDAAgD;IAChD,+BAAe,CAAA;IACf,uDAAuD;IACvD,uCAAuB,CAAA;IACvB,kDAAkD;IAClD,iCAAiB,CAAA;IACjB,gCAAgC;IAChC,iCAAiB,CAAA;IACjB,sEAAsE;IACtE,iCAAiB,CAAA;IACjB,gDAAgD;IAChD,+BAAe,CAAA;IACf,6CAA6C;IAC7C,mCAAmB,CAAA;IACnB,yDAAyD;IACzD,mCAAmB,CAAA;IACnB,iDAAiD;IACjD,qCAAqB,CAAA;AACvB,CAAC,EAzBW,YAAY,KAAZ,YAAY,QAyBvB"}
@@ -130,27 +130,27 @@ export declare abstract class Network extends ITool {
130
130
  *
131
131
  * **Provider-Specific Behavior:**
132
132
  * - **Slack**: Uses provider-specific routing via team_id. Requires `authorization` parameter.
133
- * - **Gmail** (Google with Gmail scopes): Returns a Google Pub/Sub topic name instead of a webhook URL.
134
- * The topic name (e.g., "projects/plot-prod/topics/gmail-webhook-abc123") should be passed
135
- * to the Gmail API's `users.watch` endpoint. Requires `authorization` parameter with Gmail scopes.
136
- * - **Pub/Sub** (`pubsub: true`): Returns a Google Pub/Sub topic name instead of a webhook URL.
137
- * Use this for services that deliver events via Pub/Sub (e.g., Google Workspace Events API).
138
- * A Pub/Sub topic and push subscription are created automatically; the returned topic name
139
- * can be passed to any Google API that accepts a Pub/Sub notification endpoint.
133
+ * - **Pub/Sub** (`pubsub: "gmail" | "workspace"`): Returns a Google Pub/Sub topic name instead
134
+ * of a webhook URL. `"gmail"` targets Gmail `users.watch` (set this only on the Gmail
135
+ * connector); `"workspace"` targets Google Workspace Events (Chat, etc.). A Pub/Sub topic and
136
+ * push subscription are created automatically; the returned topic name (e.g.
137
+ * "projects/plot-prod/topics/gmail-abc123") is passed to the relevant Google API. Other Google
138
+ * connectors (Calendar, Drive) omit `pubsub` and use the default HTTPS webhook.
140
139
  * - **Default**: Returns a standard webhook URL for all other cases.
141
140
  *
142
141
  * @param options - Webhook creation options
143
142
  * @param options.provider - Optional provider for provider-specific webhook routing
144
- * @param options.authorization - Optional authorization for provider-specific webhooks (required for Slack and Gmail)
143
+ * @param options.authorization - Optional authorization for provider-specific webhooks (required for Slack)
144
+ * @param options.pubsub - Optional Google Pub/Sub push product ("gmail" | "workspace")
145
145
  * @param callback - Function receiving (request, ...extraArgs)
146
146
  * @param extraArgs - Additional arguments to pass to the callback (type-checked, no functions allowed)
147
- * @returns Promise resolving to the webhook URL, or for Gmail/Pub/Sub, a Pub/Sub topic name
147
+ * @returns Promise resolving to the webhook URL, or for Pub/Sub, a Pub/Sub topic name
148
148
  *
149
149
  * @example
150
150
  * ```typescript
151
- * // Pub/Sub webhook for Workspace Events API
151
+ * // Pub/Sub webhook for Workspace Events API (Chat, etc.)
152
152
  * const topicName = await this.tools.network.createWebhook(
153
- * { pubsub: true },
153
+ * { pubsub: "workspace" },
154
154
  * this.onEventReceived,
155
155
  * channelId
156
156
  * );
@@ -162,9 +162,9 @@ export declare abstract class Network extends ITool {
162
162
  *
163
163
  * @example
164
164
  * ```typescript
165
- * // Gmail webhook - auto-detected from scopes, returns Pub/Sub topic name
165
+ * // Gmail webhook - returns a Gmail Pub/Sub topic name for users.watch
166
166
  * const topicName = await this.tools.network.createWebhook(
167
- * {},
167
+ * { pubsub: "gmail" },
168
168
  * this.onGmailNotification,
169
169
  * "inbox"
170
170
  * );
@@ -173,8 +173,20 @@ export declare abstract class Network extends ITool {
173
173
  abstract createWebhook<TArgs extends Serializable[], TCallback extends (request: WebhookRequest, ...args: TArgs) => any>(options: {
174
174
  provider?: AuthProvider;
175
175
  authorization?: Authorization;
176
- /** When true, creates a Google Pub/Sub topic instead of a webhook URL. */
177
- pubsub?: boolean;
176
+ /**
177
+ * Create a Google Pub/Sub topic instead of a webhook URL, and return
178
+ * the topic name. Selects the push product:
179
+ *
180
+ * - `"gmail"` — Gmail `users.watch` (topic published to by
181
+ * `gmail-api-push`). Set this only on the Gmail connector.
182
+ * - `"workspace"` — Google Workspace Events (Chat, etc.).
183
+ *
184
+ * This opt-in must be explicit. Other Google connectors (Calendar,
185
+ * Drive) omit it and receive a standard HTTPS webhook URL — they must
186
+ * never be routed to a Pub/Sub topic, which `events.watch` /
187
+ * `files.watch` reject as non-HTTPS.
188
+ */
189
+ pubsub?: "gmail" | "workspace";
178
190
  /**
179
191
  * Controls whether the returned webhook URL runs callbacks synchronously
180
192
  * or asynchronously.
@@ -1 +1 @@
1
- {"version":3,"file":"network.d.ts","sourceRoot":"","sources":["../../src/tools/network.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,IAAI,CAAC;AAC3B,OAAO,EAAE,KAAK,SAAS,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9D,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEvE;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,mDAAmD;IACnD,MAAM,EAAE,MAAM,CAAC;IACf,oCAAoC;IACpC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,mDAAmD;IACnD,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,kDAAkD;IAClD,IAAI,EAAE,SAAS,CAAC;IAChB,oDAAoD;IACpD,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmFG;AACH,8BAAsB,OAAQ,SAAQ,KAAK;IACzC,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE;QACvB;;;WAGG;QACH,IAAI,EAAE,MAAM,EAAE,CAAC;KAChB,CAAC;IAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA+CG;IACH,QAAQ,CAAC,aAAa,CACpB,KAAK,SAAS,YAAY,EAAE,EAC5B,SAAS,SAAS,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,IAAI,EAAE,KAAK,KAAK,GAAG,EAElE,OAAO,EAAE;QACP,QAAQ,CAAC,EAAE,YAAY,CAAC;QACxB,aAAa,CAAC,EAAE,aAAa,CAAC;QAC9B,0EAA0E;QAC1E,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB;;;;;;;;;;;;;;;;;;;;;;;;;;;;WA4BG;QACH,KAAK,CAAC,EAAE,OAAO,CAAC;KACjB,EACD,QAAQ,EAAE,SAAS,EACnB,GAAG,SAAS,EAAE,KAAK,GAClB,OAAO,CAAC,MAAM,CAAC;IAElB;;;;;;;;;;;;;;;;;;OAkBG;IACH,QAAQ,CAAC,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CACnD"}
1
+ {"version":3,"file":"network.d.ts","sourceRoot":"","sources":["../../src/tools/network.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,IAAI,CAAC;AAC3B,OAAO,EAAE,KAAK,SAAS,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9D,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEvE;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,mDAAmD;IACnD,MAAM,EAAE,MAAM,CAAC;IACf,oCAAoC;IACpC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,mDAAmD;IACnD,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,kDAAkD;IAClD,IAAI,EAAE,SAAS,CAAC;IAChB,oDAAoD;IACpD,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmFG;AACH,8BAAsB,OAAQ,SAAQ,KAAK;IACzC,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE;QACvB;;;WAGG;QACH,IAAI,EAAE,MAAM,EAAE,CAAC;KAChB,CAAC;IAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA+CG;IACH,QAAQ,CAAC,aAAa,CACpB,KAAK,SAAS,YAAY,EAAE,EAC5B,SAAS,SAAS,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,IAAI,EAAE,KAAK,KAAK,GAAG,EAElE,OAAO,EAAE;QACP,QAAQ,CAAC,EAAE,YAAY,CAAC;QACxB,aAAa,CAAC,EAAE,aAAa,CAAC;QAC9B;;;;;;;;;;;;WAYG;QACH,MAAM,CAAC,EAAE,OAAO,GAAG,WAAW,CAAC;QAC/B;;;;;;;;;;;;;;;;;;;;;;;;;;;;WA4BG;QACH,KAAK,CAAC,EAAE,OAAO,CAAC;KACjB,EACD,QAAQ,EAAE,SAAS,EACnB,GAAG,SAAS,EAAE,KAAK,GAClB,OAAO,CAAC,MAAM,CAAC;IAElB;;;;;;;;;;;;;;;;;;OAkBG;IACH,QAAQ,CAAC,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CACnD"}
@@ -1 +1 @@
1
- {"version":3,"file":"network.js","sourceRoot":"","sources":["../../src/tools/network.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,IAAI,CAAC;AAkC3B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmFG;AACH,MAAM,OAAgB,OAAQ,SAAQ,KAAK;IACzC,MAAM,CAAU,OAAO,CAMrB;CAkHH"}
1
+ {"version":3,"file":"network.js","sourceRoot":"","sources":["../../src/tools/network.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,IAAI,CAAC;AAkC3B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmFG;AACH,MAAM,OAAgB,OAAQ,SAAQ,KAAK;IACzC,MAAM,CAAU,OAAO,CAMrB;CA8HH"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@plotday/twister",
3
- "version": "0.54.0",
3
+ "version": "0.56.0",
4
4
  "description": "Plot Twist Creator - Build intelligent extensions that integrate and automate",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
package/src/connector.ts CHANGED
@@ -129,8 +129,12 @@ export type CreateLinkDraft = {
129
129
  channelId: string;
130
130
  /** Link type identifier, matches a `LinkTypeConfig.type`. */
131
131
  type: string;
132
- /** Status the user selected. Matches a `statuses[].status` for `type`. */
133
- status: string;
132
+ /**
133
+ * Status the user selected. Matches a `statuses[].status` for `type`,
134
+ * or null for status-less link types (the parent linkType declares no
135
+ * `statuses` and no `compose.status`).
136
+ */
137
+ status: string | null;
134
138
  /** Title of the originating Plot thread (post AI title generation). */
135
139
  title: string;
136
140
  /** Markdown content of the thread's first note, or null if none. */
@@ -169,6 +173,33 @@ export type CreateLinkDraft = {
169
173
  inviteEmails?: string[];
170
174
  };
171
175
 
176
+ /** An optional OAuth scope group the user can toggle at connect time. */
177
+ export type OptionalScopeGroup = {
178
+ /** Stable id used to track the user's selection. */
179
+ id: string;
180
+ /** Value-forward switch label, e.g. "Add names to events using contacts". */
181
+ label: string;
182
+ /** Optional secondary line shown under the label. */
183
+ description?: string;
184
+ /** The OAuth scope strings this group grants. */
185
+ scopes: string[];
186
+ /** Whether the group is requested by default (switch on). */
187
+ default: boolean;
188
+ };
189
+
190
+ /**
191
+ * Structured scope declaration. `required` scopes must be granted — auth fails
192
+ * and re-prompts if any is declined. `optional` groups are requested by default
193
+ * but auth still succeeds if the user declines them; the connector should detect
194
+ * the absence via the granted `token.scopes` and degrade gracefully.
195
+ */
196
+ export type ScopeConfig = {
197
+ required: string[];
198
+ /** Friendly bullets describing what the always-on (required) access does. */
199
+ description?: string[];
200
+ optional?: OptionalScopeGroup[];
201
+ };
202
+
172
203
  /**
173
204
  * Base class for connectors — twists that sync data from external services.
174
205
  *
@@ -226,8 +257,9 @@ export abstract class Connector<TSelf> extends Twist<TSelf> {
226
257
  /** The OAuth provider this connector authenticates with. */
227
258
  readonly provider?: AuthProvider;
228
259
 
229
- /** OAuth scopes to request for this connector. */
230
- readonly scopes?: string[];
260
+ /** OAuth scopes to request for this connector — a flat list (all required), or
261
+ * a {@link ScopeConfig} declaring required + optional scope groups. */
262
+ readonly scopes?: string[] | ScopeConfig;
231
263
 
232
264
  // ---- Auth model ----
233
265