@plotday/twister 0.57.0 → 0.59.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 (328) hide show
  1. package/README.md +53 -44
  2. package/bin/commands/create.js +9 -14
  3. package/bin/commands/create.js.map +1 -1
  4. package/bin/commands/deploy.js +2 -0
  5. package/bin/commands/deploy.js.map +1 -1
  6. package/bin/commands/generate.js +8 -5
  7. package/bin/commands/generate.js.map +1 -1
  8. package/bin/index.js +2 -2
  9. package/bin/index.js.map +1 -1
  10. package/bin/templates/AGENTS.template.md +110 -94
  11. package/bin/templates/README.template.md +36 -33
  12. package/cli/templates/AGENTS.template.md +110 -94
  13. package/cli/templates/README.template.md +36 -33
  14. package/dist/connector.d.ts +58 -17
  15. package/dist/connector.d.ts.map +1 -1
  16. package/dist/connector.js +51 -13
  17. package/dist/connector.js.map +1 -1
  18. package/dist/docs/assets/hierarchy.js +1 -1
  19. package/dist/docs/assets/navigation.js +1 -1
  20. package/dist/docs/assets/search.js +1 -1
  21. package/dist/docs/classes/index.Connector.html +90 -60
  22. package/dist/docs/classes/index.FileNotFoundError.html +2 -2
  23. package/dist/docs/classes/index.Files.html +4 -4
  24. package/dist/docs/classes/index.Imap.html +10 -10
  25. package/dist/docs/classes/index.Options.html +2 -2
  26. package/dist/docs/classes/index.Smtp.html +6 -6
  27. package/dist/docs/classes/tool.ITool.html +2 -2
  28. package/dist/docs/classes/tool.Tool.html +23 -23
  29. package/dist/docs/classes/tools_ai.AI.html +5 -5
  30. package/dist/docs/classes/tools_callbacks.Callbacks.html +8 -8
  31. package/dist/docs/classes/tools_integrations.Integrations.html +15 -15
  32. package/dist/docs/classes/tools_network.Network.html +9 -9
  33. package/dist/docs/classes/tools_plot.Plot.html +34 -33
  34. package/dist/docs/classes/tools_store.Store.html +8 -8
  35. package/dist/docs/classes/tools_tasks.Tasks.html +6 -6
  36. package/dist/docs/classes/tools_twists.Twists.html +12 -11
  37. package/dist/docs/classes/twist.Twist.html +28 -28
  38. package/dist/docs/documents/Building_Connectors.html +42 -28
  39. package/dist/docs/documents/Built-in_Tools.html +170 -67
  40. package/dist/docs/documents/CLI_Reference.html +68 -47
  41. package/dist/docs/documents/Core_Concepts.html +52 -81
  42. package/dist/docs/documents/Getting_Started.html +28 -31
  43. package/dist/docs/documents/MULTI_USER_AUTH.html +45 -0
  44. package/dist/docs/documents/Runtime_Environment.html +13 -12
  45. package/dist/docs/documents/SYNC_STRATEGIES.html +373 -0
  46. package/dist/docs/enums/plot.ActionType.html +9 -9
  47. package/dist/docs/enums/plot.ActorType.html +4 -4
  48. package/dist/docs/enums/plot.ConferencingProvider.html +6 -6
  49. package/dist/docs/enums/plot.ThemeColor.html +9 -9
  50. package/dist/docs/enums/tag.Tag.html +3 -3
  51. package/dist/docs/enums/tools_ai.AIModel.html +3 -3
  52. package/dist/docs/enums/tools_integrations.AuthProvider.html +13 -13
  53. package/dist/docs/enums/tools_plot.ContactAccess.html +2 -2
  54. package/dist/docs/enums/tools_plot.FocusAccess.html +3 -3
  55. package/dist/docs/enums/tools_plot.LinkAccess.html +3 -3
  56. package/dist/docs/enums/tools_plot.ThreadAccess.html +4 -4
  57. package/dist/docs/functions/index.Uuid.Generate.html +1 -1
  58. package/dist/docs/functions/utils_hash.quickHash.html +1 -1
  59. package/dist/docs/hierarchy.html +1 -1
  60. package/dist/docs/index.html +7 -8
  61. package/dist/docs/interfaces/tools_ai.AIRequest.html +13 -13
  62. package/dist/docs/interfaces/tools_ai.AIResponse.html +9 -9
  63. package/dist/docs/interfaces/tools_ai.FilePart.html +5 -5
  64. package/dist/docs/interfaces/tools_ai.ImagePart.html +4 -4
  65. package/dist/docs/interfaces/tools_ai.ReasoningPart.html +4 -4
  66. package/dist/docs/interfaces/tools_ai.RedactedReasoningPart.html +3 -3
  67. package/dist/docs/interfaces/tools_ai.TextPart.html +3 -3
  68. package/dist/docs/interfaces/tools_ai.ToolCallPart.html +5 -5
  69. package/dist/docs/interfaces/tools_ai.ToolExecutionOptions.html +4 -4
  70. package/dist/docs/interfaces/tools_ai.ToolResultPart.html +5 -5
  71. package/dist/docs/interfaces/tools_twists.TwistSource.html +3 -3
  72. package/dist/docs/interfaces/utils_types.ToolShed.html +5 -5
  73. package/dist/docs/media/AGENTS.md +101 -74
  74. package/dist/docs/modules.html +1 -1
  75. package/dist/docs/types/index.BooleanDef.html +2 -2
  76. package/dist/docs/types/index.CreateLinkDraft.html +9 -9
  77. package/dist/docs/types/index.ImapAddress.html +3 -3
  78. package/dist/docs/types/index.ImapConnectOptions.html +6 -6
  79. package/dist/docs/types/index.ImapFetchOptions.html +4 -4
  80. package/dist/docs/types/index.ImapFlagOperation.html +1 -1
  81. package/dist/docs/types/index.ImapMailbox.html +5 -5
  82. package/dist/docs/types/index.ImapMailboxStatus.html +7 -7
  83. package/dist/docs/types/index.ImapMessage.html +14 -14
  84. package/dist/docs/types/index.ImapSearchCriteria.html +9 -9
  85. package/dist/docs/types/index.ImapSession.html +1 -1
  86. package/dist/docs/types/index.NewSchedule.html +13 -13
  87. package/dist/docs/types/index.NewScheduleContact.html +2 -2
  88. package/dist/docs/types/index.NewScheduleOccurrence.html +1 -1
  89. package/dist/docs/types/index.NoteWriteBackResult.html +3 -3
  90. package/dist/docs/types/index.NumberDef.html +2 -2
  91. package/dist/docs/types/index.OptionDef.html +1 -1
  92. package/dist/docs/types/index.OptionalScopeGroup.html +6 -6
  93. package/dist/docs/types/index.OptionsSchema.html +1 -1
  94. package/dist/docs/types/index.ReactionCapabilities.html +1 -1
  95. package/dist/docs/types/index.ResolvedOptions.html +1 -1
  96. package/dist/docs/types/index.ResolvedRecipient.html +5 -5
  97. package/dist/docs/types/index.Schedule.html +12 -12
  98. package/dist/docs/types/index.ScheduleContact.html +2 -2
  99. package/dist/docs/types/index.ScheduleContactRole.html +1 -1
  100. package/dist/docs/types/index.ScheduleContactStatus.html +1 -1
  101. package/dist/docs/types/index.ScheduleOccurrence.html +6 -6
  102. package/dist/docs/types/index.ScheduleOccurrenceUpdate.html +1 -1
  103. package/dist/docs/types/index.ScopeConfig.html +3 -3
  104. package/dist/docs/types/index.SelectDef.html +2 -2
  105. package/dist/docs/types/index.Serializable.html +1 -1
  106. package/dist/docs/types/index.SmtpAddress.html +3 -3
  107. package/dist/docs/types/index.SmtpConnectOptions.html +7 -7
  108. package/dist/docs/types/index.SmtpMessage.html +12 -12
  109. package/dist/docs/types/index.SmtpSendResult.html +4 -4
  110. package/dist/docs/types/index.SmtpSession.html +1 -1
  111. package/dist/docs/types/index.TextDef.html +2 -2
  112. package/dist/docs/types/index.Uuid.html +1 -1
  113. package/dist/docs/types/plot.Action.html +1 -1
  114. package/dist/docs/types/plot.Actor.html +5 -5
  115. package/dist/docs/types/plot.ActorId.html +4 -4
  116. package/dist/docs/types/plot.Contact.html +4 -4
  117. package/dist/docs/types/plot.ContentType.html +1 -1
  118. package/dist/docs/types/plot.Focus.html +8 -8
  119. package/dist/docs/types/plot.FocusUpdate.html +1 -1
  120. package/dist/docs/types/plot.Link.html +17 -17
  121. package/dist/docs/types/plot.LinkUpdate.html +1 -1
  122. package/dist/docs/types/plot.NewActor.html +1 -1
  123. package/dist/docs/types/plot.NewContact.html +1 -1
  124. package/dist/docs/types/plot.NewFocus.html +1 -1
  125. package/dist/docs/types/plot.NewLink.html +5 -2
  126. package/dist/docs/types/plot.NewLinkWithNotes.html +1 -1
  127. package/dist/docs/types/plot.NewNote.html +1 -1
  128. package/dist/docs/types/plot.NewReactions.html +1 -1
  129. package/dist/docs/types/plot.NewTags.html +1 -1
  130. package/dist/docs/types/plot.NewThread.html +1 -1
  131. package/dist/docs/types/plot.NewThreadWithNotes.html +1 -1
  132. package/dist/docs/types/plot.Note.html +1 -1
  133. package/dist/docs/types/plot.NoteUpdate.html +1 -1
  134. package/dist/docs/types/plot.PlanOperation.html +1 -1
  135. package/dist/docs/types/plot.Reaction.html +3 -3
  136. package/dist/docs/types/plot.Reactions.html +1 -1
  137. package/dist/docs/types/plot.Tags.html +1 -1
  138. package/dist/docs/types/plot.Thread.html +1 -1
  139. package/dist/docs/types/plot.ThreadAccessLevel.html +1 -1
  140. package/dist/docs/types/plot.ThreadCommon.html +6 -6
  141. package/dist/docs/types/plot.ThreadFilter.html +2 -2
  142. package/dist/docs/types/plot.ThreadMeta.html +1 -1
  143. package/dist/docs/types/plot.ThreadType.html +1 -1
  144. package/dist/docs/types/plot.ThreadUpdate.html +1 -1
  145. package/dist/docs/types/plot.ThreadWithNotes.html +1 -1
  146. package/dist/docs/types/tools_ai.AIAssistantMessage.html +2 -2
  147. package/dist/docs/types/tools_ai.AICapabilities.html +4 -4
  148. package/dist/docs/types/tools_ai.AIMessage.html +1 -1
  149. package/dist/docs/types/tools_ai.AIOptions.html +2 -2
  150. package/dist/docs/types/tools_ai.AISource.html +1 -1
  151. package/dist/docs/types/tools_ai.AISystemMessage.html +2 -2
  152. package/dist/docs/types/tools_ai.AITool.html +1 -1
  153. package/dist/docs/types/tools_ai.AIToolMessage.html +2 -2
  154. package/dist/docs/types/tools_ai.AIToolSet.html +1 -1
  155. package/dist/docs/types/tools_ai.AIUsage.html +5 -5
  156. package/dist/docs/types/tools_ai.AIUserMessage.html +2 -2
  157. package/dist/docs/types/tools_ai.DataContent.html +1 -1
  158. package/dist/docs/types/tools_ai.ModelPreferences.html +5 -5
  159. package/dist/docs/types/tools_callbacks.Callback.html +2 -2
  160. package/dist/docs/types/tools_integrations.ArchiveLinkFilter.html +5 -5
  161. package/dist/docs/types/tools_integrations.ArchiveNotesFilter.html +2 -2
  162. package/dist/docs/types/tools_integrations.AuthToken.html +6 -5
  163. package/dist/docs/types/tools_integrations.Authorization.html +4 -4
  164. package/dist/docs/types/tools_integrations.Channel.html +6 -6
  165. package/dist/docs/types/tools_integrations.ComposeConfig.html +4 -4
  166. package/dist/docs/types/tools_integrations.ContactRoleConfig.html +5 -5
  167. package/dist/docs/types/tools_integrations.LinkTypeConfig.html +21 -21
  168. package/dist/docs/types/tools_integrations.NewCustomEmoji.html +8 -8
  169. package/dist/docs/types/tools_integrations.StatusIcon.html +1 -1
  170. package/dist/docs/types/tools_integrations.SyncContext.html +4 -4
  171. package/dist/docs/types/tools_network.WebhookRequest.html +6 -6
  172. package/dist/docs/types/tools_plot.LinkFilter.html +5 -5
  173. package/dist/docs/types/tools_plot.LinkSearchResult.html +1 -1
  174. package/dist/docs/types/tools_plot.NoteIntentHandler.html +4 -4
  175. package/dist/docs/types/tools_plot.NoteSearchResult.html +1 -1
  176. package/dist/docs/types/tools_plot.SearchOptions.html +4 -4
  177. package/dist/docs/types/tools_plot.SearchResult.html +1 -1
  178. package/dist/docs/types/tools_twists.Log.html +2 -2
  179. package/dist/docs/types/tools_twists.TwistPermissions.html +1 -1
  180. package/dist/docs/types/utils_types.BuiltInTools.html +2 -2
  181. package/dist/docs/types/utils_types.ExtractBuildReturn.html +1 -1
  182. package/dist/docs/types/utils_types.InferOptions.html +1 -1
  183. package/dist/docs/types/utils_types.InferTools.html +1 -1
  184. package/dist/docs/types/utils_types.JSONValue.html +1 -1
  185. package/dist/docs/types/utils_types.PromiseValues.html +1 -1
  186. package/dist/docs/types/utils_types.ToolBuilder.html +1 -1
  187. package/dist/docs/variables/tools_plot.SEARCH_DEFAULT_LIMIT.html +1 -1
  188. package/dist/docs/variables/tools_plot.SEARCH_MAX_LIMIT.html +1 -1
  189. package/dist/facets.d.ts +30 -0
  190. package/dist/facets.d.ts.map +1 -0
  191. package/dist/facets.js +16 -0
  192. package/dist/facets.js.map +1 -0
  193. package/dist/llm-docs/connector.d.ts +1 -1
  194. package/dist/llm-docs/connector.d.ts.map +1 -1
  195. package/dist/llm-docs/connector.js +1 -1
  196. package/dist/llm-docs/connector.js.map +1 -1
  197. package/dist/llm-docs/facets.d.ts +9 -0
  198. package/dist/llm-docs/facets.d.ts.map +1 -0
  199. package/dist/llm-docs/facets.js +8 -0
  200. package/dist/llm-docs/facets.js.map +1 -0
  201. package/dist/llm-docs/index.d.ts.map +1 -1
  202. package/dist/llm-docs/index.js +2 -0
  203. package/dist/llm-docs/index.js.map +1 -1
  204. package/dist/llm-docs/plot.d.ts +1 -1
  205. package/dist/llm-docs/plot.d.ts.map +1 -1
  206. package/dist/llm-docs/plot.js +1 -1
  207. package/dist/llm-docs/plot.js.map +1 -1
  208. package/dist/llm-docs/tool.d.ts +1 -1
  209. package/dist/llm-docs/tool.d.ts.map +1 -1
  210. package/dist/llm-docs/tool.js +1 -1
  211. package/dist/llm-docs/tool.js.map +1 -1
  212. package/dist/llm-docs/tools/ai.d.ts +1 -1
  213. package/dist/llm-docs/tools/ai.d.ts.map +1 -1
  214. package/dist/llm-docs/tools/ai.js +1 -1
  215. package/dist/llm-docs/tools/ai.js.map +1 -1
  216. package/dist/llm-docs/tools/callbacks.d.ts +1 -1
  217. package/dist/llm-docs/tools/callbacks.d.ts.map +1 -1
  218. package/dist/llm-docs/tools/callbacks.js +1 -1
  219. package/dist/llm-docs/tools/callbacks.js.map +1 -1
  220. package/dist/llm-docs/tools/files.d.ts +1 -1
  221. package/dist/llm-docs/tools/files.d.ts.map +1 -1
  222. package/dist/llm-docs/tools/files.js +1 -1
  223. package/dist/llm-docs/tools/files.js.map +1 -1
  224. package/dist/llm-docs/tools/imap.d.ts +1 -1
  225. package/dist/llm-docs/tools/imap.d.ts.map +1 -1
  226. package/dist/llm-docs/tools/imap.js +1 -1
  227. package/dist/llm-docs/tools/imap.js.map +1 -1
  228. package/dist/llm-docs/tools/integrations.d.ts +1 -1
  229. package/dist/llm-docs/tools/integrations.d.ts.map +1 -1
  230. package/dist/llm-docs/tools/integrations.js +1 -1
  231. package/dist/llm-docs/tools/integrations.js.map +1 -1
  232. package/dist/llm-docs/tools/network.d.ts +1 -1
  233. package/dist/llm-docs/tools/network.d.ts.map +1 -1
  234. package/dist/llm-docs/tools/network.js +1 -1
  235. package/dist/llm-docs/tools/network.js.map +1 -1
  236. package/dist/llm-docs/tools/plot.d.ts +1 -1
  237. package/dist/llm-docs/tools/plot.d.ts.map +1 -1
  238. package/dist/llm-docs/tools/plot.js +1 -1
  239. package/dist/llm-docs/tools/plot.js.map +1 -1
  240. package/dist/llm-docs/tools/smtp.d.ts +1 -1
  241. package/dist/llm-docs/tools/smtp.d.ts.map +1 -1
  242. package/dist/llm-docs/tools/smtp.js +1 -1
  243. package/dist/llm-docs/tools/smtp.js.map +1 -1
  244. package/dist/llm-docs/tools/tasks.d.ts +1 -1
  245. package/dist/llm-docs/tools/tasks.d.ts.map +1 -1
  246. package/dist/llm-docs/tools/tasks.js +1 -1
  247. package/dist/llm-docs/tools/tasks.js.map +1 -1
  248. package/dist/llm-docs/tools/twists.d.ts +1 -1
  249. package/dist/llm-docs/tools/twists.d.ts.map +1 -1
  250. package/dist/llm-docs/tools/twists.js +1 -1
  251. package/dist/llm-docs/tools/twists.js.map +1 -1
  252. package/dist/llm-docs/twist-guide-template.d.ts +1 -1
  253. package/dist/llm-docs/twist-guide-template.d.ts.map +1 -1
  254. package/dist/llm-docs/twist-guide-template.js +1 -1
  255. package/dist/llm-docs/twist-guide-template.js.map +1 -1
  256. package/dist/llm-docs/twist.d.ts +1 -1
  257. package/dist/llm-docs/twist.d.ts.map +1 -1
  258. package/dist/llm-docs/twist.js +1 -1
  259. package/dist/llm-docs/twist.js.map +1 -1
  260. package/dist/plot.d.ts +15 -8
  261. package/dist/plot.d.ts.map +1 -1
  262. package/dist/plot.js.map +1 -1
  263. package/dist/tool.d.ts +4 -4
  264. package/dist/tool.js +4 -4
  265. package/dist/tools/ai.d.ts +12 -13
  266. package/dist/tools/ai.d.ts.map +1 -1
  267. package/dist/tools/ai.js +8 -9
  268. package/dist/tools/ai.js.map +1 -1
  269. package/dist/tools/callbacks.d.ts +1 -1
  270. package/dist/tools/files.d.ts +2 -2
  271. package/dist/tools/imap.d.ts +1 -1
  272. package/dist/tools/imap.js +1 -1
  273. package/dist/tools/integrations.d.ts +2 -1
  274. package/dist/tools/integrations.d.ts.map +1 -1
  275. package/dist/tools/network.d.ts +5 -5
  276. package/dist/tools/plot.d.ts +42 -37
  277. package/dist/tools/plot.d.ts.map +1 -1
  278. package/dist/tools/plot.js +16 -12
  279. package/dist/tools/plot.js.map +1 -1
  280. package/dist/tools/smtp.d.ts +1 -1
  281. package/dist/tools/smtp.js +1 -1
  282. package/dist/tools/tasks.d.ts +6 -8
  283. package/dist/tools/tasks.d.ts.map +1 -1
  284. package/dist/tools/tasks.js +5 -7
  285. package/dist/tools/tasks.js.map +1 -1
  286. package/dist/tools/twists.d.ts +15 -14
  287. package/dist/tools/twists.d.ts.map +1 -1
  288. package/dist/tools/twists.js +2 -2
  289. package/dist/tools/twists.js.map +1 -1
  290. package/dist/twist-guide.d.ts +1 -1
  291. package/dist/twist-guide.d.ts.map +1 -1
  292. package/dist/twist.d.ts +2 -2
  293. package/dist/twist.js +2 -2
  294. package/package.json +6 -1
  295. package/src/connector.ts +56 -16
  296. package/src/facets.ts +40 -0
  297. package/src/llm-docs/connector.ts +1 -1
  298. package/src/llm-docs/facets.ts +8 -0
  299. package/src/llm-docs/index.ts +2 -0
  300. package/src/llm-docs/plot.ts +1 -1
  301. package/src/llm-docs/tool.ts +1 -1
  302. package/src/llm-docs/tools/ai.ts +1 -1
  303. package/src/llm-docs/tools/callbacks.ts +1 -1
  304. package/src/llm-docs/tools/files.ts +1 -1
  305. package/src/llm-docs/tools/imap.ts +1 -1
  306. package/src/llm-docs/tools/integrations.ts +1 -1
  307. package/src/llm-docs/tools/network.ts +1 -1
  308. package/src/llm-docs/tools/plot.ts +1 -1
  309. package/src/llm-docs/tools/smtp.ts +1 -1
  310. package/src/llm-docs/tools/tasks.ts +1 -1
  311. package/src/llm-docs/tools/twists.ts +1 -1
  312. package/src/llm-docs/twist-guide-template.ts +1 -1
  313. package/src/llm-docs/twist.ts +1 -1
  314. package/src/plot.ts +15 -8
  315. package/src/tool.ts +4 -4
  316. package/src/tools/ai.ts +12 -13
  317. package/src/tools/callbacks.ts +1 -1
  318. package/src/tools/files.ts +2 -2
  319. package/src/tools/imap.ts +1 -1
  320. package/src/tools/integrations.ts +2 -1
  321. package/src/tools/network.ts +5 -5
  322. package/src/tools/plot.ts +42 -37
  323. package/src/tools/smtp.ts +1 -1
  324. package/src/tools/tasks.ts +6 -8
  325. package/src/tools/twists.ts +15 -14
  326. package/src/twist.ts +2 -2
  327. package/dist/docs/media/MULTI_USER_AUTH.md +0 -116
  328. package/dist/docs/media/SYNC_STRATEGIES.md +0 -818
