@plotday/twister 0.43.0 → 0.44.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 (179) hide show
  1. package/bin/commands/deploy.js +87 -10
  2. package/bin/commands/deploy.js.map +1 -1
  3. package/dist/connector.d.ts +87 -7
  4. package/dist/connector.d.ts.map +1 -1
  5. package/dist/connector.js +70 -0
  6. package/dist/connector.js.map +1 -1
  7. package/dist/docs/assets/hierarchy.js +1 -1
  8. package/dist/docs/assets/navigation.js +1 -1
  9. package/dist/docs/assets/search.js +1 -1
  10. package/dist/docs/classes/index.Connector.html +102 -45
  11. package/dist/docs/classes/index.Imap.html +52 -0
  12. package/dist/docs/classes/index.Options.html +2 -2
  13. package/dist/docs/classes/index.Smtp.html +33 -0
  14. package/dist/docs/classes/tool.ITool.html +1 -1
  15. package/dist/docs/classes/tool.Tool.html +23 -16
  16. package/dist/docs/classes/tools_ai.AI.html +1 -1
  17. package/dist/docs/classes/tools_callbacks.Callbacks.html +1 -1
  18. package/dist/docs/classes/tools_integrations.Integrations.html +9 -9
  19. package/dist/docs/classes/tools_network.Network.html +15 -7
  20. package/dist/docs/classes/tools_plot.Plot.html +57 -21
  21. package/dist/docs/classes/tools_store.Store.html +1 -1
  22. package/dist/docs/classes/tools_tasks.Tasks.html +1 -1
  23. package/dist/docs/classes/tools_twists.Twists.html +1 -1
  24. package/dist/docs/classes/twist.Twist.html +29 -18
  25. package/dist/docs/enums/plot.ActionType.html +9 -7
  26. package/dist/docs/enums/plot.ActorType.html +4 -4
  27. package/dist/docs/enums/plot.ConferencingProvider.html +6 -6
  28. package/dist/docs/enums/tools_integrations.AuthProvider.html +13 -11
  29. package/dist/docs/enums/tools_plot.ContactAccess.html +2 -2
  30. package/dist/docs/enums/tools_plot.LinkAccess.html +5 -0
  31. package/dist/docs/enums/tools_plot.PriorityAccess.html +3 -3
  32. package/dist/docs/enums/tools_plot.ThreadAccess.html +8 -3
  33. package/dist/docs/hierarchy.html +1 -1
  34. package/dist/docs/media/AGENTS.md +10 -6
  35. package/dist/docs/media/MULTI_USER_AUTH.md +14 -11
  36. package/dist/docs/modules/index.html +1 -1
  37. package/dist/docs/modules/plot.html +1 -1
  38. package/dist/docs/modules/tools_plot.html +1 -1
  39. package/dist/docs/types/index.BooleanDef.html +2 -2
  40. package/dist/docs/types/index.ImapAddress.html +6 -0
  41. package/dist/docs/types/index.ImapConnectOptions.html +12 -0
  42. package/dist/docs/types/index.ImapFetchOptions.html +8 -0
  43. package/dist/docs/types/index.ImapFlagOperation.html +2 -0
  44. package/dist/docs/types/index.ImapMailbox.html +10 -0
  45. package/dist/docs/types/index.ImapMailboxStatus.html +14 -0
  46. package/dist/docs/types/index.ImapMessage.html +28 -0
  47. package/dist/docs/types/index.ImapSearchCriteria.html +18 -0
  48. package/dist/docs/types/index.ImapSession.html +2 -0
  49. package/dist/docs/types/index.NumberDef.html +2 -2
  50. package/dist/docs/types/index.OptionDef.html +1 -1
  51. package/dist/docs/types/index.OptionsSchema.html +1 -1
  52. package/dist/docs/types/index.ResolvedOptions.html +1 -1
  53. package/dist/docs/types/index.SmtpAddress.html +6 -0
  54. package/dist/docs/types/index.SmtpConnectOptions.html +14 -0
  55. package/dist/docs/types/index.SmtpMessage.html +24 -0
  56. package/dist/docs/types/index.SmtpSendResult.html +8 -0
  57. package/dist/docs/types/index.SmtpSession.html +2 -0
  58. package/dist/docs/types/index.TextDef.html +5 -2
  59. package/dist/docs/types/plot.Action.html +6 -2
  60. package/dist/docs/types/plot.Actor.html +5 -5
  61. package/dist/docs/types/plot.ContentType.html +1 -1
  62. package/dist/docs/types/plot.Link.html +21 -18
  63. package/dist/docs/types/plot.LinkUpdate.html +5 -0
  64. package/dist/docs/types/plot.NewActor.html +1 -1
  65. package/dist/docs/types/plot.NewContact.html +3 -17
  66. package/dist/docs/types/plot.NewLink.html +6 -4
  67. package/dist/docs/types/plot.NewLinkWithNotes.html +5 -4
  68. package/dist/docs/types/plot.NewNote.html +6 -2
  69. package/dist/docs/types/plot.NewTags.html +1 -1
  70. package/dist/docs/types/plot.NewThread.html +1 -1
  71. package/dist/docs/types/plot.NewThreadWithNotes.html +1 -1
  72. package/dist/docs/types/plot.Note.html +1 -1
  73. package/dist/docs/types/plot.NoteUpdate.html +1 -1
  74. package/dist/docs/types/plot.PickPriorityConfig.html +2 -2
  75. package/dist/docs/types/plot.PlanOperation.html +10 -0
  76. package/dist/docs/types/plot.PriorityUpdate.html +5 -3
  77. package/dist/docs/types/plot.Tags.html +1 -1
  78. package/dist/docs/types/plot.Thread.html +1 -1
  79. package/dist/docs/types/plot.ThreadCommon.html +7 -7
  80. package/dist/docs/types/plot.ThreadFilter.html +2 -2
  81. package/dist/docs/types/plot.ThreadMeta.html +1 -1
  82. package/dist/docs/types/plot.ThreadType.html +3 -3
  83. package/dist/docs/types/plot.ThreadUpdate.html +1 -1
  84. package/dist/docs/types/plot.ThreadWithNotes.html +1 -1
  85. package/dist/docs/types/tools_integrations.ArchiveLinkFilter.html +5 -5
  86. package/dist/docs/types/tools_integrations.AuthToken.html +4 -4
  87. package/dist/docs/types/tools_integrations.Authorization.html +4 -4
  88. package/dist/docs/types/tools_integrations.Channel.html +4 -2
  89. package/dist/docs/types/tools_integrations.LinkTypeConfig.html +10 -8
  90. package/dist/docs/types/tools_plot.LinkFilter.html +5 -5
  91. package/dist/docs/types/tools_plot.LinkSearchResult.html +1 -1
  92. package/dist/docs/types/tools_plot.NoteIntentHandler.html +4 -4
  93. package/dist/docs/types/tools_plot.NoteSearchResult.html +1 -1
  94. package/dist/docs/types/tools_plot.SearchOptions.html +4 -4
  95. package/dist/docs/types/tools_plot.SearchResult.html +1 -1
  96. package/dist/docs/variables/tools_plot.SEARCH_DEFAULT_LIMIT.html +1 -1
  97. package/dist/docs/variables/tools_plot.SEARCH_MAX_LIMIT.html +1 -1
  98. package/dist/llm-docs/connector.d.ts +1 -1
  99. package/dist/llm-docs/connector.d.ts.map +1 -1
  100. package/dist/llm-docs/connector.js +1 -1
  101. package/dist/llm-docs/connector.js.map +1 -1
  102. package/dist/llm-docs/index.d.ts.map +1 -1
  103. package/dist/llm-docs/index.js +4 -0
  104. package/dist/llm-docs/index.js.map +1 -1
  105. package/dist/llm-docs/options.d.ts +1 -1
  106. package/dist/llm-docs/options.d.ts.map +1 -1
  107. package/dist/llm-docs/options.js +1 -1
  108. package/dist/llm-docs/options.js.map +1 -1
  109. package/dist/llm-docs/plot.d.ts +1 -1
  110. package/dist/llm-docs/plot.d.ts.map +1 -1
  111. package/dist/llm-docs/plot.js +1 -1
  112. package/dist/llm-docs/plot.js.map +1 -1
  113. package/dist/llm-docs/tool.d.ts +1 -1
  114. package/dist/llm-docs/tool.d.ts.map +1 -1
  115. package/dist/llm-docs/tool.js +1 -1
  116. package/dist/llm-docs/tool.js.map +1 -1
  117. package/dist/llm-docs/tools/imap.d.ts +9 -0
  118. package/dist/llm-docs/tools/imap.d.ts.map +1 -0
  119. package/dist/llm-docs/tools/imap.js +8 -0
  120. package/dist/llm-docs/tools/imap.js.map +1 -0
  121. package/dist/llm-docs/tools/integrations.d.ts +1 -1
  122. package/dist/llm-docs/tools/integrations.d.ts.map +1 -1
  123. package/dist/llm-docs/tools/integrations.js +1 -1
  124. package/dist/llm-docs/tools/integrations.js.map +1 -1
  125. package/dist/llm-docs/tools/network.d.ts +1 -1
  126. package/dist/llm-docs/tools/network.d.ts.map +1 -1
  127. package/dist/llm-docs/tools/network.js +1 -1
  128. package/dist/llm-docs/tools/network.js.map +1 -1
  129. package/dist/llm-docs/tools/plot.d.ts +1 -1
  130. package/dist/llm-docs/tools/plot.d.ts.map +1 -1
  131. package/dist/llm-docs/tools/plot.js +1 -1
  132. package/dist/llm-docs/tools/plot.js.map +1 -1
  133. package/dist/llm-docs/tools/smtp.d.ts +9 -0
  134. package/dist/llm-docs/tools/smtp.d.ts.map +1 -0
  135. package/dist/llm-docs/tools/smtp.js +8 -0
  136. package/dist/llm-docs/tools/smtp.js.map +1 -0
  137. package/dist/llm-docs/twist.d.ts +1 -1
  138. package/dist/llm-docs/twist.d.ts.map +1 -1
  139. package/dist/llm-docs/twist.js +1 -1
  140. package/dist/llm-docs/twist.js.map +1 -1
  141. package/dist/options.d.ts +3 -0
  142. package/dist/options.d.ts.map +1 -1
  143. package/dist/options.js.map +1 -1
  144. package/dist/plot.d.ts +132 -21
  145. package/dist/plot.d.ts.map +1 -1
  146. package/dist/plot.js +2 -0
  147. package/dist/plot.js.map +1 -1
  148. package/dist/tool.d.ts +10 -1
  149. package/dist/tool.d.ts.map +1 -1
  150. package/dist/tool.js +10 -1
  151. package/dist/tool.js.map +1 -1
  152. package/dist/tools/imap.d.ts +235 -0
  153. package/dist/tools/imap.d.ts.map +1 -0
  154. package/dist/tools/imap.js +61 -0
  155. package/dist/tools/imap.js.map +1 -0
  156. package/dist/tools/index.d.ts +2 -0
  157. package/dist/tools/index.d.ts.map +1 -1
  158. package/dist/tools/index.js +2 -0
  159. package/dist/tools/index.js.map +1 -1
  160. package/dist/tools/integrations.d.ts +7 -1
  161. package/dist/tools/integrations.d.ts.map +1 -1
  162. package/dist/tools/integrations.js +2 -0
  163. package/dist/tools/integrations.js.map +1 -1
  164. package/dist/tools/network.d.ts +23 -16
  165. package/dist/tools/network.d.ts.map +1 -1
  166. package/dist/tools/network.js.map +1 -1
  167. package/dist/tools/plot.d.ts +90 -3
  168. package/dist/tools/plot.d.ts.map +1 -1
  169. package/dist/tools/plot.js +14 -0
  170. package/dist/tools/plot.js.map +1 -1
  171. package/dist/tools/smtp.d.ts +155 -0
  172. package/dist/tools/smtp.d.ts.map +1 -0
  173. package/dist/tools/smtp.js +62 -0
  174. package/dist/tools/smtp.js.map +1 -0
  175. package/dist/twist.d.ts +16 -2
  176. package/dist/twist.d.ts.map +1 -1
  177. package/dist/twist.js +15 -1
  178. package/dist/twist.js.map +1 -1
  179. package/package.json +21 -1