@@ -208,8 +208,8 @@ export type ScopeConfig = {
208
208
  * type: "issue",
209
209
  * label: "Issue",
210
210
  * statuses: [
211
- * { status: "open", label: "Open" },
212
- * { status: "done", label: "Done" },
211
+ * { status: "open", label: "Open", icon: "todo" },
212
+ * { status: "done", label: "Done", icon: "done", done: true },
213
213
  * ],
214
214
  * }];
215
215
  *
@@ -275,6 +275,40 @@ export declare abstract class Connector<TSelf> extends Twist<TSelf> {
275
275
  * The UI will show channel config inline instead of a channel list.
276
276
  */
277
277
  readonly singleChannel?: boolean;
278
+ /**
279
+ * The user-facing noun for this connector's channels — what each
280
+ * {@link Channel} returned by {@link getChannels} actually represents in the
281
+ * external service. Many connectors map "channels" onto a domain concept
282
+ * (folders, projects, calendars, labels, spaces, repositories, …), so the
283
+ * generic word "channel" reads as jargon. Set this and the UI substitutes it
284
+ * everywhere it would otherwise say "channel(s)" — e.g. the per-connection
285
+ * toggle becomes "Sync new folders" / "When a new folder is added, …".
286
+ *
287
+ * Provide lowercase nouns (the UI capitalizes where needed):
288
+ * `{ singular: "folder", plural: "folders" }`. Defaults to
289
+ * `{ singular: "channel", plural: "channels" }` when omitted.
290
+ */
291
+ readonly channelNoun?: {
292
+ singular: string;
293
+ plural: string;
294
+ };
295
+ /**
296
+ * Whether the per-connection "Sync new channels" preference starts ON for
297
+ * newly added connections of this connector. Defaults to `false` (opt-in).
298
+ *
299
+ * Set `true` for connectors that select **all** of their channels by default
300
+ * (i.e. {@link getChannels} returns no channels marked
301
+ * `enabledByDefault: false`). If syncing every channel is the intended
302
+ * default, then channels discovered later should also sync automatically.
303
+ * Leave `false`/omitted for selective connectors that exclude some channels
304
+ * by default (e.g. Gmail syncs only Inbox/Sent, Google Calendar only
305
+ * owner calendars) — for those, a newly discovered channel is just as
306
+ * uncertain and should wait for the user to opt in.
307
+ *
308
+ * Only affects the **default** for new connections; the user's explicit
309
+ * toggle always wins, and existing connections keep their stored preference.
310
+ */
311
+ readonly autoEnableNewChannelsByDefault?: boolean;
278
312
  /**
279
313
  * Registry of link types this connector creates (e.g., issue, event, message).
280
314
  * Used for display in the UI (icons, labels, statuses).
@@ -481,17 +515,24 @@ export declare abstract class Connector<TSelf> extends Twist<TSelf> {
481
515
  */
482
516
  onThreadRead(thread: Thread, actor: Actor, unread: boolean): Promise<void>;
483
517
  /**
484
- * Called when a user adds, removes, or changes the role of contacts on a
485
- * thread owned by this connector. Override on connectors whose source
486
- * supports mid-thread recipient changes (Gmail, IMAP, etc.). Connectors
487
- * that can't change recipients per-message (Slack, Linear) leave this as
488
- * the default no-op and should also declare
489
- * `LinkTypeConfig.supportsContactChanges: false`.
490
- *
491
- * The dispatch fires after Plot has persisted the change. Connectors are
492
- * expected to reflect it on the next outbound note (e.g. building To/Cc/Bcc
493
- * headers from the current `thread.contacts` × `thread.contactMeta`) this
494
- * callback is not the right place to send a standalone notification.
518
+ * Called when a user changes the **thread-level sharing** of a thread owned
519
+ * by this connector adding or removing a contact, or (for connectors with
520
+ * roles) changing a contact's role. Override on connectors whose external
521
+ * source can reflect that membership change, e.g. a group DM / multi-party
522
+ * chat (`LinkTypeConfig.sharingModel: "thread"`) or an email's To/Cc/Bcc
523
+ * recipients (`sharingModel: "message"`). Connectors backed by an immutable
524
+ * roster (most group DMs today) or by channel-level membership
525
+ * (`sharingModel: "channel"`) leave this as the default no-op.
526
+ *
527
+ * `role`/`from`/`to` are **null** for connectors without roles (group DMs
528
+ * have no roles); they carry a `contactRoles` id only for connectors that
529
+ * declare roles (e.g. email `to`/`cc`/`bcc`).
530
+ *
531
+ * The dispatch fires after Plot has persisted the change. A connector may
532
+ * reflect it actively (e.g. add/remove a participant on the external chat)
533
+ * or passively on the next outbound note (e.g. building To/Cc/Bcc headers
534
+ * from the current `thread.contacts` × `thread.contactMeta`) — this callback
535
+ * is not the right place to send a standalone notification.
495
536
  *
496
537
  * @param thread - The thread whose contacts changed
497
538
  * @param changes - The added/removed contacts and any role transitions on existing contacts
@@ -499,16 +540,16 @@ export declare abstract class Connector<TSelf> extends Twist<TSelf> {
499
540
  onContactsChanged(thread: Thread, changes: {
500
541
  added: Array<{
501
542
  contact: Contact;
502
- role: string;
543
+ role: string | null;
503
544
  }>;
504
545
  removed: Array<{
505
546
  contact: Contact;
506
- role: string;
547
+ role: string | null;
507
548
  }>;
508
549
  changed: Array<{
509
550
  contact: Contact;
510
- from: string;
511
- to: string;
551
+ from: string | null;
552
+ to: string | null;
512
553
  }>;
513
554
  }): Promise<void>;
514
555
  /**
@@ -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,OAAO,EAAE,KAAK,IAAI,EAAE,KAAK,gBAAgB,EAAE,KAAK,IAAI,EAAE,KAAK,MAAM,EAAE,KAAK,IAAI,EAAE,MAAM,QAAQ,CAAC;AACrI,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,EACnB,KAAK,WAAW,EACjB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAEhC;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,MAAM,oBAAoB,GAC5B;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,WAAW,CAAC,EAAE,WAAW,GAAG,MAAM,CAAA;CAAE,GAC5D;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,GACtD;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,CAAC;AAElD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAChC;;;;;OAKG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;;;;;;;;;;OAYG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,wBAAwB;IACxB,EAAE,EAAE,IAAI,CAAC;IACT,uCAAuC;IACvC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,8HAA8H;IAC9H,iBAAiB,EAAE,MAAM,CAAC;IAC1B;;;;;;;;;;;;OAYG;IACH,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CACrB,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B,gEAAgE;IAChE,SAAS,EAAE,MAAM,CAAC;IAClB,6DAA6D;IAC7D,IAAI,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,uEAAuE;IACvE,KAAK,EAAE,MAAM,CAAC;IACd,oEAAoE;IACpE,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B;;;;;;;;;;OAUG;IACH,QAAQ,EAAE,KAAK,EAAE,CAAC;IAClB;;;;;;;;;;;OAWG;IACH,UAAU,CAAC,EAAE,iBAAiB,EAAE,CAAC;IACjC;;;;;OAKG;IACH,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB,CAAC;AAEF,yEAAyE;AACzE,MAAM,MAAM,kBAAkB,GAAG;IAC/B,oDAAoD;IACpD,EAAE,EAAE,MAAM,CAAC;IACX,6EAA6E;IAC7E,KAAK,EAAE,MAAM,CAAC;IACd,qDAAqD;IACrD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iDAAiD;IACjD,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,6DAA6D;IAC7D,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF;;;;;GAKG;AACH,MAAM,MAAM,WAAW,GAAG;IACxB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,6EAA6E;IAC7E,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,QAAQ,CAAC,EAAE,kBAAkB,EAAE,CAAC;CACjC,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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,EAAE,YAAY,CAAC;IAEjC;4EACwE;IACxE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,GAAG,WAAW,CAAC;IAIzC;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAE1B;;;;;;;OAOG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAI5B;;;;OAIG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;IAEjC;;;OAGG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,cAAc,EAAE,CAAC;IAEtC;;;;;;;;OAQG;IACH,QAAQ,CAAC,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;IAErD;;;;;;OAMG;IACH,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;IAIxC;;;;;;;;;;;;;OAaG;IAEH,cAAc,CACZ,IAAI,EAAE,aAAa,GAAG,IAAI,EAC1B,KAAK,EAAE,SAAS,GAAG,IAAI,GACtB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAMzB;;;;;;;OAOG;IACH,QAAQ,CAAC,WAAW,CAClB,IAAI,EAAE,aAAa,GAAG,IAAI,EAC1B,KAAK,EAAE,SAAS,GAAG,IAAI,GACtB,OAAO,CAAC,OAAO,EAAE,CAAC;IAErB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAwDG;IACH,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAEjF;;;;;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;;;;;;;;;;;;;;;;;;;;OAoBG;IAEH,YAAY,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAItE;;;;;;;;;;;;;;;OAeG;IAEH,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,mBAAmB,GAAG,IAAI,CAAC;IAIvF;;;;;;;;;;;;OAYG;IACG,kBAAkB,CACtB,GAAG,EAAE,MAAM,GACV,OAAO,CACN;QAAE,WAAW,EAAE,MAAM,CAAA;KAAE,GACvB;QAAE,IAAI,EAAE,cAAc,GAAG,UAAU,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAC7E;IAMD;;;;;;;;;;;;;;OAcG;IAEH,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC;IAI9E;;;;;;;;OAQG;IAEH,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAI1E;;;;;;;;;;;;;;;OAeG;IAEH,iBAAiB,CACf,MAAM,EAAE,MAAM,EACd,OAAO,EAAE;QACP,KAAK,EAAE,KAAK,CAAC;YAAE,OAAO,EAAE,OAAO,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QACjD,OAAO,EAAE,KAAK,CAAC;YAAE,OAAO,EAAE,OAAO,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QACnD,OAAO,EAAE,KAAK,CAAC;YAAE,OAAO,EAAE,OAAO,CAAC;YAAC,IAAI,EAAE,MAAM,CAAC;YAAC,EAAE,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KAChE,GACA,OAAO,CAAC,IAAI,CAAC;IAKhB;;;;;;;;;;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;IAInJ;;;;;;;;;;;;;;;;;;;;;OAqBG;IAEH,qBAAqB,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAM7G;;;;;;;;;;;;OAYG;IAEH,QAAQ,CAAC,OAAO,EAAE;QAAE,IAAI,CAAC,EAAE,aAAa,CAAC;QAAC,KAAK,CAAC,EAAE,KAAK,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;CAG1E;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
@@ -15,8 +15,8 @@ import { Twist } from "./twist";
15
15
  * type: "issue",
16
16
  * label: "Issue",
17
17
  * statuses: [
18
- * { status: "open", label: "Open" },
19
- * { status: "done", label: "Done" },
18
+ * { status: "open", label: "Open", icon: "todo" },
19
+ * { status: "done", label: "Done", icon: "done", done: true },
20
20
  * ],
21
21
  * }];
22
22
  *
@@ -85,6 +85,37 @@ export class Connector extends Twist {
85
85
  * The UI will show channel config inline instead of a channel list.
86
86
  */
87
87
  singleChannel;
88
+ /**
89
+ * The user-facing noun for this connector's channels — what each
90
+ * {@link Channel} returned by {@link getChannels} actually represents in the
91
+ * external service. Many connectors map "channels" onto a domain concept
92
+ * (folders, projects, calendars, labels, spaces, repositories, …), so the
93
+ * generic word "channel" reads as jargon. Set this and the UI substitutes it
94
+ * everywhere it would otherwise say "channel(s)" — e.g. the per-connection
95
+ * toggle becomes "Sync new folders" / "When a new folder is added, …".
96
+ *
97
+ * Provide lowercase nouns (the UI capitalizes where needed):
98
+ * `{ singular: "folder", plural: "folders" }`. Defaults to
99
+ * `{ singular: "channel", plural: "channels" }` when omitted.
100
+ */
101
+ channelNoun;
102
+ /**
103
+ * Whether the per-connection "Sync new channels" preference starts ON for
104
+ * newly added connections of this connector. Defaults to `false` (opt-in).
105
+ *
106
+ * Set `true` for connectors that select **all** of their channels by default
107
+ * (i.e. {@link getChannels} returns no channels marked
108
+ * `enabledByDefault: false`). If syncing every channel is the intended
109
+ * default, then channels discovered later should also sync automatically.
110
+ * Leave `false`/omitted for selective connectors that exclude some channels
111
+ * by default (e.g. Gmail syncs only Inbox/Sent, Google Calendar only
112
+ * owner calendars) — for those, a newly discovered channel is just as
113
+ * uncertain and should wait for the user to opt in.
114
+ *
115
+ * Only affects the **default** for new connections; the user's explicit
116
+ * toggle always wins, and existing connections keep their stored preference.
117
+ */
118
+ autoEnableNewChannelsByDefault;
88
119
  /**
89
120
  * Registry of link types this connector creates (e.g., issue, event, message).
90
121
  * Used for display in the UI (icons, labels, statuses).
@@ -233,17 +264,24 @@ export class Connector extends Twist {
233
264
  return Promise.resolve();
234
265
  }
235
266
  /**
236
- * Called when a user adds, removes, or changes the role of contacts on a
237
- * thread owned by this connector. Override on connectors whose source
238
- * supports mid-thread recipient changes (Gmail, IMAP, etc.). Connectors
239
- * that can't change recipients per-message (Slack, Linear) leave this as
240
- * the default no-op and should also declare
241
- * `LinkTypeConfig.supportsContactChanges: false`.
242
- *
243
- * The dispatch fires after Plot has persisted the change. Connectors are
244
- * expected to reflect it on the next outbound note (e.g. building To/Cc/Bcc
245
- * headers from the current `thread.contacts` × `thread.contactMeta`) this
246
- * callback is not the right place to send a standalone notification.
267
+ * Called when a user changes the **thread-level sharing** of a thread owned
268
+ * by this connector adding or removing a contact, or (for connectors with
269
+ * roles) changing a contact's role. Override on connectors whose external
270
+ * source can reflect that membership change, e.g. a group DM / multi-party
271
+ * chat (`LinkTypeConfig.sharingModel: "thread"`) or an email's To/Cc/Bcc
272
+ * recipients (`sharingModel: "message"`). Connectors backed by an immutable
273
+ * roster (most group DMs today) or by channel-level membership
274
+ * (`sharingModel: "channel"`) leave this as the default no-op.
275
+ *
276
+ * `role`/`from`/`to` are **null** for connectors without roles (group DMs
277
+ * have no roles); they carry a `contactRoles` id only for connectors that
278
+ * declare roles (e.g. email `to`/`cc`/`bcc`).
279
+ *
280
+ * The dispatch fires after Plot has persisted the change. A connector may
281
+ * reflect it actively (e.g. add/remove a participant on the external chat)
282
+ * or passively on the next outbound note (e.g. building To/Cc/Bcc headers
283
+ * from the current `thread.contacts` × `thread.contactMeta`) — this callback
284
+ * is not the right place to send a standalone notification.
247
285
  *
248
286
  * @param thread - The thread whose contacts changed
249
287
  * @param changes - The added/removed contacts and any role transitions on existing contacts
@@ -1 +1 @@
1
- {"version":3,"file":"connector.js","sourceRoot":"","sources":["../src/connector.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"connector.js","sourceRoot":"","sources":["../src/connector.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- window.hierarchyData = "eJyVk1FLwzAQx7/LPd/iEpc27dsQhL6o4N5kSG2jlmXJaCIKY99dks6RvizxpdD2d/9f7no9wmiMs1C/UFZgtUUY5buSnRuMtlAfofIX3e4l1LD5HqwDhN2ge6gpEwhfo4IaOtVaK+2N8wAJGPl0ewU4vYIanO0Xvm4xPUDoPgfVj1IHtRDbEwJlRWRrNsaoqzZjFAnU/2QVclYg5wWWnKHgBVacI12yEinlDCkVS6QFXSEtKUda+ltxu5qOOBtIzgkzDnhC4LPewwhtKtq+hoHbaeI2Q8JjybpJC9qBrJt0cMlZFHzXKvXWdruMBro/lFyK0jYxa6PRTn6M7bSxSeEQ0SQuTWsrziPtg3TfZtyljXoCybkg7fGbGImelLn+0wXLQRlHPJqRT2df69mZUaYF1mMkwDkKsYzXubU5y+A8RgKcoWBCxDtntJadM+M1zaB7+UMuaIakoKtIcj8oebWPSRCwjPCSxgvV7NtDOttTOdGz+T/vXUa0pzKixW08ksdD8seb0s9gSnA6/QJFBh1W"
1
+ window.hierarchyData = "eJyVk8FOwzAMht/FZxPmlKxpbwgJqRdAYjeEUOkCVMuSqQkCadq7o6SAMg5LuPTQfv4/x3X2MFnrHbQPxCUSPSJM6kWrwY/WOGj3QBSept8qaGH1MToPCJvRrKENJfA+aWhh0L1zyp37ALCIsTe/1YDzJ2jBu/VZqDubXyAMb6NeT8pEeUOPBwTiMrF1K2v1SZu1mkXqX7KKUPAGhWiwFgKlaLAREmlRLZBICCSSFdKSc6SaV0i1lEjygscWq6OBlHRY0OABQfDm76RdLto9xYG7eeKuQCJSyWWXF/Qju+zywbUQSfBVr/VzP2wKDjD8oOy3KG+TR8fojFevUz+vbFY4JjRLS/PaRqTreaP8h502eaOZQfZdkPeETUxEd9qevnTRstPWs4AW5NPR37r3dlJ5gQsYi3CJQlbpOveuZBl8wFiECxS8Sa/ilTVGDd5OpzSjWatP9osWSJacJ5LrUauT55gFESsIr3k6pG7b7/LZgSqJlumu3m99QXSgCqLlRTqS21324s3p32BOcDh8AbLgHbo="
@@ -1 +1 @@
1
- window.navigationData = "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"
1
+ window.navigationData = "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"