@@ -51,6 +51,13 @@ async function fetchWithRetry(url, options, maxRetries = 3) {
51
51
  for (let attempt = 0; attempt <= maxRetries; attempt++) {
52
52
  try {
53
53
  const response = await fetch(url, options);
54
+ // Retry on 429 (rate limited) or 503 (service unavailable) with Retry-After header support
55
+ if ((response.status === 429 || response.status === 503) && attempt < maxRetries) {
56
+ const retryAfter = parseInt(response.headers.get("Retry-After") || "", 10);
57
+ const delay = (retryAfter || Math.pow(2, attempt)) * 1000;
58
+ await new Promise((r) => setTimeout(r, delay));
59
+ continue;
60
+ }
54
61
  if (response.status < 500 || attempt === maxRetries) {
55
62
  return response;
56
63
  }
@@ -86,13 +93,19 @@ async function createNewPublisher(apiUrl, deployToken) {
86
93
  process.exit(1);
87
94
  }
88
95
  else if (userResponse.status >= 500) {
89
- out.error("Server error", "The Plot API is temporarily unavailable. Please try again.");
96
+ const errorBody = await userResponse.text().catch(() => "");
97
+ out.error(`Server error (${userResponse.status})`, errorBody || "The Plot API is temporarily unavailable. Please try again.");
90
98
  process.exit(1);
91
99
  }
92
100
  }
93
101
  catch (error) {
94
102
  // Ignore error, just won't have default
95
103
  }
104
+ // Fail in non-interactive environments
105
+ if (!process.stdout.isTTY) {
106
+ out.error("Cannot create publisher in non-interactive mode", 'Add "publisher" to package.json to specify the publisher name.');
107
+ process.exit(1);
108
+ }
96
109
  // Prompt for publisher details
97
110
  const response = await (0, prompts_1.default)([
98
111
  {
@@ -149,7 +162,8 @@ async function createNewPublisher(apiUrl, deployToken) {
149
162
  process.exit(1);
150
163
  }
151
164
  if (createResponse.status >= 500) {
152
- out.error("Server error", "The Plot API is temporarily unavailable. Please try again.");
165
+ const errorBody = await createResponse.text().catch(() => "");
166
+ out.error(`Server error (${createResponse.status})`, errorBody || "The Plot API is temporarily unavailable. Please try again.");
153
167
  process.exit(1);
154
168
  }
155
169
  const errorText = await createResponse.text();
@@ -220,6 +234,8 @@ async function deployCommand(options) {
220
234
  const twistDescription = packageJson?.description;
221
235
  const twistLogoUrl = packageJson?.logoUrl;
222
236
  const twistLogoUrlDark = packageJson?.logoUrlDark;
237
+ const twistPublisher = packageJson?.publisher;
238
+ const twistPublisherUrl = packageJson?.publisherUrl;
223
239
  const environment = options.environment || "personal";
224
240
  // Validate required fields
225
241
  if (!twistName) {
@@ -250,8 +266,13 @@ async function deployCommand(options) {
250
266
  envToken: process.env.PLOT_DEPLOY_TOKEN,
251
267
  dotEnvToken: dotEnvToken,
252
268
  });
253
- // If still no token, prompt for it
269
+ // If still no token, prompt for it (or fail in CI)
254
270
  if (!deployToken) {
271
+ // Fail in non-interactive environments
272
+ if (!process.stdout.isTTY) {
273
+ out.error("No deploy token found", "Set PLOT_DEPLOY_TOKEN env var or add DEPLOY_TOKEN to .env file.");
274
+ process.exit(1);
275
+ }
255
276
  out.info("Authentication required", [
256
277
  "Run 'plot login' for easiest setup",
257
278
  "Or provide token via --deploy-token, PLOT_DEPLOY_TOKEN env var, or DEPLOY_TOKEN in .env",
@@ -307,7 +328,8 @@ async function deployCommand(options) {
307
328
  process.exit(1);
308
329
  }
309
330
  else if (twistInfoResponse.status >= 500) {
310
- out.error("Server error", "The Plot API is temporarily unavailable. Please try again.");
331
+ const errorBody = await twistInfoResponse.text().catch(() => "");
332
+ out.error(`Server error (${twistInfoResponse.status})`, errorBody || "The Plot API is temporarily unavailable. Please try again.");
311
333
  process.exit(1);
312
334
  }
313
335
  else if (twistInfoResponse.status !== 404) {
@@ -342,7 +364,8 @@ async function deployCommand(options) {
342
364
  process.exit(1);
343
365
  }
344
366
  if (publishersResponse.status >= 500) {
345
- out.error("Server error", "The Plot API is temporarily unavailable. Please try again.");
367
+ const errorBody = await publishersResponse.text().catch(() => "");
368
+ out.error(`Server error (${publishersResponse.status})`, errorBody || "The Plot API is temporarily unavailable. Please try again.");
346
369
  process.exit(1);
347
370
  }
348
371
  const errorText = await publishersResponse.text();
@@ -359,9 +382,57 @@ async function deployCommand(options) {
359
382
  out.error("Could not connect to Plot API", "Please check your internet connection or try again later.");
360
383
  process.exit(1);
361
384
  }
362
- // At this point, fetch succeeded or failed with non-network error
363
- // Network errors would have caused exit above
364
- if (fetchSucceeded && publishers.length > 0) {
385
+ // Auto-resolve publisher from package.json if specified
386
+ if (twistPublisher) {
387
+ // Try to find existing publisher by name
388
+ if (fetchSucceeded) {
389
+ const match = publishers.find((p) => p.name.toLowerCase() === twistPublisher.toLowerCase());
390
+ if (match) {
391
+ publisherId = match.id;
392
+ out.progress(`Using publisher "${match.name}"`);
393
+ }
394
+ }
395
+ // If not found, create the publisher automatically
396
+ if (!publisherId) {
397
+ try {
398
+ out.progress(`Creating publisher "${twistPublisher}"...`);
399
+ const createResponse = await fetchWithRetry(`${options.apiUrl}/v1/twist/publishers`, {
400
+ method: "POST",
401
+ headers: {
402
+ "Content-Type": "application/json",
403
+ Authorization: `Bearer ${deployToken}`,
404
+ },
405
+ body: JSON.stringify({
406
+ name: twistPublisher,
407
+ url: twistPublisherUrl || null,
408
+ }),
409
+ });
410
+ if (!createResponse.ok) {
411
+ if (createResponse.status === 401) {
412
+ out.error("Authentication failed", "Your login token is invalid or has expired. Please run 'plot login' to authenticate.");
413
+ process.exit(1);
414
+ }
415
+ const errorText = await createResponse.text();
416
+ out.error("Failed to create publisher", errorText);
417
+ process.exit(1);
418
+ }
419
+ const publisher = (await createResponse.json());
420
+ out.success(`Publisher "${publisher.name}" created`);
421
+ publisherId = publisher.id;
422
+ }
423
+ catch (error) {
424
+ const errorInfo = (0, network_error_1.handleNetworkError)(error);
425
+ out.error("Failed to create publisher", errorInfo.message);
426
+ process.exit(1);
427
+ }
428
+ }
429
+ }
430
+ else if (fetchSucceeded && publishers.length > 0) {
431
+ // No publisher in package.json — fall back to interactive prompt
432
+ if (!process.stdout.isTTY) {
433
+ out.error("No publisher specified", 'Add "publisher" to package.json to specify the publisher name.');
434
+ process.exit(1);
435
+ }
365
436
  // Show selection UI with existing publishers + "New publisher" option
366
437
  const choices = [
367
438
  ...publishers.map((p) => ({
@@ -394,7 +465,12 @@ async function deployCommand(options) {
394
465
  }
395
466
  }
396
467
  else {
397
- // No existing publishers - create new one
468
+ // No publishers exist and none in package.json
469
+ if (!process.stdout.isTTY) {
470
+ out.error("No publisher specified", 'Add "publisher" to package.json to specify the publisher name.');
471
+ process.exit(1);
472
+ }
473
+ // Interactive — create new one
398
474
  publisherId = await createNewPublisher(options.apiUrl, deployToken);
399
475
  }
400
476
  }
@@ -475,7 +551,8 @@ async function deployCommand(options) {
475
551
  process.exit(1);
476
552
  }
477
553
  if (response.status >= 500) {
478
- out.error("Server error", "The Plot API is temporarily unavailable. Please try again.");
554
+ const errorBody = await response.text().catch(() => "");
555
+ out.error(`Server error (${response.status})`, errorBody || "The Plot API is temporarily unavailable. Please try again.");
479
556
  process.exit(1);
480
557
  }
481
558
  const errorText = await response.text();
@@ -1 +1 @@
1
- {"version":3,"file":"deploy.js","sourceRoot":"","sources":["../../cli/commands/deploy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"deploy.js","sourceRoot":"","sources":["../../cli/commands/deploy.ts"],"names":[],"mappings":"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"}
@@ -54,9 +54,37 @@ export declare abstract class Connector<TSelf> extends Twist<TSelf> {
54
54
  */
55
55
  static readonly isConnector = true;
56
56
  /** The OAuth provider this connector authenticates with. */
57
- abstract readonly provider: AuthProvider;
57
+ readonly provider?: AuthProvider;
58
58
  /** OAuth scopes to request for this connector. */
59
- abstract readonly scopes: string[];
59
+ readonly scopes?: string[];
60
+ /**
61
+ * When true, one credential is shared across all users in the workspace,
62
+ * entered once by the installer. When false (default), each user provides
63
+ * their own credential.
64
+ *
65
+ * Applies to both OAuth and key-based connectors:
66
+ * - Shared OAuth: e.g. Slack bot token (workspace-level)
67
+ * - Shared key: e.g. Attio workspace API key
68
+ * - Individual OAuth: e.g. Google Calendar (per-user)
69
+ * - Individual key: e.g. Fellow (per-user API key)
70
+ */
71
+ readonly shared?: boolean;
72
+ /**
73
+ * The Options field name that contains the authentication key (e.g. "apiKey").
74
+ * Must reference a `secure: true` field in the Options schema.
75
+ *
76
+ * When set, this connector uses key-based auth instead of OAuth.
77
+ * For individual connectors (`shared` is false), this field is stored
78
+ * per-user rather than in shared config.
79
+ */
80
+ readonly keyOption?: string;
81
+ /**
82
+ * When true, this connector has a single implicit channel.
83
+ * `getChannels()` must return exactly one Channel.
84
+ * The UI will show channel config (priority, create threads) inline
85
+ * instead of a channel list.
86
+ */
87
+ readonly singleChannel?: boolean;
60
88
  /**
61
89
  * Registry of link types this connector creates (e.g., issue, event, message).
62
90
  * Used for display in the UI (icons, labels, statuses).
@@ -70,6 +98,21 @@ export declare abstract class Connector<TSelf> extends Twist<TSelf> {
70
98
  * messaging) where user replies should be written back to the external service.
71
99
  */
72
100
  static readonly handleReplies?: boolean;
101
+ /**
102
+ * Returns a human-readable name for the connected account.
103
+ * Shown in the connections list and edit modal to identify this connection.
104
+ *
105
+ * For OAuth connectors, this is typically the workspace or organization name
106
+ * (e.g., "Acme Corp" for a Linear workspace). For API key connectors, this
107
+ * could be the workspace name from the external service.
108
+ *
109
+ * Override this in your connector to return a meaningful account name.
110
+ *
111
+ * @param auth - The authorization (null for no-provider connectors)
112
+ * @param token - The access token (null for no-provider connectors)
113
+ * @returns Promise resolving to the account display name
114
+ */
115
+ getAccountName(auth: Authorization | null, token: AuthToken | null): Promise<string | null>;
73
116
  /**
74
117
  * Returns available channels for the authorized actor.
75
118
  * Called after OAuth is complete, during the setup/edit modal.
@@ -78,10 +121,33 @@ export declare abstract class Connector<TSelf> extends Twist<TSelf> {
78
121
  * @param token - The access token for making API calls
79
122
  * @returns Promise resolving to available channels for the user to select
80
123
  */
81
- abstract getChannels(auth: Authorization, token: AuthToken): Promise<Channel[]>;
124
+ abstract getChannels(auth: Authorization | null, token: AuthToken | null): Promise<Channel[]>;
82
125
  /**
83
126
  * Called when a channel resource is enabled for syncing.
84
- * Should set up webhooks and start initial sync.
127
+ *
128
+ * **IMPORTANT: This method runs inline in the HTTP request handler.**
129
+ * Any long-running work (webhook setup, API calls, sync) MUST be queued
130
+ * as a separate task via `this.runTask()`, not executed inline. Blocking
131
+ * here causes the client to spin waiting for the response.
132
+ *
133
+ * Only lightweight operations should appear directly in this method:
134
+ * `this.set()`, `this.get()`, `this.callback()`, and `this.runTask()`.
135
+ *
136
+ * @example
137
+ * ```typescript
138
+ * async onChannelEnabled(channel: Channel): Promise<void> {
139
+ * await this.set(`sync_enabled_${channel.id}`, true);
140
+ * await this.set(`sync_state_${channel.id}`, { channelId: channel.id });
141
+ *
142
+ * // Queue sync as a task — do NOT use this.run() or call sync methods inline
143
+ * const syncCallback = await this.callback(this.syncBatch, 1, "full", channel.id, true);
144
+ * await this.runTask(syncCallback);
145
+ *
146
+ * // Queue webhook setup as a task — do NOT call setupWebhook() inline
147
+ * const webhookCallback = await this.callback(this.setupWebhook, channel.id);
148
+ * await this.runTask(webhookCallback);
149
+ * }
150
+ * ```
85
151
  *
86
152
  * @param channel - The channel that was enabled
87
153
  */
@@ -106,10 +172,24 @@ export declare abstract class Connector<TSelf> extends Twist<TSelf> {
106
172
  * Override to write back comments to the external service
107
173
  * (e.g., adding a comment to a Linear issue).
108
174
  *
175
+ * Returning a string sets the note's `key` for future upsert matching,
176
+ * linking the Plot note to its external counterpart so that subsequent
177
+ * syncs (reactions, edits) update the existing note instead of creating duplicates.
178
+ *
109
179
  * @param note - The created note
110
180
  * @param thread - The thread the note belongs to (includes thread.meta with connector-specific data)
181
+ * @returns Optional note key for external deduplication
182
+ */
183
+ onNoteCreated(note: Note, thread: Thread): Promise<string | void>;
184
+ /**
185
+ * Called when a note on a thread owned by this connector is updated.
186
+ * Override to write back changes to the external service
187
+ * (e.g., syncing reaction tags as emoji reactions).
188
+ *
189
+ * @param note - The updated note (includes current tags)
190
+ * @param thread - The thread the note belongs to (includes thread.meta with connector-specific data)
111
191
  */
112
- onNoteCreated(note: Note, thread: Thread): Promise<void>;
192
+ onNoteUpdated(note: Note, thread: Thread): Promise<void>;
113
193
  /**
114
194
  * Called when a user reads or unreads a thread owned by this connector.
115
195
  * Override to write back read status to the external service
@@ -159,8 +239,8 @@ export declare abstract class Connector<TSelf> extends Twist<TSelf> {
159
239
  * @param context.actor - The actor who activated the connector
160
240
  */
161
241
  activate(context: {
162
- auth: Authorization;
163
- actor: Actor;
242
+ auth?: Authorization;
243
+ actor?: Actor;
164
244
  }): Promise<void>;
165
245
  }
166
246
  /** @deprecated Use `Connector` instead. */
@@ -1 +1 @@
1
- {"version":3,"file":"connector.d.ts","sourceRoot":"","sources":["../src/connector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,KAAK,EAAE,KAAK,OAAO,EAAE,KAAK,IAAI,EAAE,KAAK,IAAI,EAAE,KAAK,MAAM,EAAE,MAAM,QAAQ,CAAC;AACrF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AACxD,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,SAAS,EACd,KAAK,aAAa,EAClB,KAAK,OAAO,EACZ,KAAK,cAAc,EACpB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAEhC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,8BAAsB,SAAS,CAAC,KAAK,CAAE,SAAQ,KAAK,CAAC,KAAK,CAAC;IACzD;;;OAGG;IACH,MAAM,CAAC,QAAQ,CAAC,WAAW,QAAQ;IAInC,4DAA4D;IAC5D,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC;IAEzC,kDAAkD;IAClD,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;IAInC;;;OAGG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,cAAc,EAAE,CAAC;IAEtC;;;;;;OAMG;IACH,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;IAIxC;;;;;;;OAOG;IACH,QAAQ,CAAC,WAAW,CAClB,IAAI,EAAE,aAAa,EACnB,KAAK,EAAE,SAAS,GACf,OAAO,CAAC,OAAO,EAAE,CAAC;IAErB;;;;;OAKG;IACH,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAE1D;;;;;OAKG;IACH,QAAQ,CAAC,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAI3D;;;;;;OAMG;IAEH,aAAa,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAIxC;;;;;;;OAOG;IAEH,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIxD;;;;;;;;OAQG;IAEH,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAI1E;;;;;;;;;;OAUG;IAEH,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE;QAAE,IAAI,CAAC,EAAE,IAAI,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAIlG;;;;;;;;;OASG;IAEH,wBAAwB,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,qBAAqB,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;IAMnJ;;;;;;;;;;;;OAYG;IAEH,QAAQ,CAAC,OAAO,EAAE;QAAE,IAAI,EAAE,aAAa,CAAC;QAAC,KAAK,EAAE,KAAK,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;CAGxE;AAED,2CAA2C;AAC3C,OAAO,EAAE,SAAS,IAAI,MAAM,EAAE,CAAC"}
1
+ {"version":3,"file":"connector.d.ts","sourceRoot":"","sources":["../src/connector.ts"],"names":[],"mappings":"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"}
package/dist/connector.js CHANGED
@@ -50,7 +50,41 @@ export class Connector extends Twist {
50
50
  * across worker boundaries.
51
51
  */
52
52
  static isConnector = true;
53
+ // ---- Identity (abstract — every connector must declare) ----
54
+ /** The OAuth provider this connector authenticates with. */
55
+ provider;
56
+ /** OAuth scopes to request for this connector. */
57
+ scopes;
58
+ // ---- Auth model ----
59
+ /**
60
+ * When true, one credential is shared across all users in the workspace,
61
+ * entered once by the installer. When false (default), each user provides
62
+ * their own credential.
63
+ *
64
+ * Applies to both OAuth and key-based connectors:
65
+ * - Shared OAuth: e.g. Slack bot token (workspace-level)
66
+ * - Shared key: e.g. Attio workspace API key
67
+ * - Individual OAuth: e.g. Google Calendar (per-user)
68
+ * - Individual key: e.g. Fellow (per-user API key)
69
+ */
70
+ shared;
71
+ /**
72
+ * The Options field name that contains the authentication key (e.g. "apiKey").
73
+ * Must reference a `secure: true` field in the Options schema.
74
+ *
75
+ * When set, this connector uses key-based auth instead of OAuth.
76
+ * For individual connectors (`shared` is false), this field is stored
77
+ * per-user rather than in shared config.
78
+ */
79
+ keyOption;
53
80
  // ---- Optional metadata ----
81
+ /**
82
+ * When true, this connector has a single implicit channel.
83
+ * `getChannels()` must return exactly one Channel.
84
+ * The UI will show channel config (priority, create threads) inline
85
+ * instead of a channel list.
86
+ */
87
+ singleChannel;
54
88
  /**
55
89
  * Registry of link types this connector creates (e.g., issue, event, message).
56
90
  * Used for display in the UI (icons, labels, statuses).
@@ -64,6 +98,25 @@ export class Connector extends Twist {
64
98
  * messaging) where user replies should be written back to the external service.
65
99
  */
66
100
  static handleReplies;
101
+ // ---- Account identity (abstract — every connector must implement) ----
102
+ /**
103
+ * Returns a human-readable name for the connected account.
104
+ * Shown in the connections list and edit modal to identify this connection.
105
+ *
106
+ * For OAuth connectors, this is typically the workspace or organization name
107
+ * (e.g., "Acme Corp" for a Linear workspace). For API key connectors, this
108
+ * could be the workspace name from the external service.
109
+ *
110
+ * Override this in your connector to return a meaningful account name.
111
+ *
112
+ * @param auth - The authorization (null for no-provider connectors)
113
+ * @param token - The access token (null for no-provider connectors)
114
+ * @returns Promise resolving to the account display name
115
+ */
116
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
117
+ getAccountName(auth, token) {
118
+ return Promise.resolve(null);
119
+ }
67
120
  // ---- Write-back hooks (optional, default no-ops) ----
68
121
  /**
69
122
  * Called when a link created by this connector is updated by the user.
@@ -81,13 +134,30 @@ export class Connector extends Twist {
81
134
  * Override to write back comments to the external service
82
135
  * (e.g., adding a comment to a Linear issue).
83
136
  *
137
+ * Returning a string sets the note's `key` for future upsert matching,
138
+ * linking the Plot note to its external counterpart so that subsequent
139
+ * syncs (reactions, edits) update the existing note instead of creating duplicates.
140
+ *
84
141
  * @param note - The created note
85
142
  * @param thread - The thread the note belongs to (includes thread.meta with connector-specific data)
143
+ * @returns Optional note key for external deduplication
86
144
  */
87
145
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
88
146
  onNoteCreated(note, thread) {
89
147
  return Promise.resolve();
90
148
  }
149
+ /**
150
+ * Called when a note on a thread owned by this connector is updated.
151
+ * Override to write back changes to the external service
152
+ * (e.g., syncing reaction tags as emoji reactions).
153
+ *
154
+ * @param note - The updated note (includes current tags)
155
+ * @param thread - The thread the note belongs to (includes thread.meta with connector-specific data)
156
+ */
157
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
158
+ onNoteUpdated(note, thread) {
159
+ return Promise.resolve();
160
+ }
91
161
  /**
92
162
  * Called when a user reads or unreads a thread owned by this connector.
93
163
  * Override to write back read status to the external service
@@ -1 +1 @@
1
- {"version":3,"file":"connector.js","sourceRoot":"","sources":["../src/connector.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAEhC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,MAAM,OAAgB,SAAiB,SAAQ,KAAY;IACzD;;;OAGG;IACH,MAAM,CAAU,WAAW,GAAG,IAAI,CAAC;IAUnC,8BAA8B;IAE9B;;;OAGG;IACM,SAAS,CAAoB;IAEtC;;;;;;OAMG;IACH,MAAM,CAAU,aAAa,CAAW;IAiCxC,wDAAwD;IAExD;;;;;;OAMG;IACH,6DAA6D;IAC7D,aAAa,CAAC,IAAU;QACtB,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;IAED;;;;;;;OAOG;IACH,6DAA6D;IAC7D,aAAa,CAAC,IAAU,EAAE,MAAc;QACtC,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;IAED;;;;;;;;OAQG;IACH,6DAA6D;IAC7D,YAAY,CAAC,MAAc,EAAE,KAAY,EAAE,MAAe;QACxD,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;IAED;;;;;;;;;;OAUG;IACH,6DAA6D;IAC7D,YAAY,CAAC,MAAc,EAAE,KAAY,EAAE,IAAa,EAAE,OAAwB;QAChF,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;IAED;;;;;;;;;OASG;IACH,6DAA6D;IAC7D,wBAAwB,CAAC,MAAc,EAAE,UAAkB,EAAE,SAAkB,EAAE,MAAoC,EAAE,KAAY;QACjI,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;IAED,uBAAuB;IAEvB;;;;;;;;;;;;OAYG;IACH,kGAAkG;IAClG,QAAQ,CAAC,OAA8C;QACrD,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;;AAGH,2CAA2C;AAC3C,OAAO,EAAE,SAAS,IAAI,MAAM,EAAE,CAAC"}
1
+ {"version":3,"file":"connector.js","sourceRoot":"","sources":["../src/connector.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAEhC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,MAAM,OAAgB,SAAiB,SAAQ,KAAY;IACzD;;;OAGG;IACH,MAAM,CAAU,WAAW,GAAG,IAAI,CAAC;IAEnC,+DAA+D;IAE/D,4DAA4D;IACnD,QAAQ,CAAgB;IAEjC,kDAAkD;IACzC,MAAM,CAAY;IAE3B,uBAAuB;IAEvB;;;;;;;;;;OAUG;IACM,MAAM,CAAW;IAE1B;;;;;;;OAOG;IACM,SAAS,CAAU;IAE5B,8BAA8B;IAE9B;;;;;OAKG;IACM,aAAa,CAAW;IAEjC;;;OAGG;IACM,SAAS,CAAoB;IAEtC;;;;;;OAMG;IACH,MAAM,CAAU,aAAa,CAAW;IAExC,yEAAyE;IAEzE;;;;;;;;;;;;;OAaG;IACH,6DAA6D;IAC7D,cAAc,CACZ,IAA0B,EAC1B,KAAuB;QAEvB,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAwDD,wDAAwD;IAExD;;;;;;OAMG;IACH,6DAA6D;IAC7D,aAAa,CAAC,IAAU;QACtB,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,6DAA6D;IAC7D,aAAa,CAAC,IAAU,EAAE,MAAc;QACtC,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;IAED;;;;;;;OAOG;IACH,6DAA6D;IAC7D,aAAa,CAAC,IAAU,EAAE,MAAc;QACtC,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;IAED;;;;;;;;OAQG;IACH,6DAA6D;IAC7D,YAAY,CAAC,MAAc,EAAE,KAAY,EAAE,MAAe;QACxD,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;IAED;;;;;;;;;;OAUG;IACH,6DAA6D;IAC7D,YAAY,CAAC,MAAc,EAAE,KAAY,EAAE,IAAa,EAAE,OAAwB;QAChF,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;IAED;;;;;;;;;OASG;IACH,6DAA6D;IAC7D,wBAAwB,CAAC,MAAc,EAAE,UAAkB,EAAE,SAAkB,EAAE,MAAoC,EAAE,KAAY;QACjI,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;IAED,uBAAuB;IAEvB;;;;;;;;;;;;OAYG;IACH,kGAAkG;IAClG,QAAQ,CAAC,OAAgD;QACvD,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;;AAGH,2CAA2C;AAC3C,OAAO,EAAE,SAAS,IAAI,MAAM,EAAE,CAAC"}
@@ -1 +1 @@
1
- window.hierarchyData = "eJyVkz1vwyAQhv/LzRdq8Edsb1EmL22lZquiyrVpY5lABFSpFPm/V9hphDoEunjAz91zvDouoJWyBupXynKs9giafwje2UFJA/UFKveR7ZFDDbvzYCwgjIPsoaasRPjSAmroRGsMNw/WAWTGyMEeBeDyC2qwpl+5utVygNAdBtFrLp2aJsV+QqAs92zNTilx16aUIDP1LxkrMasY5ozhmqa4LlMsiwQrViBNaIU0yRKkWUqXkUo/gJiJIgaaELKK/U3WhFqbtzlgsyRswpKc+ZJNExa0A9k04cZrmnqNt60Q7203Rlyg+0XJrSjCVvq2Rlr+qdtlQ4PCwaOJXxrWlkXiaR+5PSs9ho1yAcm1IOypWOF5noW6/8ZmyUkoSxwabu+W2uv/YpXmYYFxGJnhGEXmR7VrTcwuWIeRGY5Q0MRPaauk5J1V+p5mkD3/Jjc0QpKl1JM8nYJLtiiuYEgwTT9xSMKD"
1
+ window.hierarchyData = "eJyVk0FPwyAUx7/LOz9R2lFob4unXtTE3cxiaouuGYWlYGay9Lsb2rmgh4GXHujv/X/weJxgNMZZqF5oxrDcIozyXcnW9UZbqE5Q+o9uBgkVbI69dYCw73UHFc0EwueooIJWNdZKe+s8QGaM7NygAJdfUIGz3Y2vu1kWENpdr7pRaq+mJd9OCDRjga3eGKOu2oxRZKb+JcsEslWBjBfIC44iL7GkHEshkFJ6h5TmFCljAmmR5UgLft6cCFuRsreErU0IbFX87bGNRdvXudV26bVNkPBQsq7jgqYn6zoezAseBN83Sr017T7hAO0PSi5FcZvIw3mstZMfY7PMalTYBzQJS+PakoaHfJDuaMZ93KgXkJwLEjwinLEnZa6/tllyUMYRj8bj/XgH+c/OjDIusB4jM5yiyGk4zY1NmQXnMTLDKYry18gZrWXrzHhN0+tOfpELmiBhLLyKemgO8XxPJUQXWR7ewuASoj2VEs3D1jweok9jST+DMcE0fQOSqP6D"
@@ -1 +1 @@
1
- window.navigationData = "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"
1
+ window.navigationData = "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"